From ec543eb7e00715cf804a2332b33e6ea8b41147b5 Mon Sep 17 00:00:00 2001 From: dzejkop Date: Wed, 7 Oct 2026 16:45:04 +0000 Subject: [PATCH 01/38] feat: migrate browser authenticator and integrate published WalletKit Migrate clean-start from web-authenticator-experiments b4139268da213a680e89bf5877c29fcafb145f25, preserving the browser UI, contracts, simulator and tests. Add npm WalletKit 0.27.1, PRF-derived encrypted storage, explicit simulation labeling and browser regression coverage. Exclude private biometric and staging tooling. --- .github/workflows/ci.yml | 16 +- .gitignore | 50 +- README.md | 84 +- apps/authenticator/README.md | 8 + apps/authenticator/index.html | 14 + .../public/assets/figma/capture-check.svg | 5 + .../assets/figma/capture-ring-complete.svg | 68 + .../assets/figma/capture-ring-ready.svg | 68 + .../assets/figma/capture-ring-sampling.svg | 68 + .../public/assets/figma/close.svg | 5 + .../public/assets/figma/disclosure-check.svg | 5 + .../public/assets/figma/disclosure-x.svg | 5 + .../public/assets/figma/human-emblem.svg | 7 + .../public/assets/figma/person-circle.svg | 5 + .../public/assets/figma/person-key-blue.svg | 5 + .../assets/figma/person-key-disabled.svg | 5 + .../public/assets/figma/person-key.svg | 5 + .../public/assets/figma/selfie-emblem.svg | 9 + .../assets/figma/simulation-progress.svg | 18 + .../public/assets/figma/success-emblem.svg | 20 + .../assets/figma/verification-complete.svg | 18 + .../public/assets/figma/zoom-app-icon.png | Bin 0 -> 19677 bytes .../public/models/face_landmarker.task | Bin 0 -> 3758596 bytes apps/authenticator/src/App.tsx | 313 ++++ .../src/adapters/browser-admission.ts | 141 ++ .../src/adapters/browser-capture.ts | 170 ++ .../src/adapters/http-session.ts | 188 +++ .../src/adapters/staging-compatibility.ts | 40 + .../src/assets/capture-oval-geometry.ts | 6 + apps/authenticator/src/assets/provenance.ts | 47 + .../src/components/FlowScreen.tsx | 438 +++++ .../src/components/WalkthroughPanel.tsx | 95 ++ apps/authenticator/src/flow/controller.ts | 571 +++++++ .../authenticator/src/flow/render-registry.ts | 75 + apps/authenticator/src/main.tsx | 8 + .../server/browser-session-service.server.ts | 397 +++++ .../authenticator/src/server/crypto.server.ts | 89 + .../src/server/demo-authenticator.server.ts | 258 +++ apps/authenticator/src/server/http.server.ts | 282 ++++ apps/authenticator/src/server/main.ts | 3 + .../src/server/runtime.server.ts | 234 +++ apps/authenticator/src/server/start.server.ts | 13 + apps/authenticator/src/styles/app.css | 693 ++++++++ .../src/walkthrough/hold-steady-progress.ts | 14 + .../src/walkthrough/live-face-guidance.ts | 322 ++++ .../src/walkthrough/live-passkey.ts | 139 ++ .../src/walkthrough/model-provenance.ts | 13 + .../src/walkthrough/production-copy.ts | 217 +++ .../src/walkthrough/walkthrough-adapters.ts | 245 +++ apps/authenticator/src/wallet/session.ts | 140 ++ apps/authenticator/static-demo/index.html | 14 + apps/authenticator/static-demo/main.tsx | 22 + .../test/browser-admission-adapter.test.ts | 69 + .../test/capture-adapter.test.ts | 115 ++ apps/authenticator/test/controller.test.ts | 577 +++++++ apps/authenticator/test/http-client.test.ts | 204 +++ apps/authenticator/test/http-server.test.ts | 251 +++ .../test/live-face-guidance.test.ts | 123 ++ apps/authenticator/test/privacy.test.ts | 99 ++ .../test/production-presentation.test.tsx | 194 +++ .../test/render-registry.test.ts | 69 + apps/authenticator/test/screens.test.tsx | 249 +++ .../test/server-composition.test.ts | 252 +++ .../test/staging-compatibility.test.ts | 72 + apps/authenticator/test/static-demo.test.ts | 58 + apps/authenticator/test/walkthrough.test.ts | 219 +++ .../authenticator/test/wallet-session.test.ts | 25 + bun.lock | 792 +++------ config/README.md | 9 + config/authenticator-app-v0.test.ts | 116 ++ config/authenticator-app-v0.ts | 178 ++ eslint.config.mjs | 125 +- next.config.ts | 7 - package.json | 109 +- .../biometric-verification-port/README.md | 5 + .../biometric-verification-port/package.json | 13 + .../biometric-verification-port/src/index.ts | 39 + packages/browser-admission/README.md | 35 + packages/browser-admission/package.json | 12 + packages/browser-admission/src/admission.ts | 234 +++ packages/browser-admission/src/handoff.ts | 48 + packages/browser-admission/src/index.ts | 5 + packages/browser-admission/src/platform.ts | 40 + packages/browser-admission/src/probes.ts | 56 + packages/browser-admission/src/types.ts | 156 ++ .../test/browser-admission.test.ts | 449 +++++ packages/client-quality/README.md | 24 + packages/client-quality/package.json | 12 + packages/client-quality/src/index.ts | 364 +++++ .../test/client-quality.test.ts | 343 ++++ packages/contracts/README.md | 60 + packages/contracts/package.json | 9 + .../contracts/src/authenticator-ui-copy-v1.ts | 170 ++ .../contracts/src/authenticator-ui-flow-v1.ts | 1444 +++++++++++++++++ .../src/biometric-verification-port-v0.ts | 298 ++++ .../contracts/src/client-quality-policy-v0.ts | 83 + packages/contracts/src/common.ts | 186 +++ .../contracts/src/enrollment-session-v1.ts | 71 + .../contracts/src/enrollment-session-v2.ts | 84 + packages/contracts/src/frame-bundle-v0.ts | 147 ++ packages/contracts/src/index.ts | 14 + .../src/injected-authenticator-port-v0.ts | 256 +++ .../src/simulation-capture-policy-v0.ts | 42 + .../src/simulator-browser-session-port-v0.ts | 748 +++++++++ .../contracts/src/staging-issuance-port-v0.ts | 314 ++++ .../src/webauthn-prf-authenticator-v1.ts | 33 + .../src/world-id-registration-adapter-v1.ts | 63 + packages/contracts/test/contracts.test.ts | 768 +++++++++ packages/contracts/test/ui-contracts.test.ts | 996 ++++++++++++ packages/frame-capture/README.md | 34 + packages/frame-capture/src/artifact.ts | 111 ++ .../frame-capture/src/browser-platform.ts | 199 +++ packages/frame-capture/src/index.ts | 5 + packages/frame-capture/src/runtime.ts | 476 ++++++ packages/frame-capture/src/state.ts | 46 + packages/frame-capture/src/types.ts | 142 ++ packages/frame-capture/test/artifact.test.ts | 75 + .../test/browser-platform.test.ts | 23 + packages/frame-capture/test/helpers.ts | 224 +++ packages/frame-capture/test/privacy.test.ts | 112 ++ packages/frame-capture/test/runtime.test.ts | 338 ++++ packages/frame-capture/test/state.test.ts | 53 + packages/staging-issuance-port/README.md | 5 + packages/staging-issuance-port/package.json | 13 + packages/staging-issuance-port/src/index.ts | 33 + packages/world-id-authenticator/README.md | 3 + playwright.integration.config.ts | 51 + postcss.config.mjs | 5 - public/images/marble.png | Bin 4641 -> 0 bytes public/images/spain.png | Bin 862 -> 0 bytes services/session-gateway/README.md | 14 + services/session-gateway/package.json | 13 + services/session-gateway/src/crypto.ts | 113 ++ services/session-gateway/src/errors.ts | 32 + services/session-gateway/src/gateway.ts | 1037 ++++++++++++ services/session-gateway/src/index.ts | 5 + services/session-gateway/src/repository.ts | 34 + services/session-gateway/src/types.ts | 171 ++ services/session-gateway/test/helpers.ts | 313 ++++ services/session-gateway/test/privacy.test.ts | 31 + .../test/production-isolation.test.ts | 45 + .../test/real-simulators.integration.test.ts | 302 ++++ .../test/session-gateway.test.ts | 508 ++++++ .../simulated-biometric-verifier/README.md | 7 + .../simulated-biometric-verifier/package.json | 13 + .../simulated-biometric-verifier/src/index.ts | 263 +++ .../test/simulated-biometric-verifier.test.ts | 426 +++++ services/simulated-staging-issuer/README.md | 5 + .../simulated-staging-issuer/package.json | 13 + .../simulated-staging-issuer/src/index.ts | 311 ++++ .../test/simulated-staging-issuer.test.ts | 504 ++++++ src/app/globals.css | 11 - src/app/layout.tsx | 30 - src/app/page.tsx | 115 -- src/components/QRCode.tsx | 81 - src/components/UserDropdown.tsx | 64 - src/components/icons/CheckmarkIcon.tsx | 13 - src/components/icons/FailedIcon.tsx | 16 - src/components/icons/LogOutIcon.tsx | 13 - src/components/icons/SpinnerIcon.tsx | 10 - src/components/icons/WorldMark.tsx | 16 - src/fonts/TWKLausanne-300.otf | Bin 75112 -> 0 bytes src/fonts/TWKLausanne-400.otf | Bin 75748 -> 0 bytes src/fonts/TWKLausanne-600.otf | Bin 76292 -> 0 bytes src/fonts/TiemposHeadline-Regular.ttf | Bin 119284 -> 0 bytes src/lib/utils.ts | 4 - src/types/images.d.ts | 34 - tests/integration/README.md | 18 + .../browser/authenticator.browser.spec.ts | 397 +++++ .../contract/admission-and-controller.test.ts | 469 ++++++ .../contract/browser-response-binding.test.ts | 85 + .../contract/device-evidence-package.test.ts | 49 + .../contract/gateway-recovery.test.ts | 90 + .../contract/lifecycle-and-quality.test.ts | 108 ++ .../contract/nested-receipt.test.ts | 92 ++ .../contract/server-session-evidence.test.ts | 292 ++++ .../contract/state-and-ui-matrix.test.ts | 107 ++ tests/integration/device-lab/RUNBOOK.md | 68 + tests/integration/device-lab/UNEXECUTED.md | 25 + .../device-lab/observation.schema.json | 113 ++ tests/integration/fixtures/README.md | 9 + .../privacy/privacy-boundaries.test.ts | 140 ++ tests/integration/reports/evidence-report.md | 101 ++ ...p-chromium-synthetic-admission-blocked.png | Bin 0 -> 18044 bytes ...sktop-chromium-synthetic-passkey-intro.png | Bin 0 -> 19978 bytes ...omium-synthetic-request-review-393x852.png | Bin 0 -> 28067 bytes .../desktop-chromium-synthetic-returned.png | Bin 0 -> 14949 bytes ...top-webkit-synthetic-admission-blocked.png | Bin 0 -> 25933 bytes ...desktop-webkit-synthetic-passkey-intro.png | Bin 0 -> 28549 bytes ...ebkit-synthetic-request-review-393x852.png | Bin 0 -> 37176 bytes .../desktop-webkit-synthetic-returned.png | Bin 0 -> 22265 bytes tests/integration/testkit/runtime.ts | 159 ++ tests/integration/testkit/ui.ts | 39 + tsconfig.client.json | 17 + tsconfig.json | 53 +- tsconfig.server.json | 17 + tsconfig.test.json | 15 + tsconfig.tools.json | 8 + vite.config.ts | 59 + vite.static-demo.config.ts | 87 + 200 files changed, 25243 insertions(+), 1097 deletions(-) create mode 100644 apps/authenticator/README.md create mode 100644 apps/authenticator/index.html create mode 100644 apps/authenticator/public/assets/figma/capture-check.svg create mode 100644 apps/authenticator/public/assets/figma/capture-ring-complete.svg create mode 100644 apps/authenticator/public/assets/figma/capture-ring-ready.svg create mode 100644 apps/authenticator/public/assets/figma/capture-ring-sampling.svg create mode 100644 apps/authenticator/public/assets/figma/close.svg create mode 100644 apps/authenticator/public/assets/figma/disclosure-check.svg create mode 100644 apps/authenticator/public/assets/figma/disclosure-x.svg create mode 100644 apps/authenticator/public/assets/figma/human-emblem.svg create mode 100644 apps/authenticator/public/assets/figma/person-circle.svg create mode 100644 apps/authenticator/public/assets/figma/person-key-blue.svg create mode 100644 apps/authenticator/public/assets/figma/person-key-disabled.svg create mode 100644 apps/authenticator/public/assets/figma/person-key.svg create mode 100644 apps/authenticator/public/assets/figma/selfie-emblem.svg create mode 100644 apps/authenticator/public/assets/figma/simulation-progress.svg create mode 100644 apps/authenticator/public/assets/figma/success-emblem.svg create mode 100644 apps/authenticator/public/assets/figma/verification-complete.svg create mode 100644 apps/authenticator/public/assets/figma/zoom-app-icon.png create mode 100644 apps/authenticator/public/models/face_landmarker.task create mode 100644 apps/authenticator/src/App.tsx create mode 100644 apps/authenticator/src/adapters/browser-admission.ts create mode 100644 apps/authenticator/src/adapters/browser-capture.ts create mode 100644 apps/authenticator/src/adapters/http-session.ts create mode 100644 apps/authenticator/src/adapters/staging-compatibility.ts create mode 100644 apps/authenticator/src/assets/capture-oval-geometry.ts create mode 100644 apps/authenticator/src/assets/provenance.ts create mode 100644 apps/authenticator/src/components/FlowScreen.tsx create mode 100644 apps/authenticator/src/components/WalkthroughPanel.tsx create mode 100644 apps/authenticator/src/flow/controller.ts create mode 100644 apps/authenticator/src/flow/render-registry.ts create mode 100644 apps/authenticator/src/main.tsx create mode 100644 apps/authenticator/src/server/browser-session-service.server.ts create mode 100644 apps/authenticator/src/server/crypto.server.ts create mode 100644 apps/authenticator/src/server/demo-authenticator.server.ts create mode 100644 apps/authenticator/src/server/http.server.ts create mode 100644 apps/authenticator/src/server/main.ts create mode 100644 apps/authenticator/src/server/runtime.server.ts create mode 100644 apps/authenticator/src/server/start.server.ts create mode 100644 apps/authenticator/src/styles/app.css create mode 100644 apps/authenticator/src/walkthrough/hold-steady-progress.ts create mode 100644 apps/authenticator/src/walkthrough/live-face-guidance.ts create mode 100644 apps/authenticator/src/walkthrough/live-passkey.ts create mode 100644 apps/authenticator/src/walkthrough/model-provenance.ts create mode 100644 apps/authenticator/src/walkthrough/production-copy.ts create mode 100644 apps/authenticator/src/walkthrough/walkthrough-adapters.ts create mode 100644 apps/authenticator/src/wallet/session.ts create mode 100644 apps/authenticator/static-demo/index.html create mode 100644 apps/authenticator/static-demo/main.tsx create mode 100644 apps/authenticator/test/browser-admission-adapter.test.ts create mode 100644 apps/authenticator/test/capture-adapter.test.ts create mode 100644 apps/authenticator/test/controller.test.ts create mode 100644 apps/authenticator/test/http-client.test.ts create mode 100644 apps/authenticator/test/http-server.test.ts create mode 100644 apps/authenticator/test/live-face-guidance.test.ts create mode 100644 apps/authenticator/test/privacy.test.ts create mode 100644 apps/authenticator/test/production-presentation.test.tsx create mode 100644 apps/authenticator/test/render-registry.test.ts create mode 100644 apps/authenticator/test/screens.test.tsx create mode 100644 apps/authenticator/test/server-composition.test.ts create mode 100644 apps/authenticator/test/staging-compatibility.test.ts create mode 100644 apps/authenticator/test/static-demo.test.ts create mode 100644 apps/authenticator/test/walkthrough.test.ts create mode 100644 apps/authenticator/test/wallet-session.test.ts create mode 100644 config/README.md create mode 100644 config/authenticator-app-v0.test.ts create mode 100644 config/authenticator-app-v0.ts delete mode 100644 next.config.ts create mode 100644 packages/biometric-verification-port/README.md create mode 100644 packages/biometric-verification-port/package.json create mode 100644 packages/biometric-verification-port/src/index.ts create mode 100644 packages/browser-admission/README.md create mode 100644 packages/browser-admission/package.json create mode 100644 packages/browser-admission/src/admission.ts create mode 100644 packages/browser-admission/src/handoff.ts create mode 100644 packages/browser-admission/src/index.ts create mode 100644 packages/browser-admission/src/platform.ts create mode 100644 packages/browser-admission/src/probes.ts create mode 100644 packages/browser-admission/src/types.ts create mode 100644 packages/browser-admission/test/browser-admission.test.ts create mode 100644 packages/client-quality/README.md create mode 100644 packages/client-quality/package.json create mode 100644 packages/client-quality/src/index.ts create mode 100644 packages/client-quality/test/client-quality.test.ts create mode 100644 packages/contracts/README.md create mode 100644 packages/contracts/package.json create mode 100644 packages/contracts/src/authenticator-ui-copy-v1.ts create mode 100644 packages/contracts/src/authenticator-ui-flow-v1.ts create mode 100644 packages/contracts/src/biometric-verification-port-v0.ts create mode 100644 packages/contracts/src/client-quality-policy-v0.ts create mode 100644 packages/contracts/src/common.ts create mode 100644 packages/contracts/src/enrollment-session-v1.ts create mode 100644 packages/contracts/src/enrollment-session-v2.ts create mode 100644 packages/contracts/src/frame-bundle-v0.ts create mode 100644 packages/contracts/src/index.ts create mode 100644 packages/contracts/src/injected-authenticator-port-v0.ts create mode 100644 packages/contracts/src/simulation-capture-policy-v0.ts create mode 100644 packages/contracts/src/simulator-browser-session-port-v0.ts create mode 100644 packages/contracts/src/staging-issuance-port-v0.ts create mode 100644 packages/contracts/src/webauthn-prf-authenticator-v1.ts create mode 100644 packages/contracts/src/world-id-registration-adapter-v1.ts create mode 100644 packages/contracts/test/contracts.test.ts create mode 100644 packages/contracts/test/ui-contracts.test.ts create mode 100644 packages/frame-capture/README.md create mode 100644 packages/frame-capture/src/artifact.ts create mode 100644 packages/frame-capture/src/browser-platform.ts create mode 100644 packages/frame-capture/src/index.ts create mode 100644 packages/frame-capture/src/runtime.ts create mode 100644 packages/frame-capture/src/state.ts create mode 100644 packages/frame-capture/src/types.ts create mode 100644 packages/frame-capture/test/artifact.test.ts create mode 100644 packages/frame-capture/test/browser-platform.test.ts create mode 100644 packages/frame-capture/test/helpers.ts create mode 100644 packages/frame-capture/test/privacy.test.ts create mode 100644 packages/frame-capture/test/runtime.test.ts create mode 100644 packages/frame-capture/test/state.test.ts create mode 100644 packages/staging-issuance-port/README.md create mode 100644 packages/staging-issuance-port/package.json create mode 100644 packages/staging-issuance-port/src/index.ts create mode 100644 packages/world-id-authenticator/README.md create mode 100644 playwright.integration.config.ts delete mode 100644 postcss.config.mjs delete mode 100644 public/images/marble.png delete mode 100644 public/images/spain.png create mode 100644 services/session-gateway/README.md create mode 100644 services/session-gateway/package.json create mode 100644 services/session-gateway/src/crypto.ts create mode 100644 services/session-gateway/src/errors.ts create mode 100644 services/session-gateway/src/gateway.ts create mode 100644 services/session-gateway/src/index.ts create mode 100644 services/session-gateway/src/repository.ts create mode 100644 services/session-gateway/src/types.ts create mode 100644 services/session-gateway/test/helpers.ts create mode 100644 services/session-gateway/test/privacy.test.ts create mode 100644 services/session-gateway/test/production-isolation.test.ts create mode 100644 services/session-gateway/test/real-simulators.integration.test.ts create mode 100644 services/session-gateway/test/session-gateway.test.ts create mode 100644 services/simulated-biometric-verifier/README.md create mode 100644 services/simulated-biometric-verifier/package.json create mode 100644 services/simulated-biometric-verifier/src/index.ts create mode 100644 services/simulated-biometric-verifier/test/simulated-biometric-verifier.test.ts create mode 100644 services/simulated-staging-issuer/README.md create mode 100644 services/simulated-staging-issuer/package.json create mode 100644 services/simulated-staging-issuer/src/index.ts create mode 100644 services/simulated-staging-issuer/test/simulated-staging-issuer.test.ts delete mode 100644 src/app/globals.css delete mode 100644 src/app/layout.tsx delete mode 100644 src/app/page.tsx delete mode 100644 src/components/QRCode.tsx delete mode 100644 src/components/UserDropdown.tsx delete mode 100644 src/components/icons/CheckmarkIcon.tsx delete mode 100644 src/components/icons/FailedIcon.tsx delete mode 100644 src/components/icons/LogOutIcon.tsx delete mode 100644 src/components/icons/SpinnerIcon.tsx delete mode 100644 src/components/icons/WorldMark.tsx delete mode 100644 src/fonts/TWKLausanne-300.otf delete mode 100644 src/fonts/TWKLausanne-400.otf delete mode 100644 src/fonts/TWKLausanne-600.otf delete mode 100644 src/fonts/TiemposHeadline-Regular.ttf delete mode 100644 src/lib/utils.ts delete mode 100644 src/types/images.d.ts create mode 100644 tests/integration/README.md create mode 100644 tests/integration/browser/authenticator.browser.spec.ts create mode 100644 tests/integration/contract/admission-and-controller.test.ts create mode 100644 tests/integration/contract/browser-response-binding.test.ts create mode 100644 tests/integration/contract/device-evidence-package.test.ts create mode 100644 tests/integration/contract/gateway-recovery.test.ts create mode 100644 tests/integration/contract/lifecycle-and-quality.test.ts create mode 100644 tests/integration/contract/nested-receipt.test.ts create mode 100644 tests/integration/contract/server-session-evidence.test.ts create mode 100644 tests/integration/contract/state-and-ui-matrix.test.ts create mode 100644 tests/integration/device-lab/RUNBOOK.md create mode 100644 tests/integration/device-lab/UNEXECUTED.md create mode 100644 tests/integration/device-lab/observation.schema.json create mode 100644 tests/integration/fixtures/README.md create mode 100644 tests/integration/privacy/privacy-boundaries.test.ts create mode 100644 tests/integration/reports/evidence-report.md create mode 100644 tests/integration/reports/screenshots/desktop-chromium-synthetic-admission-blocked.png create mode 100644 tests/integration/reports/screenshots/desktop-chromium-synthetic-passkey-intro.png create mode 100644 tests/integration/reports/screenshots/desktop-chromium-synthetic-request-review-393x852.png create mode 100644 tests/integration/reports/screenshots/desktop-chromium-synthetic-returned.png create mode 100644 tests/integration/reports/screenshots/desktop-webkit-synthetic-admission-blocked.png create mode 100644 tests/integration/reports/screenshots/desktop-webkit-synthetic-passkey-intro.png create mode 100644 tests/integration/reports/screenshots/desktop-webkit-synthetic-request-review-393x852.png create mode 100644 tests/integration/reports/screenshots/desktop-webkit-synthetic-returned.png create mode 100644 tests/integration/testkit/runtime.ts create mode 100644 tests/integration/testkit/ui.ts create mode 100644 tsconfig.client.json create mode 100644 tsconfig.server.json create mode 100644 tsconfig.test.json create mode 100644 tsconfig.tools.json create mode 100644 vite.config.ts create mode 100644 vite.static-demo.config.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a438cf6..d13f27e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,13 +21,10 @@ jobs: - name: Setup Bun uses: oven-sh/setup-bun@v2 with: - bun-version: latest + bun-version: 1.4.2 - name: Install dependencies - run: bun install - - - name: Check formatting - run: bun run format:check + run: bun install --frozen-lockfile - name: Run linting run: bun run lint @@ -37,3 +34,12 @@ jobs: - name: Build project run: bun run build + + - name: Run tests + run: bun test + + - name: Install test browsers + run: bunx playwright install --with-deps chromium webkit + + - name: Browser regression tests + run: bunx playwright test -c playwright.integration.config.ts diff --git a/.gitignore b/.gitignore index 5ef6a52..3ca8791 100644 --- a/.gitignore +++ b/.gitignore @@ -1,41 +1,17 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. +node_modules/ +apps/authenticator/dist/ +apps/authenticator/dist-server/ +apps/authenticator/dist-static/ +.artifacts/ +.runtime/ +playwright-report/ +test-results/ +.env +.env.* -# dependencies -/node_modules -/.pnp -.pnp.* -.yarn/* -!.yarn/patches -!.yarn/plugins -!.yarn/releases -!.yarn/versions - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc .DS_Store *.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.pnpm-debug.log* - -# env files (can opt-in for committing if needed) -.env* - -# vercel -.vercel - -# typescript *.tsbuildinfo -next-env.d.ts +coverage/ +.vercel/ +.wrangler/ diff --git a/README.md b/README.md index ce7842b..ea4aea1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,83 @@ -# web-authenticator +# World ID Web Authenticator -World ID Web Authenticator. +Browser application migrated from the clean-start experiment. It uses the published +`@worldcoin/walletkit-web@0.27.1` package; no Rust checkout or WASM build is required. + +## Run + +```sh +nix shell nixpkgs#bun --command bun install --frozen-lockfile +nix shell nixpkgs#bun --command bun run build +nix shell nixpkgs#bun --command bun run start +``` + +Open **http://localhost:4173**. Use localhost (not an IP address) or HTTPS for +WebAuthn. `bun run dev` watches both the browser build and Bun server. + +## What works + +- Migrated request, consent, passkey, camera guidance, retake and completion screens. +- A PRF-capable passkey creates/unlocks an encrypted WalletKit OPFS credential store. + HKDF derives distinct authenticator seed and database keys. Only the public + credential ID is saved in localStorage; PRF output and derived key buffers are + cleared after initialization. Reload and unlock uses the same passkey and store. +- WalletKit runs in its packaged worker. Vite emits its worker and WASM assets. +- Public MediaPipe model provides transient camera guidance. Camera pixels stay + in the browser; the migrated simulator receives metadata only. + +This is a **development preview**, not production enrollment. Biometric checks, +credential issuance and the partner return flow remain explicitly simulated. +Opening a local wallet does not register a World ID on chain. The simulator's +account is separate from the local vault; no simulated artifact is imported as a +real credential. The Zoom return screen sends no proof to Zoom. + +The private native biometric lab, model downloader, internal models/configs, +Orb Tools patches, staging integrity exception, and Deep-Live-Cam tooling were +not migrated. Real TEE enrollment and the agreed TFH detection/QA/glasses browser +pipeline are follow-up integrations. + +## Storage and recovery + +Web Locks serialize passkey/profile setup across tabs so concurrent creation cannot +overwrite another attempt’s credential ID. One WalletKit worker owns OPFS per origin. Close other tabs before unlocking. A +cancelled/unsupported passkey or failed wallet initialization blocks progression; +there is no plaintext key fallback. Passkeys can remain in the user's provider +when an attempt fails. The local credential ID is saved before opening storage so +an interrupted unlock retries the same passkey instead of replacing the wallet. + +The PRF derivation labels, metadata version and credential-based OPFS path are +persistent-format contracts. Changing them requires a migration. This local +profile supports one passkey; passkey rotation, cross-device vault recovery and +backup are not implemented. Clearing site data loses the vault and its local +profile; a synced passkey alone does not back up OPFS. + +## Validation + +```sh +bun run typecheck +bun run lint +bun run build +bun test +bunx playwright install chromium webkit +bun run test:browser +``` + +Build before running unit tests: HTTP regression tests exercise the built shell. +Browser tests cover responsive layout, accessibility, capture cleanup and actual +WalletKit loading with a Chromium virtual PRF passkey. That is not evidence of +physical-passkey/provider compatibility. For Nix Chromium, set +`PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH` to its executable and provide a fontconfig +configuration with installed fonts. CI installs both Playwright browser targets. + +`bun run build:static-demo` retains the standalone preview build. No deployment +project or automatic publishing target is configured. + +## Migration provenance + +The migrated `clean-start/` source comes from +`worldcoin/web-authenticator-experiments` commit +`b4139268da213a680e89bf5877c29fcafb145f25` (Soam's UX/hosting branch, PR #5), moved +to this repository root. The existing contracts, simulator boundaries, tests and +asset provenance are preserved. Changes on top add WalletKit, protected storage, +explicit simulation labels and updated CI. Historical test evidence under +`tests/integration/reports` describes the source experiment, not this migration. diff --git a/apps/authenticator/README.md b/apps/authenticator/README.md new file mode 100644 index 0000000..0367792 --- /dev/null +++ b/apps/authenticator/README.md @@ -0,0 +1,8 @@ +# Browser app + +See the [root README](../../README.md) for setup, current behavior and limitations. + +`src/wallet/session.ts` owns passkey PRF evaluation, key derivation and the real +WalletKit worker/vault. `src/App.tsx` prevents capture progression until that vault +opens successfully. The session controller and `src/server` retain the migrated +metadata-only simulator; they do not issue real credentials or attest biometrics. diff --git a/apps/authenticator/index.html b/apps/authenticator/index.html new file mode 100644 index 0000000..0cdb906 --- /dev/null +++ b/apps/authenticator/index.html @@ -0,0 +1,14 @@ + + + + + + + + World ID + + +
+ + + diff --git a/apps/authenticator/public/assets/figma/capture-check.svg b/apps/authenticator/public/assets/figma/capture-check.svg new file mode 100644 index 0000000..a9d8ea5 --- /dev/null +++ b/apps/authenticator/public/assets/figma/capture-check.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/apps/authenticator/public/assets/figma/capture-ring-complete.svg b/apps/authenticator/public/assets/figma/capture-ring-complete.svg new file mode 100644 index 0000000..d6fb2d4 --- /dev/null +++ b/apps/authenticator/public/assets/figma/capture-ring-complete.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/authenticator/public/assets/figma/capture-ring-ready.svg b/apps/authenticator/public/assets/figma/capture-ring-ready.svg new file mode 100644 index 0000000..763d445 --- /dev/null +++ b/apps/authenticator/public/assets/figma/capture-ring-ready.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/authenticator/public/assets/figma/capture-ring-sampling.svg b/apps/authenticator/public/assets/figma/capture-ring-sampling.svg new file mode 100644 index 0000000..dc81340 --- /dev/null +++ b/apps/authenticator/public/assets/figma/capture-ring-sampling.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/authenticator/public/assets/figma/close.svg b/apps/authenticator/public/assets/figma/close.svg new file mode 100644 index 0000000..b9c42d3 --- /dev/null +++ b/apps/authenticator/public/assets/figma/close.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/apps/authenticator/public/assets/figma/disclosure-check.svg b/apps/authenticator/public/assets/figma/disclosure-check.svg new file mode 100644 index 0000000..d9124d0 --- /dev/null +++ b/apps/authenticator/public/assets/figma/disclosure-check.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/apps/authenticator/public/assets/figma/disclosure-x.svg b/apps/authenticator/public/assets/figma/disclosure-x.svg new file mode 100644 index 0000000..fbb5317 --- /dev/null +++ b/apps/authenticator/public/assets/figma/disclosure-x.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/apps/authenticator/public/assets/figma/human-emblem.svg b/apps/authenticator/public/assets/figma/human-emblem.svg new file mode 100644 index 0000000..16ba7cc --- /dev/null +++ b/apps/authenticator/public/assets/figma/human-emblem.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/apps/authenticator/public/assets/figma/person-circle.svg b/apps/authenticator/public/assets/figma/person-circle.svg new file mode 100644 index 0000000..96402a8 --- /dev/null +++ b/apps/authenticator/public/assets/figma/person-circle.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/apps/authenticator/public/assets/figma/person-key-blue.svg b/apps/authenticator/public/assets/figma/person-key-blue.svg new file mode 100644 index 0000000..40511cb --- /dev/null +++ b/apps/authenticator/public/assets/figma/person-key-blue.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/apps/authenticator/public/assets/figma/person-key-disabled.svg b/apps/authenticator/public/assets/figma/person-key-disabled.svg new file mode 100644 index 0000000..9cebaf7 --- /dev/null +++ b/apps/authenticator/public/assets/figma/person-key-disabled.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/apps/authenticator/public/assets/figma/person-key.svg b/apps/authenticator/public/assets/figma/person-key.svg new file mode 100644 index 0000000..5cffb8b --- /dev/null +++ b/apps/authenticator/public/assets/figma/person-key.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/apps/authenticator/public/assets/figma/selfie-emblem.svg b/apps/authenticator/public/assets/figma/selfie-emblem.svg new file mode 100644 index 0000000..87cece5 --- /dev/null +++ b/apps/authenticator/public/assets/figma/selfie-emblem.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/apps/authenticator/public/assets/figma/simulation-progress.svg b/apps/authenticator/public/assets/figma/simulation-progress.svg new file mode 100644 index 0000000..bbf6268 --- /dev/null +++ b/apps/authenticator/public/assets/figma/simulation-progress.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/apps/authenticator/public/assets/figma/success-emblem.svg b/apps/authenticator/public/assets/figma/success-emblem.svg new file mode 100644 index 0000000..9cabac7 --- /dev/null +++ b/apps/authenticator/public/assets/figma/success-emblem.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/apps/authenticator/public/assets/figma/verification-complete.svg b/apps/authenticator/public/assets/figma/verification-complete.svg new file mode 100644 index 0000000..3a6ce0c --- /dev/null +++ b/apps/authenticator/public/assets/figma/verification-complete.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/apps/authenticator/public/assets/figma/zoom-app-icon.png b/apps/authenticator/public/assets/figma/zoom-app-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bb6fa9de5439873d82fc88b2d7b6549ab3c96f5c GIT binary patch literal 19677 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 Ye=GUHfIgpPLjV8(07*qoM6N<$f|vP)BLDyZ literal 0 HcmV?d00001 diff --git a/apps/authenticator/public/models/face_landmarker.task b/apps/authenticator/public/models/face_landmarker.task new file mode 100644 index 0000000000000000000000000000000000000000..c50c845d113e02ac6e3627b8121db7fb9a35bb4b GIT binary patch literal 3758596 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�%Gb&C!l*m9 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

s}q`c7hY*5unC$bw&C88(;*REln$xyHjUH1 z!SQC&F)nAnegj#6>?-UItwMHt&$-Wmjk#O?0>4N6qRfzbAa>Z~0g1@c`Z^(w;>QpR z_4Q znm3!*1vWva{Oi5v=^c_AxGJwQb|F`lJT(2Tk;rm=^3zO=)+e(^R4B@ z1>ie$0o)oKNS%d_&>fk4a=A{*PY$)BhXn($Lr;8W`Bs4h_m4Ci-W><{`r&4An6a2O z5u3GZCH*WEG~e%K?ul&5V#!FV&OKtO)=kVZ{1mg`$@okCZaLjQAgRI~CACge@NH_Z zeM{9V&gD?J)lDxgHX>tz4B6<-W5=q$5moK0P!O_`UG?nPQc6iUQ>{dsrWnr7ql~l+$Xs)J&W~RA&xo{fTE%I)2ktOKyTzcRm9% zbPK{-OD$ie?%}9ouOaLu)5XQ$Ezi?HgmQ*YH&(YM>z=tyMe{uq(80)1?SnMSIS+Wi z|0y=)Ltvv|CwCP1SL#9T1L&oap)>4t{IxQduEu5Ro0t07Tc#8GQ<5B`!KG9_nMKA) zKUFWjQ2(d72$=0Sd52vCjuRC>Af8Bk2S=M~7e4ZZ^Mcq7sYjTV75o)f7x9|-2U27R zN;S#v6pD@K_X2a^aR4UeT8|YmgJY5I|83$YAd4Ky{|dc=yv~ln zk>1ThO{K5t2fr}k5I@ZoS-g!{XngNm>dA#CaV*wASe=+CeMX%Oj?8c_b${oYn45Yj zewa8`+A8fdRchz05tN-9ZMBDZlQpTDn#F~Iv#~t?VX&3fmKAr7H0TdpVZP_Ma2ETl zw1WQDjoAl%BRQ*2Hwl#wBfZil!xFqKZ@u1$ZpTK+wZ-Omu`wJT#5J&F$y5B_O1d+d zhSz90PbRI=b|^`}ulQ8UD|xx4QaZ6;Pw7azl{InO<&FXTL1xcZjMVPPn&%(LVekhxb zXWGdFJcp8lQg=?a{i)8gMRIi!%l;hv-sEUU>K)<0;sYr(ESwgWh(nPXxy!IB_(F^% zH^4opYDg^&bd2$unaOEYkt}H{a14!xnZ4%$pYQ^_XG%k3{D0eLX(abCcfA}@7=}vn z3?ZHlS+~IN%a+p{n!odO=ll4>w3~1-unh)$#|pDcc6vczzgRnElPg^N9CrkcWZ&WK zQe$;C!yS5c+%{G;eP!Nyds(J^NI$I9IwzTc`WpIv2h&o^|v9bL=vv8cf=<7*Bx`tm@T$1$XRA0*^x+V zds{wYI)GnC2d0zGeO@oy9KqmmnhP#Vbsc!vbGIE;ida##aY4#f3Su zWi7B%Td9r%ZnT;PKCoAzhC9|ncCr?c+x&~GUSLb&BC2P40$Z=9+x`jLz|I!uM>k2W z8cKEIr7fw&wiCJ^V3l*7H3}I{aY&SG*Onsd>@Bc6$Rv&AH<{LkqR`XI3DhZ$vu2mt zxYleI*Fv5SeS@=GWcl~!RMYR}L+BoI-%K8DaswL|)3w1ZqG{C5rgRyC@Xy1*ur2D^*>q0ZIlz*dfm4+iRQc{qlwxUfJuw z6V++-WNpCVHbAey0WC>vZg83UV*~UV&SUHM(005zSx=pw*k8y9_G1zPJHb2DEJqaa zFL6SScRJMBzMkwk^G|MT#Zmm0v;rO4a*Ol~iqtI>7k%w0hZ-ak`PRiFrBh(O(1oue z%mReO&FIA3nXz~9-uYSbZD56AG1yiUt2989u`|#j_m=qo;-<h{+FM`He#yW9x&}vt2+ZyxFi+%Dr9~p?}zH7S* zy?L*cxkn}@j&fe1d|(PXm8oQ^n}eJO_!0NT)XLg}I?P8n|Fj&CDpM1ajr!Coj8EXc zS>lmNCe+-+QqS0(`Nj{!i=lyFH*Ji3hw8)9LQ}(8v8K4n0xRRdIo!YCRQFZ-DYK-+ zZY=hsdL3YY;gao`@By5+|2=(AN!we~7e=S#2EcE|enod=$aJ7M#WJ0@Sh|~sSOyXXZpexD6^rz_ocZrD$11Zdz%zFvD7$}F)7-!#(Iz1gyzp(RQh8)VhkjjAZyB27zJ&T0)%wD+zdt9gI zthRm${9~;RBqkU@IF!akDe)jcCl${zLO?dwv3xi8%=x6`fN2W<48brYVF-8Fx=nMs zmWSGs4b6|`m!*TqQT{JzC%(V`e{5A&w0Ph~NIPr0oL|h(4;hPQ9)roZ?{Di9;` zRhiGWIq251NU$))LjM<=We&J=Se;qL2Z2u7jo5m2o*1W7BoE7d*n4OLxkkz4Bs20} znN-5TPw|UM*+!#SD1J8P(wfimOPP!OpU_)p{2V74~Y& z;KtBiz7cV|IQGzP+lmn{rOsG7x|97Y_@q}?COI4DfxN9erG`&_CmkK023E-b}HQisqX&TSAb zz1xpVgYXP-5&Hq|p6J1IkotHGuqC-(AP&3|sL-FvI^t~eE6HYBK)PLHEPHf&+})x` zeT&}-`5;Fq*P};x4?*wr?}FG8&P+PxYf03RHY7Fk?j~^m9QOs_gss%yoZ-apDYtaX)NSW9sk(oq*gY>s zN=2^Y4e8EMzJFp|S66*$KX42ORck^kwQ0&==&^YMd%Cy<;<22U8_|8Zo61{au6-~% zA6!nJm1{GXsXwAtCDzq;$ZeD=Zq_lD&(boWadfmtV5eA5CC?QhR~SBC8o(J+UFr=f zT$(_bJV&)WB1h-7Zi~Dk4MKZ6$3lIu&9*fL8|OeHv;;fP=aZv__TYHW`e1Jb6dM~} z*>p02<5J^g^aK6;e@1_j^PK+!BBcG||M*DTonVf~1(9i0`0DUIsuXIjSBz&U-PvAT z3yD$Iq3dZkx>0`Oh=7VH1L@au&BxUUA`4nicLx{f^kSb6gL+HhftFIa;T`Dnuw6FZ@w_Y1I0Oyg<_?GcQKws;~22%Sn-$|s@u;zynJ=+qqn@1(qobnfL);z(CN-|?hMWabfpLKt;D`k3%N_uDeVoALWOaxbw)@qBpL(i8!j2F#E$uc z@DOb}d%S5=V=c1!?i_bx={hz?odw=fv!vm^D1IZikMxu`AqPntl2__Rj)QmyVkA=` zMN9wUTjI9CL%6>!yu8@o&~?z8X-vhg@t+g!X*JciCP=3ze3Dm~3nen|hV-xWm-5Nj zM2XXL$E&PYLbK(uX=zLl<=SH4GwuvxKwF2^qv_)Z<9L~Aqi!AclfU9F9o(8_w9fU#XFf;d4S@A zje3r=dfrSWlPHHu#9>?#bP(%j-?BF{={w$@jiY~4R??q55fuk~nixNXM39r6@-3hZO1)OlYx=XwP+bjkNmk0cpCa82uBxRZsyG z=_H7_!gFX)3wPw}=l_!2Ckj*24)Mv=v{kfJya8HO_SF+xSXxxbt@jseQ4osEhdVR< zvg&#iq#;vYH7J@eE>$>*WhbPKY2D&)URAMn{4{-A3|FJR}nssVLNwxo1`YI^EW zd!VH)Mxj~YAA2Vk{#Cgd+u$9KPB;Be?<>@BKPs9Hyg~lMKI4;6p1)um;PhI=WP(`Y zK4oL55xG`iCYXEpuYnuU9h4WTCBM+Zk(1O^ zED{B^G5kWaHI#*}RhD4cLOF1{l;=)ZBbazO3?a~_rfmP~r0YZtHOw_ORdixT&z&eRSHe~TkR|I!gWyl|G+Rcx_F9~ad@irR6y0<=|b4Yz$6TmlO6v8_EME- zM_yGZ?`t6~Sj*EixC}Db$2yXUXfj{w5y-!xfQ>r0>U>*1lp=)BME`J!e;ak z*Neh55pBpkb(y6;Hc>jD+PPb1BC#EYB!|-z@hf>Vg})3Ga8*yfcH||?@9ZY9rF%Pb zP|ZaeVu^4LJ;2bX@R`&`8pu}i0pPf27dQfm_FXo%<$6L5OpB~14^M;`Yk2NTsF%n}jCKA?^#TjfdY%_toTa;Ot6^iKILk0=d#a8| zJ6>2Th2yCe3FUkX`zNj*+dJtd3>Akgf0>^r_jEV(*>S&Z7&JjUs`Rxt77y`%8+ys> z<(`H?%4+Lp-)C#IyH4yRZiQu>wAS^JZUtotw=8ue8XS>qq%SEgN@nl_=$G^sFg>{) z_f?kj{Dp`$oPUwr#MIT?M{sc~kbl^R-Vu)1u3gYS+(pc5T*A@q$Gbp18Qqet6!)8W zv9)_^;e>+TUcuQ}UIJr4hm@W0K^_M?S|*5Tjz;GHqv$OEn@HO>jJqu@w3JefOpu2Gf67AEj+O3F79rNyS?-N1M?-n%-r{No#%0M^A1sJ zKurqnN`1;FDi_`7oayRokDmOIs1vDRIkTAl18;yE_+QvAuCsh1P>D_3^U~PXE*etk ziMm~;ljA5`1|J|94w6E^R`zjVbx|7*^f}~>jejTpwNAB62*tv!zyMGYY^1*O`vdKv znY$BmGw?5EGo*OE8!;ZZASBzyqs>j%;-3QJLJ@^WrEX+RLy>f&^aQb7yNa!s zW@#7v?~+vOAln48jRlJO$M)br&{{G1Sm0wb-5|YZhi3!xF?PN52o(3W!5CI z8uti%?fDh%({wkt-d(c{;jX(@1{174s3xiw%a%T#CU8?df)@x3h0~Z3(s^vPXrz8; z-^m}q?cu@x=}cSaC(|_Hg0Gug$5p}cE1Y9WghxwVq>qV-Kuawhif1k(9{t|9)jEmA zBv)~7buCzp{Z0+B*HIs&)R7kR$*BP$OI#)0_l{2j)VDd0_!RX&# zI^jD0Y0w_5A+{ZwM%Bi0_zZCd{f@K36~dVJP$&wiOZD}7eTU3Xye-6r zO^FP}$X--hq|~szGXL_|FK&V8&y;7dLEkYshI~qohaX#SlEum__dRBe^P%Zqxu#S} zwzjqnK94m70fwX@gA5_M73o@r$ssw4Q83iiI7e8G&hJqvW-c$5@jrcikb%RWmt1*d*C#enN`CWMB~V zg!wbPj63eh4RkAP!XGRw7lyD^_zz^S1lHftQ~*Bm4AA>zu>dDkBKERzSih9_?4LVx z*_qx3VyUoQr!hQq4Ju$=!D8cz^E}={mFvY^59p_J9MiF}67GrJU~|j2#46!(hM8987Q= z_zv#&mc@S%-|ButRI&In`CK{1TFDFJLi{lHmiR1ySl^<&9l8> z;$+GYZGccgoD|oBi%N>{-*8g}yV>N_L@>rFnuqBgzuHNw(Vm`e)>FsE!xD!QX3KwU zhWeddZb~yu1BYV!iB{-WR};%RW@7TRq*cVA-41J8YJQ!3>k_aL(%zkd^u&|3>uMkQ zVr)>l2>vDH+P`?u($3VuhbPF7@V*EA8os$hQr3va9kSUVftqK?IucVVB2Vki8jGCi6d;io{%EL;cka*pH`dt6E*)_j* z#Fi5-A}6`mAu!&!=^xNKs6CHj%|pwrqb!9oVD6Cj(iSPoYHzuzd@S!EWH#IvFA(>M z#;v+5J2#9YkD}3OoV}8MPTvCD;mfcowyo??tlq&T%4}f1#V;kOQ6*b>zx_R@<~}O2 zQpdRZCHq2@(%rMLc?jG=^(EiaUEx(&6#mQPjn9 zo`pvWV6ox~2aD>?qa+nt4-2$zolvJA#=R67bAodpZRcjjpfjayG=y`)hz5?Qx zl4RH~+*ij)G&fA_=KBBykQ)3MEZ6ltTnC7y4RVlJp+;i4));~1s!0vCO3awVidNFz z6ZjFB%5_n}gPkEEbVALO`|loQI2*eK%luI8bJ6*YZI=aS`F-pzHxcfUUV|T_6Aeb9Nrq39TfGQw7By>M@swqOP$5=M zSZe%HG-q@BgsT2QmfXDKoCgF84VW!&ombTnCuT=L+ zOSIN}HAA-XoMkumk8{6ssp}+AnHM9g%WD%04PI}o>ofbz-2#GPK{qTdU=t1VfJ5wi z_KQo~HO?}OndR3kU4$2OyPW%x*Aj8Cbk{oOg<-Dofz&H@BHx&8qy)Gr;p?s?+Ecbk z{wJyLp(oZIOcqrS%to`lyYsB(KKd5mf^gg#0=84r`9$UvR3h$id^8S~@~Qd!3T{NQ zhNN@1pm{)NPjmkc3Be&NhP+dm;NKJ=Mfyz^Ny=uY;4xfBuw30#_>HR}U*s&{blhEN z;hVz;{3=(S6AZ7}>kZe-my&M#yYQV{XKkXTp!k;J&c&mjLo*W(nN9;$!NcN3ww?2G z0?Q@RPH|zvW-bC>Wvl@RZRWE{QX4FWFXMJuF7S&BCd9tB37gyM|HS3+7K@)*0Syt~ zK%(Kf{LuacIP2Y|jIn$!%qBC-ErCJOqS#{!ELb43+~mY(%Ts12y@ue>E6V?%Z%JRc zs{sq!4LaoMW1rz1Vy};|4K3Vn!pciAe$jCZ`i>1jJh1^<)f_&4u0^}1s7pWOo{R@{y+JOp(!5; z#b}p!tvu)P|3#+aeB;W+y6mRxX3>;Y|oo+Vpi8!Yv;W-t&mUpnYBaFF(j zJB@!eWomyL!-4JAo%sYCQD(+KW(09pn}F|^<1ktsYDo{DwI1c~Sk~HUu2HHQT^(qb zwx&@d_Aypft00_LQ;hwc`N1K?c=tvA8hMOXxew&xv|H8?cNLC9EAEWQ64{O6~G?HMPV;+64bh=^B{DH7Mu+{GRg?+62X_ zV{Kr{z`Xy+XwgqmLSv~Ccsk5&Ut@2Rl#_T?h*CN$HT*d#T}zfoTam?bjx-araJ|FP zu^h9-(ooxu!`8jt-@V6jdIb<@a$qPCqW^IvIF5>S3s0vmHp<3yd7QKn`9te#xgu=h zUxIxBRA`^`H*v)-pfl6%s~^!lVVZa!-;K(LCMof1q@^?4&OM44>^1w(!wrd6WzB+; z&^u_5+MzeWA-3UUOlTcmMQ7{1rE15nLgI-lg+HBDlrrdgaR3;g7HF{mRCJ5WCD-6y z(i2)D*M#R;7bLc@EapJICwbY}4O4cncOm2{p}!Ah$C9nM$M8w{R}LqiBeJLqD9mii zEs}=12a8RKdeU5PBswVXUvwe)9BX6hjs6=P4m-6?hBrmG_()TL|B33xXD|-kq}C>? zaWFblJ`IdijA|K|<==}A;8;wiCKKI=X!?t^r*JwR;TxIw772*sk|&u*i)F-LQVsfr z^`7ZIeO_s<^vBk!&m5)rVrUe8%zXgqZ0>n$bbK7=0uy5oR5?%l3O1Hak3 znd+hxbv^Jy9>XkRCp%{;b!1hVB7bFG3YV0(Xl?k6b)Er(^Q>$9Yb_B}vXCpcPTi@^ z)NddeB;|f5gvt4yllZ^7jXf8uo^l-ZAO&bq^2xvo8>Evzw}6ePT}s!cbL9SI@8q9+ zTe2ZiLpeydNmQJ}uo_kYPxUpxw)@5eu7Y3W85Rq3+*HvQn>I??>+i$Fvz=ubJ;}vb z<_TAnSHf3z1ppAul)DTo(quk;mUQYojv4fDY>eRvSBYs&efOI|RjeDzaW+JjCT7Te zBfa6DLY8z6jV6c6*9x=vO7c{$3PM^JNp@lwqR*#PpR z&2!MZMw3qRtHx*ZVBr?zi7x;p2a?G1LLoXrtt6AauIwS{9C@j%D%e*HS@x4L&B{IB>!at8Q^>oe9QI+blG zoeV@+3(?lX_2_JMIQaqDDYC*kbQ#9bWA=Ur22huM$KskODG3*CZ%WIge7Uu6v-F!9 zVA>FsUc*yR3F#^Z$#7G zLy}v|HGqqIv(W+COnSb$4Ns8w2mTZ^BthC>8_cfpe+0Iac->h=Wnd%ziuP2^g)r;| z^vb`DvzZdPjVx%}o$|>UCr>UOY?$sHLIhIA>*k0Esbzd$u6F|LyWzU&$#CCIEwD9k zc0(Ix-%b9h+k~UNZLEP~6Omnf3*sQqmR+V!VK*ja7)i@@ERq<8I-MJU3Cw8Mk@c?# z-ucRAqY`#*vYiIw(Pp`o^fqKIt&LV+$%-qJWbl;mFm-44DIE3gDqiA z!HR)kesf3 zEcoO+Y%`06>N)AYT#ao2^9}0=1nDHmR!x;(vGa8X7?kF;FYko)neNt>BR#)|lQDh->ijMHv{ z1oau&fwc>C^u-isg=^{Dt477G#eV=Xy^YkaC`a|!;FHNlGsZZ6{_81*}SM{?L2eDa0O!# z{YdUj&Q=$pN&2kyFOHHHYB7wEQ~}JelgUx)8UI*4|1%!uLzmUJ@@3NuU?FfEBzxp!!0|7f68O=0QU~rneO8a zh^o)GTI`Ca_o?4OQJM<&k-7s7rRxF-JWM)YFdE6Lz0swC(+hucCk^c^7&!DF?$Y#YIIew|+qK;agXs+itt&mkpJ{Wl2Yx zZw6PeJ2pH{Gi>&Lb9Znm+& zF=w+tR6&+u4m8pIIupQ%`}7weWs$SueZMSnqTh&SvlcxFPKi=_EU>$DO`CHxjl_m!ErNlYHP z&hgAR1k?kwq(A8|+X?ewe{H5N=L|MR+W1<+H(TV9x#BMToH`22^$k~=n81 zD%zxy+@fg{*T%dT*1s0+P6J?}1JYT+UZ48%fy=f@SKf#Nn)mn-rMtLv(n(BnDW$woRke0F4Jz00wnB|aok8$uBJtVv5^hKAhr5y= zsYlogm6bE?CTRokJs2$w(#ox)s6(8AZS4B#ub5K^{V-mXlIUrQe$9tcsr1s9{E)^V zF*p2Ed}6GgdY3y#-b-1dO$bg2jJ9lW&9Q#OhuU6&n(_?3%|*)-iMKkFGdZqQZR5a- zs{3zB$vH+8HUF;K^rTW{g(o;>Pm`|bO=`8iH?QHi>3ibtqnPB^(l?oQd=XyhIhI3E zV{2qgrruHC1Aq@;35AL86h)VuY{9i{jCS^^YMLsLx|NW57E=eS+vAG zSVfI3R2MFy7J9jyY3LqUTy|B;;_H&Nkv{@SbPH3ka469dG2(S?c08M{sdNUNfeof= z_JQ%Y*->dX6`bwDOkpXx9NNuBAiOXmFj+huS7!Z;EeQOkpO!w8s~8vgo{B*8sXEv( zYh7WWeIIp}dkl5*XN7L~B5kXI*RsvKJXllsAq#jhxkh=pXAy5xf}8=Kn$$|%PcCPU z)46O7OO?2%csFHPl^3d&hwj*|ff*&hV#-huI5^oCxvP8zvHJ|<6a zQxg`KT?@!)Q}?G*I#`1W82?He;GF;yNCSLmxFcGrY*=ff!|;B2JXuJKXqdPab4Ji z#b}_E%}s@tiFUGWd3$8MfLr3IouEj?p@O@b@K*TB&_W13>rX&7tCvF)_@35C|4XQo z?$F@X&ho|Fk?H_nLs2vIln&@yg-LQR{Z#l$P6d1DwmY&6)Xv)5df)O3l^I}1!;w~3 zqz>MG`V>e;o3Lr*I^S1rTdoCf<^J(DHNE#8W50l(Q&u@!OaF7S73O*C z61!3+YIoRFX>F4!{uwb@-e^yTuc{kKn`Q0ioJxH2EJ$1-Ex~ts8{5=lDAG{K!y%x+ zou%GmyX2Ld<|GHOay(17P|YYXbG=W>it->%z-9U`g)0=0RBU5Z&b+g|7J1p+>CSV)jg@7!}VvcUQ zJnEWf{$9E_Fb^{1M*BABrSHFlI#X|AWKL#ijhsTg4xW})loVKw%I%a-kO^9-UDN)s z91brhUs}hYXNel-PsX(%B;Uul&<4|0SMLB+{F+s)WkOT6lHOT7;p+-*aP8ruNPW`O zYO8+7B*=-VBP~boZrs+5Yj@SFSd6nTw+9_~Fi-ur_G8;Z5mXzOyyTABTgYz`+;P!l z2HURmTsSrm%|2;f6`4%crncF~Ab-Gh@cG#rlM4d1p?Y-3v>48qc#Cd?TYz4k(PBnQ z+maFn4!@*bNL2g-;|-?Vybm9te|^R)tu+g{j><(3U}b?*-Zn*h!wWE3+UeIs53nuW zE9JD5ynhN&7;30!eiC|I)DL?gJ@c+g2 z(3y3rlMYTm>x64)&6Tf~2H+^NozRV`Ydl&ygZMz2)c5=?>2!E@!fvev_<*j$EFhbc zKcyYaC8@LfDw|@#gqP)yuvXk6v^4z#KM1*lK12%(%yfNi4q8{{p~~_^psn0Ca0j6G z>?*{GKXR^`$03={CH}2?N2@*d$Pmi|zUSK~5Odkxzu|t5d4x5`?B_u1b)b6yltSTO z5uL0Kuu1U;bVA%XwxpxJddF*E%m2q`1DgBL&>l2Wkp7A}V-ivvuOX`{KFt z$s0Vxrq;}B@5aP$;$QX`ENWz%O`a4wv$b_uzueNuw|wl!1S>U@qLl)8Y7^1r-G3E9$Zz7i zJfyKhc!8VGZf7f*qQLrW72iy59=pI6X(U{k0h8NpE&)GzE5)t>UVt;iv%VRo#yMUN zu`l+2f*bnolCGS)+_E;NzidzF4 zJkM+u3sdbr($t@H|IIA-E`M3D`oYTQ;dXP%S`M_yIkXe8vD97}~;>cjFoQ?Pc zFeYgBMk=jr=K$HZ(b_~V%K$gq~MQ7EU?Q1g?`-Yj7$fy_)=4u%PrS7PTLL5DiP}&&Mly3Qc(-A-S73}Zub8=I1CHqLEo>Eu4Wy{IkY8pqz7f#}iAUXK=(hI?H(&gX@ zc@)|iu4bxB;o%hGH~Y6{BHcM@AzGEVY4~RTCG|jdIFEy0)fd_?bDM%|oJQ3mCy@5= zC;1Y9z=sXh8&^m&2(QQ|Ac%vxM~lkI8=~f$<$p$w<^O=MDgC{Vi zr<^b>P-dzVI1kqu1GpyGW9kv{n)pfmkVNNQyce6AI}05pcgtI8-6@ZtV6_45fj`?a znX1~l0DzaMi&86-7W4`J)_oCfO|F49km>YZe2msn{>Ls!`M_^sNWQFfvs|XWa=mzF zZAI>KaR>Nc;{|yIT`Axdo4_8*Ub;l6R@{I*8Ll8rF|(<097>&bLMCl3U4_0BApM^gRwF&b^fcHzjHNFszNGf5RCY&}{r$-Ua9edO zJ;XRPHcUjJDfmRV11@_yDu|`GdIG48*HihoJtQzw$VnsHS{k(&z?=~;1faF6B}N@b&Q)0rpj@7cY=%b zO~zLujtVFT3nKYuD(5W#36p`3qPj6P?caT&#A%U{#DQ>kaz4hXr{(n!5iwRDEf)(V zU@Kc2CPi)LuV{#np7K8f=df{9b;^;`)a5L@CRf2`8sf^7-~sY$!i%(z>?`yJGL)F8 zvr`w89V)(HJCl+ltOs8sNA>gnlCY$d%NNLF{#1UgYEbKOoZS!piodF-p!%w_sSMBm zz`m|-akYz2P%9i3xreond5pN5Z>-?(DDOsD*4h`ZCAvZN;s5Er@nYK<&cHQ{P9>xH zU-*oW-z#y;icTZlxxspZZy~{mtIZz#d@)_I2vLk9bv&nOlFAbc8vJD$rak`df;hBHQj8SQ5Q?z; z&;LiWa%d5@DTQ!OcL42)t^@911F(1azhD;K0U0PgqLXuV54mF&bX9t27SVrgPUj?J zxx4_V=zk6O)JEz3-)ww@yiu(vl^|BW9{ACpC35a=CAOV9brwFw%fU{eyFh>_gmo~H zyN@y6HHa1ADh}LbkUAI7FP!Q9iBC=$s$Jk7i-png-YL12d>z<1++LPW6M*?HjqJrS zakmv6+vNp7?N|st#2>-3fsbxf6}*2H9WWOb4#TG7EzteGIZ5-F*}jB=I8yX2hhiyr zuFLit+y%?AwL*8}f9m|+3d*3|cJgoNPibu0ZSG&{g`){cI>xb(5=0*b57`-84&Rq} zPQEd(pw`*AOas3kmXX3<&QZ`jj; z*+MSdSjzOw!Hz-gZM)=8Vnb*R4R6?G9#C345C!*+wdrii`2D@`c4@7#a!YLZj<|(7 zA971ON;3TK<=DVS_%EP>RzLXMusytod0>XyShuG+?d$XSk-w=!0K1 z(Dfd&aKn{*;TrnW0>OA?_{u;IcAU-*{iscU_ z4jx0bOIyoxO+EB&w5KV-^-buj=YK9SIiUq~SF}n}OWP$T*|HU{M|rVr3ZgEuEusW8 zj8#x)`-T@(4p+fB@iF&AsAHLtzEf`4vd`)o(oqcZqL$8~etG#=SMGBmpL#|Z?>Q9t zjqIH>S8Zzerhes{;ep)Kg$*b~3z=FKF>-Uct8OHk>*{T&iC^Lykp}UuV2K5l@@q4A?!Rz*chSA_6`xszCpoQ^&JTeX&y%(tGk%>sXVMxo7<_Ii&-uY)df#b!&2WAE*v zpXNS$yTvCl8KkeH@wsj~8*lz>{!!SPxn4X!f1+e(26KLMnxzNS&KYK& zTdHrL&HiC75Z-Vz^}Ai=;2+{vHQ!s6|0a$(`2Zx+~`#QI=lvA-e9~%$##>KYCDDfjvwfz!kZUhzC7_~~VV-H_%hE$GTEbQM_E z0!8eNzyw|gvw)CyM-7jm3Y03n^|t`qpJKjEFT?D>Zbu9tC4AOT zmM1(YSWjX&XK{jjbo(utP%_96e$}=j{rcQFVc<)=1BqP%X z0#o<6M6f#CoVr_BOQ)ty5eJdWJb&qS2EAjQax;Ae)nD`xd}t8%hFuum3e-_{Q%NQF zn#MHL7a6PzxrPr0vjUxP+NLuZgipu;nGPw%efQ==@1SRFtZ9;TSh$@>Gke9=WOM-& z%$JsjT9V1?y@FdzGP+S|sB{cn4~|)j6QiI`!G8W!nbvQRUoAaL1}B|kLewF?JLwic zrC83e_YEHe_qqn7Pwgn$Gj$l$9PO00oV)KEfz1zxg*n0DNM&)N=AbIG9mUJZ!U2v zpB>8gmPyr{wUm38Q7w&Cm_yh*DOalq z_Dj+kFJv9lMLrs-Ow}*bLO&!jv`+@nVaTrd1=OUlMl@zlSx?%B8M|QP@O!p#mZ{P< zbdB>1bW`gaJYWgsP4&xk7xFk!Kb)sbF%&|mWxKbjb-mDmI*oS5`xr6qJ{c+2^I3cf z)n6C}*HB+^&6Pdab^0-ODdoEJl6=csK{-dvRnB-Op(*Ti^f`E!IEyq#+J)NUr-E(a z53V?2@E%%hjUFX88RM~O>O}IcoP(7sU0pxqPU?SLb-o*3$X7vsqXPs;T%#8#O}XE3 zll!XflvWg*vy%Cv0@yRPMO23FjQGS<*XF8r^0xXiwGVj(UPG{+V^AIXj0L8q)4hoj zZMyW1vCFAeHY_Vmv@6NS>5=>aIo6ozo6nzudYIqqPfJnnOP7%LbY|&E;Wb-}?ohHz zoNjHE_P3{)Les**dZF6t8)u65QqycA!V&;~S5~4{u~@KDv+x-00FbMFaI9hrIXzqJ z+>GwFoYzvhDApl9CNfiwd;7wlDN4I4m8C4<&kA4V|8&}nO&;s$FWnE!Bzl7Dq3yu` zY*lQTZnHIxsxRcrYFbb22^Un>6T94L{B^1gIGX5XN#_TW8IIOif8ELHvEwd#(l&ZcB1x+~?gS4586D-sMkgI{Y8 zkWGdB=xK&o;S6rL&YV@GsQ4415khnIPx216SPAF;&F#|;8x|Q?*_L_6Q)lfJ?f>vz z-vHMJtgz$*J`GROl4L)2(wA+s1!i!k@Lc#kvr2Vv!%QY|Hs4S^jsHhgp*};&{=H>9 zUyRuxvTQ^MB|mKMlHSAp72At;BHNTyMK6_2^mYVWI5xA@3u~a&)AoepO6toliK6Ck z^CVK8rj2I*v)6)B_=O~f*HEWWx7k@piQfMDyRbEV&M_}=4y;jlSc(@bDr4{n&s=4N z7U54JUPH}LE$obL4dw?jgadhl$&p+o$`#(o_Tsv_Dxt%<2k1~GiGcK(4-}U8YsEw0 zXvs`|FW-uu5RK*_RnuQceSppb5#}p=fEg||!RPQJQBA8J)=i9HI(M3MiH%`{#^?-! z;aWA{Mg#9zC@kj2%e@0Y;2*4tv<}Udhd}PKhk=`n%h{gKS50U&fNsSq5okvx6CbHt z9zN?XoN;<~{TLA`KwM+OWdCOA>Te6>dBgVgQVsOEZggA&$H@oTW(ShFVP0F9fc_yG z^Edc^ZFb{P*MGLo_5hV(t;VOoZPB?{2Xj=OUgi;>yOIyiL+kO4Ax%Ax&a&w@d*zjQ zST2FKIrH(Cg?kc*`X{PI$R)jZ5Cz=PNW6(WS?tEohpHi^bp2-G=pE!??rmX9Il`A2 z-L-6sJjPpQtf4*#h8$0@H2Su>y}SZDsp)8Ww+NFLiC!RVJ8SH%_Z*tq_o1q^kxt;I z<9$>9myj!eOFV_`_Cj|%gZ6Y_mH)s@0S+)xi8yen;^ z(+&P%-CX5Rdu^mOo3O&4gzMIcyIj~P;}+~{N*!T|qW7+(2L7+qz?5a$1U}4_xJu)9 z>G!-h{&6g;@bH;9{UW}5>J9H3s*Z`!DzNl-bBMv-{CG& z&m9+tC`W|8TX!Oz!b6z*V5`D|_;+$R_?CohqWp^<<{O2q7g|U!(Fsa4^j1lftA{sA zr-hGN3oJ9GlGZXQ278P*Vdr}iq;`gOz&@@{f($!}jo<{Snq&knQ}+$iT@Gxw`Vo$5 zx-=oT8C716&rZog9O#N*W&XC#cgvC2my8b|(23C&G}F~Ruv#gt6L7dv37ITC_pXDl97qVQa()MhF4(gqHvGtX0k5Cl z58X-bK&mpEZ6m!Z@mAlk=8D(+Z{RLzCTVx#P5a6_2Lqc@n0+_JzdI{{a+Q zhnceWD;OkTq>eg8)e<_9b1q$`PU39w@D{)R%q?*A^R+C!knp zpRga2@K$K2q`s*g_#S+T^*Ol)T*V$kW-78yYp>4tm)gp!LIGvCv$MQb{7tDZ4RvwJ z>+u)DK)kLJ7hVq~(lxa(V%2Z=>F7}2z|RhJ3s198HUA0DX6_Om=@qhG`|m&%YDx(d zY$D%Fq_IzUDY;LxAH!#&p0sP+T*v?&#A|~ssgM6Z50(DiJ&9{*8LSoxjls!$dO~%Z)#e3i+PXSd z!vuHOcgKG@+bO=`=b2YaV&XI)((ShnBUV8@{3Ee6e{bobw7YC49A!I)jLH9?w>JL* zY8l%jBf&4W+xFA&H`fIr0I#O5$Z?A~V>FakseJ zOo6Qn_sTXFLX*Ih_E?%}iZI%n!Jc;xQGQ8#!kgqefh_{Yuh6y~?rvR?vWAX?24Y2) zY&6SR!JjDRDF&SmkxIt~NMY-Ryi;M7NvIVE$9(iU>RXG2!(uG?5i|XXOy-sjIjPL{$k~PmAmLd z68{qXCX;Wfd5xiG;9AlkrIZcxi;?BV2wO*1wG88}Trc|-zEobt5Yli+Hr*iWf_(!` z+R%Da>9zfS(ll=;$)->s<6Ucenp2h8BSu*UiEWwn-djR*(>-5jX(4kQ7?n_6T?X}X z=fUx1v1+zDhkX)w?`w~~l#iWg>g&M#Wp9Sx#a)5(=w*4VxLCCaLkcPPbo)5VH#!nN zoiNJL4>+m6&(VS#(mC*y_(Z*HcqKO8<5U1`CHf2IaXNTGVthZ*Ti$&9d_Yp7gz;<_ zZ#({U{(J5{?Z7IhVaimrqb(1g&7S65WEK1==5@!@TYy#kav~=+#_rJmvTo3NLR$le z)&0Ac$)l;>%1tN|I<_wZ#tg%dDZ=5veH)>qm`lVzghXFPkc%Hq4g%N8q*r$*3ygaa z5@ddO7ebXJmm0}+U`N~7q*f+Z+XysRbo0Y%xMc``OQQiIJn*scoFqLiiJ7&JJ=J5LB?Z^ zg+jS3@u!->=75{Ii(H4~AA7zi_mHTjA#SX-CtAWy19KfuoenGx#+jfgSwg`;NnfFl z?t?i{kR)wZD}_6VeH{J6)yz%v!-1-S`jJ*BRT~ecryQ{!QP1O-fF8g_p-bZZz!r3@ zN|S#w{dUu-Oob2JsI+dd4I#9#)`mcGXg@YpO64Z#>lgW8z>LGKe%(2rpHzvp;o}{>NNH*?6B`14A>Uq zo3YVop>_ry5bT400QR{1`gZvTqc6z11qpa1^(47MU5S5@=ZUTOlL4nrf?DHFI! zkH?OUoq)4hG6i_jxg}(LBqO=bM8>u5{mBaDjb~=rAvEOSxM;tfAn;-F_Zb91PeNKPF zPpA#ytJ;Rt2)4I0UW@kL*Au3dLndyvUnqp|SB|AZzO@ZKH<&5yOt~d?l9Ty9{5CF% zALnQ-zYUacb@df0FW*#JKx z`!f;HY33EN7Ek5s*>B*n(gN|CrGH6JVXM+mpF_{FWrk6yg@#kh=+Uynb=bQ)yaK-K z`vN_-khI(}`&{ZBQBi(b+76wL|Bfe@{RmdX^%q(C;)L3CLp)3c!&cZ)e#Q6By2RlDTM0(2 zVcLsu!_vCu81V&pjC&MVBqxS$#-%a2(7y^sPsZ2Cy{LMuhECMy#Z8(vpev_lYHgsG zh(&Qq>GDi!g|ofdOZ_B+#B!u3+_|(8dKsD!R;0=83E45yl`7lE^J}?2-T^A*d)lJrjfDJt_DY9%75c?s7oet+ppw|9-5Y zp4*elP|2OLCm-R!z;WVRrSlXz8iysa`cf)<_av>#N26dyY>jQFp*%gbr!adm6JCXwN;_&VBUA6fG3;1uq< zZzI`CY%Te?zS_T3J;Fg1kaO+#$UTA8wzu9|V(k`fuvDqQIv76h}cnu!q*N zP%GQ9&>VSlP}bUlKcU+KN|*7VAKZPR{7-K#+J};bQ(^>W$DRec*lxS*7Oz({uJfFQ z%j`VVG&};&C$oiIJKcg0R1+5)d_rr+PbBd@)g5;Z%gVoI^i=B>w^ zJ|0$1VInr)x6r#p-IMsjdjU&M+k(aElcrfp8xx*BBYqZA*MaICja>Wsd}Gu7IklnJ zS|x8Ux>@K_s1JZC!=W~MrmkTbucrq3Wjv^Gti@Q$AByk>Lo4llv~wYhoJ|$uw`^-H zCj)yN-`NA?$&yClT%wO=p{9r0g{qZ(7ZaqZypil_OAU-O*T$@5AJOAX;TD*hSc<@h zP7E54Z(JeL>70-AGJrfNjueKgt;rUZbdKyS54$u9=do)b;U+&xj`LEm}mrpDW1Q-*p{C5}D>E#7lcoshi7B6F-* zi|>tB(nj09%Mw3G>FZm>pA@piDdy&8BeM-N=B*7>#%5C&)n8C0mls^Ma6Pl>U?5p+ZG=Y`^hyC4hdU(nM!(ckt zLCUo0Y-h@X-t%;DT-N&HU9d;!Z@#5ve|x@b?R*DPCP_z$No;#?AoGhFsBN>jLhHoA zfzsm1(g3MFe=O-a)`*-=_NQg4p|_1T+?NC-M6+m3d7^g=x&>{_E>;Hmvk?lj)kMil zmRPxQ@U(Kwe%W_LnI@kh>a(3>Clur@bPQHP*bcPwj@F4HI)5)|hQ*nGilU?p+c=B| zJ_=>{6Jv>w32cB_M-8|#lN)G6EoGAE1=I`2T=}$Zl<%l8KlnFpR{uiJ>G!6+fkN&~ zaJQpXA|C92a0nHl=f7*HDZrqZn%W-tn|hu4j%?n#64{FE0R&E#kDGOh*igm_91*WR*^;|D64)=WS$SC+depFJASCp6ZxCALUo*v^}4HgHc;Xz-NW#7KrB{6m$k5$JC!)>sdb^I+g+kTpUrY9V# zDh=UGWv|veutG}muF=`2Hl6O&5VtvcJ9+~v$#aRTp@6!_cSg=EKLhK8dXdoHD^bQj zmF{Fr;5T)3atFOHZH4MWVK5D!5JFfDdO^P6J1QM$mTDnW{0eNeG#(3A+eWpNGsNBE z7jUiT4S3IdC+MWwK}&7bI4KY#nG3tHKkOIFPX`)f%c+^=x0#JB=1b9D_F3qCx_|m~@;%+%`wX{1mAKmc5c&vl zPt|zV{=3#F>~LJ8Crex5ms~$JCol+2liMJl)oAXw)b-LAy-V^&o-b}mF_8pP)wKqz zr;HXyQ2ooZ0)LRr)FV;m;2gf2P(p2n7CZCymF1<0tCatAzUwwDUS6NDOKzUBg;_;5 z4CF&D>VUvN6Ofh|W11SAPwg$WKvS`;Za_~7wa{8|w`0p~>q{;|VX~vV)v&{C;tZv; z!GShKC*_!7E8dt#u_lFz+83u}qrI_xx3(eeh}JkJE&WI`1V<@9m~03QG`2sLje%BL zm!#80Go)_hFZ8X2*ZHS;+)nihvM@e_T2tIg=kX6g0pnR~4S0(04(s4PNbd}(?l#Ip z<1{4#j?9m8jX{qo^O7cqx|yy5cg-8w&O}fik%Ez%`4dt_C7<$K4X*EvDixBC%z@RGu|^4riK#Bn}y^`fnw7dZ7B~^71%obH;FPm zN}TMv!fhp%%Ki9mPzPZ+)D3=SQ?Z@U-#RGR3-u%UCuAthvpM-+;CE>_ zH&C1x^`7*($AS)T{ldpK&fO0DpWK&S;fsd;LazIJ2I0Tp zBgk(^C#0tD4pdE=1Fn~}&}V&qdDd4(fy{NKlh{kY>%{5pu@3pF+D2B1`^rx?hCc4S z&x|r1N5(7LjYoBg@-S?&=dPy$w3K+u48|||r+~-dyZ!q!)*{l`|!7b z`D}srGjPVRn~fLE+!nekBGM;({UDF31!^F1PA%x$F6f)5M?BLt!D@JfUgPbjy+^eUcX8^&!78iK~mgHx1w$Q?JC?{821P`UR~K zCz+l(D=G)EZ0lptq>R{VU^ zI5@{OIA7x4@fSUZed|pVso8Rn+m_tiH<)katr)MLP|P;z58a5>lXrrQlumZ=@#ru2 ze6%)RuAYRFrA%O|vD9S8>lLr{d+=r09uZ;wR;TeM7v!rCoySC}o~bbxO%fQpxVA1*a>`4ZZp&P{IdCSfUm^GAUK?Y-_q|;8^lG_GNP-p(?Zf# zTQ=a++AxJ&*Jdq&RuD*W;&Sw~(t@j#QcI}7-w9U|Z&0Y=0kaq*p?%s@Oh7q2LtaXPuNJa~ z{!4qtr|~_C_9k>u`e>Kv>ev-(!>*}{i&!i5v^EL7=BgC--PeWDOC0KAWrCJyZ)!VZ zYgjt%V7YX~y$tOnwdEG^H`JGUKf9FdL>;jWrdk9P`U}VTHfB`8_lO0_)4XH#rSxrT zo>n08vQL;KHH7xdf2Q#(Osvt{Kn{-_|d% zS5M0x%{LmeUx6#h^R}nchR& zu%_Owq0Ew1B#Qj4l$yJx)o|RFCkjjS{Xzp}j86JJDJ_%#p+eX|crM|@hWQVL0es5t zUFh(sYX2WRJ!n8S+t!GFER6$U134|d0rQ%!Lv(gLf`9mCgKxk|{yl-k ze8}uhNBL4=1y#$n5sdfm73?Wx0%MyStdZh3PDLu?$HBhIC!jY8i%cV>m0BGCA6+To zGX6lTZ3+n2@NUFexiU&8Z1Fb?wB?VK%s{&+HSu2L?P#Dtc8}4wGZX1cjxStCf3mHs zaVT?vlVKK)WJhp$-XVlp8%dQ(UzloIQ+|#&!@t9w03HEVe*xNwi3uEr_EM^MHFWYsI5nygdPVAa#%$p##cqiF;KgP)%JSW?C=tR#CJUV6y`4aTPNs zmbs7nyQ(#ayT}tLC^)SRVfM(gwAGBr*2MIk6F!_ur;1!(l^TWbzzE$L+?t!#*@s0KzBoI%6!X*!guOddW|KL@)4^XlcagJBg}H~NMJB* zR%6jMQju^}Gx%adZ5?xS_XdU@JVU;+M-koRoTNBQo<0qYR)G>SPo>8jO`qXf)Em5q zbjg|;z6e!?C&-yemHENJM{pBmCl#rTbuZD*8x1nYZ32$q|5313pC4*kEVZ_=+Gq@w1#kg#(IUkOb@%rT z_kn-fRYip(4Rss~Axx&}Y-1oG(;iP^&Q+}ve$sVBp11FePSkpZJW#evoo#L9v&ZVw zyX-aT-}Cyw&D4!RV^vkRYCYsCMe7CqE(RRH=it@t>5c^J8l9O40f5%n-%F;-YGI?` z{z4sfoAS&RP)3pkfyv4>a4nx~r_d4ZMeuxhZt#%zF|q|i1Vz3JPae zNokNaM<;~fqC>tHx@v93p64qf-__gbNCq%ZQVe@bxk;X$#aVbaol^2dZ311=7Sby9 zz37I&8dX5J=!^JD4kr&cd9f1&W(u=tuAHqqkI@v+g@sIWc!u&0y{(xV=v&N zp!(bqDbCghoulM2|ImlE`=PV;%k(n6+c(9(K=x?q*ks9+)KdN8@06m7lJh!TOUV## zJAUH3k&Db_G)}%Cj-{%UPYS#vcFDtl<$=07Hv^|1VE?#$<<4Z5Pu5~AgM3%f0pc6i zD4~y|symrHplwN-N&Ur6!d_bTBH5M!!MfCjk`%BTdBhcM%rtIPE4ue;uKMChc5 zRH=kv!D@xm!jayuHY-tTi-E>rrTk(HasI2d#3`w}ZM5B`E=X&xy$8CaANJ2cC#na% z3#_^mz&2S=+tyYijh~_`DZQvg+Ewea^fu@P>AE@|ZK3x>e%ro{E9CYgui!P-ZPw{* zMQ5eNsqz-nH13mF>X{PdrRS_Hk%uK}#UP^me$(RJ<7r+^vKB4`wPSYV;H5^AmHJLkW{9!1=0C*w6~HNI!}MDRNUCO!ul z_jI9?1!e9F(O6TwBDBKFpw)N^sG(M}G!~u*Xx)L_(w9O$abA!p&d$w_?aZ~{?-mZ0 zv$%!$G&@$WfuH_&!00IudM<$K~I@nK>yzW|!YEOxuCJ=i}IGts?BGMMPA3|+Cb z;}_wC__wbT(pU;x>&R~m2cmn()sQ>B{}GMYJl}1@M5dlMi66+R*c;DM)XY`(ZF2Wz zmN)1o?w7WiJi62FqRWNdZ@vSV{e*J>JJnF%^V&BnNx_nvUNQ{!U*ewVdCRqN zAFL!>(N)7=85zNU@{KWVHZ23|u%rDO_J`+RSS!j`@)xi&Q&5{XG5urWj?u*+nc|u z(F)%i<5psQ(mimg#VV{TDi-Dm(Lxn|SMgNtn>kptpPz`G-`d)mWPTxU&Wq*lmQK`d zKM%MwP*Lj5z!rOVy5BCGOmA03+RVb`wUqqggSv~Oq3`!{H#@uOQd=7QQ5k^!4qwLu z@B;a*W2}N2$C`R_e?krSo}v#H4|g?hF`cW9#~BHEm$1#47igP49p&JbtuOL#QoCW0 z?e6}2(Cw1@f$vgN$64Ns_R-4ltEDfAUhM7gN<1;RUEP9Cu+I}@qMGLRU()B!PyPSO z3)$t+YMqVnKkHlS+P;nCHe-!e)q;lh%djR$V`5l%RoSvYYWa_px8gtM?}8`!1?==T zqmh(apuVBQO7uL(AxqDeH}z!YHt15IrdG!PC0j(({z{>9t=iJHTe;W;HYhcjITYya zsqJY_sit|{C#5?zTwDP+Ld(!I_TO#&m8bfyzJa)dDEF@{YuL;TEX2B#Z`6lEANno0 zi944DVcn$vg0Hxia2moUCHd}q{g&!v1E97sIy}giA)hBth2|TF+VVH=+(jPgCOZ_IC|7tN`JalV+^1w-X*QX#?ud7BW$L$v*~VNH->1drN_)J>>x6%;5`X@GWCh)FX^cW2xds9 zTe(6haYz{8_o`@y<(pbdyx{I7b_tFQd{9(B%{JS)JbSlXqL#DIidizrqE{BsM{=$5 z4Qx~Bu-9oCio8~P0TJHo9AN7x9pn(@#pWMOy|VL~9^F8@hI;X7-Zp?W_fx(XJZ@SU zsD{nK4ne&4B>Kj-hmEA(FeQ$M{uK!uNElne)d~#7wua}KmWj*5jeK>{D(VSli&g-2 zQxvFNJkQhE9&8Y>kW%pfPe^YH0|~{pL)060Yd2OHVdh%zf;S2i@ycqUFOP2;JVCx! zlXSb@IH@6yz>mmYd|cdg(=B2JBnY_j%kLmx3#GxczM#fyokdLADNga6pa;=k$vW6O zYB;tl<}R?tdN)fmk*0sgGwcc8fVn~UlTB1xvNt$0szv|}@`#Tb zpG{Ly`oehEKXVGMPmR2w0O237TCF&Khx>3zc3NBfAg$Bd%EuiDs6Dk2fui8G zz`4}gVVql!728_CtHS@Nf7`ALPlUtLVXPrZqmzZf@(0xx$TWSkOir!pR+P!X{ecQ) zU2VPOAIJ`1G?W-zSa@6;;E17C*oLHB3XLg(WF$k8SJF?EecGm+vB9AVllU93$u96& z8I|P4^iLu?V)-7p{cM-Nz zy2sF0q;#Q3aXw}ZE>MOaV8aBp-kGKbq(rJA(SqKlB=9ZhI+*Gkfqx=jS|LYgc#+hL zf5raEj*|uvUtRM&YmqMIF3KfKk$NaNUkpmEZFivTeI?>gX|sI8KY}MA9_x#wVV1M`D_1u9#Jt8Ai3*JoLN5K)Qu>iZRk>I zED@djTI&n<;yGx$t+96uf1bQgbQiwhQ^ghZ(Z~hL8>u!mJ*_Fz*?`2i+i}6mbVBm^a@vk=26GI-Dyw4SU$!RL0rM^@y9Gn43EWPsSz@v zJd{scJ~JKR(n49dDVV|) zmTnH0hd1i2gTeIXHMgZX3Je=d{<7pF z3yPAJ*WqGng`V^Kp%c>!%>nU0tpNUMzALvu->O#%FMGFR-n35gzlt$CHgYf&((N!5 zJ)1g*UV%=KU!c>b5%L6RBgyEQ)Do>QsQbR<$L3b(K6-xX3S@Pt2zyB%ax4#4MciW5 z^5fVwe~;ok>W)`N_1lc|Qj<`A2c@ahAa%H92$JmG637Sx*lu`$c#sm&3;KzEGjL0O zR1^w&92|N$oLRWRp>Yp1r0~7gThB$h<=;vh8pmq@mK#vu29n=$M%hLyO*UEfi*?|K zd{bVzNHfMES$^N9i(YtnGo6!dIrNi~Y&#cy5R#YX>UI zusT#s!`>qAkVE=^-dyOqJq|Zer}52H5xSkoC`wjmxi>+Rp_kZPurL3yFbdyg%Q{%a zI-hN4y-~VQsx0L=E0pJm)1wACO4zySGv!60C}{z`$!-d7P91F@>$q;qNU0^sT2;a% zUQf?A4&ZI*(UKp&2&oO%H`vtC*p{kwrA9-3vZ<{;79<5^w%R}NMQ_)?_Y|P5?ZcV3 z+7Q-7mL&Z}90%W%e|C}WCseuhEbPGcxoQT zk%Q1!;al@2`!h@42Y!Vcmwktupo7b*(pBW~%_1Dj?Qs@^?RJpND8>+pk{XpoI|fll z)MwE9{q5DK;w|eT9R$eQmyU&(3TysN> z^)dVfSwIddJ#RZn-j`b{$5XuI3$O{7kiHVnwdd@wXNX|a(lPr4s#?-rIg{EzUMnGp zaTJ_+98eJ!`g5!1hSaMdF1v|yM%T5LEV{1(Vx#{$`u%fLApHrs>(^D=g zKMy~k?_nc|*C{}tc}Ob%#}=1~lf?8k#Yz0<;V9Y$Lewjr&mtu6#>wKERm z>E#!Nz6hrE4|KKBa9YU}-KxQ1Sq@EJhLPH9r*Hqql>QqxtFwJ!k_l9bOD9)BUhIwC z7I+Gc^wmZ>?~hTBmj2D%R&EP^`fKU*P_ch()6t=US`DPR5)(S&Sb}ze>f@cDsQo>u zUhtp6Y3c%XC)J8P&h54@-wkn@p<~3&lIptk_PUMt50~bLc9CzDSH{cU2aY95r!XCQ zk!onRv(yl%vhP1)y2q}}CnqCoZL{=e%x|fsO{J=)cPR5|+o1kwwH(WWSHNLx82YC4 zql)CX^a8D4>RfIvR}c;sTD3ad#Dio;|FmUlDdy7lmz(^1Qar$RKTH- z{djA=RUc0}p;b5;)+6cOT&kN|pD*Ai>m72gV&>A9QUhf`%J0F>wqfYyR0CNC>1`5pfEL-Rq^uSG6@tTX@Om&h zuz_7neMqTW+Cyuoy`uVSAL!GL*>bt%cl<{9fa4wBFZDb*QT$#S?Z5~>RZhgpJ&3)I z@9^G2M)zN&r!?03rDtWd4kt^E@HT~OoLA6C)V`FV)Y!awA;{6d_Fp1ORK<#b57;@U zMd>1qOIape6J~I~uW2A=_R15Al9mx(un+sUo5e!(~Hv%*pW zzzwz`*aT06Hd8C+hN|b(ok(45T1NL`Es5gxm|OCT-H)i=@K9zFF`vB>_Z@BuXUkW) z>!IzIn#3XP7F|(tp(D&4pbq>(c{O#!UcoyvP?z{Ou{+!!jCUJ|;rsHL8FKX$uoOu3 z+iMc5sXL|H54;I&2}J)-OW(ld^%HiuK?h(WT9;z8sy^{8YZz>&9R!C%qE@BjqYTuwL+E-{Ee6g{Qc@J< zGK@_|-EFBZMXzASY4RRolI$kZrnHdyBQ@ps!b95*>5F{Q^Njv0wGC1w{Sm#89vjyq zU_};iu-^GLlW%=vsVuap+C5uu_BGmB&jss}KG}o!*0b%Og6(`|{AZ;M|0;at-^xBQ zp|G33xA9K)Gz*?^)=)t{2>T^Fk^}Qe3(Y;XcKN?Cb=}K28JWXWvi37nMs&(POd}nP z%j3LTYbaS#d)@AQ3Vmth`BDBZq*p+7y5(nXyYE^;|G1h=N%T5zn){)vrR1VCpq1#3 z=_VaFY~pu#*W~U^%H6rmd&*rIo2$Pn?|^Tq6PWtG69kB*>KhNW@sxGLJuh~5LtFF5 z+zYHPf+zLF;C0V&6c4uW7<6I+j&+ethg06Nzg zd{=&no+)1J^HaSF15I!68G&-+81IwfPIiVPsV~wMq?vUVs1urDGgE~bs^=+=Mek@j zJVwCBvysqENht_|Hw?wVEoqDUU-Kj&ido~n%a+85Qbq6%@05kd9Qha=`E^{vb!V!CGlkm`*_eSdGd|0H}q3(EcfSOKhVqDKmWa*u7MqdNhA3L|B(O zQ<43qk=!^EHtt88;&%PQUrmN2i~7T^He**iu0f?Rbzv(#>TCIROe(|zz}xUg=R zuVuN2xS`zQ*YnMp;L`!hK>XS1*4@ZofFqI8GYNOpn^*n{JryuIS0hWjMk~ zM9x$e<($p$%oi9}TIzGFfw#r=Je88C`Ii$;>73gV?v~AnGLymfmSgxPL`%-heNK7> zSGJ7P_rcMgW&lU8jeQ=sYHwXgL2>g-+?vo-`I4}NTf%AXS$Ws6b;x3RIJ!t}hpn_+ zFWka5<7z3tlGEVWE$>%_D)^A(P!>w_=cEkVQ;1S-m7fa=!A-Zwf6X;ea_b2g>1 z=a34dQk>6H$!1I6ywt=K@D&h@-J5$0ZUL`_p8Gq(es!Abok#R7HO+HIcxPna09$fz zO@s0DT-JRp*%4je69q{A=3E@N&;y$MY$}k#Efs#b?FmmUt#h_mE&!{+!_ZY<6F9|m z%=^Xvi0R=xQ}nla1s~&IkYES%ts}*w28moHz2L`NBFNvOGsKE;P5y#+8-3gp>1@g^ zWNKg=+^49?`u6=4obG%c%jRybGsL1qAEP%Sn(!W-0$&5}0JrJlxX$>*Uaw9RzX z5ovgrXP_&4vz%+)tGr#zSNS2r?K2+ zeOr0oL_2=@BBi;~ZFmQ^QCn+^AdX^{sox37*F^puQKC9HQsY*uJ*;(t$6S$IedA%Z zmm`P#L#Sx=TDu^<@jZ~~pnmBKX=v&@UcH1FTu zOqc^328Up<&Q=Akn9`G@!WWs3&|=d-dLMTJ`);k|nPvzQyf}iY( zLE2+(4z|`|Fj&#Q)D&=`SU?`OOvPwGfZa+vtGWK zf+w)MN+a|m^<7U%?#8bQZ5`9N?MbURQd7whxKmsQ>!)Dhv;T+C(@W#>{k!(lu(T|8lt%pBsHl%EG>D^|Ymdp7?h9ikyYN z^mP$?7w>b5NdfE*bjr0KHk53jW`ZVjH9pgFoNA=aBqYg1Or^hb4+>|on!k=nTXuj) z`AlMjbj$Ze386Rf0g%hl2|s3>CH-yRgT;k<`^Zk7V(mEyZue{ki zh?_4j*In~H#bha&YGrAh)Cs={wGXc$ime3SGNuF94RTq|HSb0h?_I(klj~q@)tT%I zB?UiHR7qT`9-^8_PkeXaN|aZyXwT%Aw$1D#MU`)a*1&IEZMY_|6HLXk<#p28;x@tz zq@`nJ@UwIbcx_vPPn1ZvQETk}*VhuZac^xE;dn0?OFUtv6t6emhCugv+{SL z4$`=AJ40Ri4v@6n5O@!?NtiE}bD7FDQ#0#ep*Q%%H^?$i+Z(*$T?lOy|0-V0TJRG7 zn8yxT=^|+8RqD&p0B2?Ko6_@&lpj8ZULS?@>nS#I%3dYPut0 z6jTpEr2px5;AQd6a(F~IOnaCXtq|pe5F%2wati^b+U`q2$s;u;b+F{km=&1Cy;5Ie$#QQ?XS4~rUJ{{y z%=Jol3!e;C(BaPJz;lg6r$XDT&9DUj9&sYoh`+PvF6Bi`qyi3;sJ$KJuNjq$ ztM`9RB2aVu4qt}R51Nn>z-s51@bJV>{tfX>_<^xwv0aDTd%AcQI_&IJ?jb)ba!Ru& z@It9wd)>`K zDO?6tfvW-4N+^cf>xPJFdc&(@L0R$(wY_9<-ciX?P>$JbxhJ=EpE63;q3m3?mFt)hlg3zL z;oA)#VVZo~T~CL1Hzj?^^WD6u)N{f7#lI4{?GJHF{%yc)fke*wG$ZN{OV?VhgA40V!a z4P+43NrPR+y(H&KhG-1EDrMqMRJPtS*!br7OZPi*C`3`Q@B;#J^(mM`zcS9;wbDWZ zeR;oz<#ywL_?N>k3cLG1CFy-Ix)Wkkst^(4HSDzd8vYvW*WftXm$4Y8;d9l6F?HZ< zij;Y-o^Lu;SN>AaLFeo0UUc*c@Q?+_J`4gd_)O$aaTETBR)=3Jw-0P}IW3SqNv`S( zCf(C}uZOsG<^NC5$t;=&o?}U!DN+Sr0`#N~K$}p-wJ+(0bs~HjsFg>gFZW+356d^` zeB+0}XLh}-4Zfdvwudp!kOm2xN>cT^-~9wY>cme}C#ns|e?23)^?YrrAUYpSfh)?1 zaL{y#EqAPAyJE%I6nt2?DS1_Bl2AKstT!Gq&|NW^t4V13lx;njOBu9hT)O5;E->sz zdY4oMFN*a&qEt1`5ooh_p=H0XoAG8Km0t!ff~o-X@|%L602p}>CIAq(7qGb#nRiS( zxf|F_m}jk46jONsvP|kLbx3;5t>r2wbTkNt)cmC!$~p0I5b%AXH#E#)KgR1t zXt^PBCHzXAq1zt^%U%3e@Y|*-2b!Wqw1oWy1tC9pnfk5qSRO%+bK{|UKxJyIR8I9Z z-gf@au{Cj<@fqF#_DQ+EX^kdxR8%pPA-0#AU?cJA_|c>Z!I5Bn;aYABg9l9XyiBac zK1uvuG@bn(xz1Hwye-G11f7-R74tny_aeWiL(cGo9N$NGJ#h)UkGab^xERI1J3<=4 zzAilNNl4(C4Tbj;fBKEyUitTBPvJG^R$nXAYHMx(N#q2Z*8Fx}U+$9bBXJeA3C}b} z={ABwHbTzhKH({R5%)YP5?`*Lm4_o2b0%9|wA6fN44nTOv|_J~&q? z@-~28V3t)VI19k=N&jIi*HDR>?9XDmJI}CH4afL=c6-wl@TGORa0@6WH%oJP1lU7b zvqy?Mq4xY|?^Zg~ecv^c+g3nep~CZ2AN7`dI@B! zmHbl3?ZY$%e!=Z0`$=snr@3|@fhvxJ+;YqVllGhwX1wbEDVEzTo$2PLZ-8cj^{J|KI?qtT_wd^lE6*E5aNQE=F3zrp%A&un(Ii!_Zxnb?l?MPOG6gjWzC2a zq?yp-glF=4#|SjAdpz}s`|gVserK~wo>EWPj$9*GJ?yLaBl$b#F+7K6Q>Ua`$-9gD z0N=tU0Sd7G5~i=P4(b~SC=HoN-yo^K@D%tWu9AC^Z-C;&TI4(gEa^l1W7#b=F`}Ty-xgV%TrB71vj^GM@qj?}T+V#VCD!xVjaw=Wt zVNXjrrFLTeK${8sob{aP!R6H3WYBX?cLYteQF;o&B5kETwprj#wW5~pcog336Wkx9 zq2cPXC|$OhQi^p0%=&8d(OU2lQS+6!l-}>HX(JF=1!M zbnhgcT$bcrq|?l^sEm}O)O3use5USN+WV+hwUlzcF47A@7~?IOD1$BMs3AuBYn~;%mO1J>}YN8Gxk&N8);hBi#|4r&(QYZ}VQ* zk3;)dH1U$-o98=skL{k@pvVN{;>;K$UY20ubD58}i-y|nDP|Sey1NRs!}HvhFv1c3l|fE zP0OQq(5v~G*mJd&A&=^-Z&$K_i&Dk#*|=0;iu?&(rqvT?C^Mw}%$9Zb-1_dd#-F(W zQbl(<1i6>+OZcoY&d@0s@1DjT1iJWhu>bL6q594~*80wJ%mYocT0BFHRG^bo=C37{ zU{y`S^&4p^p3WKBs=x|x*}(t*yHs*;d#=K*^)yu39Q1O$@tqGHM2K)8Z6UpiDH9>j+_5@0eW3 zo@}yymv6cVa|d`d`CWIwn)(S_Z_JfhA36%%C3_{76pl9pKz;7nXqIL2+{ym|L9$Z-mC$+NME zTr%ERUXP-|ZD1q(CX;R$ji<|Y%M9~eqP=M4RxwA(w&DUq6Zm~mTV_3)WU0qbBRYDr z{r9mcNIUKiV!U>a*S+t7?!H1upk+aC9)VTV2avvfFF(ch!x-kUvj<%t{|GwB z->nl-GgHryWtooD1S37|(y#Loy75u33j;`KjqiTm9Lz~F#d8yS$o0k7;S`Gytf0#p z7m6FS$Lb0EV4|J7%yp+KBrd?KLKbCMyr+=&y>^7z3Pc{3i$4hekN8VCnD8sLJG%uL zO|{1E2rsaWL^im>Qkmw}HT*mE84zhoM5dRlG1;`w+$pi8tAF4G{~nCwB8`6sZm?l% z9JJKD$~+4QKoj7*mZ@N}?{{Bm{$Vzcy&|6g_WKAdns2`GJe(&Vk@`Wum|JXKUPl0E z+7pnt>5P|q!QS>7@YTLC>>c3*{-!X;;%sv(H^?tDn{#)BN!NAeJFpx{H$)^=b|iT& zz-uj=Yz}r%A!;1vPht~n!Tj;Qxk=+8n-qzi3pdnW`!7PEyu#m(=nG6Q|38Y(!oR7r z4a2xQr9i2qZRB{4CaIyr-5rL@aCdhbQoP>Camz`XLh%lU4j2Q54;Ze){X5@Z(Effo zIeFjbx$o=pW1Schk43NBU2tc*>E_|`-_9*!!uF2f3hIQqf^Gzi@GbZJmMj7J_(`#{Cd(Y*$_w?O!%`asY zYpb_5OTuh*;mQdPwzyGm+Yc6HXR9Z;e|T8#DXuiGTRupaxLUgoH~tdWh7C8^4U7^d za*J~Y>Y%r`e@KDbT8Nbj8DveVt-V>^CrKp&DwSU^@^j*6HQslZ^Qw@LP0SG+OP)lY zTnQHmiO!>m)6h(&cOsZ@#oGw*{yj!k@Y zGK!z|SKA~eoy~Um?&je_86k(y;%sm=;fDR1KSpW7|D9LX(if=#t&?|wlhD_kf}M$f z;I&FVewsI+>`Q2;M0>mMc>pBAM??Ye(5uudqMm$?x|nr9-UhW3H+r)eYhjYVjWEbk z9*;|`!!$OWKwoQG!8u#?Kzd*iTF-lfu{b-)6Y%y>JT%ef~9Myp3&XjKa5nSJ?7;u|iF zGQGAbh_p$?)VX*W`e_Jsm*R0`IcgTYmZ1%(`DPEq4Rl^7GhU^RITz;ndy3tVlegil05q$4xrS8hj5PzU4 zaHk>;?<{}9Yf;tEi0!Q&&yS5*#Ch01_C2m)@^=Eqwj`ZICve@3t0sXlmY%O>($B?{ zp?l(1ib`z)W)feFJ#ansDt*uS7C(X2aK?s~L7(FWQx)R3C1t|Bi^)((Z69n}^Z~d7 zDMhu&%7zcGU~+~Q(gTUB(mhXeOBQE7K?YBc#v%0>T%&lNbc%l>%C`TErb%n%liUZL z*Z)ws=iu4J(L1-m{!|aO0;?r<7t-Mh#AL&qYskgGGJY~VJz>4nO3zMi;609$k(1cY zU^AVew^gIV$Y?)`0>y`!dEok5>!m)<-OOC$KcDHWS_|yec}9Gv`u`39yBwKB64i=S*@Abt#4jfNS_r8 zMP0G-M~gQx@f^WN@;l;xsA);b#5UV_grimMu&rRz%(&LYw0ttuP-x?yC9gwAgw_PR zvw}ZUc`OeDo2xJM6XY~U_rzp+q_fVx>f|bDf&Py*oqY{ohtDK5r^k8A@g>3K_)a4P z9M%_-zXa;aw~eOMeQhjv6lCa^O1H#?W}&U!J*)*;@br{{%3}Bq9!EUX zzaZs2yU;4eT!!FI*mQOck`+F$whv{(FUfbIKbYqFAI=}>YAQkfH{9C&(A}z_a%c-( zhi+DXf@&&6$l0}?*cZq5HxyKnPva_k$NXg<>DT>t2 z^>2ac0toD&XL$0V`zg1mTkfxLfBys1sXIjKhu0A-FIe5tbuKLJN4b(#4UF1yP%T+1f`WeWF@Js*JTjw(;EyZ(&=7=ECm8jp9LY zk@KLn90n&I@jkXjliR?uv<)fmi>TE!1ICTJzV+ID$HRi3M6=q3eiJu}W4S*)KDkZ7 z0DlE=FWrkKIbG=DOHF)($hPH{edxIGV`R9PSnvi*r*9|kl15W^*;sutI);6jUjgcx zzuiA0`!IC_eoisaD`E+H%sYcn=?A;>Ha5l>8CpC4X z0uRLU@QCPl*$eQBK}_6Y|EiwG>%k>EQ@4cj#yENwM04x4YQ8U`2XOOFX%l*tLle^Q zD)ndJ8QOVnHxR^Li`rg$@U2v)NkzIv$v3$s%gah^iq57zSwXij&C}WUG{7DJb z7yE*vshda{$!sBo;tC2?x@2nZWKLrjoAc%Nfxqc@ID&k`7K2@IInV$d2hKvB$+&+( z`tRy}riOOWT?RZ_{7zJr6{wZTEU0Hk^lR#;4<;#!lw{3#6qi6nfI-oY#r6`*sq)3g5AJsiaJj?U~NlC-eO^0(oFrik9ua|2{_XIKWB)Kib0>`}N!E;nPl!jmM((Gmq z5DT4wm`&VF!-)+Ce$b=!?Qyk<=6YYXiE~@-c(z3Vg?i=M@Q^93@yYXfm$Zu@xLx_v z*}*hg*a)52G7(wV_%FblXGF${DEl3nW72)kZM*9($1O(M14~>RxH-rHXb#w(i*>#B z?lP&j8y#-`F3~Dd&A6b}fkvr&G}Ft1#3KX1+q8n!GWRv-{UANfu|e8QR90jGL`un9 z>KA$y2sNtVd0H?pQAW#vEu?0FU%hvQuC|KeJN~fHm6(8U1CH3Hh4npQ=}7Emdl57~ zKqQ-_?xc6MJbVwXb?jBM7gtYb?R9Ol3sIyO*n$J&-#dQUJ0Pj7>Daj|91{^1DH;jp zNTuF$wVuFx0ij^6xCXJZpLr%QL;Z=p;~QFVIw=|Bg_qgib%g`sEe$X{*C-ZXJ`}gZo7k z?t*x2nf_FMI~%+EFx|!cRtjWKe{=O57zXnI9!=xYZLK+f;b8oljWT~bJNn7+!A%K# zo1_%ziGK!AF4@M;;68faLJJBS0t0~!j{uJX#FC37Lp@B9B0oOrP!|lgN9wfW+ST^1L6EgEJz`j$k_kWGxK_ z!U+xoe+>nI?~0XcZuAfStkeOtir?daaF8~Ucf>NJEIcR@?Q$UX!`bK`PO7K| zJ`Ss|W$}|du>=EO64O0ibTPSeU)B6s=pSiyXbwq~;^Yg+IMQn-cGs(|9W$j8^h&}u zp+;~cT*((9_D1UC6+`EN-3^i5l5(o!(5;y5z;R4SR!kRo*`4+_WM+Rm?=)(6lx9U>qn{8+%S1wXgk?Of9=~6Rh3z;)+y>>9P~VrYJ}5*bn$B> zMrfw2a!!ZFlDOVdN^|h?94GCWQT#xQLrRzwa-LS+rs`7@1n(W6em`uZ5y@&IgXIWt@hS~)#=JWGyi|tIS8KW>aI;LI-~FP zL~Et#bBY+XD0FQ1)6i(N5_((7%WIZd6+cwmQEPzzK^y@;BR1p*zS;S4dj#mC-jU+z zdg2)II(7o>PgmPBggdmEkybWMFjMyzF)XnKT!2L*kJv+KlCQ5h6D(@fPp^R-_kZx7 z3Qn(onE;NJ1mXtN-5-#edlaaSB@(v&um_$ggyy!55y2PSpzgm6T~iJ{ak zE{{Qozxeg;KYU?K3T{@QylIeWTn#FK^3na=eAI7xMqVZO^M`6#TCB{e z>##b&dugYziu~Q&e(!*e@NSL|^vb&_RH}bV*zE%Xl+>2GZ2wEFfGkqcI!F1mJT$wZ zwLw%Dll}1sFST*nQJ74{fFkZ^YAIHkdg$tD>$A6$54Kcy-V@t;>!52xJ;@rXGp3{I z{hloSr+lTm;M?>Dcv+zlzY#yq9#&#ZqCEy`rlF@E9fPMiNcu0arBp|{A9%+8MAh=1 z@C_H98W-#yuTlT7n^LCI*_sV)VCDiOxGZ{v?Fz4F&*A^Fr4Ew+NUY_}3BTNJ?;7i+ zgk!cV3MZrk4ZT7C@wn=uN!nHab3DcCB>aJO)!JqMB{dElB+`N5QIF8>-j4P|Tpzre z@RhG>9f|LOXRrt9pyCp$s;%Ia_H-$QQxap*l7@S;KG$QE`M@>$mguwf!aflNtjV#* z)1-6t7BDl#tKL?z7W4nAq7KiiYjD61Yk6_I`o`=PxW(FLTI3x1NbQ4{qFL9Dm5P4+p68^T5wssj`5wE zEu}gi2G3~yjcNF0?6xogb`n*?W3A7aDrAS?ZSfjgLQf1?vj9khYptJ$taj8>)>0R- z!=&V_ZvHkmw|5GjCMN1LLsx90&=6C;+Cl$e-;=<Sm z+`o{*pZf0#7l}a9Bdj&F(D#-rk6yEs4=mt*RsXcve26wBKalhtW7Uu9rX)-%Q2GK_ zl8;5z!)^$(6JwEAd=A?Z5%@*EE3y-n{JTNARoKDe-32{5+X@XkYtplwI*6_E=>mU0ZPVk@d zw<}zeAY@a?uw}A%Grk??6f4QE;I_&T|MKLw0s@ZCn;&QyogvqaJC-Qwy}U207Kz*T z4uoRFzwIBgz7}%UTfT}!S9OaoShTBPgy|Yz;7ipON#}?w>~(&ubt`1s`3HX;sl?mt z`MXP4|Y+TiHpJZI3}xB_54iyNa9bnjsW#T?fWLC<)cO3yb7}g09t1C=XFCKLWRihro-(<@M~Vb0L<~W*S>UiN#11Wy6~^bTCn5=viR76 zIhlcU+iBswaE$w&ecjF$w1jn0ljnPvB_4;*vt7XT&=gQX7W>NvdL!@?#^Lw|4I zPyT;6J1|L}4&?%O#Rb|a%doskQYYFV7GvYdna)i{`=mH=S>{7yyV%>iiQJQP#C3!h zluhyo)Q(*Y23*6)_IOo#GVzK%s2)PMv;Vl$S&K0Yd>5Kj_(1HE@6=;l+2k1|+EFnv zid;h4@~z1&kf8Rb+ztJc+zdr|#}KEu6fwm=#<^Eo1%CH8vHvHgiY{+kv=?9!_;6jS zXSz@3BfGd3!QN8sNV4x5^4@xzJ}>=javvKD1EKv=O--@lQU`($93>hOjf0cKEbLF0 z8<>yyf*Zg`a%bvU!_N2u%fBeBO@$xBeTbjylr^c7XF?T2P1GUUqHu3yCNMHI4ezB{ z;0&6 zI#=TmveA=Cymxd|e=xW4qu~eKdGN8)U-<#=PVOE&&qPo&D?q)K=KCPN4tub8vU%cA z)dhZY_afa&(wss20%uivvHW&JJ8r5|jwDI#j8EcI>5F^?xMx(-#<4H?-ufMRA~;C; zO)8{GFwIuWBuPFDXOJn#V6H10lrZ!hlx7)C-)i!KEl@i;hXmV54T87uzKw^=XSMhA z9l4s&8oNVImfmX(wMwr2zEZuBh7|d+v@Of|{^)3^53xeqtERBmr6O#Q=cRF2oeBiq zJ&Cib-At*MEnFuzhg-^du7hfUYYUsp_6v=VwM#AeUHfoPOV?s)3hGr(gb&%K(T`vv z1`VwOI@&8})uez5_?knSRNw5RR05NXNLckfM)oQ(Ik5LUenMJTMMO@~Pvm2G$GExL zM9*1ti#dteV;aOio0cg@uq|EF-ZADbG$Lpf_sYGQ!Ag6)4Y-uqkJPn25I$p8d1#tR zpa7w$WIb0AwJu6jpb)9gEDJ5;rYj%unTkLRXO8j>giY9dZ6DDd8DYK&BkXap6feP= z;xEA)Tx)n9brbkU@WL;552X-gxTl6^ym8Fe82ifhVv9E|4*g5saEOtR1$Q%J0 z0tnv*Y!Mu#wKI~i7Wg9LL()CD6{*P{8Vhy|#(1i`TH9tC6ME+kvf|LW1O-AtuEYnrHjM;EbkwI;qQ<^LNo`6My_XrizWT;Z}K^W`?q2fO})zhN)2s>!2CSo{b0 zk6r8;u-hBV6|2gf6_dW0R9{=BG{El3R}V}gUTQoMXWOb4VgPAFTQN`VF?y7HlUNfyZ(M5f1G=Q~OpG#Ctsfbc6}A^h zIrwaKaDzob++PL%XfNfKz;&D?%cFj~JAsr|B)aisXcKX1xUVl(d$H@SuVJBIoNZOG ziP&o!l28X5iuYl+f@-*aXpVkS=#4BEfAXbpx^n_j-QFolldQl8{1JQ^1LJ0x7Qouj zTd+564@@wpg9gCF{U+Te@A%zrJi?V@NSH#7NGg>5gg zmUe-yCJBC?wRR|puIOLm_y{izZMU~p{WM18fDybb@f$oFU4` z!{%jeBi{sC%ipBtLaMrzI%=Q6uH$`rRr@&kKk=;VSdb=<>z{~H+ZbOHpeHa=suXUN zy$p|rzk+{>?Fm*~1TPoMTPIPH_zj#>SOKdA65fhJgl%D(t$bP`QfhzKI2v6oHdO6E z2Wlm8O>7$XnIq(gmy|l7*CaY`JkS{2>-ZworEzgDzc74DO7NYCF%vb(U6GpVrfh5W z_<{~T6mRQTu6U_m$RT8UVN~NRFomr?Gr8kf}5WTfh#wP_M&lJ|U z3s+0D9l^>U_;cW`P6+YM+ymZK-=1Bj_s96O*La92_9svW`*UYpOPDiv3w^PJ~} zjrkv?Gq%>mMr9%J2T-z)*S?}xG)%c>CfnBAcLrKxU!`oZowkL1!`xmv3oV>(!PQZ{^&~Q4}-$1^c$g2kx7gHuMgzW4eiC5x=(hZ6Sg%+y) z17Cx+xVj9FwTt{GE~n2sd&0B8KI~%^+OrYf=!~`Ffz232=)zb08+Xo`?e1!u0WBfB z*n7&OfPqR!U(JR?ool2_`3kXwh=y*Z8o6XijY+cFy&>ksGBj)}2r14E#9w(gB^ zvA3gAQF?xTu9$s~4nmeEUjY(`S>R1j3{66^9Xr`DilfZ??BL`I^6pUlYHA?R{R`jLmD6VO}+I6zZ(CU{A6`wd!CLF+_YP zr2`rUsy!Pow^MmHplGIia+$zHevqCdx%X}@7 zb5>}4uka5%Q*05a0ia!w1UbIYqMozvZ#6HX|M*a_=}un$WUWD za7+ARHhi{<{Y=(rU$`Z9SXvA`;nx703;O4=^dH!aUB%cF1kCSiS`}o6{74xZc^fr2?S7Wro~Ux8-aKY*bHEaqfZOJbVoqQ{)$m1ES4u z8YwG^GwDm{8qZn4P!Fn~i1YZI&{rry}t z8hHc7qJtur$qhyW;*F~=Wn(^>ocXq?1C(3hVrgG!1QSO)^|eHk;wowmJHf;hj0o{; zd6ngT#!S7Z)R9h$Tt{Lf>lxMm8@)H!Jih`u0E5Gm=|A~qMh&nQIU@2e_5dr^%(K16 zN3=ki2$fSHz=JQ`KO6A{=6PB%&!`uH^^V5aG;B`j8K_C|&P-oJ-F zv*HZ=nc5ItWSLo%6#QCUy&%UMwxE2k;pHi+-N0E)%QIAZ%iyW5zHD`i{)C2fWiT@cno{QK_ zTYy=wgrH&KbFoPY!>kl1YR|cTcqe58*nt=i9>vGI@>FZ$L;h!c;Xb>%DAXeBl^m}e zMaPEc>Fd}wN(E{Tw5%(Emsmj}Pv~I>j*B*7UxCQOPlq#Z;WIXlAV%YdK_-6!hio1%XLC#n3BI-tv zFq3UN$pnBOY?KZoo>nR$qwH4)DW+lZ0VoGLnbx5oI=gAcft2d0ikUVINR1w}DniQGLe?WU_k}scI zM_!V3U#7{uJ*icos{jp+v8i!nb<1xl+2k5wx{-wc5}L!zgUpFJ+Aj1=TBpLEMLI#& z!xp%coMFpK@frS)6qPa3c;lFnKpPFU@A`V}SvKta+0(_O;HPUfs2*lx!sVGQua>9c z?}Hpwf-QEZ5xe|p+Epq*$Yim@Dc^zIjK|@XS7W8gx0s7s&D6Ik4?|b{r|^mL0`VN! zOx-~L4D?QDqnFUjQW}uk=&#-l;^h73WIk9?e`7K-Y~Jm}N;taMC)ZIMntbXXlE;G+ z4T0O@cc7wiRNZNAtsdzYupyxgbicZjxf$3;R~5}R3wqhOD}&*lNEN_=^vyUczaUp= zZQ+#QTVOC1!Q8&))CcQ2-+Ev>yvv-Nl{0#w-H1iT6{LvoOX|Mml%aaGMebzRiNtmW z#?%E;;;u^Xxf%4k1Gk;u0^L$8mqevE!UnoJF~5iB7K6>af>#A z&Pl}>lc_H_nfmB=?QHYb`V&WG`jnALc0rrCVR>PsD<6|u$B4}+3O9qA=`oNcG!f`w zGH$vlqfDQ8N#tj#k~7---1dlSSu#u9=_usq;-lp=dwOGT$f;GqUlE;|9PKu|d+#be zs@Xx+!25`;6&G58ti<-s-hre*aqueWH`M&LpwFazIHmB zb9n~ej$Fo5?01P_fnO1~5b!jDcW8+`CCwIZP>$r9+MgylsjPbNKr!(qNT|Kdta&T7 zHdDxxCHA~K43*Xh{W*Q7r@!lk00v8xF8mB77r#q(f_<(LXj8qq=XJpmHZ7Qdrpp9jt}$umFZwL&;Eoe zRt_H_93pDFYJ*4E3ktOJc;QuGpjd*khS~oWtd^e0w6HnlR+rFIh#f$G{D;{+{>1)+ z6jJF)6mu3f=$rOY*IjFs)V&ztj9%Of-waD2zu@l6kM03_doc8yOSpXbCG@!90yWjCEm6;)%`o*t0 z4rVsDk4HwxLgA_GGGdv;-|(US$x<1jGZD5k?2Xt&V2&8eTxMq>3(@MVCxQ2UE2yw0 zyyrAJTxjfdSZ8}jsIwh?nR8iX^@VuAIhwf3Z{r#XtgnMQ$6uMg_vjpNt#}$9#cO`&4J(08MgO%@BJgBDIyH7 zW3b48gvm+EoOiJp?^7jTS#LWf{$xw%TZp)CGU>;UsRq*DqEp-b+o?9T5@e*F!=|Sn zQD#Acoi&QT?J3kOVBgfoY*GA0f~2CgOuPv&%A5wox|*ru z)R-`3+7~YoKyecN3pHCj;){}|NF7WL;1N4){jK<%b{?9lMk)8SYedT|Lqt%-f`}i~ zvSbCmwFKLvon7T2s-_JGpCl~_8tNx_F_0(>lW&u|)l>xV4}(@p8-w}06TPkFDsgN# z*Y`jU{Oh&yFZLs&5mZuPm%l{vN zNGZnTJf>tI^NaR6al;xCrSfjD zmGv_xn}pysKpWqzq+MpqWK`h0-VtmHROO5Emr|1gGt9Tm&+wf5x5@wSxNXUw7U_@L zv<&W$w}v(*DT^FAg5@(9mw&X0>}XB5#kQk0;EHT3X7IJoXCCgr+4c0R9 z+}7Hr32tOFKZ_sDy6~yKt_glTox?;2Fdn%SR~_Jm0sJxBP<|q`*mBTv!M>HB#!>bY z{1T~MLAgecfGY8K{2#>*!XkLAtpHn_@J_hN0a}(lkLzsj2GL?aU@X;NtiX?QOs3Wn zm%PoLxeXb7JQ>~_ZJRDM)K(Lhd4TrHZLKYxu=F=jnQseB;2U`NoBr|nbtYkuvt8p0 zj=g+4b!A~K>IO7{isRj$5#C1G<;g6`nVo1`$v*`}d8sX!Q$y;i*UaC~rpS#cG6e)y z;e*Mcq0D5T@HuvDxFYXkC(vgh)%{1*&*}@cshLh&Y)tcPpqmqZCX2jK*gW{nIhCK6 zk|!32dLX-te7-vBUPl|_uB#ROS|5az0XNfUX%?ar!#lq{{kP$IsuV; z&+fr@Dcu8^yT&;-$w$Td{4T70GFG&k^r$&hKVm%!OAif`Q(J70|I18$X1PWv6R6*@ zS#mifU1<@Fg2$-Gss7Rp+QMuzV5J?p)ZPC*fFpxx*7R6#i!lrq_$}pP#SUQ1x$1WSOl<7(^O@x<- zq=<4&F=ttFMe-KW>HJ2wQZn^M!I7Rd+)(4AzA}=8&$ez8 zuVGGjJvBGjL!ZHhl)1#0l(pfOdR1_7N+Ch$e{hYA>+C%352S|L!c!*r$unGt5jqt4 zg^kK$X=2Iplu|dRZoq$0QX|!&ct*s=S%cv`Bo6wdPn4VMgG3p1NjuR&(irfk(C$ce z{}J?~O69G|dqO106&-(LkC^IeB_h{O2Ro&nan{^1F{K-sEA%!R6J+Q+^BAxfJcrL1 zqoh=|jr)sMo{YzSbq~UlE$am<(OZqm_!?XZG>nfnD$CKq06)Lxg|DBftP;cP*EzZsLV)Vq_aDc7HY4#BLwk} z^;h)Qv?y&pp^5LHVZmk46Z4(BGx&@_!R|;E`6B#>aa@B#XVE{M;|(iVqU|PLN%{0g zy?)5zdCQ!$oi!@Br;$PXE|pZDxE>rBj|XHU?bZHKO_wnf+%$c3|F=W2k%qfBlJ1d)7eTFnh(%Uivs<7r~>&Kedq2dJuA-iNoghenx^AI z(c}*H7WG%~5StAh@hsIEL*<}5p3*$92IN)dI~d5;` zS`Z`U4D}lpYt)d}xw=9752i@fnaq?v?6S0eo?ksZBs0aXE#_9s4T)LgUDQfn-F;T= zd5~vgf=7Jgke%o?&JFf}`bhv@wQwO{ ziyM~k+}Q+K$?HWJzgTS$^U{x)>F=qa4-cRzz(670p$_XfC?jUY4AOzDIt|?#oQ^b;Wur*W)VY)=;mIALO3)UxBCm zCGZtiUCC6Z*nYS{dyky1{>$P$;$Qmwo~G<%_JO@yo+0HZMide1M5h-_b#y@kx*smD zX49XYMZ1pRIKB^QK%PR}EK*v@Q60?H>ZLEf=ByZ;ek9WLyj=&T81%Kszp;*eUgeyQ>SKe$-o;0ETjZ zAvW(jcyHEq?l3kN8K+G~8v`HXTVV4{{$nNUFT@X=7OUs~#jleW1TISsZ;1-!MWdwU zc+ORG1KCHIV5u4U%C`a&lHZy>>{iHN`CUBNNJz-=4|lc)m#UrV0C|KOl=aL$!g0?L zOJ4O|CvFE0N~@7%?_03|TBdsOnesT~p}h~hOr2SHhHCA5E&oSkqP3WL!g1v%bBq2k zFxGn)Z|2)ZluLw_YUEj4x^%;z!v1hR7r*)93#Y1Qy)UGw!Z*-TWNGmnu7Tc(x+s4^ zG2e9ENzcQV0F{OA{8MIQcnMrn9iq=O?AR~p4raG_o!W%VRdSrOqH9`T5V`0Otwm^r z+8rJ((9QyJabcQz!ruq0;l3Ujo3zPxmslY*6kcn4i|!-I(gEkaSbzn9*C3yu} z#TF*+C*)A);g)c&KB&pS^hI(nGvQFz^(nBfc(MF0)B=3Lfb46e96!Fs`|yw2-HW`) z&(L9MV$l?38&n(lz;u#1qDg!rJ%e4TTWHQ-JD*Agkv8aKXGi=|aaGGu{Smr4b-CHh zI!wlzN&T+mrH1iHoHE(DY`|Hq`BAdx{c9O*9>C!8VN0&+>@Vg_pZ9cOSjaqWE3y>`p8K{KrU--70d!ATVDp9>R;e>PlzweZ?qnf2b_wpJB^95xw`5jPa~))qL^*a^gO^@+8>)rflx z&V$O+uC0l3`|PU;xn+I)k+-Oiel$IcuEI3t2@U%I!1Ftrnu3xYGQsoPa*F z{wZu#d7BsLN*r4CoGnHjgiX4OhYJ684su75t~gc_jzmpt3bm3>u%mp9%&c><^f!46 zU+KIewGS@kMHEat0j$Ch%8H$|WwG$hoCA2&~Qhya@TU(o_jOAQ;_da4~BNCYLPPt2J^<{zZ9N@M)3WTX6$Z2 z&O%S7HSrHJpQ+ZlMBy3h)8trbplWlraoqHsQim1HD_9K=rq`pT*ka_FSVqhDRs>yn z0q70Z!`{fsvgNU(QWjE$KLL3o7om~9wWh!Fr@&)BBF3X%5-k2C;*2yXU$$kUbF6*s zCzNo(skq6~5@-PE+}j5(;db(Irl~9=r(*t1Yg3rFzuMD9mBg^6fbE3OuCtBXzztLH z!Sk*8_RdH)e;E49oNF}U%6rRGSAe$cN+-nk#!|^)d1tH}#T?~3eo;J6c2%!puaTY7 zeqfBi0WYktvlq}qomU&r#O8nzf2q|K7{PC9c#^J+ETXP(A@|Ar>jgc@e8IZAKd^}qiQ_C+>DA^fHPJVOxM_Z?8Ds+3LtDablzzu@AvD5~$JG{;omz(l zxkW~XJfOG|R~@xD{&eT6Wz8h#qriRil*k%2uq8@1z0ypjjK|UNc!eT!Qj_dSgdS>w z{HuRux*-S5sdW^7)98zwhx^cK?g8IF@XF#f;a0k0Y>&(W8=_)l3{_(EAlkU^P#Ck7 z?4@o`9U@FK$!~bLHM50!s=dZn75}CraXDf$zUeR&t76HGA{SE#{;DkbN0hhRo6QltePB_>Kf(Gqsnhi03srZwyVjhBh`e!`tMqW?GGrYL@)Pg!p0VS@U+c zUbTR~5WPVHpKERy*4ox`YtfDS%Bjyo=kq5>wUkV3V3-J=Vw*|72A|05pnsIDS}&#& z(lx##Jr^stuRXQJWLot0{>BH)NpisY&NV4vf|wS3NbC;%=3imlqJA-1>h(h(nVnii z5rJngja5A~(rB8JEp-Xq4%R6?gU$El$Pb+b@L;N%aYgx*4azA*FvW-{dK6-KOq-cr zpWPlL*rW1V{EARJ%nJy29htSCOC4LGC-wL5Y>+op@)lMn0MYCGMy4Drph^DA<~Q;VkdDj2{gQ4f<$}_?yfI zN6I~+@yzt9uT6&O$mBFvU6Yzwkm?K72wcW*EAxaqU_fon)Ph&%Hx8D?cX*x?SjzR# zVdgbNijqMUy<$E^+9w9#>GGg`%l&oW=u}&9wD*4$o#TTWT_1+G?bdF$T<->xWUM5M z+O}=mw#_wzNixnvi`w?nc5C}-pW5%df57gS$;|nkbME`PzFATe^YBP*Z?*Gc_I8pE z)W9pFu0qWsmj5}t*ORm{jk?->+zeQjEVl( z+GGxwW!Gf1iEpa(f#bnB#`fFLCz)bA)ySiV`f?`I74r>EJ^p}ZTFha00=86mx5|Ut z_(`4xIbF?qSB_jyoXKj%-lS3(C5{!oVOzQB!CDy3E)X@QD#|rCO#cO~2l}$V$S)Sz z^)pGmCA9_^uX~>O*WHrSVr}tQ*orUAJ;fcT+KBN`iefgs1w29msTb|SlAs~4AU)kv z3f+{Na37^Tj$TdP!2?|tv^CNm@&KCbDB#}OiVc+7(v)4Tg7NGzZcd}^g(IOjKHm_H z?nHEPDn}f>hbDPO=}rg7`<{#QUCZ;rox?nh^DCmKs?ODHOLK^o9EZ?q`twk}Nx~+B z3qhWFOU}<%jX~lkCN-av`rymN9>A)|Fm8(R1GH4=BEFA}wM6P8?1Jm5ry@R^>{rmj zb+2HQVPE1jzM?ovm*OiUY=uL0f1sP5Tfk*uJ$V{j;OT&FgjRtUa8A8%xFRGFPSZMa zeBKb;2e--Fj>S1&as;#;ogZL>f*05f}!82HtcqY-t=s}EMizFJ7-M8RHrhJu#a5b+-^a{A2 zJWf2^Bpq3TUS|AGv!gs$NzEMg5t60Pwt(rEeKAvx+nP1s(@PsAl8&yBj!E#?^);cf z+$fE+_VAb*b^@7hJT4w3Zeh=GIUX`b$L)bXqYs!R*f6dUr-0QQ<%FGvg(8QY zuLT)?N`4<4kJ=`V!t28q$zE<${DaNq+Qzg@i$MwJb+k&sHDNH8<@(NcPQU0{1cjI< zwgj6Xa<=7MnLWx$fpfW6o&Ix!1}Z`u+?-lzAvVgNG4ov z5b6nz^n3=+u_KTnd^P$4{F>PeZv?KO;p!dDVpDljC3%v5c8XSPO-+(Z=p^0G5X9Z| zZ2-E^m7LM0LHrumFMpYCPC(Su)K25y_&>@!wdsig%EH0;9!GUD#gi_##!tFOJE|we zHbGGrd;pCs>SX#Lu7=!6@7M_J77-#;qal7Ts*TSVt>IRnBe?~9FV=ugfcnE-!6DvdTub2u*3aFn;Hl(7*Rku7 zAzr&aOaGrYUMx2LGR<^;mq)5Sxoog6H>-h7ZZB@|#8Jb=ukP&y(jof4$z*oXod#r$*`^Fs(mx^E2`M+gex)^4UXQxYJ zv?nniW9L^iY>D`ViMB@CF7XEej8Zf|-J98Mi5Jn$@n=wisjPT_QEZF&PY$=E3i8S{ zn7RRd6%)|riOZM~&U)MyU%X=~yEq-jS3uz@4V>-x0c3l7i|FpgB>gG(GO-rC0GN?8 zP&{9_&fdv1nQYr+8L|x?!u6GYHJxhg6~75w2ENp8cks+EI7M)qb~;aLb_S0b+B55! zlfWcfv%P|Q5l~A#EdPPNW+%n=(D23y@w;QX3d*)W>g{=%sj-pGzG)0|cXO}RE%GD) zV4k!m3e=c($Nl18d1f)S-Mx_QdH30cj!t4YcuTiL|Ik#M-2-$WZ+QB6?&Pe+zu7}7 zk)V}p7xXV4VcXvLv%5Dt2Mw|)u|vFw%r@+2+XAfTC6H`1?^W3t==+!^@DH8KAvCH| zc*@yC+l~AKJ|n6+*O1dzRg)1fpqU&H5 zsfVr$UX+~9W}2>nm98diIvE9ftdY*s(o124ddjuJf7tSxxQ(ZgBdB!8I`4QCPt38d zGu%^}B0v21?4!B6&|v=;Yh!x6SBHK92N4$XLR>vV4zOC>AV|;$d|n!xP=y-DB#Pe( z$744OwdhE&i{Y-MQ@@Mf;diEP!Djdv(S<)D>~LrGeESqPHUzQr;fMMU<_}_kh(PD% zEP-3H6@0fL2Y-r;RapUxfHeOs{x_jbjx~J58u}}Ml-!lhf=3YZ;pV8~dkuCpb|oh@ z$jw<~1d2BMC&@3BJ;7#%z2LcECQ+;q*Z^|_GMw6vj}{$CRqSuL`dn{+IQ0NuD$(e- zP;X(4yV!HZ^xfAZ5)*BnH%e8nS(-p*1)D;Yni;I%DI)`315_FM3DyYm)M$;}Hw%QZ zS;6yIW%RW)O8jlvhRp%f@?Tm^;4N%laR|5#98P*ocE+r1l;bY64aNO8!RlglBjo7@ zJ<$&oaiyh+buPr^P@LM!dI4OHnGgh(2JkHCs_iY9;vX)?_?EgCcoDNj`uAWf5{{E) zEjcEz)!!@BfJ80Fycdavj9<7LR~r4!u$9ypL1qa2p{SAB1g|yFQa)7IJk(dHKBqpU z&D>V}2CUO;VfM(UAsRX%)+b*|ubk7AMC=Lq&gisKL<`d{sb|s-3<_1?H^Z2eEL}rC zMdd2bte2p@(Lw4I_gb@3ILN*#?oVgAMhTOgSJ7q?q*9?T1G|x4bd1~-xaE9c^c7VX zxA`|Y2C@X-3)$zdqbQ8ub5VXQG%^ksi{v-tUDNQGiDV?=E4qj$LV|okE#tofcR=G4 z`qTC5?qjQ|9LQ@v=k^q(4tdaVLY(JoPgRh&yGH<})BtgSe}&4Q^>NpHf4p5nOWSibXP&;UimGMZJ&qn4N$*hsc za(}iu|JyCACS4yU@53o6LxH8PUOzt6laSTJtED35dwy#); z7%F|iE1D1Tnd~O?lb0uZp;awC&_~P&C5g(x?%F-!y4>(I}_i-oh7bU-tja1 zL)A=CH1<6yo+~iMqjS+N!CDZAcQia!23gd90$bc|3||A=JdKqO>_Z~kzl<2e+%>6Q z8T>hSTRBHhH~Ssk6pEOLkw6T{7VacRmJZ>{oR*aJ#f_SMRIBe7@x4WTN(Tkn1pB9! zanG1&ZxNxxqh*=YTJ!OvP%+AqbD`m^ulWtBZr*OZyl;;CAD|1Vle?At^<||*08^X) zR(9f|YSPN&kAuUow&Wo16s(q~a>x_Ez;!liyEER^MQ+5tM197}x=(RgLVIhjdt-h# zYX%xeHbv%%L1%$7CiMbu*WEEx6!u6HqFdS$#cKReLj}?T{nA(W?Nv{9&PJ_qX?5ZF zltW|Ld|$~|2n^b1p4A{<{yGGny+sL)Fr)aK%)E{owEd)4^D z1*LR^19<}1)8rR8F4ux{J*1WF12S2)pT4zhpl(y$Og%h3fgWs;7>h(b@mdd(3YgS0_T~A**gFgm@>^C(;ee7C!MPgtP=Oj4cy_-OIKCS z=9-62ZxYE2H&o?U0`K4w@CULsr#m=7Q;}TG^`wh*N8BN49lu*!S?R+?c>VFMxjpWB zObh5D|Ba2{b|uaC7AJNy`k)Xs9X-arjq_!7wIxHt;#vx_#ne!beHigFa+MukLO|bi{_=L7TL`}a%Jwr zzSx|y{kNSq`Y1G#T<*?9ck?sz78nF5pdD@d#;(KS!C84CIuNZa{(%4Uuhw-mJz$pu zJ0&?+j2?y@XBvB8O$}3LaVz}G@Yl8gEtcvDnc4#qg13ti-EoF}+E@Aa-Hi)II4F0R zjKY!nnVz{scUOvW2)RKw7Hq9}*uumjq)Z&jm2(}>->NnY&Z9?+R}cVwOdQXegVh$b z)LYewbOgHXxNeUz_B7rv9OhcWoq;ED;bK#5H`5!bMy?*;i?m|L|4yNS9x~@(MQEW=0hBR9tX&0NA8X+%S9$ zULHH>?O}|u2f)rCOV9NRT%7V4Oo>WE&|ueyC!xklO$X$jp`4MHINW@6-g;jZXA*Qu zUyr$owuNd!^U+;^-|o$I^L2&8?iP+MzRK#P_#8bbM`^5@j>;Tqo8bh!C+?MayVhuD zF*2D;WeVNH8Z>hEGz9sm`hMmV;cv`oYqc!r0=e?KrtUexP5dv2DP1BMU)B$#Q%{)p`Z)&PqN2eIdZGnC_Uh3vk*E# zp8%ZovAePMt{;32$18F&IFawwc-j7Y&>FfI z;0Ee2Df&$Gfe|D=2y^@mVVBMA>2KfYJxH{}V0tmSL0OF>wq?RokKH}Pd(d>!bAwpWS!>&VM5acOM%a5zhlGc-}IF3cPD z0Kd$=fbHN8z#l!&byiKj(9ZKCnh?9={fu3et-3qdDMlyla!(X1i{TPnSTV@PwUTBT zUU)Fm$@o^bIq~HGduQ$+SsieV{ja-)t$H5I%%-kZE5}}S9RhYh9<||jPv5bwqB1oh^yzY{?A!eK`)ga0+zTpOAEj>MbooZN{!>A+`@} z1BII^72M?8io= zPM}r@rw8Ik(WO{Cni}{4iE#`r8MXm`;#wCIz6BEDa|AX=nW4x_GSnBK9D*zT=W9JiXt7Q?!WfFzz$y#_*s~m2Ps9~Zr;a)Az0D$J4C~? z*sWwpWv}-K5tA)Ak^TVf^WTJ8z{UP@Xn*8^c&%`t}xUU+w=Pw+abe?zAR9DR$qGRPyag?W)Wti=3 z>`-4rLuAHH@jO4Oi(6ZAn+~DgtGo71 zUmaMW{a2M+PnE9mIqs=QCkqwWAn)Q=s{GOm*i+&uH-7Iw=n(G)>M&Z~`~XN~@A_8L z9&`-e6^avg>t<3K?uC7VdivLxUM_)_-N_Z@7oJB*IkAZ*MF%JbGpX;uzVlisiu99r zh*|6;enP>`LW637IAXq=u+P;TZ^%41f2Y6mqk~7-M(9(V04fLH?wjh`D%~Z9OF!6q z3}Q-=EvWi3CAYJfRLYYUuLW%}-DE0dF?2s?b?Ep32Ccx2kOnI|-M7G&mQTVxWiz5#NGsl)Gm~DJ+}noz5k(qkwhTF{&R>2?fZDE;)L+$g69_%g|r> zdrW((d$1jdB>zy?xlaCbML#6bI7q?xFH{PBkJzo|3m1|Zg%hX(v>eo)zRl*5W31af zh5p-+k$lMQP`!WGyoFx7*GhKe^O7cd#};iy&q3prju4?N!3GyNTt{8=ifcm?)lA@V zUI=v$UYF)jkKq1>2zqOFb99B_KI%`tEhGfzLlN=`wyA}*?D8HqTwphGeVGW~YPgI0 zjJ(YEBek>RwsDrVn!l&p6YmGq)M%Wq42a ze$HHLxYB^_Vy=RZqCS$8@>wFO>XgcU11Bi84WMZ=*V(;WMszm8l{lI;)Ac}~bdSyF zCIg$LioDu)OPpe;=kXvVOjWK9Gl{Gq|752rYF3u~*Llv93NJJ~$lMx}Xo!kW)VXZF1kE6JN6bm@A&n=n${SL8D_2E_@9vQd6tp&^FQRpk2(GgJuxp(7%+x5c zE9ig;bCGX@Os=^pNAz+7Bj$5W0GoR$873PWOqDs}h zWxlPK+CVeeW8&LjD$_2qGshsWxk}>K6qOAu@|J2o!WdR?3Gd{{kbku-C)tE^#InW) z(;B&hI0VTv%@7|YuC+dwjNq0$b5d`edNvOhafAR{ZvkOaQqI4~Ss;qeEhC zWA97*?7R63$73~mt7INbwm>z~HhQ!APCpVyy1Qu&+AWq5c{%2mSe$W5QhS$~n~#t3 z3Sya~DcsBd)waj~0J^E10K210NC^MqYhxQ}XbRO(=_|9?`e`}JEpZDs*z?@>R`I|t z>F4%eaiCBq|5l8-B_jPGI zIvImY>Y>rf(pXcZYIy{AWbKMI1+yHFV+OIml|=dLL6m9A-$R64+V(Ja;*71LYUgz;n?*p6p}6D5sK44P);^ zSCvNODevHNyUhOqL+D6kTFO$mqc%Eagp}tYievD7E{S^#?=x;TETx)>qugZFY|906 zSGr>IKJi8w!lt4dW5^7+^Biz(HlA%$sNZz5N^CLAJfpu6Bb z&Lf7gx>Q|>RSZFL8sk%2R*_3Pwv;p~`qCNI;t)yS*LucHw5RlqH*M z$t@*6dq07{1H+{)v5Ng+%!q^yOjZ2{oh2zcuW7@PU}a0ECXrqOX%;jJpw)t zyD8x|nJC`IF8ii9CaVnpqvp3%deR%2a{qEy^Jb%UmB{=>lo=R|I+#fEEV>37>VH8t zC|U1GM)%nQJOd z9Qs_$sipr}kz}-_CZY>F}v5vwwATyJ2e~y0}{W@T?oHM6__bAcb82WDh$DKmY zHlwP8@VjfX<*|HGnO-u~H$kbGcq+-{xuPVixu>7tP+JL7ByX`0{($rb9cm0pWl zx-y=6&8o@Q`w-WW2x3-Jj%CZ`KC-NAz~&8eT6A#%a8=`g~sUO@up2 zeL`V(Usg{x(oY3A5)0s%bAdSV=A3ASXH#8oCcE4lQtqKWKuS7X}=B!hF~6L~wn zTyDEFJe15dGVD;95=ZESgW0ZY@@(x<3iWlS5qN3FX#F7mljVn!f$o*dLsR_vq5}y- zu$iu|^ivm(Is!HPgtK<=D4v2gwh!SrDM$XPPB9|sSI!zYNMn%iCDk?I$$LF-qk1c; zWGLoo${SClA>KD0+hsm&?P%|7z2;YEJ?a5asI&^A7Tba0+zVu;JU_(1zw}p@iOpW^3Re_DbbdN=4^aR@$myE0$qZYTlfsMC8K}s z&SfC1#8Ahq7s+qfr7%YQUQG7vXb}>>H8PPtUzr?^oi^vn=Zf_HG0Azm_03ngI!euj zxnv)11e-#4px*oMAXTCJ{sZz%B%JLbcLNU)Lvv%|RGBS!PcCE9XstU@``oe-t6^Tp z*APD1wg&e%tFQm0@@&TN3v6k~7vqu4mh5zJ9qIwv7(nG9Pdh>8IDf$~i#&5^Y(B8} zuQ}*?$Yt|+!Z_PSBoN8vRK@BG&81rT{b(&bj4u&Og=hPxVC7vA%seq4O<+G^1JNmR zkn6~g5f^!eQs037p#hrmq|0&>?v&IJyFXgowbBy- z*Yj>a`pJ8zSP)_NOyL)73sxKV zxo>#F_0O5DupVs|*#jz!%iz+1{bU$^8g&{gW_A`+g>Ud7g-gs5Wn(KK#YQKNfIG5# znMa=bbQQZNJH~mywu+cT#WJK&jX7Z$WlYf#h6@Pqvn9UdmKGd9_hBrso1@5C8SCZ4 z@ak>njBS~+e52!@Esbmrb|$A8b@+F93{x2&B35TR@p4>cuCq$?^Sci~%jB5}mtxAf zR#W5oYiLY@`s;MBV(A=bbh>?-*e7EnVlQ~&>4QemErnY8A~{^s&bg)WL0c^`*U`yU z9c}MQ<0jf`Y4+w78XiTDuZLni#R2XoXvm#}^2TO{Nc;A@2<`O9jjjdC{p`hi&qbHx zFNz)DQMS_fjylywhHn#A+vgfHz&@;-iE~`$_4XlXTPJK=46QT{^^VudCUy_2wm83d zLWUAn=CL z{giMF!Hh?sD_nB^-jrWr5#3(8Yu*+;yXY?aR*FOSP@nQDX%(qRED4@c9YHnR8{|DX zSAC6qRs#-cuneXxxq`ifCAxIpGtg*fhnU&c|2$R6xA0DENYNU#iDpB;C9U8l;UB0} zNK!p%oxpmo8AgYtR9?hK`TKy)&prl)w=O`!P5r=Kx(~sJt_20o*hs7hewN3Zcepm1 zlH*&@(XNG%6C4GA>{NQF?To7$8j4-R>?I?D&%F=jeBhoKFYmj$$GHc~k6ZUv>|=Y`LtNtf>|XBlhjP`CgTqen9(g>#uOr$%#*t;7sf&6#!Z z+Pc4mSl~&)6LwTO4jeRXWPrlX`qP^8(J^fJ{?~aGvx?YC%4>~ZB?2XaL1P1PN7KM(U5e|T_M~Aw^AOmY--dbS`Y$fda92%74Fi_w z#^!Ib-Di@Sk<79JgDF=}uPTrqOj(6Kx~`rhpg0H3|EmX8HfImGbZEjyb+~ zqGPX%Jxu4~PHO+tC31rb=cwA-Rze5OP+~>YW5%Xsv>8U8tdRdLp;1EZ*b`_EjgMR) z_B0Lwi=30RwA-dSR`(RXB7?}I`1#Npy}`JYSqgj*4+1Z+5yqP2J>3Fxec*Y)X!3z; zmwQG*7f$c^BvgjiH_o;Rk~eQ-BH{RttO>i&HDE>4onV-(cfHZv3go(@-LuGiW5uNT zteP$1a`Ct1e*Ykgk@!ihBNFKd_c`eWa!!|EEd?LTec(cWN9Qh26Vp}S1*?;KsqXs@ znXX_{iSEXoDpgtKn24?IJ+=r}Fr#S0DszJlIh3QW%vT@x6GoP@)q@!V(2SnQ|qsyo}lK+o`n z#RsC-8pBhzkf-5G>_qMl^aKO_4UrPDI>>SL;V0U|Y_``7eYc;%@eqMl@(pd$FM55j zf@(HC2j*Thz!l`w$X;!pHf4!t9WTl&cx$Silb*ws)o zZ#=Y_`mXyJT?O7(^oU+!IG$Zg>W02B`sLGNQb}RH)jM?-NU< z$&QgqWxSM(0c%>9;>G&2(#@oq=$TV1Uxz$A^k82;&3OnMI75zl5CjmniksZ{jMc zk9Zo$5?d$)xzIQwu>#oy8C{IyK~uPrRnXt_2l@g1%=w4RDyYE1N)7CTuUM1d)sbng z7eZT~LcEn&M^k;4osX1WOS)#w0-q_-( zoz{O6a!I&oy||2AmKs;AX|ohlz%uA~z!a$LFAE&7><|UA8#vyaP5dJ!kh7_k;4EoA zb^&$ZF6csPb@4fNhh6Mnr3_NLe~L^U;CLRTXFN5+9}!if4C02Z>bpDTQDVyw)cu( zdY7?=JHpRE|A6^y8Z?~l11&}b;XU#*pLRBqPa5LLkWkL^qG31lI`*5lJNi=lEa#xB zOW?lH4}DhqHK*aXK|{1=M(|;-gt+b9(_pt>j}z8&zOcFdDXETi-ViWn~F)k8~MV0 zC;mPXEzLI`x3}4q4V&HDxI$?TIFi={b;=4R8Ery#=bMU}!i5}&bj;g>O_Iv6Fzg|k zO^K>?(CxTFw&c2-uez5=8_mO9MQnyLfPWlpEjhiSZvuNAHHcO(B!02f@@+r^D9QWD zSKtmV(L~Cd*#vH5SD^Z#TL9rSAzaZ7=S0K*3ESBkmtS_ z1V&)*wZ+_0@VZMvrm_D4Z9uPSg6$~MUc_9-G!><~P?`59Q=fWmbGoOh9L;{}1lP+L z!8La5klS$+pf^+tvN|>lTZ>BQZT`6V9CMWNNNMy+;%fdp_JJ^rJ&E4Hql~L5M(J*v z4%gDp%ICy%iHqb+J^2DxgbY8r|cr?mmO|@Hz_DOQ*ym zx{<~~&;>LZd#Ibj5vr;46#Ow66n}A8sWzpU8cE(P>|9(oxR?ui8Sfom9bZlQxl+ou zppwm1+!aH+ycf;8p_LNtBGvgi%()@voRH%Mz1`3c>|pCgxni)Y_pOgC-c0JWtI_Y- zb~^0s$MguffnQ++dA_&UKX_qN#?V00}xv3L(r6w%qR2rqfTQ)KT({}xR4C-^yYIP-ruW)EO3 zuuVK3{H`1+{wn8r;yk}m4cRdDcVRR+9#)90VwrDC(K+WP@FE!w*I~=y#poWN2X_|C z1J{_Z*Gtke=y&M8dmP#?ss<6?G+FuN8HH9%j?p!u0raU-lWZk#1h0#y;59_oxKV-0 z{uho!$9_Xoluw+%wBysEa^yTWs;*wgTmkJWWYxwm^7736T2S^&Qy{!ZgTIhIAuWw> z$*QKGOg3MEia?q$9b(3C7n#Alf)zS%TgI|at)IPpgf{jcN-g3_u}LI@%YyBKm$jEg z0v#;&Bo-Q{imFe{@*jHNb4$4eeMf3oJaAj+2>8Yrp{s;0B{uo1gjS*sq&n-9`xGCg z=230vX4E6!dXy2H`JH&{_$&!STe)t#yMw*KHYs*)o!lAwtt&-qNk*=Sil%G9SD}WK z4vA)8De>A_6v^ixXZWD9&s$q+gjm3lbPUqUv(9%JZE9_pd{%y}Wkhp;L+`UK^CQT8 zjxTUe|06cdGmfpAWft|x>c&$)Bf7pqgv#JZV5roX=r8QaN`~i)f5rO|4TB9WBhmK3 z-y&%p%+3joc7+Az$aVdnxWog0*{*VDaF8E?^Q9G-Q`$|RVfwjx#1`NM^=6v1N@wa^ z9!vepd~?io?glHk_MyGW;XW%7UzEwMptiA5(Tw?h>m9s;E53zdU3ro?5l(=j zgdWfuY9sL34B$a(Bb92st+GY1{957wwucS`!_YSHM?Q<42cD!CqJF44Y8Q4DC;4Wx z8-WF(d0bP^4$AFnlVTQ2d{Sfv^~o|SIKkpUdzl4fp7knUBB!Gbpaw}G;X-SmU;Rzp z?ZLMN$Nc*(nbb&OJXs2!c2!hO+m%SWp)!2TD}`=zf7qvJTl%}_obR6YG5iNFXFd*% zHBC|)2#dg0*gx3b;1(og?*>((D`5YsE@3uWU$oWlBu^M4%{~1;i7@yWeiMHptO~f8 zH%xQ95%~ZeQFJ0W4(gj!BlTbM1YH`M4Q^rgSq4xJWC$5S)Gn$(hJaRR1FQw0CbbUy z^bb`|1=a+k@~4^fMd?HlU(mozf2JC`YZ5enH0cW2)KTamgPeIPe3NTdD3p%SHRA(n z&MwRU9I?t_wj2H_{>@4vr4417*piFrV4ime9F>;(uBNh zNV*z^Q3)Xq{}L3rs|CM{zN!t@X|^%$A>@vL4qFsFB^iXb>J zD^4UnP$oIs3JSK-A6Hk;B4a)KW{vjm$uy&Yi>p`G1h zn0J0XdMr2&tu1V%4hxfAS%F@TgWh!@F3qLKdS3_AeV?swTAB*$llTc558ogA0kG{*g2WJ?LklF4@Npr-`)UAwWw#jPa*XsQX zzB({7SxTDe?aB02@X~?eWUGsv?!NDXv(D*e@~xz}&~Cb~_)f}1N|E*0C*RdzN=_Fn zq;%jQIg#Sz7rxfE6|HMbzkFSjWTFMSKdBCROx~buM=B~S@c{|_G^a32XeYl~ z++wjSe~DpWu4NFh&UD`U*mgK^Ny@XL%}{d#<*yL*eP} z4`jSpQ)RH+_orLZ@Q>!9rtaeGqL3vFT}i~_uceAm4a;$10yt7kkMCnK$*U|~QsX6; zxF1gTEQWeOZzA7XyCFOI8@@4SBPp1_TGCzN^yrji?4@^f=n@VFa!hj!bu*cwPFPRw zgC&iB=xJ;nCc;>jJ_?Dl5R%!qWh&T)FLG^X{R|#zc4pb)5kqq5gok$DJ@aE zu-i#%)TZfHgeQg;)ilj#Iu-m>43@#3{va(xN5_V;nI6g-^$hc;e*oM`-vUeH1``Q_ zPB~1ErN`T<`O1;A;6&{>^0;#bb*m)Fv(;!%SzX+%#T6oj7=i;uYfAP8egywbUMH+j zXUngu6F6KBr`}j7bc^vU{Dr8G>i7=LKMKQPXnfQ@p2Tz%6R&pNp zk$euH@}#Pcvc{>aJS$8&o}=6sg?8p?Mhkhu6=NUEJvbIZ`P+`Q>|Qia4T#67Na^(t%AWY^AL#^faYOKXN>n z1a^g=fae8QsJ>X&z`zc}d1SLVAaOvV$#5fXlj*&&jp0bnd)MaRV|ksovF-%$lsm$8 zaa>l{YsGaOTr7NyFTxU$dFVcUHgQJRgC5U5qbsu<_mzj0_`J@_Zr4d=kTW18@gM^t z$Hi@8Z+40GjrR?Z1{MO{sZmG;PDt$Sspwu{7zc>uF+&@AKPy4u$ydS-r_(!bAgZ|g{ zS-A$LkWN?oAw`AN;0&pcE7njOJ_J-ES@*x{^jr>8kOa87*be>Sk2UOpE{m^?IpU7I zME7;5QhH9pYc=n@Na_I1WYP=sQMY(o7|#w7b5z3U9cDZ*-w8z~b=v8qQ)gJHd zMBu?5Bhv)d8H!>tI7#BLG44@p2OunAg@n09^f&qkm`jF{Kgs>rHMTVsX}gIWbbGUyULk-=yR#_O^&i4QAG99ys$HdVZ)nT7}-KLeod{61}_+~tpZ664U zXYefHmM}pY?4$8dF4mQWenP_m)TCMnNjJ3Hr1^Y#=kD4BU91MQ&3@F}U-U&mj| zQG?oGbGpi_32ca3&fHdwioc!0i%PB*iX=HmHR&nOCuU* zpT}1iFR*2W$y_U6wkHf2D!+$|wKdUqqO6PZ=zX|!#yuVD0KD@tj;TTx;_(E=Y)qeOC`BZyuDvp7 zEpUQ|O?Rokj!o(!}zy3dp&N{GZ{QtxFkPRI$=3OmG<4tWFE{D6jyB_+* zWp}v4V6csKt0ZkascZ~)mxIIQaF@dlx#O4L-`zj$()5$}`}KMrZUpkUxIr*m+zKBC zC(&VaeF5ibsjFz2Wxm0G2rVf7CJp0*{Ib#!Se#@uo3-S13W(B;#VDR`(w=m6w?!KV z2JbXkV*ZmFz~%U+8N$SB#J4N6TkLwRNO z7)%Q$79c)Ba5ltFk+)It^#72Qg2_G!KLGEs5a?_S&$to%DpKG$+aH0=s9>EW&X=Zw z)zB?qBkI(id%T+Z=i}DTg>dl-yP<~GpQV;sc81Xer>%tft~L$UR!iCW>J{ep z-g)MD`2kX0d?u6kpQQg*qD#rKYyXjk{N7Si794w3uVP^&=P*&id%vO9o z^)fx1dS$O29pP+DBxtz@y>mtIl_X*lEwQe?I4&MS*MvvX-#nkq&%;pWWIHKe*X*rV z@nq7Bea51IqHTDJR0wRs^h6ujrNBTX+3**JAP*=vauLW;4+hV88{=!RdC~vj|FW@! z*)|-XX*#a1WX6K$$r_0h*1U9-#a zNmOQZHw=p_9FNE*L`Sj#(JtBvj|B&iIhKAVXG#C^y5T%|Ubt6ujrlQbD@CkDihvxk zYjX)=Eol^bXQp5x=VRUBJGRkymUJIL%bzn>gY!)m2o1*|fcUgva>%1rQ7MX#&Vyf< z9mCIXUVC#{PfbA%z+*}mIT{h}$XK)rCPl80xAB^q*|XX9O3{5`AB$g5163)KfH#mG1r0?WkICy_oUHQLr;=prmuLpTgj>@o@yklf)RTTE z1TfW!U&6R)YxoOCNSNb;y!_xYstPia<{f{8Ga{2pf1~QS4v8mili8|bcT`DABpx}; zxlO?ZNKV-kN8HjLY^KJe*Sv1(BbP@p*k?IAa?i-C=yu(Er5u=Ht|!d0wvf&juhAN| zjO{cyS$h(1lh9rsmE93RN>xt48i=dqA-KuAP`;k^1TM=vV{6JTlVA@ z3RfiKK(C=E^&UG_epNHTE(|~SnAibmISMkDtX2H$gJ0C^c#TM+#xV6zsoXa1o;J0u ztUO7L1`pWsq#n^5>S)(rT;u3srB~S_cp=+IT!H`3(${)NisRBO4}}R>6=z9VZ+R4a zpQ=o)ly@S6I0i5!EVMqQZ@cO$?`_BFV}8Fn2>2!yf&2Hp&Rp*5ttfi0))alfu5#M_ zn-bH*NybeXSG5k$x=2NBclb>-AU}Z5*v*g>k(rHnd!=*GEDfN}inEoq&`Zbjkly(Y ztP_gKtV4aUbjbv*1ww(6kBm^OX`nhRwG^)vE#g~?*R`hcMiR0dcT6YFn(j!6mY*rJ zvRg-4XcO>2EeM(9jpCy~JaN4L@c$i62q@_H1INBLvT3n?!p# z7Ha&T4cG+nJ=o2@kelF{%|1#Q<(MI#b+*mECtqe~;sHT5>Y%q`TW2{ki=D0h=4wfF zw7F~t;UCujtVMw?qUN=6_~03QTc8)aN9|+0D#hR_>|5xrJ~6Ne50>~FHp54-os{3; z(*TB6RSUdvfX50t-nqYudGK|el_Nk^-He>~+%?y3dKc%>y6(Zj31UdNMH$!>X-~!* zuz9k8{{;UPgKWL<4*;WXhh77}u#1?qz%dWZ-9?|;-cvt)3xtQnje@}$HKa$u`uNTL zb-5|Q_Kp+L*_kg~6Rh>DaM|qrpVbxNR}P1`A0fp>=o+*RpGux^w6z^0IZ=2Wt|gCJ8@o zuFBrcO>z1>7GE{6dSW-2qW<-^BDUt``$w4Cx$2Qy#i+W_x>Lk8rbtun1X=36NnLWe z4R11c;p?c!<_n?ycvWw!Pz~5(o#Spm-2>{S<=Q3-%?Xr`XL}OeLR--JD5D6`Q$|*< z01qN7Yf1gH%zb(z%I~QwJQmKIKMG)Aq+kYOq-F3a&6RsztSINOr-Iio&3lKhOxYtm z(EmcdNjfWz(l_@m93 z)?z%{_8fkquYo2A*_v6Ptu#|NI=epSVgDg_gerPSaW9+fx(<{(T*_G6iJ#p_A55>1l}}pEpks`;P*(C-KF?u#hxW7$s(ZYV$|c*e_L&~9iQu_<_msRd>Ozp?+)Gu0IFus##L zD=BPsaj#U5SU}a|;Jh@f3i%8Eug3x{Wh)T3?QMd$vCBpj{}XDdp9Rv9A~9AzB{yRA zf!gkS!bxO^?H0aS9AW)Nezt(Rz1%1yhMlG+Sti@=BA=~RcSrV5`ygZ(JP}GaK1}~T zGKhc6rUWUgB@n|rboW6MC_hm>bcFpKnn&8is(}~bGVu(yUstN_GbR<9HSYAYqM2d~ zwhzA%uEp1}K)G}LI~a@qy?cS$mG}eU6E(^q+)!!)7?o?*HPTRJmM{xvkY&sc?=G$B z;7Q^Fv-XFCIqXM&`Enc5&p*Vz1G>e0Dj0h@21@wGI;I4;wxc}z3ab#@6| zFQyt@6k`05OTEQ)%F18{-Z3yB)vmQsFuIqq5-=WKn6WTA z%2ZitjD*1Jv?=mTx`A9_TOenstdwHpEY~ito4=A|)|g1G@xMw|HcH|0v7dZ3@v4w$ znvI;`S*a@6DDX_{l{A2M8yu8aQ{ zL4B`yi61l)Zo-X}nj=?Bx~RM01J1{qO@0{qn`5Yci{>?`V>m6$w%_yg5RQr);cM|5 z={fnF8+~{Qwc37&_=f&V&lOxu7w%8(-WbP7f$b%4Z5k<`T0$(v za-GMG2(Bl7BKxJ?o)_$S^&T{@cn&hJ|;rNy0b!I6etNX&cgo|6UUI zUjW`pM_5vL3-z&%=BHWmkb|`$!wzPD%<^fX>eEk-FGu-12gy7>Tz{R0iPqQPBwcFA0IyrE*=nV{;UOjn3$)B~Ff zF+^)nI`k)APihwgFCKmI^t+ zJ|z=V-g0e=+SvXPYT__+N`4WXg#3@o2+kL#r&ngG2JhiF)m}gWNC=q$<+uU+TCTn`g`CgSMJ+}_kxDl!RzT+Tv~YfkbOh7pnnhbz#z2? zm2A)DeshgrgZMpHkz)W{RT%)r@eU;qmw*o3Pk$#*!#(RQ`BXEdzV;WZ{8D&jC?DHl zi9yCQb=ZBz4M<1FWad|IdmezhTA7dmH8SrY1KktHbf>ix)JnXcwykW*zp=b#PZpg5 zEyMxUYdMzFIyZCFMQF0!+)&H;X1DOqNfJ@1q=vu=k zAr@;O^ho(>UZp(ItSQek2I136c(}Fsre(ZlJ{Q31I@nrS*8v^@ry|QO1L2x7gP+q6 zwBA$>QpSi&{SGDso}G%W1Rd8qFd2fv@X0S)Rx=m zPvngJJsK{ort+vsA;`sKD|9v0&{7M%fX8cTs{4!^t3)Jw4c-8suKct-_k{ujd>5sr z=u2<9spgJUuDbjIbBn$58-(AfZG!WpHry#{so`~CmwJvE$;2op;i39vLNq`XYb;T` zKePw#2>93w;7#DMWdIXoP2`y@p!f;boLeWX^5hbV$Ln4l+{yItrKCrgRhFwe{}tZr zYB5_4T}^G|yL|J;{nX9kQ^99Rr{5HBW4lss#4Slv@#)A~enIIc>^hU7s7N$)Sgr@% zhF9U^nVH0nU@0F+zgApGcP8`jBkaDUC*VdR(^p$8fm@){iPIWMN;UeelvRNH+m@J4 z!;eIZuekUp$C=`xe?9*uo-DjUY|Y5Rst4w>VSa>j0Xe6TVFs70Jd>>t4J5Lci@h!v5_!W&{g!zEHPnbUcn5x zI=r8~f#;^vFhCF2sYi$fm9QfxnP$+2=Hz$~Qq@5Kefn?Kv_NT9dz47{$!vyEU1h+Xycfzp_8rW0c== zg|45pFLyk2DI+LeGdr5?%%d5Ek~1`=w)+-tTLO4wfoI zHCTOVE}l&1@in-g+%~)men{g=oVJ#;AH-d`7c@@P1C5q=6+e{xC(+8HIg711j8HI0 zIRv+G{VGP7A;wM|gL{0dy@kkAOM>h|$HUFAnm`WS+|zfvn{_E zNYAs~Vz&o}sCBtFY5mI6n0T=-*k8409C6;DD0`#m<$WW#UP4!PlWit@!2F&y8QZ$kjtB6bB{t#q!!{e!)WA5KCKURcKApHzGx&!~bjJ3%6p~&`fLw8|O=)ria4nRre(j zBhL5I4%7to(#Uz{4KR@ z=Y93lm1s|;8k({P@F3JyY!hQXPkbH#(o zDp=jY4Omz23Ez5C9#uumw-vxdV5od6oK~{OoMqV@Tq&DF^$lTYmFXk#lZL55RCdcz z>K?cQRciHQ*K*De-ed(d!Md6<(+|O7Y}mn0&;z)o*h@A>!qH9ad1rh26`bSi;z|nt zu0+&B39I23%}fESBgaiMelbH7ImFEA26H5>(wrP2=ody?x>wk^i%SX*K{+)tXSwui<$X-#9>HPn^)nsF;)#Rd5*Oz{L(vDA>9 zBtP&i@V=rCfg_7P^KG!@aP^4IbHIi3CCmuwH|&(LLFlVyM7pMbEv@j*K~Gad-QD3f z;s*6E8G}Yi%K~dH??63QkIW4~QH~x&T@XXo28!F_13q%;N)7*gj7eba%$0F1EA-(j~w`Uq-`BQ)${a<2R)=YNxjD!bS-j+O|xj-)8 z7zCZk{B_7H^iP zAmw~SRmFE>J2c|zA>UiBCIXoya12z%md7@8W}62~+cJBYZ5jn;2JaKw;_cB+=0@r5 z5hp|hZQ?*80ePmMp?aj*RC)1bp=HYJB63?h__8vA*dcDivI6Pc*VGa0uauO(F<~lF zEY`u8A`f}b)2Z;Q)DXU6DPp|oePLsKGiaZ57G0Hp5=a!Zt#iYDc!J~%R>^qDGJ#?G zHVU0kReX*wOieH7(&n5tGf2gcGO)M?nJTUeRF$Hs+4ZvQ)HNdp%OYW8@&)J&2*%U@O8<>cnR{e`jxb(zwUA7DTfDTHuuNv}kavM z3GgM$D*7y5v)DwgQ4R&Hcp~?^;g@7SXbz+X{~;>!SFEwl5vB~y19!7`0Zy+fBOZiWwVD+*gtG5ABxs2wloGx_9R&Ik6^_b@+^H~8ORe~OdA z7d0MATcowR-aH!JYN=nmM?JSU>>kc+@s~jrbX6$}%jXL~EZKvrO59Z1qp|jl!OPf9 ztqJ>s{!3nuPcA)!F0wcCFSZckH+rZgKK+WL#@<(cf=uJa$bTDJfV(1JjFdA)vjcX= zuM^d^Hk8r(PJQZ`!-s8G>|l6|>ofm5vo`Y=X%lXflwenErCilw4%|^c!GnpqLRaxU zwbR;}$j&|{{lfPN?ZH0-Bki6v5BE%(hLdOzfw2`#D4oRg!gVz}^ph`+qn?<;(mH1>w43aHuPdppgPyA2w zmOMs>r`;qDLJ8Ke@f7+aTuQ7Do#4(g(}hWz%}E8b$iAuG!W3l!eqBEpo4|L`Y_$ue zBXA52Yjy;lFj!OYDnvW$B`sa8oeg}PXrVTxmKzsYne?~BSLG%7jd`8=k7nUp%s&Uu zOY7{Hh<4a=vxlyeK9;PdB?C@SbKn|$-;^EJubkVzHJZ+P!U5hB@XeX=?igPF_w%{nmQMtY97M=QJij~3yrdKLybUG=7>@DG9(KbV2$tvY*oCn zCC=X?WRyOu|FK%Ojom57fNXMH;XLlCd7>$UA7vPBts+ruYt3%PavjCB8qKAqGK9pq zWkiN)8K0vi?5d!{iTg!&fRl6`I97JpZU-Av{e=l=x&L*jg*=+=XIM`3F7eq41B77- zwjC`|@`PH>S2*IiFUB*N=6-t2>@q)bou|Km(`^;u5%d|nn!F_e4?O2lA%K)K&C!uk zoMSL})@r8+>LC9>K1%!#&hmHHy|j(A+5=bgL&XiDdAwV@TE0VPh3ZTLZkw2iceU1$ z*R!Pse(oo)Lx&X?@}=Yx+bH~0aFQ__uI?Wy>J8o9=SxF%W+^Jop7_=hbLSPY~`njn|VG2$lrA+!f4Lys(5)nsP* zx@j3Z$*Z)EHkQmKjPeoqpj;x%4e;BRgZoVmrlNLH#$S66E9!>A1 zk=pSLi_}}KTeOBr2H)V?>f1C=_Q)eljqoQZFXY2h#Q*oaZsT2Y-p+*plK8DK}xit(ii-V#dzN%x;I~y{-daiiXd&dY-EqA54%*XAt$4w@z!!HUq2~g zy@!7gUUAbj`}t^FgM!J>WSdqzp`FSA?s;C-@Xd7>;c*Yom#)dpxID(Gs~C~|FRWwHO`a+mDYA>P zkI8%NI@ZR&5#4K&gD>Q${}sK-*a_QBjF2t!@DE!INRvr|B%}7 zYpf-`5B+4_udWP5if@`hQ6=gIVx%U9Wc%4nKc1gC9XdiHcyg$LZ9dvTe5>($#{$dj zb&z(7-yzYlc!_*btY7KwQMbtvEf*+D;Goq^9M68}Kxvjoz+upLYp1*d!+C7i!I!3+x>Ld{Wm2SH z=}`8ZbCGaBv*`45)(hPacM7|Oj!iO~CmIggpHh&c88(%8L<|pPn3sm29aC&SvRm@m zhNI2}cpLtRd@-$aW_k3ib6NC|m4MyG^0cZBH*g=`YORIFNP!S+GB^tm&4aEs+x!~7 z7+H@El@rlUd~I}4Dan#xlCLy4LO&eVWrT#v$S^RdzV%#jJ>q}W-p4RhD$P6_;^UP}$AgNoiV&=BHL zc_7zLtYV++DbK5=W#{L}odW+zIR{z@J3^ghx7f}!Dba_n;H~!I@bYL2>q*L@{4}>0 zw?vkE`YWB#_O|toIb6#1Be1chtZZC=Tbd*Qp zeK8k0#FL)*M^OziUb@5;aZ^npnumwrEdrU|8bLEG8(RXM4=x6)f(6C*p=#VC;9YW_ zu?1adtrlFb_ra?fKbuxx@W8%W&Qr`8QwKKU*q78OeS-Ti@&Fv~jGAwnS}R?Ep?nvw zD*a8P+63p6TIz3FvP#@|NDnM@(zYTb7f+y<3T~i!Fc)f)*2VZ0>TGKxRCji;{KG%Z zJZEet!uF%=NwyP^hHnEp7=ML5sa9`@?MJ?Y2O%9o=efVALS_v=EMtLqP~K?qDqG=p zYze%Z`A~Q>_%dUm(2joQ9f2I+%Ahy=4?Nz}g6=LIO7Frv_OeEw4}*F$mJcU z5sv;g9nYAj@t1!xA5o0$64;_`*}^c!t;TWJT?*_Mtuk2gR{eorEA+(w4R-jAy3MDmY_3%oBzCn7qW5=Vg z;(TR$Lv+E@1)Ly#t;JFDR(Cu1(ZnteG<~N18@|tD%>3*Tw5LyAGZ)tadV3IMe#yW5 z2&P0#3YJ6N$2hWgQ$rdT$F}|_ve{7nIEIJ1a;cw#C z@Qd0Ow@|k`{3zp2^t5$zq7WWXmTFbhT%tfQhcdPE;0&lfY$xXEPI%1lodeB_4i=nO zIt8w)6~&8Uao}gDmj8`98@(@=fm(i;X$H^qzeV%qi~g--n)DT3;C?Q3=1H|T@gLuv z*yg+oP<(%3B0WP|O?${;9<%yF{J{61H+a_?2S@8!Z`yclPACSu8RQU3%Q5AsgXmxJ zYuHx%Y_VOI6RHYV&OVYmnqOtUsGT!M$pg%2>Zs^f`wGjN;B;Stb2)v4+MWFcOG@Tw zQ%Z?EiFON5GrQ_)@>$&P2#>cedj$tvO+5V!4K#*-F8vMK!Y(#C<#`$Xs1epIbatqn z=nV9RtBJ8}nqfHHTNa8%WF_$jT_2nz#?gBLKDaVU6``U@xKehTnZP_%amxowSK=lu z=)Uh+fKl{EqEPvctaIe>G2{esHuc@#Ro;o+h%$L`&Qfx@l3^-L^52yj+)(Tt+TBx;x*Z)%+}1s3^SH2DpOsZf{>)0!>ULFXK_FhMOLyL&U)Kk2i=tZ>?&morxMRTQer%smaYJ8ID zTXYRC2yLYrd3`GyIl2o=G+)kJWutv9`8To{S+Aw9g5(#Z1Q}(!1UKP6(LJewe5U_S zba~)OcrmidRz#l+&hhhn2U$ZX(&q$PP}f61i5aMl?g}M)JM&T3B{9)P zWsVRXp=rW@zV1R_LPs9<)P`?|W)?k7*)LYKG$&!DmV1_>ckMylC3{$~(AA73s#WZw9%e1}_FRUt7a4DQRWg?QVeuMl`~o0M z`ow=EA zH{AOpr{#XaEU*Kq_}%tUag$y5@V}8hYAuO(KEo%oUB$8N3ixoOXCNQ`keQUc5}9P5 zi2Tj?@#hjvL+mK=KWQA=j1Ch$WRGLD=H%q4%C-r@ZHXgs=oB6IUm~sYf9!dGe`&M$0&A*Gmq2T|eH}5M?QT@DdvS!a*LW0@;S@|+)C_FS1j zEh_pUjxV-Tdh;f0x>ANO48PRV<|G>v>;NxD_0C)2)@xzWBQNkjlegr|yuE8+iMe+4 zj(H!@R{Thh)uV{zVx{GuY>GG+*4_s~XH{}>=Qx0gGGP4M=x2axxBjgvc zi(v~njeARKGB=Gj+JoOtruj~w5ZBY#P8t_F?A`9!1gyd*Fh@*N)ynDy(<|&6I!n^x z>{=)LvA9=oDD{9|N+n^TunTNk`kuQ)ef19awh}8DYw%B0(*HySgm~*m_gDM?iZie2 z>h@UR5gP~l0K4-L76bMpX8R8j+lZG~HaXlALvQ9{&@uML{7$pkwx9lip4b+HG{w(p zrXvAcMs|kBnFe$3Vaaz5kI&x|+-f^!DYTeEuTdYf&X9<$WE*oc%@B5n-Ky<6J9E#> zn=B2vaeQBSt))KNRhgKymaS#&f|rR6xlbBrDonlg^tBAtT-V*%*UB2c7_M5rTyv{l z!4HL7S{r4l#1E=jw8g$O;el{pS1c|AY;GTU7H@*@w$>$l)J#~L&S;K`;=Jow^NRY|REZzB;}Y-~dKjvV)kU8buY&)MMu9}jb3R;e zXoyMKgN?Rs!+)B8;iso8M+alyf)R(w_){H_$_29Nmgu~!1SLVqZSZ$;S4)ifx|p6+ zo!jE^W`gLuh76r=yin4Z^&$s=b6CS;FTn-rPsl%f(*r^A4HNP90(xpRo4>5@;Hms5 zc&K9;T!9&btT5yv&nTq$SK^{(!K-9!NgcN)hakm*9MZhEmx&cdOSsU|(Pqem@z~5E z#wz4MtdCNO@@vV%ewa$FGHkMU1zLw<9TkEYTwARueX;zhQOU}8k5Jo0o3ZVLNp`E% zLMBReG$ZgLxV|toFs1Cd@SWdNG)L#hR)l70DV-saeIiL+(mM+phWkkKh{L>Q%SFaJ z*Q5cV#{>#&Rb~aIW9OABYK8J|wvZT9E*d)8n(!k+lM7yzwj|ej(y=mYeu>38%r;2; zhZrd?VN^8qv-oSo5tyUsle)kN(0IxW$#PN<QWldo^)mesv}j5yPaRd$JCV(5xr`9->esFbi~;p z$M1*){f953FGA}=-~1%CsOcQ;h$q*zi`*~vQk|kVla4lb)s8N<#`v}xj{uNHD*Z^t znL>tX(m6Gs+u-bKdTCKYO^w5~N3PYx5xH6hT(nnf+#Llwi_^i?V4Sd(CAKbu2y(Z! zSBc>{*Ksc2-$wk+hg&?{WD{vmFISMY&IT0jj>#$8kuhn@(*l6=a3O?~WnkUA1OE)3U_k<;mF z_~R^`J&A6m+5*XVQ>&oP(o6wsp?0DXtzB|!^9uU@o(cJT&=9lS*aM%NR7u`X=*;8r z(M14%+tNREnRTw$o$;(>DmGN>85g=K(8Zo$jp`>s;%4hx2RkF0c_HvRU^Zri^a9A{hGQT!1;zvOpui?0oP z6FFj@0+u1YZ9n<8&d%EQw>)#4xrfxi{+w&d|8CLa-H@|}+i<_4*Y3|u0?{41Y#~ES zxQRH(jAQ>z|NqwZQ23@Y2p_{GB2~GC+#UL@uM4#u`qL|+keGlhf_B=T7tJtansg9j zxJ`HGtHbYrg}%p9W27rI6jHS5%Mbr)3>WJZ7ol&12k4P$5zMZ?cCsf-TDKT zBi1FZa{Yx<&~?GYJOrC?N!t8hkw&5QEpBIA`Wr4*>w7@*68kE{G_J46foW(Hd{ntv zwG{r5x* zEwj|4*7Bg(PuI>AC+F-jO6y8`i8lJecn2z||H%s0!r=eM;MgIDxG;pRT$2%YI z6~ORtxFF7lp#0M*&~-138MD2FX=@t*n|YA@3~;^s=&Ho{pw!t{zJ+9un2 zqcg%Sv3x#2Rh4^*TSVUNnc3My97EC-EmK29S~n?_IoOlNbOCyA17Lk*0MX4=#7y&-Aw$s?##t$4 z;yCTs;*FsSGDNdnY?n)v6Lbc?gnz{{2A$@{0*r^?t5R<9?mZU46g1Ou{E>(r&I+cg zN6V^ux)=Rqw?ox*`w5pnYu6BS9^N#Nhovg(pkHjcfr@yVkWF3pMwJ(2wbCsB?3nBC zh9JVJ&AAB+(q}sSWfMgdKgGqW@4${t-l_%5bT%KGY6RKYP%m~7aFWfpuAm+fs{Ic`MXqbZ1W#+?7q+e&CAMhO@d^2PRz{aX zOo%kMCPsToCEg))eVbFVAS3Za^Qxlea%1w>)NjOPZoGG$)KpfnSkEWy9B|V(j?B>- z1oO!2TFbpXGSrhQ6;XYlBhX&!gpB*-E%`JR_0>&ZZqE%Qi2=Bwl4I*(?T)G->+kOy zWJQq>et;Sd{1A67t!GWt`gxU0O}sfg5a?i^?)%JD};`bC_`+?K>SgH#*1~=05Eiar#E4zI0$Y>%u|{K zW+}^@4e_SzR<57tAPX{HO_3$^H+MhupGH2q ztNHEjYe}hL9+i)QubcM;X(Wl_#p>Gpzl+$GTOpkwhnmWz59EF@mv{qT3QoiyJ4yTr z{?!*YeCI}69!npobxd>WG`AN2&WPc2vY-2InQN;UsANOgJa7?=v^ed76u@@*>T(% z&DgvW-$3)lPa&Gyt<>CuW=sm+QO>fG@)+Le@2QMHD{02`U1BYMZP7E{8MLrf;FZ>g z(1Y#GxCv2f#ABJx8q0dCC#}~S4&f1hku_a=eUSJZL&F)3z8gE)P6xgj|HkaLIiVKj zr=nhB>cxjcCGQ|I*sth6@^kWQf%hV4U+FrP!~5uTDVbQ$XNO5eD z;1`DiCMkpMEunIBzLqAcih8nFfdvOjCNFjmV+U@3bUASTWy4$JXVy+Eklytm`K_2Q3-{YHl_DNsBy~sGFxxpK(V_k)1i%Wx@h}xt~ZSo#Puh=Wl zB>O*ksYY}_?h4#!h5noIV zhW862Y>Z$v^vP<;Ao5S(SCm1zmn?z0Gk|1eezpClzIAR;r<)pxdx55w_29HnfVx3$ zV$Z-YLc_o`PiJwK`DmyI>BL)Fzhn1x%>&n%x3-hmZu$n%4w$Q~(q#qmlLo@aGDQhf zYXX6EBiyMVK^mR+A1@iEyKcbQB@K;N0?EEY*@>D==WyTAVIU8w)XqTfKxfUfRF#4B zUjPV?*JyoR_zYyRy&f`!9c!FtIF3xFmKJZo-@_Ep4qk2RYK7Gl2|-)He`yU6L;4)V z1OG#J!UM;OCT^z`94)Zla{K^fg+eEQcy>Izb#<9FujzFhlyTrU}1g8lz)e$HQ~M z;og>}8putoWnyz{dtX&EC*4z4%XOX041Q=s=o@?(e!~qX8Y#=-+aQz3>EX7}Fa8j` z3Z5zsRwBDc5U0ud>T27u6_wz*|Gm3kE4G zd7`wQ?q#Wr<^(bPmGCVx*?Sm&U$Blr6eIphe@!?qzZMZ_nzbo=&-ggFXLTR?1f3vk z+jlwqLT(^fHSfk4b|SpeaEwYu`i4FdJIJYg8uXlP6E@HTe1DL;$XSk>_#n+#R@s57 z%lz#cuft!9q0$FtTR~rPb|z|$LuXJ$yU*BEVr{4&Ji{{&Y$tX?`?GzS)9z8;p8lS| z`@m__BV=33R?$T+WIE!nc4J~~@Uw0-TFaf&_>(UY-{HQ37W*cEB0E_7KQ-dcYj;31 zJJ2$Mm=jzWOofNCJ>#Y%5&MTj4~qXPu8b}$Y-#!z>1!-18BNw;`&cH1^G}#$ru=-}G3m}W|F1efBEOmJ3gtR1dKs(Kx^o~1p z4ch2jXKP06CAQGpr1!}e{2clP+zh`!TG*;ct({wdx(Tl`s~WaT740kdc5G}t9G`(d z2EKw10;lwU#8)QPgCxp@B1|k)M0aE+8y@?IAa#L(8ee)oI}Df@?84;*l$4Itb10Jf z4?0hH52XU2ZHTX*@s1%CJOO0*R3Q;w1~1~jN$F5au*kB6FN81q^H7l=nz$9J=fCAW zrttC|^T@y)^w<`LUeWq5_zSlXPvZi7i$X6yQ8WA@(uAbr)?P3*m6j$jDPXFShq0L zSHp01S0BfCZja*`VKe@4)h#N3Hdqt54kE343{)4vl%3LCI#0~=%_Lg@IhI9{=jN7s zCTrJYj?&Mc1`6A=@UMj{@m)eEw6$t#Jks?Sb2|NuZx22T8^zw`A8fx7eqcNhtwFxn z)xZ2jq#@CbpQ2^sVx?c%T(PU=vhRhk*(@?9U9$tM5bL`lr)y@9DwY3n8z-@3O|Jr5nJ1GH1n1phl6_Y%;#E zD3UIDp05oZFj?64+}v;>d{Ahp^ekQA?U+_7)`z>e$0K+_`vPA=3EH-ZMrzBIfE~7E z`XyGK&!-kP+^4jlMn`+H2OXi}`N(Ug4b(n3$57e%x->`L3%hu?I^F!c|EPonM>+(! zR2qdZ1$sl>OP&P2DmUB@gbvgrdxkpLHPv4YUYvQ2mXQZy4BLPAcX=P@)!fIDClz z8*W1F_H^`Y!JF~N$t%<>Vjyse30YT2)tLjVY?{Megdg!=piS&J+gz%nW*u9=)M7T& z_^SD_m$GU3ldW$+n7Gd!wN7X_S7WlrQ58!kDy(S|c-!t239K?w0Jh9elYfwxx9O-~ zxTE|`DJpw#RJRiUY(T`CWF~PA_Yw!i-q<~Tz`ItwL}egVkOSmzris*3sjEH3Jj3wH z)__?ny+bRicWvjWXGj;==2^<5P}Pv{6sFEqjsVr#m-3g2u$voA}d!-Vup;0s&9 zYQP<^UzZu0Qp_cni`f64rIcjhxpLQe1}B7PTz4O#*}nU$?Q3sgD=Q1})y{aY3mIb@ zs%-=QF*d}i7!8U0Pzt^D(xCUf;Jf9?*qd;#{w#|xIP=Bw2167VV=$ug``FQ3+`ZV zOFwWAQBA%#pl0qAoQ15{6HIHgX zykgM_7a^bYW4I}%LS{foDyDuaK}6f;WxTZEcx9#f52ZbbvC;UXPDs zTS*l8w{c)vjPsk}Ha83TH8@x^Y;EFYxgF@{Z)xA)*ZIxawV|h$9T*j8Z}eF%!r#>| z0X$^nrWVajtBN#dM;hk9AMlaVS9~5{$lIBvVg*)5O(`n^7s{Cilvpn&Thq`CX_9hZ z%grVW8So`;xI0mt5xM5;W=sMGH0c9>hIdH+QwJ98H*}`P@ORPLT1R=B_G@j{vebdl zIKDfVXiO^m&2YlLD_CIeB`LrwZY+YpH`Ezo89tLfWH=7RurD<_;VrF2|HPP&q7D-I zX;_8-=HG8!f=|Z3lCyp3KE2QjX=3}r!r*M%Q|1Z$su%+|pkwK_+CfXwjv(ySux4SzL>?lxmVrCgYN(LUCttcXwIb;h(>^ zz073teeZkD^C17o$MU+0cZi`_PjLg=9nHb^ko9xtLDe0D_?`5B@<#r${dvhEdXG>8 zP17)VW5PwO0VNf_Doy1%VXEK4)kb<6boLQ49L^)Upx?=SFkY_hc)_lWYmxZV;*w|C z>!FWfIj24N)c@H3(`zChE6rS4>T+a(e=a@Vdfz@v>u#BY_TVoW>jf)?w+5@S5A*J8 zeklk}B3!T~YAtucZ_r)Y-Tb?#mvJ^F%&3N4b*spVg!jrn!X-!#vl>FF=<@M|8*gQp+5ul|Hp=RJ#Ow7g>*aEHOTVke* zPf*RWLt87iL|3WprL!dhSx-q-v!Od^n$RK8-yKp^fvgM7MO?1r-5Zf5Br4t@$I`gB znp`;$fEOEgTYq@#iI>y`zH3mdaUhz*ZzDV7-j=WBn{XBZU=dBfIbPAA{5x(V-2rP% zHwRbYz=27&?(8OEtI{%%T6CD(@2VrV2lfKDo$oa@P%HSL!5FXFY+lwD$7ZsY6NHX} z&rv7qusl@Tc_OJ^O&f|wjhz#A+8XPAmLgVlEG@L@f5J zqF=qnZE?P|qH$)uH9Zeb*50AB<=? zA0H-c@H8Xm5!0& zoLHV62SpI$?6c_@B3kf z*3UG`w9oSneCXeA+2u_!o$y`L&BjJ|Enp~fi9K)rgJ{ubYy2Am~V5tRGl?x#9q?Xq%M|<1>0<6 zW2alzf)lA+(dd%xH2YVgWQ>;jI23j}hd0SZ1K?HbB(RgGL+y)R0PhY?gfD7!bv6&A zpF%)GnDB=+!^@N&pod>!`^AL%nzN5AGd&HwcRbIaE$m9&#(>}_-7m9?eWQ&PO}o4g z>9t^IveUFNHUke?}k>4lxzg6=}m-0 zznRZ8nZ?PTR+c?{!@OIriqdkpmi?}4zI~^E2Y3irA^vnMG;j3J64T(u_G3BCO6#c4 zxhVyhVqzK*ZG6v4PAwN}0a(m+z<_>Zu)76~qu(q^4p;6Q| zXaxD&|4N*0yqjA?>ffY;*oC<)h+HU9l3Q#aTF3);O_R(608Z~S_UGO-EU*{FoQG<1 zmk>2*<)+7v2}Oav+(@(*dW@dQ>h9yhedeaY7x?=ewy0>?Hg1(T(;r!Q*BGYVLBrGt>t%3GG#%HCP6i|8SFC{j zC6=Jmvi=h0u(@h`Tw+h+tg8u#ikvh9=*@HPDa6xNy8}0bFYI)BvU`@delUV;?f41R z42*_fus7{DCCy@!Yq>+wu27l-71I*SfK|4=iAh%7Vc>Zy{K^TJuSCp^x}}|VQP2tg z>aGf|o8hg=v?Kv;OTTlsk83ZSrA?e6(UHe9*~}xuLGVZLy8T)_5)&PH4{T?vX-u|m z5n^}$C-#huM7!Yo!9Cgz0ru@TE#U47KaER)`pUFD7BB}Ae8VgzzQi&#jAKt0rl!Ht z0bxb)OZu~Cj+$({Y#o6#c3+C<=xK_y+BF^hEjO`6I1AWH_ylnxnHqgWu8C&`Gjk(c z@AATc3hV~caUnIX)TI^87QWj)@#kcV#SnQ~OUrxZjDez*c5oLfZEfernbYb~;1S!B zGCB_{Gvd#)w>@G)DKkNzQ$Fw|nx86PtttNQQdeBG%wwYXDpY&jP`o4Qj!H=l1BcK( zwxP}@1zWlPa!<4nn`b+LboVbex5Iac)dQ6a4|A~E$TJC6pm$kDvRp6)|7u^)yuzoL z7r`fphT3;m2r}9}k2N6M)caC9cVF+|tbT+E`-zt;Ji?~HZfs%h$C$owb-n_I;1kha z#>mW7#ANY@|6gv2P31B`mg{F(!2V6XCzs;woV#M2+^b!c*{9f5j`lvpjMhW=Y4dsl zFp#LBa5J_mm@iGL5udk{TrF0I&S2>#QA<+Rq7iPQj&d9$YQd{O ziT-4mfsck_&^FX6pp#ge4kfqpsF+w3&W#OJ1*bR;>fF#2ex9W(Up_n3{)hR5jpwh% zf$TGKT|mj}5<_9B+TE=Y{Nnf$QKptAz7Zd3t;E-K3f~@Qv1@Vv0UtD5{&B+{eR@x0 z6&2N=saWENpbho3#0hsZzs_p|ZmB$sejx=FMInkt_Nqir}&KwbD!G$MWl z+5uf|0>cwU1qPKPR0TGj+{EVS8ONHz`pPz;Gt^Xfpq-&$X1{qjIv7|XnWV+8P%_#& zL};jQ?J@%vu97`JfzxS=l4CNo&Bwu4q@Uh0zbt}M017FXkM~lVISJD|Jd+wqRiks+ zZFn`$V|syok+U}$>tl>Z<*xzKe|dcf(GRStJ@>uia>Nu=KfuVV{IBT>(rNJoJW~IL z^~4MHt@a|{ocxbqLq@M4#TJ_?v!~Tl0xY+Hp8B6FAE8~|=GY_g3x|0A(kBknxPkCF zJm2=olfum^@)U+c?fIG|v{Fp=HZ|p2dfJdaU_Mbp?uFGVEQ>>d`;?iz2@FM#Iz|Rs zT4b?~~> z;$rT+_@CspE|MS79h}o>OIEYOzs!$7lwX>^3S5e8(>BI=)n#nhZlB>a>h*oeUFbfC zHBt~XUCI#aFsj&--AYE5OhVJ7@5ZNCAE5_v6gEVdto5{m34tla|pU8UE-Lj|CXeJbD<4XGfQpDG-RLeGG2&hqM>A$g1`Ld zO(GJBJff$;cbub`P-|^B0+zxUdywseZg$SZ-$d79@7NcZZ(z^3Y+*a~$npVvU(_hS zE&bA*Zyw0RFdgk?`&$uLIjFsV1UM4BC#=hN%D=!UxRv}otD$(2fOMh(wJJ!m2ETQpes7UV-h%yA9T5d+0>*%G7Y>qHDe0R@)^Or)Szy z?5(t>_*de$xWU|7i^&{jj^K>3SG85VT{r41gHDE4^4H;35=)^JdakvnwSWz8Vr7t+ zpKzlDS_Y)4{!PZY=1k8P?t>BHB1{iltF03}68Y2ZjXovS12>r>k^6@y0ikvSS!qoQ zQ2y~_&e)~`oxlfV6gg0_E8T1h zjG%7cs^k;#El>~Ybo@}XL;P=32ATuC7D?h1=4W5PN6Fvjr__0%g0|4{&9l`6N}pMS zJ5zcCjIkb-a|`qRAGk>8D$GgD7Axz?k*U~0I*Se|N)u6SA3uiu0kMIg-VG@iI4$NA zMc~Wa%IapdI#?nsM0S9KTx)1lyMboL?bUGY5A0PXv2AG^bfWTIorPTE^Tbtwq-Zd> ziHOvBXh7oMmCNI`sR(u$amW8()IF)XnuhL+YY<_~f%!Y?RlPqk*!&;TK(bNI@WU-9 zi8Ih-d>OK+=}l^YZ=q_>_VeRG%o71ECA9;^a0h8US0*1;brUYP$Q8=px37f;ISy-? zfycoka5px&S$Md`kw@-ubhG{KeTP!aY)=E-L={f0X$ngp&DRnUQUBADO)&|5f<5Dj zz_hGF>lqtnBgiGWZvf410l$bnlo(~H3aB1 zAk{X6O&0gXO+>BuMP)w!R;(8J@ao0KfhFqbE%_;O-q({~G=vX?vv z|8wuA!Zf8fyGi<<_f!aXM;I4UeeKf<&*AmSw!$#rIe%VFGL_?6;Nywvt_x@tsGju7 zc~3mdns+xtuS%7Qf7=_;G%+TjlVKou8c#A$MW$hQv>KMWKoZc7FM^iv|LQ44-tG1^ z07{sU*g`Zu;;`^9cAcq5bkA5PREibys_(uZGB_*1R&>;O0?Cx1+te78W7R) z4>W-exQeMds2{7v;4%iJM@HEHwnl=z!I9J($>o}7@9d69yc|&|Sse2?3+JMTq79H( zdvn_udRg2><1K8iEf$FjY%ll%(ez;7bYmkv&R<|lQx@4{rB3F$%o9J!I<2MF=)BB` zP&mls#r;b!!&Vebk41`MZ3W9@m+E@T2cQ-FkPqdIek5uje)+F`q~QospoXb z7$)UnEwvQ-*YxwJEYHn|O2e@h9TYh@(btzW-M?Ju7Woxl$aG$>b*F zz6*2(D=pMH{qZt+q*}vXmcA3fD-PaXo-x78tkLiS`LOwu zBb>g5H5UIRp96p7i9|$j3K!|JnbXZxgQ%G2QxbfUFeq(OOzpWjoT9L5>B z`4X(C2xFXsUNM^aH+Tj%75jkC7lSaU6UhD*c9S*jt8M+Up0U@6WvbrzwC#)iPLb>v zDI6W8PI8CeP9o>D@J=JTDj0k#g#sh-v>Cat!4 z{9S$RptJ11c$^rrZKXexS``Q{NTPKfq}Icf#EpxeAby~FCH0rRfhVG$sm;X_b+MoJ z0j9kgE&{`P)QvWe-K^6XL9?!RmIv&3-xpM8g8)C1l#S(ikb!GQVIM* zxhpaj-e#?@V!9J-jx0H8b`qbCmPbVT74JkU+p83mArr}iyxs4P*Q7?=cDX*e58fkh zChcf6J_&xs$78eOSv*68CT4>VW>oHWaR5Noq0wG;U(TDY9PlM~74IOT4mw5)XUc`wFFF;%n%$ z`!tcNUUpRVUWA4_3aLHtC@`Gd$%Pbr1ui(<U=A@ z!9BRTl*2!vBSfRWC3jJ`Xma*aUuW)GQRAY=&^z{V$$F&*RnfNGQjQ))me`Nu8S)e? zE?8oE07f|r{Wg8+c%HhXMKwUg6v<#6ALzAhgmpWeV>nLrVq?S?F^iGsau3HL-rzqe z4ZstOUCoiM#`Y5aqE5-GA~)g;VqXOSW{GE*na<yP0```f;5RKaYlP21i0B&A`;u z4st_su0#NE7p9G=b@U``qMVFTdXD|1KIi*S-?t=|?6=R8L*j7k2fvi)g0z>Kt0B^B zB3YOO_7UFgN)W#ke)me&=N2?)v+a<*mvT$2HS%K12vaBqvqf+ zyc9c}UyECf&x6juVDVS|tuwlyg{Lk3o#u%?u&fRAlt;nrP)nw1nTT4qsc~pcELKv` zm*Q@;VQ{rS);|!0^|sC{a}vr>HgH0|T^!5l&bnf=G>o0&_!Vs7LYu9%G{ag4$+5Z*oNA9M^!ZV_W;Jwk-)KYLSv{7%P)$y?)vw#dGIxNh93!Kn1P&qq$e$4Zn|$&nQF zvw;5!x-n2&nyOq@PKr&iNo@1{sbq#W1$LpM0;3|w;ur^L_3217P31U(ND2NGJ-j4R zY|j-d?NPhpl5VJra^K5la;aFA+?4b^`XO2a_)J|^hcH*AI~t~pp>jPz{vWo!?{BSD z#4PLpH&=B9{F8$)ql0Ahy%(wpyS}5)IobnUo zouZFyXQ~yvOQ=pb1g8`im=RoS919FidSVVIEqE!l8h9WULJ3%Nz!Z_pr8+J(O%;c- z_v0G`b^3#LM%)yiuDpq-xSH0D)>hmPb0RrOZlQ*;hxI&JH7!JX04>W6Pv4_$f}->p zYg*)IEx;cG$LUnX3Q-f}B%SsjW-C)?#YR(=&{1*#!_#XISQ+%$19wt9p zUOb#oi>;=f*O;QG>@&8lwM_&o!ln5qW&8lM)gOg1)e&tVVl@Namv>)H32$mkZ3A}myJpaqQMh-D7)VU738Mx0Z z(8=>{#BbmO@jvCJRb_Gu!sP6T{Oo<06o47@N9lO(a94y|oK67kA zDO@vRug~TzifSlbA{$BVJac_jsg=81NmW~Ilp9J(U?VP+IV4RH)65027uBxTs_`%{ z+r}_0;;ZqrX90AS|ICNEei)idi980)w%-F671vcxtC(@Q_?1OHmuwFXcifrjOm#FN z-oXp`8?Hb6SDxZK7^8JQT3zRKw$Ski-H|&YKA%3pjwCnJ2bA);J)u_WL2o&w32;gN z0n^4HJ_;kX@z#O5$)cV0DVa}S(V39Xh>HGc$P}h1b}n4z{+6&phLNYpededV4j*Z2 zY5l>CV2))?2W~PYMRt2LDm(Uwp7yoNjdRoGwcu`X13VU}lGWUb?kz(Jv(VHgW=*onNVl^g_ZEIO3Kae!kD?GzixL-4_oOZCycce*i_8d4* z(A2tsxdy7H)3+eh8^UxD&Z4)V23R{wd+BwipBo}&;cJEKmY;APz?}oD{bklmv&W3b zZH3@ezXoMH_lT3BQEav&1=^{W;*!={ig4w?4~^3^dhXE_kH2%gF?g{cRroE=Y?RJD zfl}F;_WrJ+*f2Gns${c(|HvKq#bU92skW3za-C8m67-HUxFS)(&)Jei8Jx^)ke>Sr za|(RvXwZ-#9rU!PG-wd|GND|cp4z9VB^d!0QfZJ=IIqmpPrGgH2yu|jfRY_Ma@z<0 z3x4FX3-k0gT5R}2QyMi?+e-1SLC_@Xu<-{G?KrC~CHp|<(d5{A=#|15fmCEIv?*q` z;{Z-FMZuZ!0^Q!YepfQ*CDurFoPRkRkY{Yy#X@qOyxB9vzX=^9UPCLY$>0;t;mo9r zRI0O{{5&SX{heo#{^FvjQ&fNOG%`kdObiF=kZ^Dtd8OE|oJFSMpz8-+9!~%xY*p;p za(QaF(8RHvOHnxyRcFEj0G&3&jtVp*ALw0#4rHv{2@2uv(iq*I{B8XNRRM{Do6g$0 zJ@x=v3o7R{h+kE`MW_9AZg=*C3bA{UzrEL}nzks%Mk>GHqL$$8NPQ7s1pX@;rUaC@ zihsvD3P|aW>VXjR1-=E+UFuJnl;{2@F=@_Ug#p$t40VkR?f|w~a}!GVX3pWw#s=u% zYGuBV>T5%`LKD!LzA|-vZHIfbXdt_xlu}*#pk^j$=ymz5ln%a zlaMFcp&!m!a+Wq8^+TTw2c(zQy;=utfQ#Up=9$RNcyISxb_MnUzG>f1ppHt+b#6`K zUMVy8keWhn!l#J09NitSu(?=e79<)aE+!r#13iP;$y%6ur#uq1pc5Pu_;OgBa;4a- z-WIx1@$vEMZ(ys_j+F@!F({VWZtu~awM5FhS4 zPHn*QiLsg!J6v4DG!oqq-#ojKr!NudSfI62&IrT#FnmpLh@N{NtUDTay7sWY}q>et-J3RlOfi3jRZr*`GM`=E$ox@ zA+`ox~-`3%}yGbZ*c3!tTzo#;W)fwh*l`U~jYY!|UDxuNcQfTowcWWdsPw$^1Q_+h`SFKHfDk)UU{GCu;VXOQ? zYz9r#K4W5GIx|76YoAd%fzF5@%E16G4MNtjj-;hfvT{K-ptZzx@OZM1-UD?zwi;TB zPxHKvDpV@?P+8BLIFK#jYoLQ%9r^dr9=0vNz;(g5QT$o-LLNwbU<1C9NN?n~b_g5b z(C@Fg`Tm>Yc!)rQa3ArwQj4#{fzB~xh<%nY#SB56*k!h5@JI5hFA`n{#SqsZ4ZA0v z&aHyQQrom_eiA=|_sJcl=gLCo4WxiPl51B_lfT5Z#>>Gd){y(Obhz1|^Z0LzlM64Q zX^tMwI>ikRq=+-vc%3f2SNtL5XdlSM7)OLt?VW#bxFI<$r67v>#R@+W@=|0 zh4zmTADOfqYkmcEzH1ivw(u1?p4h+_J6AM2r0wEIN5jG&!*=``YZD9XGn8+xxmZ1v za%7UL!~b(_a9r_y_sB<2$>Z^!&=aN;ZBXr*_kADH?uoUK4&(`3lpOY$q{Fe_?SGv4 z(iQkG*W%3e?!KNH)-bKV-9*(6)CexK`J{oi;RK6y+am8)s3TIAb6>8VyHcq{jEL09AJ!noc9Q*VVi^Rfr@cI zwh0ozDrirvQDAn_2%!_~m`5&a3B!dkG`^v_{~ z&L@j1-Ap==ZPpC5tgxICFRymG(L>56tg7oAPe#U@-$BVlucl70s$&(FHe1SGUs1yyPiqtBCT>vL&}H)P&ux)Ypb>s&BmU>^SK|zZWd5?(O|sZ z_{MXDU&h!G7ahx*LrNBw9SP>xO@~YBt`^2z^y5VEt9RKT;i(Os)-X6yEZ$qC)J*@ znN}eGP&={L{57Z~_!FswE@NEw9b$juNjOPoYgJNy6r50OeuKSjy`4wwpXJ4lpj8T(C_63GxuBu=Lw~H}^xl7py1SlW zJLMYOD#uZ2`_Y-yJZBebvhWJ+C(lB+O0v33Js^B3c&0x&gV3GG91L~UalN;mA zLTr!(t_U$mJX(u3kdMW^tXb%0`b{4LKI9byyrkb=;#kJ9+CRE!qs&{=6)cSmoQLm` zLrR~s6_w}WGcsHouf3Ekeq7upt`6oJ5Baw71EE-D0G{XnXsWGF(78!%=&89Wcso^b z#A#M+wtlPqNQAH~y%MjAo^U#_e@&OrSF!EPIu{rHEPJTsc|Dv0o-J1>EF*_Sy5rLV z?d8WxBvc1Sh+%rTv1R-LxH8wRsmb~$)*$s|T<$;Oc60(eJeXMeHEuqi0(EnC)aNZ7 zlGf|I{5nyya0pK03JVsKRSA=NO%8WiRZ9?XZ6R+-&C$i|IHkLmggz9@&|)RP-buJ3 zmhnDln%qKM8P5>M5RIv*Px1Qjb;%v2#=sS#r4nzA4Q$};ToW?e=#Dg$C9bc>J7pRZ z_*O_asaDJZX-K@8Sx>-$c6z6?g#X+64EzOOjiLh=$>b8!uEF!@#@2AAik9j-8*_wO zRn!I;M5$UtsHkI9~Ju&5sp?Mm*m1+Vq5iu&KBf|C^yI}{(lh%;<3#I zZ?lMQG}tQbwmH`>?f zIkySE|Jcjsrg#(IQsNN7O1m3%!@A+!ZLe*knS1m`^n^jhU3pt@DtLj4Ag0non|&s&p?($%*nrCwZazV1c>m>17@^s?lrSuuR=Cvvau32&Hfl#$));V5d@cm z=1A?4-ro1bc;;?oj1cb~2ghOCeQT@^@G{z5TguwV_3*;{0=WhhELf*yTl3jn#52Wj z?28&=K(Ge#h8+y<_uX~xgv`G`yJo9X+1j>)Ymu)mbxPxfuErJ`^{Bzu`OR-ylZ<@9aH1 zRpNGw9MVZBqM!t`f7Ffzl(%Kr>`;k6eqWbaX%OajO2gW>k>Lq z*w~GAk=vLe{AjsJhy&fMEU}*FYXCb<&#ax%aC)Wgqo0J%;TyW+lu=waPnq8fmBX$U zAdazYD4l`s68nJlG03_f97#@8I%9=M8Iof(=qKLQ?mF^*V5t7)s2z3!+_fvz7DcUf z=R#@V17T#$a-o&(-Dx74O%d#WK%@_e%}3j?uOQWSTdBm9a9T;UG=Xc)R)$)L$uLN! zi5dJqjz-4TVv4V!qcREEaitTV!Mzq2=!x<)*FStK_<6nV{CejA|489Q@TyW5eZk!- zI0CuAdukl+bb|IuaS_a3;Tg0D?xQ=IF*3>gGRdS8$1hTi7Uv*os8ruhaTsp^S zP~HYc$(ssWz$YE+ok_*b4k%)&*x#|)_e3g_5&~Dqme>~J1U1>2Ll&wps2SeMQd0B9 z@I~=H{13cLpD3**mx+()E;7P9O>1r?zy65Rl!9lg$9#1Rdb$hYToej{3-n+y>|2W|y=u-wQ(}u~Ygr;$^`% zcCP!xdO|YnCw&+x zX+TKQ!ifF4yS=i^LnoYzcg>6Yx4@MCK;36=O!W)gE}RaQNKqDoYkLY>jyy{DAb@MQ6mjTe^c8_n`$ zE!$Z80Cy3!#M)&p$x~XxxRCYJt6iKcqHDYX=Ugq zbr!4cGTDy$Bd~quKip64l5enKL6Vc^`3?jmHH9t|gfTg;0qk3HW?+@`75E;DMVEpZ zz-qCqV2=K*)C(@rnMJ*vXa!#m8TPpSn9?v|WB@+_~svr)X z%XY;}F=R7!3NVcOMAjtHy1kYA(3^r9uG{{G{w}U`>kB!9YYomWSuRZyS8BE7 zPr`E`$IwRZ4PN zF6Qc~XBeNWf%p@9Cr-_B@kZ*o(g*!i=;svmLv}gF=<4QoTkm4SsGS5#4JIRVX-$?7 z#WnF%fEuaGtz*&i&`GwsG>d1^4%j?XmSc-`j|2yvONq{p+zWY(WiUR6?<_sEzi0J| ziFG%o?wi1EQ*{bP=^XF%n$BC!QNnws|0G#Jq$F*XZVWA z-(W6_yt6CmL@$_3VEd#hi#SJnYSf!0h- zOWZ;hxGzL^ur{Sk=pA+g_)S}nw!mikT(%79yQ2frS*t@q(jW#`UEpY?4*P=miQJ%W z%J118)^>7yY=-fhdztu0T7c=(Low8m%Wf1Gs&(1#;vrXZ;WV}0?#0LlK;urfz7}Yq z&89wBHy8G!*GR>t6ydKT2CV9OF4savgX0`W!C}f_$2%(=(CvQoPjAJ*5NsxQA;Gg3 zF8c0zsJq|C_YT?^a+)|B9W4KaFBYe&+tq)${qCvkOlNcSJ(7-{by{5` zER)FlRvs);lJie19ZG&62JA8WOqr&pn00yxIxqmLGr8-m;Ou0395WJ}hj$1BHh)G} zlTBHh3{!7lR2<6bi2^ADy_h!%|1BQ&GrC1?uD7y2=9n0e$xvXJGga89{wtt)Wp2s& zu4F=>sy&*lQF_FGONtP)$a30twYj{I-pC2TtEo=?Ezah+=c6vT*ck#5mgi;~juD6zi!4EhlIAC}?W z%&P@?NCR{VV7K4q2Kf}$E-ygV0E^`uC`8^5ruchhbwG02o4Kcg<$)MRw65j?#Bjxz z@QNHD=Ige)-nbV8q)7R=?~?B|dM@6Hpr&x27kU{H3xD?2KsHN6+%}Wvs zVrnRNwP>`pc1PbUPNW-)Q9?^Ys_lfQ4ciXiCNcgo=ow);D8nNhm%(B7f5CC=JM*>B ziSTVGTsuY{LK#bv>pfG&dN2B@Fj!oYn}*$rJq3F?0myYEu{+Fl)#mh8ArCkRfA@!> zUy%&2(>C4L+Y<{0v>NQk!g0b%HZQ-CfMLb@ehmW&-$k>a*wCY<1ya+zf3U5#BVaRW zyY&zkDUHByWX(c$kmdC>-`fH=+DbCU^ntGmH{q(ndU!AQ#J^Bn0nXFb$90zXhwb&4 zktbUkn{R^o>^=W*n6ZXR4BUTrK1d^vZFt;Buv~xv_ez1_K&?+wc zoy2XGrtTT4o{(CT71bB?4K&93vhg#!09IDhkaY1x;63bhU$;&H8e*;4wpe}cCU^qA z&VToIA;xkda#=c#Oz;#@oco;ly-CbaCu zTub{_+t9ps#*^S+UwN^u(1Hv@4-nbt(A=J$srWO@E*{tUoyEwu?MqDK_l&e3MO)f8 zGC^-`IMVGDpHPd%hCGZ9XLW*z6mUO8w#a)CKgIQB@q5h8uPo@A!*LzKM6C@daeR?8%{s%D>bt_` z(r?s~LW8F+unMXmRdgLK?1T>>ZiI2*Jl8|~vHV875}fF0?<)ni#Rr5p_*uO%;VeoA z^NlCKmP#w<8nhDFInXTXO5lkgXybwTNV+y!J0lMz{q!b^ma3`yoJ)weaj%r;jtA6z zdJ}V&edr1;+ZO$e>(q2vNo32TIv;KpRk8G0S%Y9{@sOnP`LhB)1FxYa#C+uw**QVB zviiPnH})2D$)*;w#G~eBPP6vG_5wzUBL3f!ul&HK&BW!+4{0NG3e++zPECZzu@#)3 z#6hNEY)Eh{`&(QkF10?#Mo1^r0p=Y0etLSrF)oW-ZdoMVa114A@}>~2UMbkDa?Q%v zzD%OpLK+(}5Us-g;SY*b>|wkSK(Kj z5u3`-MIVtDMA_Zklu4!P23JJPv@B32k!^GLOBcjzxK~>c%{Z6Vd``vE0F9bxnr0 z?0dqbkRdLTk4VUl_a)2~2aBXa@h`=r=zXl4tvA_%PZ2+m+a;jUWwoiERn~P{oCerH0r}=g0QY0xnA?_|BAtz?-Z1}R+xTzOb1cQSBx^e#Wqc>svR=l6 z_Nj2P`5<`)u^@eb9nP9`E;?J>=f({gN=>|?+})Dwq1bKa+UO~Cra~)n*Ni%KVT8sggq*T;jQ&F=UlA0ZZUaEeuIL9 zhhI$IgLadC;1PP!uA5Dvr{?ASOW$E*3n2vO@))t4*h1Z?-|MsJR*v^TMd(u2#@!Qa zm2$#ruh+LNWm;Ry8q0g6AN!MGEPso$!O2qRItFsEcsO^cKO1@r^>ZIIZ?sZqimgzd zhfWtX`W$+hC#A3Uy5tMEDt(-(!M!UGm_G6fccD^_DTfzV|B(Ntpt7U0doEN@y~ixY zY)m3IAm`!MUV2Aq`SxgFljl5K49^q#QEiY|@)5nsw9NAse}XPC?Z+Eutr6|!iq_S- z5x9yflUM1BhGl5JeTDjs4#zG-k{Lm2Vym17Of7|l#7JKv>a%o23g}1ZnSwpyM7(O; zM*mih6Rv@?{U!dX`OCST{3785w*}Z|pv+E@9u&ua$s5#W>HtqyOR`QacgaiW^U8T8M4piJ zxRl1cwyI>5mdK`P=lD#dbWEL#WCE5pvJSh|7-&|N*KkD){3(#1}#u8{q*~$FoQcJWFSt;7`+DF&21nV z-#g_eTq@NOGZX%}$78>(81}KK50oyQ@J&o;z%`||8DQ#`dYtU&+s5r<$2%xBlHC{_ zW38oUzH;V}I-~pm{(wxF{x_4EJ?} zEb!h2C-S;LO@o>0bv4bmMo72jV-#^Z{<zlM&jy&+N)|uO`PRl8@v$j=0 zf_0iO&`-tI-1gJbEGOLOY&0tH(fV4qIo(8W+QVY|0a?&cG~atrEd>YogS#T7u;Mo0 zq?lW#6bMC^gEuYzaPjPLfA6}hBPYluo=5B&PY+8)WR4hzx8b+t{9`JwT9CcsKKg2~ z0#}|}NRJkm=)}ddXfwUxH-<%#NM9}AQMwMe7>uBdVN-y`eAKS5XgnHD%%}IN$GsKV zF}4Q$5WWQL11e;1w7&R1hR(vjX|)Z*xVw&ROe;wmm$nn!o#E~r+}+*XZDUr6Thn%i zySuwPe89os@Z~?41FDGkbJ5L;bU#?59u;j!(1A2n4Js&|&uDYoLHqAaL z?rKI#Mn_>6SX%7}o%8k6-=Il2#&Lm~CS7z)wP|dQ^{0MyN2)#osR~`GpAJuzidjF? zQ1<*U3ENn10L+_2PBh~*_OVt(i(4Fn27654$^(dLHQ!L+k87!%*ccXWk zz2XkOae=FNw~UnJ-HCp)Pq{9S@>Eet>`^Eq<*O?u_%Ajhr=HvGRBR#OGjc$`r98A} z(uMXe=o01u`$VZ`lD(G-ONrJ11SV_0q!uENp9fy&#nRu^gLDFYhZrLE3jI%+TToS= zjIXtSaMujHp`YTNJTx{%l?{_6sO+SBD|ej$TrRJ?*_W=Bn&CK0D0%gfZTdG?HddT| ziFt^EP&)e4?7g4Z zv2U=kyMmr}s3tQYYjL0-(}{oFmvNTc&|k1NM2jL3pbH-Q5fx4tx}|{&6R&UTPru95o%KKJKtYx#jk$Xh^)J`WR zk!9h=_)FK4z;4H0X$1lo1=aH5k*1@3z4{J%74B@56*_V4Om0X^sG6D68s^*#m+?HH zm*cMsZKRGi4vydv=@@zy&C6=+a$CQNnSn>tyl{=!2gY^!hv%dQg%&w$2QIT+;-Z~{ z)pOxV!EVXDl@npZh%Z=xm1SQkn+XsaNv}2DC@pr+llqe5k}DNN8Smh+NwbObMtbi5 z^zYl=sP(Da;`rpx#$z`nRhJrvuX(Em>Ifb8L#Z{Bii|lXm8N#l1^+tt1KWs&;!nk@>6_N%T-RX<4(;Y`_Oz5ZH!5@l|4aj!N_8qRfftShcQ~QTz_++A<=HMqIpqb41P15WzgLiGGvZ-O%CYUGw zB)yi+@S%07`EKZ2hXZ z4NPJ_P>>@%>$JCRA}h27*8~P3CN;wMEmb2ApcO82Q(B90cNco`|L1@ zpHlho2hc^<2!4l3`~F%H&+YgKZ7o93hnZ`>M*3a+F?S%knRe3Gnkd>o%F;`w2r4hl zJ(af6HJOqHr4F7nwgl(9L4lV?7!S4Q#2?RTGTMEF*h@KI5bJ1{V<$uU^ zr~)!iN_M;VpEetwBPz zc1wA`cM^Dx-{GpVU*LS8pG~Yf5e=coCTWudw zcL2xcKcf1xrl*@66Fw}?)h05r5T@(M1*osmEula>gUo@OxvE5+r5nIGOfgimHY1P8 zN5t-WX{p*?6WY%A7VkRd1>N2yLVO(SHn{i9o#^+p9zo8%P>%|*nKe<8TI)%&~3!juvi8CWEz}fOXLFQHM3G|1) ztLE=6hVLRLS~Tt!oXDoe(yj{P_KZr%dMJhevFBFYgwT9p3m>n`QW5_zTTbf_r90O< z1pOVp9Pvex#m4fxrsOf{f6?SjYh9_N2@*W7Zzt$L$!%Z5E-UuBN}DUlw# z95AHzq$eq#xM+N^Kj+4h#q=}c7c-eM0ZvNjhTMftXRjvL;yZlD10|KZf?{?9=KGdg zJ~*cPALSm}rYSRt9mv_*9c(;YT-_B}S|7k%)1w0|=XBTV!gfK8-ZfJ^yK4GN%%_OBQpS+BL-}z$f0m) zX1LhEQ5bwARMI~IVFUA3)^)K*@NYsT(#szyyyNJ_yh9d(Z5-DW+9(|}Qkv_$2sMEh z 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 z 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 z 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

M7}gXl;bU*WtEo4rE6HFiJrS@8ATBNS} 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%0A>&4*ju((Yl+ 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 z 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ⅅ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%0A*0AZ&_fIFE6m1{ASu<_USOSzj4rX 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%0A;zH00&NR{nBSLR%c6fEV+{_i+8uQb-n=O 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

Lw>kX+dva(x0Y2T>#2EtY|1BU7VeZRDc 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 z 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

)Nrja|dF%zM4 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 fM=O+ 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 z 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

eT7AVdmBH)s&Wx`A>nbLyIKWw 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

    2OtQKPwt_=WkDf&Km362* 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%0Dfd7PT+b-rx&~%oCg5;& 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 Mpl>_ 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⁡0mgUKlJPD)PFy9guUM7;u8osy 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

    !qOFO1MCDx2QLQiy%!rQIv)p=2b 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

    ?45C;2y2 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

    riQ=f0 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 literal 0 HcmV?d00001 diff --git a/apps/authenticator/src/App.tsx b/apps/authenticator/src/App.tsx new file mode 100644 index 0000000..8ba8144 --- /dev/null +++ b/apps/authenticator/src/App.tsx @@ -0,0 +1,313 @@ +import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react"; +import { + AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, + makeAuthenticatorUiSnapshotV1, + type AuthenticatorUiActionV1, + type AuthenticatorUiSnapshotV1, +} from "@clean-start/contracts"; +import { + HttpSimulatorBrowserSessionClientV0, + type AbortableSimulatorBrowserSessionPortV0, +} from "./adapters/http-session"; +import { openPasskeyWallet, type WalletSession } from "./wallet/session"; +import { FlowScreenV1 } from "./components/FlowScreen"; +import { + AuthenticatorFlowControllerV1, + type AuthenticatorFlowControllerOptionsV1, +} from "./flow/controller"; +import { + type LiveFaceGuidanceV1, +} from "./walkthrough/live-face-guidance"; +import { + CAPTURE_COMPLETE_ACK_MS_V1, + captureHoldProgressV1, +} from "./walkthrough/hold-steady-progress"; +import { + type LivePasskeyResultV1, + type LivePasskeyStatusV1, +} from "./walkthrough/live-passkey"; +import { + WALKTHROUGH_ACTION_LABELS_V1, + WALKTHROUGH_COPY_V1, + WALKTHROUGH_DETAIL_COPY_V1, + WALKTHROUGH_DISCLOSURE_V1, + WALKTHROUGH_PASSKEY_READY_COPY_V1, + WALKTHROUGH_RETURNED_HERO_V1, +} from "./walkthrough/production-copy"; +import { + createLocalWalkthroughAdmissionAdapterV1, + LocalWalkthroughCaptureAdapterV1, + type WalkthroughCameraStatusV1, +} from "./walkthrough/walkthrough-adapters"; + +export interface AuthenticatorAppMediaV1 { + readonly getVideo: () => HTMLVideoElement | null; + readonly getCanvas: () => HTMLCanvasElement | null; +} + +export interface AuthenticatorControllerRuntimeV1 { + readonly onCameraStatus: (status: WalkthroughCameraStatusV1) => void; + readonly onLiveGuidance: (guidance: LiveFaceGuidanceV1) => void; +} + +export type AuthenticatorControllerFactoryV1 = ( + media: AuthenticatorAppMediaV1, + initialSnapshot: AuthenticatorUiSnapshotV1, + runtime?: AuthenticatorControllerRuntimeV1, +) => AuthenticatorFlowControllerV1; + +// Every shell route runs the same live flow with the production presentation. +// `/demo` and `/demo/returned` are aliases of `/` and `/returned`, kept so +// existing links and evidence keep working. +const RETURNED_PATHS_V1: readonly string[] = Object.freeze(["/returned", "/demo/returned"]); + +export function returnedPathForV1(pathname: string): "/returned" | "/demo/returned" { + return pathname.startsWith("/demo") ? "/demo/returned" : "/returned"; +} + +export function initialAuthenticatorSnapshotV1(): AuthenticatorUiSnapshotV1 { + const state = RETURNED_PATHS_V1.includes(window.location.pathname) + ? "returned" + : "request_checking"; + return makeAuthenticatorUiSnapshotV1({ + state, + visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[state], + }); +} + +const NO_RUNTIME_CALLBACKS_V1: AuthenticatorControllerRuntimeV1 = Object.freeze({ + onCameraStatus: (_status: WalkthroughCameraStatusV1): void => undefined, + onLiveGuidance: (_guidance: LiveFaceGuidanceV1): void => undefined, +}); + +// Builds the controller factory for a given session port: the same-origin HTTP +// client for the served app, or the in-page simulator for the static demo build +// (`apps/authenticator/static-demo`). Admission, capture, and return handling are +// identical either way. +export function makeAuthenticatorControllerFactoryV1( + sessionPort: AbortableSimulatorBrowserSessionPortV0, +): AuthenticatorControllerFactoryV1 { + return (media, snapshot, runtime = NO_RUNTIME_CALLBACKS_V1) => { + const options: AuthenticatorFlowControllerOptionsV1 = { + sessionPort, + admission: createLocalWalkthroughAdmissionAdapterV1(), + capture: new LocalWalkthroughCaptureAdapterV1({ + getVideo: media.getVideo, + getCanvas: media.getCanvas, + onStatus: runtime.onCameraStatus, + onGuidance: runtime.onLiveGuidance, + }), + initialSnapshot: snapshot, + closeLocally: () => window.close(), + navigateReturned: () => window.location.assign( + returnedPathForV1(window.location.pathname), + ), + }; + return new AuthenticatorFlowControllerV1(options); + }; +} + +export const createDefaultAuthenticatorControllerV1: AuthenticatorControllerFactoryV1 = ( + media, + snapshot, + runtime, +) => makeAuthenticatorControllerFactoryV1(new HttpSimulatorBrowserSessionClientV0())( + media, + snapshot, + runtime, +); + +// User actions that begin a fresh capture attempt reset the hold-steady ring. +const CAPTURE_RESTART_ACTIONS_V1: ReadonlySet = new Set([ + "continue_to_camera", + "start_camera", + "retake", + "try_again", + "continue_without_guidance", +]); + +export function AuthenticatorAppV1({ + controllerFactory = createDefaultAuthenticatorControllerV1, + createPasskey, +}: { + readonly controllerFactory?: AuthenticatorControllerFactoryV1; + readonly createPasskey?: () => Promise; +}) { + const walletRef = useRef(null); + const walletOpeningRef = useRef(null); + const [walletError, setWalletError] = useState(); + const videoRef = useRef(null); + const canvasRef = useRef(null); + const controllerRef = useRef(null); + const initial = useMemo(() => initialAuthenticatorSnapshotV1(), []); + const [snapshot, setSnapshot] = useState(initial); + const [passkeyStatus, setPasskeyStatus] = useState("idle"); + const [cameraStatus, setCameraStatus] = useState("idle"); + const [liveGuidance, setLiveGuidance] = useState(); + const [captureHoldProgress, setCaptureHoldProgress] = useState(0); + const captureProgressFrameRef = useRef(undefined); + const captureCompleteTimerRef = useRef | undefined>(undefined); + + const onLiveGuidance = useCallback((guidance: LiveFaceGuidanceV1): void => { + setLiveGuidance(guidance); + if (guidance.code !== "hold_steady") setCaptureHoldProgress(0); + }, []); + + useEffect(() => { + const controller = controllerFactory({ + getVideo: () => videoRef.current, + getCanvas: () => canvasRef.current, + }, initial, { + onCameraStatus: setCameraStatus, + onLiveGuidance, + }); + controllerRef.current = controller; + const unsubscribe = controller.subscribe(setSnapshot); + const visibility = () => { + if (document.visibilityState !== "visible") controller.interrupt("page_hidden"); + }; + const pagehide = () => { + controller.interrupt("page_unloaded"); + walletOpeningRef.current?.abort(); + walletRef.current?.client.terminate(); + walletRef.current = null; + }; + const orientation = () => controller.interrupt("orientation_invalidated"); + document.addEventListener("visibilitychange", visibility); + window.addEventListener("pagehide", pagehide); + window.addEventListener("orientationchange", orientation); + controller.start(); + return () => { + document.removeEventListener("visibilitychange", visibility); + window.removeEventListener("pagehide", pagehide); + window.removeEventListener("orientationchange", orientation); + unsubscribe(); + walletOpeningRef.current?.abort(); + walletRef.current?.client.terminate(); + walletRef.current = null; + controller.dispose(); + controllerRef.current = null; + }; + }, [controllerFactory, initial, onLiveGuidance]); + + // Two states advance on their own before they paint. Supported-browser + // admission is answered locally, and the separate camera-intro screen is + // folded into the passkey-created screen: its "Start selfie check" action + // prepares the capture session, and the camera opens as soon as it is ready. + useLayoutEffect(() => { + if ( + snapshot.state === "admission_safari_candidate" || + snapshot.state === "admission_chrome_candidate" + ) { + controllerRef.current?.act("continue"); + } + if (snapshot.state === "capture_intro") { + controllerRef.current?.act("start_camera"); + } + }, [snapshot.state]); + + useEffect(() => { + if ( + cameraStatus !== "live" || + snapshot.state !== "capture_preview" || + liveGuidance?.code !== "hold_steady" + ) return; + const startedAt = performance.now(); + const tick = (now: number): void => { + const progress = captureHoldProgressV1(now - startedAt); + setCaptureHoldProgress(progress); + if (progress < 1) { + captureProgressFrameRef.current = requestAnimationFrame(tick); + return; + } + captureCompleteTimerRef.current = setTimeout(() => { + controllerRef.current?.act("collect_frame_metadata"); + }, CAPTURE_COMPLETE_ACK_MS_V1); + }; + captureProgressFrameRef.current = requestAnimationFrame(tick); + return () => { + if (captureProgressFrameRef.current !== undefined) { + cancelAnimationFrame(captureProgressFrameRef.current); + } + if (captureCompleteTimerRef.current !== undefined) { + clearTimeout(captureCompleteTimerRef.current); + } + captureProgressFrameRef.current = undefined; + captureCompleteTimerRef.current = undefined; + }; + }, [cameraStatus, liveGuidance?.code, snapshot.state]); + + const onAction = (action: AuthenticatorUiActionV1): void => { + if (action === "cancel" || action === "close") { + walletOpeningRef.current?.abort(); + walletRef.current?.client.terminate(); + walletRef.current = null; + } + if (CAPTURE_RESTART_ACTIONS_V1.has(action)) setCaptureHoldProgress(0); + if (action === "start_demo_authenticator" && passkeyStatus !== "requesting") { + setPasskeyStatus("requesting"); + setWalletError(undefined); + const opening = new AbortController(); + walletOpeningRef.current = opening; + const unlock = async (): Promise => { + if (createPasskey !== undefined) return createPasskey(); + walletRef.current?.client.terminate(); + const session = await openPasskeyWallet(opening.signal); + if (opening.signal.aborted) { + session.client.terminate(); + opening.signal.throwIfAborted(); + } + walletRef.current = session; + return { status: "created", prfCapability: "available" }; + }; + void unlock().then((result) => { + if (opening.signal.aborted) return; + setPasskeyStatus(result.status); + if (result.status === "created" && result.prfCapability === "available") { + controllerRef.current?.act(action); + } else { + setWalletError("A PRF-capable passkey is required. Please try again."); + } + }).catch((error: unknown) => { + if (opening.signal.aborted) return; + setPasskeyStatus("failed"); + setWalletError(error instanceof DOMException && error.name === "NotAllowedError" + ? "Passkey unlock was cancelled. Please try again." + : "Could not unlock the wallet. Use a PRF-capable passkey and close other tabs using this wallet, then retry."); + }); + return; + } + if (passkeyStatus === "requesting") return; + controllerRef.current?.act(action); + }; + + const copyOverride = snapshot.state === "demo_authenticator_ready" + ? WALKTHROUGH_PASSKEY_READY_COPY_V1[passkeyStatus === "created" ? "created" : "notCreated"] + : WALKTHROUGH_COPY_V1[snapshot.state]; + return <> + {walletError &&

    {walletError}

    } + ; +} diff --git a/apps/authenticator/src/adapters/browser-admission.ts b/apps/authenticator/src/adapters/browser-admission.ts new file mode 100644 index 0000000..87c0d87 --- /dev/null +++ b/apps/authenticator/src/adapters/browser-admission.ts @@ -0,0 +1,141 @@ +import { + admitBrowserV1, + classifyIPhoneUserAgentV1, + collectAdvisoryCapabilitiesV1, + createExternalBrowserHandoffV1, + type BrowserAdmissionDecisionV1, + type BrowserAdmissionInputV1, + type BrowserContextKindV1, + type EmbeddedEvidenceV1, + type ValidatedHandoffContextV1, +} from "@clean-start/browser-admission"; +import { + PRF_INPUT_V1_SHA256, + WEB_AUTHN_PRF_AUTHENTICATOR_V1, + type WebAuthnPrfAuthenticatorPolicyV1, +} from "@clean-start/contracts"; + +export interface BrowserAdmissionAdapterV1 { + evaluate(signal?: AbortSignal): Promise; + openExternalBrowser(signal?: AbortSignal): Promise; +} + +export function evaluateBrowserAdmissionFactsV1( + policy: WebAuthnPrfAuthenticatorPolicyV1, + input: BrowserAdmissionInputV1, +): BrowserAdmissionDecisionV1 { + return admitBrowserV1(policy, input); +} + +function embeddedEvidence(userAgent: string): EmbeddedEvidenceV1 { + return /\b(FBAN|FBAV|Instagram|Line|MicroMessenger|GSA|TikTok)\b/i.test(userAgent) + ? "probable" + : "none"; +} + +function topLevelContext(): { + readonly isTopLevel: boolean; + readonly frameOrigin: "same_origin" | "cross_origin" | "unknown"; +} { + try { + if (window.top === window.self) return { isTopLevel: true, frameOrigin: "same_origin" }; + try { + return { + isTopLevel: false, + frameOrigin: window.top?.location.origin === window.location.origin + ? "same_origin" + : "cross_origin", + }; + } catch { + return { isTopLevel: false, frameOrigin: "cross_origin" }; + } + } catch { + return { isTopLevel: false, frameOrigin: "unknown" }; + } +} + +function browserContext(userAgent: string): BrowserContextKindV1 { + const standalone = window.matchMedia?.("(display-mode: standalone)").matches || + (navigator as Navigator & { readonly standalone?: boolean }).standalone === true; + if (standalone) return "installed_pwa"; + if (embeddedEvidence(userAgent) !== "none") return "embedded"; + return "normal_tab"; +} + +function cameraPermissionsPolicy(): "allowed" | "blocked" | "unknown" { + const documentWithPolicy = document as Document & { + readonly permissionsPolicy?: { allowsFeature(name: string): boolean }; + readonly featurePolicy?: { allowsFeature(name: string): boolean }; + }; + const policy = documentWithPolicy.permissionsPolicy ?? documentWithPolicy.featurePolicy; + if (policy === undefined) return "unknown"; + try { + return policy.allowsFeature("camera") ? "allowed" : "blocked"; + } catch { + return "unknown"; + } +} + +function defaultPolicy(): WebAuthnPrfAuthenticatorPolicyV1 { + const secureHttpsOrigin = window.location.protocol === "https:" ? window.location.origin : null; + return Object.freeze({ + version: WEB_AUTHN_PRF_AUTHENTICATOR_V1, + rpId: window.location.hostname, + allowedOrigins: Object.freeze(secureHttpsOrigin === null ? [] : [secureHttpsOrigin]), + userVerification: "required", + prfInputSha256: PRF_INPUT_V1_SHA256, + prfOutputMapping: "verbatim_32_byte_first_result_to_world_id_4_signer_seed", + secretLifecycle: "browser_memory_only", + }); +} + +export function createBrowserAdmissionAdapterV1(options: { + readonly policy?: WebAuthnPrfAuthenticatorPolicyV1; + readonly handoffContext?: ValidatedHandoffContextV1; + readonly assignLocation?: (href: string) => void; +} = {}): BrowserAdmissionAdapterV1 { + return { + async evaluate(signal?: AbortSignal): Promise { + if (signal?.aborted) throw new DOMException("Aborted", "AbortError"); + const userAgent = navigator.userAgent; + const capabilities = await collectAdvisoryCapabilitiesV1({ + isSecureContext: window.isSecureContext, + visibilityState: document.visibilityState, + publicKeyCredential: typeof PublicKeyCredential === "undefined" + ? undefined + : PublicKeyCredential, + mediaDevices: navigator.mediaDevices, + }); + if (signal?.aborted) throw new DOMException("Aborted", "AbortError"); + const frame = topLevelContext(); + return admitBrowserV1(options.policy ?? defaultPolicy(), { + actualOrigin: window.location.origin, + isTopLevel: frame.isTopLevel, + frameOrigin: frame.frameOrigin, + permissionsPolicy: cameraPermissionsPolicy(), + requestContext: { + transactionHandle: "validated", + returnTarget: "validated", + session: "approved", + unexpectedQueryFields: window.location.search.length > 0, + }, + platform: classifyIPhoneUserAgentV1(userAgent), + browserContext: browserContext(userAgent), + embeddedEvidence: embeddedEvidence(userAgent), + capabilities, + }); + }, + + async openExternalBrowser(signal?: AbortSignal): Promise { + if (signal?.aborted) throw new DOMException("Aborted", "AbortError"); + if (options.handoffContext === undefined || window.location.protocol !== "https:") { + throw new TypeError("validated_handoff_unavailable"); + } + const handoff = createExternalBrowserHandoffV1( + window.location.origin, + options.handoffContext, + ); + (options.assignLocation ?? ((href) => window.location.assign(href)))(handoff.href); + }, + }; +} diff --git a/apps/authenticator/src/adapters/browser-capture.ts b/apps/authenticator/src/adapters/browser-capture.ts new file mode 100644 index 0000000..cb0e83d --- /dev/null +++ b/apps/authenticator/src/adapters/browser-capture.ts @@ -0,0 +1,170 @@ +import { + evaluateClientQualityV0, + type EvaluatedClientQualityResultV0, +} from "@clean-start/client-quality"; +import { + MetadataOnlyCaptureRuntime, + createBrowserCapturePlatform, + type ApprovedCaptureEntry, + type CaptureFailureCode, + type CaptureRequest, + type CaptureRuntimeOptions, + type CaptureState, +} from "@clean-start/frame-capture"; +import type { + ClientQualityPolicyV0, + FrameBundleV0, + HexSha256, + SimulationCapturePolicyV0, +} from "@clean-start/contracts"; + +interface CaptureRuntimeV1 { + capture(request: CaptureRequest): Promise; + cancel(): void; + unmount(): void; +} + +export interface BrowserCaptureStartV1 { + readonly entry: ApprovedCaptureEntry; + readonly policy: SimulationCapturePolicyV0; + readonly qualityPolicy: ClientQualityPolicyV0; + readonly sessionId: string; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly nonceDigestSha256: HexSha256; + readonly retakesUsed: number; +} + +export interface BrowserCaptureCallbacksV1 { + readonly onCaptureState: (state: CaptureState) => void | Promise; + readonly onQuality: (result: EvaluatedClientQualityResultV0) => void | Promise; + readonly onArtifactReady: (artifact: FrameBundleV0) => void | Promise; + readonly onFailure: (code: CaptureFailureCode) => void | Promise; + readonly onComplete: () => void | Promise; +} + +export interface BrowserCaptureAdapterV1 { + start(input: BrowserCaptureStartV1, callbacks: BrowserCaptureCallbacksV1): void; + requestMetadataCollection(): void; + stop(): void; + clearTransientMedia(): void; + unmount(): void; +} + +class QualityOutcomeStopV1 extends Error {} + +export class BrowserMetadataCaptureAdapterV1 implements BrowserCaptureAdapterV1 { + private runtime?: CaptureRuntimeV1; + private qualityRequested = false; + private releaseQuality?: () => void; + private nonReadyQuality = false; + + constructor(private readonly options: { + readonly video?: HTMLVideoElement; + readonly canvas?: HTMLCanvasElement; + readonly getVideo?: () => HTMLVideoElement | null; + readonly getCanvas?: () => HTMLCanvasElement | null; + readonly runtimeFactory?: (options: CaptureRuntimeOptions) => CaptureRuntimeV1; + }) {} + + start(input: BrowserCaptureStartV1, callbacks: BrowserCaptureCallbacksV1): void { + if (this.runtime !== undefined) { + void callbacks.onFailure("capture_in_progress"); + return; + } + this.qualityRequested = false; + this.nonReadyQuality = false; + const runtimeOptions: CaptureRuntimeOptions = { + onStateChange: (state) => { + if ( + state === "acquiring" || + state === "awaiting_first_frame" || + state === "preview" + ) void callbacks.onCaptureState(state); + }, + }; + const runtime = this.options.runtimeFactory?.(runtimeOptions) ?? + this.createBrowserRuntime(runtimeOptions); + this.runtime = runtime; + + const capturePromise = runtime.capture({ + entry: input.entry, + policy: input.policy, + sessionId: input.sessionId, + accountPublicMaterialDigestSha256: input.accountPublicMaterialDigestSha256, + nonceDigestSha256: input.nonceDigestSha256, + inspectTransientFrame: async () => { + await new Promise((resolve) => { + this.releaseQuality = resolve; + if (this.qualityRequested) resolve(); + }); + this.releaseQuality = undefined; + const result = evaluateClientQualityV0( + input.qualityPolicy, + { readCameraActive: () => true }, + { retakesUsed: input.retakesUsed }, + ); + await callbacks.onQuality(result); + if (result.action !== "ready") { + this.nonReadyQuality = true; + throw new QualityOutcomeStopV1(); + } + }, + }); + + void capturePromise.then(async (artifact) => { + this.runtime = undefined; + await callbacks.onArtifactReady(artifact); + await callbacks.onCaptureState("artifact_ready"); + await callbacks.onCaptureState("cleaning_up"); + await callbacks.onComplete(); + }).catch(async (cause: unknown) => { + this.runtime = undefined; + if (this.nonReadyQuality || cause instanceof QualityOutcomeStopV1) return; + const code = typeof cause === "object" && cause !== null && + "code" in cause && typeof (cause as { readonly code?: unknown }).code === "string" + ? (cause as { readonly code: CaptureFailureCode }).code + : "unknown"; + await callbacks.onFailure(code); + }); + } + + requestMetadataCollection(): void { + this.qualityRequested = true; + this.releaseQuality?.(); + } + + stop(): void { + this.runtime?.cancel(); + } + + clearTransientMedia(): void { + this.releaseQuality?.(); + this.releaseQuality = undefined; + const video = this.options.video ?? this.options.getVideo?.() ?? undefined; + if (video !== undefined) video.srcObject = null; + const canvas = this.options.canvas ?? this.options.getCanvas?.() ?? undefined; + if (canvas !== undefined) { + const context = canvas.getContext("2d"); + context?.clearRect(0, 0, canvas.width, canvas.height); + canvas.width = 1; + canvas.height = 1; + } + } + + unmount(): void { + this.runtime?.unmount(); + this.clearTransientMedia(); + } + + private createBrowserRuntime(options: CaptureRuntimeOptions): CaptureRuntimeV1 { + const video = this.options.video ?? this.options.getVideo?.() ?? undefined; + const canvas = this.options.canvas ?? this.options.getCanvas?.() ?? undefined; + if (video === undefined || canvas === undefined) { + throw new TypeError("capture_elements_unavailable"); + } + return new MetadataOnlyCaptureRuntime( + createBrowserCapturePlatform(video, canvas), + options, + ); + } +} diff --git a/apps/authenticator/src/adapters/http-session.ts b/apps/authenticator/src/adapters/http-session.ts new file mode 100644 index 0000000..46d332b --- /dev/null +++ b/apps/authenticator/src/adapters/http-session.ts @@ -0,0 +1,188 @@ +import { + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + SIMULATOR_BROWSER_SESSION_ERROR_V0, + SIMULATOR_BROWSER_SESSION_PORT_V0, + isSimulatorBrowserReturnAcceptedV0, + isSimulatorBrowserSessionErrorV0, + isSimulatorBrowserSessionViewV0, + isSimulatorUiBootstrapV0, + matchesExpectedSimulatorBrowserDemoAuthenticatorReadyV0, + matchesExpectedSimulatorBrowserSessionViewV0, + type BrowserIdempotentSessionFieldsV0, + type BrowserSessionFieldsV0, + type CompleteDemoAuthenticatorV0, + type CreateSimulatorBrowserSessionV0, + type SimulatorBrowserBootstrapResultV0, + type SimulatorBrowserDemoAuthenticatorResultV0, + type SimulatorBrowserReturnResultV0, + type SimulatorBrowserSessionOperationV0, + type SimulatorBrowserSessionPortV0, + type SimulatorBrowserSessionResultV0, + type SubmitSimulatorCaptureV0, +} from "@clean-start/contracts"; + +type FetchV0 = (input: RequestInfo | URL, init?: RequestInit) => Promise; + +export interface AbortableSimulatorBrowserSessionPortV0 + extends SimulatorBrowserSessionPortV0 { + bootstrap(signal?: AbortSignal): Promise; + createSession(input: CreateSimulatorBrowserSessionV0, signal?: AbortSignal): Promise; + beginDemoAuthenticator(input: BrowserIdempotentSessionFieldsV0, signal?: AbortSignal): Promise; + completeDemoAuthenticator(input: CompleteDemoAuthenticatorV0, signal?: AbortSignal): Promise; + prepareCapture(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise; + submitCapture(input: SubmitSimulatorCaptureV0, signal?: AbortSignal): Promise; + retryUnavailable(input: BrowserIdempotentSessionFieldsV0, signal?: AbortSignal): Promise; + getStatus(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise; + cancel(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise; + returnToRp(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise; +} + +function stableError(operation: SimulatorBrowserSessionOperationV0, reasonCode: "network_unavailable" | "response_invalid") { + return Object.freeze({ + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + operation, + reasonCode, + }); +} + +export class HttpSimulatorBrowserSessionClientV0 +implements AbortableSimulatorBrowserSessionPortV0 { + readonly #baseOrigin: string; + + constructor( + private readonly fetcher: FetchV0 = globalThis.fetch.bind(globalThis), + baseOrigin = globalThis.location?.origin ?? "http://127.0.0.1:4173", + private readonly now: () => Date = () => new Date(), + ) { + this.#baseOrigin = baseOrigin; + } + + bootstrap(signal?: AbortSignal): Promise { + return this.request("bootstrap", "/api/v0/bootstrap", {}, isSimulatorUiBootstrapV0, signal); + } + + createSession(input: CreateSimulatorBrowserSessionV0, signal?: AbortSignal): Promise { + return this.request( + "create_session", + "/api/v0/session/create", + input, + (value) => isSimulatorBrowserSessionViewV0(value) && + value.state === "created" && + value.code === "created" && + this.matchesSession(value, { + sessionId: value.sessionId, + browserHandle: value.browserHandle, + }), + signal, + ); + } + + beginDemoAuthenticator(input: BrowserIdempotentSessionFieldsV0, signal?: AbortSignal): Promise { + return this.request( + "begin_demo_authenticator", + "/api/v0/session/demo/begin", + input, + (value) => matchesExpectedSimulatorBrowserDemoAuthenticatorReadyV0(value, { + runtimeEnvironment: "staging", + sessionId: input.sessionId, + idempotencyKey: input.idempotencyKey, + now: this.now().toISOString(), + }), + signal, + ); + } + + completeDemoAuthenticator(input: CompleteDemoAuthenticatorV0, signal?: AbortSignal): Promise { + return this.sessionRequest("complete_demo_authenticator", "/api/v0/session/demo/complete", input, input, signal); + } + + prepareCapture(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise { + return this.sessionRequest("prepare_capture", "/api/v0/session/capture/prepare", input, input, signal); + } + + submitCapture(input: SubmitSimulatorCaptureV0, signal?: AbortSignal): Promise { + return this.sessionRequest("submit_capture", "/api/v0/session/capture/submit", input, input, signal); + } + + retryUnavailable(input: BrowserIdempotentSessionFieldsV0, signal?: AbortSignal): Promise { + return this.sessionRequest("retry_unavailable", "/api/v0/session/retry", input, input, signal); + } + + getStatus(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise { + return this.sessionRequest("get_status", "/api/v0/session/status", input, input, signal); + } + + cancel(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise { + return this.sessionRequest("cancel", "/api/v0/session/cancel", input, input, signal); + } + + returnToRp(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise { + return this.request( + "return_to_rp", + "/api/v0/session/return", + input, + isSimulatorBrowserReturnAcceptedV0, + signal, + ); + } + + private sessionRequest( + operation: SimulatorBrowserSessionOperationV0, + path: string, + body: unknown, + expected: BrowserSessionFieldsV0, + signal?: AbortSignal, + ): Promise { + return this.request( + operation, + path, + body, + (value) => this.matchesSession(value, expected), + signal, + ); + } + + private matchesSession(value: unknown, expected: BrowserSessionFieldsV0): boolean { + return matchesExpectedSimulatorBrowserSessionViewV0(value, { + runtimeEnvironment: "staging", + sessionId: expected.sessionId, + browserHandle: expected.browserHandle, + now: this.now().toISOString(), + }); + } + + private async request( + operation: SimulatorBrowserSessionOperationV0, + path: string, + body: unknown, + accepts: (value: unknown) => boolean, + signal?: AbortSignal, + ): Promise { + try { + const response = await this.fetcher(new URL(path, this.#baseOrigin), { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(body), + cache: "no-store", + credentials: "same-origin", + redirect: "error", + signal, + }); + if (!response.headers.get("content-type")?.toLowerCase().startsWith("application/json")) { + return stableError(operation, "response_invalid") as T; + } + const value: unknown = await response.json(); + const accepted = isSimulatorBrowserSessionErrorV0(value) + ? value.operation === operation + : accepts(value); + return (accepted ? value : stableError(operation, "response_invalid")) as T; + } catch (cause) { + if (signal?.aborted) throw cause; + return stableError(operation, "network_unavailable") as T; + } + } +} diff --git a/apps/authenticator/src/adapters/staging-compatibility.ts b/apps/authenticator/src/adapters/staging-compatibility.ts new file mode 100644 index 0000000..4ad44b2 --- /dev/null +++ b/apps/authenticator/src/adapters/staging-compatibility.ts @@ -0,0 +1,40 @@ +import type { + ApprovedCaptureEntry, +} from "@clean-start/frame-capture"; +import type { + BrowserAdmissionDecisionV1, +} from "@clean-start/browser-admission"; +import { + isSimulatorBrowserDemoAuthenticatorReadyV0, + type SimulatorBrowserDemoAuthenticatorReadyV0, +} from "@clean-start/contracts"; + +export function makeExplicitStagingCaptureEntryV0(input: { + readonly admission: BrowserAdmissionDecisionV1; + readonly ready: SimulatorBrowserDemoAuthenticatorReadyV0; + readonly userActivated: boolean; +}): ApprovedCaptureEntry { + const { admission, ready } = input; + if ( + admission.outcome !== "eligible_candidate" || + admission.mayStartSensitiveFlow !== true || + admission.iosVersionBand !== "ios_18_plus" || + (admission.browser !== "safari" && admission.browser !== "chrome") || + !isSimulatorBrowserDemoAuthenticatorReadyV0(ready) || + ready.claims.webauthnPerformed !== false || + ready.claims.prfEvaluated !== false || + ready.claims.worldIdCreated !== false + ) { + throw new TypeError("staging_capture_gate_not_satisfied"); + } + + return Object.freeze({ + userActivated: input.userActivated, + secureTopLevelContextApproved: true, + // Compatibility translation only. The ready object above explicitly proves + // that no PRF operation happened, and this value is never rendered as fact. + prfReady: true, + iosMajor: 18, + browser: admission.browser, + }); +} diff --git a/apps/authenticator/src/assets/capture-oval-geometry.ts b/apps/authenticator/src/assets/capture-oval-geometry.ts new file mode 100644 index 0000000..a24e85a --- /dev/null +++ b/apps/authenticator/src/assets/capture-oval-geometry.ts @@ -0,0 +1,6 @@ +// Derived from the exact circle-center coordinates in Figma node 5132:134743. +// Each point is moved 8 px toward the viewBox center. With the 2.94866 px dot +// radius, this leaves an approximately 5 px visible gap between ring and video. +export const CAPTURE_OVAL_DOT_COUNT_V1 = 64; +export const CAPTURE_OVAL_VIDEO_INSET_PX_V1 = 8; +export const CAPTURE_OVAL_CLIP_PATH_V1 = "polygon(48.4464% 2.2939%, 54.1192% 2.3973%, 59.8118% 3.0064%, 65.3114% 4.1029%, 70.5780% 5.6714%, 75.5649% 7.7023%, 80.1001% 10.1180%, 84.3236% 12.9851%, 88.0031% 16.1780%, 91.0783% 19.6362%, 93.5351% 23.3255%, 95.3497% 27.2088%, 96.4932% 31.2436%, 96.9424% 35.3969%, 96.9285% 39.4778%, 96.8295% 43.5337%, 96.8105% 47.6218%, 96.7052% 51.6501%, 96.4122% 55.6678%, 95.6960% 59.7071%, 94.5697% 63.6616%, 93.0717% 67.5686%, 91.1943% 71.4664%, 88.9976% 75.2201%, 86.4422% 78.8753%, 83.5207% 82.3871%, 80.1700% 85.7529%, 76.4190% 88.8579%, 72.2369% 91.6422%, 67.5727% 94.0362%, 62.4584% 95.9135%, 56.9989% 97.1522%, 51.1253% 97.6956%, 45.4105% 97.4894%, 39.8525% 96.5119%, 34.6027% 94.8802%, 29.7405% 92.6998%, 25.3542% 90.0701%, 21.3868% 87.0606%, 17.8491% 83.8123%, 14.7317% 80.3808%, 12.0269% 76.8238%, 9.6578% 73.0825%, 7.6847% 69.2925%, 6.0439% 65.3643%, 4.7925% 61.4662%, 3.8722% 57.4016%, 3.3540% 53.4461%, 3.2104% 49.2278%, 3.1630% 45.1921%, 3.1262% 41.0982%, 3.0262% 37.0214%, 3.2244% 32.9646%, 4.0797% 28.9041%, 5.6088% 24.9719%, 7.7848% 21.2112%, 10.6478% 17.5902%, 13.9947% 14.3504%, 18.0294% 11.2939%, 22.4524% 8.6782%, 27.2382% 6.4910%, 32.3363% 4.7420%, 37.8746% 3.4113%, 43.4868% 2.5973%)"; diff --git a/apps/authenticator/src/assets/provenance.ts b/apps/authenticator/src/assets/provenance.ts new file mode 100644 index 0000000..12be21d --- /dev/null +++ b/apps/authenticator/src/assets/provenance.ts @@ -0,0 +1,47 @@ +export interface FigmaAssetProvenanceV1 { + readonly localPath: `/assets/figma/${string}`; + readonly nodeId: `5132:${number}`; + readonly sourceUrl: `https://www.figma.com/api/mcp/asset/${string}`; + readonly sha256: string; + readonly purpose: string; +} + +export const FIGMA_ASSET_PROVENANCE_V1 = Object.freeze([ + { localPath: "/assets/figma/zoom-app-icon.png", nodeId: "5132:134352", sourceUrl: "https://www.figma.com/api/mcp/asset/f74f1a52-3b0c-456d-a8a1-9580acc91f99.png", sha256: "5dba613c9919c1d0e8ff72aa57f860c85e727364939685a4630d9199bed5efb9", purpose: "Zoom wordmark inside the RP icon" }, + { localPath: "/assets/figma/human-emblem.svg", nodeId: "5132:134352", sourceUrl: "https://www.figma.com/api/mcp/asset/8d74901f-d2fa-4734-af04-c57af0a4d676.svg", sha256: "57859d4d34ced3758dcb099eba5ba9c12de04bd2d0d9202223472a05a3ad802b", purpose: "Staging workflow result disclosure" }, + { localPath: "/assets/figma/disclosure-check.svg", nodeId: "5132:134352", sourceUrl: "https://www.figma.com/api/mcp/asset/e273220e-71af-4d7c-8d25-fac1d2341eb3.svg", sha256: "58c175883fd32c423ad0db2e8b997711124193387379f80d91b8c37058643777", purpose: "Disclosure included marker" }, + { localPath: "/assets/figma/person-circle.svg", nodeId: "5132:134352", sourceUrl: "https://www.figma.com/api/mcp/asset/13368a6a-b3ab-43fe-8c5f-4eded03075b5.svg", sha256: "5a22414bbd7a80fcc6ca7d1b2ba4428d271264a6bbcfa7b895608a218ed64145", purpose: "Camera-image disclosure" }, + { localPath: "/assets/figma/disclosure-x.svg", nodeId: "5132:134352", sourceUrl: "https://www.figma.com/api/mcp/asset/8901d1e1-7336-4b8a-a73a-116913273553.svg", sha256: "6de075118b644e8e6fae0271446ca7beb5e907164d8d234dcd17c848de746eaa", purpose: "Disclosure excluded marker" }, + { localPath: "/assets/figma/person-key.svg", nodeId: "5132:134352", sourceUrl: "https://www.figma.com/api/mcp/asset/23a14793-2281-4843-a7b0-14e51bd66e94.svg", sha256: "8ef83afab0b409d492a74486a2d7ed497b59fa3e6296cb44b931ec24d41fde70", purpose: "Passkey and World ID disclosure" }, + { localPath: "/assets/figma/person-key-blue.svg", nodeId: "5132:134394", sourceUrl: "https://www.figma.com/api/mcp/asset/07bcbe07-ecdb-415c-88db-2d594d91734e.svg", sha256: "01cbc96f0451a240374b3d040c7f66ef39cb2b23fef3aeaf4001b88cdb9a95d1", purpose: "Authenticator screen illustration" }, + { localPath: "/assets/figma/person-key-disabled.svg", nodeId: "5132:134441", sourceUrl: "https://www.figma.com/api/mcp/asset/d986c10a-7a07-4db7-ad52-0bc173b45ceb.svg", sha256: "c96d648958f4d1c03d290b48486380267a19e1c1e7d869b35277fb3bf6fc9c8c", purpose: "Authenticator error illustration" }, + { localPath: "/assets/figma/selfie-emblem.svg", nodeId: "5132:134643", sourceUrl: "https://www.figma.com/api/mcp/asset/0b0666f6-d7b3-4de1-860e-cc593dc71821.svg", sha256: "5afac7cfb0d8740e1902e303f884db20539e686b0781be5fe85e9b0c9a567c00", purpose: "Camera introduction illustration" }, + { localPath: "/assets/figma/capture-ring-ready.svg", nodeId: "5132:134743", sourceUrl: "https://www.figma.com/api/mcp/asset/0908f5e3-7a93-4156-9da1-e041e98d9163.svg", sha256: "1c8340a8110ddfc95e5b3ca2cf3815eb91166efbd57d8f4223384c2eb1403b6b", purpose: "Capture preview guide" }, + { localPath: "/assets/figma/capture-ring-sampling.svg", nodeId: "5132:134841", sourceUrl: "https://www.figma.com/api/mcp/asset/a408a986-a083-41fd-b0ef-d217a07e7b2c.svg", sha256: "ef82fd23789114651997a6f34c8c8ba4ca3945a337d692f8544847c82676c21b", purpose: "Capture sampling guide" }, + { localPath: "/assets/figma/capture-ring-complete.svg", nodeId: "5132:134939", sourceUrl: "https://www.figma.com/api/mcp/asset/3ffd0e27-110e-462c-9d66-eec1b9157bdf.svg", sha256: "5cc3dc23cb2f7e9de2126a38303017932a852ff600772647e63c5315d6412721", purpose: "Capture-complete guide" }, + { localPath: "/assets/figma/capture-check.svg", nodeId: "5132:134939", sourceUrl: "https://www.figma.com/api/mcp/asset/4d4f6ad4-9fe9-49fe-aaa3-6b3f9b867d88.svg", sha256: "b6383e100e675e7d80c869ce5137efddc87970a29bd34740b526f6ae0bec7e8c", purpose: "Capture-complete marker" }, + { localPath: "/assets/figma/simulation-progress.svg", nodeId: "5132:135038", sourceUrl: "https://www.figma.com/api/mcp/asset/4de20e04-08c1-4836-afd6-f525fbbb9b69.svg", sha256: "3ddb7b0615b908730d2d9698b11bb3230bceddeb1bbe49b673d60ad8784e664a", purpose: "Simulator pending illustration" }, + { localPath: "/assets/figma/close.svg", nodeId: "5132:135038", sourceUrl: "https://www.figma.com/api/mcp/asset/6616a081-8545-4f2c-b570-d6d114bbf8a3.svg", sha256: "10edfc1412b602997712e67ea1e01dd12f7c89f3c2da9053c6e7bddd02a42400", purpose: "Top-left close glyph" }, + { localPath: "/assets/figma/verification-complete.svg", nodeId: "5132:135071", sourceUrl: "https://www.figma.com/api/mcp/asset/6ece6628-e2d6-4b43-9573-03acda2dfd61.svg", sha256: "da55efa462ccd970f7ca4b9e1f3682f6e69cb57a582a480fd53b5b8f9f1f9e7b", purpose: "Verification-complete illustration (ring fully blue)" }, + { localPath: "/assets/figma/success-emblem.svg", nodeId: "5132:135104", sourceUrl: "https://www.figma.com/api/mcp/asset/8d5d519c-4cec-449e-85b9-b2054d417f20.svg", sha256: "30b39383c0f2a68fc1a439adcae7f482bb089b9a5262663f90fc3a14580af8b0", purpose: "Selfie check success illustration" }, +] as const satisfies readonly FigmaAssetProvenanceV1[]); + +export const FIGMA_ASSET_PATHS_V1 = Object.freeze({ + zoom: "/assets/figma/zoom-app-icon.png", + humanEmblem: "/assets/figma/human-emblem.svg", + disclosureCheck: "/assets/figma/disclosure-check.svg", + personCircle: "/assets/figma/person-circle.svg", + disclosureX: "/assets/figma/disclosure-x.svg", + personKey: "/assets/figma/person-key.svg", + personKeyBlue: "/assets/figma/person-key-blue.svg", + personKeyDisabled: "/assets/figma/person-key-disabled.svg", + selfieEmblem: "/assets/figma/selfie-emblem.svg", + captureRingReady: "/assets/figma/capture-ring-ready.svg", + captureRingSampling: "/assets/figma/capture-ring-sampling.svg", + captureRingComplete: "/assets/figma/capture-ring-complete.svg", + captureCheck: "/assets/figma/capture-check.svg", + simulationProgress: "/assets/figma/simulation-progress.svg", + close: "/assets/figma/close.svg", + verificationComplete: "/assets/figma/verification-complete.svg", + successEmblem: "/assets/figma/success-emblem.svg", +} as const); diff --git a/apps/authenticator/src/components/FlowScreen.tsx b/apps/authenticator/src/components/FlowScreen.tsx new file mode 100644 index 0000000..946377d --- /dev/null +++ b/apps/authenticator/src/components/FlowScreen.tsx @@ -0,0 +1,438 @@ +import { useEffect, useRef, type CSSProperties, type RefObject } from "react"; +import { + AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, + AUTHENTICATOR_UI_COPY_V1, + AUTHENTICATOR_UI_DETAIL_COPY_V1, + AUTHENTICATOR_UI_STAGING_BANNER_V1, + type AuthenticatorUiActionV1, + type AuthenticatorUiDetailCodeV1, + type AuthenticatorUiSnapshotV1, + type AuthenticatorUiStateIdV1, +} from "@clean-start/contracts"; +import { FIGMA_ASSET_PATHS_V1 } from "../assets/provenance"; +import { CAPTURE_OVAL_CLIP_PATH_V1 } from "../assets/capture-oval-geometry"; +import { SCREEN_RENDER_REGISTRY_V1 } from "../flow/render-registry"; + +export interface FlowScreenPropsV1 { + readonly snapshot: AuthenticatorUiSnapshotV1; + readonly onAction: (action: AuthenticatorUiActionV1) => void; + readonly videoRef?: RefObject; + readonly canvasRef?: RefObject; + readonly bannerText?: string | null; + readonly copyOverride?: Partial<{ + readonly heading: string; + readonly body: string; + readonly primaryAction: string | null; + readonly secondaryAction: string | null; + }>; + readonly actionLabelOverrides?: Partial>; + readonly actionsDisabled?: boolean; + readonly disclosure?: FlowScreenDisclosureV1; + readonly heroOverride?: FlowScreenHeroV1; + readonly detailCopyOverrides?: Partial>; + readonly showTemplateNotice?: boolean; + readonly liveCaptureGuidance?: { + readonly code: string; + readonly text: string; + }; + readonly captureProgress?: number; + readonly hiddenActions?: readonly AuthenticatorUiActionV1[]; +} + +export interface FlowScreenDisclosureRowV1 { + readonly icon: string; + readonly text: string; + readonly included: boolean; +} + +export interface FlowScreenDisclosureV1 { + readonly partnerIcon: string; + readonly partnerAlt: string; + readonly partnerTone: "brand" | "neutral"; + readonly heading: string; + readonly rows: readonly FlowScreenDisclosureRowV1[]; +} + +export interface FlowScreenHeroV1 { + readonly src: string; + readonly alt: string; +} + +// Default disclosure for the production-gated route: negative assurance only. +export const STAGING_DISCLOSURE_V1: FlowScreenDisclosureV1 = Object.freeze({ + partnerIcon: FIGMA_ASSET_PATHS_V1.zoom, + partnerAlt: "Zoom", + partnerTone: "brand", + heading: "App will receive", + rows: Object.freeze([ + Object.freeze({ icon: FIGMA_ASSET_PATHS_V1.humanEmblem, text: "Staging workflow result", included: true }), + Object.freeze({ icon: FIGMA_ASSET_PATHS_V1.personCircle, text: "Camera images stay on this device", included: false }), + Object.freeze({ icon: FIGMA_ASSET_PATHS_V1.personKey, text: "No passkey or World ID is created", included: false }), + ]), +}); + +const ACTION_LABELS: Readonly> = { + continue: "Continue", + cancel: "Cancel", + open_external_browser: "Open browser", + start_demo_authenticator: "Continue with demo authenticator", + continue_to_camera: "Continue to camera", + start_camera: "Start camera demo", + collect_frame_metadata: "Collect frame metadata", + try_again: "Try again", + continue_without_guidance: "Continue without guidance", + retake: "Retake", + retry_same_operation: "Retry", + query_status: "Check status", + return_to_rp: "Return to app", + close: "Close", +}; + +function labelFor( + action: AuthenticatorUiActionV1, + index: number, + copy: (typeof AUTHENTICATOR_UI_COPY_V1)[keyof typeof AUTHENTICATOR_UI_COPY_V1], + overrides?: Partial>, +): string { + if (overrides?.[action] !== undefined) return overrides[action]; + if (index === 0 && copy.primaryAction !== null) return copy.primaryAction; + if (action === "cancel" && copy.secondaryAction !== null) return copy.secondaryAction; + if (index === 1 && copy.secondaryAction !== null && action !== "query_status") { + return copy.secondaryAction; + } + return ACTION_LABELS[action]; +} + +export const AUTHENTICATOR_UI_ALERT_STATES_V1 = Object.freeze([ + "request_invalid", + "request_expired", + "request_return_target_invalid", + "request_rp_identity_unavailable", + "admission_handoff_failed", + "admission_update_required", + "admission_unsupported", + "admission_insecure", + "admission_framed", + "admission_private", + "admission_pwa", + "admission_unknown", + "demo_authenticator_non_completion", + "demo_authenticator_unavailable", + "demo_authenticator_interrupted", + "demo_authenticator_transport_failure", + "demo_authenticator_invalid_response", + "session_error", + "capture_guidance_adjust", + "capture_guidance_retake", + "capture_guidance_unavailable", + "capture_error", + "biometric_simulated_reject", + "biometric_simulated_retry", + "biometric_simulated_unavailable", + "issuance_simulated_reject", + "issuance_simulated_unavailable", + "return_callback_failed", + "flow_expired", + "flow_failed", +] as const satisfies readonly AuthenticatorUiStateIdV1[]); + +const ALERT_STATE_SET_V1 = new Set( + AUTHENTICATOR_UI_ALERT_STATES_V1, +); + +export function isAuthenticatorUiAlertStateV1( + state: AuthenticatorUiStateIdV1, +): boolean { + return ALERT_STATE_SET_V1.has(state); +} + +function RequestContentV1({ + heading, + body, + disclosure, +}: { + readonly heading: string; + readonly body: string; + readonly disclosure: FlowScreenDisclosureV1; +}) { + return
    +
    +
    + {disclosure.partnerAlt} +
    +
    +

    {heading}

    + {body ?

    {body}

    : null} +
    +
    +
    +
    +

    {disclosure.heading}

    + {disclosure.rows.map((row) => )} +
    +
    ; +} + +function DisclosureRowV1(props: { + readonly icon: string; + readonly marker: string; + readonly text: string; + readonly muted?: boolean; +}) { + return
    + + {props.text} + {props.muted +
    ; +} + +function CenteredContentV1(props: { + readonly heading: string; + readonly body: string; + readonly icon?: string; + readonly iconMuted?: boolean; + readonly pending?: boolean; + readonly partnerIcon?: FlowScreenHeroV1; + readonly detail?: string; + readonly notFigmaVerified?: boolean; +}) { + return
    + {props.notFigmaVerified ?

    Template view · Not Figma verified

    : null} + {props.partnerIcon ?
    + {props.partnerIcon.alt} +
    : null} + {props.icon && !props.partnerIcon ? : null} +
    +

    {props.heading}

    + {props.body ?

    {props.body}

    : null} + {props.detail ?

    {props.detail}

    : null} +
    +
    ; +} + +function CaptureContentV1(props: { + readonly snapshot: AuthenticatorUiSnapshotV1; + readonly heading: string; + readonly body: string; + readonly liveGuidance?: { + readonly code: string; + readonly text: string; + }; + readonly captureProgress?: number; +}) { + const isSampling = props.snapshot.visualSource === "figma_5132_134841"; + const isComplete = props.snapshot.visualSource === "figma_5132_134939"; + const staticRing = isComplete + ? FIGMA_ASSET_PATHS_V1.captureRingComplete + : isSampling + ? FIGMA_ASSET_PATHS_V1.captureRingSampling + : FIGMA_ASSET_PATHS_V1.captureRingReady; + const dynamicProgress = props.captureProgress === undefined + ? undefined + : Math.max(0, Math.min(1, props.captureProgress)); + const progressComplete = dynamicProgress === 1; + const progressStyle = dynamicProgress === undefined + ? undefined + : { + "--capture-progress-angle": `${dynamicProgress * 360}deg`, + } as CSSProperties; + return <> + +
    + {isComplete || progressComplete + ? + : null} +

    {progressComplete + ? "You’re all set" + : props.liveGuidance?.text ?? props.heading}

    +
    +

    {props.body}

    + ; +} + +export function FlowScreenV1({ + snapshot, + onAction, + videoRef, + canvasRef, + bannerText = AUTHENTICATOR_UI_STAGING_BANNER_V1, + copyOverride, + actionLabelOverrides, + actionsDisabled = false, + disclosure = STAGING_DISCLOSURE_V1, + heroOverride, + detailCopyOverrides, + showTemplateNotice = true, + liveCaptureGuidance, + captureProgress, + hiddenActions = [], +}: FlowScreenPropsV1) { + const headingRef = useRef(null); + const descriptor = SCREEN_RENDER_REGISTRY_V1[snapshot.state]; + const copy = Object.freeze({ + ...AUTHENTICATOR_UI_COPY_V1[snapshot.state], + ...copyOverride, + }); + const actions = AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[snapshot.state]; + const detail = snapshot.detailCode === null + ? undefined + : detailCopyOverrides?.[snapshot.detailCode] ?? + AUTHENTICATOR_UI_DETAIL_COPY_V1[snapshot.detailCode]; + const captureVisible = descriptor.family === "capture"; + const activeLiveGuidance = snapshot.state === "capture_preview" || + snapshot.state === "capture_sampling" + ? liveCaptureGuidance + : undefined; + + useEffect(() => { + const heading = document.querySelector("main h1"); + headingRef.current = heading; + heading?.focus({ preventScroll: true }); + }, [snapshot.state]); + + const centeredIcon = descriptor.family === "authenticator" + ? snapshot.state.includes("unavailable") || snapshot.state.includes("non_completion") + ? FIGMA_ASSET_PATHS_V1.personKeyDisabled + : FIGMA_ASSET_PATHS_V1.personKeyBlue + : descriptor.family === "camera_intro" + ? FIGMA_ASSET_PATHS_V1.selfieEmblem + : descriptor.family === "simulation_pending" + ? FIGMA_ASSET_PATHS_V1.simulationProgress + : descriptor.family === "verification_complete" + ? FIGMA_ASSET_PATHS_V1.verificationComplete + : descriptor.family === "success" + ? FIGMA_ASSET_PATHS_V1.successEmblem + : undefined; + const statusIllustration = descriptor.family === "simulation_pending" || + descriptor.family === "verification_complete" || + descriptor.family === "success"; + const alert = isAuthenticatorUiAlertStateV1(snapshot.state); + const hasTopCancel = actions.includes("cancel") && [ + "authenticator", + "camera_intro", + "capture", + "simulation_pending", + "verification_complete", + "success", + ].includes(descriptor.family); + const footerActions = (hasTopCancel + ? actions.filter((action) => action !== "cancel") + : actions).filter((action) => !hiddenActions.includes(action)); + + return
    + {bannerText ?

    {bannerText}

    : null} + {hasTopCancel ? : null} + +
    + + {captureVisible ? : null} +
    + +
    + {descriptor.family === "request" ? : null} + {descriptor.family !== "request" && descriptor.family !== "capture" ? : null} +
    + + {footerActions.length > 0 ? : null} +
    ; +} diff --git a/apps/authenticator/src/components/WalkthroughPanel.tsx b/apps/authenticator/src/components/WalkthroughPanel.tsx new file mode 100644 index 0000000..4cb0f07 --- /dev/null +++ b/apps/authenticator/src/components/WalkthroughPanel.tsx @@ -0,0 +1,95 @@ +import type { AuthenticatorUiStateIdV1 } from "@clean-start/contracts"; +import type { + LivePasskeyStatusV1, + LivePrfCapabilityV1, +} from "../walkthrough/live-passkey"; +import type { WalkthroughCameraStatusV1 } from "../walkthrough/walkthrough-adapters"; + +export interface WalkthroughPanelPropsV1 { + readonly state: AuthenticatorUiStateIdV1; + readonly passkeyStatus: LivePasskeyStatusV1; + readonly prfCapability: LivePrfCapabilityV1; + readonly cameraStatus: WalkthroughCameraStatusV1; + readonly onRestart: () => void; +} + +function stepFor(state: AuthenticatorUiStateIdV1): number { + if (state.startsWith("request_")) return 1; + if (state.startsWith("admission_")) return 2; + if (state.startsWith("demo_authenticator_") || state === "session_creating") return 3; + if (state.startsWith("capture_") || state === "session_completing_authenticator") return 4; + if ( + state.startsWith("biometric_") || + state.startsWith("issuance_") || + state === "session_reconciling" || + state === "session_error" + ) return 5; + return 6; +} + +const PASSKEY_LABELS: Readonly> = Object.freeze({ + idle: "Ready to try", + requesting: "Browser prompt open", + created: "Created by browser", + unsupported: "Unavailable · simulator continued", + cancelled: "Not completed · simulator continued", + failed: "Failed safely · simulator continued", +}); + +const CAMERA_LABELS: Readonly> = Object.freeze({ + idle: "Waiting", + requesting: "Requesting browser camera", + live: "Live camera + on-device guidance", + synthetic_fallback: "Synthetic metadata fallback", + live_complete: "Live metadata submitted", + synthetic_complete: "Synthetic metadata submitted", + failed: "Stopped safely", +}); + +export function WalkthroughPanelV1(props: WalkthroughPanelPropsV1) { + return
    ; +} diff --git a/apps/authenticator/src/flow/controller.ts b/apps/authenticator/src/flow/controller.ts new file mode 100644 index 0000000..ec3157a --- /dev/null +++ b/apps/authenticator/src/flow/controller.ts @@ -0,0 +1,571 @@ +import type { + BrowserAdmissionDecisionV1, +} from "@clean-start/browser-admission"; +import { + AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, + AUTHENTICATOR_UI_INITIAL_EFFECTS_V1, + SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, + SIMULATOR_BROWSER_SESSION_ERROR_V0, + SIMULATOR_BROWSER_SESSION_VIEW_V0, + SIMULATOR_UI_BOOTSTRAP_V0, + dispatchAuthenticatorUiActionV1, + makeAuthenticatorUiEventV1, + makeAuthenticatorUiSnapshotV1, + matchesExpectedSimulatorBrowserDemoAuthenticatorReadyV0, + matchesExpectedSimulatorBrowserSessionViewV0, + projectSimulatorBrowserErrorToUiEventV1, + transitionAuthenticatorUiV1, + type AuthenticatorUiActionV1, + type AuthenticatorUiEffectV1, + type AuthenticatorUiEventTypeV1, + type AuthenticatorUiSnapshotV1, + type AuthenticatorUiTransitionV1, + type FrameBundleV0, + type SimulatorBrowserDemoAuthenticatorReadyV0, + type SimulatorBrowserSessionErrorV0, + type SimulatorBrowserSessionViewV0, + type SimulatorUiBootstrapV0, +} from "@clean-start/contracts"; +import type { BrowserAdmissionAdapterV1 } from "../adapters/browser-admission"; +import type { + BrowserCaptureAdapterV1, + BrowserCaptureCallbacksV1, +} from "../adapters/browser-capture"; +import type { AbortableSimulatorBrowserSessionPortV0 } from "../adapters/http-session"; +import { makeExplicitStagingCaptureEntryV0 } from "../adapters/staging-compatibility"; + +export interface AuthenticatorFlowControllerOptionsV1 { + readonly sessionPort: AbortableSimulatorBrowserSessionPortV0; + readonly admission: BrowserAdmissionAdapterV1; + readonly capture: BrowserCaptureAdapterV1; + readonly initialSnapshot?: AuthenticatorUiSnapshotV1; + readonly initialSession?: SimulatorBrowserSessionViewV0; + readonly closeLocally?: () => void; + readonly navigateReturned?: () => void; + readonly onEffect?: (effect: AuthenticatorUiEffectV1) => void; + readonly now?: () => Date; +} + +type SubscriberV1 = (snapshot: AuthenticatorUiSnapshotV1) => void; + +function randomId(prefix: string): string { + const bytes = crypto.getRandomValues(new Uint8Array(18)); + const encoded = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join(""); + return `${prefix}-${encoded}`; +} + +async function sha256Text(value: string): Promise { + const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value)); + return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join(""); +} + +function admissionEvent(decision: BrowserAdmissionDecisionV1): AuthenticatorUiEventTypeV1 { + if (decision.outcome === "eligible_candidate") { + return decision.browser === "chrome" + ? "admission_chrome_candidate" + : "admission_safari_candidate"; + } + if (decision.outcome === "ios_update_required") return "admission_update_required"; + if (decision.outcome === "embedded_browser_handoff") return "admission_handoff_required"; + if (decision.outcome === "context_not_top_level") return "admission_framed"; + if (decision.outcome === "insecure_context") return "admission_insecure"; + if (decision.outcome === "private_or_unknown_context") { + return decision.context === "installed_pwa" ? "admission_pwa" : "admission_private"; + } + if (decision.outcome === "unsupported" || decision.outcome === "uv_unavailable") { + return "admission_unsupported"; + } + return "admission_unknown"; +} + +export class AuthenticatorFlowControllerV1 { + private snapshotValue: AuthenticatorUiSnapshotV1; + private readonly subscribers = new Set(); + private readonly activeControllers = new Set(); + private readonly tasks = new Set>(); + private bootstrapValue?: SimulatorUiBootstrapV0; + private sessionValue?: SimulatorBrowserSessionViewV0; + private demoReadyValue?: SimulatorBrowserDemoAuthenticatorReadyV0; + private admissionValue?: BrowserAdmissionDecisionV1; + private artifactValue?: FrameBundleV0; + private nonceDigestValue?: string; + private captureNonceBase64Url?: string; + private createIdempotencyKey = randomId("create"); + private demoIdempotencyKey = randomId("demo"); + private captureIdempotencyKey = randomId("capture"); + private retryIdempotencyKey = randomId("retry"); + private retakesUsed = 0; + private started = false; + private readonly now: () => Date; + + constructor(private readonly options: AuthenticatorFlowControllerOptionsV1) { + this.now = options.now ?? (() => new Date()); + this.snapshotValue = options.initialSnapshot ?? makeAuthenticatorUiSnapshotV1({ + state: "request_checking", + visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1.request_checking, + }); + this.sessionValue = options.initialSession; + } + + get snapshot(): AuthenticatorUiSnapshotV1 { + return this.snapshotValue; + } + + subscribe(subscriber: SubscriberV1): () => void { + this.subscribers.add(subscriber); + try { + subscriber(this.snapshotValue); + } catch { + this.subscribers.delete(subscriber); + } + return () => this.subscribers.delete(subscriber); + } + + start(): void { + if (this.started) return; + this.started = true; + if (this.snapshotValue.state === "request_checking") { + this.launch(AUTHENTICATOR_UI_INITIAL_EFFECTS_V1); + } + } + + act(action: AuthenticatorUiActionV1): boolean { + if ( + action === "try_again" || + action === "retake" || + action === "continue_without_guidance" + ) this.retakesUsed += 1; + const transition = dispatchAuthenticatorUiActionV1(this.snapshotValue, action); + if (transition === null) return false; + this.apply(transition); + return true; + } + + interrupt(event: Extract): void { + this.emit(event); + } + + dispose(): void { + this.interrupt("component_unmounted"); + this.subscribers.clear(); + } + + async waitForIdle(): Promise { + while (this.tasks.size > 0) { + await Promise.allSettled([...this.tasks]); + } + } + + private emit( + event: AuthenticatorUiEventTypeV1, + fields: Partial<{ + detailCode: Parameters[0]["detailCode"]; + authoritativeSessionState: Parameters[0]["authoritativeSessionState"]; + rpPresentationId: Parameters[0]["rpPresentationId"]; + }> = {}, + ): boolean { + const transition = transitionAuthenticatorUiV1( + this.snapshotValue, + makeAuthenticatorUiEventV1({ event, ...fields }), + ); + if (transition === null) return false; + this.apply(transition); + return true; + } + + private apply(transition: AuthenticatorUiTransitionV1): void { + this.snapshotValue = transition.snapshot; + for (const subscriber of this.subscribers) { + try { + subscriber(this.snapshotValue); + } catch { + this.subscribers.delete(subscriber); + } + } + this.launch(transition.effects); + } + + private launch(effects: readonly AuthenticatorUiEffectV1[]): void { + if (effects.length === 0) return; + const task = this.runEffects(effects) + .catch(() => { + this.emit("fatal_error", { detailCode: "safe_internal_error" }); + }) + .finally(() => this.tasks.delete(task)); + this.tasks.add(task); + } + + private async runEffects(effects: readonly AuthenticatorUiEffectV1[]): Promise { + for (const effect of effects) { + this.options.onEffect?.(effect); + await this.runEffect(effect); + } + if ( + this.snapshotValue.state === "flow_cancelling" && + this.snapshotValue.authoritativeSessionState === null && + !effects.includes("cancel_session") + ) this.emit("local_cancel_complete"); + } + + private async abortable( + operation: (signal: AbortSignal) => Promise, + ): Promise { + const controller = new AbortController(); + this.activeControllers.add(controller); + try { + const result = await operation(controller.signal); + return controller.signal.aborted ? undefined : result; + } catch (cause) { + if (controller.signal.aborted) return undefined; + throw cause; + } finally { + this.activeControllers.delete(controller); + } + } + + private sessionFields(): { readonly sessionId: string; readonly browserHandle: string } | null { + return this.sessionValue === undefined ? null : { + sessionId: this.sessionValue.sessionId, + browserHandle: this.sessionValue.browserHandle, + }; + } + + private handleError(value: SimulatorBrowserSessionErrorV0): void { + if (value.reasonCode === "expired") { + this.emit("session_expired"); + return; + } + const projected = projectSimulatorBrowserErrorToUiEventV1(value); + if (projected === null) { + this.emit("fatal_error", { detailCode: "safe_internal_error" }); + return; + } + const transition = transitionAuthenticatorUiV1(this.snapshotValue, projected); + if (transition !== null) this.apply(transition); + } + + private async acceptSessionResult( + result: SimulatorBrowserSessionViewV0 | SimulatorBrowserSessionErrorV0, + prepareNonce = false, + ): Promise { + if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + this.handleError(result); + return; + } + if (result.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) { + this.emit("session_failed", { detailCode: "response_invalid" }); + return; + } + const expected = this.sessionValue === undefined + ? { sessionId: result.sessionId, browserHandle: result.browserHandle } + : { sessionId: this.sessionValue.sessionId, browserHandle: this.sessionValue.browserHandle }; + const validBinding = matchesExpectedSimulatorBrowserSessionViewV0(result, { + runtimeEnvironment: "staging", + ...expected, + now: this.now().toISOString(), + }); + if ( + !validBinding || + (this.sessionValue === undefined && + (result.state !== "created" || result.code !== "created")) + ) { + this.emit("session_failed", { detailCode: "response_invalid" }); + return; + } + if (result.state === "capture_ready") { + if ( + this.captureNonceBase64Url !== undefined && + this.captureNonceBase64Url !== result.nonceBase64Url + ) { + this.captureIdempotencyKey = randomId("capture"); + } + this.captureNonceBase64Url = result.nonceBase64Url; + } + this.sessionValue = result; + if (prepareNonce || result.state === "capture_ready") { + this.nonceDigestValue = await sha256Text(result.nonceBase64Url); + } + this.emit("authoritative_session", { authoritativeSessionState: result.state }); + } + + private async runEffect(effect: AuthenticatorUiEffectV1): Promise { + if (effect === "abort_active_effects") { + for (const controller of this.activeControllers) controller.abort(); + this.artifactValue = undefined; + this.nonceDigestValue = undefined; + return; + } + if (effect === "stop_capture") { + this.options.capture.stop(); + return; + } + if (effect === "clear_transient_media") { + this.options.capture.clearTransientMedia(); + return; + } + if (effect === "close_locally") { + this.options.closeLocally?.(); + return; + } + if (effect === "evaluate_quality" || effect === "collect_frame_metadata") { + this.options.capture.requestMetadataCollection(); + return; + } + if (effect === "validate_request") { + const result = await this.abortable((signal) => this.options.sessionPort.bootstrap(signal)); + if (result === undefined) return; + if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + this.handleError(result); + } else if (result.kind === SIMULATOR_UI_BOOTSTRAP_V0) { + this.bootstrapValue = result; + this.emit("request_accepted", { rpPresentationId: result.rpPresentationId }); + } else { + this.emit("fatal_error", { detailCode: "safe_internal_error" }); + } + return; + } + if (effect === "evaluate_admission") { + const result = await this.abortable((signal) => this.options.admission.evaluate(signal)); + if (result === undefined) return; + this.admissionValue = result; + this.emit(admissionEvent(result)); + return; + } + if (effect === "open_external_browser") { + try { + await this.abortable((signal) => this.options.admission.openExternalBrowser(signal)); + } catch { + this.emit("handoff_failed"); + } + return; + } + if (effect === "create_session") { + const result = await this.abortable((signal) => + this.options.sessionPort.createSession( + { idempotencyKey: this.createIdempotencyKey }, + signal, + )); + if (result !== undefined) await this.acceptSessionResult(result); + return; + } + if (effect === "begin_demo_authenticator") { + const fields = this.sessionFields(); + if (fields === null) { + this.emit("fatal_error", { detailCode: "safe_internal_error" }); + return; + } + const result = await this.abortable((signal) => + this.options.sessionPort.beginDemoAuthenticator({ + ...fields, + idempotencyKey: this.demoIdempotencyKey, + }, signal)); + if (result === undefined) return; + if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + this.handleError(result); + } else if ( + result.kind === SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0 && + matchesExpectedSimulatorBrowserDemoAuthenticatorReadyV0(result, { + runtimeEnvironment: "staging", + sessionId: fields.sessionId, + idempotencyKey: this.demoIdempotencyKey, + now: this.now().toISOString(), + }) && + this.sessionValue !== undefined && + Date.parse(result.expiresAt) <= Date.parse(this.sessionValue.expiresAt) + ) { + this.demoReadyValue = result; + this.emit("demo_authenticator_ready"); + } else { + this.emit("demo_authenticator_invalid_response"); + } + return; + } + if (effect === "complete_demo_authenticator") { + const fields = this.sessionFields(); + const ready = this.demoReadyValue; + if (fields === null || ready === undefined) { + this.emit("demo_authenticator_invalid_response"); + return; + } + const result = await this.abortable((signal) => + this.options.sessionPort.completeDemoAuthenticator({ + ...fields, + idempotencyKey: ready.idempotencyKey, + completionHandle: ready.completionHandle, + }, signal)); + if (result !== undefined) await this.acceptSessionResult(result); + return; + } + if (effect === "prepare_capture") { + const fields = this.sessionFields(); + if (fields === null) { + this.emit("session_failed", { detailCode: "invalid_state" }); + return; + } + const result = await this.abortable((signal) => + this.options.sessionPort.prepareCapture(fields, signal)); + if (result !== undefined) await this.acceptSessionResult(result, true); + return; + } + if (effect === "start_capture") { + this.startCapture(); + return; + } + if (effect === "submit_capture") { + const fields = this.sessionFields(); + const session = this.sessionValue; + const artifact = this.artifactValue; + if (fields === null || session === undefined || artifact === undefined) { + this.emit("session_failed", { detailCode: "invalid_state" }); + return; + } + const result = await this.abortable((signal) => + this.options.sessionPort.submitCapture({ + ...fields, + idempotencyKey: this.captureIdempotencyKey, + nonceBase64Url: session.nonceBase64Url, + frameBundle: artifact, + }, signal)); + if (result !== undefined) { + await this.acceptSessionResult(result); + if (result.kind === SIMULATOR_BROWSER_SESSION_VIEW_V0) this.artifactValue = undefined; + } + return; + } + if (effect === "retry_unavailable") { + const fields = this.sessionFields(); + if (fields === null) { + this.emit("session_failed", { detailCode: "invalid_state" }); + return; + } + const result = await this.abortable((signal) => + this.options.sessionPort.retryUnavailable({ + ...fields, + idempotencyKey: this.retryIdempotencyKey, + }, signal)); + if (result !== undefined) await this.acceptSessionResult(result); + return; + } + if (effect === "query_status") { + const fields = this.sessionFields(); + if (fields === null) { + this.emit("session_failed", { detailCode: "invalid_state" }); + return; + } + const result = await this.abortable((signal) => + this.options.sessionPort.getStatus(fields, signal)); + if (result !== undefined) await this.acceptSessionResult(result, true); + return; + } + if (effect === "cancel_session") { + const fields = this.sessionFields(); + if (fields === null) { + this.emit("local_cancel_complete"); + return; + } + const result = await this.abortable((signal) => + this.options.sessionPort.cancel(fields, signal)); + if (result !== undefined) { + await this.acceptSessionResult(result); + this.sessionValue = undefined; + this.demoReadyValue = undefined; + } + return; + } + if (effect === "return_to_rp") { + const fields = this.sessionFields(); + if (fields === null) { + this.emit("return_failed", { detailCode: "return_target_invalid" }); + return; + } + const result = await this.abortable((signal) => + this.options.sessionPort.returnToRp(fields, signal)); + if (result === undefined) return; + if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + this.handleError(result); + } else if (result.kind === SIMULATOR_BROWSER_RETURN_ACCEPTED_V0) { + try { + this.options.navigateReturned?.(); + this.emit("return_completed"); + } catch { + this.emit("return_failed", { detailCode: "navigation_failed" }); + } + } else { + this.emit("return_failed", { detailCode: "navigation_failed" }); + } + } + } + + private startCapture(): void { + const session = this.sessionValue; + const bootstrap = this.bootstrapValue; + const ready = this.demoReadyValue; + const admission = this.admissionValue; + const nonceDigest = this.nonceDigestValue; + if ( + session === undefined || + bootstrap === undefined || + ready === undefined || + admission === undefined || + nonceDigest === undefined + ) { + this.emit("capture_failed", { detailCode: "prf_not_ready" }); + return; + } + let entry; + try { + entry = makeExplicitStagingCaptureEntryV0({ + admission, + ready, + userActivated: true, + }); + } catch { + this.emit("capture_failed", { detailCode: "unsupported_context" }); + return; + } + + const callbacks: BrowserCaptureCallbacksV1 = { + onCaptureState: (state) => { + if (state === "acquiring") this.emit("capture_acquiring"); + else if (state === "awaiting_first_frame") this.emit("capture_preparing"); + else if (state === "preview") this.emit("capture_preview"); + else if (state === "artifact_ready") this.emit("capture_artifact_ready"); + else if (state === "cleaning_up") this.emit("cleanup_started"); + }, + onQuality: (result) => { + const reason = result.reasonCodes[0]; + if (result.action === "ready") this.emit("quality_ready"); + else if (result.action === "adjust" && reason !== undefined) { + this.emit("quality_adjust", { detailCode: reason }); + } else if (result.action === "retake") { + this.emit("quality_retake", { detailCode: "image_blurry" }); + } else if (reason !== undefined) { + this.emit("quality_unavailable", { detailCode: reason }); + } + }, + onArtifactReady: (artifact) => { this.artifactValue = artifact; }, + onFailure: (code) => { + if (code === "session_expired") this.emit("session_expired"); + else this.emit("capture_failed", { detailCode: code }); + }, + onComplete: () => { this.emit("cleanup_complete"); }, + }; + try { + this.options.capture.start({ + entry, + policy: session.capturePolicy, + qualityPolicy: bootstrap.qualityPolicy, + sessionId: session.sessionId, + accountPublicMaterialDigestSha256: + bootstrap.accountPublicMaterialDigestSha256, + nonceDigestSha256: nonceDigest, + retakesUsed: this.retakesUsed, + }, callbacks); + } catch { + this.emit("capture_failed", { detailCode: "unknown" }); + } + } +} diff --git a/apps/authenticator/src/flow/render-registry.ts b/apps/authenticator/src/flow/render-registry.ts new file mode 100644 index 0000000..60b21ac --- /dev/null +++ b/apps/authenticator/src/flow/render-registry.ts @@ -0,0 +1,75 @@ +import { + AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, + AUTHENTICATOR_UI_STATES_V1, + type AuthenticatorUiStateIdV1, + type AuthenticatorUiVisualSourceV1, +} from "@clean-start/contracts"; + +export type AuthenticatorScreenFamilyV1 = + | "request" + | "authenticator" + | "camera_intro" + | "capture" + | "simulation_pending" + | "verification_complete" + | "success" + | "generic"; + +export interface AuthenticatorScreenDescriptorV1 { + readonly family: AuthenticatorScreenFamilyV1; + readonly visualSource: AuthenticatorUiVisualSourceV1; +} + +function familyFor(visualSource: AuthenticatorUiVisualSourceV1): AuthenticatorScreenFamilyV1 { + if (visualSource === "figma_5132_134352") return "request"; + if (visualSource.startsWith("figma_5132_13439") || + visualSource === "figma_5132_134441" || + visualSource === "figma_5132_134488" || + visualSource === "figma_5132_134535" || + visualSource === "figma_5132_134582_external") return "authenticator"; + if (visualSource === "figma_5132_134643" || visualSource === "figma_5132_134692_external") { + return "camera_intro"; + } + if ( + visualSource === "figma_5132_134743" || + visualSource === "figma_5132_134841" || + visualSource === "figma_5132_134939" + ) return "capture"; + if (visualSource === "figma_5132_135038") return "simulation_pending"; + if (visualSource === "figma_5132_135071") return "verification_complete"; + if (visualSource === "figma_5132_135104") return "success"; + return "generic"; +} + +export const SCREEN_RENDER_REGISTRY_V1 = Object.freeze(Object.fromEntries( + AUTHENTICATOR_UI_STATES_V1.map((state) => { + const visualSource = AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[state]; + return [state, Object.freeze({ family: familyFor(visualSource), visualSource })]; + }), +) as Record); + +export const FIGMA_SCREEN_MATRIX_V1 = Object.freeze({ + verified: Object.freeze([ + "5132:134352", + "5132:134394", + "5132:134441", + "5132:134488", + "5132:134535", + "5132:134582", + "5132:134643", + "5132:134692", + "5132:134743", + "5132:134841", + "5132:134939", + "5132:135038", + "5132:135071", + "5132:135104", + "5132:135141", + ] as const), + // Every direct frame of section 5132:134348 now has exact design context. + notFigmaVerified: Object.freeze([] as const), + // Inspected but not rendered: the dark "face locked" capture variant. The + // verified base capture frames (134743/134841/134939) are white, and the app + // follows those. + verifiedNotRendered: Object.freeze(["5132:135141"] as const), +}); diff --git a/apps/authenticator/src/main.tsx b/apps/authenticator/src/main.tsx new file mode 100644 index 0000000..44c5ae9 --- /dev/null +++ b/apps/authenticator/src/main.tsx @@ -0,0 +1,8 @@ +import { createRoot } from "react-dom/client"; +import { AuthenticatorAppV1 } from "./App"; +import "./styles/app.css"; + +const rootElement = document.getElementById("root"); +if (rootElement === null) throw new TypeError("authenticator_root_missing"); + +createRoot(rootElement).render(); diff --git a/apps/authenticator/src/server/browser-session-service.server.ts b/apps/authenticator/src/server/browser-session-service.server.ts new file mode 100644 index 0000000..008eefa --- /dev/null +++ b/apps/authenticator/src/server/browser-session-service.server.ts @@ -0,0 +1,397 @@ +import { + SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, + SIMULATOR_BROWSER_SESSION_ERROR_V0, + SIMULATOR_BROWSER_SESSION_PORT_V0, + SIMULATOR_BROWSER_SESSION_VIEW_V0, + SIMULATOR_UI_BOOTSTRAP_V0, + isBrowserIdempotentSessionFieldsV0, + isBrowserSessionFieldsV0, + isCompleteDemoAuthenticatorV0, + isCreateSimulatorBrowserSessionV0, + isSubmitSimulatorCaptureShapeV0, + type InjectedAuthenticatorResultV0, + type EnrollmentSessionStateV2, + type SimulatorBrowserDemoAuthenticatorResultV0, + type SimulatorBrowserBootstrapResultV0, + type SimulatorBrowserReturnResultV0, + type SimulatorBrowserSessionErrorCodeV0, + type SimulatorBrowserSessionOperationV0, + type SimulatorBrowserSessionPortV0, + type SimulatorBrowserSessionResultV0, + type SimulatorBrowserSessionViewV0, +} from "@clean-start/contracts"; +import { + GatewayErrorV0, + SessionGatewayV0, + sha256Text, + type CreateSessionResultV0, + type RequestContextV0, + type SessionStatusV0, + type SubmitCaptureResultV0, +} from "@clean-start/session-gateway"; +import { AUTHENTICATOR_APP_CONFIG } from "@clean-start/app-config"; +import { + STAGING_DEMO_AUTHENTICATOR_ERROR_V0, + STAGING_DEMO_AUTHENTICATOR_READY_V0, +} from "@clean-start/contracts"; +import { + StagingDemoAuthenticatorServiceV0, + makeInjectedAuthenticatorRequestV0, +} from "./demo-authenticator.server"; + +const FIXED_RP_REQUEST = Object.freeze({ + kind: "cs5_zoom_demo_request_v0", + presentationId: "zoom_demo", +}); + +const FIXED_CONTEXT: RequestContextV0 = Object.freeze({ + origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, + rpId: AUTHENTICATOR_APP_CONFIG.rpId, + authenticatedServerContext: Object.freeze({ kind: "server_selected_scenario_v0" }), +}); + +const ARTIFACT_SUMMARY = Object.freeze({ + kind: SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0, + biometricVerification: "not_performed", + uniqueness: "not_performed", + credentialClass: "not_selfie_check", + productionCredential: false, +} as const); + +const RETURN_TERMINAL_STATES = new Set([ + "simulated_reject", + "simulated_issuance_reject", + "simulated_credential_ready", + "cancelled", +] as const); + +function error( + operation: SimulatorBrowserSessionOperationV0, + reasonCode: SimulatorBrowserSessionErrorCodeV0, +): SimulatorBrowserSessionResultV0 & { readonly kind: typeof SIMULATOR_BROWSER_SESSION_ERROR_V0 } { + return Object.freeze({ + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + operation, + reasonCode, + }); +} + +function mapError( + operation: SimulatorBrowserSessionOperationV0, + value: unknown, +): ReturnType { + if (value instanceof GatewayErrorV0) return error(operation, value.code); + return error(operation, "response_invalid"); +} + +function isSafeCredentialResult( + result: SubmitCaptureResultV0, +): boolean { + return result.session.state !== "simulated_credential_ready" || + (result.credential?.claims.biometricVerification === "simulated_not_performed" && + result.credential.claims.uniqueness === "not_performed" && + result.credential.claims.credentialClass === "not_selfie_check"); +} + +export class RealSimulatorBrowserSessionServiceV0 implements SimulatorBrowserSessionPortV0 { + readonly #artifactReady = new Set(); + readonly #exitEligibleUntil = new Map(); + + constructor( + private readonly gateway: SessionGatewayV0, + private readonly demoAuthenticator: StagingDemoAuthenticatorServiceV0, + ) {} + + async bootstrap(): Promise { + const readiness = await this.gateway.readiness(); + if (!readiness.ready || !this.demoAuthenticator.readiness()) { + return error("bootstrap", "gateway_disabled"); + } + return Object.freeze({ + kind: SIMULATOR_UI_BOOTSTRAP_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + rpPresentationId: "zoom_demo", + accountPublicMaterialDigestSha256: + AUTHENTICATOR_APP_CONFIG.demoAccountPublicMaterialDigestSha256, + returnAction: "server_managed", + authenticator: Object.freeze({ + kind: "injected_demo_only", + webauthnPerformed: false, + prfEvaluated: false, + worldIdCreated: false, + }), + qualityPolicy: AUTHENTICATOR_APP_CONFIG.qualityPolicy, + }); + } + + async createSession(input: { readonly idempotencyKey: string }): Promise { + if (!isCreateSimulatorBrowserSessionV0(input)) return error("create_session", "invalid_request"); + try { + const result = await this.gateway.createSession({ + rpRequest: FIXED_RP_REQUEST, + accountId: AUTHENTICATOR_APP_CONFIG.demoAccountId, + accountPublicMaterialDigestSha256: + AUTHENTICATOR_APP_CONFIG.demoAccountPublicMaterialDigestSha256, + idempotencyKey: input.idempotencyKey, + }, FIXED_CONTEXT); + return this.project(result, result.browserHandle, result.capturePolicy); + } catch (cause) { + return mapError("create_session", cause); + } + } + + async beginDemoAuthenticator(input: { + readonly sessionId: string; + readonly browserHandle: string; + readonly idempotencyKey: string; + }): Promise { + if (!isBrowserIdempotentSessionFieldsV0(input)) { + return error("begin_demo_authenticator", "invalid_request"); + } + try { + const status = await this.gateway.getStatus({ + sessionId: input.sessionId, + browserHandle: input.browserHandle, + }, FIXED_CONTEXT); + if (status.session.state !== "created") { + return error("begin_demo_authenticator", "invalid_state"); + } + const requestId = `demo_req_${(await sha256Text(`${input.sessionId}\u0000${input.idempotencyKey}`)).slice(0, 32)}`; + const result = await this.demoAuthenticator.begin(makeInjectedAuthenticatorRequestV0({ + requestId, + sessionId: input.sessionId, + idempotencyKey: input.idempotencyKey, + accountPublicMaterialDigestSha256: status.session.accountPublicMaterialDigestSha256, + requestedAt: new Date().toISOString(), + expiresAt: status.session.expiresAt, + })); + return this.projectDemoResult(result, status.session.expiresAt); + } catch (cause) { + return mapError("begin_demo_authenticator", cause); + } + } + + async completeDemoAuthenticator(input: { + readonly sessionId: string; + readonly browserHandle: string; + readonly idempotencyKey: string; + readonly completionHandle: string; + }): Promise { + if (!isCompleteDemoAuthenticatorV0(input)) { + return error("complete_demo_authenticator", "invalid_request"); + } + try { + const current = await this.gateway.getStatus({ + sessionId: input.sessionId, + browserHandle: input.browserHandle, + }, FIXED_CONTEXT); + const ceremony = Object.freeze({ + kind: "staging_demo_completion_ceremony_v0" as const, + completionHandle: input.completionHandle, + sessionId: input.sessionId, + idempotencyKey: input.idempotencyKey, + accountPublicMaterialDigestSha256: + current.session.accountPublicMaterialDigestSha256, + }); + if (!(await this.demoAuthenticator.verifyCompletion(ceremony))) { + return error("complete_demo_authenticator", "binding_mismatch"); + } + const status = await this.gateway.completePasskey({ + sessionId: input.sessionId, + browserHandle: input.browserHandle, + idempotencyKey: input.idempotencyKey, + ceremony, + }, FIXED_CONTEXT); + return this.project(status, input.browserHandle); + } catch (cause) { + return mapError("complete_demo_authenticator", cause); + } + } + + async prepareCapture(input: { readonly sessionId: string; readonly browserHandle: string }): Promise { + if (!isBrowserSessionFieldsV0(input)) return error("prepare_capture", "invalid_request"); + try { + const result = await this.gateway.prepareCapture(input, FIXED_CONTEXT); + return this.project(result, input.browserHandle, result.capturePolicy); + } catch (cause) { + return mapError("prepare_capture", cause); + } + } + + async submitCapture(input: { + readonly sessionId: string; + readonly browserHandle: string; + readonly idempotencyKey: string; + readonly nonceBase64Url: string; + readonly frameBundle: Parameters[0]["frameBundle"]; + }): Promise { + if (!isSubmitSimulatorCaptureShapeV0(input)) { + return error("submit_capture", "invalid_request"); + } + try { + const result = await this.gateway.submitCapture(input, FIXED_CONTEXT); + if (!isSafeCredentialResult(result)) return error("submit_capture", "response_invalid"); + if (result.session.state === "simulated_credential_ready") { + this.#artifactReady.add(result.session.sessionId); + } + return this.project(result, input.browserHandle); + } catch (cause) { + return mapError("submit_capture", cause); + } + } + + async retryUnavailable(input: { + readonly sessionId: string; + readonly browserHandle: string; + readonly idempotencyKey: string; + }): Promise { + if (!isBrowserIdempotentSessionFieldsV0(input)) { + return error("retry_unavailable", "invalid_request"); + } + try { + const result = await this.gateway.retryUnavailable(input, FIXED_CONTEXT); + if (!isSafeCredentialResult(result)) return error("retry_unavailable", "response_invalid"); + if (result.session.state === "simulated_credential_ready") { + this.#artifactReady.add(result.session.sessionId); + } + return this.project(result, input.browserHandle); + } catch (cause) { + return mapError("retry_unavailable", cause); + } + } + + async getStatus(input: { readonly sessionId: string; readonly browserHandle: string }): Promise { + if (!isBrowserSessionFieldsV0(input)) return error("get_status", "invalid_request"); + try { + return this.project(await this.gateway.getStatus(input, FIXED_CONTEXT), input.browserHandle); + } catch (cause) { + return mapError("get_status", cause); + } + } + + async cancel(input: { readonly sessionId: string; readonly browserHandle: string }): Promise { + if (!isBrowserSessionFieldsV0(input)) return error("cancel", "invalid_request"); + try { + return this.project(await this.gateway.cancel(input, FIXED_CONTEXT), input.browserHandle); + } catch (cause) { + return mapError("cancel", cause); + } + } + + async returnToRp(input: { readonly sessionId: string; readonly browserHandle: string }): Promise { + if (!isBrowserSessionFieldsV0(input)) return error("return_to_rp", "invalid_request"); + try { + const status = await this.gateway.getStatus(input, FIXED_CONTEXT); + this.purgeExitEligibility(); + const serverObservedEarlyExit = status.session.state === "created" && + this.#exitEligibleUntil.get(status.session.sessionId) === status.session.expiresAt; + if ( + !RETURN_TERMINAL_STATES.has(status.session.state) && + !serverObservedEarlyExit + ) { + return error("return_to_rp", "invalid_state"); + } + return Object.freeze({ + kind: SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + action: "server_managed", + }); + } catch (cause) { + return mapError("return_to_rp", cause); + } + } + + private projectDemoResult( + result: InjectedAuthenticatorResultV0, + sessionExpiresAt: string, + ): SimulatorBrowserDemoAuthenticatorResultV0 { + if (result.kind === STAGING_DEMO_AUTHENTICATOR_READY_V0) { + return Object.freeze({ + kind: SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + sessionId: result.sessionId, + idempotencyKey: result.idempotencyKey, + completionHandle: result.completionHandle, + claims: result.claims, + expiresAt: result.expiresAt, + }); + } + const reasonCode = result.kind === STAGING_DEMO_AUTHENTICATOR_ERROR_V0 + ? result.reasonCode === "unavailable" + ? "demo_authenticator_unavailable" + : result.reasonCode === "interrupted" + ? "demo_authenticator_interrupted" + : result.reasonCode === "user_non_completion" + ? "user_non_completion" + : result.reasonCode === "transport_failure" + ? "network_unavailable" + : "response_invalid" + : "response_invalid"; + if ( + result.kind === STAGING_DEMO_AUTHENTICATOR_ERROR_V0 && + (result.reasonCode === "unavailable" || result.reasonCode === "invalid_response") + ) { + this.#exitEligibleUntil.set(result.sessionId, sessionExpiresAt); + } + return error("begin_demo_authenticator", reasonCode); + } + + private project( + result: SessionStatusV0 | CreateSessionResultV0 | SubmitCaptureResultV0, + browserHandle: string, + capturePolicy = Object.freeze({ + ...AUTHENTICATOR_APP_CONFIG.capturePolicy, + expiresAt: result.session.expiresAt, + }), + ): SimulatorBrowserSessionViewV0 { + if ( + result.session.state === "simulated_reject" || + result.session.state === "simulated_issuance_reject" || + result.session.state === "simulated_credential_ready" || + result.session.state === "cancelled" + ) { + this.#exitEligibleUntil.set(result.session.sessionId, result.session.expiresAt); + } + const artifactSummary = result.session.state === "simulated_credential_ready" && + this.#artifactReady.has(result.session.sessionId) + ? ARTIFACT_SUMMARY + : null; + return Object.freeze({ + kind: SIMULATOR_BROWSER_SESSION_VIEW_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + sessionId: result.session.sessionId, + browserHandle, + nonceBase64Url: result.session.nonceBase64Url, + state: result.session.state, + code: result.code, + retryable: result.retryable, + expiresAt: result.session.expiresAt, + capturePolicy, + artifactSummary, + }); + } + + private purgeExitEligibility(): void { + const nowMs = Date.now(); + for (const [sessionId, expiresAt] of this.#exitEligibleUntil) { + if (Date.parse(expiresAt) <= nowMs) this.#exitEligibleUntil.delete(sessionId); + } + } +} + +export { FIXED_CONTEXT as AUTHENTICATOR_GATEWAY_CONTEXT_V0, FIXED_RP_REQUEST as AUTHENTICATOR_FIXED_RP_REQUEST_V0 }; diff --git a/apps/authenticator/src/server/crypto.server.ts b/apps/authenticator/src/server/crypto.server.ts new file mode 100644 index 0000000..eceec9d --- /dev/null +++ b/apps/authenticator/src/server/crypto.server.ts @@ -0,0 +1,89 @@ +import { + SIMULATION_ENVIRONMENT, + bytesToArrayBuffer, + bytesToBase64Url, + type StagingEd25519TrustRootV0, +} from "@clean-start/contracts"; + +export interface PurposeEd25519KeyV0 { + readonly keyId: string; + readonly audience: string; + readonly privateKey: CryptoKey; + readonly publicKey: CryptoKey; + readonly publicKeyRawBase64Url: string; + readonly publicKeyFingerprintHex: string; + readonly trustRoot: StagingEd25519TrustRootV0; + sign(bytes: Uint8Array): Promise; +} + +function hex(bytes: Uint8Array): string { + return Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join(""); +} + +export async function createPurposeEd25519KeyV0( + keyId: string, + audience: string, +): Promise { + const pair = await crypto.subtle.generateKey( + { name: "Ed25519" }, + true, + ["sign", "verify"], + ); + const publicBytes = new Uint8Array(await crypto.subtle.exportKey("raw", pair.publicKey)); + const publicKeyRawBase64Url = bytesToBase64Url(publicBytes); + const trustRoot: StagingEd25519TrustRootV0 = Object.freeze({ + environment: SIMULATION_ENVIRONMENT, + audience, + keyId, + publicKeyRawBase64Url, + }); + + return Object.freeze({ + keyId, + audience, + privateKey: pair.privateKey, + publicKey: pair.publicKey, + publicKeyRawBase64Url, + publicKeyFingerprintHex: hex(publicBytes), + trustRoot, + async sign(bytes: Uint8Array): Promise { + const signature = await crypto.subtle.sign( + { name: "Ed25519" }, + pair.privateKey, + bytesToArrayBuffer(bytes), + ); + return bytesToBase64Url(new Uint8Array(signature)); + }, + }); +} + +export async function createSessionHandleHmacKeyV0(): Promise { + return crypto.subtle.generateKey( + { name: "HMAC", hash: "SHA-256", length: 256 }, + false, + ["sign", "verify"], + ); +} + +export function assertPurposeKeySeparationV0( + keys: readonly PurposeEd25519KeyV0[], + handleKey: CryptoKey, +): void { + if ( + keys.length !== 5 || + new Set(keys.map((key) => key.keyId)).size !== 5 || + new Set(keys.map((key) => key.publicKeyFingerprintHex)).size !== 5 || + keys.some((key) => + key.privateKey.algorithm.name !== "Ed25519" || + !key.privateKey.usages.includes("sign") || + key.publicKey.algorithm.name !== "Ed25519" || + !key.publicKey.usages.includes("verify") + ) || + handleKey.algorithm.name !== "HMAC" || + handleKey.extractable || + !handleKey.usages.includes("sign") || + !handleKey.usages.includes("verify") + ) { + throw new TypeError("purpose_key_separation_failed"); + } +} diff --git a/apps/authenticator/src/server/demo-authenticator.server.ts b/apps/authenticator/src/server/demo-authenticator.server.ts new file mode 100644 index 0000000..d017970 --- /dev/null +++ b/apps/authenticator/src/server/demo-authenticator.server.ts @@ -0,0 +1,258 @@ +import { + INJECTED_AUTHENTICATOR_PORT_V0, + INJECTED_AUTHENTICATOR_REQUEST_V0, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + STAGING_DEMO_AUTHENTICATOR_ERROR_V0, + STAGING_DEMO_AUTHENTICATOR_READY_V0, + base64UrlToBytes, + bytesToArrayBuffer, + bytesToBase64Url, + canonicalizeJsonV0, + isInjectedAuthenticatorRequestV0, + type InjectedAuthenticatorPortV0, + type InjectedAuthenticatorRequestV0, + type InjectedAuthenticatorResultV0, + type StagingDemoAuthenticatorReadyV0, +} from "@clean-start/contracts"; +import type { PurposeEd25519KeyV0 } from "./crypto.server"; + +const HANDLE_DOMAIN = "world-id-web-authenticator:demo-completion:v0"; + +interface CachedDemoResultV0 { + readonly sessionId: string; + readonly idempotencyKey: string; + readonly accountPublicMaterialDigestSha256: string; + readonly result: StagingDemoAuthenticatorReadyV0; +} + +export type StagingDemoAuthenticatorOutcomeV0 = + | "ready" + | "unavailable" + | "invalid_response"; + +export interface DemoCompletionCeremonyV0 { + readonly kind: "staging_demo_completion_ceremony_v0"; + readonly completionHandle: string; + readonly sessionId: string; + readonly idempotencyKey: string; + readonly accountPublicMaterialDigestSha256: string; +} + +function completionPreimage( + token: string, + fields: Omit, +): Uint8Array { + return new TextEncoder().encode(canonicalizeJsonV0({ + domain: HANDLE_DOMAIN, + kind: "staging_demo_completion_ceremony_v0", + token, + requestId: fields.requestId, + sessionId: fields.sessionId, + idempotencyKey: fields.idempotencyKey, + accountPublicMaterialDigestSha256: fields.accountPublicMaterialDigestSha256, + claims: fields.claims, + issuedAt: fields.issuedAt, + expiresAt: fields.expiresAt, + })); +} + +export class StagingDemoAuthenticatorServiceV0 implements InjectedAuthenticatorPortV0 { + readonly #byIdempotency = new Map(); + readonly #byHandle = new Map(); + + constructor( + private readonly key: PurposeEd25519KeyV0, + private readonly ttlMs: number, + private readonly now: () => Date, + private readonly forcedOutcome: StagingDemoAuthenticatorOutcomeV0 = "ready", + ) {} + + readiness(): boolean { + return this.key.privateKey.algorithm.name === "Ed25519" && + this.key.publicKey.algorithm.name === "Ed25519" && + this.key.keyId.length > 0 && + Number.isSafeInteger(this.ttlMs) && + this.ttlMs > 0; + } + + async begin(request: InjectedAuthenticatorRequestV0): Promise { + if (!isInjectedAuthenticatorRequestV0(request) || !this.readiness()) { + return Object.freeze({ + kind: STAGING_DEMO_AUTHENTICATOR_ERROR_V0, + version: INJECTED_AUTHENTICATOR_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + requestId: "invalid", + sessionId: "invalid", + idempotencyKey: "invalid", + reasonCode: "invalid_response", + }); + } + if (this.forcedOutcome !== "ready") { + return Object.freeze({ + kind: STAGING_DEMO_AUTHENTICATOR_ERROR_V0, + version: INJECTED_AUTHENTICATOR_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + requestId: request.requestId, + sessionId: request.sessionId, + idempotencyKey: request.idempotencyKey, + reasonCode: this.forcedOutcome, + }); + } + this.purgeExpired(); + const cacheKey = `${request.sessionId}\u0000${request.idempotencyKey}`; + const cached = this.#byIdempotency.get(cacheKey); + if (cached !== undefined) { + if (cached.accountPublicMaterialDigestSha256 !== request.accountPublicMaterialDigestSha256) { + return Object.freeze({ + kind: STAGING_DEMO_AUTHENTICATOR_ERROR_V0, + version: INJECTED_AUTHENTICATOR_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + requestId: request.requestId, + sessionId: request.sessionId, + idempotencyKey: request.idempotencyKey, + reasonCode: "invalid_response", + }); + } + return cached.result; + } + + const issuedAt = this.now(); + const expiresAtMs = Math.min( + Date.parse(request.expiresAt), + issuedAt.getTime() + this.ttlMs, + ); + if (expiresAtMs <= issuedAt.getTime()) { + return Object.freeze({ + kind: STAGING_DEMO_AUTHENTICATOR_ERROR_V0, + version: INJECTED_AUTHENTICATOR_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + requestId: request.requestId, + sessionId: request.sessionId, + idempotencyKey: request.idempotencyKey, + reasonCode: "interrupted", + }); + } + + const token = bytesToBase64Url(crypto.getRandomValues(new Uint8Array(24))); + const readyFields = Object.freeze({ + kind: STAGING_DEMO_AUTHENTICATOR_READY_V0, + version: INJECTED_AUTHENTICATOR_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + requestId: request.requestId, + sessionId: request.sessionId, + idempotencyKey: request.idempotencyKey, + accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, + claims: Object.freeze({ + webauthnPerformed: false, + prfEvaluated: false, + worldIdCreated: false, + }), + issuedAt: issuedAt.toISOString(), + expiresAt: new Date(expiresAtMs).toISOString(), + }); + const signature = await this.key.sign(completionPreimage(token, readyFields)); + const completionHandle = `${token}.${signature}`; + const result: StagingDemoAuthenticatorReadyV0 = Object.freeze({ + ...readyFields, + completionHandle, + }); + const entry = Object.freeze({ + sessionId: request.sessionId, + idempotencyKey: request.idempotencyKey, + accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, + result, + }); + this.#byIdempotency.set(cacheKey, entry); + this.#byHandle.set(completionHandle, entry); + return result; + } + + async verifyCompletion(input: { + readonly completionHandle: string; + readonly sessionId: string; + readonly idempotencyKey: string; + readonly accountPublicMaterialDigestSha256: string; + }): Promise { + this.purgeExpired(); + const entry = this.#byHandle.get(input.completionHandle); + if ( + entry === undefined || + entry.sessionId !== input.sessionId || + entry.idempotencyKey !== input.idempotencyKey || + entry.accountPublicMaterialDigestSha256 !== input.accountPublicMaterialDigestSha256 || + Date.parse(entry.result.expiresAt) <= this.now().getTime() + ) return false; + + const [token, signature, extra] = input.completionHandle.split("."); + if (token === undefined || signature === undefined || extra !== undefined) return false; + try { + return crypto.subtle.verify( + { name: "Ed25519" }, + this.key.publicKey, + bytesToArrayBuffer(base64UrlToBytes(signature)), + bytesToArrayBuffer(completionPreimage(token, { + kind: entry.result.kind, + version: entry.result.version, + mode: entry.result.mode, + environment: entry.result.environment, + requestId: entry.result.requestId, + sessionId: entry.result.sessionId, + idempotencyKey: entry.result.idempotencyKey, + accountPublicMaterialDigestSha256: + entry.result.accountPublicMaterialDigestSha256, + claims: entry.result.claims, + issuedAt: entry.result.issuedAt, + expiresAt: entry.result.expiresAt, + })), + ); + } catch { + return false; + } + } + + private purgeExpired(): void { + const nowMs = this.now().getTime(); + for (const [cacheKey, entry] of this.#byIdempotency) { + if (Date.parse(entry.result.expiresAt) > nowMs) continue; + this.#byIdempotency.delete(cacheKey); + this.#byHandle.delete(entry.result.completionHandle); + } + } +} + +export function isDemoCompletionCeremonyV0(value: unknown): value is DemoCompletionCeremonyV0 { + return typeof value === "object" && + value !== null && + !Array.isArray(value) && + Object.keys(value).sort().join(",") === + "accountPublicMaterialDigestSha256,completionHandle,idempotencyKey,kind,sessionId" && + (value as { readonly kind?: unknown }).kind === "staging_demo_completion_ceremony_v0" && + typeof (value as { readonly completionHandle?: unknown }).completionHandle === "string" && + typeof (value as { readonly sessionId?: unknown }).sessionId === "string" && + typeof (value as { readonly idempotencyKey?: unknown }).idempotencyKey === "string" && + typeof (value as { readonly accountPublicMaterialDigestSha256?: unknown }) + .accountPublicMaterialDigestSha256 === "string"; +} + +export function makeInjectedAuthenticatorRequestV0(input: { + readonly requestId: string; + readonly sessionId: string; + readonly idempotencyKey: string; + readonly accountPublicMaterialDigestSha256: string; + readonly requestedAt: string; + readonly expiresAt: string; +}): InjectedAuthenticatorRequestV0 { + return Object.freeze({ + kind: INJECTED_AUTHENTICATOR_REQUEST_V0, + version: INJECTED_AUTHENTICATOR_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + ...input, + }); +} diff --git a/apps/authenticator/src/server/http.server.ts b/apps/authenticator/src/server/http.server.ts new file mode 100644 index 0000000..c4b91ea --- /dev/null +++ b/apps/authenticator/src/server/http.server.ts @@ -0,0 +1,282 @@ +import { resolve, relative, sep } from "node:path"; +import { + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + SIMULATOR_BROWSER_SESSION_ERROR_V0, + SIMULATOR_BROWSER_SESSION_PORT_V0, + isBrowserIdempotentSessionFieldsV0, + isBrowserSessionFieldsV0, + isCompleteDemoAuthenticatorV0, + isCreateSimulatorBrowserSessionV0, + isSubmitSimulatorCaptureShapeV0, + type SimulatorBrowserSessionErrorCodeV0, + type SimulatorBrowserSessionOperationV0, + type SimulatorBrowserSessionPortV0, +} from "@clean-start/contracts"; +import { + AUTHENTICATOR_APP_CONFIG, + AUTHENTICATOR_APP_SECURITY_HEADERS_V0, +} from "@clean-start/app-config"; + +const API_PREFIX = "/api/v0/"; +const DEFAULT_STATIC_ROOT = resolve(import.meta.dir, "../../dist"); +const DEFAULT_MEDIAPIPE_ROOT = resolve( + process.cwd(), + "node_modules/@mediapipe/tasks-vision/wasm", +); +const MEDIAPIPE_RUNTIME_FILES = new Set([ + "vision_wasm_internal.js", + "vision_wasm_internal.wasm", + "vision_wasm_module_internal.js", + "vision_wasm_module_internal.wasm", + "vision_wasm_nosimd_internal.js", + "vision_wasm_nosimd_internal.wasm", +]); + +function headers(contentType?: string): Headers { + const result = new Headers(AUTHENTICATOR_APP_SECURITY_HEADERS_V0); + if (contentType !== undefined) result.set("Content-Type", contentType); + return result; +} + +function errorBody( + operation: SimulatorBrowserSessionOperationV0, + reasonCode: SimulatorBrowserSessionErrorCodeV0, +) { + return Object.freeze({ + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + operation, + reasonCode, + }); +} + +function json(value: unknown, status = 200): Response { + return new Response(JSON.stringify(value), { + status, + headers: headers("application/json; charset=utf-8"), + }); +} + +function statusForReason(reasonCode: SimulatorBrowserSessionErrorCodeV0): number { + if (reasonCode === "origin_forbidden") return 403; + if (reasonCode === "unauthorized") return 401; + if (reasonCode === "not_found") return 404; + if (reasonCode === "expired") return 410; + if (reasonCode === "body_too_large") return 413; + if (reasonCode === "resource_busy") return 429; + if ( + reasonCode === "invalid_state" || + reasonCode === "binding_mismatch" || + reasonCode === "replay_rejected" + ) return 409; + if (reasonCode === "gateway_disabled") return 503; + return 400; +} + +function operationForPath(pathname: string): SimulatorBrowserSessionOperationV0 { + const operations: Readonly> = { + "/api/v0/bootstrap": "bootstrap", + "/api/v0/session/create": "create_session", + "/api/v0/session/demo/begin": "begin_demo_authenticator", + "/api/v0/session/demo/complete": "complete_demo_authenticator", + "/api/v0/session/capture/prepare": "prepare_capture", + "/api/v0/session/capture/submit": "submit_capture", + "/api/v0/session/retry": "retry_unavailable", + "/api/v0/session/status": "get_status", + "/api/v0/session/cancel": "cancel", + "/api/v0/session/return": "return_to_rp", + }; + return operations[pathname] ?? "bootstrap"; +} + +function isEmptyRecord(value: unknown): boolean { + return typeof value === "object" && + value !== null && + !Array.isArray(value) && + Object.keys(value).length === 0; +} + +async function readStrictJson( + request: Request, + operation: SimulatorBrowserSessionOperationV0, +): Promise<{ readonly value: unknown } | { readonly response: Response }> { + if (request.method !== "POST") { + return { response: json(errorBody(operation, "invalid_request"), 405) }; + } + const origin = request.headers.get("origin"); + if ( + origin !== AUTHENTICATOR_APP_CONFIG.publicOrigin && + origin !== AUTHENTICATOR_APP_CONFIG.localWalkthroughOrigin + ) { + return { response: json(errorBody(operation, "origin_forbidden"), 403) }; + } + const contentType = request.headers.get("content-type")?.split(";", 1)[0]?.trim(); + if (contentType !== "application/json") { + return { response: json(errorBody(operation, "invalid_request"), 415) }; + } + const declaredLength = Number(request.headers.get("content-length")); + if ( + Number.isFinite(declaredLength) && + declaredLength > AUTHENTICATOR_APP_CONFIG.maxRequestBodyBytes + ) { + return { response: json(errorBody(operation, "body_too_large"), 413) }; + } + let bytes: ArrayBuffer; + try { + bytes = await request.arrayBuffer(); + } catch { + return { response: json(errorBody(operation, "invalid_request"), 400) }; + } + if (bytes.byteLength > AUTHENTICATOR_APP_CONFIG.maxRequestBodyBytes) { + return { response: json(errorBody(operation, "body_too_large"), 413) }; + } + try { + return { value: JSON.parse(new TextDecoder().decode(bytes)) as unknown }; + } catch { + return { response: json(errorBody(operation, "invalid_request"), 400) }; + } +} + +async function dispatchApi( + browserPort: SimulatorBrowserSessionPortV0, + request: Request, + pathname: string, +): Promise { + const operation = operationForPath(pathname); + const parsed = await readStrictJson(request, operation); + if ("response" in parsed) return parsed.response; + const value = parsed.value; + + let result; + if (pathname === "/api/v0/bootstrap" && isEmptyRecord(value)) { + result = await browserPort.bootstrap(); + } else if (pathname === "/api/v0/session/create" && isCreateSimulatorBrowserSessionV0(value)) { + result = await browserPort.createSession(value); + } else if (pathname === "/api/v0/session/demo/begin" && isBrowserIdempotentSessionFieldsV0(value)) { + result = await browserPort.beginDemoAuthenticator(value); + } else if (pathname === "/api/v0/session/demo/complete" && isCompleteDemoAuthenticatorV0(value)) { + result = await browserPort.completeDemoAuthenticator(value); + } else if (pathname === "/api/v0/session/capture/prepare" && isBrowserSessionFieldsV0(value)) { + result = await browserPort.prepareCapture(value); + } else if (pathname === "/api/v0/session/capture/submit" && isSubmitSimulatorCaptureShapeV0(value)) { + result = await browserPort.submitCapture(value); + } else if (pathname === "/api/v0/session/retry" && isBrowserIdempotentSessionFieldsV0(value)) { + result = await browserPort.retryUnavailable(value); + } else if (pathname === "/api/v0/session/status" && isBrowserSessionFieldsV0(value)) { + result = await browserPort.getStatus(value); + } else if (pathname === "/api/v0/session/cancel" && isBrowserSessionFieldsV0(value)) { + result = await browserPort.cancel(value); + } else if (pathname === "/api/v0/session/return" && isBrowserSessionFieldsV0(value)) { + result = await browserPort.returnToRp(value); + } else { + return json(errorBody(operation, "invalid_request"), 400); + } + + if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + return json(result, statusForReason(result.reasonCode)); + } + return json(result); +} + +function contentType(pathname: string): string { + if (pathname.endsWith(".html")) return "text/html; charset=utf-8"; + if (pathname.endsWith(".js")) return "text/javascript; charset=utf-8"; + if (pathname.endsWith(".css")) return "text/css; charset=utf-8"; + if (pathname.endsWith(".svg")) return "image/svg+xml"; + if (pathname.endsWith(".png")) return "image/png"; + if (pathname.endsWith(".json")) return "application/json; charset=utf-8"; + if (pathname.endsWith(".wasm")) return "application/wasm"; + return "application/octet-stream"; +} + +async function serveMediapipeRuntime( + pathname: string, + mediapipeRoot: string, +): Promise { + const name = pathname.replace(/^\/mediapipe\//, ""); + if (!MEDIAPIPE_RUNTIME_FILES.has(name)) { + return new Response("Not found", { + status: 404, + headers: headers("text/plain; charset=utf-8"), + }); + } + const file = Bun.file(resolve(mediapipeRoot, name)); + if (!(await file.exists())) { + return new Response("Not found", { + status: 404, + headers: headers("text/plain; charset=utf-8"), + }); + } + return new Response(file, { headers: headers(contentType(name)) }); +} + +async function serveStatic(pathname: string, staticRoot: string): Promise { + let decoded: string; + try { + decoded = decodeURIComponent(pathname); + } catch { + return new Response("Not found", { status: 404, headers: headers("text/plain; charset=utf-8") }); + } + if (decoded.includes("..") || decoded.includes("\\") || decoded.includes("\0")) { + return new Response("Not found", { status: 404, headers: headers("text/plain; charset=utf-8") }); + } + const assetPath = ["/", "/returned", "/demo", "/demo/returned"].includes(decoded) + ? "index.html" + : decoded.replace(/^\//, ""); + const resolved = resolve(staticRoot, assetPath); + const withinRoot = relative(staticRoot, resolved); + if (withinRoot.startsWith(`..${sep}`) || withinRoot === ".." || withinRoot.startsWith(sep)) { + return new Response("Not found", { status: 404, headers: headers("text/plain; charset=utf-8") }); + } + const file = Bun.file(resolved); + if (!(await file.exists())) { + return new Response("Not found", { status: 404, headers: headers("text/plain; charset=utf-8") }); + } + return new Response(file, { headers: headers(contentType(resolved)) }); +} + +export function createAuthenticatorHttpHandlerV0( + browserPort: SimulatorBrowserSessionPortV0, + options: { + readonly staticRoot?: string; + readonly mediapipeRoot?: string; + } = {}, +): (request: Request) => Promise { + const staticRoot = resolve(options.staticRoot ?? DEFAULT_STATIC_ROOT); + const mediapipeRoot = resolve(options.mediapipeRoot ?? DEFAULT_MEDIAPIPE_ROOT); + return async (request: Request): Promise => { + const url = new URL(request.url); + if (url.pathname.startsWith(API_PREFIX)) { + const known = new Set([ + "/api/v0/bootstrap", + "/api/v0/session/create", + "/api/v0/session/demo/begin", + "/api/v0/session/demo/complete", + "/api/v0/session/capture/prepare", + "/api/v0/session/capture/submit", + "/api/v0/session/retry", + "/api/v0/session/status", + "/api/v0/session/cancel", + "/api/v0/session/return", + ]); + if (!known.has(url.pathname)) { + return json(errorBody("bootstrap", "not_found"), 404); + } + try { + return await dispatchApi(browserPort, request, url.pathname); + } catch { + return json(errorBody(operationForPath(url.pathname), "response_invalid"), 500); + } + } + if (request.method !== "GET" && request.method !== "HEAD") { + return new Response("Not found", { status: 404, headers: headers("text/plain; charset=utf-8") }); + } + if (url.pathname.startsWith("/mediapipe/")) { + return serveMediapipeRuntime(url.pathname, mediapipeRoot); + } + return serveStatic(url.pathname, staticRoot); + }; +} diff --git a/apps/authenticator/src/server/main.ts b/apps/authenticator/src/server/main.ts new file mode 100644 index 0000000..c87885c --- /dev/null +++ b/apps/authenticator/src/server/main.ts @@ -0,0 +1,3 @@ +import { startAuthenticatorServerV0 } from "./start.server"; + +await startAuthenticatorServerV0(); diff --git a/apps/authenticator/src/server/runtime.server.ts b/apps/authenticator/src/server/runtime.server.ts new file mode 100644 index 0000000..7109ca8 --- /dev/null +++ b/apps/authenticator/src/server/runtime.server.ts @@ -0,0 +1,234 @@ +import { + BIOMETRIC_SIMULATOR_AUDIENCE_V0, + SIMULATED_STAGING_AUDIENCE_V0, + STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, + canonicalizeJsonV0, + type BiometricSimulationScenarioV0, + type IssuanceSimulationScenarioV0, +} from "@clean-start/contracts"; +import { + SessionGatewayV0, + sha256Text, + type BrowserCeremonyVerifierV0, + type RpRequestVerifierV0, + type ServerScenarioSelectorV0, +} from "@clean-start/session-gateway"; +import { SimulatedBiometricVerifierV0 } from "@clean-start/simulated-biometric-verifier"; +import { SimulatedStagingIssuerV0 } from "@clean-start/simulated-staging-issuer"; +import { AUTHENTICATOR_APP_CONFIG } from "@clean-start/app-config"; +import { RealSimulatorBrowserSessionServiceV0 } from "./browser-session-service.server"; +import { + StagingDemoAuthenticatorServiceV0, + isDemoCompletionCeremonyV0, + type StagingDemoAuthenticatorOutcomeV0, +} from "./demo-authenticator.server"; +import { + assertPurposeKeySeparationV0, + createPurposeEd25519KeyV0, + createSessionHandleHmacKeyV0, +} from "./crypto.server"; + +export const AUTHENTICATOR_SERVER_TEST_CONFIGURATION_V0 = + "authenticator_server_test_configuration_v0" as const; +export const DEMO_COMPLETION_AUDIENCE_V0 = + "world_id_web_authenticator_demo_completion_staging" as const; + +export interface AuthenticatorServerTestConfigurationV0 { + readonly kind: typeof AUTHENTICATOR_SERVER_TEST_CONFIGURATION_V0; + readonly biometricScenario: BiometricSimulationScenarioV0; + readonly issuanceScenario: IssuanceSimulationScenarioV0; + readonly demoAuthenticatorOutcome?: StagingDemoAuthenticatorOutcomeV0; +} + +export interface AuthenticatorServerRuntimeV0 { + readonly browserPort: RealSimulatorBrowserSessionServiceV0; + readonly keyReadiness: { + readonly ed25519PublicFingerprints: readonly string[]; + readonly handleKeyAlgorithm: "HMAC"; + }; +} + +function isServerTestConfigurationV0( + value: unknown, +): value is AuthenticatorServerTestConfigurationV0 { + if (typeof value !== "object" || value === null || Array.isArray(value)) return false; + const keys = Object.keys(value).sort().join(","); + return (keys === "biometricScenario,issuanceScenario,kind" || + keys === "biometricScenario,demoAuthenticatorOutcome,issuanceScenario,kind") && + (value as { readonly kind?: unknown }).kind === AUTHENTICATOR_SERVER_TEST_CONFIGURATION_V0 && + ["happy_path", "spoof_reject", "capture_retry", "dependency_unavailable"].includes( + String((value as { readonly biometricScenario?: unknown }).biometricScenario), + ) && + ["issue_success", "issue_reject", "issue_unavailable"].includes( + String((value as { readonly issuanceScenario?: unknown }).issuanceScenario), + ) && + (!("demoAuthenticatorOutcome" in value) || + ["ready", "unavailable", "invalid_response"].includes( + String((value as { readonly demoAuthenticatorOutcome?: unknown }) + .demoAuthenticatorOutcome), + )); +} + +export async function createAuthenticatorServerRuntimeV0( + options: { readonly testConfiguration?: AuthenticatorServerTestConfigurationV0 } = {}, +): Promise { + if ( + options.testConfiguration !== undefined && + !isServerTestConfigurationV0(options.testConfiguration) + ) { + throw new TypeError("invalid_server_test_configuration_v0"); + } + const biometricScenario = options.testConfiguration?.biometricScenario ?? + AUTHENTICATOR_APP_CONFIG.defaultBiometricScenario; + const issuanceScenario = options.testConfiguration?.issuanceScenario ?? + AUTHENTICATOR_APP_CONFIG.defaultIssuanceScenario; + + const [ + biometricRequestKey, + biometricReceiptKey, + issuanceRequestKey, + simulatedCredentialKey, + demoCompletionKey, + handleKey, + ] = await Promise.all([ + createPurposeEd25519KeyV0( + AUTHENTICATOR_APP_CONFIG.purposeKeyIds.biometricRequest, + BIOMETRIC_SIMULATOR_AUDIENCE_V0, + ), + createPurposeEd25519KeyV0( + AUTHENTICATOR_APP_CONFIG.purposeKeyIds.biometricReceipt, + BIOMETRIC_SIMULATOR_AUDIENCE_V0, + ), + createPurposeEd25519KeyV0( + AUTHENTICATOR_APP_CONFIG.purposeKeyIds.issuanceRequest, + STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, + ), + createPurposeEd25519KeyV0( + AUTHENTICATOR_APP_CONFIG.purposeKeyIds.simulatedCredential, + SIMULATED_STAGING_AUDIENCE_V0, + ), + createPurposeEd25519KeyV0( + AUTHENTICATOR_APP_CONFIG.purposeKeyIds.demoCompletion, + DEMO_COMPLETION_AUDIENCE_V0, + ), + createSessionHandleHmacKeyV0(), + ]); + const purposeKeys = Object.freeze([ + biometricRequestKey, + biometricReceiptKey, + issuanceRequestKey, + simulatedCredentialKey, + demoCompletionKey, + ]); + assertPurposeKeySeparationV0(purposeKeys, handleKey); + + const now = (): Date => new Date(); + const demoAuthenticator = new StagingDemoAuthenticatorServiceV0( + demoCompletionKey, + AUTHENTICATOR_APP_CONFIG.demoCompletionTtlMs, + now, + options.testConfiguration?.demoAuthenticatorOutcome ?? "ready", + ); + + const biometricVerifier = new SimulatedBiometricVerifierV0({ + runtimeEnvironment: "staging", + gatewayTrustRoot: biometricRequestKey.trustRoot, + receiptSigner: { + environment: "staging", + audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, + keyId: biometricReceiptKey.keyId, + privateKey: biometricReceiptKey.privateKey, + }, + simulatorVersion: AUTHENTICATOR_APP_CONFIG.biometricSimulatorVersion, + receiptTtlMs: AUTHENTICATOR_APP_CONFIG.biometricReceiptTtlMs, + maxCacheEntries: AUTHENTICATOR_APP_CONFIG.biometricCacheEntries, + allowedSyntheticFixtureIds: AUTHENTICATOR_APP_CONFIG.allowedSyntheticFixtureIds, + now, + }); + const stagingIssuer = new SimulatedStagingIssuerV0({ + runtimeEnvironment: "staging", + gatewayTrustRoot: issuanceRequestKey.trustRoot, + biometricReceiptTrustRoot: biometricReceiptKey.trustRoot, + credentialSigner: { + environment: "staging", + audience: SIMULATED_STAGING_AUDIENCE_V0, + keyId: simulatedCredentialKey.keyId, + privateKey: simulatedCredentialKey.privateKey, + }, + credentialTtlMs: AUTHENTICATOR_APP_CONFIG.stagingCredentialTtlMs, + maxCacheEntries: AUTHENTICATOR_APP_CONFIG.issuanceCacheEntries, + now, + }); + + const rpRequestVerifier: RpRequestVerifierV0 = { + async verify(request, context) { + if ( + context.origin !== AUTHENTICATOR_APP_CONFIG.publicOrigin || + context.rpId !== AUTHENTICATOR_APP_CONFIG.rpId || + typeof request !== "object" || + request === null || + Array.isArray(request) || + canonicalizeJsonV0(request) !== canonicalizeJsonV0({ + kind: "cs5_zoom_demo_request_v0", + presentationId: "zoom_demo", + }) + ) return null; + return Object.freeze({ + rpId: AUTHENTICATOR_APP_CONFIG.rpId, + origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, + returnTarget: "/returned", + requestDigestSha256: await sha256Text(canonicalizeJsonV0(request)), + }); + }, + }; + const ceremonyVerifier: BrowserCeremonyVerifierV0 = { + async verify(ceremony, expected) { + return isDemoCompletionCeremonyV0(ceremony) && + ceremony.sessionId === expected.sessionId && + ceremony.accountPublicMaterialDigestSha256 === + expected.accountPublicMaterialDigestSha256 && + demoAuthenticator.verifyCompletion(ceremony); + }, + }; + const scenarioSelector: ServerScenarioSelectorV0 = { + async select(_input) { + return Object.freeze({ biometric: biometricScenario, issuance: issuanceScenario }); + }, + }; + + const gateway = new SessionGatewayV0({ + runtimeEnvironment: AUTHENTICATOR_APP_CONFIG.runtimeEnvironment, + enabled: AUTHENTICATOR_APP_CONFIG.gatewayEnabled, + sessionTtlMs: AUTHENTICATOR_APP_CONFIG.sessionTtlMs, + maxRequestBodyBytes: AUTHENTICATOR_APP_CONFIG.maxRequestBodyBytes, + maxConcurrentOperations: AUTHENTICATOR_APP_CONFIG.maxConcurrentOperations, + simulatorTimeoutMs: AUTHENTICATOR_APP_CONFIG.simulatorTimeoutMs, + capturePolicy: AUTHENTICATOR_APP_CONFIG.capturePolicy, + allowedSyntheticFixtureIds: AUTHENTICATOR_APP_CONFIG.allowedSyntheticFixtureIds, + handleKey, + rpRequestVerifier, + ceremonyVerifier, + scenarioSelector, + biometricRequestSigner: biometricRequestKey, + issuanceRequestSigner: issuanceRequestKey, + biometricReceiptTrustRoot: biometricReceiptKey.trustRoot, + simulatedCredentialTrustRoot: simulatedCredentialKey.trustRoot, + biometricClient: biometricVerifier, + issuanceClient: stagingIssuer, + clock: { now }, + }); + const readiness = await gateway.readiness(); + if (!readiness.ready || !demoAuthenticator.readiness()) { + throw new TypeError("authenticator_server_not_ready"); + } + + return Object.freeze({ + browserPort: new RealSimulatorBrowserSessionServiceV0(gateway, demoAuthenticator), + keyReadiness: Object.freeze({ + ed25519PublicFingerprints: Object.freeze( + purposeKeys.map((key) => key.publicKeyFingerprintHex), + ), + handleKeyAlgorithm: "HMAC" as const, + }), + }); +} diff --git a/apps/authenticator/src/server/start.server.ts b/apps/authenticator/src/server/start.server.ts new file mode 100644 index 0000000..9ac92e0 --- /dev/null +++ b/apps/authenticator/src/server/start.server.ts @@ -0,0 +1,13 @@ +import { AUTHENTICATOR_APP_CONFIG } from "@clean-start/app-config"; +import { createAuthenticatorHttpHandlerV0 } from "./http.server"; +import { createAuthenticatorServerRuntimeV0 } from "./runtime.server"; + +export async function startAuthenticatorServerV0(): Promise> { + const runtime = await createAuthenticatorServerRuntimeV0(); + const handler = createAuthenticatorHttpHandlerV0(runtime.browserPort); + return Bun.serve({ + hostname: AUTHENTICATOR_APP_CONFIG.host, + port: AUTHENTICATOR_APP_CONFIG.port, + fetch: handler, + }); +} diff --git a/apps/authenticator/src/styles/app.css b/apps/authenticator/src/styles/app.css new file mode 100644 index 0000000..70670f2 --- /dev/null +++ b/apps/authenticator/src/styles/app.css @@ -0,0 +1,693 @@ +:root { + color: #1f1f1f; + background: #f5f5f5; + font-family: "World Pro MVP", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + font-synthesis: none; + text-rendering: optimizeLegibility; + --surface-page: #fff; + --foreground-primary: #1f1f1f; + --foreground-secondary: #707070; + --foreground-disabled: #767676; + --background-secondary: #f5f5f5; + --stroke-secondary: #f1f1f1; + --accent: #007cfb; +} + +* { + box-sizing: border-box; +} + +html, +body, +#root { + min-height: 100%; + margin: 0; +} + +body { + background: #f5f5f5; +} + +button, +input, +textarea, +select { + font: inherit; +} + +button { + min-height: 44px; + cursor: pointer; +} + +button:focus-visible { + outline: 3px solid var(--accent); + outline-offset: 3px; +} + +button:disabled { + cursor: progress; + opacity: 0.58; +} + +.app-main { + position: relative; + display: flex; + flex-direction: column; + width: min(100%, 393px); + min-height: 100svh; + min-height: 100dvh; + margin: 0 auto; + padding: + max(20px, env(safe-area-inset-top)) + 24px + max(24px, env(safe-area-inset-bottom)); + overflow-x: clip; + background: var(--surface-page); +} + +.staging-banner { + z-index: 5; + align-self: center; + max-width: calc(100% - 64px); + margin: 0; + padding: 7px 12px; + border: 1px solid #d8d8d8; + border-radius: 999px; + color: #4e4e4e; + background: rgb(255 255 255 / 92%); + font-size: 13px; + line-height: 1.2; + text-align: center; +} + +.app-main--has-top-close .staging-banner { + align-self: flex-end; + max-width: calc(100% - 72px); +} + +.top-close { + position: absolute; + z-index: 8; + top: max(20px, env(safe-area-inset-top)); + left: 24px; + display: grid; + width: 44px; + height: 44px; + min-height: 44px; + padding: 10px; + border: 0; + border-radius: 50%; + place-items: center; + background: var(--background-secondary); +} + +.top-close img { + width: 24px; + height: 24px; +} + +.screen-content { + z-index: 2; + display: flex; + flex: 1; + width: 100%; + padding-block: 56px 32px; + align-items: center; + justify-content: center; +} + +.centered-layout, +.message-block { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; +} + +.centered-layout { + width: 100%; + gap: 32px; + padding-inline: 8px; +} + +.message-block { + width: 100%; + gap: 16px; +} + +h1, +h2, +p { + margin: 0; +} + +h1 { + color: var(--foreground-primary); + font-size: 27px; + font-weight: 450; + line-height: 1.2; + letter-spacing: -0.405px; +} + +h1:focus { + outline: none; +} + +.message-block > p { + max-width: 320px; + color: var(--foreground-primary); + font-size: 17px; + font-weight: 350; + line-height: 1.3; + letter-spacing: -0.085px; +} + +.message-block .detail-copy { + max-width: 300px; + padding: 10px 12px; + border-radius: 12px; + color: #4e4e4e; + background: var(--background-secondary); + font-size: 15px; +} + +.hero-icon { + display: block; + width: 56px; + height: 56px; +} + +.hero-icon--progress { + width: 88px; + height: 88px; +} + +.app-main--simulation_pending .centered-layout, +.app-main--verification_complete .centered-layout, +.app-main--success .centered-layout { + gap: 24px; +} + +.app-main--simulation_pending .message-block, +.app-main--verification_complete .message-block, +.app-main--success .message-block { + gap: 12px; +} + +.app-main--simulation_pending h1, +.app-main--verification_complete h1, +.app-main--success h1 { + font-size: 24px; + letter-spacing: -0.36px; +} + +/* Figma 5132:135038 / 135071 / 135104: secondary body under the 24 px heading. */ +.app-main--simulation_pending .message-block > p, +.app-main--verification_complete .message-block > p, +.app-main--success .message-block > p { + color: #7d7d7d; +} + +.app-main--success .hero-icon { + animation: hero-settle 320ms cubic-bezier(0.2, 0.8, 0.2, 1) both; +} + +@keyframes hero-settle { + from { + opacity: 0; + transform: scale(0.92); + } + + to { + opacity: 1; + transform: none; + } +} + +.hero-icon--muted { + filter: grayscale(1); +} + +.template-notice { + padding: 6px 10px; + border-radius: 999px; + color: #555; + background: var(--background-secondary); + font-size: 13px; + font-weight: 550; +} + +.actions { + z-index: 6; + display: flex; + width: 100%; + margin-top: auto; + padding-top: 16px; + flex-direction: column; + gap: 8px; +} + +.primary-action, +.secondary-action { + width: 100%; + min-height: 48px; + padding: 12px 24px; + border-radius: 24px; + font-size: 17px; + font-weight: 550; + line-height: 1.2; + letter-spacing: -0.17px; +} + +.primary-action { + border: 1px solid var(--foreground-primary); + color: #fff; + background: var(--foreground-primary); +} + +.secondary-action { + border: 1px solid #d8d8d8; + color: var(--foreground-primary); + background: #fff; +} + +.request-layout { + width: calc(100% + 48px); + margin-inline: -24px; +} + +.request-hero { + display: flex; + padding: 16px 32px 40px; + flex-direction: column; + align-items: center; + gap: 24px; +} + +.partner-icon { + display: grid; + width: 72px; + height: 72px; + overflow: hidden; + border: 1px solid rgb(0 0 0 / 8%); + border-radius: 18px; + place-items: center; + background: #275cf6; +} + +.partner-icon img { + width: 76%; + height: auto; +} + +.partner-icon--world { + border: 0; + background: #edf6ff; +} + +.partner-icon--world img { + width: 38px; + height: 38px; +} + +.request-divider { + width: 100%; + height: 1px; + background: var(--stroke-secondary); +} + +.disclosures { + display: flex; + padding: 28px 32px 0; + flex-direction: column; + gap: 20px; +} + +.disclosures h2 { + font-size: 17px; + font-weight: 450; + line-height: 1.3; +} + +.disclosure-row { + display: grid; + min-height: 28px; + grid-template-columns: 22px 1fr 22px; + gap: 16px; + align-items: center; + font-size: 17px; + line-height: 1.3; +} + +.disclosure-row img { + width: 22px; + height: 22px; +} + +.disclosure-row--muted { + color: var(--foreground-disabled); +} + +.media-host { + position: fixed; + top: -2px; + left: -2px; + width: 1px; + height: 1px; + overflow: hidden; + opacity: 0; + pointer-events: none; +} + +.media-host--visible { + position: absolute; + z-index: 0; + top: clamp(132px, 24.3dvh, 207px); + left: 24px; + width: calc(100% - 48px); + height: auto; + max-height: calc(100dvh - 160px); + aspect-ratio: 345.005 / 481.637; + border-radius: 50%; + overflow: visible; + opacity: 1; + pointer-events: none; +} + +.media-clip { + position: absolute; + inset: 0; + overflow: hidden; + border-radius: inherit; + background: linear-gradient(145deg, #ddd, #f5f5f5); +} + +.media-host--visible .media-clip { + inset: 0; + border-radius: 0; +} + +.media-clip video { + width: 100%; + height: 100%; + object-fit: cover; +} + +.media-clip canvas { + display: none; +} + +.capture-visual { + position: absolute; + z-index: 2; + inset: 0; + pointer-events: none; +} + +.capture-ring--base, +.capture-ring--progress { + position: absolute; + inset: 0; +} + +.capture-ring--progress { + mask-image: conic-gradient( + from 8deg at 50% 50%, + #000 0deg var(--capture-progress-angle), + transparent var(--capture-progress-angle) 360deg + ); + -webkit-mask-image: conic-gradient( + from 8deg at 50% 50%, + #000 0deg var(--capture-progress-angle), + transparent var(--capture-progress-angle) 360deg + ); +} + +.capture-ring--progress-complete { + mask-image: none; + -webkit-mask-image: none; +} + +.capture-ring { + width: 100%; + height: 100%; +} + +.capture-ring { + display: block; +} + +.capture-message { + position: absolute; + top: 67px; + left: 50%; + display: flex; + min-height: 36px; + max-width: calc(100% - 24px); + padding: 8px 12px; + border-radius: 12px; + align-items: center; + gap: 8px; + transform: translateX(-50%); + color: #fff; + background: rgb(24 24 24 / 68%); + backdrop-filter: blur(10px); +} + +.capture-message h1 { + color: inherit; + font-size: 15px; + font-weight: 450; + line-height: 1.3; + letter-spacing: -0.075px; + text-align: center; +} + +.capture-message img { + width: 20px; + height: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.walkthrough-body { + padding-inline: 0 !important; + background: #ececec; +} + +.walkthrough-shell { + display: grid; + min-height: 100svh; + min-height: 100dvh; + padding: 24px; + grid-template-columns: minmax(320px, 393px) minmax(280px, 340px); + gap: 24px; + align-items: start; + justify-content: center; +} + +.walkthrough-shell > .app-main { + min-height: calc(100svh - 48px); + min-height: calc(100dvh - 48px); + overflow: hidden; + border-radius: 28px; + box-shadow: 0 20px 60px rgb(0 0 0 / 12%); +} + +.walkthrough-panel { + position: sticky; + top: 24px; + display: flex; + padding: 24px; + border: 1px solid #d8d8d8; + border-radius: 24px; + flex-direction: column; + gap: 20px; + color: var(--foreground-primary); + background: #fff; + box-shadow: 0 20px 60px rgb(0 0 0 / 8%); +} + +.walkthrough-panel__header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; +} + +.walkthrough-eyebrow, +.walkthrough-step { + color: #4e4e4e; + font-size: 13px; + font-weight: 550; + line-height: 1.2; + letter-spacing: 0.01em; +} + +.walkthrough-eyebrow { + text-transform: uppercase; +} + +.walkthrough-panel h2 { + font-size: 24px; + font-weight: 500; + line-height: 1.2; +} + +.walkthrough-status-list { + display: flex; + margin: 0; + flex-direction: column; + gap: 0; +} + +.walkthrough-status-list > div { + display: grid; + padding: 12px 0; + border-bottom: 1px solid var(--stroke-secondary); + grid-template-columns: 1fr; + gap: 4px; +} + +.walkthrough-status-list dt { + color: var(--foreground-secondary); + font-size: 13px; + line-height: 1.3; +} + +.walkthrough-status-list dd { + margin: 0; + font-size: 15px; + font-weight: 550; + line-height: 1.35; +} + +.walkthrough-status-list [data-walkthrough-status="simulated"], +.walkthrough-status-list [data-walkthrough-camera="synthetic_fallback"], +.walkthrough-status-list [data-walkthrough-camera="synthetic_complete"] { + color: #8a4b00; +} + +.walkthrough-status-list [data-walkthrough-passkey="created"], +.walkthrough-status-list [data-walkthrough-camera="live"], +.walkthrough-status-list [data-walkthrough-camera="live_complete"] { + color: #087a43; +} + +.walkthrough-warning { + padding: 14px; + border-radius: 14px; + color: #4e4e4e; + background: var(--background-secondary); + font-size: 14px; + line-height: 1.45; +} + +.walkthrough-restart { + min-height: 48px; + padding: 12px 20px; + border: 1px solid var(--foreground-primary); + border-radius: 24px; + color: #fff; + background: var(--foreground-primary); + font-weight: 550; +} + +.walkthrough-production-link { + min-height: 44px; + padding: 12px; + color: var(--foreground-primary); + font-size: 14px; + font-weight: 550; + text-align: center; + text-underline-offset: 3px; +} + +@media (max-width: 839px) { + .walkthrough-shell { + display: flex; + padding: 0; + flex-direction: column; + gap: 0; + } + + .walkthrough-shell > .app-main { + min-height: 100svh; + min-height: 100dvh; + border-radius: 0; + box-shadow: none; + } + + .walkthrough-panel { + position: static; + order: -1; + width: min(100%, 393px); + margin: 0 auto; + padding: 16px 24px; + border: 0; + border-bottom: 1px solid #d8d8d8; + border-radius: 0; + box-shadow: none; + } + + .walkthrough-status-list, + .walkthrough-warning, + .walkthrough-production-link { + display: none; + } + + .walkthrough-restart { + min-height: 44px; + } +} + +@media (max-height: 700px), (min-width: 500px) { + .app-main { + min-height: 100dvh; + } + + .screen-content { + padding-block: 72px 24px; + } + + .request-hero { + padding-bottom: 24px; + } + + .disclosures { + padding-top: 20px; + gap: 14px; + } +} + +@media (min-width: 394px) { + body { + padding-inline: calc((100vw - 393px) / 2); + } + + .app-main { + box-shadow: 0 0 40px rgb(0 0 0 / 8%); + } +} + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + scroll-behavior: auto !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + } +} diff --git a/apps/authenticator/src/walkthrough/hold-steady-progress.ts b/apps/authenticator/src/walkthrough/hold-steady-progress.ts new file mode 100644 index 0000000..c68c94d --- /dev/null +++ b/apps/authenticator/src/walkthrough/hold-steady-progress.ts @@ -0,0 +1,14 @@ +export const CAPTURE_HOLD_DURATION_MS_V1 = 2_400; +export const CAPTURE_HOLD_DOT_COUNT_V1 = 64; +export const CAPTURE_COMPLETE_ACK_MS_V1 = 450; + +export function captureHoldProgressV1(elapsedMs: number): number { + if (!Number.isFinite(elapsedMs) || elapsedMs <= 0) return 0; + const completedDots = Math.min( + CAPTURE_HOLD_DOT_COUNT_V1, + Math.floor( + (elapsedMs / CAPTURE_HOLD_DURATION_MS_V1) * CAPTURE_HOLD_DOT_COUNT_V1, + ), + ); + return completedDots / CAPTURE_HOLD_DOT_COUNT_V1; +} diff --git a/apps/authenticator/src/walkthrough/live-face-guidance.ts b/apps/authenticator/src/walkthrough/live-face-guidance.ts new file mode 100644 index 0000000..41b4725 --- /dev/null +++ b/apps/authenticator/src/walkthrough/live-face-guidance.ts @@ -0,0 +1,322 @@ +import { LIVE_GUIDANCE_MODEL_V1 } from "./model-provenance"; + +export const LIVE_FACE_GUIDANCE_CODES_V1 = Object.freeze([ + "loading", + "unavailable", + "face_not_found", + "multiple_faces", + "move_closer", + "move_farther", + "move_left", + "move_right", + "move_up", + "move_down", + "turn_left", + "turn_right", + "improve_lighting", + "reduce_lighting", + "hold_steady", +] as const); + +export type LiveFaceGuidanceCodeV1 = + (typeof LIVE_FACE_GUIDANCE_CODES_V1)[number]; + +export interface LiveFaceGuidanceV1 { + readonly code: LiveFaceGuidanceCodeV1; + readonly text: string; +} + +export interface NormalizedFacePointV1 { + readonly x: number; + readonly y: number; + readonly z?: number; +} + +export const LIVE_FACE_GUIDANCE_COPY_V1: Readonly< + Record +> = Object.freeze({ + loading: "Place your face in the oval", + unavailable: "Place your face in the oval", + face_not_found: "Move your face into the oval", + multiple_faces: "Keep only one face in view", + move_closer: "Move closer", + move_farther: "Move farther away", + move_left: "Move slightly left", + move_right: "Move slightly right", + move_up: "Move slightly up", + move_down: "Move slightly down", + turn_left: "Turn slightly left", + turn_right: "Turn slightly right", + improve_lighting: "Move to brighter, even light", + reduce_lighting: "Move away from very bright light", + hold_steady: "Great position, hold steady", +}); + +function guidance(code: LiveFaceGuidanceCodeV1): LiveFaceGuidanceV1 { + return Object.freeze({ code, text: LIVE_FACE_GUIDANCE_COPY_V1[code] }); +} + +function usablePoint(point: NormalizedFacePointV1 | undefined): point is NormalizedFacePointV1 { + return point !== undefined && + Number.isFinite(point.x) && + Number.isFinite(point.y) && + point.x >= -0.25 && + point.x <= 1.25 && + point.y >= -0.25 && + point.y <= 1.25; +} + +export function classifyLiveFaceGuidanceV1( + faces: readonly (readonly NormalizedFacePointV1[])[], + meanLuma: number | null, +): LiveFaceGuidanceV1 { + if (faces.length === 0) return guidance("face_not_found"); + if (faces.length > 1) return guidance("multiple_faces"); + const face = faces[0]; + const nose = face?.[1]; + const leftCheek = face?.[234]; + const rightCheek = face?.[454]; + if ( + face === undefined || + !usablePoint(nose) || + !usablePoint(leftCheek) || + !usablePoint(rightCheek) + ) return guidance("unavailable"); + + let minX = 1; + let minY = 1; + let maxX = 0; + let maxY = 0; + for (const point of face) { + if (!usablePoint(point)) continue; + minX = Math.min(minX, point.x); + minY = Math.min(minY, point.y); + maxX = Math.max(maxX, point.x); + maxY = Math.max(maxY, point.y); + } + const width = maxX - minX; + const height = maxY - minY; + if (width <= 0 || height <= 0) return guidance("unavailable"); + + if (meanLuma !== null && Number.isFinite(meanLuma)) { + if (meanLuma < 52) return guidance("improve_lighting"); + if (meanLuma > 222) return guidance("reduce_lighting"); + } + + const faceAreaRatio = width * height; + if (faceAreaRatio < 0.14) return guidance("move_closer"); + if (faceAreaRatio > 0.56) return guidance("move_farther"); + + const sourceCenterX = (minX + maxX) / 2; + const visualCenterX = 1 - sourceCenterX; + const centerY = (minY + maxY) / 2; + if (visualCenterX < 0.40) return guidance("move_right"); + if (visualCenterX > 0.60) return guidance("move_left"); + if (centerY < 0.37) return guidance("move_down"); + if (centerY > 0.63) return guidance("move_up"); + + const cheekMidpoint = (leftCheek.x + rightCheek.x) / 2; + const visualNoseOffset = -(nose.x - cheekMidpoint) / width; + if (visualNoseOffset > 0.055) return guidance("turn_left"); + if (visualNoseOffset < -0.055) return guidance("turn_right"); + return guidance("hold_steady"); +} + +interface FaceLandmarkerResultV1 { + readonly faceLandmarks: readonly (readonly NormalizedFacePointV1[])[]; +} + +interface FaceLandmarkerV1 { + detectForVideo(video: HTMLVideoElement, timestampMs: number): FaceLandmarkerResultV1; + close(): void; +} + +export type FaceLandmarkerFactoryV1 = () => Promise; + +async function createFaceLandmarkerV1(): Promise { + const { FaceLandmarker, FilesetResolver } = await import("@mediapipe/tasks-vision"); + const fileset = await FilesetResolver.forVisionTasks( + LIVE_GUIDANCE_MODEL_V1.wasmBasePath, + ); + return FaceLandmarker.createFromOptions(fileset, { + baseOptions: { + modelAssetPath: LIVE_GUIDANCE_MODEL_V1.modelPath, + delegate: "CPU", + }, + runningMode: "VIDEO", + numFaces: 2, + minFaceDetectionConfidence: 0.55, + minFacePresenceConfidence: 0.55, + minTrackingConfidence: 0.5, + outputFaceBlendshapes: false, + outputFacialTransformationMatrixes: false, + }); +} + +class PreviewLumaReaderV1 { + private readonly canvas = document.createElement("canvas"); + private readonly context: CanvasRenderingContext2D | null; + + constructor() { + this.canvas.width = 48; + this.canvas.height = 48; + this.context = this.canvas.getContext("2d", { willReadFrequently: true }); + } + + read(video: HTMLVideoElement): number | null { + const context = this.context; + if (context === null || video.videoWidth <= 0 || video.videoHeight <= 0) return null; + try { + if (this.canvas.width !== 48 || this.canvas.height !== 48) { + this.canvas.width = 48; + this.canvas.height = 48; + } + context.drawImage(video, 0, 0, this.canvas.width, this.canvas.height); + const image = context.getImageData(0, 0, this.canvas.width, this.canvas.height); + let sum = 0; + let count = 0; + for (let index = 0; index < image.data.length; index += 16) { + sum += 0.2126 * image.data[index] + + 0.7152 * image.data[index + 1] + + 0.0722 * image.data[index + 2]; + count += 1; + } + image.data.fill(0); + context.clearRect(0, 0, this.canvas.width, this.canvas.height); + return count === 0 ? null : sum / count; + } catch { + context.clearRect(0, 0, this.canvas.width, this.canvas.height); + return null; + } + } + + clear(): void { + this.context?.clearRect(0, 0, this.canvas.width, this.canvas.height); + this.canvas.width = 1; + this.canvas.height = 1; + } +} + +export interface LiveFaceGuidanceControllerOptionsV1 { + readonly createLandmarker?: FaceLandmarkerFactoryV1; + readonly requestFrame?: (callback: FrameRequestCallback) => number; + readonly cancelFrame?: (handle: number) => void; + readonly now?: () => number; + readonly readMeanLuma?: (video: HTMLVideoElement) => number | null; + readonly minimumIntervalMs?: number; +} + +export class LiveFaceGuidanceControllerV1 { + private generation = 0; + private frameHandle?: number; + private landmarker?: FaceLandmarkerV1; + private lastAnalysisAt = -Infinity; + private lastVideoTime = -1; + private candidateCode?: LiveFaceGuidanceCodeV1; + private candidateCount = 0; + private emittedCode?: LiveFaceGuidanceCodeV1; + private readonly lumaReader = new PreviewLumaReaderV1(); + private readonly createLandmarker: FaceLandmarkerFactoryV1; + private readonly requestFrame: (callback: FrameRequestCallback) => number; + private readonly cancelFrame: (handle: number) => void; + private readonly now: () => number; + private readonly readMeanLuma: (video: HTMLVideoElement) => number | null; + private readonly minimumIntervalMs: number; + + constructor( + private readonly getVideo: () => HTMLVideoElement | null, + private readonly onGuidance: (result: LiveFaceGuidanceV1) => void, + options: LiveFaceGuidanceControllerOptionsV1 = {}, + ) { + this.createLandmarker = options.createLandmarker ?? createFaceLandmarkerV1; + this.requestFrame = options.requestFrame ?? requestAnimationFrame.bind(globalThis); + this.cancelFrame = options.cancelFrame ?? cancelAnimationFrame.bind(globalThis); + this.now = options.now ?? (() => performance.now()); + this.readMeanLuma = options.readMeanLuma ?? ((video) => this.lumaReader.read(video)); + this.minimumIntervalMs = options.minimumIntervalMs ?? 125; + } + + start(): void { + this.stop(); + const generation = ++this.generation; + this.emit("loading", true); + void this.createLandmarker().then((landmarker) => { + if (generation !== this.generation) { + landmarker.close(); + return; + } + this.landmarker = landmarker; + this.schedule(generation); + }).catch(() => { + if (generation === this.generation) this.emit("unavailable", true); + }); + } + + stop(): void { + this.generation += 1; + if (this.frameHandle !== undefined) this.cancelFrame(this.frameHandle); + this.frameHandle = undefined; + this.landmarker?.close(); + this.landmarker = undefined; + this.lastAnalysisAt = -Infinity; + this.lastVideoTime = -1; + this.candidateCode = undefined; + this.candidateCount = 0; + this.emittedCode = undefined; + this.lumaReader.clear(); + } + + private schedule(generation: number): void { + this.frameHandle = this.requestFrame(() => this.runFrame(generation)); + } + + private runFrame(generation: number): void { + if (generation !== this.generation || this.landmarker === undefined) return; + const now = this.now(); + const video = this.getVideo(); + if ( + video === null || + video.readyState < HTMLMediaElement.HAVE_CURRENT_DATA || + video.currentTime === this.lastVideoTime || + now - this.lastAnalysisAt < this.minimumIntervalMs + ) { + this.schedule(generation); + return; + } + this.lastAnalysisAt = now; + this.lastVideoTime = video.currentTime; + try { + const result = this.landmarker.detectForVideo(video, now); + const classified = classifyLiveFaceGuidanceV1( + result.faceLandmarks, + this.readMeanLuma(video), + ); + this.emit(classified.code); + } catch { + this.emit("unavailable", true); + this.stop(); + return; + } + this.schedule(generation); + } + + private emit(code: LiveFaceGuidanceCodeV1, immediate = false): void { + if (immediate) { + this.candidateCode = code; + this.candidateCount = 2; + if (this.emittedCode === code) return; + this.emittedCode = code; + this.onGuidance(guidance(code)); + return; + } + if (this.candidateCode === code) this.candidateCount += 1; + else { + this.candidateCode = code; + this.candidateCount = 1; + } + if (this.candidateCount >= 2 && this.emittedCode !== code) { + this.emittedCode = code; + this.onGuidance(guidance(code)); + } + } +} diff --git a/apps/authenticator/src/walkthrough/live-passkey.ts b/apps/authenticator/src/walkthrough/live-passkey.ts new file mode 100644 index 0000000..6bcd877 --- /dev/null +++ b/apps/authenticator/src/walkthrough/live-passkey.ts @@ -0,0 +1,139 @@ +export type LivePasskeyStatusV1 = + | "idle" + | "requesting" + | "created" + | "unsupported" + | "cancelled" + | "failed"; + +export type LivePrfCapabilityV1 = "unknown" | "available" | "unavailable"; + +export interface LivePasskeyResultV1 { + readonly status: Exclude; + readonly prfCapability: LivePrfCapabilityV1; +} + +interface PrfExtensionResultV1 { + readonly prf?: { readonly enabled?: boolean }; +} + +export interface LocalPasskeyRuntimeV1 { + readonly secureContext: boolean; + readonly hostname: string; + readonly publicKeyCredentialAvailable: boolean; + readonly createCredential?: (options: CredentialCreationOptions) => Promise; + readonly randomBytes: (length: number) => Uint8Array; + readonly nowEpochMs: () => number; +} + +function defaultRuntime(): LocalPasskeyRuntimeV1 { + return { + secureContext: window.isSecureContext, + hostname: window.location.hostname, + publicKeyCredentialAvailable: typeof PublicKeyCredential !== "undefined", + createCredential: typeof navigator.credentials?.create === "function" + ? (options) => navigator.credentials.create(options) + : undefined, + randomBytes: (length) => crypto.getRandomValues(new Uint8Array(length)), + nowEpochMs: () => Date.now(), + }; +} + +function result( + status: LivePasskeyResultV1["status"], + prfCapability: LivePrfCapabilityV1 = "unknown", +): LivePasskeyResultV1 { + return Object.freeze({ status, prfCapability }); +} + +function safeErrorName(value: unknown): string { + try { + return typeof value === "object" && value !== null + ? String((value as { readonly name?: unknown }).name ?? "") + : ""; + } catch { + return ""; + } +} + +function ownedArrayBuffer(bytes: Uint8Array): ArrayBuffer { + const result = new ArrayBuffer(bytes.byteLength); + new Uint8Array(result).set(bytes); + return result; +} + +export async function createLocalDemoPasskeyV1( + runtime: LocalPasskeyRuntimeV1 = defaultRuntime(), +): Promise { + if ( + !runtime.secureContext || + !runtime.publicKeyCredentialAvailable || + runtime.createCredential === undefined + ) { + return result("unsupported"); + } + + const challengeBytes = runtime.randomBytes(32); + const userIdBytes = runtime.randomBytes(32); + const challenge = ownedArrayBuffer(challengeBytes); + const userId = ownedArrayBuffer(userIdBytes); + const rp = runtime.hostname === "localhost" + ? { id: "localhost", name: "World ID" } + : { name: "World ID" }; + const publicKey = { + challenge, + rp, + user: { + id: userId, + name: "World ID", + displayName: "World ID", + }, + pubKeyCredParams: [ + { type: "public-key" as const, alg: -7 }, + { type: "public-key" as const, alg: -257 }, + ], + authenticatorSelection: { + residentKey: "required" as const, + requireResidentKey: true, + userVerification: "required" as const, + }, + timeout: 60_000, + attestation: "none" as const, + extensions: { prf: {} }, + } satisfies PublicKeyCredentialCreationOptions & { + readonly extensions: AuthenticationExtensionsClientInputs & { + readonly prf: Record; + }; + }; + + try { + const credential = await runtime.createCredential({ publicKey }); + if ( + credential === null || + credential.type !== "public-key" || + typeof (credential as PublicKeyCredential).getClientExtensionResults !== "function" + ) { + return result("failed"); + } + const extensions = (credential as PublicKeyCredential) + .getClientExtensionResults() as AuthenticationExtensionsClientOutputs & PrfExtensionResultV1; + return result( + "created", + extensions.prf?.enabled === true ? "available" : "unavailable", + ); + } catch (cause) { + const name = safeErrorName(cause); + if (name === "NotAllowedError" || name === "AbortError") { + return result("cancelled"); + } + if (name === "NotSupportedError" || name === "SecurityError") { + return result("unsupported"); + } + return result("failed"); + } finally { + challengeBytes.fill(0); + userIdBytes.fill(0); + new Uint8Array(challenge).fill(0); + new Uint8Array(userId).fill(0); + } +} diff --git a/apps/authenticator/src/walkthrough/model-provenance.ts b/apps/authenticator/src/walkthrough/model-provenance.ts new file mode 100644 index 0000000..e2a6e83 --- /dev/null +++ b/apps/authenticator/src/walkthrough/model-provenance.ts @@ -0,0 +1,13 @@ +export const LIVE_GUIDANCE_MODEL_V1 = Object.freeze({ + runtimePackage: "@mediapipe/tasks-vision", + runtimeVersion: "1.0.1", + modelKind: "MediaPipe Face Landmarker float16", + modelPath: "/models/face_landmarker.task", + modelSource: + "https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/1/face_landmarker.task", + modelSha256: "64184e229b263107bc2b804c6625db1341ff2bb731874b0bcc2fe6544e0bc9ff", + wasmBasePath: "/mediapipe", + purpose: "ephemeral_capture_ux_only", + securityDecision: false, + sendsMeasurementsToServer: false, +} as const); diff --git a/apps/authenticator/src/walkthrough/production-copy.ts b/apps/authenticator/src/walkthrough/production-copy.ts new file mode 100644 index 0000000..e0975db --- /dev/null +++ b/apps/authenticator/src/walkthrough/production-copy.ts @@ -0,0 +1,217 @@ +import type { + AuthenticatorUiActionV1, + AuthenticatorUiDetailCodeV1, + AuthenticatorUiStateIdV1, +} from "@clean-start/contracts"; +import { FIGMA_ASSET_PATHS_V1 } from "../assets/provenance"; +import type { FlowScreenDisclosureV1, FlowScreenHeroV1 } from "../components/FlowScreen"; + +export interface WalkthroughCopyV1 { + readonly heading: string; + readonly body: string; + readonly primaryAction?: string; +} + +function copy(heading: string, body = "", primaryAction?: string): WalkthroughCopyV1 { + return Object.freeze( + primaryAction === undefined ? { heading, body } : { heading, body, primaryAction }, + ); +} + +export const WALKTHROUGH_RP_NAME_V1 = "Zoom" as const; + +// Figma 5132:134643 body. The app skips that separate intro screen: this +// sentence and its "Start selfie check" action live on the passkey-created +// screen, and the intro state auto-advances into the camera before it paints. +export const SELFIE_CHECK_INTRO_BODY_V1 = + "Use your camera to confirm that you’re a real, unique person. The check should take less than a minute." as const; + +/** Mirrors `AUTHENTICATOR_RP_PRESENTATIONS_V0.zoom_demo.returnLabel` (server-owned). */ +export const WALKTHROUGH_RETURN_LABEL_V1 = "Return to Zoom" as const; + +// Exact Figma copy is used where a frame exists: +// 5132:134352 request, 5132:134394/134441/134488/134535 passkey, +// 5132:134643 camera intro, 5132:134743/134841/134939/135141 capture, +// 5132:135038/135071 verifying, 5132:135104 success. +// Copy is used verbatim, including Figma’s "This might take few seconds". +export const WALKTHROUGH_COPY_V1: Readonly> = + Object.freeze({ + request_checking: copy("Loading"), + request_review: copy( + "Request from Zoom", + "Confirm you’re a real person with selfie check without sharing identity", + "Continue", + ), + request_invalid: copy("Request not valid", "Close this tab, then start again from Zoom."), + request_expired: copy("Request expired", "Close this tab, then start again from Zoom."), + request_return_target_invalid: copy("Cannot return safely", "The return destination was not approved."), + request_rp_identity_unavailable: copy("App details unavailable", "The requesting app could not be verified."), + admission_checking: copy("Checking browser"), + admission_safari_candidate: copy("Continue in Safari", "", "Continue"), + admission_chrome_candidate: copy("Continue in Chrome", "", "Continue"), + admission_handoff_required: copy( + "Open in Safari or Chrome", + "Continue in your browser to complete the selfie check.", + "Open browser", + ), + admission_handoff_departing: copy("Opening browser"), + admission_handoff_failed: copy("Browser could not open", "Close this tab and try again from Zoom."), + admission_update_required: copy("Update iOS to continue", "Selfie check needs iOS 18 or later in Safari or Chrome."), + admission_unsupported: copy("Device not supported", "Selfie check runs on supported iPhone browsers."), + admission_insecure: copy("Secure page required", "Open the secure link from Zoom to continue."), + admission_framed: copy("Open the page directly", "Selfie check can’t run inside another page."), + admission_private: copy("Use a normal browser tab", "Private browsing isn’t supported for selfie check."), + admission_pwa: copy("Use Safari or Chrome", "Installed web-app mode isn’t supported for selfie check."), + admission_unknown: copy("Browser not supported", "Open this link in Safari or Chrome on your iPhone."), + demo_authenticator_intro: copy( + "Secure your World ID", + "Create a passkey so you can use and recover this World ID on supported devices.", + "Create passkey", + ), + session_creating: copy("Starting"), + demo_authenticator_pending: copy("Creating passkey"), + session_completing_authenticator: copy("Creating passkey"), + demo_authenticator_ready: copy("Passkey created", SELFIE_CHECK_INTRO_BODY_V1, "Start selfie check"), + demo_authenticator_non_completion: copy( + "Passkey not created", + "Create a passkey to secure your World ID and continue the human check.", + "Try again", + ), + demo_authenticator_unavailable: copy( + "Passkeys aren’t available", + "This device or browser can’t create the passkey needed to secure your World ID.", + WALKTHROUGH_RETURN_LABEL_V1, + ), + demo_authenticator_interrupted: copy( + "Passkey not created", + "Create a passkey to secure your World ID and continue the human check.", + "Try again", + ), + demo_authenticator_transport_failure: copy( + "Unable to create a passkey", + "Check your connection and try again. Your World ID hasn’t been created.", + "Try again", + ), + demo_authenticator_invalid_response: copy( + "Unable to create a passkey", + "Something went wrong. Your World ID hasn’t been created.", + WALKTHROUGH_RETURN_LABEL_V1, + ), + session_reconciling: copy("Checking status"), + session_error: copy( + "Connection interrupted", + "Check your connection, then check the status to continue.", + "Check status", + ), + capture_policy_loading: copy("Preparing camera"), + capture_intro: copy("Complete a Selfie Check", SELFIE_CHECK_INTRO_BODY_V1, "Start selfie check"), + capture_permission_request: copy("Allow camera access"), + capture_acquiring: copy("Opening camera"), + capture_preparing: copy("Opening camera"), + capture_preview: copy("Place your face in the oval", "Position your face inside the oval, then hold steady."), + capture_guidance_adjust: copy("Adjust your position", "Follow the on-screen guidance, then try again.", "Try again"), + capture_guidance_retake: copy("Let’s try that again", "Hold your phone steady and retake your selfie.", "Retake"), + capture_guidance_unavailable: copy("Guidance unavailable", "You can continue without on-screen guidance.", "Continue"), + capture_sampling: copy("Great position, hold steady"), + capture_artifact_ready: copy("You’re all set"), + capture_cleaning: copy("You’re all set"), + capture_complete: copy("You’re all set"), + capture_error: copy("Camera unavailable", "Allow camera access, then try again.", "Try again"), + biometric_simulation_pending: copy("Verifying your selfie", "This might take few seconds"), + biometric_simulated_pass: copy("Verifying your selfie", "This might take few seconds"), + biometric_simulated_reject: copy( + "Selfie check unsuccessful", + "We couldn’t verify your selfie this time.", + WALKTHROUGH_RETURN_LABEL_V1, + ), + biometric_simulated_retry: copy("Let’s try that again", "Retake your selfie in good lighting.", "Retake"), + biometric_simulated_unavailable: copy( + "Verification unavailable", + "We couldn’t reach the verification service. Try again.", + "Try again", + ), + issuance_simulation_pending: copy("Verifying your selfie", "This might take few seconds"), + issuance_simulated_reject: copy( + "Unable to complete", + "Your selfie check couldn’t be completed.", + WALKTHROUGH_RETURN_LABEL_V1, + ), + issuance_simulated_unavailable: copy( + "Almost there", + "We couldn’t finish your selfie check. Try again.", + "Try again", + ), + simulated_credential_ready: copy("Preview complete", "Simulated result — no Selfie Check credential was issued.", WALKTHROUGH_RETURN_LABEL_V1), + return_redirecting: copy("You’re all set", "Returning to Zoom"), + return_callback_failed: copy("Couldn’t return to Zoom", "Try again to continue in Zoom.", "Try again"), + returned: copy("Returned to Zoom", "This preview did not send a proof to Zoom. You can close this tab."), + flow_cancelling: copy("Cancelling"), + flow_cancelled: copy("Cancelled", "You can start again from Zoom."), + flow_closed: copy("You can close this tab"), + flow_expired: copy("Session expired", "Start again from Zoom."), + flow_failed: copy("Something went wrong", "Start again from Zoom."), + }); + +export const WALKTHROUGH_PASSKEY_READY_COPY_V1 = Object.freeze({ + created: copy("Wallet unlocked", SELFIE_CHECK_INTRO_BODY_V1, "Start selfie check"), + notCreated: copy( + "Continue without a passkey", + `Passkey creation was not completed. ${SELFIE_CHECK_INTRO_BODY_V1}`, + "Start selfie check", + ), +}); + +// Detail lines whose frozen contract wording names the staging environment. +export const WALKTHROUGH_DETAIL_COPY_V1: Readonly>> = + Object.freeze({ + retake_limit_reached: "The retake limit was reached.", + policy_invalid: "The capture settings are not valid.", + prf_not_ready: "This step isn’t ready yet. Try again.", + unsupported_context: "This browser can’t start the camera.", + session_expired: "Your session expired.", + artifact_limit: "The capture exceeded its limits.", + gateway_disabled: "The service is unavailable right now.", + invalid_request: "The request was not valid.", + body_too_large: "The request was too large.", + unauthorized: "The request could not be authenticated.", + origin_forbidden: "This origin is not approved.", + not_found: "The session was not found.", + expired: "Your session expired.", + invalid_state: "That step isn’t available right now.", + binding_mismatch: "The operation did not match the current request.", + replay_rejected: "The operation was already completed.", + artifact_invalid: "The capture did not meet the requirements.", + resource_busy: "The service is busy. Try again.", + network_timeout: "The request timed out.", + response_invalid: "The response was not valid.", + safe_internal_error: "Something went wrong.", + }); + +export const WALKTHROUGH_ACTION_LABELS_V1 = Object.freeze({ + start_demo_authenticator: "Create passkey", + continue_to_camera: "Start selfie check", + start_camera: "Start selfie check", + collect_frame_metadata: "Continue", + return_to_rp: WALKTHROUGH_RETURN_LABEL_V1, + open_external_browser: "Open browser", + close: "Close", +}) satisfies Partial>; + +// Figma 5132:134352 "App will receive" rows: proof shared, selfie and passkey not. +export const WALKTHROUGH_DISCLOSURE_V1: FlowScreenDisclosureV1 = Object.freeze({ + partnerIcon: FIGMA_ASSET_PATHS_V1.zoom, + partnerAlt: WALKTHROUGH_RP_NAME_V1, + partnerTone: "brand", + heading: "App will receive", + rows: Object.freeze([ + Object.freeze({ icon: FIGMA_ASSET_PATHS_V1.humanEmblem, text: "Proof of selfie", included: true }), + Object.freeze({ icon: FIGMA_ASSET_PATHS_V1.personCircle, text: "Your selfie", included: false }), + Object.freeze({ icon: FIGMA_ASSET_PATHS_V1.personKey, text: "Your passkey", included: false }), + ]), +}); + +// `/demo/returned` stands in for the relying party after the return action. +export const WALKTHROUGH_RETURNED_HERO_V1: FlowScreenHeroV1 = Object.freeze({ + src: FIGMA_ASSET_PATHS_V1.zoom, + alt: WALKTHROUGH_RP_NAME_V1, +}); diff --git a/apps/authenticator/src/walkthrough/walkthrough-adapters.ts b/apps/authenticator/src/walkthrough/walkthrough-adapters.ts new file mode 100644 index 0000000..792da05 --- /dev/null +++ b/apps/authenticator/src/walkthrough/walkthrough-adapters.ts @@ -0,0 +1,245 @@ +import { + BROWSER_ADMISSION_V1, + type BrowserAdmissionDecisionV1, +} from "@clean-start/browser-admission"; +import { buildFrameBundle } from "@clean-start/frame-capture"; +import type { + BrowserAdmissionAdapterV1, +} from "../adapters/browser-admission"; +import { + BrowserMetadataCaptureAdapterV1, + type BrowserCaptureAdapterV1, + type BrowserCaptureCallbacksV1, + type BrowserCaptureStartV1, +} from "../adapters/browser-capture"; +import { + LiveFaceGuidanceControllerV1, + type LiveFaceGuidanceV1, +} from "./live-face-guidance"; + +export type WalkthroughCameraStatusV1 = + | "idle" + | "requesting" + | "live" + | "synthetic_fallback" + | "live_complete" + | "synthetic_complete" + | "failed"; + +function browserFamily(): "safari" | "chrome" { + return /(?:Chrome|CriOS|Chromium)\//i.test(navigator.userAgent) ? "chrome" : "safari"; +} + +export function makeLocalWalkthroughAdmissionV1( + browser: "safari" | "chrome" = browserFamily(), +): BrowserAdmissionDecisionV1 { + return Object.freeze({ + version: BROWSER_ADMISSION_V1, + outcome: "eligible_candidate", + reason: "candidate_only_ceremony_required", + mayStartSensitiveFlow: true, + browser, + iosVersionBand: "ios_18_plus", + context: "normal_tab", + engine: "unknown", + region: "unknown", + provider: "unknown", + capabilities: Object.freeze({ + webAuthnApi: typeof PublicKeyCredential === "undefined" ? "unavailable" : "available", + platformUv: "unknown", + clientCapabilitiesApi: "unknown", + conditionalMediation: "unknown", + mediaApi: typeof navigator.mediaDevices?.getUserMedia === "function" + ? "available" + : "unavailable", + visibility: "visible", + }), + }); +} + +export function createLocalWalkthroughAdmissionAdapterV1(): BrowserAdmissionAdapterV1 { + return Object.freeze({ + async evaluate() { + return makeLocalWalkthroughAdmissionV1(); + }, + async openExternalBrowser() { + throw new TypeError("walkthrough_handoff_not_available"); + }, + }); +} + +interface FallbackAttemptV1 { + readonly generation: number; + readonly input: BrowserCaptureStartV1; + readonly callbacks: BrowserCaptureCallbacksV1; + ready: boolean; + finalizing: boolean; + livePreview: boolean; +} + +async function constantFallbackFrameDigestV1(): Promise { + const digest = await crypto.subtle.digest("SHA-256", new Uint8Array(4)); + return Array.from( + new Uint8Array(digest), + (byte) => byte.toString(16).padStart(2, "0"), + ).join(""); +} + +export class LocalWalkthroughCaptureAdapterV1 implements BrowserCaptureAdapterV1 { + private readonly live: BrowserCaptureAdapterV1; + private readonly guidance?: Pick; + private readonly onGuidance?: (guidance: LiveFaceGuidanceV1) => void; + private generation = 0; + private attempt?: FallbackAttemptV1; + + constructor(options: { + readonly getVideo: () => HTMLVideoElement | null; + readonly getCanvas: () => HTMLCanvasElement | null; + readonly onStatus: (status: WalkthroughCameraStatusV1) => void; + readonly onGuidance?: (guidance: LiveFaceGuidanceV1) => void; + readonly liveAdapter?: BrowserCaptureAdapterV1; + readonly guidanceController?: Pick; + }) { + this.onStatus = options.onStatus; + this.onGuidance = options.onGuidance; + this.live = options.liveAdapter ?? new BrowserMetadataCaptureAdapterV1({ + getVideo: options.getVideo, + getCanvas: options.getCanvas, + }); + this.guidance = options.guidanceController ?? (options.onGuidance === undefined + ? undefined + : new LiveFaceGuidanceControllerV1(options.getVideo, options.onGuidance)); + } + + private readonly onStatus: (status: WalkthroughCameraStatusV1) => void; + + start(input: BrowserCaptureStartV1, callbacks: BrowserCaptureCallbacksV1): void { + const attempt: FallbackAttemptV1 = { + generation: ++this.generation, + input, + callbacks, + ready: false, + finalizing: false, + livePreview: false, + }; + this.attempt = attempt; + this.onStatus("requesting"); + try { + this.live.start(input, { + onCaptureState: async (state) => { + if (this.attempt !== attempt) return; + if (state === "preview") { + attempt.livePreview = true; + this.onStatus("live"); + } + await callbacks.onCaptureState(state); + if (state === "preview") this.guidance?.start(); + }, + onQuality: callbacks.onQuality, + onArtifactReady: callbacks.onArtifactReady, + onFailure: async (code) => { + if (this.attempt !== attempt) return; + if (attempt.livePreview) { + this.guidance?.stop(); + this.onStatus("failed"); + await callbacks.onFailure(code); + return; + } + await this.activateFallback(attempt); + }, + onComplete: async () => { + this.guidance?.stop(); + if (this.attempt === attempt) this.attempt = undefined; + this.onStatus(attempt.livePreview ? "live_complete" : "synthetic_complete"); + await callbacks.onComplete(); + }, + }); + } catch { + void this.activateFallback(attempt); + } + } + + requestMetadataCollection(): void { + const attempt = this.attempt; + if (attempt?.ready === true) { + void this.finalizeFallback(attempt); + return; + } + this.live.requestMetadataCollection(); + } + + stop(): void { + this.generation += 1; + this.attempt = undefined; + this.guidance?.stop(); + this.live.stop(); + } + + clearTransientMedia(): void { + this.guidance?.stop(); + this.live.clearTransientMedia(); + } + + unmount(): void { + this.generation += 1; + this.attempt = undefined; + this.guidance?.stop(); + this.live.unmount(); + } + + private async activateFallback(attempt: FallbackAttemptV1): Promise { + if (this.attempt !== attempt || attempt.generation !== this.generation) return; + attempt.ready = true; + this.guidance?.stop(); + this.onGuidance?.(Object.freeze({ + code: "unavailable", + text: "Camera unavailable", + })); + this.onStatus("synthetic_fallback"); + await attempt.callbacks.onCaptureState("acquiring"); + await attempt.callbacks.onCaptureState("awaiting_first_frame"); + await attempt.callbacks.onCaptureState("preview"); + } + + private async finalizeFallback(attempt: FallbackAttemptV1): Promise { + if ( + this.attempt !== attempt || + attempt.generation !== this.generation || + attempt.finalizing + ) return; + attempt.finalizing = true; + try { + await attempt.callbacks.onQuality({ + version: "client_quality_policy_v0", + policyId: attempt.input.qualityPolicy.policyId, + action: "ready", + reasonCodes: [], + }); + const artifact = await buildFrameBundle({ + sessionId: attempt.input.sessionId, + policy: attempt.input.policy, + accountPublicMaterialDigestSha256: + attempt.input.accountPublicMaterialDigestSha256, + nonceDigestSha256: attempt.input.nonceDigestSha256, + frames: [{ + transportIndex: 0, + width: 1, + height: 1, + encoding: "rgba8", + byteLength: 4, + frameDigestSha256: await constantFallbackFrameDigestV1(), + }], + }); + await attempt.callbacks.onArtifactReady(artifact); + await attempt.callbacks.onCaptureState("artifact_ready"); + await attempt.callbacks.onCaptureState("cleaning_up"); + this.onStatus("synthetic_complete"); + await attempt.callbacks.onComplete(); + } catch { + this.onStatus("failed"); + await attempt.callbacks.onFailure("unknown"); + } finally { + if (this.attempt === attempt) this.attempt = undefined; + } + } +} diff --git a/apps/authenticator/src/wallet/session.ts b/apps/authenticator/src/wallet/session.ts new file mode 100644 index 0000000..31b726d --- /dev/null +++ b/apps/authenticator/src/wallet/session.ts @@ -0,0 +1,140 @@ +import { initializeWalletKit, type CredentialStore, type WalletKit } from "@worldcoin/walletkit-web"; + +const PROFILE_KEY = "world-id-wallet-v1"; +const PRF_INPUT = new TextEncoder().encode("world-id/web-authenticator/prf/v1"); +const KEY_SALT = new TextEncoder().encode("world-id/web-authenticator/keys/v1"); + +export interface WalletProfile { + readonly version: 1; + readonly credentialId: string; +} + +export interface WalletSession { + readonly client: WalletKit; + readonly store: CredentialStore; +} + +type PrfOutputs = AuthenticationExtensionsClientOutputs & { + prf?: { results?: { first?: ArrayBuffer } }; +}; + +export function parseWalletProfile(raw: string): WalletProfile { + const value: unknown = JSON.parse(raw); + if ( + typeof value !== "object" || value === null || + !("version" in value) || value.version !== 1 || + !("credentialId" in value) || typeof value.credentialId !== "string" || + !/^(?:[0-9a-f]{2}){1,1024}$/.test(value.credentialId) + ) throw new Error("Saved wallet metadata is invalid. Do not clear site data if you need this wallet."); + return { version: 1, credentialId: value.credentialId }; +} + +export async function deriveWalletKeys(prf: Uint8Array): Promise<{ + seed: Uint8Array; + databaseKey: Uint8Array; +}> { + if (prf.byteLength !== 32) throw new Error("The passkey returned invalid PRF output."); + const key = await crypto.subtle.importKey("raw", prf, "HKDF", false, ["deriveBits"]); + const derive = async (purpose: string) => new Uint8Array(await crypto.subtle.deriveBits({ + name: "HKDF", hash: "SHA-256", salt: KEY_SALT, + info: new TextEncoder().encode(purpose), + }, key, 256)); + return { seed: await derive("authenticator-seed"), databaseKey: await derive("credential-store") }; +} + +/** Unlocks the local vault. This does not register an account or issue a credential. */ +export async function openPasskeyWallet(signal: AbortSignal): Promise { + if (!window.isSecureContext || typeof PublicKeyCredential === "undefined") { + throw new Error("Use a secure browser with a PRF-capable passkey provider."); + } + if (navigator.locks === undefined) { + throw new Error("This browser cannot safely coordinate wallet setup across tabs."); + } + return navigator.locks.request("world-id-wallet-setup-v1", { ifAvailable: true }, async (lock) => { + if (lock === null) throw new Error("Wallet setup is already running in another tab."); + return openWalletUnderLock(signal); + }); +} + +async function openWalletUnderLock(signal: AbortSignal): Promise { + signal.throwIfAborted(); + const saved = window.localStorage.getItem(PROFILE_KEY); + let profile = saved === null ? undefined : parseWalletProfile(saved); + if (profile === undefined) { + const credential = await navigator.credentials.create({ + signal, + publicKey: { + challenge: crypto.getRandomValues(new Uint8Array(32)), + rp: { name: "World ID" }, + user: { id: crypto.getRandomValues(new Uint8Array(32)), name: "World ID", displayName: "World ID" }, + pubKeyCredParams: [{ type: "public-key", alg: -7 }, { type: "public-key", alg: -257 }], + authenticatorSelection: { residentKey: "required", userVerification: "required" }, + attestation: "none", timeout: 60_000, + extensions: { prf: {} } as AuthenticationExtensionsClientInputs, + }, + }); + if (!(credential instanceof PublicKeyCredential)) throw new Error("Passkey creation was not completed."); + const extensions = credential.getClientExtensionResults() as AuthenticationExtensionsClientOutputs & { prf?: { enabled?: boolean } }; + if (extensions.prf?.enabled !== true) throw new Error("This passkey provider does not support PRF. Choose a PRF-capable provider."); + profile = { version: 1, credentialId: Array.from(new Uint8Array(credential.rawId), b => b.toString(16).padStart(2, "0")).join("") }; + // Persist only the public credential ID, before opening any encrypted storage. + window.localStorage.setItem(PROFILE_KEY, JSON.stringify(profile)); + } + const credentialId = Uint8Array.from(profile.credentialId.match(/../g)!, pair => Number.parseInt(pair, 16)); + const credential = await navigator.credentials.get({ + signal, + publicKey: { + challenge: crypto.getRandomValues(new Uint8Array(32)), + allowCredentials: [{ type: "public-key", id: credentialId }], + userVerification: "required", timeout: 60_000, + extensions: { prf: { eval: { first: PRF_INPUT } } } as AuthenticationExtensionsClientInputs, + }, + }); + if (!(credential instanceof PublicKeyCredential) || credential.type !== "public-key") { + throw new Error("Passkey unlock was not completed."); + } + const actualId = new Uint8Array(credential.rawId); + if (actualId.length !== credentialId.length || actualId.some((byte, index) => byte !== credentialId[index])) { + throw new Error("The passkey does not match this wallet."); + } + const output = (credential.getClientExtensionResults() as PrfOutputs).prf?.results?.first; + if (!(output instanceof ArrayBuffer) || output.byteLength !== 32) { + throw new Error("This passkey did not provide the PRF output needed to unlock your wallet."); + } + const prf = new Uint8Array(output); + let keys: Awaited> | undefined; + let client: WalletKit | undefined; + const opening = new AbortController(); + const abort = () => { opening.abort(); client?.terminate(); }; + const timeout = setTimeout(abort, 60_000); + signal.addEventListener("abort", abort, { once: true }); + try { + signal.throwIfAborted(); + keys = await deriveWalletKeys(prf); + client = await initializeWalletKit({ signal: opening.signal }); + const storageKeys = await client.StorageKeys.fromBytes(keys.databaseKey); + const digest = new Uint8Array(await crypto.subtle.digest("SHA-256", credentialId)); + const root = Array.from(digest, b => b.toString(16).padStart(2, "0")).join(""); + const paths = await client.StoragePaths.fromRoot(`/walletkit/${root}`); + let store: CredentialStore; + try { + store = await client.CredentialStore.new(paths, storageKeys); + await client.recoveryDataFromSeed(keys.seed); + } finally { + paths.free(); + storageKeys.free(); + } + signal.throwIfAborted(); + opening.signal.throwIfAborted(); + return { client, store }; + } catch (error) { + client?.terminate(); + throw error; + } finally { + clearTimeout(timeout); + signal.removeEventListener("abort", abort); + prf.fill(0); + keys?.seed.fill(0); + keys?.databaseKey.fill(0); + } +} diff --git a/apps/authenticator/static-demo/index.html b/apps/authenticator/static-demo/index.html new file mode 100644 index 0000000..f8f79af --- /dev/null +++ b/apps/authenticator/static-demo/index.html @@ -0,0 +1,14 @@ + + + + + + + + World ID + + +
    + + + diff --git a/apps/authenticator/static-demo/main.tsx b/apps/authenticator/static-demo/main.tsx new file mode 100644 index 0000000..deaaa09 --- /dev/null +++ b/apps/authenticator/static-demo/main.tsx @@ -0,0 +1,22 @@ +import { createRoot } from "react-dom/client"; +import type { AbortableSimulatorBrowserSessionPortV0 } from "../src/adapters/http-session"; +import { AuthenticatorAppV1, makeAuthenticatorControllerFactoryV1 } from "../src/App"; +import { createAuthenticatorServerRuntimeV0 } from "../src/server/runtime.server"; +import "../src/styles/app.css"; + +// Static demo entry. The whole staging simulator (session gateway, demo +// authenticator, biometric and issuance simulators) runs inside this page, so +// `bun run build:static-demo` produces a plain static site with no server to +// host. This is a demo convenience only: keys are generated per page load and +// nothing here is a production trust boundary. The served app (`src/main.tsx`) +// keeps the simulator behind the same-origin Bun server. + +const rootElement = document.getElementById("root"); +if (rootElement === null) throw new TypeError("authenticator_root_missing"); + +const runtime = await createAuthenticatorServerRuntimeV0(); +const sessionPort: AbortableSimulatorBrowserSessionPortV0 = runtime.browserPort; + +createRoot(rootElement).render( + , +); diff --git a/apps/authenticator/test/browser-admission-adapter.test.ts b/apps/authenticator/test/browser-admission-adapter.test.ts new file mode 100644 index 0000000..f467974 --- /dev/null +++ b/apps/authenticator/test/browser-admission-adapter.test.ts @@ -0,0 +1,69 @@ +import { describe, expect, test } from "bun:test"; +import { + PRF_INPUT_V1_SHA256, + WEB_AUTHN_PRF_AUTHENTICATOR_V1, +} from "@clean-start/contracts"; +import type { BrowserAdmissionInputV1 } from "@clean-start/browser-admission"; +import { evaluateBrowserAdmissionFactsV1 } from "../src/adapters/browser-admission"; + +const policy = { + version: WEB_AUTHN_PRF_AUTHENTICATOR_V1, + rpId: "world.id", + allowedOrigins: ["https://world.id"], + userVerification: "required", + prfInputSha256: PRF_INPUT_V1_SHA256, + prfOutputMapping: "verbatim_32_byte_first_result_to_world_id_4_signer_seed", + secretLifecycle: "browser_memory_only", +} as const; + +function input(overrides: Partial = {}): BrowserAdmissionInputV1 { + return { + actualOrigin: "https://world.id", + isTopLevel: true, + frameOrigin: "same_origin", + permissionsPolicy: "allowed", + requestContext: { + transactionHandle: "validated", + returnTarget: "validated", + session: "approved", + unexpectedQueryFields: false, + }, + platform: { device: "iphone", iosMajor: 18, browser: "safari" }, + browserContext: "normal_tab", + embeddedEvidence: "none", + capabilities: { + secureContext: true, + webAuthnApi: "available", + platformUv: "available", + clientCapabilitiesApi: "unknown", + conditionalMediation: "unknown", + mediaApi: "available", + visibility: "visible", + }, + ...overrides, + }; +} + +describe("real W02 admission adapter", () => { + test("keeps Safari and Chrome iOS 18 candidates separate", () => { + expect(evaluateBrowserAdmissionFactsV1(policy, input()).browser).toBe("safari"); + expect(evaluateBrowserAdmissionFactsV1(policy, input({ + platform: { device: "iphone", iosMajor: 18, browser: "chrome" }, + })).browser).toBe("chrome"); + }); + + test("blocks iOS 15-17 and embedded contexts before sensitive work", () => { + const oldIos = evaluateBrowserAdmissionFactsV1(policy, input({ + platform: { device: "iphone", iosMajor: 17, browser: "safari" }, + })); + expect(oldIos.outcome).toBe("ios_update_required"); + expect(oldIos.mayStartSensitiveFlow).toBe(false); + + const embedded = evaluateBrowserAdmissionFactsV1(policy, input({ + browserContext: "embedded", + embeddedEvidence: "confirmed", + })); + expect(embedded.outcome).toBe("embedded_browser_handoff"); + expect(embedded.mayStartSensitiveFlow).toBe(false); + }); +}); diff --git a/apps/authenticator/test/capture-adapter.test.ts b/apps/authenticator/test/capture-adapter.test.ts new file mode 100644 index 0000000..f013a04 --- /dev/null +++ b/apps/authenticator/test/capture-adapter.test.ts @@ -0,0 +1,115 @@ +import { describe, expect, test } from "bun:test"; +import { + FRAME_BUNDLE_V0, + FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + SIMULATION_MODE, + SIMULATOR_UI_QUALITY_POLICY_V0, + type FrameBundleV0, + type SimulationCapturePolicyV0, +} from "@clean-start/contracts"; +import type { CaptureRequest, CaptureRuntimeOptions } from "@clean-start/frame-capture"; +import { BrowserMetadataCaptureAdapterV1 } from "../src/adapters/browser-capture"; + +const policy: SimulationCapturePolicyV0 = { + version: "simulation_capture_policy_v0", + mode: "simulation", + environment: "staging", + policyId: "cs5-metadata-camera-active-v0", + dataMode: "metadata_only", + encoding: "rgba8", + minFrames: 1, + maxFrames: 2, + maxWidth: 1024, + maxHeight: 1024, + maxFrameBytes: 4_194_304, + maxTotalBytes: 8_388_608, + captureOffsetsAreDiagnosticOnly: true, + arrayOrderHasBiometricMeaning: false, + qualityPolicyId: SIMULATOR_UI_QUALITY_POLICY_V0.policyId, + expiresAt: "2030-01-01T00:00:00.000Z", +}; + +describe("W04/W05 browser capture adapter", () => { + test("waits for the explicit metadata action and emits only a FrameBundle", async () => { + let captureRequest: CaptureRequest | undefined; + let runtimeOptions: CaptureRuntimeOptions | undefined; + let resolveDone!: () => void; + const done = new Promise((resolve) => { resolveDone = resolve; }); + const bundle: FrameBundleV0 = { + kind: FRAME_BUNDLE_V0, + mode: SIMULATION_MODE, + sessionId: "session", + policyId: policy.policyId, + accountPublicMaterialDigestSha256: "a".repeat(64), + nonceDigestSha256: "b".repeat(64), + dataMode: "metadata_only", + frames: [{ + transportIndex: 0, + width: 1, + height: 1, + encoding: "rgba8", + byteLength: 4, + frameDigestSha256: "c".repeat(64), + }], + totalByteLength: 4, + digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + artifactDigestSha256: "d".repeat(64), + }; + const states: string[] = []; + const quality: string[] = []; + let artifact: FrameBundleV0 | undefined; + const adapter = new BrowserMetadataCaptureAdapterV1({ + runtimeFactory(options) { + runtimeOptions = options; + return { + async capture(request) { + captureRequest = request; + options.onStateChange?.("acquiring"); + options.onStateChange?.("awaiting_first_frame"); + options.onStateChange?.("preview"); + await request.inspectTransientFrame?.({ + width: 1, + height: 1, + bytes: new Uint8ClampedArray([1, 2, 3, 4]), + }); + return bundle; + }, + cancel() {}, + unmount() {}, + }; + }, + }); + + adapter.start({ + entry: { + userActivated: true, + secureTopLevelContextApproved: true, + prfReady: true, + iosMajor: 18, + browser: "safari", + }, + policy, + qualityPolicy: SIMULATOR_UI_QUALITY_POLICY_V0, + sessionId: "session", + accountPublicMaterialDigestSha256: "a".repeat(64), + nonceDigestSha256: "b".repeat(64), + retakesUsed: 0, + }, { + onCaptureState(state) { states.push(state); }, + onQuality(result) { quality.push(result.action); }, + onArtifactReady(value) { artifact = value; }, + onFailure() {}, + onComplete() { resolveDone(); }, + }); + await Promise.resolve(); + expect(states).toEqual(["acquiring", "awaiting_first_frame", "preview"]); + expect(quality).toEqual([]); + + adapter.requestMetadataCollection(); + await done; + expect(quality).toEqual(["ready"]); + expect(artifact).toBe(bundle); + expect(captureRequest?.policy.dataMode).toBe("metadata_only"); + expect(runtimeOptions).toBeDefined(); + }); +}); diff --git a/apps/authenticator/test/controller.test.ts b/apps/authenticator/test/controller.test.ts new file mode 100644 index 0000000..a5166f0 --- /dev/null +++ b/apps/authenticator/test/controller.test.ts @@ -0,0 +1,577 @@ +import { describe, expect, test } from "bun:test"; +import type { BrowserAdmissionDecisionV1 } from "@clean-start/browser-admission"; +import { + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + FRAME_BUNDLE_V0, + FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0, + SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, + SIMULATOR_BROWSER_SESSION_PORT_V0, + SIMULATOR_BROWSER_SESSION_ERROR_V0, + SIMULATOR_BROWSER_SESSION_VIEW_V0, + SIMULATOR_UI_BOOTSTRAP_V0, + SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, + SIMULATOR_UI_QUALITY_POLICY_V0, + makeAuthenticatorUiSnapshotV1, + type BrowserIdempotentSessionFieldsV0, + type BrowserSessionFieldsV0, + type CompleteDemoAuthenticatorV0, + type CreateSimulatorBrowserSessionV0, + type SimulatorBrowserSessionViewV0, + type SimulatorBrowserSessionResultV0, + type SimulatorUiBootstrapV0, + type SubmitSimulatorCaptureV0, + type FrameBundleV0, +} from "@clean-start/contracts"; +import type { + BrowserCaptureAdapterV1, + BrowserCaptureCallbacksV1, + BrowserCaptureStartV1, +} from "../src/adapters/browser-capture"; +import type { BrowserAdmissionAdapterV1 } from "../src/adapters/browser-admission"; +import type { AbortableSimulatorBrowserSessionPortV0 } from "../src/adapters/http-session"; +import { AuthenticatorFlowControllerV1 } from "../src/flow/controller"; + +const expiresAt = "2030-01-01T00:00:00.000Z"; +const capturePolicy = { ...SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, expiresAt }; + +function session( + state: SimulatorBrowserSessionViewV0["state"], + code: SimulatorBrowserSessionViewV0["code"], + nonceBase64Url = "nonce", +): SimulatorBrowserSessionViewV0 { + return { + kind: SIMULATOR_BROWSER_SESSION_VIEW_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + sessionId: "session", + browserHandle: "browser-handle", + nonceBase64Url, + state, + code, + retryable: code === "simulation_retry" || code === "simulation_unavailable" || code === "issuance_unavailable", + expiresAt, + capturePolicy, + artifactSummary: state === "simulated_credential_ready" ? { + kind: SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0, + biometricVerification: "not_performed", + uniqueness: "not_performed", + credentialClass: "not_selfie_check", + productionCredential: false, + } : null, + }; +} + +class FakeSessionPort implements AbortableSimulatorBrowserSessionPortV0 { + returnCalls = 0; + createCalls = 0; + cancelCalls = 0; + + async bootstrap(): Promise { + return { + kind: SIMULATOR_UI_BOOTSTRAP_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + rpPresentationId: "zoom_demo" as const, + accountPublicMaterialDigestSha256: "0".repeat(64), + returnAction: "server_managed" as const, + authenticator: { + kind: "injected_demo_only" as const, + webauthnPerformed: false as const, + prfEvaluated: false as const, + worldIdCreated: false as const, + }, + qualityPolicy: SIMULATOR_UI_QUALITY_POLICY_V0, + }; + } + async createSession(_input: CreateSimulatorBrowserSessionV0): Promise { + this.createCalls += 1; + return session("created", "created"); + } + async beginDemoAuthenticator(input: BrowserIdempotentSessionFieldsV0) { + return { + kind: SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + sessionId: input.sessionId, + idempotencyKey: input.idempotencyKey, + completionHandle: "completion-handle", + claims: { + webauthnPerformed: false as const, + prfEvaluated: false as const, + worldIdCreated: false as const, + }, + expiresAt, + }; + } + async completeDemoAuthenticator(_input: CompleteDemoAuthenticatorV0) { + return session("passkey_complete", "passkey_complete"); + } + async prepareCapture(_input: BrowserSessionFieldsV0): Promise { + return session("capture_ready", "capture_ready"); + } + async submitCapture(_input: SubmitSimulatorCaptureV0): Promise { + return session("simulated_credential_ready", "simulated_credential_ready"); + } + async retryUnavailable(_input: BrowserIdempotentSessionFieldsV0) { + return session("simulated_credential_ready", "simulated_credential_ready"); + } + async getStatus(_input: BrowserSessionFieldsV0): Promise { + return session("capture_ready", "capture_ready"); + } + async cancel(_input: BrowserSessionFieldsV0) { + this.cancelCalls += 1; + return session("cancelled", "cancelled"); + } + async returnToRp(_input: BrowserSessionFieldsV0) { + this.returnCalls += 1; + return { + kind: SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + action: "server_managed" as const, + }; + } +} + +function admission(outcome: "eligible_candidate" | "ios_update_required" = "eligible_candidate"): BrowserAdmissionDecisionV1 { + return { + version: "browser_admission_v1", + outcome, + reason: outcome === "eligible_candidate" ? "candidate_only_ceremony_required" : "ios_version_requires_update", + mayStartSensitiveFlow: outcome === "eligible_candidate", + browser: "safari", + iosVersionBand: outcome === "eligible_candidate" ? "ios_18_plus" : "ios_15_17", + context: "normal_tab", + engine: "unknown", + region: "unknown", + provider: "unknown", + capabilities: { + webAuthnApi: "available", + platformUv: "available", + clientCapabilitiesApi: "unknown", + conditionalMediation: "unknown", + mediaApi: "available", + visibility: "visible", + }, + }; +} + +function captureAdapter(order: string[] = []): BrowserCaptureAdapterV1 { + return { + start() { order.push("start_capture"); }, + requestMetadataCollection() { order.push("collect_frame_metadata"); }, + stop() { order.push("stop_capture"); }, + clearTransientMedia() { order.push("clear_transient_media"); }, + unmount() { order.push("unmount"); }, + }; +} + +function admissionAdapter(value: BrowserAdmissionDecisionV1): BrowserAdmissionAdapterV1 { + return { + async evaluate() { return value; }, + async openExternalBrowser() {}, + }; +} + +const fakeFrameBundle: FrameBundleV0 = { + kind: FRAME_BUNDLE_V0, + mode: SIMULATION_MODE, + sessionId: "session", + policyId: capturePolicy.policyId, + accountPublicMaterialDigestSha256: "0".repeat(64), + nonceDigestSha256: "1".repeat(64), + dataMode: "metadata_only", + frames: [{ + transportIndex: 0, + width: 1, + height: 1, + encoding: "rgba8", + byteLength: 4, + frameDigestSha256: "2".repeat(64), + }], + totalByteLength: 4, + digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + artifactDigestSha256: "3".repeat(64), +}; + +function completingCaptureAdapter(): BrowserCaptureAdapterV1 { + return { + start(_input: BrowserCaptureStartV1, callbacks: BrowserCaptureCallbacksV1) { + void callbacks.onCaptureState("acquiring"); + void callbacks.onCaptureState("awaiting_first_frame"); + void callbacks.onCaptureState("preview"); + void callbacks.onQuality({ + version: "client_quality_policy_v0", + policyId: SIMULATOR_UI_QUALITY_POLICY_V0.policyId, + action: "ready", + reasonCodes: [], + }); + void callbacks.onArtifactReady(fakeFrameBundle); + void callbacks.onCaptureState("artifact_ready"); + void callbacks.onCaptureState("cleaning_up"); + void callbacks.onComplete(); + }, + requestMetadataCollection() {}, + stop() {}, + clearTransientMedia() {}, + unmount() {}, + }; +} + +async function advanceToCaptureIntro(controller: AuthenticatorFlowControllerV1): Promise { + controller.start(); + await controller.waitForIdle(); + controller.act("continue"); + await controller.waitForIdle(); + controller.act("continue"); + controller.act("start_demo_authenticator"); + await controller.waitForIdle(); + controller.act("continue_to_camera"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("capture_intro"); +} + +describe("flow controller", () => { + test("runs bootstrap, real admission, demo session, and capture preparation from frozen effects", async () => { + const port = new FakeSessionPort(); + const controller = new AuthenticatorFlowControllerV1({ + sessionPort: port, + admission: admissionAdapter(admission()), + capture: captureAdapter(), + }); + controller.start(); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("request_review"); + + controller.act("continue"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("admission_safari_candidate"); + controller.act("continue"); + expect(controller.snapshot.state).toBe("demo_authenticator_intro"); + controller.act("start_demo_authenticator"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("demo_authenticator_ready"); + expect(port.createCalls).toBe(1); + + controller.act("continue_to_camera"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("capture_intro"); + }); + + test("invokes zero session or capture work for iOS 15-17", async () => { + const port = new FakeSessionPort(); + const order: string[] = []; + const controller = new AuthenticatorFlowControllerV1({ + sessionPort: port, + admission: admissionAdapter(admission("ios_update_required")), + capture: captureAdapter(order), + }); + controller.start(); + await controller.waitForIdle(); + controller.act("continue"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("admission_update_required"); + expect(port.createCalls).toBe(0); + expect(order).toEqual([]); + }); + + test("runs abort, stop, clear, then session cancel in exact order", async () => { + const port = new FakeSessionPort(); + const order: string[] = []; + const controller = new AuthenticatorFlowControllerV1({ + sessionPort: port, + admission: admissionAdapter(admission()), + capture: captureAdapter(order), + initialSnapshot: makeAuthenticatorUiSnapshotV1({ + state: "capture_sampling", + authoritativeSessionState: "capture_ready", + rpPresentationId: "zoom_demo", + visualSource: "figma_5132_134841", + }), + initialSession: session("capture_ready", "capture_ready"), + onEffect(effect) { order.push(effect); }, + }); + controller.act("cancel"); + await controller.waitForIdle(); + expect(order.slice(0, 6)).toEqual([ + "abort_active_effects", + "stop_capture", + "stop_capture", + "clear_transient_media", + "clear_transient_media", + "cancel_session", + ]); + expect(port.cancelCalls).toBe(1); + expect(controller.snapshot.state).toBe("flow_cancelled"); + }); + + test("local Close never calls the session return port", async () => { + const port = new FakeSessionPort(); + let closed = 0; + const controller = new AuthenticatorFlowControllerV1({ + sessionPort: port, + admission: admissionAdapter(admission()), + capture: captureAdapter(), + initialSnapshot: makeAuthenticatorUiSnapshotV1({ + state: "request_invalid", + visualSource: "verified_template", + }), + closeLocally() { closed += 1; }, + }); + controller.act("close"); + await controller.waitForIdle(); + expect(closed).toBe(1); + expect(port.returnCalls).toBe(0); + expect(controller.snapshot.state).toBe("flow_closed"); + }); + + test("uses the session return port only for an explicit return action", async () => { + const port = new FakeSessionPort(); + let navigated = 0; + const controller = new AuthenticatorFlowControllerV1({ + sessionPort: port, + admission: admissionAdapter(admission()), + capture: captureAdapter(), + initialSnapshot: makeAuthenticatorUiSnapshotV1({ + state: "simulated_credential_ready", + authoritativeSessionState: "simulated_credential_ready", + rpPresentationId: "zoom_demo", + visualSource: "figma_5132_135104", + }), + initialSession: session("simulated_credential_ready", "simulated_credential_ready"), + navigateReturned() { navigated += 1; }, + }); + controller.act("return_to_rp"); + await controller.waitForIdle(); + expect(port.returnCalls).toBe(1); + expect(navigated).toBe(1); + expect(controller.snapshot.state).toBe("returned"); + }); + + test("aborts an in-flight pre-session request before local cleanup", async () => { + class PendingSessionPort extends FakeSessionPort { + aborted = false; + override async createSession( + _input: CreateSimulatorBrowserSessionV0, + signal?: AbortSignal, + ): Promise { + this.createCalls += 1; + return new Promise((_resolve, reject) => { + signal?.addEventListener("abort", () => { + this.aborted = true; + reject(new DOMException("Aborted", "AbortError")); + }, { once: true }); + }); + } + } + const port = new PendingSessionPort(); + const controller = new AuthenticatorFlowControllerV1({ + sessionPort: port, + admission: admissionAdapter(admission()), + capture: captureAdapter(), + }); + controller.start(); + await controller.waitForIdle(); + controller.act("continue"); + await controller.waitForIdle(); + controller.act("continue"); + controller.act("start_demo_authenticator"); + expect(controller.snapshot.state).toBe("session_creating"); + controller.act("cancel"); + await controller.waitForIdle(); + expect(port.aborted).toBe(true); + expect(controller.snapshot.state).toBe("flow_cancelled"); + }); + + test("does not replace active session A with a valid projection for session B", async () => { + class CrossSessionPort extends FakeSessionPort { + override async getStatus(_input: BrowserSessionFieldsV0) { + return { + ...session("capture_ready", "capture_ready"), + sessionId: "session-b", + browserHandle: "handle-b", + }; + } + } + const controller = new AuthenticatorFlowControllerV1({ + sessionPort: new CrossSessionPort(), + admission: admissionAdapter(admission()), + capture: captureAdapter(), + initialSnapshot: makeAuthenticatorUiSnapshotV1({ + state: "biometric_simulated_unavailable", + authoritativeSessionState: "simulated_unavailable", + rpPresentationId: "zoom_demo", + visualSource: "not_figma_verified", + }), + initialSession: session("simulated_unavailable", "simulation_unavailable"), + }); + controller.act("query_status"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("session_error"); + expect(controller.snapshot.detailCode).toBe("response_invalid"); + }); + + test("rejects demo-ready output whose session and idempotency do not match the request", async () => { + class CrossDemoPort extends FakeSessionPort { + override async beginDemoAuthenticator(_input: BrowserIdempotentSessionFieldsV0) { + return { + kind: SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + sessionId: "session-b", + idempotencyKey: "demo-b", + completionHandle: "completion-b", + claims: { + webauthnPerformed: false as const, + prfEvaluated: false as const, + worldIdCreated: false as const, + }, + expiresAt, + }; + } + } + const retryController = new AuthenticatorFlowControllerV1({ + sessionPort: new CrossDemoPort(), + admission: admissionAdapter(admission()), + capture: captureAdapter(), + initialSnapshot: makeAuthenticatorUiSnapshotV1({ + state: "demo_authenticator_non_completion", + authoritativeSessionState: "created", + rpPresentationId: "zoom_demo", + visualSource: "figma_5132_134488", + }), + initialSession: session("created", "created"), + }); + retryController.act("try_again"); + await retryController.waitForIdle(); + expect(retryController.snapshot.state).toBe("demo_authenticator_invalid_response"); + }); + + test("rotates capture idempotency only after an accepted retake nonce changes", async () => { + class RetakePort extends FakeSessionPort { + prepareCalls = 0; + submitKeys: string[] = []; + + override async prepareCapture(_input: BrowserSessionFieldsV0): Promise { + this.prepareCalls += 1; + return session( + "capture_ready", + "capture_ready", + this.prepareCalls === 1 ? "nonce-one" : "nonce-two", + ); + } + + override async submitCapture(input: SubmitSimulatorCaptureV0): Promise { + this.submitKeys.push(input.idempotencyKey); + return this.submitKeys.length === 1 + ? session("simulated_retry", "simulation_retry", "nonce-one") + : session("simulated_credential_ready", "simulated_credential_ready", "nonce-two"); + } + } + const port = new RetakePort(); + const controller = new AuthenticatorFlowControllerV1({ + sessionPort: port, + admission: admissionAdapter(admission()), + capture: completingCaptureAdapter(), + }); + await advanceToCaptureIntro(controller); + controller.act("start_camera"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("biometric_simulated_retry"); + controller.act("retake"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("capture_intro"); + controller.act("start_camera"); + await controller.waitForIdle(); + expect(port.submitKeys).toHaveLength(2); + expect(port.submitKeys[1]).not.toBe(port.submitKeys[0]); + }); + + test("keeps capture idempotency stable across network recovery with the same nonce", async () => { + class RecoveryPort extends FakeSessionPort { + submitKeys: string[] = []; + statusCalls = 0; + + override async prepareCapture(_input: BrowserSessionFieldsV0): Promise { + return session("capture_ready", "capture_ready", "stable-nonce"); + } + + override async submitCapture(input: SubmitSimulatorCaptureV0): Promise { + this.submitKeys.push(input.idempotencyKey); + if (this.submitKeys.length === 1) { + return { + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + operation: "submit_capture", + reasonCode: "network_unavailable", + }; + } + return session("simulated_credential_ready", "simulated_credential_ready", "stable-nonce"); + } + + override async getStatus(_input: BrowserSessionFieldsV0): Promise { + this.statusCalls += 1; + return session("capture_ready", "capture_ready", "stable-nonce"); + } + } + const port = new RecoveryPort(); + const controller = new AuthenticatorFlowControllerV1({ + sessionPort: port, + admission: admissionAdapter(admission()), + capture: completingCaptureAdapter(), + }); + await advanceToCaptureIntro(controller); + controller.act("start_camera"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("session_error"); + expect(controller.snapshot.detailCode).toBe("network_unavailable"); + controller.act("query_status"); + await controller.waitForIdle(); + expect(port.statusCalls).toBe(1); + expect(controller.snapshot.state).toBe("capture_intro"); + controller.act("start_camera"); + await controller.waitForIdle(); + expect(port.submitKeys).toHaveLength(2); + expect(port.submitKeys[1]).toBe(port.submitKeys[0]); + }); + + test("keeps create-session network failure local and terminal", async () => { + class CreateFailurePort extends FakeSessionPort { + override async createSession(_input: CreateSimulatorBrowserSessionV0): Promise { + this.createCalls += 1; + return { + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + operation: "create_session", + reasonCode: "network_unavailable", + }; + } + } + const controller = new AuthenticatorFlowControllerV1({ + sessionPort: new CreateFailurePort(), + admission: admissionAdapter(admission()), + capture: completingCaptureAdapter(), + }); + controller.start(); + await controller.waitForIdle(); + controller.act("continue"); + await controller.waitForIdle(); + controller.act("continue"); + controller.act("start_demo_authenticator"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("flow_failed"); + expect(controller.snapshot.authoritativeSessionState).toBeNull(); + }); +}); diff --git a/apps/authenticator/test/http-client.test.ts b/apps/authenticator/test/http-client.test.ts new file mode 100644 index 0000000..5e17d41 --- /dev/null +++ b/apps/authenticator/test/http-client.test.ts @@ -0,0 +1,204 @@ +import { describe, expect, test } from "bun:test"; +import { + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + SIMULATOR_BROWSER_SESSION_ERROR_V0, + SIMULATOR_BROWSER_SESSION_PORT_V0, + SIMULATOR_BROWSER_SESSION_VIEW_V0, + SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + SIMULATOR_UI_BOOTSTRAP_V0, + SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, + SIMULATOR_UI_QUALITY_POLICY_V0, + type SimulatorBrowserSessionViewV0, +} from "@clean-start/contracts"; +import { HttpSimulatorBrowserSessionClientV0 } from "../src/adapters/http-session"; + +describe("same-origin browser session client", () => { + test("uses the frozen route and never adds a browser-selected scenario", async () => { + const requests: Request[] = []; + const client = new HttpSimulatorBrowserSessionClientV0(async (input, init) => { + const request = new Request(input, init); + requests.push(request.clone()); + return new Response(JSON.stringify({ + kind: SIMULATOR_UI_BOOTSTRAP_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + rpPresentationId: "zoom_demo", + accountPublicMaterialDigestSha256: "0".repeat(64), + returnAction: "server_managed", + authenticator: { + kind: "injected_demo_only", + webauthnPerformed: false, + prfEvaluated: false, + worldIdCreated: false, + }, + qualityPolicy: SIMULATOR_UI_QUALITY_POLICY_V0, + }), { headers: { "content-type": "application/json" } }); + }, "http://127.0.0.1:4173"); + + const result = await client.bootstrap(); + expect(result.kind).toBe(SIMULATOR_UI_BOOTSTRAP_V0); + expect(new URL(requests[0]!.url).pathname).toBe("/api/v0/bootstrap"); + const body = await requests[0]!.json(); + expect(body).toEqual({}); + expect(JSON.stringify(body)).not.toContain("scenario"); + }); + + test("converts malformed responses and network failures to strict stable envelopes", async () => { + const malformed = new HttpSimulatorBrowserSessionClientV0( + async () => new Response(JSON.stringify({ unsafe: "upstream detail" })), + "http://127.0.0.1:4173", + ); + expect(await malformed.bootstrap()).toEqual({ + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + operation: "bootstrap", + reasonCode: "response_invalid", + }); + + const offline = new HttpSimulatorBrowserSessionClientV0(async () => { + throw new Error("private upstream text"); + }, "http://127.0.0.1:4173"); + const result = await offline.createSession({ idempotencyKey: "create" }); + expect(result.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + expect(result.reasonCode).toBe("network_unavailable"); + expect(JSON.stringify(result)).not.toContain("private upstream text"); + } + }); + + test("rejects a valid session-B projection for active session A", async () => { + const response: SimulatorBrowserSessionViewV0 = { + kind: SIMULATOR_BROWSER_SESSION_VIEW_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + sessionId: "session-b", + browserHandle: "handle-b", + nonceBase64Url: "nonce-b", + state: "capture_ready", + code: "capture_ready", + retryable: false, + expiresAt: "2030-01-01T00:00:00.000Z", + capturePolicy: { + ...SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, + expiresAt: "2030-01-01T00:00:00.000Z", + }, + artifactSummary: null, + }; + const client = new HttpSimulatorBrowserSessionClientV0( + async () => new Response(JSON.stringify(response), { + headers: { "content-type": "application/json" }, + }), + "http://127.0.0.1:4173", + () => new Date("2029-01-01T00:00:00.000Z"), + ); + const result = await client.getStatus({ sessionId: "session-a", browserHandle: "handle-a" }); + expect(result).toEqual({ + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + operation: "get_status", + reasonCode: "response_invalid", + }); + }); + + test("rejects demo-ready responses with a changed session or idempotency binding", async () => { + const ready = { + kind: SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + sessionId: "session-b", + idempotencyKey: "demo-b", + completionHandle: "opaque", + claims: { + webauthnPerformed: false, + prfEvaluated: false, + worldIdCreated: false, + }, + expiresAt: "2030-01-01T00:00:00.000Z", + } as const; + const client = new HttpSimulatorBrowserSessionClientV0( + async () => new Response(JSON.stringify(ready), { + headers: { "content-type": "application/json" }, + }), + "http://127.0.0.1:4173", + () => new Date("2029-01-01T00:00:00.000Z"), + ); + const result = await client.beginDemoAuthenticator({ + sessionId: "session-a", + browserHandle: "handle-a", + idempotencyKey: "demo-a", + }); + expect(result.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + expect(result.operation).toBe("begin_demo_authenticator"); + expect(result.reasonCode).toBe("response_invalid"); + } + }); + + test("rejects expired projections and an error envelope for the wrong operation", async () => { + const expired: SimulatorBrowserSessionViewV0 = { + kind: SIMULATOR_BROWSER_SESSION_VIEW_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + sessionId: "session-a", + browserHandle: "handle-a", + nonceBase64Url: "nonce-a", + state: "capture_ready", + code: "capture_ready", + retryable: false, + expiresAt: "2030-01-01T00:00:00.000Z", + capturePolicy: { + ...SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, + expiresAt: "2030-01-01T00:00:00.000Z", + }, + artifactSummary: null, + }; + const expiredClient = new HttpSimulatorBrowserSessionClientV0( + async () => new Response(JSON.stringify(expired), { + headers: { "content-type": "application/json" }, + }), + "http://127.0.0.1:4173", + () => new Date("2031-01-01T00:00:00.000Z"), + ); + const expiredResult = await expiredClient.getStatus({ + sessionId: "session-a", + browserHandle: "handle-a", + }); + expect(expiredResult.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + if (expiredResult.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + expect(expiredResult.reasonCode).toBe("response_invalid"); + } + + const wrongOperationClient = new HttpSimulatorBrowserSessionClientV0( + async () => new Response(JSON.stringify({ + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + operation: "cancel", + reasonCode: "invalid_state", + }), { headers: { "content-type": "application/json" } }), + "http://127.0.0.1:4173", + ); + const wrongOperation = await wrongOperationClient.getStatus({ + sessionId: "session-a", + browserHandle: "handle-a", + }); + expect(wrongOperation).toEqual({ + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + operation: "get_status", + reasonCode: "response_invalid", + }); + }); +}); diff --git a/apps/authenticator/test/http-server.test.ts b/apps/authenticator/test/http-server.test.ts new file mode 100644 index 0000000..87c7014 --- /dev/null +++ b/apps/authenticator/test/http-server.test.ts @@ -0,0 +1,251 @@ +import { describe, expect, test } from "bun:test"; +import { + FRAME_BUNDLE_V0, + FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + SIMULATION_MODE, + SIMULATOR_BROWSER_SESSION_ERROR_V0, + SIMULATOR_UI_BOOTSTRAP_V0, + computeFrameBundleDigestV0, + isSimulatorBrowserDemoAuthenticatorReadyV0, + isSimulatorBrowserSessionViewV0, + isSimulatorUiBootstrapV0, + type FrameBundleV0, + type SimulatorBrowserSessionViewV0, +} from "@clean-start/contracts"; +import { AUTHENTICATOR_APP_CONFIG } from "@clean-start/app-config"; +import { createAuthenticatorHttpHandlerV0 } from "../src/server/http.server"; +import { createAuthenticatorServerRuntimeV0 } from "../src/server/runtime.server"; + +function apiRequest(path: string, body: unknown, headers: Record = {}): Request { + return new Request(`${AUTHENTICATOR_APP_CONFIG.publicOrigin}${path}`, { + method: "POST", + headers: { + "content-type": "application/json", + origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, + ...headers, + }, + body: JSON.stringify(body), + }); +} + +async function postJson( + handle: (request: Request) => Promise, + path: string, + body: unknown, +): Promise { + const response = await handle(apiRequest(path, body)); + expect(response.status).toBe(200); + return response.json(); +} + +async function frameBundle(session: SimulatorBrowserSessionViewV0, accountDigest: string): Promise { + const nonceBytes = new TextEncoder().encode(session.nonceBase64Url); + const nonceHash = await crypto.subtle.digest("SHA-256", nonceBytes); + const nonceDigestSha256 = Array.from( + new Uint8Array(nonceHash), + (byte) => byte.toString(16).padStart(2, "0"), + ).join(""); + const pending: FrameBundleV0 = { + kind: FRAME_BUNDLE_V0, + mode: SIMULATION_MODE, + sessionId: session.sessionId, + policyId: session.capturePolicy.policyId, + accountPublicMaterialDigestSha256: accountDigest, + nonceDigestSha256, + dataMode: "metadata_only", + frames: [{ transportIndex: 0, width: 1, height: 1, encoding: "rgba8", byteLength: 4, frameDigestSha256: "e".repeat(64) }], + totalByteLength: 4, + digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + artifactDigestSha256: "0".repeat(64), + }; + return { ...pending, artifactDigestSha256: await computeFrameBundleDigestV0(pending) }; +} + +describe("authenticator HTTP boundary", () => { + test("returns only the strict bootstrap projection with security headers", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const response = await createAuthenticatorHttpHandlerV0(runtime.browserPort)( + apiRequest("/api/v0/bootstrap", {}), + ); + expect(response.status).toBe(200); + expect(response.headers.get("cache-control")).toBe("no-store"); + expect(response.headers.get("content-security-policy")).toContain("frame-ancestors 'none'"); + const body = await response.json(); + expect(body.kind).toBe(SIMULATOR_UI_BOOTSTRAP_V0); + expect(Object.keys(body)).not.toContain("scenario"); + expect(JSON.stringify(body)).not.toContain("signature"); + }); + + test("rejects cross-origin, wrong media type, extra fields, and oversized bodies before dispatch", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort); + + const wrongOrigin = await handle(apiRequest("/api/v0/bootstrap", {}, { origin: "https://attacker.invalid" })); + expect(wrongOrigin.status).toBe(403); + expect((await wrongOrigin.json()).kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + + const wrongType = await handle(new Request(`${AUTHENTICATOR_APP_CONFIG.publicOrigin}/api/v0/bootstrap`, { + method: "POST", + headers: { origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, "content-type": "text/plain" }, + body: "{}", + })); + expect(wrongType.status).toBe(415); + + const extra = await handle(apiRequest("/api/v0/session/create", { + idempotencyKey: "create", + biometricScenario: "happy_path", + })); + expect(extra.status).toBe(400); + + const oversized = await handle(new Request(`${AUTHENTICATOR_APP_CONFIG.publicOrigin}/api/v0/bootstrap`, { + method: "POST", + headers: { + origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, + "content-type": "application/json", + "content-length": String(AUTHENTICATOR_APP_CONFIG.maxRequestBodyBytes + 1), + }, + body: "{}", + })); + expect(oversized.status).toBe(413); + }); + + test("accepts the exact loopback walkthrough origin without opening CORS", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort); + const response = await handle(new Request( + `${AUTHENTICATOR_APP_CONFIG.localWalkthroughOrigin}/api/v0/bootstrap`, + { + method: "POST", + headers: { + origin: AUTHENTICATOR_APP_CONFIG.localWalkthroughOrigin, + "content-type": "application/json", + }, + body: "{}", + }, + )); + expect(response.status).toBe(200); + expect(response.headers.get("access-control-allow-origin")).toBeNull(); + }); + + test("rejects unknown API routes and traversal with the same security headers", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort); + const unknown = await handle(apiRequest("/api/v0/not-real", {})); + expect(unknown.status).toBe(404); + expect(unknown.headers.get("x-content-type-options")).toBe("nosniff"); + + const traversal = await handle(new Request( + `${AUTHENTICATOR_APP_CONFIG.publicOrigin}/assets/%2e%2e%2fserver/main.ts`, + )); + expect(traversal.status).toBe(404); + expect(traversal.headers.get("cache-control")).toBe("no-store"); + }); + + test("serves the complete safe route matrix without scenarios or simulator bodies", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort); + const bootstrap = await postJson(handle, "/api/v0/bootstrap", {}); + if (!isSimulatorUiBootstrapV0(bootstrap)) { + throw new Error("bootstrap failed"); + } + const accountDigest = bootstrap.accountPublicMaterialDigestSha256; + const created = await postJson(handle, "/api/v0/session/create", { idempotencyKey: "http-create" }); + if (!isSimulatorBrowserSessionViewV0(created)) { + throw new Error("create failed"); + } + const createdView = created; + const demo = await postJson(handle, "/api/v0/session/demo/begin", { + sessionId: createdView.sessionId, + browserHandle: createdView.browserHandle, + idempotencyKey: "http-demo", + }); + if (!isSimulatorBrowserDemoAuthenticatorReadyV0(demo)) { + throw new Error("demo failed"); + } + const completed = await postJson(handle, "/api/v0/session/demo/complete", { + sessionId: createdView.sessionId, + browserHandle: createdView.browserHandle, + idempotencyKey: demo.idempotencyKey, + completionHandle: demo.completionHandle, + }) as SimulatorBrowserSessionViewV0; + const prepared = await postJson(handle, "/api/v0/session/capture/prepare", { + sessionId: completed.sessionId, + browserHandle: completed.browserHandle, + }) as SimulatorBrowserSessionViewV0; + const submitted = await postJson(handle, "/api/v0/session/capture/submit", { + sessionId: prepared.sessionId, + browserHandle: prepared.browserHandle, + idempotencyKey: "http-capture", + nonceBase64Url: prepared.nonceBase64Url, + frameBundle: await frameBundle(prepared, accountDigest), + }); + expect(JSON.stringify(submitted)).not.toContain("signatureBase64Url"); + expect(JSON.stringify(submitted)).not.toContain("scenario"); + expect(JSON.stringify(submitted)).not.toContain("receiptId"); + const status = await postJson(handle, "/api/v0/session/status", { + sessionId: prepared.sessionId, + browserHandle: prepared.browserHandle, + }); + expect((status as { readonly state: string }).state).toBe("simulated_credential_ready"); + const returned = await postJson(handle, "/api/v0/session/return", { + sessionId: prepared.sessionId, + browserHandle: prepared.browserHandle, + }); + expect(returned).toEqual({ + kind: "simulator_browser_return_accepted_v0", + version: "simulator_browser_session_port_v0", + mode: "simulation", + environment: "staging", + action: "server_managed", + }); + }); + + test("return route rejects a newly created live session", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort); + const created = await postJson(handle, "/api/v0/session/create", { + idempotencyKey: "http-live-return", + }); + if (!isSimulatorBrowserSessionViewV0(created)) throw new Error("create failed"); + const response = await handle(apiRequest("/api/v0/session/return", { + sessionId: created.sessionId, + browserHandle: created.browserHandle, + })); + expect(response.status).toBe(409); + const body = await response.json(); + expect(body.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + expect(body.operation).toBe("return_to_rp"); + expect(body.reasonCode).toBe("invalid_state"); + }); + + test("serves the walkthrough entry and returned paths from the same app shell", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort, { + staticRoot: new URL("../dist", import.meta.url).pathname, + }); + for (const path of ["/demo", "/demo/returned"]) { + const response = await handle(new Request(`${AUTHENTICATOR_APP_CONFIG.publicOrigin}${path}`)); + expect(response.status).toBe(200); + expect(response.headers.get("content-type")).toContain("text/html"); + } + }); + + test("serves only the allowlisted self-hosted MediaPipe runtime files", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort); + const loader = await handle(new Request( + `${AUTHENTICATOR_APP_CONFIG.publicOrigin}/mediapipe/vision_wasm_internal.js`, + )); + expect(loader.status).toBe(200); + expect(loader.headers.get("content-type")).toContain("javascript"); + const wasm = await handle(new Request( + `${AUTHENTICATOR_APP_CONFIG.publicOrigin}/mediapipe/vision_wasm_internal.wasm`, + )); + expect(wasm.status).toBe(200); + expect(wasm.headers.get("content-type")).toBe("application/wasm"); + const unknown = await handle(new Request( + `${AUTHENTICATOR_APP_CONFIG.publicOrigin}/mediapipe/../package.json`, + )); + expect(unknown.status).toBe(404); + }); +}); diff --git a/apps/authenticator/test/live-face-guidance.test.ts b/apps/authenticator/test/live-face-guidance.test.ts new file mode 100644 index 0000000..1307070 --- /dev/null +++ b/apps/authenticator/test/live-face-guidance.test.ts @@ -0,0 +1,123 @@ +import { afterAll, beforeAll, describe, expect, test } from "bun:test"; +import { GlobalRegistrator } from "@happy-dom/global-registrator"; +import { + LiveFaceGuidanceControllerV1, + classifyLiveFaceGuidanceV1, + type NormalizedFacePointV1, +} from "../src/walkthrough/live-face-guidance"; +import { + CAPTURE_HOLD_DOT_COUNT_V1, + captureHoldProgressV1, +} from "../src/walkthrough/hold-steady-progress"; + +beforeAll(() => GlobalRegistrator.register()); +afterAll(() => GlobalRegistrator.unregister()); + +function face(options: { + readonly centerX?: number; + readonly centerY?: number; + readonly width?: number; + readonly height?: number; + readonly noseOffsetRatio?: number; +} = {}): NormalizedFacePointV1[] { + const centerX = options.centerX ?? 0.5; + const centerY = options.centerY ?? 0.5; + const width = options.width ?? 0.5; + const height = options.height ?? 0.64; + const points = Array.from({ length: 478 }, () => ({ x: centerX, y: centerY })); + points[10] = { x: centerX, y: centerY - height / 2 }; + points[152] = { x: centerX, y: centerY + height / 2 }; + points[234] = { x: centerX - width / 2, y: centerY }; + points[454] = { x: centerX + width / 2, y: centerY }; + points[1] = { + x: centerX + (options.noseOffsetRatio ?? 0) * width, + y: centerY, + }; + return points; +} + +describe("ephemeral live face guidance", () => { + test("fills exactly 64 progress dots during one continuous hold", () => { + expect(CAPTURE_HOLD_DOT_COUNT_V1).toBe(64); + expect(captureHoldProgressV1(0)).toBe(0); + expect(captureHoldProgressV1(37.4)).toBe(0); + expect(captureHoldProgressV1(37.5)).toBe(1 / 64); + expect(captureHoldProgressV1(1_200)).toBe(0.5); + expect(captureHoldProgressV1(2_400)).toBe(1); + expect(captureHoldProgressV1(20_000)).toBe(1); + expect(captureHoldProgressV1(Number.NaN)).toBe(0); + }); + + test("maps face count, distance, centering, pose, lighting, and ready states", () => { + expect(classifyLiveFaceGuidanceV1([], 120).code).toBe("face_not_found"); + expect(classifyLiveFaceGuidanceV1([face(), face()], 120).code).toBe("multiple_faces"); + expect(classifyLiveFaceGuidanceV1([face({ width: 0.25, height: 0.4 })], 120).code) + .toBe("move_closer"); + expect(classifyLiveFaceGuidanceV1([face({ width: 0.8, height: 0.8 })], 120).code) + .toBe("move_farther"); + expect(classifyLiveFaceGuidanceV1([face({ centerX: 0.7 })], 120).code) + .toBe("move_right"); + expect(classifyLiveFaceGuidanceV1([face({ centerX: 0.3 })], 120).code) + .toBe("move_left"); + expect(classifyLiveFaceGuidanceV1([face({ centerY: 0.25 })], 120).code) + .toBe("move_down"); + expect(classifyLiveFaceGuidanceV1([face({ centerY: 0.75 })], 120).code) + .toBe("move_up"); + expect(classifyLiveFaceGuidanceV1([face({ noseOffsetRatio: -0.1 })], 120).code) + .toBe("turn_left"); + expect(classifyLiveFaceGuidanceV1([face({ noseOffsetRatio: 0.1 })], 120).code) + .toBe("turn_right"); + expect(classifyLiveFaceGuidanceV1([face()], 20).code).toBe("improve_lighting"); + expect(classifyLiveFaceGuidanceV1([face()], 240).code).toBe("reduce_lighting"); + expect(classifyLiveFaceGuidanceV1([face()], 120)).toEqual({ + code: "hold_steady", + text: "Great position, hold steady", + }); + }); + + test("emits only a stable guidance code and closes the model on stop", async () => { + const scheduled: FrameRequestCallback[] = []; + const results: string[] = []; + let closed = 0; + let timestamp = 0; + const video = { + readyState: 2, + currentTime: 1, + videoWidth: 640, + videoHeight: 480, + } as HTMLVideoElement; + const controller = new LiveFaceGuidanceControllerV1( + () => video, + (result) => results.push(result.code), + { + createLandmarker: async () => ({ + detectForVideo: () => ({ faceLandmarks: [face()] }), + close: () => { closed += 1; }, + }), + requestFrame: (callback) => { + scheduled.push(callback); + return scheduled.length; + }, + cancelFrame: () => undefined, + now: () => ++timestamp * 200, + readMeanLuma: () => 120, + minimumIntervalMs: 0, + }, + ); + + controller.start(); + await Promise.resolve(); + await Promise.resolve(); + expect(results).toEqual(["loading"]); + scheduled.shift()?.(timestamp); + video.currentTime = 2; + scheduled.shift()?.(timestamp); + expect(results).toEqual(["loading", "hold_steady"]); + video.currentTime = 3; + scheduled.shift()?.(timestamp); + expect(results).toEqual(["loading", "hold_steady"]); + controller.stop(); + expect(closed).toBe(1); + expect(Object.keys({ code: results.at(-1) })).toEqual(["code"]); + }); +}); diff --git a/apps/authenticator/test/privacy.test.ts b/apps/authenticator/test/privacy.test.ts new file mode 100644 index 0000000..e0aafdd --- /dev/null +++ b/apps/authenticator/test/privacy.test.ts @@ -0,0 +1,99 @@ +import { describe, expect, test } from "bun:test"; + +async function sourceFiles(): Promise { + const files: string[] = []; + const glob = new Bun.Glob("**/*.{ts,tsx,css,html}"); + for await (const path of glob.scan({ + cwd: new URL("../", import.meta.url).pathname, + absolute: true, + })) files.push(path); + return files; +} + +describe("application privacy and isolation sentinels", () => { + test("client modules import no server, gateway, simulator, or signing implementation", async () => { + const files = (await sourceFiles()).filter((path) => + path.includes("/src/") && !path.includes("/src/server/"), + ); + const forbidden = [ + "@clean-start/session-gateway", + "@clean-start/simulated-biometric-verifier", + "@clean-start/simulated-staging-issuer", + "../server/", + "/server/", + ]; + for (const path of files) { + const text = await Bun.file(path).text(); + for (const value of forbidden) { + if (value === "localStorage" && path.endsWith("/src/wallet/session.ts")) continue; + expect(text).not.toContain(value); + } + } + }); + + test("client modules contain no persistence, beacon, media serialization, or logging APIs", async () => { + const files = (await sourceFiles()).filter((path) => + path.includes("/src/") && !path.includes("/src/server/"), + ); + const forbidden = [ + "localStorage", + "sessionStorage", + "indexedDB", + "sendBeacon", + "serviceWorker", + "MediaRecorder", + "toDataURL", + "convertToBlob", + "createObjectURL", + "FileReader", + "FormData", + "console.", + ]; + for (const path of files) { + const text = await Bun.file(path).text(); + for (const value of forbidden) { + if (value === "localStorage" && path.endsWith("/src/wallet/session.ts")) continue; + expect(text).not.toContain(value); + } + } + }); + + test("does not ship the Figma face photo or prohibited positive assurance copy", async () => { + // The /demo walkthrough intentionally mirrors the production Figma copy + // (owner decision, 2026-09-11) and is guarded separately in + // production-presentation.test.tsx. The gated route and the frozen contract + // copy stay covered here. + const files = (await sourceFiles()).filter((path) => + (path.includes("/src/") || path.endsWith("/index.html")) && + !path.endsWith("/src/walkthrough/production-copy.ts"), + ); + const prohibited = [ + "Proof of selfie", + "prove your liveness", + "you’re a real, unique person", + "Verifying your selfie", + "This might take few seconds", + "verified human", + "spoof detected", + ]; + for (const path of files) { + const text = await Bun.file(path).text(); + for (const value of prohibited) expect(text).not.toContain(value); + } + const assets = [...new Bun.Glob("public/assets/figma/*").scanSync({ + cwd: new URL("../", import.meta.url).pathname, + })]; + expect(assets.some((path) => /face|selfie-photo|image-1/i.test(path))).toBe(false); + }); + + test("keeps safe-area, dynamic viewport, narrow-width, and reduced-motion rules", async () => { + const css = await Bun.file(new URL("../src/styles/app.css", import.meta.url)).text(); + expect(css).toContain("100svh"); + expect(css).toContain("100dvh"); + expect(css).toContain("env(safe-area-inset-top)"); + expect(css).toContain("prefers-reduced-motion"); + expect(css).not.toContain("min-width: 320px"); + expect(css).toContain(".app-main--has-top-close .staging-banner"); + expect(css).toContain("max-width: calc(100% - 72px)"); + }); +}); diff --git a/apps/authenticator/test/production-presentation.test.tsx b/apps/authenticator/test/production-presentation.test.tsx new file mode 100644 index 0000000..4cc6ebb --- /dev/null +++ b/apps/authenticator/test/production-presentation.test.tsx @@ -0,0 +1,194 @@ +import { afterAll, afterEach, beforeAll, describe, expect, test } from "bun:test"; +import { GlobalRegistrator } from "@happy-dom/global-registrator"; +import { cleanup, render } from "@testing-library/react"; +import axe from "axe-core"; +import { + AUTHENTICATOR_UI_COPY_V1, + AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, + AUTHENTICATOR_UI_DETAIL_CODES_V1, + AUTHENTICATOR_UI_DETAIL_COPY_V1, + AUTHENTICATOR_UI_STATES_V1, + ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1, + ENROLLMENT_SESSION_STATES_V2, + makeAuthenticatorUiSnapshotV1, + type AuthenticatorUiDetailCodeV1, + type AuthenticatorUiStateIdV1, + type EnrollmentSessionStateV2, +} from "@clean-start/contracts"; +import { FlowScreenV1 } from "../src/components/FlowScreen"; +import { + WALKTHROUGH_ACTION_LABELS_V1, + WALKTHROUGH_COPY_V1, + WALKTHROUGH_DETAIL_COPY_V1, + WALKTHROUGH_DISCLOSURE_V1, + WALKTHROUGH_PASSKEY_READY_COPY_V1, + WALKTHROUGH_RETURNED_HERO_V1, +} from "../src/walkthrough/production-copy"; + +const STAGING_WORDS = /template|not figma|injected|workflow artifact/i; + +beforeAll(() => GlobalRegistrator.register()); +afterEach(() => cleanup()); +afterAll(() => GlobalRegistrator.unregister()); + +function detailFor(state: AuthenticatorUiStateIdV1): AuthenticatorUiDetailCodeV1 | null { + if (state === "capture_guidance_adjust") return "move_closer"; + if (state === "capture_guidance_retake") return "image_blurry"; + if (state === "capture_guidance_unavailable") return "framing_guidance_unavailable"; + if (state === "capture_error") return "permission_denied"; + if (state === "session_error") return "network_timeout"; + if (state === "return_callback_failed") return "navigation_failed"; + if (state === "flow_failed") return "safe_internal_error"; + return null; +} + +function authoritativeFor(state: AuthenticatorUiStateIdV1): EnrollmentSessionStateV2 | null { + for (const serverState of ENROLLMENT_SESSION_STATES_V2) { + if (ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1[serverState].includes(state)) return serverState; + } + return null; +} + +function renderWalkthrough(state: AuthenticatorUiStateIdV1) { + return render( undefined} + bannerText={null} + copyOverride={WALKTHROUGH_COPY_V1[state]} + detailCopyOverrides={WALKTHROUGH_DETAIL_COPY_V1} + actionLabelOverrides={WALKTHROUGH_ACTION_LABELS_V1} + disclosure={WALKTHROUGH_DISCLOSURE_V1} + heroOverride={state === "returned" ? WALKTHROUGH_RETURNED_HERO_V1 : undefined} + showTemplateNotice={false} + />); +} + +describe("walkthrough production presentation", () => { + test("provides complete preview copy for every frozen state and detail code", () => { + for (const state of AUTHENTICATOR_UI_STATES_V1) { + const merged = { ...AUTHENTICATOR_UI_COPY_V1[state], ...WALKTHROUGH_COPY_V1[state] }; + const text = `${merged.heading} ${merged.body} ${merged.primaryAction ?? ""}`; + expect(text, state).not.toMatch(STAGING_WORDS); + expect(merged.heading.length, state).toBeGreaterThan(0); + } + for (const variant of Object.values(WALKTHROUGH_PASSKEY_READY_COPY_V1)) { + expect(`${variant.heading} ${variant.body}`).not.toMatch(STAGING_WORDS); + } + for (const code of AUTHENTICATOR_UI_DETAIL_CODES_V1) { + const detail = WALKTHROUGH_DETAIL_COPY_V1[code] ?? AUTHENTICATOR_UI_DETAIL_COPY_V1[code]; + expect(detail, code).not.toMatch(STAGING_WORDS); + } + expect(WALKTHROUGH_ACTION_LABELS_V1.return_to_rp).toBe("Return to Zoom"); + }); + + test("renders every frozen state without internal placeholder wording and with one heading", () => { + for (const state of AUTHENTICATOR_UI_STATES_V1) { + const view = renderWalkthrough(state); + expect(view.container.textContent, state).not.toMatch(STAGING_WORDS); + expect(view.container.querySelectorAll("main")).toHaveLength(1); + expect(view.container.querySelectorAll("h1")).toHaveLength(1); + expect(view.container.querySelector(".template-notice")).toBeNull(); + expect(view.container.querySelector(".staging-banner")).toBeNull(); + view.unmount(); + } + }); + + test("keeps the Figma assets while identifying simulated success", () => { + const pending = renderWalkthrough("biometric_simulation_pending"); + expect(pending.getByRole("heading", { name: "Verifying your selfie" })).toBeDefined(); + expect(pending.getByText("This might take few seconds")).toBeDefined(); + expect(pending.container.querySelector(".hero-icon--progress")?.getAttribute("src")) + .toBe("/assets/figma/simulation-progress.svg"); + pending.unmount(); + + for (const state of ["biometric_simulated_pass", "issuance_simulation_pending"] as const) { + const view = renderWalkthrough(state); + expect(view.getByRole("main").dataset.visualSource).toBe("figma_5132_135071"); + expect(view.getByRole("heading", { name: "Verifying your selfie" })).toBeDefined(); + expect(view.container.querySelector(".hero-icon--progress")?.getAttribute("src")) + .toBe("/assets/figma/verification-complete.svg"); + expect(view.container.querySelector('.top-close[data-action="cancel"]')).not.toBeNull(); + view.unmount(); + } + + const success = renderWalkthrough("simulated_credential_ready"); + expect(success.getByRole("main").dataset.visualSource).toBe("figma_5132_135104"); + expect(success.getByRole("heading", { name: "Preview complete" })).toBeDefined(); + expect(success.getByText("Simulated result — no Selfie Check credential was issued.")).toBeDefined(); + expect(success.container.querySelector(".hero-icon--progress")?.getAttribute("src")) + .toBe("/assets/figma/success-emblem.svg"); + expect(success.getByRole("button", { name: "Return to Zoom" }).dataset.action).toBe("return_to_rp"); + expect(success.queryByRole("alert")).toBeNull(); + success.unmount(); + + const redirecting = renderWalkthrough("return_redirecting"); + expect(redirecting.getByRole("heading", { name: "You’re all set" })).toBeDefined(); + expect(redirecting.getByText("Returning to Zoom")).toBeDefined(); + redirecting.unmount(); + + const returned = renderWalkthrough("returned"); + expect(returned.getByRole("heading", { name: "Returned to Zoom" })).toBeDefined(); + expect(returned.container.querySelector(".partner-icon img")?.getAttribute("alt")).toBe("Zoom"); + expect(returned.container.querySelector(".hero-icon")).toBeNull(); + returned.unmount(); + }); + + test("opens with the Figma request disclosure for Zoom", () => { + const view = renderWalkthrough("request_review"); + expect(view.getByRole("heading", { name: "Request from Zoom" })).toBeDefined(); + expect(view.getByRole("heading", { name: "App will receive" })).toBeDefined(); + expect(view.container.querySelector(".partner-icon img")?.getAttribute("src")) + .toBe("/assets/figma/zoom-app-icon.png"); + const rows = [...view.container.querySelectorAll(".disclosure-row")].map((row) => ({ + text: row.querySelector("span")?.textContent, + marker: row.querySelectorAll("img")[1]?.getAttribute("alt"), + })); + expect(rows).toEqual([ + { text: "Proof of selfie", marker: "Included" }, + { text: "Your selfie", marker: "Not included" }, + { text: "Your passkey", marker: "Not included" }, + ]); + expect(view.getByRole("button", { name: "Continue" })).toBeDefined(); + view.unmount(); + }); + + test("keeps the gated route on the frozen staging presentation", () => { + const view = render( undefined} + />); + expect(view.getByRole("heading", { name: "Staging demo complete" })).toBeDefined(); + expect(view.container.textContent).toContain("Staging demo"); + expect(view.container.textContent).toContain("not a Selfie Check credential"); + expect(view.getByRole("button", { name: "Return to app" })).toBeDefined(); + view.unmount(); + }); + + test("has no automated accessibility violations on the walkthrough ending", async () => { + for (const state of [ + "request_review", + "biometric_simulation_pending", + "biometric_simulated_pass", + "simulated_credential_ready", + "returned", + ] as const) { + const view = renderWalkthrough(state); + const result = await axe.run(view.container, { + rules: { "color-contrast": { enabled: false } }, + }); + expect(result.violations, state).toEqual([]); + view.unmount(); + } + }); +}); diff --git a/apps/authenticator/test/render-registry.test.ts b/apps/authenticator/test/render-registry.test.ts new file mode 100644 index 0000000..f9f180e --- /dev/null +++ b/apps/authenticator/test/render-registry.test.ts @@ -0,0 +1,69 @@ +import { describe, expect, test } from "bun:test"; +import { + AUTHENTICATOR_UI_COPY_V1, + AUTHENTICATOR_UI_STATES_V1, +} from "@clean-start/contracts"; +import { + FIGMA_SCREEN_MATRIX_V1, + SCREEN_RENDER_REGISTRY_V1, +} from "../src/flow/render-registry"; +import { FIGMA_ASSET_PROVENANCE_V1 } from "../src/assets/provenance"; + +describe("authenticator render registry", () => { + test("has one renderer and frozen copy for every Main-owned UI state", () => { + expect(Object.keys(SCREEN_RENDER_REGISTRY_V1).sort()).toEqual( + [...AUTHENTICATOR_UI_STATES_V1].sort(), + ); + for (const state of AUTHENTICATOR_UI_STATES_V1) { + expect(SCREEN_RENDER_REGISTRY_V1[state]).toBeDefined(); + expect(AUTHENTICATOR_UI_COPY_V1[state].heading.length).toBeGreaterThan(0); + } + }); + + test("records exact design context for all fifteen nodes and the one unrendered variant", () => { + expect(FIGMA_SCREEN_MATRIX_V1.verified).toEqual([ + "5132:134352", + "5132:134394", + "5132:134441", + "5132:134488", + "5132:134535", + "5132:134582", + "5132:134643", + "5132:134692", + "5132:134743", + "5132:134841", + "5132:134939", + "5132:135038", + "5132:135071", + "5132:135104", + "5132:135141", + ]); + expect(FIGMA_SCREEN_MATRIX_V1.notFigmaVerified).toEqual([]); + expect(FIGMA_SCREEN_MATRIX_V1.verifiedNotRendered).toEqual(["5132:135141"]); + }); + + test("records exact source URLs and checksums for every committed Figma asset", () => { + expect(FIGMA_ASSET_PROVENANCE_V1).toHaveLength(17); + for (const asset of FIGMA_ASSET_PROVENANCE_V1) { + expect(asset.sourceUrl).toMatch(/^https:\/\/www\.figma\.com\/api\/mcp\/asset\//); + expect(asset.sha256).toMatch(/^[0-9a-f]{64}$/); + expect(asset.localPath).toMatch(/^\/assets\/figma\//); + } + expect(FIGMA_ASSET_PROVENANCE_V1.some((asset) => asset.nodeId === "5132:135038")).toBe(true); + expect(FIGMA_ASSET_PROVENANCE_V1.some((asset) => asset.nodeId === "5132:135071")).toBe(true); + expect(FIGMA_ASSET_PROVENANCE_V1.some((asset) => asset.nodeId === "5132:135104")).toBe(true); + }); + + test("matches every provenance checksum to the committed exact bytes", async () => { + const appRoot = new URL("../", import.meta.url); + for (const asset of FIGMA_ASSET_PROVENANCE_V1) { + const bytes = await Bun.file(new URL(`public${asset.localPath}`, appRoot)).arrayBuffer(); + const digest = await crypto.subtle.digest("SHA-256", bytes); + const actual = Array.from( + new Uint8Array(digest), + (byte) => byte.toString(16).padStart(2, "0"), + ).join(""); + expect(actual).toBe(asset.sha256); + } + }); +}); diff --git a/apps/authenticator/test/screens.test.tsx b/apps/authenticator/test/screens.test.tsx new file mode 100644 index 0000000..2d48991 --- /dev/null +++ b/apps/authenticator/test/screens.test.tsx @@ -0,0 +1,249 @@ +import { afterAll, beforeAll, describe, expect, test } from "bun:test"; +import { GlobalRegistrator } from "@happy-dom/global-registrator"; +import { cleanup, fireEvent, render } from "@testing-library/react"; +import axe from "axe-core"; +import { + AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, + AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, + AUTHENTICATOR_UI_STATES_V1, + ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1, + ENROLLMENT_SESSION_STATES_V2, + makeAuthenticatorUiSnapshotV1, + type AuthenticatorUiDetailCodeV1, + type AuthenticatorUiStateIdV1, + type EnrollmentSessionStateV2, +} from "@clean-start/contracts"; +import { FlowScreenV1 } from "../src/components/FlowScreen"; +import { + CAPTURE_OVAL_CLIP_PATH_V1, + CAPTURE_OVAL_DOT_COUNT_V1, + CAPTURE_OVAL_VIDEO_INSET_PX_V1, +} from "../src/assets/capture-oval-geometry"; + +beforeAll(() => GlobalRegistrator.register()); +afterAll(() => { + cleanup(); + GlobalRegistrator.unregister(); +}); + +function detailFor(state: AuthenticatorUiStateIdV1): AuthenticatorUiDetailCodeV1 | null { + if (state === "capture_guidance_adjust") return "move_closer"; + if (state === "capture_guidance_retake") return "image_blurry"; + if (state === "capture_guidance_unavailable") return "framing_guidance_unavailable"; + if (state === "capture_error") return "permission_denied"; + if (state === "session_error") return "network_timeout"; + if (state === "return_callback_failed") return "navigation_failed"; + if (state === "flow_failed") return "safe_internal_error"; + return null; +} + +function authoritativeFor(state: AuthenticatorUiStateIdV1): EnrollmentSessionStateV2 | null { + for (const serverState of ENROLLMENT_SESSION_STATES_V2) { + if (ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1[serverState].includes(state)) return serverState; + } + return null; +} + +function snapshot(state: AuthenticatorUiStateIdV1) { + return makeAuthenticatorUiSnapshotV1({ + state, + detailCode: detailFor(state), + authoritativeSessionState: authoritativeFor(state), + rpPresentationId: state === "request_checking" ? null : "zoom_demo", + visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[state], + }); +} + +describe("complete UI render registry", () => { + test("renders one main and one h1 for every frozen state", () => { + for (const state of AUTHENTICATOR_UI_STATES_V1) { + const view = render( undefined} />); + expect(view.container.querySelectorAll("main")).toHaveLength(1); + expect(view.container.querySelectorAll("h1")).toHaveLength(1); + expect(view.container.textContent).toContain("Staging demo"); + expect(view.container.querySelector("main")?.dataset.state).toBe(state); + expect(view.container.querySelectorAll("button").length).toBeGreaterThanOrEqual( + AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state].length, + ); + view.unmount(); + } + }); + + test("renders the safe RP disclosure and no native browser chrome", () => { + const view = render( undefined} />); + expect(view.getByRole("heading", { name: "Camera-flow demo for Zoom" })).toBeDefined(); + expect(view.getByText("Staging workflow result")).toBeDefined(); + expect(view.getByText("Camera images stay on this device")).toBeDefined(); + expect(document.body.textContent).not.toContain("Proof of selfie"); + expect(document.body.textContent).not.toContain("9:41"); + expect(document.body.textContent).not.toContain("world.id"); + }); + + test("labels quota-blocked outcome families as not Figma verified", () => { + const view = render( undefined} />); + expect(view.getByRole("main").dataset.visualSource).toBe("not_figma_verified"); + expect(view.getByText("Template view · Not Figma verified")).toBeDefined(); + }); + + test("uses the exact pending asset with security-safe copy and no face fixture", () => { + const pending = render( undefined} />); + expect(pending.getByRole("heading", { name: "Running staging scenario" })).toBeDefined(); + expect(pending.container.querySelector(".hero-icon--progress")?.src) + .toEndWith("/assets/figma/simulation-progress.svg"); + expect(pending.container.textContent).not.toContain("Verifying your selfie"); + pending.unmount(); + + const capture = render( undefined} />); + const imageSources = [...capture.container.querySelectorAll("img")] + .map((image) => image.getAttribute("src")); + expect(imageSources.some((source) => source?.endsWith(".png"))).toBe(false); + const mediaHost = capture.container.querySelector(".media-host--visible"); + expect(mediaHost?.getAttribute("aria-hidden")).toBeNull(); + expect(mediaHost?.querySelector(".media-clip video")).not.toBeNull(); + expect(mediaHost?.querySelector(".capture-ring")).not.toBeNull(); + expect(mediaHost?.querySelector(".media-clip")?.style.clipPath) + .toBe(CAPTURE_OVAL_CLIP_PATH_V1); + expect(CAPTURE_OVAL_CLIP_PATH_V1.match(/\d+\.\d+% \d+\.\d+%/g)) + .toHaveLength(CAPTURE_OVAL_DOT_COUNT_V1); + expect(CAPTURE_OVAL_VIDEO_INSET_PX_V1).toBe(8); + expect(CAPTURE_OVAL_VIDEO_INSET_PX_V1).toBeGreaterThan(2.94866); + }); + + test("renders allowlisted live guidance inside the capture status pill", () => { + const view = render( undefined} + liveCaptureGuidance={{ code: "move_closer", text: "Move closer" }} + />); + const status = view.getByRole("status"); + expect(status.getAttribute("data-live-guidance")).toBe("move_closer"); + expect(view.getByRole("heading", { name: "Move closer" })).toBeDefined(); + view.rerender( undefined} + liveCaptureGuidance={{ code: "move_closer", text: "Move closer" }} + />); + expect(view.getByRole("heading", { name: "Capture complete" })).toBeDefined(); + }); + + test("reveals the exact blue Figma ring one dot at a time and shows completion", () => { + const view = render( undefined} + liveCaptureGuidance={{ + code: "hold_steady", + text: "Great position, hold steady", + }} + captureProgress={0.5} + hiddenActions={["collect_frame_metadata"]} + />); + const progress = view.container.querySelector(".capture-visual"); + const blueRing = view.container.querySelector(".capture-ring--progress"); + expect(progress?.dataset.captureProgressDots).toBe("32"); + expect(blueRing?.getAttribute("src")).toBe("/assets/figma/capture-ring-complete.svg"); + expect(blueRing?.style.getPropertyValue("--capture-progress-angle")).toBe("180deg"); + expect(view.queryByRole("button", { name: "Collect frame metadata" })).toBeNull(); + + view.rerender( undefined} + liveCaptureGuidance={{ + code: "hold_steady", + text: "Great position, hold steady", + }} + captureProgress={1} + hiddenActions={["collect_frame_metadata"]} + />); + expect(view.getByRole("heading", { name: "You’re all set" })).toBeDefined(); + expect(view.container.querySelector(".capture-ring--progress-complete")).not.toBeNull(); + expect(view.container.querySelector(".capture-message img")?.getAttribute("src")) + .toBe("/assets/figma/capture-check.svg"); + }); + + test("exposes every frozen action and sends its exact action id", () => { + const actions: string[] = []; + const view = render( actions.push(action)} + />); + fireEvent.click(view.getByRole("button", { name: "Retry" })); + fireEvent.click(view.getByRole("button", { name: "Check status" })); + fireEvent.click(view.getAllByRole("button", { name: "Cancel" }).at(-1)!); + expect(actions).toEqual(["retry_same_operation", "query_status", "cancel"]); + }); + + test("moves focus to the new heading and keeps visible cancel controls semantic", () => { + const view = render( undefined} />); + expect(document.activeElement).toBe(view.getByRole("heading", { name: "Try the authenticator step" })); + expect(view.getByRole("button", { name: "Cancel" }).querySelector("img")?.getAttribute("src")) + .toBe("/assets/figma/close.svg"); + view.rerender( undefined} />); + expect(document.activeElement).toBe(view.getByRole("heading", { name: "Try the camera step" })); + }); + + test("renders Cancel exactly once and reserves the top close for verified layouts", () => { + for (const state of AUTHENTICATOR_UI_STATES_V1) { + if (!AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state].includes("cancel")) continue; + const view = render( undefined} />); + expect(view.container.querySelectorAll('[data-action="cancel"]')).toHaveLength(1); + view.unmount(); + } + + const verified = render( undefined} />); + expect(verified.container.querySelector('.top-close[data-action="cancel"]')).not.toBeNull(); + expect(verified.container.querySelector('.actions [data-action="cancel"]')).toBeNull(); + verified.unmount(); + + const generic = render( undefined} />); + expect(generic.container.querySelector(".top-close")).toBeNull(); + expect(generic.container.querySelector('.actions [data-action="cancel"]')).not.toBeNull(); + }); + + test("announces every admission-block terminal as an assertive alert", () => { + for (const state of [ + "admission_update_required", + "admission_insecure", + "admission_framed", + "admission_private", + "admission_pwa", + "admission_unknown", + ] as const) { + const view = render( undefined} />); + const alert = view.getByRole("alert"); + expect(alert.getAttribute("aria-live")).toBe("assertive"); + expect(alert.textContent).toContain(view.getByRole("heading").textContent); + view.unmount(); + } + }); + + test("does not announce success, cancellation, closure, or returned terminals as alerts", () => { + for (const state of [ + "simulated_credential_ready", + "flow_cancelled", + "flow_closed", + "returned", + ] as const) { + const view = render( undefined} />); + expect(view.queryByRole("alert")).toBeNull(); + view.unmount(); + } + }); + + test("has no automated accessibility violations in each visual family", async () => { + for (const state of [ + "request_review", + "demo_authenticator_intro", + "capture_intro", + "capture_preview", + "biometric_simulation_pending", + "biometric_simulated_reject", + ] as const) { + const view = render( undefined} />); + const result = await axe.run(view.container, { + rules: { "color-contrast": { enabled: false } }, + }); + expect(result.violations).toEqual([]); + view.unmount(); + } + }); +}); diff --git a/apps/authenticator/test/server-composition.test.ts b/apps/authenticator/test/server-composition.test.ts new file mode 100644 index 0000000..3086ed1 --- /dev/null +++ b/apps/authenticator/test/server-composition.test.ts @@ -0,0 +1,252 @@ +import { describe, expect, test } from "bun:test"; +import { + FRAME_BUNDLE_V0, + FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + SIMULATION_MODE, + SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, + SIMULATOR_BROWSER_SESSION_ERROR_V0, + SIMULATOR_BROWSER_SESSION_VIEW_V0, + SIMULATOR_UI_BOOTSTRAP_V0, + computeFrameBundleDigestV0, + type BiometricSimulationScenarioV0, + type FrameBundleV0, + type IssuanceSimulationScenarioV0, + type SimulatorBrowserSessionViewV0, +} from "@clean-start/contracts"; +import { createAuthenticatorServerRuntimeV0 } from "../src/server/runtime.server"; + +async function sha256Text(value: string): Promise { + const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value)); + return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join(""); +} + +async function metadataBundle( + session: SimulatorBrowserSessionViewV0, + accountDigest: string, +): Promise { + const pending: FrameBundleV0 = { + kind: FRAME_BUNDLE_V0, + mode: SIMULATION_MODE, + sessionId: session.sessionId, + policyId: session.capturePolicy.policyId, + accountPublicMaterialDigestSha256: accountDigest, + nonceDigestSha256: await sha256Text(session.nonceBase64Url), + dataMode: "metadata_only", + frames: [{ + transportIndex: 0, + width: 1, + height: 1, + encoding: "rgba8", + byteLength: 4, + frameDigestSha256: "a".repeat(64), + }], + totalByteLength: 4, + digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + artifactDigestSha256: "0".repeat(64), + }; + return { ...pending, artifactDigestSha256: await computeFrameBundleDigestV0(pending) }; +} + +async function runScenario( + biometricScenario: BiometricSimulationScenarioV0, + issuanceScenario: IssuanceSimulationScenarioV0, +) { + const runtime = await createAuthenticatorServerRuntimeV0({ + testConfiguration: { + kind: "authenticator_server_test_configuration_v0", + biometricScenario, + issuanceScenario, + }, + }); + const bootstrap = await runtime.browserPort.bootstrap(); + expect(bootstrap.kind).toBe(SIMULATOR_UI_BOOTSTRAP_V0); + if (bootstrap.kind !== SIMULATOR_UI_BOOTSTRAP_V0) throw new Error("bootstrap failed"); + + const created = await runtime.browserPort.createSession({ idempotencyKey: `create-${biometricScenario}-${issuanceScenario}` }); + expect(created.kind).toBe(SIMULATOR_BROWSER_SESSION_VIEW_V0); + if (created.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create failed"); + + const demo = await runtime.browserPort.beginDemoAuthenticator({ + sessionId: created.sessionId, + browserHandle: created.browserHandle, + idempotencyKey: `demo-${biometricScenario}-${issuanceScenario}`, + }); + expect(demo.kind).toBe(SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0); + if (demo.kind !== SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0) throw new Error("demo failed"); + + const completed = await runtime.browserPort.completeDemoAuthenticator({ + sessionId: created.sessionId, + browserHandle: created.browserHandle, + idempotencyKey: demo.idempotencyKey, + completionHandle: demo.completionHandle, + }); + if (completed.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("complete failed"); + const captureReady = await runtime.browserPort.prepareCapture({ + sessionId: completed.sessionId, + browserHandle: completed.browserHandle, + }); + if (captureReady.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("prepare failed"); + const result = await runtime.browserPort.submitCapture({ + sessionId: captureReady.sessionId, + browserHandle: captureReady.browserHandle, + idempotencyKey: `capture-${biometricScenario}-${issuanceScenario}`, + nonceBase64Url: captureReady.nonceBase64Url, + frameBundle: await metadataBundle(captureReady, bootstrap.accountPublicMaterialDigestSha256), + }); + return { runtime, result }; +} + +describe("server-only real W06/W10 composition", () => { + test("uses five distinct Ed25519 public keys plus a separate HMAC handle key", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + expect(runtime.keyReadiness.ed25519PublicFingerprints).toHaveLength(5); + expect(new Set(runtime.keyReadiness.ed25519PublicFingerprints).size).toBe(5); + expect(runtime.keyReadiness.handleKeyAlgorithm).toBe("HMAC"); + }); + + test.each([ + ["happy_path", "issue_success", "simulated_credential_ready"], + ["happy_path", "issue_reject", "simulated_issuance_reject"], + ["happy_path", "issue_unavailable", "simulated_issuance_unavailable"], + ["spoof_reject", "issue_success", "simulated_reject"], + ["spoof_reject", "issue_reject", "simulated_reject"], + ["spoof_reject", "issue_unavailable", "simulated_reject"], + ["capture_retry", "issue_success", "simulated_retry"], + ["capture_retry", "issue_reject", "simulated_retry"], + ["capture_retry", "issue_unavailable", "simulated_retry"], + ["dependency_unavailable", "issue_success", "simulated_unavailable"], + ["dependency_unavailable", "issue_reject", "simulated_unavailable"], + ["dependency_unavailable", "issue_unavailable", "simulated_unavailable"], + ] as const)("maps %s / %s to %s without exposing an artifact body", async (biometric, issuance, expectedState) => { + const { result } = await runScenario(biometric, issuance); + expect(result.kind).toBe(SIMULATOR_BROWSER_SESSION_VIEW_V0); + if (result.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("submit failed"); + expect(result.state).toBe(expectedState); + expect(Object.keys(result)).not.toContain("credential"); + expect(Object.keys(result)).not.toContain("receipt"); + }); + + test("replays one opaque demo completion result exactly until expiry", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const created = await runtime.browserPort.createSession({ idempotencyKey: "create-replay" }); + if (created.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create failed"); + const input = { + sessionId: created.sessionId, + browserHandle: created.browserHandle, + idempotencyKey: "demo-replay", + }; + const first = await runtime.browserPort.beginDemoAuthenticator(input); + const second = await runtime.browserPort.beginDemoAuthenticator(input); + expect(first).toEqual(second); + expect(first.kind).toBe(SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0); + if (first.kind === SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0) { + expect(first.completionHandle).not.toContain(created.sessionId); + expect(first.claims).toEqual({ + webauthnPerformed: false, + prfEvaluated: false, + worldIdCreated: false, + }); + } + }); + + test("rejects a completion handle replayed with a changed issuing idempotency key", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const created = await runtime.browserPort.createSession({ idempotencyKey: "create-binding" }); + if (created.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create failed"); + const ready = await runtime.browserPort.beginDemoAuthenticator({ + sessionId: created.sessionId, + browserHandle: created.browserHandle, + idempotencyKey: "demo-original", + }); + if (ready.kind !== SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0) throw new Error("demo failed"); + const changed = await runtime.browserPort.completeDemoAuthenticator({ + sessionId: created.sessionId, + browserHandle: created.browserHandle, + idempotencyKey: "demo-changed", + completionHandle: ready.completionHandle, + }); + expect(changed.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + if (changed.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + expect(changed.reasonCode).toBe("binding_mismatch"); + } + const tampered = await runtime.browserPort.completeDemoAuthenticator({ + sessionId: created.sessionId, + browserHandle: created.browserHandle, + idempotencyKey: ready.idempotencyKey, + completionHandle: `${ready.completionHandle.slice(0, -1)}x`, + }); + expect(tampered.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + if (tampered.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + expect(tampered.reasonCode).toBe("binding_mismatch"); + } + const status = await runtime.browserPort.getStatus({ + sessionId: created.sessionId, + browserHandle: created.browserHandle, + }); + expect(status.kind).toBe(SIMULATOR_BROWSER_SESSION_VIEW_V0); + if (status.kind === SIMULATOR_BROWSER_SESSION_VIEW_V0) expect(status.state).toBe("created"); + }); + + test("rejects return for a fresh live session but accepts explicit terminal outcomes", async () => { + const freshRuntime = await createAuthenticatorServerRuntimeV0(); + const fresh = await freshRuntime.browserPort.createSession({ idempotencyKey: "fresh-return" }); + if (fresh.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create failed"); + const early = await freshRuntime.browserPort.returnToRp({ + sessionId: fresh.sessionId, + browserHandle: fresh.browserHandle, + }); + expect(early.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + if (early.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + expect(early.reasonCode).toBe("invalid_state"); + } + + const { runtime, result } = await runScenario("spoof_reject", "issue_success"); + if (result.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("scenario failed"); + const accepted = await runtime.browserPort.returnToRp({ + sessionId: result.sessionId, + browserHandle: result.browserHandle, + }); + expect(accepted.kind).toBe(SIMULATOR_BROWSER_RETURN_ACCEPTED_V0); + + const cancelledRuntime = await createAuthenticatorServerRuntimeV0(); + const cancellable = await cancelledRuntime.browserPort.createSession({ + idempotencyKey: "cancelled-return", + }); + if (cancellable.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create failed"); + const cancelled = await cancelledRuntime.browserPort.cancel({ + sessionId: cancellable.sessionId, + browserHandle: cancellable.browserHandle, + }); + if (cancelled.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("cancel failed"); + const cancelledReturn = await cancelledRuntime.browserPort.returnToRp({ + sessionId: cancelled.sessionId, + browserHandle: cancelled.browserHandle, + }); + expect(cancelledReturn.kind).toBe(SIMULATOR_BROWSER_RETURN_ACCEPTED_V0); + }); + + test("accepts return after a server-observed terminal demo error", async () => { + const runtime = await createAuthenticatorServerRuntimeV0({ + testConfiguration: { + kind: "authenticator_server_test_configuration_v0", + biometricScenario: "happy_path", + issuanceScenario: "issue_success", + demoAuthenticatorOutcome: "unavailable", + }, + }); + const created = await runtime.browserPort.createSession({ idempotencyKey: "demo-exit-create" }); + if (created.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create failed"); + const unavailable = await runtime.browserPort.beginDemoAuthenticator({ + sessionId: created.sessionId, + browserHandle: created.browserHandle, + idempotencyKey: "demo-exit", + }); + expect(unavailable.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + const accepted = await runtime.browserPort.returnToRp({ + sessionId: created.sessionId, + browserHandle: created.browserHandle, + }); + expect(accepted.kind).toBe(SIMULATOR_BROWSER_RETURN_ACCEPTED_V0); + }); +}); diff --git a/apps/authenticator/test/staging-compatibility.test.ts b/apps/authenticator/test/staging-compatibility.test.ts new file mode 100644 index 0000000..eec63a8 --- /dev/null +++ b/apps/authenticator/test/staging-compatibility.test.ts @@ -0,0 +1,72 @@ +import { describe, expect, test } from "bun:test"; +import type { BrowserAdmissionDecisionV1 } from "@clean-start/browser-admission"; +import { + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + SIMULATOR_BROWSER_SESSION_PORT_V0, + type SimulatorBrowserDemoAuthenticatorReadyV0, +} from "@clean-start/contracts"; +import { makeExplicitStagingCaptureEntryV0 } from "../src/adapters/staging-compatibility"; + +const admission: BrowserAdmissionDecisionV1 = { + version: "browser_admission_v1", + outcome: "eligible_candidate", + reason: "candidate_only_ceremony_required", + mayStartSensitiveFlow: true, + browser: "safari", + iosVersionBand: "ios_18_plus", + context: "normal_tab", + engine: "unknown", + region: "unknown", + provider: "unknown", + capabilities: { + webAuthnApi: "available", + platformUv: "available", + clientCapabilitiesApi: "unknown", + conditionalMediation: "unknown", + mediaApi: "available", + visibility: "visible", + }, +}; + +const ready: SimulatorBrowserDemoAuthenticatorReadyV0 = { + kind: SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + sessionId: "session", + idempotencyKey: "demo-idempotency", + completionHandle: "opaque-completion", + claims: { + webauthnPerformed: false, + prfEvaluated: false, + worldIdCreated: false, + }, + expiresAt: "2030-01-01T00:00:00.000Z", +}; + +describe("explicit staging compatibility", () => { + test("isolates the legacy W04 prfReady translation behind negative demo claims", () => { + expect(makeExplicitStagingCaptureEntryV0({ admission, ready, userActivated: true })).toEqual({ + userActivated: true, + secureTopLevelContextApproved: true, + prfReady: true, + iosMajor: 18, + browser: "safari", + }); + expect(ready.claims).toEqual({ + webauthnPerformed: false, + prfEvaluated: false, + worldIdCreated: false, + }); + }); + + test("rejects every noneligible admission decision", () => { + expect(() => makeExplicitStagingCaptureEntryV0({ + admission: { ...admission, outcome: "unsupported", mayStartSensitiveFlow: false }, + ready, + userActivated: true, + })).toThrow("staging_capture_gate_not_satisfied"); + }); +}); diff --git a/apps/authenticator/test/static-demo.test.ts b/apps/authenticator/test/static-demo.test.ts new file mode 100644 index 0000000..bf4305e --- /dev/null +++ b/apps/authenticator/test/static-demo.test.ts @@ -0,0 +1,58 @@ +import { afterAll, beforeAll, describe, expect, test } from "bun:test"; +import { GlobalRegistrator } from "@happy-dom/global-registrator"; +import { + AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, + makeAuthenticatorUiSnapshotV1, +} from "@clean-start/contracts"; +import { createAuthenticatorServerRuntimeV0 } from "../src/server/runtime.server"; + +beforeAll(() => GlobalRegistrator.register()); +afterAll(() => GlobalRegistrator.unregister()); + +describe("static demo entry", () => { + test("drives the in-page simulator through the passkey step with no HTTP at all", async () => { + const { makeAuthenticatorControllerFactoryV1 } = await import("../src/App"); + const runtime = await createAuthenticatorServerRuntimeV0(); + const originalFetch = globalThis.fetch; + let fetchCalls = 0; + globalThis.fetch = (() => { + fetchCalls += 1; + throw new TypeError("static demo must not use HTTP"); + }) as unknown as typeof fetch; + try { + const controller = makeAuthenticatorControllerFactoryV1(runtime.browserPort)( + { getVideo: () => null, getCanvas: () => null }, + makeAuthenticatorUiSnapshotV1({ + state: "request_checking", + visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1.request_checking, + }), + ); + controller.start(); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("request_review"); + controller.act("continue"); + await controller.waitForIdle(); + expect(["admission_safari_candidate", "admission_chrome_candidate"]) + .toContain(controller.snapshot.state); + controller.act("continue"); + expect(controller.snapshot.state).toBe("demo_authenticator_intro"); + controller.act("start_demo_authenticator"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("demo_authenticator_ready"); + expect(controller.snapshot.authoritativeSessionState).toBe("passkey_complete"); + controller.dispose(); + } finally { + globalThis.fetch = originalFetch; + } + expect(fetchCalls).toBe(0); + }); + + test("keeps the in-page simulator out of the served app entry", async () => { + const served = await Bun.file(new URL("../src/main.tsx", import.meta.url)).text(); + expect(served).not.toContain("runtime.server"); + expect(served).not.toContain("static-demo"); + const staticEntry = await Bun.file(new URL("../static-demo/main.tsx", import.meta.url)).text(); + expect(staticEntry).toContain("createAuthenticatorServerRuntimeV0"); + expect(staticEntry).toContain("makeAuthenticatorControllerFactoryV1"); + }); +}); diff --git a/apps/authenticator/test/walkthrough.test.ts b/apps/authenticator/test/walkthrough.test.ts new file mode 100644 index 0000000..ba2dc87 --- /dev/null +++ b/apps/authenticator/test/walkthrough.test.ts @@ -0,0 +1,219 @@ +import { describe, expect, test } from "bun:test"; +import { + SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, + SIMULATOR_UI_QUALITY_POLICY_V0, + validateFrameBundleV0, + type FrameBundleV0, +} from "@clean-start/contracts"; +import type { + BrowserCaptureAdapterV1, + BrowserCaptureCallbacksV1, + BrowserCaptureStartV1, +} from "../src/adapters/browser-capture"; +import { createLocalDemoPasskeyV1 } from "../src/walkthrough/live-passkey"; +import { LIVE_GUIDANCE_MODEL_V1 } from "../src/walkthrough/model-provenance"; +import { + LocalWalkthroughCaptureAdapterV1, + makeLocalWalkthroughAdmissionV1, +} from "../src/walkthrough/walkthrough-adapters"; + +const expiresAt = "2030-01-01T00:00:00.000Z"; + +function randomBytes(length: number): Uint8Array { + return Uint8Array.from({ length }, (_value, index) => index + 1); +} + +describe("local walkthrough live boundaries", () => { + test("pins the self-hosted face guidance model to its official checksum", async () => { + const model = await Bun.file(new URL( + `../public${LIVE_GUIDANCE_MODEL_V1.modelPath}`, + import.meta.url, + )).arrayBuffer(); + const digest = await crypto.subtle.digest("SHA-256", model); + const actual = Array.from( + new Uint8Array(digest), + (byte) => byte.toString(16).padStart(2, "0"), + ).join(""); + expect(actual).toBe(LIVE_GUIDANCE_MODEL_V1.modelSha256); + expect(LIVE_GUIDANCE_MODEL_V1.securityDecision).toBe(false); + expect(LIVE_GUIDANCE_MODEL_V1.sendsMeasurementsToServer).toBe(false); + }); + + test("creates a real browser credential request but retains only status and PRF capability", async () => { + let observed: CredentialCreationOptions | undefined; + const result = await createLocalDemoPasskeyV1({ + secureContext: true, + hostname: "localhost", + publicKeyCredentialAvailable: true, + randomBytes, + nowEpochMs: () => 1_234, + createCredential: async (options) => { + observed = options; + return { + type: "public-key", + getClientExtensionResults: () => ({ prf: { enabled: true } }), + } as unknown as Credential; + }, + }); + + expect(result).toEqual({ status: "created", prfCapability: "available" }); + expect(Object.keys(result).sort()).toEqual(["prfCapability", "status"]); + expect(observed?.publicKey?.rp).toEqual({ + id: "localhost", + name: "World ID", + }); + expect(observed?.publicKey?.authenticatorSelection).toMatchObject({ + residentKey: "required", + userVerification: "required", + }); + expect(observed?.publicKey?.extensions).toEqual({ prf: {} }); + expect(JSON.stringify(result)).not.toMatch(/credential|private|secret|provider/i); + }); + + test("classifies unavailable and cancelled passkey prompts without leaking errors", async () => { + const unavailable = await createLocalDemoPasskeyV1({ + secureContext: false, + hostname: "localhost", + publicKeyCredentialAvailable: false, + randomBytes, + nowEpochMs: () => 1, + }); + expect(unavailable).toEqual({ status: "unsupported", prfCapability: "unknown" }); + + const cancelled = await createLocalDemoPasskeyV1({ + secureContext: true, + hostname: "localhost", + publicKeyCredentialAvailable: true, + randomBytes, + nowEpochMs: () => 2, + createCredential: () => Promise.reject({ + name: "NotAllowedError", + message: "must-not-be-retained", + }), + }); + expect(cancelled).toEqual({ status: "cancelled", prfCapability: "unknown" }); + expect(JSON.stringify(cancelled)).not.toContain("must-not-be-retained"); + }); + + test("marks localhost admission as an explicit walkthrough bypass", () => { + const decision = makeLocalWalkthroughAdmissionV1("chrome"); + expect(decision.outcome).toBe("eligible_candidate"); + expect(decision.browser).toBe("chrome"); + expect(decision.iosVersionBand).toBe("ios_18_plus"); + expect(decision.engine).toBe("unknown"); + expect(decision.provider).toBe("unknown"); + }); + + test("falls back to a valid constant metadata descriptor after camera denial", async () => { + const statuses: string[] = []; + const states: string[] = []; + let artifact: FrameBundleV0 | undefined; + let completed = 0; + const deniedLiveAdapter: BrowserCaptureAdapterV1 = { + start(_input: BrowserCaptureStartV1, callbacks: BrowserCaptureCallbacksV1) { + void callbacks.onFailure("permission_denied"); + }, + requestMetadataCollection() {}, + stop() {}, + clearTransientMedia() {}, + unmount() {}, + }; + const adapter = new LocalWalkthroughCaptureAdapterV1({ + getVideo: () => null, + getCanvas: () => null, + onStatus: (status) => statuses.push(status), + liveAdapter: deniedLiveAdapter, + }); + const input: BrowserCaptureStartV1 = { + entry: { + userActivated: true, + secureTopLevelContextApproved: true, + prfReady: true, + iosMajor: 18, + browser: "chrome", + }, + policy: { ...SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, expiresAt }, + qualityPolicy: SIMULATOR_UI_QUALITY_POLICY_V0, + sessionId: "walkthrough-session", + accountPublicMaterialDigestSha256: "a".repeat(64), + nonceDigestSha256: "b".repeat(64), + retakesUsed: 0, + }; + adapter.start(input, { + onCaptureState: (state) => { states.push(state); }, + onQuality: (quality) => { expect(quality.action).toBe("ready"); }, + onArtifactReady: (value) => { artifact = value; }, + onFailure: (code) => { throw new Error(`unexpected_${code}`); }, + onComplete: () => { completed += 1; }, + }); + await new Promise((resolve) => setTimeout(resolve, 0)); + expect(statuses).toEqual(["requesting", "synthetic_fallback"]); + expect(states).toEqual(["acquiring", "awaiting_first_frame", "preview"]); + + adapter.requestMetadataCollection(); + for (let attempt = 0; artifact === undefined && attempt < 20; attempt += 1) { + await new Promise((resolve) => setTimeout(resolve, 0)); + } + expect(artifact?.dataMode).toBe("metadata_only"); + expect(artifact?.frames).toHaveLength(1); + expect(Object.keys(artifact?.frames[0] ?? {})).not.toContain("pixels"); + expect(await validateFrameBundleV0(artifact, input.policy)).toEqual([]); + expect(states.slice(-2)).toEqual(["artifact_ready", "cleaning_up"]); + expect(statuses.at(-1)).toBe("synthetic_complete"); + expect(completed).toBe(1); + expect(JSON.stringify(artifact)).not.toMatch(/pixels|data:image|blob:/i); + }); + + test("starts live guidance at preview and stops it with capture cleanup", async () => { + let starts = 0; + let stops = 0; + const liveAdapter: BrowserCaptureAdapterV1 = { + start(_input, callbacks) { + void (async () => { + await callbacks.onCaptureState("preview"); + await callbacks.onComplete(); + })(); + }, + requestMetadataCollection() {}, + stop() {}, + clearTransientMedia() {}, + unmount() {}, + }; + const adapter = new LocalWalkthroughCaptureAdapterV1({ + getVideo: () => null, + getCanvas: () => null, + onStatus: () => undefined, + onGuidance: () => undefined, + liveAdapter, + guidanceController: { + start: () => { starts += 1; }, + stop: () => { stops += 1; }, + }, + }); + adapter.start({ + entry: { + userActivated: true, + secureTopLevelContextApproved: true, + prfReady: true, + iosMajor: 18, + browser: "chrome", + }, + policy: { ...SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, expiresAt }, + qualityPolicy: SIMULATOR_UI_QUALITY_POLICY_V0, + sessionId: "guidance-session", + accountPublicMaterialDigestSha256: "a".repeat(64), + nonceDigestSha256: "b".repeat(64), + retakesUsed: 0, + }, { + onCaptureState: () => undefined, + onQuality: () => undefined, + onArtifactReady: () => undefined, + onFailure: () => undefined, + onComplete: () => undefined, + }); + await Promise.resolve(); + await Promise.resolve(); + expect(starts).toBe(1); + expect(stops).toBeGreaterThanOrEqual(1); + }); +}); diff --git a/apps/authenticator/test/wallet-session.test.ts b/apps/authenticator/test/wallet-session.test.ts new file mode 100644 index 0000000..9e6acd2 --- /dev/null +++ b/apps/authenticator/test/wallet-session.test.ts @@ -0,0 +1,25 @@ +import { describe, expect, test } from "bun:test"; +import { deriveWalletKeys, parseWalletProfile } from "../src/wallet/session"; + +describe("passkey wallet key boundary", () => { + test("rejects malformed metadata instead of silently creating a replacement wallet", () => { + for (const value of ["null", "{}", '{"version":2,"credentialId":"ab"}', '{"version":1,"credentialId":"a"}', '{"version":1,"credentialId":"zz"}']) { + expect(() => parseWalletProfile(value)).toThrow(); + } + expect(parseWalletProfile('{"version":1,"credentialId":"abcd","seed":"discard"}')) + .toEqual({ version: 1, credentialId: "abcd" }); + }); + + test("reopening derives stable, distinct keys; another passkey produces different keys", async () => { + const prf = new Uint8Array(32).fill(7); + const first = await deriveWalletKeys(prf); + const reopened = await deriveWalletKeys(prf); + const other = await deriveWalletKeys(new Uint8Array(32).fill(8)); + expect(first).toEqual(reopened); + expect(first.seed).toHaveLength(32); + expect(first.databaseKey).toHaveLength(32); + expect(first.seed).not.toEqual(first.databaseKey); + expect(first.databaseKey).not.toEqual(other.databaseKey); + await expect(deriveWalletKeys(new Uint8Array(31))).rejects.toThrow(); + }); +}); diff --git a/bun.lock b/bun.lock index 6a1bab1..e81617b 100644 --- a/bun.lock +++ b/bun.lock @@ -1,386 +1,270 @@ { - "lockfileVersion": 1, - "configVersion": 0, + "lockfileVersion": 2, + "configVersion": 1, "workspaces": { "": { - "name": "safeguard", + "name": "@world-id/web-authenticator-clean-start", "dependencies": { - "@radix-ui/react-dropdown-menu": "^2.1.16", - "@types/qrcode": "^1.5.5", - "clsx": "^2.1.1", - "motion": "^12.23.22", - "next": "16.1.1", - "qrcode": "^1.5.4", - "react": "19.2.3", - "react-dom": "19.2.3", - "tailwind-merge": "^3.3.1", + "@mediapipe/tasks-vision": "1.0.1", + "@worldcoin/walletkit-web": "0.27.1", + "react": "19.2.8", + "react-dom": "19.2.8", }, "devDependencies": { - "@eslint/eslintrc": "^3", - "@tailwindcss/postcss": "^4", - "@types/node": "^20", - "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", - "eslint": "^9", - "eslint-config-next": "16.1.1", - "prettier": "^3.6.2", - "prettier-plugin-sort-imports-desc": "^1.0.0", - "tailwindcss": "^4", - "typescript": "^5", + "@eslint/js": "9.39.4", + "@happy-dom/global-registrator": "20.13.2", + "@playwright/test": "1.62.1", + "@testing-library/dom": "10.4.1", + "@testing-library/react": "16.3.3", + "@testing-library/user-event": "14.6.7", + "@types/bun": "1.3.11", + "@types/node": "20.19.25", + "@types/react": "19.2.18", + "@types/react-dom": "19.2.5", + "@vitejs/plugin-react": "6.1.1", + "axe-core": "4.13.0", + "concurrently": "9.2.1", + "eslint": "9.39.4", + "eslint-plugin-jsx-a11y": "6.10.2", + "eslint-plugin-react-hooks": "7.1.1", + "globals": "16.4.0", + "typescript": "5.9.3", + "typescript-eslint": "8.68.0", + "vite": "8.2.2", }, }, + "packages/biometric-verification-port": { + "name": "@world-id/web-authenticator-biometric-verification-port", + "version": "0.0.0", + }, + "packages/browser-admission": { + "name": "@world-id/web-authenticator-browser-admission", + "version": "0.0.0", + }, + "packages/client-quality": { + "name": "@world-id/web-authenticator-client-quality", + "version": "0.0.0", + }, + "packages/contracts": { + "name": "@world-id/web-authenticator-contracts", + "version": "0.0.0", + }, + "packages/staging-issuance-port": { + "name": "@world-id/web-authenticator-staging-issuance-port", + "version": "0.0.0", + }, + "services/session-gateway": { + "name": "@world-id/web-authenticator-session-gateway", + "version": "0.0.0", + }, + "services/simulated-biometric-verifier": { + "name": "@world-id/web-authenticator-simulated-biometric-verifier", + "version": "0.0.0", + }, + "services/simulated-staging-issuer": { + "name": "@world-id/web-authenticator-simulated-staging-issuer", + "version": "0.0.0", + }, }, "packages": { - "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], - - "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - - "@babel/compat-data": ["@babel/compat-data@7.28.5", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="], - - "@babel/core": ["@babel/core@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw=="], - - "@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], + "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], - "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="], + "@babel/compat-data": ["@babel/compat-data@7.29.7", "", {}, "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg=="], - "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], + "@babel/core": ["@babel/core@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-compilation-targets": "^7.29.7", "@babel/helper-module-transforms": "^7.29.7", "@babel/helpers": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA=="], - "@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], + "@babel/generator": ["@babel/generator@7.29.8", "", { "dependencies": { "@babel/parser": "^7.29.8", "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg=="], - "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="], + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.29.7", "", { "dependencies": { "@babel/compat-data": "^7.29.7", "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g=="], - "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], + "@babel/helper-globals": ["@babel/helper-globals@7.29.7", "", {}, "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA=="], - "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.29.7", "", { "dependencies": { "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g=="], - "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.29.7", "", { "dependencies": { "@babel/helper-module-imports": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7", "@babel/traverse": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg=="], - "@babel/helpers": ["@babel/helpers@7.28.4", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="], + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - "@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], - "@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.29.7", "", {}, "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw=="], - "@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], + "@babel/helpers": ["@babel/helpers@7.29.7", "", { "dependencies": { "@babel/template": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg=="], - "@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + "@babel/parser": ["@babel/parser@7.29.8", "", { "dependencies": { "@babel/types": "^7.29.8" }, "bin": "./bin/babel-parser.js" }, "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA=="], - "@emnapi/core": ["@emnapi/core@1.5.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg=="], + "@babel/runtime": ["@babel/runtime@7.29.7", "", {}, "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw=="], - "@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="], + "@babel/template": ["@babel/template@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg=="], - "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g=="], + "@babel/traverse": ["@babel/traverse@7.29.8", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", "@babel/parser": "^7.29.8", "@babel/template": "^7.29.7", "@babel/types": "^7.29.8", "debug": "^4.3.1" } }, "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg=="], - "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="], + "@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "@eslint/config-array": ["@eslint/config-array@0.21.0", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ=="], + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.10.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg=="], - "@eslint/config-helpers": ["@eslint/config-helpers@0.3.1", "", {}, "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA=="], + "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], - "@eslint/core": ["@eslint/core@0.15.2", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg=="], + "@eslint/config-array": ["@eslint/config-array@0.21.2", "", { "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.5" } }, "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw=="], - "@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="], + "@eslint/config-helpers": ["@eslint/config-helpers@0.4.2", "", { "dependencies": { "@eslint/core": "^0.17.0" } }, "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw=="], - "@eslint/js": ["@eslint/js@9.36.0", "", {}, "sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw=="], + "@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="], - "@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="], + "@eslint/eslintrc": ["@eslint/eslintrc@3.3.7", "", { "dependencies": { "ajv": "^6.14.0", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.3.2", "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" } }, "sha512-F42g89Qd5oAWtp0k0nnSrjziAKza7w8SVT4mStc18LZMaRb4J1HQAHLCalEtDCxrTuksx7NU9qsmeLwpOfPqWw=="], - "@eslint/plugin-kit": ["@eslint/plugin-kit@0.3.5", "", { "dependencies": { "@eslint/core": "^0.15.2", "levn": "^0.4.1" } }, "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w=="], + "@eslint/js": ["@eslint/js@9.39.4", "", {}, "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw=="], - "@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="], + "@eslint/object-schema": ["@eslint/object-schema@2.1.7", "", {}, "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA=="], - "@floating-ui/dom": ["@floating-ui/dom@1.7.4", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="], + "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.1", "", { "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" } }, "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA=="], - "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.6", "", { "dependencies": { "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw=="], + "@happy-dom/global-registrator": ["@happy-dom/global-registrator@20.13.2", "", { "dependencies": { "@types/node": ">=20.0.0", "happy-dom": "^20.13.2" } }, "sha512-pGO7WhgHVLi7mi7zCLyJ+FkTad2aPTcjUXhRbgA4T5n1vLRJ/9uw3EsLieScNSX6HOfPF947bOP7N42l+KrWjg=="], - "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], + "@humanfs/core": ["@humanfs/core@0.19.2", "", { "dependencies": { "@humanfs/types": "^0.15.0" } }, "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA=="], - "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], + "@humanfs/node": ["@humanfs/node@0.16.8", "", { "dependencies": { "@humanfs/core": "^0.19.2", "@humanfs/types": "^0.15.0", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ=="], - "@humanfs/node": ["@humanfs/node@0.16.7", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="], + "@humanfs/types": ["@humanfs/types@0.15.0", "", {}, "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q=="], "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], - "@img/colour": ["@img/colour@1.0.0", "", {}, "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw=="], - - "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.3" }, "os": "darwin", "cpu": "arm64" }, "sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA=="], - - "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.3" }, "os": "darwin", "cpu": "x64" }, "sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg=="], - - "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw=="], - - "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA=="], - - "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.3", "", { "os": "linux", "cpu": "arm" }, "sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA=="], - - "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ=="], - - "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg=="], - - "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w=="], - - "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.3", "", { "os": "linux", "cpu": "x64" }, "sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg=="], - - "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw=="], - - "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.3", "", { "os": "linux", "cpu": "x64" }, "sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g=="], - - "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.3" }, "os": "linux", "cpu": "arm" }, "sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA=="], - - "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.3" }, "os": "linux", "cpu": "arm64" }, "sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ=="], - - "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.3" }, "os": "linux", "cpu": "ppc64" }, "sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ=="], - - "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.3" }, "os": "linux", "cpu": "s390x" }, "sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw=="], - - "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.3" }, "os": "linux", "cpu": "x64" }, "sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A=="], - - "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.3" }, "os": "linux", "cpu": "arm64" }, "sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA=="], - - "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.3" }, "os": "linux", "cpu": "x64" }, "sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg=="], - - "@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.4", "", { "dependencies": { "@emnapi/runtime": "^1.5.0" }, "cpu": "none" }, "sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA=="], - - "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA=="], - - "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw=="], - - "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.4", "", { "os": "win32", "cpu": "x64" }, "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig=="], - - "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], - "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.6.0", "", {}, "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw=="], "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], - "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" } }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="], - - "@next/env": ["@next/env@16.1.1", "", {}, "sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA=="], - - "@next/eslint-plugin-next": ["@next/eslint-plugin-next@16.1.1", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-Ovb/6TuLKbE1UiPcg0p39Ke3puyTCIKN9hGbNItmpQsp+WX3qrjO3WaMVSi6JHr9X1NrmthqIguVHodMJbh/dw=="], - - "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.1.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JS3m42ifsVSJjSTzh27nW+Igfha3NdBOFScr9C80hHGrWx55pTrVL23RJbqir7k7/15SKlrLHhh/MQzqBBYrQA=="], - - "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.1.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-hbyKtrDGUkgkyQi1m1IyD3q4I/3m9ngr+V93z4oKHrPcmxwNL5iMWORvLSGAf2YujL+6HxgVvZuCYZfLfb4bGw=="], - - "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.1.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-/fvHet+EYckFvRLQ0jPHJCUI5/B56+2DpI1xDSvi80r/3Ez+Eaa2Yq4tJcRTaB1kqj/HrYKn8Yplm9bNoMJpwQ=="], - - "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.1.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg=="], - - "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.1.1", "", { "os": "linux", "cpu": "x64" }, "sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ=="], - - "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.1.1", "", { "os": "linux", "cpu": "x64" }, "sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA=="], - - "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.1.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA=="], - - "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.1.1", "", { "os": "win32", "cpu": "x64" }, "sha512-Ncwbw2WJ57Al5OX0k4chM68DKhEPlrXBaSXDCi2kPi5f4d8b3ejr3RRJGfKBLrn2YJL5ezNS7w2TZLHSti8CMw=="], - - "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], - - "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + "@mediapipe/tasks-vision": ["@mediapipe/tasks-vision@1.0.1", "", {}, "sha512-rvRE2FmAZ6ZxKSw7wq+e+jQDpN3t1B/tD2mJz9SmAzb1msoDkd4dMoE4wAh8Z30Um0PQwLiHr9QtomhmXk3aUQ=="], - "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + "@oxc-project/types": ["@oxc-project/types@0.148.0", "", {}, "sha512-Nm4s/jB+4FpFsPhWGEC4h7rzksesmtnMXomo6rCMcg/b8zLQuOziRgkCS1fxDCXOlJB/6Q8oABOZ/OP6RIPj9A=="], - "@nolyfill/is-core-module": ["@nolyfill/is-core-module@1.0.39", "", {}, "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA=="], + "@playwright/test": ["@playwright/test@1.62.1", "", { "dependencies": { "playwright": "1.62.1" }, "bin": { "playwright": "cli.js" } }, "sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ=="], - "@radix-ui/primitive": ["@radix-ui/primitive@1.1.3", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="], + "@rolldown/binding-android-arm-eabi": ["@rolldown/binding-android-arm-eabi@1.2.7", "", { "os": "android", "cpu": "arm" }, "sha512-EypzgnYCwyVY4NDHKzGmNJT5b+XaQEBniHxsMdeIQLB/tcCzZnhqrzHpZFbX9iaxx+5RiB8caATBtfvZP7zVxQ=="], - "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w=="], + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.2.7", "", { "os": "android", "cpu": "arm64" }, "sha512-l17HE9EweWaqJZhuUuNBN/FzM62xw+DECVnJyvMsxn8vJFAGLy5QfLDoYAcronkAN8VxKZHezDpulHDPx95vFw=="], - "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw=="], + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.2.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-8ED8ELFvHXc6OCETIn4gXObPiaR6bckM/ipXtbzlPVDRMBfEGjCKgO90F9YtfdpDatVx/ZQw7aZ1vUMf/+T3Mw=="], - "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="], + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.2.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-/WPripjtiAIZ2tWY7ddijORT0Ujg87wxWW/qcoFVCKAWVDPhtY0xr7Dj0M3GyNGz60jGwTElhro/mkF9dT7dDQ=="], - "@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.2.7", "", { "os": "freebsd", "cpu": "x64" }, "sha512-14DI4NcqpvbICxSnGLx3PmtDaWqRP/KGSGb6C+JLLVPeZRl6dKdHba3pGsqT3vpdTqhEYIPG0MMQ8c0xYqoJxA=="], - "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw=="], + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.2.7", "", { "os": "linux", "cpu": "arm" }, "sha512-bxrWIRvHWQvbJwi+VIie/kDJmQxcNE6xxWwZdqF/ExVAigtHkv54WTLQPb+QsZdnFy18fg7JPfWGL0RH6vwIlQ=="], - "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg=="], + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.2.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-toOY2BChBZyuxU7OYX6Tn389di4IzAqPTycVcci0O7FSfBqzRB3RZn+K5Is6ANf4tmgRd/K1yZTsNTXbkXsnLg=="], - "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-menu": "2.1.16", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw=="], + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.2.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-lAIXTH/aiLRLxsTgQvfhjo4K1ydWIp00+V0voOr9beb/9ZmkUFrSIb03dXNFRgMNvkE6oGsF10ioQ6UsI+vS5Q=="], - "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw=="], + "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.2.7", "", { "os": "linux", "cpu": "ppc64" }, "sha512-kdnwS28Pkenp/mZMRwjXXXwxQ7pIsm+bF919LUK93BOyhcLsrVKdP2p9fxpiPNPAbNuch8ypQt0pm2P2LYCAGg=="], - "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw=="], + "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.2.7", "", { "os": "linux", "cpu": "s390x" }, "sha512-516OdsyLdr5E65paF3yBF55t8mfm9+gmtCsK3xI7XKXIT7EfRlHhxL8K/NR6Hu8BWSgF5+1w74lTL0+nxcc8Qw=="], - "@radix-ui/react-id": ["@radix-ui/react-id@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg=="], + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.2.7", "", { "os": "linux", "cpu": "x64" }, "sha512-r8/z8n7GFaYRln3xmP1Cxy0HH/HLM0uBUPkEuSVEfKGDA89M0FsZRZJRSwe/tJjRx+fpH/gjorfhB8tmEbSFLA=="], - "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg=="], + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.2.7", "", { "os": "linux", "cpu": "x64" }, "sha512-pAsE8iiDxUg1xBqdhrTfg45AVDVpirjz00sblEYClGNNcMnDb+e8beQgqIAw6LvauX/APvgxUnwrgun/YYGBhw=="], - "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.8", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw=="], + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.2.7", "", { "os": "none", "cpu": "arm64" }, "sha512-lTcIYmmnQQA8Or/2DatS6oSqcdLHvendjS+zLu+FwgToynWMRSmQdpM65fTANJgIS4mjbMOo5KT2lnT9SAb96w=="], - "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.2.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-e3Gu3WxbNk/UqQhxqU7YIYO+9ZBvWNz3U+h/qRFosscMFzdRPbXYSaSWgSnklv2fz1TgzBTcti2z35c/7irsHw=="], - "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.5", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ=="], + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.2.7", "", { "os": "win32", "cpu": "x64" }, "sha512-W/jg5qoRSqjsEv0+dZi4e687mcHqmVuU0P4fK6qS/xjetW2Gmc1W8j//z5nAeNcC8Ttm0hV46IjcYeuVwYhuiw=="], - "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], - "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA=="], + "@testing-library/dom": ["@testing-library/dom@10.4.1", "", { "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "picocolors": "1.1.1", "pretty-format": "^27.0.2" } }, "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg=="], - "@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + "@testing-library/react": ["@testing-library/react@16.3.3", "", { "dependencies": { "@babel/runtime": "^7.12.5" }, "peerDependencies": { "@testing-library/dom": "^10.0.0", "@types/react": "^18.0.0 || ^19.0.0", "@types/react-dom": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Uo193NgQbPMz6lrrhtRQQFcMC6Re/ELLFbbuVL30WDlZxlpZf9/lMHTAVxPRLw1q1iu9OJmR1c2BLiENRstdBg=="], - "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg=="], + "@testing-library/user-event": ["@testing-library/user-event@14.6.7", "", { "peerDependencies": { "@testing-library/dom": ">=7.21.4" } }, "sha512-MPCpX8bxe8zS+JmmTwLp8jd0dy1rAm60Te/SL8JrQM3qvQJcBOs1d7IefJMyZzqM3EWBrDn/LWDt1BCGu4ASfg=="], - "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.2.2", "", { "dependencies": { "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg=="], + "@types/aria-query": ["@types/aria-query@5.0.4", "", {}, "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw=="], - "@radix-ui/react-use-effect-event": ["@radix-ui/react-use-effect-event@0.0.2", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA=="], + "@types/bun": ["@types/bun@1.3.11", "", { "dependencies": { "bun-types": "1.3.11" } }, "sha512-5vPne5QvtpjGpsGYXiFyycfpDF2ECyPcTSsFBMa0fraoxiQyMJ3SmuQIGhzPg2WJuWxVBoxWJ2kClYTcw/4fAg=="], - "@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.1", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g=="], - - "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="], - - "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.1", "", { "dependencies": { "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w=="], - - "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ=="], - - "@radix-ui/rect": ["@radix-ui/rect@1.1.1", "", {}, "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="], - - "@rtsao/scc": ["@rtsao/scc@1.1.0", "", {}, "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g=="], - - "@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], - - "@tailwindcss/node": ["@tailwindcss/node@4.1.14", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", "jiti": "^2.6.0", "lightningcss": "1.30.1", "magic-string": "^0.30.19", "source-map-js": "^1.2.1", "tailwindcss": "4.1.14" } }, "sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw=="], - - "@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.14", "", { "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.5.1" }, "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.14", "@tailwindcss/oxide-darwin-arm64": "4.1.14", "@tailwindcss/oxide-darwin-x64": "4.1.14", "@tailwindcss/oxide-freebsd-x64": "4.1.14", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.14", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.14", "@tailwindcss/oxide-linux-arm64-musl": "4.1.14", "@tailwindcss/oxide-linux-x64-gnu": "4.1.14", "@tailwindcss/oxide-linux-x64-musl": "4.1.14", "@tailwindcss/oxide-wasm32-wasi": "4.1.14", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.14", "@tailwindcss/oxide-win32-x64-msvc": "4.1.14" } }, "sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw=="], - - "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.14", "", { "os": "android", "cpu": "arm64" }, "sha512-a94ifZrGwMvbdeAxWoSuGcIl6/DOP5cdxagid7xJv6bwFp3oebp7y2ImYsnZBMTwjn5Ev5xESvS3FFYUGgPODQ=="], - - "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.14", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HkFP/CqfSh09xCnrPJA7jud7hij5ahKyWomrC3oiO2U9i0UjP17o9pJbxUN0IJ471GTQQmzwhp0DEcpbp4MZTA=="], - - "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.14", "", { "os": "darwin", "cpu": "x64" }, "sha512-eVNaWmCgdLf5iv6Qd3s7JI5SEFBFRtfm6W0mphJYXgvnDEAZ5sZzqmI06bK6xo0IErDHdTA5/t7d4eTfWbWOFw=="], - - "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.14", "", { "os": "freebsd", "cpu": "x64" }, "sha512-QWLoRXNikEuqtNb0dhQN6wsSVVjX6dmUFzuuiL09ZeXju25dsei2uIPl71y2Ic6QbNBsB4scwBoFnlBfabHkEw=="], - - "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.14", "", { "os": "linux", "cpu": "arm" }, "sha512-VB4gjQni9+F0VCASU+L8zSIyjrLLsy03sjcR3bM0V2g4SNamo0FakZFKyUQ96ZVwGK4CaJsc9zd/obQy74o0Fw=="], - - "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.14", "", { "os": "linux", "cpu": "arm64" }, "sha512-qaEy0dIZ6d9vyLnmeg24yzA8XuEAD9WjpM5nIM1sUgQ/Zv7cVkharPDQcmm/t/TvXoKo/0knI3me3AGfdx6w1w=="], - - "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.14", "", { "os": "linux", "cpu": "arm64" }, "sha512-ISZjT44s59O8xKsPEIesiIydMG/sCXoMBCqsphDm/WcbnuWLxxb+GcvSIIA5NjUw6F8Tex7s5/LM2yDy8RqYBQ=="], - - "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.14", "", { "os": "linux", "cpu": "x64" }, "sha512-02c6JhLPJj10L2caH4U0zF8Hji4dOeahmuMl23stk0MU1wfd1OraE7rOloidSF8W5JTHkFdVo/O7uRUJJnUAJg=="], - - "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.14", "", { "os": "linux", "cpu": "x64" }, "sha512-TNGeLiN1XS66kQhxHG/7wMeQDOoL0S33x9BgmydbrWAb9Qw0KYdd8o1ifx4HOGDWhVmJ+Ul+JQ7lyknQFilO3Q=="], - - "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.14", "", { "dependencies": { "@emnapi/core": "^1.5.0", "@emnapi/runtime": "^1.5.0", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.0.5", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.4.0" }, "cpu": "none" }, "sha512-uZYAsaW/jS/IYkd6EWPJKW/NlPNSkWkBlaeVBi/WsFQNP05/bzkebUL8FH1pdsqx4f2fH/bWFcUABOM9nfiJkQ=="], - - "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.14", "", { "os": "win32", "cpu": "arm64" }, "sha512-Az0RnnkcvRqsuoLH2Z4n3JfAef0wElgzHD5Aky/e+0tBUxUhIeIqFBTMNQvmMRSP15fWwmvjBxZ3Q8RhsDnxAA=="], - - "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.14", "", { "os": "win32", "cpu": "x64" }, "sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA=="], - - "@tailwindcss/postcss": ["@tailwindcss/postcss@4.1.14", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.1.14", "@tailwindcss/oxide": "4.1.14", "postcss": "^8.4.41", "tailwindcss": "4.1.14" } }, "sha512-BdMjIxy7HUNThK87C7BC8I1rE8BVUsfNQSI5siQ4JK3iIa3w0XyVvVL9SXLWO//CtYTcp1v7zci0fYwJOjB+Zg=="], - - "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], - - "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], - "@types/json5": ["@types/json5@0.0.29", "", {}, "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="], - - "@types/node": ["@types/node@20.19.19", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg=="], + "@types/node": ["@types/node@20.19.25", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ=="], - "@types/qrcode": ["@types/qrcode@1.5.5", "", { "dependencies": { "@types/node": "*" } }, "sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg=="], + "@types/react": ["@types/react@19.2.18", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w=="], - "@types/react": ["@types/react@19.2.7", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg=="], + "@types/react-dom": ["@types/react-dom@19.2.5", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg=="], - "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], + "@types/whatwg-mimetype": ["@types/whatwg-mimetype@3.0.2", "", {}, "sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA=="], - "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.50.1", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.50.1", "@typescript-eslint/type-utils": "8.50.1", "@typescript-eslint/utils": "8.50.1", "@typescript-eslint/visitor-keys": "8.50.1", "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.50.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw=="], + "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], - "@typescript-eslint/parser": ["@typescript-eslint/parser@8.50.1", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.50.1", "@typescript-eslint/types": "8.50.1", "@typescript-eslint/typescript-estree": "8.50.1", "@typescript-eslint/visitor-keys": "8.50.1", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg=="], + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.68.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.68.0", "@typescript-eslint/type-utils": "8.68.0", "@typescript-eslint/utils": "8.68.0", "@typescript-eslint/visitor-keys": "8.68.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.68.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-WASHDpCm6qO5jj9g1a+8NiW5+GCkAyLReR56/4VruYmNgfUmqpxOfZ2Yfb8xGfJPWv5Qi6LSD8sXdces3vbp/Q=="], - "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.50.1", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.50.1", "@typescript-eslint/types": "^8.50.1", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg=="], + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.68.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.68.0", "@typescript-eslint/types": "8.68.0", "@typescript-eslint/typescript-estree": "8.68.0", "@typescript-eslint/visitor-keys": "8.68.0", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-fHq2VC1kpyYfvEcbiMjOpySY4WS7voEp89yAThrHRX5sm9j2lzYppCb2umFMEed4fWcyeLjHxrz0mpjNBaBxMQ=="], - "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.50.1", "", { "dependencies": { "@typescript-eslint/types": "8.50.1", "@typescript-eslint/visitor-keys": "8.50.1" } }, "sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw=="], + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.68.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.68.0", "@typescript-eslint/types": "^8.68.0", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-5GQtWZCXFcFYux955pvoS02WLc49pXNlvIxocKjS0clvwo3in1RdlzVKyiqQH9vE5AKWFLTaUgeQkOrTS+0Qxw=="], - "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.50.1", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw=="], + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.68.0", "", { "dependencies": { "@typescript-eslint/types": "8.68.0", "@typescript-eslint/visitor-keys": "8.68.0" } }, "sha512-T5eXpcaJNg8bhjHJ8Rjp68Vq/QBteYtTKY8TZqVNPaUbuz0f6jI9t6aDkylwvalpAB9XTTFeFOjrjXAZ3YvmVA=="], - "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.50.1", "", { "dependencies": { "@typescript-eslint/types": "8.50.1", "@typescript-eslint/typescript-estree": "8.50.1", "@typescript-eslint/utils": "8.50.1", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg=="], + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.68.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-F7zrGQfiJHojPwi8vhxZQC1tWtJzvL74cK/nqri2lk8YUXvYaYwl263xOJ69jDWPUk1hmcdoayFwk9lX09npVw=="], - "@typescript-eslint/types": ["@typescript-eslint/types@8.50.1", "", {}, "sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA=="], + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.68.0", "", { "dependencies": { "@typescript-eslint/types": "8.68.0", "@typescript-eslint/typescript-estree": "8.68.0", "@typescript-eslint/utils": "8.68.0", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-X77zqoY1EjeWGs/0JNxeaMfp5C5lIz4Tw8y66F1Ne8Faq6g424sBNYM6xBAqElfGZPLpWS+CZAp0DXyKDzWiHg=="], - "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.50.1", "", { "dependencies": { "@typescript-eslint/project-service": "8.50.1", "@typescript-eslint/tsconfig-utils": "8.50.1", "@typescript-eslint/types": "8.50.1", "@typescript-eslint/visitor-keys": "8.50.1", "debug": "^4.3.4", "minimatch": "^9.0.4", "semver": "^7.6.0", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ=="], + "@typescript-eslint/types": ["@typescript-eslint/types@8.68.0", "", {}, "sha512-9RnpsGJjrAllCMefGVVsImJM24YurhC0Q1h4UbvivtvOqXmR/vEJge2OoE++z9m6hyg8T1Q8t5SNT6tHSbrxcg=="], - "@typescript-eslint/utils": ["@typescript-eslint/utils@8.50.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.50.1", "@typescript-eslint/types": "8.50.1", "@typescript-eslint/typescript-estree": "8.50.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ=="], + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.68.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.68.0", "@typescript-eslint/tsconfig-utils": "8.68.0", "@typescript-eslint/types": "8.68.0", "@typescript-eslint/visitor-keys": "8.68.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-OKKsD0tYmoNiU5PW2zehO1yO56jYOm1ShYlxon/Z0SJNidAkdVg86eg9ruRuoXf8xfnuWZGbwDsStkoXbZtIIA=="], - "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.50.1", "", { "dependencies": { "@typescript-eslint/types": "8.50.1", "eslint-visitor-keys": "^4.2.1" } }, "sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ=="], + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.68.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.68.0", "@typescript-eslint/types": "8.68.0", "@typescript-eslint/typescript-estree": "8.68.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-PB5gJMMOg0Q5P1tsgWtEAqQacJXq0qEqRHDX/YJ4FaTMLfZPpHB3gjl2EJuiZyPABxmj4ZQYiY9m1bdAJ5y7tQ=="], - "@unrs/resolver-binding-android-arm-eabi": ["@unrs/resolver-binding-android-arm-eabi@1.11.1", "", { "os": "android", "cpu": "arm" }, "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw=="], + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.68.0", "", { "dependencies": { "@typescript-eslint/types": "8.68.0", "eslint-visitor-keys": "^5.0.0" } }, "sha512-YR65gGdGvTUAWLldC3xLOvOzamdGzB4A5/N8rehEaHs3Zvoe39BhgY+u0SPch1OvrVTfLcc55wsSgK2NcnTS/A=="], - "@unrs/resolver-binding-android-arm64": ["@unrs/resolver-binding-android-arm64@1.11.1", "", { "os": "android", "cpu": "arm64" }, "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@6.1.1", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "oxc-transform-react": "^0.145.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler", "oxc-transform-react"] }, "sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw=="], - "@unrs/resolver-binding-darwin-arm64": ["@unrs/resolver-binding-darwin-arm64@1.11.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g=="], + "@world-id/web-authenticator-biometric-verification-port": ["@world-id/web-authenticator-biometric-verification-port@workspace:packages/biometric-verification-port"], - "@unrs/resolver-binding-darwin-x64": ["@unrs/resolver-binding-darwin-x64@1.11.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ=="], + "@world-id/web-authenticator-browser-admission": ["@world-id/web-authenticator-browser-admission@workspace:packages/browser-admission"], - "@unrs/resolver-binding-freebsd-x64": ["@unrs/resolver-binding-freebsd-x64@1.11.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw=="], + "@world-id/web-authenticator-client-quality": ["@world-id/web-authenticator-client-quality@workspace:packages/client-quality"], - "@unrs/resolver-binding-linux-arm-gnueabihf": ["@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1", "", { "os": "linux", "cpu": "arm" }, "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw=="], + "@world-id/web-authenticator-contracts": ["@world-id/web-authenticator-contracts@workspace:packages/contracts"], - "@unrs/resolver-binding-linux-arm-musleabihf": ["@unrs/resolver-binding-linux-arm-musleabihf@1.11.1", "", { "os": "linux", "cpu": "arm" }, "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw=="], + "@world-id/web-authenticator-session-gateway": ["@world-id/web-authenticator-session-gateway@workspace:services/session-gateway"], - "@unrs/resolver-binding-linux-arm64-gnu": ["@unrs/resolver-binding-linux-arm64-gnu@1.11.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ=="], + "@world-id/web-authenticator-simulated-biometric-verifier": ["@world-id/web-authenticator-simulated-biometric-verifier@workspace:services/simulated-biometric-verifier"], - "@unrs/resolver-binding-linux-arm64-musl": ["@unrs/resolver-binding-linux-arm64-musl@1.11.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w=="], + "@world-id/web-authenticator-simulated-staging-issuer": ["@world-id/web-authenticator-simulated-staging-issuer@workspace:services/simulated-staging-issuer"], - "@unrs/resolver-binding-linux-ppc64-gnu": ["@unrs/resolver-binding-linux-ppc64-gnu@1.11.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA=="], + "@world-id/web-authenticator-staging-issuance-port": ["@world-id/web-authenticator-staging-issuance-port@workspace:packages/staging-issuance-port"], - "@unrs/resolver-binding-linux-riscv64-gnu": ["@unrs/resolver-binding-linux-riscv64-gnu@1.11.1", "", { "os": "linux", "cpu": "none" }, "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ=="], + "@worldcoin/walletkit-web": ["@worldcoin/walletkit-web@0.27.1", "", {}, "sha512-8zcJ8a+YkZJYqSsBA/5I336E0t7kyIZppk2XZuAqkx6ixMYQPFznoNJRhY9gTfMEtI/jSCHWeP5cgdlPtyK2SA=="], - "@unrs/resolver-binding-linux-riscv64-musl": ["@unrs/resolver-binding-linux-riscv64-musl@1.11.1", "", { "os": "linux", "cpu": "none" }, "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew=="], - - "@unrs/resolver-binding-linux-s390x-gnu": ["@unrs/resolver-binding-linux-s390x-gnu@1.11.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg=="], - - "@unrs/resolver-binding-linux-x64-gnu": ["@unrs/resolver-binding-linux-x64-gnu@1.11.1", "", { "os": "linux", "cpu": "x64" }, "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w=="], - - "@unrs/resolver-binding-linux-x64-musl": ["@unrs/resolver-binding-linux-x64-musl@1.11.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA=="], - - "@unrs/resolver-binding-wasm32-wasi": ["@unrs/resolver-binding-wasm32-wasi@1.11.1", "", { "dependencies": { "@napi-rs/wasm-runtime": "^0.2.11" }, "cpu": "none" }, "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ=="], - - "@unrs/resolver-binding-win32-arm64-msvc": ["@unrs/resolver-binding-win32-arm64-msvc@1.11.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw=="], - - "@unrs/resolver-binding-win32-ia32-msvc": ["@unrs/resolver-binding-win32-ia32-msvc@1.11.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ=="], - - "@unrs/resolver-binding-win32-x64-msvc": ["@unrs/resolver-binding-win32-x64-msvc@1.11.1", "", { "os": "win32", "cpu": "x64" }, "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g=="], - - "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], + "acorn": ["acorn@8.18.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ=="], "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], - "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], + "ajv": ["ajv@6.15.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw=="], "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="], "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], - - "aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], + "aria-query": ["aria-query@5.3.0", "", { "dependencies": { "dequal": "^2.0.3" } }, "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A=="], "array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="], "array-includes": ["array-includes@3.1.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.0", "es-object-atoms": "^1.1.1", "get-intrinsic": "^1.3.0", "is-string": "^1.1.1", "math-intrinsics": "^1.1.0" } }, "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ=="], - "array.prototype.findlast": ["array.prototype.findlast@1.2.5", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ=="], - - "array.prototype.findlastindex": ["array.prototype.findlastindex@1.2.6", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-shim-unscopables": "^1.1.0" } }, "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ=="], - "array.prototype.flat": ["array.prototype.flat@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg=="], "array.prototype.flatmap": ["array.prototype.flatmap@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg=="], - "array.prototype.tosorted": ["array.prototype.tosorted@1.1.4", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3", "es-errors": "^1.3.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA=="], - "arraybuffer.prototype.slice": ["arraybuffer.prototype.slice@1.0.4", "", { "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "is-array-buffer": "^3.0.4" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="], "ast-types-flow": ["ast-types-flow@0.0.8", "", {}, "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ=="], @@ -389,21 +273,23 @@ "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], - "axe-core": ["axe-core@4.10.3", "", {}, "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg=="], + "axe-core": ["axe-core@4.13.0", "", {}, "sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A=="], "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - "baseline-browser-mapping": ["baseline-browser-mapping@2.9.11", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ=="], + "baseline-browser-mapping": ["baseline-browser-mapping@2.11.20", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw=="], - "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], + "brace-expansion": ["brace-expansion@1.1.18", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw=="], - "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + "browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], - "browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], + "buffer-image-size": ["buffer-image-size@0.6.4", "", { "dependencies": { "@types/node": "*" } }, "sha512-nEh+kZOPY1w+gcCMobZ6ETUp9WfibndnosbpwB1iJk/8Gt5ZF2bhS6+B6bPYz424KtwsR6Rflc3tCz1/ghX2dQ=="], - "call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], + "bun-types": ["bun-types@1.3.11", "", { "dependencies": { "@types/node": "*" } }, "sha512-1KGPpoxQWl9f6wcZh57LvrPIInQMn2TQ7jsgxqpRzg+l0QPOFvJVH7HmvHo/AiPgwXy+/Thf6Ov3EdVn1vOabg=="], + + "call-bind": ["call-bind@1.0.9", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "get-intrinsic": "^1.3.0", "set-function-length": "^1.2.2" } }, "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ=="], "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], @@ -411,19 +297,11 @@ "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], - "camelcase": ["camelcase@5.3.1", "", {}, "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="], - - "caniuse-lite": ["caniuse-lite@1.0.30001746", "", {}, "sha512-eA7Ys/DGw+pnkWWSE/id29f2IcPHVoE8wxtvE5JdvD2V28VTDPy1yEeo11Guz0sJ4ZeGRcm3uaTcAqK1LXaphA=="], + "caniuse-lite": ["caniuse-lite@1.0.30001810", "", {}, "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg=="], "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], - - "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], - - "cliui": ["cliui@6.0.0", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ=="], - - "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], + "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], @@ -431,6 +309,8 @@ "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], + "concurrently": ["concurrently@9.2.1", "", { "dependencies": { "chalk": "4.1.2", "rxjs": "7.8.2", "shell-quote": "1.8.3", "supports-color": "8.1.1", "tree-kill": "1.2.2", "yargs": "17.7.2" }, "bin": { "conc": "dist/bin/concurrently.js", "concurrently": "dist/bin/concurrently.js" } }, "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng=="], + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], @@ -445,9 +325,7 @@ "data-view-byte-offset": ["data-view-byte-offset@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" } }, "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ=="], - "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], - - "decamelize": ["decamelize@1.2.0", "", {}, "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="], + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], @@ -455,59 +333,45 @@ "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], - "detect-libc": ["detect-libc@2.1.1", "", {}, "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw=="], - - "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], + "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], - "dijkstrajs": ["dijkstrajs@1.0.3", "", {}, "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="], + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], - "doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], + "dom-accessibility-api": ["dom-accessibility-api@0.5.16", "", {}, "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg=="], "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], - "electron-to-chromium": ["electron-to-chromium@1.5.267", "", {}, "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw=="], + "electron-to-chromium": ["electron-to-chromium@1.5.420", "", {}, "sha512-2yD6XreGusOfNV+dUcvipJEXc3n/n7fgr7996aszTG+YY5E4mqM4tOq/3uhP129cazL9YHbVWSpc79ePotWtPA=="], "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], - "enhanced-resolve": ["enhanced-resolve@5.18.3", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww=="], + "entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], + + "es-abstract": ["es-abstract@1.24.2", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg=="], - "es-abstract": ["es-abstract@1.24.0", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg=="], + "es-abstract-get": ["es-abstract-get@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "es-object-atoms": "^1.1.2", "is-callable": "^1.2.7", "object-inspect": "^1.13.4" } }, "sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg=="], "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], - "es-iterator-helpers": ["es-iterator-helpers@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.6", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.4", "safe-array-concat": "^1.1.3" } }, "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w=="], - - "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], + "es-object-atoms": ["es-object-atoms@1.1.2", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw=="], "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], "es-shim-unscopables": ["es-shim-unscopables@1.1.0", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw=="], - "es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="], + "es-to-primitive": ["es-to-primitive@1.3.4", "", { "dependencies": { "es-abstract-get": "^1.0.0", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "is-callable": "^1.2.7", "is-date-object": "^1.1.0", "is-symbol": "^1.1.1" } }, "sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw=="], "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - "eslint": ["eslint@9.36.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", "@eslint/config-helpers": "^0.3.1", "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.36.0", "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ=="], - - "eslint-config-next": ["eslint-config-next@16.1.1", "", { "dependencies": { "@next/eslint-plugin-next": "16.1.1", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^7.0.0", "globals": "16.4.0", "typescript-eslint": "^8.46.0" }, "peerDependencies": { "eslint": ">=9.0.0", "typescript": ">=3.3.1" }, "optionalPeers": ["typescript"] }, "sha512-55nTpVWm3qeuxoQKLOjQVciKZJUphKrNM0fCcQHAIOGl6VFXgaqeMfv0aKJhs7QtcnlAPhNVqsqRfRjeKBPIUA=="], - - "eslint-import-resolver-node": ["eslint-import-resolver-node@0.3.9", "", { "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", "resolve": "^1.22.4" } }, "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g=="], - - "eslint-import-resolver-typescript": ["eslint-import-resolver-typescript@3.10.1", "", { "dependencies": { "@nolyfill/is-core-module": "1.0.39", "debug": "^4.4.0", "get-tsconfig": "^4.10.0", "is-bun-module": "^2.0.0", "stable-hash": "^0.0.5", "tinyglobby": "^0.2.13", "unrs-resolver": "^1.6.2" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*", "eslint-plugin-import-x": "*" }, "optionalPeers": ["eslint-plugin-import", "eslint-plugin-import-x"] }, "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ=="], - - "eslint-module-utils": ["eslint-module-utils@2.12.1", "", { "dependencies": { "debug": "^3.2.7" } }, "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw=="], - - "eslint-plugin-import": ["eslint-plugin-import@2.32.0", "", { "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", "array.prototype.findlastindex": "^1.2.6", "array.prototype.flat": "^1.3.3", "array.prototype.flatmap": "^1.3.3", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.12.1", "hasown": "^2.0.2", "is-core-module": "^2.16.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", "object.values": "^1.2.1", "semver": "^6.3.1", "string.prototype.trimend": "^1.0.9", "tsconfig-paths": "^3.15.0" }, "peerDependencies": { "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA=="], + "eslint": ["eslint@9.39.4", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.5", "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ=="], "eslint-plugin-jsx-a11y": ["eslint-plugin-jsx-a11y@6.10.2", "", { "dependencies": { "aria-query": "^5.3.2", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", "axe-core": "^4.10.0", "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "safe-regex-test": "^1.0.3", "string.prototype.includes": "^2.0.1" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q=="], - "eslint-plugin-react": ["eslint-plugin-react@7.37.5", "", { "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA=="], - - "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@7.0.1", "", { "dependencies": { "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "hermes-parser": "^0.25.1", "zod": "^3.25.0 || ^4.0.0", "zod-validation-error": "^3.5.0 || ^4.0.0" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA=="], + "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@7.1.1", "", { "dependencies": { "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "hermes-parser": "^0.25.1", "zod": "^3.25.0 || ^4.0.0", "zod-validation-error": "^3.5.0 || ^4.0.0" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" } }, "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g=="], "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="], @@ -515,7 +379,7 @@ "espree": ["espree@10.4.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="], - "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="], + "esquery": ["esquery@1.7.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g=="], "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], @@ -525,33 +389,27 @@ "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], - "fast-glob": ["fast-glob@3.3.1", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" } }, "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg=="], - "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], - "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], - "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], - "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], - "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], - "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], + "flatted": ["flatted@3.4.4", "", {}, "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q=="], "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], - "framer-motion": ["framer-motion@12.23.22", "", { "dependencies": { "motion-dom": "^12.23.21", "motion-utils": "^12.23.6", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-ZgGvdxXCw55ZYvhoZChTlG6pUuehecgvEAJz0BHoC5pQKW1EC5xf1Mul1ej5+ai+pVY0pylyFfdl45qnM1/GsA=="], + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], - "function.prototype.name": ["function.prototype.name@1.1.8", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" } }, "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q=="], + "function.prototype.name": ["function.prototype.name@1.2.0", "", { "dependencies": { "call-bind": "^1.0.9", "call-bound": "^1.0.4", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2", "hasown": "^2.0.4", "is-callable": "^1.2.7", "is-document.all": "^1.0.0" } }, "sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew=="], "functions-have-names": ["functions-have-names@1.2.3", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="], @@ -563,23 +421,19 @@ "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], - "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], - "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], "get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="], - "get-tsconfig": ["get-tsconfig@4.10.1", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ=="], - "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], - "globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], + "globals": ["globals@16.4.0", "", {}, "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw=="], "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], - "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + "happy-dom": ["happy-dom@20.13.2", "", { "dependencies": { "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", "@types/ws": "^8.18.1", "buffer-image-size": "^0.6.4", "entities": "^7.0.1", "whatwg-mimetype": "^3.0.0", "ws": "^8.21.0" } }, "sha512-VC9HoEaT3Jf3K/1g/GjMYGAZCCg+ULgGVcXJlAeSzdTj8mIoPJRp14KVclP5gpUcF/kauuaVB2ri2/WxXbl4vg=="], "has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="], @@ -593,7 +447,7 @@ "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], - "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + "hasown": ["hasown@2.0.4", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="], "hermes-estree": ["hermes-estree@0.25.1", "", {}, "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw=="], @@ -615,16 +469,14 @@ "is-boolean-object": ["is-boolean-object@1.2.2", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A=="], - "is-bun-module": ["is-bun-module@2.0.0", "", { "dependencies": { "semver": "^7.7.1" } }, "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ=="], - "is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="], - "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], - "is-data-view": ["is-data-view@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" } }, "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw=="], "is-date-object": ["is-date-object@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg=="], + "is-document.all": ["is-document.all@1.0.0", "", { "dependencies": { "call-bound": "^1.0.4" } }, "sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g=="], + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], "is-finalizationregistry": ["is-finalizationregistry@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg=="], @@ -639,8 +491,6 @@ "is-negative-zero": ["is-negative-zero@2.0.3", "", {}, "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw=="], - "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], - "is-number-object": ["is-number-object@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw=="], "is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="], @@ -665,13 +515,9 @@ "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], - "iterator.prototype": ["iterator.prototype@1.1.5", "", { "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "get-proto": "^1.0.0", "has-symbols": "^1.1.0", "set-function-name": "^2.0.2" } }, "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g=="], - - "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], - "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], + "js-yaml": ["js-yaml@4.3.2", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA=="], "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], @@ -681,7 +527,7 @@ "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], - "json5": ["json5@1.0.2", "", { "dependencies": { "minimist": "^1.2.0" }, "bin": { "json5": "lib/cli.js" } }, "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA=="], + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], "jsx-ast-utils": ["jsx-ast-utils@3.3.5", "", { "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", "object.assign": "^4.1.4", "object.values": "^1.1.6" } }, "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ=="], @@ -693,71 +539,49 @@ "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], - "lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="], + "lightningcss": ["lightningcss@1.33.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.33.0", "lightningcss-darwin-arm64": "1.33.0", "lightningcss-darwin-x64": "1.33.0", "lightningcss-freebsd-x64": "1.33.0", "lightningcss-linux-arm-gnueabihf": "1.33.0", "lightningcss-linux-arm64-gnu": "1.33.0", "lightningcss-linux-arm64-musl": "1.33.0", "lightningcss-linux-x64-gnu": "1.33.0", "lightningcss-linux-x64-musl": "1.33.0", "lightningcss-win32-arm64-msvc": "1.33.0", "lightningcss-win32-x64-msvc": "1.33.0" } }, "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA=="], - "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="], + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.33.0", "", { "os": "android", "cpu": "arm64" }, "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg=="], - "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="], + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.33.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg=="], - "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="], + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.33.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ=="], - "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="], + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.33.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg=="], - "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="], + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.33.0", "", { "os": "linux", "cpu": "arm" }, "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ=="], - "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="], + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.33.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg=="], - "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="], + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.33.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ=="], - "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="], + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.33.0", "", { "os": "linux", "cpu": "x64" }, "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg=="], - "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="], + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.33.0", "", { "os": "linux", "cpu": "x64" }, "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw=="], - "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="], + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.33.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.33.0", "", { "os": "win32", "cpu": "x64" }, "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA=="], "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], - "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], - "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], - "magic-string": ["magic-string@0.30.19", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw=="], + "lz-string": ["lz-string@1.5.0", "", { "bin": { "lz-string": "bin/bin.js" } }, "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ=="], "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], - "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], - - "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - - "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - - "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], - - "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], - - "minizlib": ["minizlib@3.1.0", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="], - - "motion": ["motion@12.23.22", "", { "dependencies": { "framer-motion": "^12.23.22", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-iSq6X9vLHbeYwmHvhK//+U74ROaPnZmBuy60XZzqNl0QtZkWfoZyMDHYnpKuWFv0sNMqHgED8aCXk94LCoQPGg=="], - - "motion-dom": ["motion-dom@12.23.21", "", { "dependencies": { "motion-utils": "^12.23.6" } }, "sha512-5xDXx/AbhrfgsQmSE7YESMn4Dpo6x5/DTZ4Iyy4xqDvVHWvFVoV+V2Ri2S/ksx+D40wrZ7gPYiMWshkdoqNgNQ=="], - - "motion-utils": ["motion-utils@12.23.6", "", {}, "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ=="], + "minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], - - "napi-postinstall": ["napi-postinstall@0.3.3", "", { "bin": { "napi-postinstall": "lib/cli.js" } }, "sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow=="], + "nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="], "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], - "next": ["next@16.1.1", "", { "dependencies": { "@next/env": "16.1.1", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.1.1", "@next/swc-darwin-x64": "16.1.1", "@next/swc-linux-arm64-gnu": "16.1.1", "@next/swc-linux-arm64-musl": "16.1.1", "@next/swc-linux-x64-gnu": "16.1.1", "@next/swc-linux-x64-musl": "16.1.1", "@next/swc-win32-arm64-msvc": "16.1.1", "@next/swc-win32-x64-msvc": "16.1.1", "sharp": "^0.34.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-QI+T7xrxt1pF6SQ/JYFz95ro/mg/1Znk5vBebsWwbpejj1T0A23hO7GYEaVac9QUOT2BIMiuzm0L99ooq7k0/w=="], - - "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], - - "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], + "node-releases": ["node-releases@2.0.54", "", {}, "sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ=="], "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], @@ -765,67 +589,47 @@ "object.assign": ["object.assign@4.1.7", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0", "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw=="], - "object.entries": ["object.entries@1.1.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-object-atoms": "^1.1.1" } }, "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw=="], - "object.fromentries": ["object.fromentries@2.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0" } }, "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ=="], - "object.groupby": ["object.groupby@1.0.3", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2" } }, "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ=="], - "object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="], "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], - "own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="], + "own-keys": ["own-keys@1.0.2", "", { "dependencies": { "call-bound": "^1.0.4", "get-intrinsic": "^1.3.0", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg=="], "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], - "p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="], - "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], - "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], - "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + "picomatch": ["picomatch@4.0.7", "", {}, "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="], + + "playwright": ["playwright@1.62.1", "", { "dependencies": { "playwright-core": "1.62.1" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg=="], - "pngjs": ["pngjs@5.0.0", "", {}, "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="], + "playwright-core": ["playwright-core@1.62.1", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw=="], "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], - "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], + "postcss": ["postcss@8.5.26", "", { "dependencies": { "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ=="], "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], - "prettier": ["prettier@3.6.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ=="], - - "prettier-plugin-sort-imports-desc": ["prettier-plugin-sort-imports-desc@1.0.0", "", { "dependencies": { "prettier": "^2.5.1", "typescript": "^4.0.3" } }, "sha512-tvEeXpKu5JHYbqzsAP+EdjXgqdONTi5NhOtr2ke2br6wV39PQLRAbeHGxTe8/jhS7goXkHQKVl3XLjsKKxpe4A=="], - - "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], + "pretty-format": ["pretty-format@27.5.1", "", { "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" } }, "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ=="], "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], - "qrcode": ["qrcode@1.5.4", "", { "dependencies": { "dijkstrajs": "^1.0.1", "pngjs": "^5.0.0", "yargs": "^15.3.1" }, "bin": { "qrcode": "bin/qrcode" } }, "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg=="], - - "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + "react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], - "react": ["react@19.2.3", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="], + "react-dom": ["react-dom@19.2.8", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.8" } }, "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ=="], - "react-dom": ["react-dom@19.2.3", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.3" } }, "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg=="], - - "react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], - - "react-remove-scroll": ["react-remove-scroll@2.7.1", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA=="], - - "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], - - "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], + "react-is": ["react-is@17.0.2", "", {}, "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="], "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], @@ -833,19 +637,13 @@ "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], - "require-main-filename": ["require-main-filename@2.0.0", "", {}, "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="], - - "resolve": ["resolve@1.22.10", "", { "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w=="], - "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], - "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], + "rolldown": ["rolldown@1.2.7", "", { "dependencies": { "@oxc-project/types": "=0.148.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm-eabi": "1.2.7", "@rolldown/binding-android-arm64": "1.2.7", "@rolldown/binding-darwin-arm64": "1.2.7", "@rolldown/binding-darwin-x64": "1.2.7", "@rolldown/binding-freebsd-x64": "1.2.7", "@rolldown/binding-linux-arm-gnueabihf": "1.2.7", "@rolldown/binding-linux-arm64-gnu": "1.2.7", "@rolldown/binding-linux-arm64-musl": "1.2.7", "@rolldown/binding-linux-ppc64-gnu": "1.2.7", "@rolldown/binding-linux-s390x-gnu": "1.2.7", "@rolldown/binding-linux-x64-gnu": "1.2.7", "@rolldown/binding-linux-x64-musl": "1.2.7", "@rolldown/binding-openharmony-arm64": "1.2.7", "@rolldown/binding-win32-arm64-msvc": "1.2.7", "@rolldown/binding-win32-x64-msvc": "1.2.7" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-g0EtLvBjTUB7jhyV0S/TCup3v/XSVl45vUIGbOGU4QPiyjTenCe4mKuFvW9fEgYmS2Fo42AUssRmNuMziXdrig=="], - "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + "rxjs": ["rxjs@7.8.2", "", { "dependencies": { "tslib": "^2.1.0" } }, "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA=="], - "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], - - "safe-array-concat": ["safe-array-concat@1.1.3", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q=="], + "safe-array-concat": ["safe-array-concat@1.1.4", "", { "dependencies": { "call-bind": "^1.0.9", "call-bound": "^1.0.4", "get-intrinsic": "^1.3.0", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg=="], "safe-push-apply": ["safe-push-apply@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="], @@ -855,23 +653,21 @@ "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "set-blocking": ["set-blocking@2.0.0", "", {}, "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="], - "set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="], "set-function-name": ["set-function-name@2.0.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" } }, "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ=="], "set-proto": ["set-proto@1.0.0", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="], - "sharp": ["sharp@0.34.4", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.0", "semver": "^7.7.2" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.4", "@img/sharp-darwin-x64": "0.34.4", "@img/sharp-libvips-darwin-arm64": "1.2.3", "@img/sharp-libvips-darwin-x64": "1.2.3", "@img/sharp-libvips-linux-arm": "1.2.3", "@img/sharp-libvips-linux-arm64": "1.2.3", "@img/sharp-libvips-linux-ppc64": "1.2.3", "@img/sharp-libvips-linux-s390x": "1.2.3", "@img/sharp-libvips-linux-x64": "1.2.3", "@img/sharp-libvips-linuxmusl-arm64": "1.2.3", "@img/sharp-libvips-linuxmusl-x64": "1.2.3", "@img/sharp-linux-arm": "0.34.4", "@img/sharp-linux-arm64": "0.34.4", "@img/sharp-linux-ppc64": "0.34.4", "@img/sharp-linux-s390x": "0.34.4", "@img/sharp-linux-x64": "0.34.4", "@img/sharp-linuxmusl-arm64": "0.34.4", "@img/sharp-linuxmusl-x64": "0.34.4", "@img/sharp-wasm32": "0.34.4", "@img/sharp-win32-arm64": "0.34.4", "@img/sharp-win32-ia32": "0.34.4", "@img/sharp-win32-x64": "0.34.4" } }, "sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA=="], - "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], - "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], + "shell-quote": ["shell-quote@1.8.3", "", {}, "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw=="], - "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], + "side-channel": ["side-channel@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4", "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ=="], + + "side-channel-list": ["side-channel-list@1.0.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4" } }, "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w=="], "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], @@ -879,51 +675,29 @@ "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], - "stable-hash": ["stable-hash@0.0.5", "", {}, "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA=="], - "stop-iteration-iterator": ["stop-iteration-iterator@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" } }, "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ=="], "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], "string.prototype.includes": ["string.prototype.includes@2.0.1", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3" } }, "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg=="], - "string.prototype.matchall": ["string.prototype.matchall@4.0.12", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA=="], - - "string.prototype.repeat": ["string.prototype.repeat@1.0.0", "", { "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" } }, "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w=="], + "string.prototype.trim": ["string.prototype.trim@1.2.11", "", { "dependencies": { "call-bind": "^1.0.9", "call-bound": "^1.0.4", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.2", "es-object-atoms": "^1.1.2", "has-property-descriptors": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w=="], - "string.prototype.trim": ["string.prototype.trim@1.2.10", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" } }, "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA=="], - - "string.prototype.trimend": ["string.prototype.trimend@1.0.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ=="], + "string.prototype.trimend": ["string.prototype.trimend@1.0.10", "", { "dependencies": { "call-bind": "^1.0.9", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-object-atoms": "^1.1.2" } }, "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw=="], "string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="], "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="], - "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], - "styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="], - - "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], - - "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], - - "tailwind-merge": ["tailwind-merge@3.3.1", "", {}, "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g=="], - - "tailwindcss": ["tailwindcss@4.1.14", "", {}, "sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA=="], + "supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], - "tapable": ["tapable@2.2.3", "", {}, "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg=="], + "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], - "tar": ["tar@7.5.1", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g=="], + "tree-kill": ["tree-kill@1.2.2", "", { "bin": { "tree-kill": "cli.js" } }, "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="], - "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], - - "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], - - "ts-api-utils": ["ts-api-utils@2.1.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ=="], - - "tsconfig-paths": ["tsconfig-paths@3.15.0", "", { "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg=="], + "ts-api-utils": ["ts-api-utils@2.5.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA=="], "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -935,25 +709,23 @@ "typed-array-byte-offset": ["typed-array-byte-offset@1.0.4", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.15", "reflect.getprototypeof": "^1.0.9" } }, "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ=="], - "typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="], + "typed-array-length": ["typed-array-length@1.0.8", "", { "dependencies": { "call-bind": "^1.0.9", "for-each": "^0.3.5", "gopd": "^1.2.0", "is-typed-array": "^1.1.15", "possible-typed-array-names": "^1.1.0", "reflect.getprototypeof": "^1.0.10" } }, "sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g=="], "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "typescript-eslint": ["typescript-eslint@8.50.1", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.50.1", "@typescript-eslint/parser": "8.50.1", "@typescript-eslint/typescript-estree": "8.50.1", "@typescript-eslint/utils": "8.50.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-ytTHO+SoYSbhAH9CrYnMhiLx8To6PSSvqnvXyPUgPETCvB6eBKmTI9w6XMPS3HsBRGkwTVBX+urA8dYQx6bHfQ=="], + "typescript-eslint": ["typescript-eslint@8.68.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.68.0", "@typescript-eslint/parser": "8.68.0", "@typescript-eslint/typescript-estree": "8.68.0", "@typescript-eslint/utils": "8.68.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-MHy0Y0ynqeEbx/S45+i/bBssdy3X6KNBfmJAP35GrgtNxu2TQ5K5xsFDhAnmsq1jvpdoZOPG1LGtJo0HWqYCrQ=="], "unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="], "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], - "unrs-resolver": ["unrs-resolver@1.11.1", "", { "dependencies": { "napi-postinstall": "^0.3.0" }, "optionalDependencies": { "@unrs/resolver-binding-android-arm-eabi": "1.11.1", "@unrs/resolver-binding-android-arm64": "1.11.1", "@unrs/resolver-binding-darwin-arm64": "1.11.1", "@unrs/resolver-binding-darwin-x64": "1.11.1", "@unrs/resolver-binding-freebsd-x64": "1.11.1", "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-musl": "1.11.1", "@unrs/resolver-binding-wasm32-wasi": "1.11.1", "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg=="], - - "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], + "update-browserslist-db": ["update-browserslist-db@1.3.2", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw=="], "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], - "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], + "vite": ["vite@8.2.2", "", { "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.5", "postcss": "^8.5.26", "rolldown": "~1.2.4", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.4.0 || ^0.5.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q=="], - "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], + "whatwg-mimetype": ["whatwg-mimetype@3.0.0", "", {}, "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q=="], "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], @@ -963,126 +735,54 @@ "which-collection": ["which-collection@1.0.2", "", { "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", "is-weakmap": "^2.0.2", "is-weakset": "^2.0.3" } }, "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw=="], - "which-module": ["which-module@2.0.1", "", {}, "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="], - - "which-typed-array": ["which-typed-array@1.1.19", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw=="], + "which-typed-array": ["which-typed-array@1.1.22", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.9", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw=="], "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], - "wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], + "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "ws": ["ws@8.21.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw=="], - "y18n": ["y18n@4.0.3", "", {}, "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="], + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], - "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], + "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], - "yargs": ["yargs@15.4.1", "", { "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", "yargs-parser": "^18.1.2" } }, "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A=="], + "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], - "yargs-parser": ["yargs-parser@18.1.3", "", { "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" } }, "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ=="], + "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], - "zod": ["zod@4.2.1", "", {}, "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw=="], + "zod": ["zod@4.5.4", "", {}, "sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA=="], "zod-validation-error": ["zod-validation-error@4.0.2", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="], - "@babel/core/json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], - - "@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], - - "@emnapi/core/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@emnapi/runtime/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.5.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.0.5", "", { "dependencies": { "@emnapi/core": "^1.5.0", "@emnapi/runtime": "^1.5.0", "@tybys/wasm-util": "^0.10.1" }, "bundled": true }, "sha512-TBr9Cf9onSAS2LQ2+QHx6XcC6h9+RIzJgbqG3++9TUZSH204AwEy5jg3BTQ0VATsyoGj4ee49tN/y6rvaOOtcg=="], - - "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], - - "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@tybys/wasm-util/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], - - "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + "@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], - "@typescript-eslint/typescript-estree/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.8", "", {}, "sha512-YYNsSlXBjMk92SKnkwvB5LOVSa6OznlFUGcsvrFgNJbJCd0M1XKeFVRc8ZByeCqz32FivYNHJVooLmdqrmvp/Q=="], - "browserslist/caniuse-lite": ["caniuse-lite@1.0.30001761", "", {}, "sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g=="], + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@10.2.6", "", { "dependencies": { "brace-expansion": "^5.0.8" } }, "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A=="], - "eslint-config-next/globals": ["globals@16.4.0", "", {}, "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw=="], + "@typescript-eslint/typescript-estree/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], - "eslint-import-resolver-node/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + "@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="], - "eslint-module-utils/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + "chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "eslint-plugin-import/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + "chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], - "eslint-plugin-react/resolve": ["resolve@2.0.0-next.5", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA=="], + "eslint-plugin-jsx-a11y/aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], - "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - - "is-bun-module/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], - - "lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], - - "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - - "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], - - "prettier-plugin-sort-imports-desc/prettier": ["prettier@2.8.8", "", { "bin": { "prettier": "bin-prettier.js" } }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], - - "prettier-plugin-sort-imports-desc/typescript": ["typescript@4.9.5", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g=="], - - "sharp/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "playwright/fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="], "string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - "yargs/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], - - "@emnapi/core/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core": ["@emnapi/core@1.5.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], - - "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], - - "yargs/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/runtime/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "yargs/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], + "wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@5.0.9", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg=="], - "yargs/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + "@typescript-eslint/typescript-estree/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], } } diff --git a/config/README.md b/config/README.md new file mode 100644 index 0000000..52bbdf9 --- /dev/null +++ b/config/README.md @@ -0,0 +1,9 @@ +# Main-owned application configuration + +This directory contains non-secret, staging-only values frozen by Main for cs5. W01 may import these values but may not edit them. + +- The browser cannot select simulator scenarios. +- Signing keys and completion-handle keys are generated or injected at server startup and never appear here. +- The local origin is a development/evidence surface, not deployment or physical-iPhone evidence. +- Security headers apply to the app-owned Bun server and keep camera permission limited to the same origin. +- Server binding and the two exact allowed browser origins come from the environment: `AUTHENTICATOR_HOST` (default `127.0.0.1`; `0.0.0.0` in containers), `PORT`/`AUTHENTICATOR_PORT` (default `4173`), `AUTHENTICATOR_PUBLIC_ORIGIN` (default `http://127.0.0.1:`), and `AUTHENTICATOR_LOCAL_ORIGIN` (default `http://localhost:`). Origins must be bare `http(s)://host[:port]` values; anything else fails startup. The RP identifier is the public origin's hostname. diff --git a/config/authenticator-app-v0.test.ts b/config/authenticator-app-v0.test.ts new file mode 100644 index 0000000..0a9c5df --- /dev/null +++ b/config/authenticator-app-v0.test.ts @@ -0,0 +1,116 @@ +import { describe, expect, test } from "bun:test"; +import { + SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, + SIMULATOR_UI_QUALITY_POLICY_V0, +} from "../packages/contracts/src"; +import { + AUTHENTICATOR_APP_CONFIG, + AUTHENTICATOR_APP_SECURITY_HEADERS_V0, + AUTHENTICATOR_RP_PRESENTATIONS_V0, +} from "./authenticator-app-v0"; + +describe("Main-owned authenticator app configuration", () => { + test("is staging-only, server-scenario-owned, metadata-only, and runtime frozen", () => { + expect(AUTHENTICATOR_APP_CONFIG.runtimeEnvironment).toBe("staging"); + expect(AUTHENTICATOR_APP_CONFIG.gatewayEnabled).toBe(true); + expect(AUTHENTICATOR_APP_CONFIG.localWalkthroughOrigin).toBe( + "http://localhost:4173", + ); + expect(AUTHENTICATOR_APP_CONFIG.defaultBiometricScenario).toBe("happy_path"); + expect(AUTHENTICATOR_APP_CONFIG.defaultIssuanceScenario).toBe("issue_success"); + expect(AUTHENTICATOR_APP_CONFIG.capturePolicy).toBe( + SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, + ); + expect(AUTHENTICATOR_APP_CONFIG.qualityPolicy).toBe( + SIMULATOR_UI_QUALITY_POLICY_V0, + ); + expect(AUTHENTICATOR_APP_CONFIG.capturePolicy.dataMode).toBe("metadata_only"); + expect(AUTHENTICATOR_APP_CONFIG.qualityPolicy.checks).toEqual([ + { kind: "camera_active" }, + ]); + expect(AUTHENTICATOR_APP_CONFIG.biometricSimulatorVersion).toBe( + "cs5-simulated-biometric-v0", + ); + expect(AUTHENTICATOR_APP_CONFIG.biometricReceiptTtlMs).toBe(60_000); + expect(AUTHENTICATOR_APP_CONFIG.stagingCredentialTtlMs).toBe(60_000); + expect(AUTHENTICATOR_APP_CONFIG.demoCompletionTtlMs).toBe(60_000); + expect(AUTHENTICATOR_APP_CONFIG.biometricCacheEntries).toBe(1_024); + expect(AUTHENTICATOR_APP_CONFIG.issuanceCacheEntries).toBe(1_024); + expect(new Set(Object.values(AUTHENTICATOR_APP_CONFIG.purposeKeyIds)).size).toBe(5); + expect(Object.isFrozen(AUTHENTICATOR_APP_CONFIG.purposeKeyIds)).toBe(true); + expect(Object.isFrozen(AUTHENTICATOR_APP_CONFIG)).toBe(true); + expect(Object.isFrozen(AUTHENTICATOR_APP_CONFIG.allowedSyntheticFixtureIds)).toBe(true); + }); + + test("binds to loopback 4173 by default and derives rpId from the public origin", () => { + expect(AUTHENTICATOR_APP_CONFIG.host).toBe("127.0.0.1"); + expect(AUTHENTICATOR_APP_CONFIG.port).toBe(4173); + expect(AUTHENTICATOR_APP_CONFIG.publicOrigin).toBe("http://127.0.0.1:4173"); + expect(AUTHENTICATOR_APP_CONFIG.rpId).toBe("127.0.0.1"); + }); + + test("takes binding and exact origins from the environment and rejects non-origins", () => { + const configPath = new URL("./authenticator-app-v0.ts", import.meta.url).pathname; + const script = `import { AUTHENTICATOR_APP_CONFIG as c } from ${JSON.stringify(configPath)};` + + "process.stdout.write(JSON.stringify({ host: c.host, port: c.port, publicOrigin: c.publicOrigin, " + + "localWalkthroughOrigin: c.localWalkthroughOrigin, rpId: c.rpId }));"; + const ok = Bun.spawnSync(["bun", "-e", script], { + env: { + ...process.env, + AUTHENTICATOR_HOST: "0.0.0.0", + PORT: "8080", + AUTHENTICATOR_PUBLIC_ORIGIN: "https://verify.example.com/", + AUTHENTICATOR_LOCAL_ORIGIN: "", + }, + }); + expect(ok.exitCode).toBe(0); + expect(JSON.parse(ok.stdout.toString())).toEqual({ + host: "0.0.0.0", + port: 8080, + publicOrigin: "https://verify.example.com", + localWalkthroughOrigin: "http://localhost:8080", + rpId: "verify.example.com", + }); + + for (const bad of ["https://verify.example.com/path", "verify.example.com", "ftp://x.example"]) { + const rejected = Bun.spawnSync(["bun", "-e", script], { + env: { ...process.env, AUTHENTICATOR_PUBLIC_ORIGIN: bad }, + }); + expect(rejected.exitCode, bad).not.toBe(0); + expect(rejected.stderr.toString(), bad).toContain("AUTHENTICATOR_PUBLIC_ORIGIN"); + } + const badPort = Bun.spawnSync(["bun", "-e", script], { env: { ...process.env, PORT: "99999" } }); + expect(badPort.exitCode).not.toBe(0); + }); + + test("uses allowlisted RP presentation and a same-origin server-managed return", () => { + expect(Object.keys(AUTHENTICATOR_RP_PRESENTATIONS_V0)).toEqual(["zoom_demo"]); + expect(AUTHENTICATOR_RP_PRESENTATIONS_V0.zoom_demo).toEqual({ + displayName: "Zoom", + iconAssetId: "zoom", + returnLabel: "Return to Zoom", + returnPath: "/returned", + }); + expect(Object.isFrozen(AUTHENTICATOR_RP_PRESENTATIONS_V0)).toBe(true); + expect(Object.isFrozen(AUTHENTICATOR_RP_PRESENTATIONS_V0.zoom_demo)).toBe(true); + }); + + test("freezes restrictive browser security headers", () => { + expect(AUTHENTICATOR_APP_SECURITY_HEADERS_V0["Content-Security-Policy"]).toContain( + "frame-ancestors 'none'", + ); + expect(AUTHENTICATOR_APP_SECURITY_HEADERS_V0["Content-Security-Policy"]).toContain( + "connect-src 'self'", + ); + expect(AUTHENTICATOR_APP_SECURITY_HEADERS_V0["Content-Security-Policy"]).toContain( + "script-src 'self' 'wasm-unsafe-eval'", + ); + expect(AUTHENTICATOR_APP_SECURITY_HEADERS_V0["Content-Security-Policy"]) + .not.toContain("'unsafe-eval'"); + expect(AUTHENTICATOR_APP_SECURITY_HEADERS_V0["Permissions-Policy"]).toBe( + "camera=(self), microphone=(), geolocation=()", + ); + expect(AUTHENTICATOR_APP_SECURITY_HEADERS_V0["Cache-Control"]).toBe("no-store"); + expect(Object.isFrozen(AUTHENTICATOR_APP_SECURITY_HEADERS_V0)).toBe(true); + }); +}); diff --git a/config/authenticator-app-v0.ts b/config/authenticator-app-v0.ts new file mode 100644 index 0000000..b6a39a7 --- /dev/null +++ b/config/authenticator-app-v0.ts @@ -0,0 +1,178 @@ +import { + SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, + SIMULATOR_UI_QUALITY_POLICY_V0, + type BiometricSimulationScenarioV0, + type IssuanceSimulationScenarioV0, +} from "../packages/contracts/src"; + +export const AUTHENTICATOR_APP_CONFIG_V0 = "authenticator_app_config_v0" as const; + +export const AUTHENTICATOR_APP_SECURITY_HEADERS_V0 = Object.freeze({ + "Cache-Control": "no-store", + "Content-Security-Policy": [ + "default-src 'self'", + "base-uri 'none'", + "connect-src 'self'", + "font-src 'self'", + "form-action 'none'", + "frame-ancestors 'none'", + "img-src 'self' blob:", + "media-src 'self' blob:", + "object-src 'none'", + "script-src 'self' 'wasm-unsafe-eval'", + "style-src 'self'", + ].join("; "), + "Cross-Origin-Opener-Policy": "same-origin", + "Cross-Origin-Resource-Policy": "same-origin", + "Permissions-Policy": "camera=(self), microphone=(), geolocation=()", + "Referrer-Policy": "no-referrer", + "X-Content-Type-Options": "nosniff", +}); + +export interface AuthenticatorRpPresentationV0 { + readonly displayName: "Zoom"; + readonly iconAssetId: "zoom"; + readonly returnLabel: "Return to Zoom"; + readonly returnPath: "/returned"; +} + +export const AUTHENTICATOR_RP_PRESENTATIONS_V0 = Object.freeze({ + zoom_demo: Object.freeze({ + displayName: "Zoom", + iconAssetId: "zoom", + returnLabel: "Return to Zoom", + returnPath: "/returned", + }), +}); + +export interface AuthenticatorAppConfigV0 { + readonly version: typeof AUTHENTICATOR_APP_CONFIG_V0; + readonly runtimeEnvironment: "staging"; + /** Bind address. `AUTHENTICATOR_HOST`; default `127.0.0.1`. Containers use `0.0.0.0`. */ + readonly host: string; + /** Listening port. `PORT` or `AUTHENTICATOR_PORT`; default `4173`. */ + readonly port: number; + /** Exact browser origin allowed to call the API. `AUTHENTICATOR_PUBLIC_ORIGIN`; default `http://127.0.0.1:`. */ + readonly publicOrigin: string; + /** Second exact origin for the local walkthrough. `AUTHENTICATOR_LOCAL_ORIGIN`; default `http://localhost:`. */ + readonly localWalkthroughOrigin: string; + /** Relying-party identifier bound into sessions: the public origin's hostname. */ + readonly rpId: string; + readonly gatewayEnabled: true; + readonly sessionTtlMs: 300_000; + readonly simulatorTimeoutMs: 5_000; + readonly maxRequestBodyBytes: 65_536; + readonly maxConcurrentOperations: 8; + readonly biometricSimulatorVersion: "cs5-simulated-biometric-v0"; + readonly biometricReceiptTtlMs: 60_000; + readonly biometricCacheEntries: 1_024; + readonly stagingCredentialTtlMs: 60_000; + readonly issuanceCacheEntries: 1_024; + readonly demoCompletionTtlMs: 60_000; + readonly purposeKeyIds: { + readonly biometricRequest: "cs5-biometric-request"; + readonly biometricReceipt: "cs5-biometric-receipt"; + readonly issuanceRequest: "cs5-issuance-request"; + readonly simulatedCredential: "cs5-simulated-credential"; + readonly demoCompletion: "cs5-demo-completion"; + }; + readonly allowedSyntheticFixtureIds: readonly ["fixture-neutral-v0"]; + readonly demoAccountId: "simulated-account-cs5"; + readonly demoAccountPublicMaterialDigestSha256: string; + readonly defaultBiometricScenario: BiometricSimulationScenarioV0; + readonly defaultIssuanceScenario: IssuanceSimulationScenarioV0; + readonly capturePolicy: typeof SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0; + readonly qualityPolicy: typeof SIMULATOR_UI_QUALITY_POLICY_V0; +} + +// Server binding and allowed origins come from the environment so the same +// build runs on loopback and behind an HTTPS host. Invalid values fail at +// startup instead of silently falling back. +// Read through globalThis so this module also loads in the browser-hosted +// static demo, where there is no `process`; there, every value falls back. +const ENV: Readonly> = + (globalThis as { process?: { env?: Record } }).process?.env ?? {}; + +function envValue(name: string): string | undefined { + const value = ENV[name]?.trim(); + return value === undefined || value === "" ? undefined : value; +} + +function envPort(): number { + const raw = envValue("PORT") ?? envValue("AUTHENTICATOR_PORT"); + if (raw === undefined) return 4173; + const port = Number(raw); + if (!Number.isInteger(port) || port < 1 || port > 65535) { + throw new TypeError(`authenticator_port_invalid: ${raw}`); + } + return port; +} + +function envOrigin(name: string, fallback: string): string { + const raw = envValue(name); + if (raw === undefined) return fallback; + let url: URL; + try { + url = new URL(raw); + } catch { + throw new TypeError(`${name}_invalid: ${raw}`); + } + if ( + (url.protocol !== "https:" && url.protocol !== "http:") || + url.pathname !== "/" || url.search !== "" || url.hash !== "" || + url.username !== "" || url.password !== "" + ) { + throw new TypeError(`${name}_must_be_a_bare_origin: ${raw}`); + } + return url.origin; +} + +const BINDING = (() => { + const port = envPort(); + const publicOrigin = envOrigin("AUTHENTICATOR_PUBLIC_ORIGIN", `http://127.0.0.1:${port}`); + return Object.freeze({ + host: envValue("AUTHENTICATOR_HOST") ?? "127.0.0.1", + port, + publicOrigin, + localWalkthroughOrigin: envOrigin("AUTHENTICATOR_LOCAL_ORIGIN", `http://localhost:${port}`), + rpId: new URL(publicOrigin).hostname, + }); +})(); + +export const AUTHENTICATOR_APP_CONFIG: AuthenticatorAppConfigV0 = Object.freeze({ + version: AUTHENTICATOR_APP_CONFIG_V0, + runtimeEnvironment: "staging", + host: BINDING.host, + port: BINDING.port, + publicOrigin: BINDING.publicOrigin, + localWalkthroughOrigin: BINDING.localWalkthroughOrigin, + rpId: BINDING.rpId, + gatewayEnabled: true, + sessionTtlMs: 300_000, + simulatorTimeoutMs: 5_000, + maxRequestBodyBytes: 65_536, + maxConcurrentOperations: 8, + biometricSimulatorVersion: "cs5-simulated-biometric-v0", + biometricReceiptTtlMs: 60_000, + biometricCacheEntries: 1_024, + stagingCredentialTtlMs: 60_000, + issuanceCacheEntries: 1_024, + demoCompletionTtlMs: 60_000, + purposeKeyIds: Object.freeze({ + biometricRequest: "cs5-biometric-request", + biometricReceipt: "cs5-biometric-receipt", + issuanceRequest: "cs5-issuance-request", + simulatedCredential: "cs5-simulated-credential", + demoCompletion: "cs5-demo-completion", + }), + allowedSyntheticFixtureIds: Object.freeze(["fixture-neutral-v0"] as const), + demoAccountId: "simulated-account-cs5", + demoAccountPublicMaterialDigestSha256: "0".repeat(64), + defaultBiometricScenario: "happy_path", + defaultIssuanceScenario: "issue_success", + capturePolicy: SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, + qualityPolicy: SIMULATOR_UI_QUALITY_POLICY_V0, +}); + +// The default scenarios are server-owned staging configuration. Browser input, +// query parameters, and client-quality results cannot change them. diff --git a/eslint.config.mjs b/eslint.config.mjs index cb9b362..5ef7f5a 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,10 +1,117 @@ -import nextConfig from 'eslint-config-next' +import js from "@eslint/js"; +import jsxA11y from "eslint-plugin-jsx-a11y"; +import reactHooks from "eslint-plugin-react-hooks"; +import globals from "globals"; +import tseslint from "typescript-eslint"; -const eslintConfig = [ - ...nextConfig, - { - ignores: ['node_modules/**', '.next/**', 'out/**', 'build/**', 'next-env.d.ts'], - }, -] - -export default eslintConfig +export default tseslint.config( + { + ignores: [ + "**/dist/**", + "**/dist-server/**", + "**/dist-static/**", + "**/node_modules/**", + ".artifacts/**", + ".runtime/**", + "playwright-report/**", + "test-results/**", + "**/.wrangler/**", + ], + }, + js.configs.recommended, + ...tseslint.configs.recommended, + { + files: ["**/*.{js,mjs,ts,tsx}"], + languageOptions: { + parserOptions: { + ecmaFeatures: { jsx: true }, + }, + }, + rules: { + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-unused-vars": "off", + }, + }, + { + files: ["apps/authenticator/**/*.{ts,tsx}"], + plugins: { + "jsx-a11y": jsxA11y, + "react-hooks": reactHooks, + }, + rules: { + ...jsxA11y.flatConfigs.recommended.rules, + ...reactHooks.configs.flat.recommended.rules, + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + caughtErrorsIgnorePattern: "^_", + varsIgnorePattern: "^_", + }, + ], + "no-console": "error", + }, + }, + { + files: ["apps/authenticator/src/**/*.{ts,tsx}"], + ignores: ["apps/authenticator/src/server/**"], + languageOptions: { + globals: globals.browser, + }, + rules: { + "no-restricted-globals": [ + "error", + "Bun", + "Buffer", + "process", + "localStorage", + "sessionStorage", + "indexedDB", + "caches", + ], + "no-restricted-properties": [ + "error", + { object: "window", property: "localStorage", message: "Browser persistence is forbidden." }, + { object: "window", property: "sessionStorage", message: "Browser persistence is forbidden." }, + { object: "window", property: "indexedDB", message: "Browser persistence is forbidden." }, + { object: "window", property: "caches", message: "Browser persistence is forbidden." }, + { object: "document", property: "cookie", message: "Browser persistence is forbidden." }, + { object: "navigator", property: "storage", message: "Browser persistence is forbidden." }, + { object: "navigator", property: "sendBeacon", message: "Beacon transport is forbidden." }, + ], + }, + }, + { + files: ["apps/authenticator/src/wallet/session.ts"], + rules: { + "no-restricted-properties": ["error", + { object: "document", property: "cookie" }, + { object: "navigator", property: "sendBeacon" }, + ], + }, + }, + { + files: [ + "apps/authenticator/src/server/**/*.{ts,tsx}", + "apps/authenticator/src/**/*.server.{ts,tsx}", + ], + languageOptions: { + globals: { + ...globals.node, + Bun: "readonly", + }, + }, + rules: { + "no-restricted-globals": [ + "error", + "window", + "document", + "navigator", + "localStorage", + "sessionStorage", + "indexedDB", + ], + }, + }, +); diff --git a/next.config.ts b/next.config.ts deleted file mode 100644 index c02b914..0000000 --- a/next.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { NextConfig } from 'next' - -const nextConfig: NextConfig = { - /* config options here */ -} - -export default nextConfig diff --git a/package.json b/package.json index 256818a..14e749a 100644 --- a/package.json +++ b/package.json @@ -1,55 +1,58 @@ { - "name": "world-id-web-authenticator", - "version": "0.1.0", - "private": true, - "engines": { - "node": ">=24" - }, - "packageManager": "bun@1.3.5", - "scripts": { - "dev": "next dev --turbopack", - "build": "next build --turbopack", - "start": "next start", - "lint": "eslint", - "typecheck": "tsc --noEmit", - "format": "prettier --write .", - "format:check": "prettier --check ." - }, - "dependencies": { - "@radix-ui/react-dropdown-menu": "^2.1.16", - "@types/qrcode": "^1.5.5", - "clsx": "^2.1.1", - "motion": "^12.23.22", - "next": "16.1.1", - "qrcode": "^1.5.4", - "react": "19.2.3", - "react-dom": "19.2.3", - "tailwind-merge": "^3.3.1" - }, - "devDependencies": { - "@eslint/eslintrc": "^3", - "@tailwindcss/postcss": "^4", - "@types/node": "^20", - "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", - "eslint": "^9", - "eslint-config-next": "16.1.1", - "prettier": "^3.6.2", - "prettier-plugin-sort-imports-desc": "^1.0.0", - "tailwindcss": "^4", - "typescript": "^5" - }, - "prettier": { - "semi": false, - "tabWidth": 4, - "useTabs": true, - "printWidth": 120, - "singleQuote": true, - "trailingComma": "es5", - "arrowParens": "avoid", - "bracketSpacing": true, - "plugins": [ - "prettier-plugin-sort-imports-desc" - ] - } + "name": "@worldcoin/web-authenticator", + "private": true, + "type": "module", + "packageManager": "bun@1.4.2", + "workspaces": [ + "apps/*", + "services/*", + "packages/*" + ], + "scripts": { + "build": "bun run build:authenticator && bun run build:authenticator-server", + "build:authenticator": "vite build --config vite.config.ts", + "build:authenticator-server": "bun build apps/authenticator/src/server/main.ts --target=bun --outdir apps/authenticator/dist-server", + "build:static-demo": "vite build --config vite.static-demo.config.ts", + "dev:authenticator": "concurrently -k -n client,server \"vite build --watch --config vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", + "lint": "eslint -c eslint.config.mjs . --max-warnings=0", + "preview:static-demo": "vite preview --config vite.static-demo.config.ts", + "start:authenticator": "bun apps/authenticator/src/server/main.ts", + "start:authenticator:tunnel": "bun --env-file=.env.tunnel apps/authenticator/src/server/main.ts", + "test": "bun test .", + "test:authenticator": "bun test apps/authenticator/test", + "test:browser": "bun run build:authenticator && playwright test -c playwright.integration.config.ts", + "test:contracts": "bun test packages/contracts/test", + "test:integration": "bun test tests/integration", + "typecheck": "tsc -p tsconfig.client.json --noEmit && tsc -p tsconfig.server.json --noEmit && tsc -p tsconfig.test.json --noEmit && tsc -p tsconfig.tools.json --noEmit", + "dev": "concurrently -k -n client,server \"vite build --watch --config vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", + "start": "bun apps/authenticator/src/server/main.ts" + }, + "dependencies": { + "@mediapipe/tasks-vision": "1.0.1", + "react": "19.2.8", + "react-dom": "19.2.8", + "@worldcoin/walletkit-web": "0.27.1" + }, + "devDependencies": { + "@eslint/js": "9.39.4", + "@happy-dom/global-registrator": "20.13.2", + "@playwright/test": "1.62.1", + "@testing-library/dom": "10.4.1", + "@testing-library/react": "16.3.3", + "@testing-library/user-event": "14.6.7", + "@types/bun": "1.3.11", + "@types/node": "20.19.25", + "@types/react": "19.2.18", + "@types/react-dom": "19.2.5", + "@vitejs/plugin-react": "6.1.1", + "axe-core": "4.13.0", + "concurrently": "9.2.1", + "eslint": "9.39.4", + "eslint-plugin-jsx-a11y": "6.10.2", + "eslint-plugin-react-hooks": "7.1.1", + "globals": "16.4.0", + "typescript": "5.9.3", + "typescript-eslint": "8.68.0", + "vite": "8.2.2" + } } diff --git a/packages/biometric-verification-port/README.md b/packages/biometric-verification-port/README.md new file mode 100644 index 0000000..023c244 --- /dev/null +++ b/packages/biometric-verification-port/README.md @@ -0,0 +1,5 @@ +# Biometric verification port + +This package exposes the application port for the explicit staging simulator. The invocation keeps the untrusted wire request separate from server-owned expected bindings, including the scenario. Results are either a signed `SimulationReceiptV0` or a stable, detail-free error code. + +The port cannot carry camera bytes, browser spoof scores, secret key material, or a future real-service result. diff --git a/packages/biometric-verification-port/package.json b/packages/biometric-verification-port/package.json new file mode 100644 index 0000000..792a90d --- /dev/null +++ b/packages/biometric-verification-port/package.json @@ -0,0 +1,13 @@ +{ + "name": "@world-id/web-authenticator-biometric-verification-port", + "private": true, + "version": "0.0.0", + "type": "module", + "exports": { + ".": "./src/index.ts" + }, + "scripts": { + "test": "bun test test", + "lint": "eslint ." + } +} diff --git a/packages/biometric-verification-port/src/index.ts b/packages/biometric-verification-port/src/index.ts new file mode 100644 index 0000000..07bb7b7 --- /dev/null +++ b/packages/biometric-verification-port/src/index.ts @@ -0,0 +1,39 @@ +import type { + BiometricSimulationRequestV0, + ExpectedBiometricSimulationRequestV0, + SimulationCapturePolicyV0, + SimulationReceiptV0, +} from "../../contracts/src"; + +export const BIOMETRIC_SIMULATION_ERROR_V0 = "biometric_simulation_error_v0" as const; +export const SIMULATION_RECEIPT_READY_V0 = "simulation_receipt_ready_v0" as const; + +export type BiometricSimulationErrorReasonV0 = + | "invalid_request" + | "idempotency_conflict" + | "request_replay" + | "service_not_ready"; + +export type BiometricVerificationResultV0 = + | { + readonly kind: typeof SIMULATION_RECEIPT_READY_V0; + readonly receipt: SimulationReceiptV0; + } + | { + readonly kind: typeof BIOMETRIC_SIMULATION_ERROR_V0; + readonly reasonCode: BiometricSimulationErrorReasonV0; + }; + +export interface BiometricVerificationInvocationV0 { + readonly request: unknown; + readonly expected: ExpectedBiometricSimulationRequestV0; + readonly capturePolicy: SimulationCapturePolicyV0; +} + +export interface BiometricVerificationPortV0 { + verify(invocation: BiometricVerificationInvocationV0): Promise; + readiness(): Readonly<{ ready: boolean; reasonCode?: "service_not_ready" }>; +} + +// The server supplies `expected`, including the scenario. A browser request is never authoritative. +export type { BiometricSimulationRequestV0 }; diff --git a/packages/browser-admission/README.md b/packages/browser-admission/README.md new file mode 100644 index 0000000..967ed28 --- /dev/null +++ b/packages/browser-admission/README.md @@ -0,0 +1,35 @@ +# Browser admission + +This package implements the frozen iPhone browser-admission policy for the clean-start +simulator milestone. It is a decision layer only: it never starts a WebAuthn ceremony, +evaluates PRF, or opens a camera. + +## Frozen behavior + +| Device / context | Outcome | May enter sensitive flow | +|---|---|---:| +| iPhone, iOS 18+, Safari normal top-level tab | `eligible_candidate` | yes, subject to the real ceremony | +| iPhone, iOS 18+, Chrome normal top-level tab | `eligible_candidate` | yes, subject to the real ceremony | +| iPhone, iOS 15–17, Safari or Chrome | `ios_update_required` | no | +| Confirmed/probable in-app browser or WKWebView | `embedded_browser_handoff` | no | +| Any framed document | `context_not_top_level` | no | +| Insecure context | `insecure_context` | no | +| Invalid origin, RP ID, Permissions Policy, signed handle, callback, or session | `origin_or_rp_invalid` | no | +| Explicitly unavailable platform UV | `uv_unavailable` | no | +| Private, installed/PWA, or unknown context | `private_or_unknown_context` | no | +| Non-iPhone, unsupported iOS, or unsupported browser | `unsupported` | no | + +Safari and Chrome stay separate evidence cells. User-agent classification is coarse and +never establishes PRF, camera, provider, engine, or security capability. Missing optional +probes remain `unknown`; a candidate becomes enrolled only after downstream ceremonies. + +`createExternalBrowserHandoffV1` accepts only server-validated opaque transaction and +return-target handles. It creates a same-origin HTTPS continuation URL and marks the old +challenge for invalidation and reissue after navigation. + +## Physical-device evidence gap + +Synthetic tests cover policy transitions only. Target-device evidence is still required +for iOS 18/current Safari and Chrome, private tabs, installed/PWA contexts, representative +in-app browsers/WKWebViews, managed restrictions, provider variants, and regional or +alternative-engine builds. diff --git a/packages/browser-admission/package.json b/packages/browser-admission/package.json new file mode 100644 index 0000000..f9caa32 --- /dev/null +++ b/packages/browser-admission/package.json @@ -0,0 +1,12 @@ +{ + "name": "@world-id/web-authenticator-browser-admission", + "private": true, + "version": "0.0.0", + "type": "module", + "exports": { + ".": "./src/index.ts" + }, + "scripts": { + "test": "bun test test" + } +} diff --git a/packages/browser-admission/src/admission.ts b/packages/browser-admission/src/admission.ts new file mode 100644 index 0000000..6dd6a45 --- /dev/null +++ b/packages/browser-admission/src/admission.ts @@ -0,0 +1,234 @@ +import { + PRF_INPUT_V1_SHA256, + WEB_AUTHN_PRF_AUTHENTICATOR_V1, + type WebAuthnPrfAuthenticatorPolicyV1, +} from "../../contracts/src"; +import { iosVersionBandV1 } from "./platform"; +import { + BROWSER_ADMISSION_V1, + type BrowserAdmissionDecisionV1, + type BrowserAdmissionInputV1, + type BrowserAdmissionOutcomeV1, + type BrowserAdmissionReasonV1, + type TrustedEvidenceDimensionsV1, +} from "./types"; + +const UNKNOWN_EVIDENCE: TrustedEvidenceDimensionsV1 = { + engine: "unknown", + region: "unknown", + provider: "unknown", + source: "none", +}; + +const SAFE_INTERNAL_ERROR_DECISION_V1: BrowserAdmissionDecisionV1 = Object.freeze({ + version: BROWSER_ADMISSION_V1, + outcome: "internal_error", + reason: "safe_internal_error", + mayStartSensitiveFlow: false, + browser: "unknown", + iosVersionBand: "unknown", + context: "unknown", + engine: "unknown", + region: "unknown", + provider: "unknown", + capabilities: Object.freeze({ + webAuthnApi: "unknown", + platformUv: "unknown", + clientCapabilitiesApi: "unknown", + conditionalMediation: "unknown", + mediaApi: "unknown", + visibility: "unknown", + }), +}); + +function evidenceOrUnknown( + evidence: TrustedEvidenceDimensionsV1 | undefined, +): TrustedEvidenceDimensionsV1 { + if (!evidence || evidence.source === "none") return UNKNOWN_EVIDENCE; + return evidence; +} + +function decision( + input: BrowserAdmissionInputV1, + outcome: BrowserAdmissionOutcomeV1, + reason: BrowserAdmissionReasonV1, +): BrowserAdmissionDecisionV1 { + const evidence = evidenceOrUnknown(input.evidence); + return { + version: BROWSER_ADMISSION_V1, + outcome, + reason, + mayStartSensitiveFlow: outcome === "eligible_candidate", + browser: input.platform.browser, + iosVersionBand: iosVersionBandV1(input.platform.iosMajor), + context: input.browserContext, + engine: evidence.engine, + region: evidence.region, + provider: evidence.provider, + capabilities: { + webAuthnApi: input.capabilities.webAuthnApi, + platformUv: input.capabilities.platformUv, + clientCapabilitiesApi: input.capabilities.clientCapabilitiesApi, + conditionalMediation: input.capabilities.conditionalMediation, + mediaApi: input.capabilities.mediaApi, + visibility: input.capabilities.visibility, + }, + }; +} + +function canonicalHttpsOrigin(value: string): URL | null { + try { + const parsed = new URL(value); + if ( + parsed.protocol !== "https:" || + parsed.username !== "" || + parsed.password !== "" || + parsed.origin !== value + ) { + return null; + } + return parsed; + } catch { + return null; + } +} + +function rpIdMatchesHostname(rpId: string, hostname: string): boolean { + const normalized = rpId.toLowerCase(); + if ( + normalized !== rpId || + normalized.length === 0 || + normalized.startsWith(".") || + normalized.endsWith(".") || + normalized.includes(":") + ) { + return false; + } + return hostname === normalized || hostname.endsWith(`.${normalized}`); +} + +function invalidRequestContext(input: BrowserAdmissionInputV1): boolean { + return ( + input.requestContext.transactionHandle !== "validated" || + input.requestContext.returnTarget !== "validated" || + input.requestContext.session !== "approved" || + input.requestContext.unexpectedQueryFields + ); +} + +function hasFrozenAuthenticatorPolicy( + policy: WebAuthnPrfAuthenticatorPolicyV1, +): boolean { + return ( + policy.version === WEB_AUTHN_PRF_AUTHENTICATOR_V1 && + policy.userVerification === "required" && + policy.prfInputSha256 === PRF_INPUT_V1_SHA256 && + policy.prfOutputMapping === "verbatim_32_byte_first_result_to_world_id_4_signer_seed" && + policy.secretLifecycle === "browser_memory_only" && + Array.isArray(policy.allowedOrigins) + ); +} + +export function admitBrowserV1( + policy: WebAuthnPrfAuthenticatorPolicyV1, + input: BrowserAdmissionInputV1, +): BrowserAdmissionDecisionV1 { + try { + if (!hasFrozenAuthenticatorPolicy(policy)) { + return decision(input, "origin_or_rp_invalid", "authenticator_policy_invalid"); + } + if (!input.capabilities.secureContext) { + return decision(input, "insecure_context", "secure_context_required"); + } + + const actualOrigin = canonicalHttpsOrigin(input.actualOrigin); + if (!actualOrigin) return decision(input, "origin_or_rp_invalid", "origin_invalid"); + if (!policy.allowedOrigins.includes(input.actualOrigin)) { + return decision(input, "origin_or_rp_invalid", "origin_not_allowed"); + } + if (!rpIdMatchesHostname(policy.rpId, actualOrigin.hostname)) { + return decision(input, "origin_or_rp_invalid", "rp_id_invalid"); + } + if (input.permissionsPolicy !== "allowed") { + return decision( + input, + "origin_or_rp_invalid", + "permissions_policy_blocked_or_unknown", + ); + } + if (invalidRequestContext(input)) { + return decision(input, "origin_or_rp_invalid", "request_context_invalid"); + } + + if (!input.isTopLevel || input.frameOrigin === "cross_origin") { + return decision( + input, + "context_not_top_level", + input.frameOrigin === "cross_origin" ? "cross_origin_frame" : "document_is_framed", + ); + } + if ( + input.browserContext === "embedded" || + input.embeddedEvidence === "confirmed" || + input.embeddedEvidence === "probable" + ) { + return decision( + input, + "embedded_browser_handoff", + "embedded_context_requires_handoff", + ); + } + if (input.interrupted) { + return decision(input, "interrupted", "caller_interrupted"); + } + if (input.capabilities.visibility !== "visible") { + return decision(input, "interrupted", "document_not_visible"); + } + if (input.platform.device !== "iphone") { + return decision(input, "unsupported", "iphone_required"); + } + if (input.platform.browser !== "safari" && input.platform.browser !== "chrome") { + return decision(input, "unsupported", "supported_browser_required"); + } + + if (input.browserContext === "private_or_unknown") { + return decision( + input, + "private_or_unknown_context", + "private_context_not_admitted", + ); + } + if (input.browserContext === "installed_pwa") { + return decision( + input, + "private_or_unknown_context", + "installed_context_not_admitted", + ); + } + if (input.browserContext !== "normal_tab") { + return decision(input, "private_or_unknown_context", "context_unknown"); + } + + const versionBand = iosVersionBandV1(input.platform.iosMajor); + if (versionBand === "ios_15_17") { + return decision(input, "ios_update_required", "ios_version_requires_update"); + } + if (versionBand !== "ios_18_plus") { + return decision(input, "unsupported", "ios_version_unknown_or_unsupported"); + } + + if (input.capabilities.webAuthnApi === "unavailable") { + return decision(input, "unsupported", "webauthn_api_unavailable"); + } + if (input.capabilities.platformUv === "unavailable") { + return decision(input, "uv_unavailable", "platform_uv_unavailable"); + } + if (input.capabilities.mediaApi === "unavailable") { + return decision(input, "unsupported", "media_api_unavailable"); + } + + return decision(input, "eligible_candidate", "candidate_only_ceremony_required"); + } catch { + return SAFE_INTERNAL_ERROR_DECISION_V1; + } +} diff --git a/packages/browser-admission/src/handoff.ts b/packages/browser-admission/src/handoff.ts new file mode 100644 index 0000000..6654c01 --- /dev/null +++ b/packages/browser-admission/src/handoff.ts @@ -0,0 +1,48 @@ +import { + BROWSER_ADMISSION_V1, + type ExternalBrowserHandoffV1, + type ValidatedHandoffContextV1, +} from "./types"; + +const OPAQUE_HANDLE_PATTERN = /^[A-Za-z0-9_-]{16,512}$/; + +function requireCanonicalHttpsOrigin(value: string): URL { + const parsed = new URL(value); + if ( + parsed.protocol !== "https:" || + parsed.username !== "" || + parsed.password !== "" || + parsed.origin !== value + ) { + throw new TypeError("A canonical HTTPS handoff origin is required"); + } + return parsed; +} + +function requireOpaqueHandle(value: string): void { + if (!OPAQUE_HANDLE_PATTERN.test(value)) { + throw new TypeError("A valid opaque server handle is required"); + } +} + +export function createExternalBrowserHandoffV1( + authenticatorOrigin: string, + context: ValidatedHandoffContextV1, +): ExternalBrowserHandoffV1 { + if (context.validation !== "server_validated") { + throw new TypeError("Server-validated handoff context is required"); + } + requireOpaqueHandle(context.transactionHandle); + requireOpaqueHandle(context.returnTargetHandle); + + const href = new URL("/continue", requireCanonicalHttpsOrigin(authenticatorOrigin)); + href.searchParams.set("transaction", context.transactionHandle); + href.searchParams.set("return_target", context.returnTargetHandle); + + return { + version: BROWSER_ADMISSION_V1, + href: href.href, + carries: "validated_opaque_handles_only", + challengeAction: "invalidate_and_reissue_after_navigation", + }; +} diff --git a/packages/browser-admission/src/index.ts b/packages/browser-admission/src/index.ts new file mode 100644 index 0000000..244b338 --- /dev/null +++ b/packages/browser-admission/src/index.ts @@ -0,0 +1,5 @@ +export * from "./admission"; +export * from "./handoff"; +export * from "./platform"; +export * from "./probes"; +export * from "./types"; diff --git a/packages/browser-admission/src/platform.ts b/packages/browser-admission/src/platform.ts new file mode 100644 index 0000000..380c9b1 --- /dev/null +++ b/packages/browser-admission/src/platform.ts @@ -0,0 +1,40 @@ +import type { + BrowserFamilyV1, + DetectedIPhonePlatformV1, + IosVersionBandV1, +} from "./types"; + +const IOS_VERSION_PATTERN = /(?:CPU iPhone OS|iPhone OS) (\d+)(?:[_.]\d+)?/; + +export function classifyIPhoneUserAgentV1(userAgent: string): DetectedIPhonePlatformV1 { + if (!/\biPhone\b/.test(userAgent)) { + return { device: userAgent.length === 0 ? "unknown" : "other", iosMajor: null, browser: "unknown" }; + } + + const versionMatch = IOS_VERSION_PATTERN.exec(userAgent); + const parsedMajor = versionMatch ? Number.parseInt(versionMatch[1] ?? "", 10) : Number.NaN; + const iosMajor = Number.isInteger(parsedMajor) && parsedMajor > 0 ? parsedMajor : null; + + let browser: BrowserFamilyV1 = "unknown"; + if (/\bCriOS\//.test(userAgent)) { + browser = "chrome"; + } else if ( + /\bAppleWebKit\//.test(userAgent) && + /\bMobile\//.test(userAgent) && + /\bSafari\//.test(userAgent) && + !/\b(?:FxiOS|EdgiOS|OPiOS)\//.test(userAgent) + ) { + browser = "safari"; + } else if (/\b(?:FxiOS|EdgiOS|OPiOS)\//.test(userAgent)) { + browser = "other"; + } + + return { device: "iphone", iosMajor, browser }; +} + +export function iosVersionBandV1(iosMajor: number | null): IosVersionBandV1 { + if (iosMajor === null) return "unknown"; + if (iosMajor >= 15 && iosMajor <= 17) return "ios_15_17"; + if (iosMajor >= 18) return "ios_18_plus"; + return "other"; +} diff --git a/packages/browser-admission/src/probes.ts b/packages/browser-admission/src/probes.ts new file mode 100644 index 0000000..5fa2cd5 --- /dev/null +++ b/packages/browser-admission/src/probes.ts @@ -0,0 +1,56 @@ +import type { + AdvisoryCapabilitiesV1, + AvailabilityV1, + BrowserProbeRuntimeV1, + VisibilityV1, +} from "./types"; + +function availability(value: boolean): AvailabilityV1 { + return value ? "available" : "unavailable"; +} + +function visibility(value: string | undefined): VisibilityV1 { + return value === "visible" || value === "hidden" || value === "prerender" ? value : "unknown"; +} + +async function safeBooleanProbe( + probe: (() => Promise) | undefined, +): Promise { + if (!probe) return "unknown"; + try { + return availability(await probe()); + } catch { + return "unknown"; + } +} + +export async function collectAdvisoryCapabilitiesV1( + runtime: BrowserProbeRuntimeV1, +): Promise { + const publicKeyCredential = runtime.publicKeyCredential; + const webAuthnApi: AvailabilityV1 = publicKeyCredential ? "available" : "unavailable"; + + let clientCapabilitiesApi: AvailabilityV1 = "unknown"; + if (publicKeyCredential?.getClientCapabilities) { + try { + await publicKeyCredential.getClientCapabilities(); + clientCapabilitiesApi = "available"; + } catch { + clientCapabilitiesApi = "unknown"; + } + } + + return { + secureContext: runtime.isSecureContext, + webAuthnApi, + platformUv: await safeBooleanProbe( + publicKeyCredential?.isUserVerifyingPlatformAuthenticatorAvailable, + ), + clientCapabilitiesApi, + conditionalMediation: await safeBooleanProbe( + publicKeyCredential?.isConditionalMediationAvailable, + ), + mediaApi: availability(typeof runtime.mediaDevices?.getUserMedia === "function"), + visibility: visibility(runtime.visibilityState), + }; +} diff --git a/packages/browser-admission/src/types.ts b/packages/browser-admission/src/types.ts new file mode 100644 index 0000000..5f0a5fc --- /dev/null +++ b/packages/browser-admission/src/types.ts @@ -0,0 +1,156 @@ +export const BROWSER_ADMISSION_V1 = "browser_admission_v1" as const; + +export const BROWSER_ADMISSION_OUTCOMES_V1 = [ + "eligible_candidate", + "ios_update_required", + "embedded_browser_handoff", + "context_not_top_level", + "insecure_context", + "origin_or_rp_invalid", + "uv_unavailable", + "private_or_unknown_context", + "interrupted", + "unsupported", + "internal_error", +] as const; + +export type BrowserAdmissionOutcomeV1 = (typeof BROWSER_ADMISSION_OUTCOMES_V1)[number]; + +export type BrowserFamilyV1 = "safari" | "chrome" | "other" | "unknown"; +export type DeviceClassV1 = "iphone" | "other" | "unknown"; +export type IosVersionBandV1 = "ios_15_17" | "ios_18_plus" | "other" | "unknown"; +export type BrowserContextKindV1 = + | "normal_tab" + | "private_or_unknown" + | "installed_pwa" + | "embedded" + | "unknown"; +export type EmbeddedEvidenceV1 = "confirmed" | "probable" | "none" | "unknown"; +export type AvailabilityV1 = "available" | "unavailable" | "unknown"; +export type VisibilityV1 = "visible" | "hidden" | "prerender" | "unknown"; +export type EngineClassV1 = "webkit_family" | "alternative_engine_confirmed" | "unknown"; +export type RegionClassV1 = "eu" | "japan" | "other" | "unknown"; +export type ProviderClassV1 = + | "apple_passwords" + | "google_password_manager" + | "third_party" + | "unknown"; + +export type BrowserAdmissionReasonV1 = + | "candidate_only_ceremony_required" + | "ios_version_requires_update" + | "embedded_context_requires_handoff" + | "document_is_framed" + | "cross_origin_frame" + | "secure_context_required" + | "origin_invalid" + | "origin_not_allowed" + | "rp_id_invalid" + | "authenticator_policy_invalid" + | "permissions_policy_blocked_or_unknown" + | "request_context_invalid" + | "platform_uv_unavailable" + | "private_context_not_admitted" + | "installed_context_not_admitted" + | "context_unknown" + | "document_not_visible" + | "iphone_required" + | "supported_browser_required" + | "ios_version_unknown_or_unsupported" + | "webauthn_api_unavailable" + | "media_api_unavailable" + | "caller_interrupted" + | "safe_internal_error"; + +export interface DetectedIPhonePlatformV1 { + readonly device: DeviceClassV1; + readonly iosMajor: number | null; + readonly browser: BrowserFamilyV1; +} + +export interface AdvisoryCapabilitiesV1 { + readonly secureContext: boolean; + readonly webAuthnApi: AvailabilityV1; + readonly platformUv: AvailabilityV1; + readonly clientCapabilitiesApi: AvailabilityV1; + readonly conditionalMediation: AvailabilityV1; + readonly mediaApi: AvailabilityV1; + readonly visibility: VisibilityV1; +} + +export interface TrustedEvidenceDimensionsV1 { + readonly engine: EngineClassV1; + readonly region: RegionClassV1; + readonly provider: ProviderClassV1; + readonly source: "trusted_platform_api" | "device_lab_confirmed" | "none"; +} + +export interface RequestContextStatusV1 { + readonly transactionHandle: "validated" | "missing" | "invalid"; + readonly returnTarget: "validated" | "missing" | "invalid"; + readonly session: "approved" | "missing" | "invalid"; + readonly unexpectedQueryFields: boolean; +} + +export interface BrowserAdmissionInputV1 { + readonly actualOrigin: string; + readonly isTopLevel: boolean; + readonly frameOrigin: "same_origin" | "cross_origin" | "unknown"; + readonly permissionsPolicy: "allowed" | "blocked" | "unknown"; + readonly requestContext: RequestContextStatusV1; + readonly platform: DetectedIPhonePlatformV1; + readonly browserContext: BrowserContextKindV1; + readonly embeddedEvidence: EmbeddedEvidenceV1; + readonly capabilities: AdvisoryCapabilitiesV1; + readonly evidence?: TrustedEvidenceDimensionsV1; + readonly interrupted?: boolean; +} + +export interface BrowserAdmissionCapabilitySummaryV1 { + readonly webAuthnApi: AvailabilityV1; + readonly platformUv: AvailabilityV1; + readonly clientCapabilitiesApi: AvailabilityV1; + readonly conditionalMediation: AvailabilityV1; + readonly mediaApi: AvailabilityV1; + readonly visibility: VisibilityV1; +} + +export interface BrowserAdmissionDecisionV1 { + readonly version: typeof BROWSER_ADMISSION_V1; + readonly outcome: BrowserAdmissionOutcomeV1; + readonly reason: BrowserAdmissionReasonV1; + readonly mayStartSensitiveFlow: boolean; + readonly browser: BrowserFamilyV1; + readonly iosVersionBand: IosVersionBandV1; + readonly context: BrowserContextKindV1; + readonly engine: EngineClassV1; + readonly region: RegionClassV1; + readonly provider: ProviderClassV1; + readonly capabilities: BrowserAdmissionCapabilitySummaryV1; +} + +export interface BrowserProbeRuntimeV1 { + readonly isSecureContext: boolean; + readonly visibilityState?: string; + readonly publicKeyCredential?: { + readonly isUserVerifyingPlatformAuthenticatorAvailable?: () => Promise; + readonly getClientCapabilities?: () => Promise>>; + readonly isConditionalMediationAvailable?: () => Promise; + }; + readonly mediaDevices?: { + readonly getUserMedia?: unknown; + }; +} + +export interface ValidatedHandoffContextV1 { + readonly validation: "server_validated"; + readonly transactionHandle: string; + readonly returnTargetHandle: string; +} + +export interface ExternalBrowserHandoffV1 { + readonly version: typeof BROWSER_ADMISSION_V1; + readonly href: string; + readonly carries: "validated_opaque_handles_only"; + readonly challengeAction: "invalidate_and_reissue_after_navigation"; +} diff --git a/packages/browser-admission/test/browser-admission.test.ts b/packages/browser-admission/test/browser-admission.test.ts new file mode 100644 index 0000000..ddffdd0 --- /dev/null +++ b/packages/browser-admission/test/browser-admission.test.ts @@ -0,0 +1,449 @@ +import { describe, expect, test } from "bun:test"; +import { + admitBrowserV1, + BROWSER_ADMISSION_OUTCOMES_V1, + classifyIPhoneUserAgentV1, + collectAdvisoryCapabilitiesV1, + createExternalBrowserHandoffV1, + type BrowserAdmissionInputV1, +} from "../src"; +import { + PRF_INPUT_V1_SHA256, + WEB_AUTHN_PRF_AUTHENTICATOR_V1, + type WebAuthnPrfAuthenticatorPolicyV1, +} from "../../contracts/src"; + +const policy: WebAuthnPrfAuthenticatorPolicyV1 = { + version: WEB_AUTHN_PRF_AUTHENTICATOR_V1, + rpId: "auth.example.test", + allowedOrigins: ["https://auth.example.test"], + userVerification: "required", + prfInputSha256: PRF_INPUT_V1_SHA256, + prfOutputMapping: "verbatim_32_byte_first_result_to_world_id_4_signer_seed", + secretLifecycle: "browser_memory_only", +}; + +function input( + overrides: Partial = {}, +): BrowserAdmissionInputV1 { + return { + actualOrigin: "https://auth.example.test", + isTopLevel: true, + frameOrigin: "same_origin", + permissionsPolicy: "allowed", + requestContext: { + transactionHandle: "validated", + returnTarget: "validated", + session: "approved", + unexpectedQueryFields: false, + }, + platform: { device: "iphone", iosMajor: 18, browser: "safari" }, + browserContext: "normal_tab", + embeddedEvidence: "none", + capabilities: { + secureContext: true, + webAuthnApi: "available", + platformUv: "available", + clientCapabilitiesApi: "unknown", + conditionalMediation: "unknown", + mediaApi: "available", + visibility: "visible", + }, + ...overrides, + }; +} + +const safeInternalError = { + version: "browser_admission_v1", + outcome: "internal_error", + reason: "safe_internal_error", + mayStartSensitiveFlow: false, + browser: "unknown", + iosVersionBand: "unknown", + context: "unknown", + engine: "unknown", + region: "unknown", + provider: "unknown", + capabilities: { + webAuthnApi: "unknown", + platformUv: "unknown", + clientCapabilitiesApi: "unknown", + conditionalMediation: "unknown", + mediaApi: "unknown", + visibility: "unknown", + }, +} as const; + +describe("frozen iPhone policy", () => { + test("exports no legacy iOS route outside the frozen update-required policy", () => { + expect(BROWSER_ADMISSION_OUTCOMES_V1).not.toContain("legacy_ios_route_required"); + }); + + for (const iosMajor of [15, 16, 17]) { + for (const browser of ["safari", "chrome"] as const) { + test(`iOS ${iosMajor} ${browser} requires an update and cannot proceed`, () => { + const result = admitBrowserV1( + policy, + input({ platform: { device: "iphone", iosMajor, browser } }), + ); + expect(result).toMatchObject({ + outcome: "ios_update_required", + reason: "ios_version_requires_update", + mayStartSensitiveFlow: false, + browser, + iosVersionBand: "ios_15_17", + }); + }); + } + } + + for (const iosMajor of [18, 26]) { + test(`keeps iOS ${iosMajor} Safari and Chrome as distinct candidate cells`, () => { + const safari = admitBrowserV1( + policy, + input({ platform: { device: "iphone", iosMajor, browser: "safari" } }), + ); + const chrome = admitBrowserV1( + policy, + input({ platform: { device: "iphone", iosMajor, browser: "chrome" } }), + ); + expect(safari).toMatchObject({ outcome: "eligible_candidate", browser: "safari" }); + expect(chrome).toMatchObject({ outcome: "eligible_candidate", browser: "chrome" }); + expect(safari.mayStartSensitiveFlow).toBe(true); + expect(chrome.mayStartSensitiveFlow).toBe(true); + }); + } + + test("fails closed when the shared authenticator policy is not the frozen version", () => { + const malformed = { ...policy, userVerification: "preferred" }; + expect( + admitBrowserV1(malformed as unknown as WebAuthnPrfAuthenticatorPolicyV1, input()), + ).toMatchObject({ + outcome: "origin_or_rp_invalid", + reason: "authenticator_policy_invalid", + mayStartSensitiveFlow: false, + }); + }); + + test("keeps missing optional probes unknown without treating them as suspicious", () => { + const result = admitBrowserV1( + policy, + input({ + capabilities: { + ...input().capabilities, + platformUv: "unknown", + clientCapabilitiesApi: "unknown", + conditionalMediation: "unknown", + }, + }), + ); + expect(result.outcome).toBe("eligible_candidate"); + }); + + test("stops on explicit required-capability failures", () => { + const uv = admitBrowserV1( + policy, + input({ capabilities: { ...input().capabilities, platformUv: "unavailable" } }), + ); + const webAuthn = admitBrowserV1( + policy, + input({ capabilities: { ...input().capabilities, webAuthnApi: "unavailable" } }), + ); + const media = admitBrowserV1( + policy, + input({ capabilities: { ...input().capabilities, mediaApi: "unavailable" } }), + ); + expect(uv).toMatchObject({ outcome: "uv_unavailable", mayStartSensitiveFlow: false }); + expect(webAuthn).toMatchObject({ outcome: "unsupported", mayStartSensitiveFlow: false }); + expect(media).toMatchObject({ outcome: "unsupported", mayStartSensitiveFlow: false }); + }); +}); + +describe("fail-closed context validation", () => { + test("maps null policy or input to an inert internal error", () => { + expect( + admitBrowserV1(null as unknown as WebAuthnPrfAuthenticatorPolicyV1, input()), + ).toEqual(safeInternalError); + expect( + admitBrowserV1(policy, null as unknown as BrowserAdmissionInputV1), + ).toEqual(safeInternalError); + }); + + test("maps revoked policy and input proxies to an inert internal error", () => { + const revokedPolicy = Proxy.revocable(policy, {}); + const revokedInput = Proxy.revocable(input(), {}); + revokedPolicy.revoke(); + revokedInput.revoke(); + + expect( + admitBrowserV1( + revokedPolicy.proxy as WebAuthnPrfAuthenticatorPolicyV1, + input(), + ), + ).toEqual(safeInternalError); + expect( + admitBrowserV1(policy, revokedInput.proxy as BrowserAdmissionInputV1), + ).toEqual(safeInternalError); + }); + + test("never rereads throwing platform, capabilities, or evidence getters", () => { + const rawSecret = "raw-secret-detail-must-not-escape"; + const fields = ["platform", "capabilities", "evidence"] as const; + + for (const field of fields) { + const hostile = input(); + let reads = 0; + Object.defineProperty(hostile, field, { + configurable: true, + get: () => { + reads += 1; + throw new Error(rawSecret); + }, + }); + + const result = admitBrowserV1(policy, hostile); + expect(result).toEqual(safeInternalError); + expect(JSON.stringify(result)).not.toContain(rawSecret); + expect(reads).toBe(1); + expect(Object.isFrozen(result)).toBe(true); + expect(Object.isFrozen(result.capabilities)).toBe(true); + } + }); + + test("rejects insecure, disallowed-origin, RP-ID, policy, and signed-context failures", () => { + const insecure = input({ capabilities: { ...input().capabilities, secureContext: false } }); + const wrongOrigin = input({ actualOrigin: "https://elsewhere.example.test" }); + const badRpPolicy = { ...policy, rpId: "wrong.example.test" }; + const badPolicy = input({ permissionsPolicy: "unknown" }); + const badRequest = input({ + requestContext: { ...input().requestContext, transactionHandle: "invalid" }, + }); + + expect(admitBrowserV1(policy, insecure)).toMatchObject({ outcome: "insecure_context" }); + expect(admitBrowserV1(policy, wrongOrigin)).toMatchObject({ outcome: "origin_or_rp_invalid" }); + expect(admitBrowserV1(badRpPolicy, input())).toMatchObject({ outcome: "origin_or_rp_invalid" }); + expect(admitBrowserV1(policy, badPolicy)).toMatchObject({ outcome: "origin_or_rp_invalid" }); + expect(admitBrowserV1(policy, badRequest)).toMatchObject({ outcome: "origin_or_rp_invalid" }); + }); + + test("fails every frame closed instead of turning it into browser handoff", () => { + const sameOrigin = admitBrowserV1(policy, input({ isTopLevel: false })); + const crossOrigin = admitBrowserV1( + policy, + input({ isTopLevel: false, frameOrigin: "cross_origin", embeddedEvidence: "confirmed" }), + ); + expect(sameOrigin).toMatchObject({ + outcome: "context_not_top_level", + reason: "document_is_framed", + }); + expect(crossOrigin).toMatchObject({ + outcome: "context_not_top_level", + reason: "cross_origin_frame", + }); + expect( + admitBrowserV1(policy, input({ isTopLevel: true, frameOrigin: "cross_origin" })), + ).toMatchObject({ outcome: "context_not_top_level", reason: "cross_origin_frame" }); + }); + + test("hands embedded contexts off before browser capabilities matter", () => { + for (const embeddedEvidence of ["probable", "confirmed"] as const) { + const result = admitBrowserV1( + policy, + input({ + embeddedEvidence, + browserContext: "embedded", + capabilities: { + ...input().capabilities, + webAuthnApi: "unavailable", + platformUv: "unavailable", + mediaApi: "unavailable", + }, + }), + ); + expect(result).toMatchObject({ + outcome: "embedded_browser_handoff", + mayStartSensitiveFlow: false, + }); + } + expect( + admitBrowserV1( + policy, + input({ browserContext: "embedded", embeddedEvidence: "unknown" }), + ), + ).toMatchObject({ outcome: "embedded_browser_handoff", mayStartSensitiveFlow: false }); + }); + + test("does not over-admit private, PWA, unknown, hidden, non-iPhone, or other browsers", () => { + expect(admitBrowserV1(policy, input({ browserContext: "private_or_unknown" })).outcome).toBe( + "private_or_unknown_context", + ); + expect(admitBrowserV1(policy, input({ browserContext: "installed_pwa" })).outcome).toBe( + "private_or_unknown_context", + ); + expect(admitBrowserV1(policy, input({ browserContext: "unknown" })).outcome).toBe( + "private_or_unknown_context", + ); + expect( + admitBrowserV1( + policy, + input({ capabilities: { ...input().capabilities, visibility: "hidden" } }), + ).outcome, + ).toBe("interrupted"); + expect( + admitBrowserV1( + policy, + input({ platform: { device: "other", iosMajor: null, browser: "unknown" } }), + ).outcome, + ).toBe("unsupported"); + expect( + admitBrowserV1( + policy, + input({ platform: { device: "iphone", iosMajor: 18, browser: "other" } }), + ).outcome, + ).toBe("unsupported"); + }); +}); + +describe("coarse platform classification and advisory probes", () => { + const safariUa = + "Mozilla/5.0 (iPhone; CPU iPhone OS 18_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.1 Mobile/15E148 Safari/604.1"; + const chromeUa = + "Mozilla/5.0 (iPhone; CPU iPhone OS 18_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/130.0.0.0 Mobile/15E148 Safari/604.1"; + + test("attributes iPhone Safari and Chrome without retaining the full UA", () => { + expect(classifyIPhoneUserAgentV1(safariUa)).toEqual({ + device: "iphone", + iosMajor: 18, + browser: "safari", + }); + expect(classifyIPhoneUserAgentV1(chromeUa)).toEqual({ + device: "iphone", + iosMajor: 18, + browser: "chrome", + }); + expect(JSON.stringify(classifyIPhoneUserAgentV1(chromeUa))).not.toContain("Mozilla"); + }); + + test("records engine, region, and provider only from explicit trusted evidence", () => { + const untrusted = admitBrowserV1( + policy, + input({ + evidence: { + engine: "alternative_engine_confirmed", + region: "eu", + provider: "google_password_manager", + source: "none", + }, + }), + ); + const confirmed = admitBrowserV1( + policy, + input({ + evidence: { + engine: "alternative_engine_confirmed", + region: "eu", + provider: "google_password_manager", + source: "device_lab_confirmed", + }, + }), + ); + expect(untrusted).toMatchObject({ engine: "unknown", region: "unknown", provider: "unknown" }); + expect(confirmed).toMatchObject({ + engine: "alternative_engine_confirmed", + region: "eu", + provider: "google_password_manager", + }); + }); + + test("collects only coarse probes and never invokes getUserMedia", async () => { + let cameraCalls = 0; + const result = await collectAdvisoryCapabilitiesV1({ + isSecureContext: true, + visibilityState: "visible", + publicKeyCredential: { + isUserVerifyingPlatformAuthenticatorAvailable: async () => true, + getClientCapabilities: async () => ({ conditionalCreate: true }), + isConditionalMediationAvailable: async () => false, + }, + mediaDevices: { + getUserMedia: () => { + cameraCalls += 1; + }, + }, + }); + expect(result).toEqual({ + secureContext: true, + webAuthnApi: "available", + platformUv: "available", + clientCapabilitiesApi: "available", + conditionalMediation: "unavailable", + mediaApi: "available", + visibility: "visible", + }); + expect(cameraCalls).toBe(0); + }); + + test("maps unavailable optional probes to unknown without raw exceptions", async () => { + const result = await collectAdvisoryCapabilitiesV1({ + isSecureContext: true, + publicKeyCredential: { + isUserVerifyingPlatformAuthenticatorAvailable: async () => { + throw new Error("sensitive raw detail"); + }, + getClientCapabilities: async () => { + throw new Error("sensitive raw detail"); + }, + }, + }); + expect(result.platformUv).toBe("unknown"); + expect(result.clientCapabilitiesApi).toBe("unknown"); + expect(JSON.stringify(result)).not.toContain("sensitive raw detail"); + }); +}); + +describe("safe external-browser handoff", () => { + test("carries only validated opaque handles and requires a fresh challenge", () => { + const handoff = createExternalBrowserHandoffV1("https://auth.example.test", { + validation: "server_validated", + transactionHandle: "transaction_ABC123", + returnTargetHandle: "return_target_ABC123", + }); + expect(handoff).toEqual({ + version: "browser_admission_v1", + href: + "https://auth.example.test/continue?transaction=transaction_ABC123&return_target=return_target_ABC123", + carries: "validated_opaque_handles_only", + challengeAction: "invalidate_and_reissue_after_navigation", + }); + }); + + test("rejects non-canonical origins and URL-shaped return targets", () => { + expect(() => + createExternalBrowserHandoffV1("http://auth.example.test", { + validation: "server_validated", + transactionHandle: "transaction_ABC123", + returnTargetHandle: "return_target_ABC123", + }), + ).toThrow(); + expect(() => + createExternalBrowserHandoffV1("https://auth.example.test", { + validation: "server_validated", + transactionHandle: "transaction_ABC123", + returnTargetHandle: "https://evil.example/", + }), + ).toThrow(); + }); + + test("capability decisions contain no credential, media, or secret state", () => { + const result = admitBrowserV1(policy, input()); + const keys = Object.keys(result).concat(Object.keys(result.capabilities)); + expect(keys).not.toContain("credentialId"); + expect(keys).not.toContain("prfOutput"); + expect(keys).not.toContain("privateKey"); + expect(keys).not.toContain("seed32"); + expect(keys).not.toContain("cameraStream"); + expect(keys).not.toContain("mediaBytes"); + expect(keys).not.toContain("userAgent"); + expect(keys).not.toContain("exception"); + }); +}); diff --git a/packages/client-quality/README.md b/packages/client-quality/README.md new file mode 100644 index 0000000..2a80442 --- /dev/null +++ b/packages/client-quality/README.md @@ -0,0 +1,24 @@ +# Client quality + +W05-owned after explicit `GO`. Provides provisional capture UX only and emits no spoof, liveness, or verification result. + +`evaluateClientQualityV0` consumes synchronous, ephemeral measurements and returns only the frozen policy version, policy identifier, one of `ready`/`adjust`/`retake`/`unavailable`, and allowlisted reason codes. It evaluates camera activity first and then only the checks explicitly present in the policy. Missing or unusable enabled measurements return `unavailable`; reaching `maxRetakes` cannot become `ready`. + +This package loads no model or asset, makes no network or storage call, and does not serialize source measurements. Measurements such as face count, framing ratios, luma, and sharpness remain caller-owned transient values. + +| Enabled check | Condition | Action / reason | +|---|---|---| +| `camera_active` | inactive or unreadable | `unavailable` / `camera_inactive` or `camera_unavailable` | +| `single_face` | none, multiple, or unreadable | `adjust` / `face_not_found` or `multiple_faces`; otherwise `unavailable` | +| `framing` | below/above area or outside center threshold | `adjust` / `move_closer`, `move_farther`, or `center_face` | +| `lighting` | below/above luma threshold | `adjust` / `improve_lighting` or `reduce_lighting` | +| `sharpness` | below threshold | `retake` / `image_blurry`; at the policy limit, `unavailable` / `retake_limit_reached` | + +An unreadable enabled check returns its allowlisted `*_guidance_unavailable` reason. A valid policy with all enabled checks satisfied returns `ready` with no reason code. + +## Proof + +```bash +bun test clean-start/packages/client-quality/test +./node_modules/.bin/tsc -p clean-start/tsconfig.json --noEmit +``` diff --git a/packages/client-quality/package.json b/packages/client-quality/package.json new file mode 100644 index 0000000..d0cc920 --- /dev/null +++ b/packages/client-quality/package.json @@ -0,0 +1,12 @@ +{ + "name": "@world-id/web-authenticator-client-quality", + "private": true, + "version": "0.0.0", + "type": "module", + "exports": { + ".": "./src/index.ts" + }, + "scripts": { + "test": "bun test test" + } +} diff --git a/packages/client-quality/src/index.ts b/packages/client-quality/src/index.ts new file mode 100644 index 0000000..6e8629a --- /dev/null +++ b/packages/client-quality/src/index.ts @@ -0,0 +1,364 @@ +import { + CLIENT_QUALITY_POLICY_V0, + validateClientQualityPolicyV0, + type ClientQualityActionV0, + type ClientQualityCheckV0, + type ClientQualityPolicyV0, + type ClientQualityResultV0, +} from "../../contracts/src"; + +export const CLIENT_QUALITY_REASON_CODES_V0 = [ + "camera_inactive", + "camera_unavailable", + "face_not_found", + "multiple_faces", + "face_guidance_unavailable", + "move_closer", + "move_farther", + "center_face", + "framing_guidance_unavailable", + "improve_lighting", + "reduce_lighting", + "lighting_guidance_unavailable", + "image_blurry", + "sharpness_guidance_unavailable", + "retake_limit_reached", + "policy_invalid", + "quality_input_invalid", +] as const; + +export type ClientQualityReasonCodeV0 = + (typeof CLIENT_QUALITY_REASON_CODES_V0)[number]; + +export type FaceCountMeasurementV0 = 0 | 1 | "multiple"; + +export interface FramingMeasurementV0 { + readonly faceAreaRatio: number; + readonly centerOffsetRatio: number; +} + +/** + * Reads ephemeral measurements owned by the caller. Measurements are consumed + * synchronously and are never included in the returned result. + */ +export interface ClientQualityMeasurementSourceV0 { + readonly readCameraActive: () => boolean | null; + readonly readFaceCount?: () => FaceCountMeasurementV0 | null; + readonly readFraming?: () => FramingMeasurementV0 | null; + readonly readMeanLuma?: () => number | null; + readonly readSharpnessScore?: () => number | null; +} + +export interface ClientQualityEvaluationOptionsV0 { + readonly retakesUsed: number; +} + +export interface EvaluatedClientQualityResultV0 extends ClientQualityResultV0 { + readonly reasonCodes: readonly ClientQualityReasonCodeV0[]; +} + +const REASON_CODE_SET = new Set(CLIENT_QUALITY_REASON_CODES_V0); + +const ADJUST_REASONS = new Set([ + "face_not_found", + "multiple_faces", + "move_closer", + "move_farther", + "center_face", + "improve_lighting", + "reduce_lighting", +]); + +const UNAVAILABLE_REASONS = new Set([ + "camera_inactive", + "camera_unavailable", + "face_guidance_unavailable", + "framing_guidance_unavailable", + "lighting_guidance_unavailable", + "sharpness_guidance_unavailable", + "retake_limit_reached", + "policy_invalid", + "quality_input_invalid", +]); + +function result( + policyId: string, + action: ClientQualityActionV0, + reasonCode?: ClientQualityReasonCodeV0, +): EvaluatedClientQualityResultV0 { + const reasonCodes = Object.freeze(reasonCode === undefined ? [] : [reasonCode]); + return Object.freeze({ + version: CLIENT_QUALITY_POLICY_V0, + policyId, + action, + reasonCodes, + }); +} + +function hasExactKeys(value: object, keys: readonly string[]): boolean { + const actual = Object.keys(value).sort(); + const expected = [...keys].sort(); + return actual.length === expected.length && actual.every((key, index) => key === expected[index]); +} + +function hasFiniteThresholds(check: ClientQualityCheckV0): boolean { + if (check.kind === "framing") { + return ( + Number.isFinite(check.minFaceAreaRatio) && + Number.isFinite(check.maxFaceAreaRatio) && + Number.isFinite(check.maxCenterOffsetRatio) && + hasExactKeys(check, [ + "kind", + "minFaceAreaRatio", + "maxFaceAreaRatio", + "maxCenterOffsetRatio", + ]) + ); + } + if (check.kind === "lighting") { + return ( + Number.isFinite(check.minMeanLuma) && + Number.isFinite(check.maxMeanLuma) && + hasExactKeys(check, ["kind", "minMeanLuma", "maxMeanLuma"]) + ); + } + if (check.kind === "sharpness") { + return Number.isFinite(check.minScore) && hasExactKeys(check, ["kind", "minScore"]); + } + if (check.kind === "camera_active" || check.kind === "single_face") { + return hasExactKeys(check, ["kind"]); + } + return false; +} + +function containsAccessor(value: unknown, seen = new WeakSet()): boolean { + if (typeof value !== "object" || value === null || seen.has(value)) return false; + seen.add(value); + + const descriptors = Object.getOwnPropertyDescriptors(value); + for (const descriptor of Object.values(descriptors)) { + if (descriptor.get !== undefined || descriptor.set !== undefined) return true; + if ("value" in descriptor && containsAccessor(descriptor.value, seen)) return true; + } + return false; +} + +function snapshotUsablePolicy( + policy: ClientQualityPolicyV0, +): ClientQualityPolicyV0 | null { + try { + if (typeof policy !== "object" || policy === null || Array.isArray(policy)) return null; + if (containsAccessor(policy)) return null; + + const snapshot = structuredClone(policy) as ClientQualityPolicyV0; + if ( + !hasExactKeys(snapshot, [ + "version", + "mode", + "environment", + "policyId", + "purpose", + "checks", + "maxRetakes", + ]) || + typeof snapshot.policyId !== "string" || + snapshot.policyId.length === 0 || + !Number.isSafeInteger(snapshot.maxRetakes) || + !Array.isArray(snapshot.checks) || + !snapshot.checks.every( + (check) => + typeof check === "object" && check !== null && hasFiniteThresholds(check), + ) || + validateClientQualityPolicyV0(snapshot).length !== 0 + ) { + return null; + } + + for (const check of snapshot.checks) Object.freeze(check); + Object.freeze(snapshot.checks); + return Object.freeze(snapshot); + } catch { + return null; + } +} + +function safelyRead(reader: (() => T | null) | undefined): T | null { + if (reader === undefined) return null; + try { + const value = reader(); + return value === undefined ? null : value; + } catch { + return null; + } +} + +function safelyReadFromSource( + source: ClientQualityMeasurementSourceV0, + selectReader: ( + candidate: ClientQualityMeasurementSourceV0, + ) => (() => T | null) | undefined, +): T | null { + return safelyRead(() => { + const reader = selectReader(source); + return typeof reader === "function" ? reader() : null; + }); +} + +function isUnitRatio(value: number): boolean { + return Number.isFinite(value) && value >= 0 && value <= 1; +} + +function evaluateFaceCount( + policyId: string, + source: ClientQualityMeasurementSourceV0, +): EvaluatedClientQualityResultV0 | null { + const count = safelyReadFromSource(source, (candidate) => candidate.readFaceCount); + if (count === null || (count !== 0 && count !== 1 && count !== "multiple")) { + return result(policyId, "unavailable", "face_guidance_unavailable"); + } + if (count === 0) return result(policyId, "adjust", "face_not_found"); + if (count === "multiple") return result(policyId, "adjust", "multiple_faces"); + return null; +} + +function evaluateFraming( + policyId: string, + check: Extract, + source: ClientQualityMeasurementSourceV0, +): EvaluatedClientQualityResultV0 | null { + const measurement = safelyReadFromSource(source, (candidate) => candidate.readFraming); + const ratios = safelyRead(() => + measurement === null + ? null + : { + faceAreaRatio: measurement.faceAreaRatio, + centerOffsetRatio: measurement.centerOffsetRatio, + }, + ); + if ( + ratios === null || + !isUnitRatio(ratios.faceAreaRatio) || + !isUnitRatio(ratios.centerOffsetRatio) + ) { + return result(policyId, "unavailable", "framing_guidance_unavailable"); + } + if (ratios.faceAreaRatio < check.minFaceAreaRatio) { + return result(policyId, "adjust", "move_closer"); + } + if (ratios.faceAreaRatio > check.maxFaceAreaRatio) { + return result(policyId, "adjust", "move_farther"); + } + if (ratios.centerOffsetRatio > check.maxCenterOffsetRatio) { + return result(policyId, "adjust", "center_face"); + } + return null; +} + +function evaluateLighting( + policyId: string, + check: Extract, + source: ClientQualityMeasurementSourceV0, +): EvaluatedClientQualityResultV0 | null { + const meanLuma = safelyReadFromSource(source, (candidate) => candidate.readMeanLuma); + if (meanLuma === null || !Number.isFinite(meanLuma) || meanLuma < 0 || meanLuma > 255) { + return result(policyId, "unavailable", "lighting_guidance_unavailable"); + } + if (meanLuma < check.minMeanLuma) { + return result(policyId, "adjust", "improve_lighting"); + } + if (meanLuma > check.maxMeanLuma) { + return result(policyId, "adjust", "reduce_lighting"); + } + return null; +} + +function evaluateSharpness( + policyId: string, + check: Extract, + source: ClientQualityMeasurementSourceV0, + options: ClientQualityEvaluationOptionsV0, + maxRetakes: number, +): EvaluatedClientQualityResultV0 | null { + const score = safelyReadFromSource(source, (candidate) => candidate.readSharpnessScore); + if (score === null || !Number.isFinite(score) || score < 0) { + return result(policyId, "unavailable", "sharpness_guidance_unavailable"); + } + if (score >= check.minScore) return null; + if (options.retakesUsed >= maxRetakes) { + return result(policyId, "unavailable", "retake_limit_reached"); + } + return result(policyId, "retake", "image_blurry"); +} + +export function evaluateClientQualityV0( + policy: ClientQualityPolicyV0, + source: ClientQualityMeasurementSourceV0, + options: ClientQualityEvaluationOptionsV0, +): EvaluatedClientQualityResultV0 { + const policySnapshot = snapshotUsablePolicy(policy); + if (policySnapshot === null) { + return result("invalid-policy", "unavailable", "policy_invalid"); + } + const policyId = policySnapshot.policyId; + if (!Number.isSafeInteger(options?.retakesUsed) || options.retakesUsed < 0) { + return result(policyId, "unavailable", "quality_input_invalid"); + } + + const cameraActive = safelyReadFromSource( + source, + (candidate) => candidate.readCameraActive, + ); + if (cameraActive === null || typeof cameraActive !== "boolean") { + return result(policyId, "unavailable", "camera_unavailable"); + } + if (!cameraActive) return result(policyId, "unavailable", "camera_inactive"); + + for (const check of policySnapshot.checks) { + let checkResult: EvaluatedClientQualityResultV0 | null = null; + if (check.kind === "camera_active") continue; + if (check.kind === "single_face") checkResult = evaluateFaceCount(policyId, source); + if (check.kind === "framing") checkResult = evaluateFraming(policyId, check, source); + if (check.kind === "lighting") checkResult = evaluateLighting(policyId, check, source); + if (check.kind === "sharpness") { + checkResult = evaluateSharpness( + policyId, + check, + source, + options, + policySnapshot.maxRetakes, + ); + } + if (checkResult !== null) return checkResult; + } + + return result(policyId, "ready"); +} + +export function isClientQualityResultV0(value: unknown): value is EvaluatedClientQualityResultV0 { + try { + if (typeof value !== "object" || value === null || Array.isArray(value)) return false; + if (!hasExactKeys(value, ["version", "policyId", "action", "reasonCodes"])) return false; + + const candidate = value as Record; + if ( + candidate.version !== CLIENT_QUALITY_POLICY_V0 || + typeof candidate.policyId !== "string" || + !["ready", "adjust", "retake", "unavailable"].includes(candidate.action as string) || + !Array.isArray(candidate.reasonCodes) || + !candidate.reasonCodes.every( + (code) => typeof code === "string" && REASON_CODE_SET.has(code), + ) + ) { + return false; + } + + if (candidate.action === "ready") return candidate.reasonCodes.length === 0; + if (candidate.reasonCodes.length !== 1) return false; + const reason = candidate.reasonCodes[0] as ClientQualityReasonCodeV0; + if (candidate.action === "adjust") return ADJUST_REASONS.has(reason); + if (candidate.action === "retake") return reason === "image_blurry"; + return UNAVAILABLE_REASONS.has(reason); + } catch { + return false; + } +} diff --git a/packages/client-quality/test/client-quality.test.ts b/packages/client-quality/test/client-quality.test.ts new file mode 100644 index 0000000..65d4a68 --- /dev/null +++ b/packages/client-quality/test/client-quality.test.ts @@ -0,0 +1,343 @@ +import { describe, expect, test } from "bun:test"; +import { + CLIENT_QUALITY_POLICY_V0, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + type ClientQualityPolicyV0, +} from "../../contracts/src"; +import { + CLIENT_QUALITY_REASON_CODES_V0, + evaluateClientQualityV0, + isClientQualityResultV0, + type ClientQualityMeasurementSourceV0, +} from "../src"; + +const completePolicy: ClientQualityPolicyV0 = { + version: CLIENT_QUALITY_POLICY_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + policyId: "quality-policy-fixture", + purpose: "capture_ux_only", + checks: [ + { kind: "camera_active" }, + { kind: "single_face" }, + { + kind: "framing", + minFaceAreaRatio: 0.2, + maxFaceAreaRatio: 0.6, + maxCenterOffsetRatio: 0.15, + }, + { kind: "lighting", minMeanLuma: 60, maxMeanLuma: 210 }, + { kind: "sharpness", minScore: 12 }, + ], + maxRetakes: 2, +}; + +function source( + overrides: Partial = {}, +): ClientQualityMeasurementSourceV0 { + return { + readCameraActive: () => true, + readFaceCount: () => 1, + readFraming: () => ({ faceAreaRatio: 0.4, centerOffsetRatio: 0.05 }), + readMeanLuma: () => 128, + readSharpnessScore: () => 20, + ...overrides, + }; +} + +function evaluate( + policy: ClientQualityPolicyV0 = completePolicy, + measurements: ClientQualityMeasurementSourceV0 = source(), + retakesUsed = 0, +) { + return evaluateClientQualityV0(policy, measurements, { retakesUsed }); +} + +describe("ClientQualityPolicyV0 selection", () => { + test("returns ready when every explicitly enabled check is satisfied", () => { + expect(evaluate()).toEqual({ + version: CLIENT_QUALITY_POLICY_V0, + policyId: completePolicy.policyId, + action: "ready", + reasonCodes: [], + }); + }); + + test("never reads a check omitted by policy", () => { + const cameraOnly: ClientQualityPolicyV0 = { + ...completePolicy, + checks: [{ kind: "camera_active" }], + }; + const unused = () => { + throw new Error("disabled check was read"); + }; + const result = evaluate(cameraOnly, { + readCameraActive: () => true, + readFaceCount: unused, + readFraming: unused, + readMeanLuma: unused, + readSharpnessScore: unused, + }); + expect(result.action).toBe("ready"); + }); + + test("requires a valid explicit camera-active check and finite thresholds", () => { + const withoutCamera = { ...completePolicy, checks: [{ kind: "single_face" }] }; + const nonFinite = { + ...completePolicy, + checks: [{ kind: "camera_active" }, { kind: "sharpness", minScore: Number.NaN }], + }; + const unknownCheck = { + ...completePolicy, + checks: [{ kind: "camera_active" }, { kind: "unexpected_check" }], + }; + expect(evaluate(withoutCamera as ClientQualityPolicyV0).reasonCodes).toEqual([ + "policy_invalid", + ]); + expect(evaluate(nonFinite as ClientQualityPolicyV0).reasonCodes).toEqual([ + "policy_invalid", + ]); + expect(evaluate(unknownCheck as ClientQualityPolicyV0).reasonCodes).toEqual([ + "policy_invalid", + ]); + }); + + test("rejects time-varying policy getters and proxies before evaluation", () => { + let getterReads = 0; + const getterPolicy = { ...completePolicy }; + Object.defineProperty(getterPolicy, "checks", { + enumerable: true, + get() { + getterReads += 1; + return getterReads === 1 + ? completePolicy.checks + : [{ kind: "camera_active" }, { kind: "unexpected_check" }]; + }, + }); + expect(evaluate(getterPolicy)).toMatchObject({ + action: "unavailable", + reasonCodes: ["policy_invalid"], + }); + expect(getterReads).toBe(0); + + let proxyReads = 0; + const proxyPolicy = new Proxy(completePolicy, { + get(target, property, receiver) { + if (property === "checks") { + proxyReads += 1; + return proxyReads === 1 + ? target.checks + : [{ kind: "camera_active" }, { kind: "unexpected_check" }]; + } + return Reflect.get(target, property, receiver); + }, + }); + expect(evaluate(proxyPolicy)).toMatchObject({ + action: "unavailable", + reasonCodes: ["policy_invalid"], + }); + }); +}); + +describe("threshold and action matrix", () => { + test("maps camera states only to unavailable or continued evaluation", () => { + expect(evaluate(completePolicy, source({ readCameraActive: () => false }))).toMatchObject({ + action: "unavailable", + reasonCodes: ["camera_inactive"], + }); + expect(evaluate(completePolicy, source({ readCameraActive: () => null }))).toMatchObject({ + action: "unavailable", + reasonCodes: ["camera_unavailable"], + }); + }); + + test("maps face count to one specific adjustment", () => { + expect(evaluate(completePolicy, source({ readFaceCount: () => 0 }))).toMatchObject({ + action: "adjust", + reasonCodes: ["face_not_found"], + }); + expect(evaluate(completePolicy, source({ readFaceCount: () => "multiple" }))).toMatchObject({ + action: "adjust", + reasonCodes: ["multiple_faces"], + }); + }); + + test("treats framing boundaries as ready and values outside them as adjustments", () => { + expect( + evaluate( + { ...completePolicy, checks: completePolicy.checks.slice(0, 3) }, + source({ readFraming: () => ({ faceAreaRatio: 0.2, centerOffsetRatio: 0.15 }) }), + ).action, + ).toBe("ready"); + expect( + evaluate(completePolicy, source({ readFraming: () => ({ faceAreaRatio: 0.19, centerOffsetRatio: 0 }) })), + ).toMatchObject({ action: "adjust", reasonCodes: ["move_closer"] }); + expect( + evaluate(completePolicy, source({ readFraming: () => ({ faceAreaRatio: 0.61, centerOffsetRatio: 0 }) })), + ).toMatchObject({ action: "adjust", reasonCodes: ["move_farther"] }); + expect( + evaluate(completePolicy, source({ readFraming: () => ({ faceAreaRatio: 0.4, centerOffsetRatio: 0.16 }) })), + ).toMatchObject({ action: "adjust", reasonCodes: ["center_face"] }); + }); + + test("treats lighting boundaries as ready and values outside them as adjustments", () => { + const throughLighting = { ...completePolicy, checks: completePolicy.checks.slice(0, 4) }; + expect(evaluate(throughLighting, source({ readMeanLuma: () => 60 })).action).toBe("ready"); + expect(evaluate(throughLighting, source({ readMeanLuma: () => 210 })).action).toBe("ready"); + expect(evaluate(completePolicy, source({ readMeanLuma: () => 59 }))).toMatchObject({ + action: "adjust", + reasonCodes: ["improve_lighting"], + }); + expect(evaluate(completePolicy, source({ readMeanLuma: () => 211 }))).toMatchObject({ + action: "adjust", + reasonCodes: ["reduce_lighting"], + }); + }); + + test("bounds retakes using the explicit policy limit", () => { + expect(evaluate(completePolicy, source({ readSharpnessScore: () => 11 }), 1)).toMatchObject({ + action: "retake", + reasonCodes: ["image_blurry"], + }); + expect(evaluate(completePolicy, source({ readSharpnessScore: () => 11 }), 2)).toMatchObject({ + action: "unavailable", + reasonCodes: ["retake_limit_reached"], + }); + expect(evaluate(completePolicy, source({ readSharpnessScore: () => 12 }), 2).action).toBe( + "ready", + ); + }); +}); + +describe("unavailable and privacy boundaries", () => { + test("contains no network, persistence, cache, or logging API", async () => { + const implementation = await Bun.file(new URL("../src/index.ts", import.meta.url)).text(); + expect(implementation).not.toMatch( + /\b(?:fetch|XMLHttpRequest|WebSocket|sendBeacon|localStorage|sessionStorage|indexedDB|CacheStorage|caches|logger|logging)\b|\bconsole\s*\./, + ); + }); + + test("missing, invalid, and throwing enabled measurements never create ready", () => { + const cases: ClientQualityMeasurementSourceV0[] = [ + { readCameraActive: () => true }, + source({ readFaceCount: () => null }), + source({ readFraming: () => ({ faceAreaRatio: Number.NaN, centerOffsetRatio: 0 }) }), + source({ readMeanLuma: () => 256 }), + source({ + readSharpnessScore: () => { + throw new Error("measurement unavailable"); + }, + }), + source({ readFraming: () => undefined as never }), + ]; + for (const measurements of cases) { + expect(evaluate(completePolicy, measurements).action).toBe("unavailable"); + } + expect(evaluate(completePolicy, source(), -1)).toMatchObject({ + action: "unavailable", + reasonCodes: ["quality_input_invalid"], + }); + expect( + evaluateClientQualityV0(completePolicy, undefined as never, { retakesUsed: 0 }), + ).toMatchObject({ action: "unavailable", reasonCodes: ["camera_unavailable"] }); + expect( + evaluateClientQualityV0(completePolicy, source(), undefined as never), + ).toMatchObject({ action: "unavailable", reasonCodes: ["quality_input_invalid"] }); + }); + + test("turns throwing framing properties and reader access into unavailable", () => { + const throwingMeasurement = Object.defineProperty( + { centerOffsetRatio: 0 }, + "faceAreaRatio", + { + enumerable: true, + get() { + throw new Error("measurement property unavailable"); + }, + }, + ); + expect( + evaluate( + completePolicy, + source({ readFraming: () => throwingMeasurement as never }), + ), + ).toMatchObject({ + action: "unavailable", + reasonCodes: ["framing_guidance_unavailable"], + }); + + const throwingReader = source(); + Object.defineProperty(throwingReader, "readFraming", { + enumerable: true, + get() { + throw new Error("reader unavailable"); + }, + }); + expect(evaluate(completePolicy, throwingReader)).toMatchObject({ + action: "unavailable", + reasonCodes: ["framing_guidance_unavailable"], + }); + }); + + test("emits an exact allowlisted result with no transient measurement data", () => { + const privateData = { + pixels: new Uint8Array([1, 2, 3]), + landmarks: [{ x: 0.1, y: 0.2 }], + bounds: { x: 10, y: 20, width: 40, height: 50 }, + detailedScore: 11.123456, + }; + const result = evaluate( + completePolicy, + source({ + readSharpnessScore: () => privateData.detailedScore, + ...privateData, + } as Partial), + ); + expect(Object.keys(result).sort()).toEqual([ + "action", + "policyId", + "reasonCodes", + "version", + ]); + expect(result.reasonCodes.every((code) => CLIENT_QUALITY_REASON_CODES_V0.includes(code as never))).toBe( + true, + ); + expect(JSON.stringify(result)).not.toMatch( + /pixels|landmarks|bounds|detailedScore|11\.123456|identity|provenance|attestation|simulation|spoof|liveness|verification|tee|simulated_/i, + ); + expect(isClientQualityResultV0(result)).toBe(true); + }); + + test("rejects extra fields, unknown reasons, and action/reason mismatches", () => { + const ready = evaluate(); + expect(isClientQualityResultV0({ ...ready, score: 1 })).toBe(false); + expect(isClientQualityResultV0({ ...ready, reasonCodes: ["unknown"] })).toBe(false); + expect(isClientQualityResultV0({ ...ready, action: "adjust", reasonCodes: [] })).toBe(false); + expect( + isClientQualityResultV0({ ...ready, action: "unavailable", reasonCodes: ["image_blurry"] }), + ).toBe(false); + }); + + test("returns false for throwing parsed-result properties and proxies", () => { + const throwingAction = Object.defineProperty( + { + version: CLIENT_QUALITY_POLICY_V0, + policyId: completePolicy.policyId, + reasonCodes: [], + }, + "action", + { + enumerable: true, + get() { + throw new Error("parsed action unavailable"); + }, + }, + ); + expect(isClientQualityResultV0(throwingAction)).toBe(false); + + const revocable = Proxy.revocable(evaluate(), {}); + revocable.revoke(); + expect(isClientQualityResultV0(revocable.proxy)).toBe(false); + }); +}); diff --git a/packages/contracts/README.md b/packages/contracts/README.md new file mode 100644 index 0000000..34b4f94 --- /dev/null +++ b/packages/contracts/README.md @@ -0,0 +1,60 @@ +# Shared contract freeze + +The first eight Main-owned interfaces were approved at Gate 2 for the simulator-backed foundation. cs5 adds three versioned, staging-only UI/composition interfaces without changing or pretending to implement the blocked real contracts. These files define types and invariants, not an implementation. + +## Frozen interfaces + +1. `WebAuthnPrfAuthenticatorV1` +2. `EnrollmentSessionV2` (`V1` is retained as a superseded audit artifact and must not be implemented) +3. `SimulationCapturePolicyV0` +4. `FrameBundleV0` +5. `ClientQualityPolicyV0` +6. `BiometricVerificationPortV0` and `SimulationReceiptV0` +7. `StagingIssuancePortV0` and `SimulatedStagingCredentialV0` +8. `WorldIdRegistrationAdapterV1` + +cs5 staging UI/composition interfaces: + +9. `InjectedAuthenticatorPortV0` and `StagingDemoAuthenticatorReadyV0` +10. `SimulatorBrowserSessionPortV0` and its safe browser projections +11. `AuthenticatorUiFlowV1`, its categorical progress/error model, and frozen staging copy + +The interface shape for item 8 is frozen, but W03 implementation remains blocked: no pinned browser-capable SDK revision, full deterministic World ID public-output/registration/returning-signature vectors, or real staging gateway/chain configuration has been supplied. Gate 2 records that gap instead of inventing values. + +`EnrollmentSessionV2` supersedes V1 after the pre-implementation test plan exposed a missing issuance-result distinction. V2 separates biometric pending/reject/retry/unavailable from issuance pending/reject/unavailable and records both server-selected scenarios. Consumers must not map issuance rejection onto a biometric outcome. + +## cs5 demo boundary + +- `InjectedAuthenticatorPortV0` is a production-invalid staging compatibility seam. Its success result states that WebAuthn, PRF evaluation, and World ID creation were all **not** performed. +- The adapter may satisfy W06’s internal `passkey_complete` and W04’s internal `prfReady` gates only inside the named staging composition layer. Those inherited internal names are not factual claims about the demo. +- `SimulatorBrowserSessionPortV0` has no browser-controlled scenario input and omits simulator receipts, signatures, credential bodies, account identifiers, and raw return URLs. Every input has a strict runtime validator; every operation returns either a strict safe projection or a stable typed error envelope. +- The browser receives a fixed negative workflow-artifact summary only after `simulated_credential_ready`. +- `AuthenticatorUiFlowV1` freezes states, user actions, dependency events, legal transitions, ordered effects, server-state projection, error mapping, visual-source labels, and categorical progress. It has no percentage, ETA, arbitrary message, raw upstream error, secret, media, or credential field. +- Pre-session and explicit Close actions use `close_locally`; they never fabricate session fields or invoke the session-bound RP return port. +- User cancellation, page hide/unload, orientation invalidation, component unmount, and operation interruption use the frozen order: abort active effects, stop camera ownership, clear transient media, then request session cancellation only when an authenticated session exists. +- The frozen live policy is metadata-only capture with one or two frames and a camera-active-only UX check. Camera activity does not establish face position, so the safe UI copy says “Camera ready,” not “Great position.” + +## V0 data decision + +- Real camera bytes remain in browser memory and never cross the simulator boundary. +- `metadata_only` carries frame descriptors and digests. +- `synthetic_fixture` carries a named fixture reference, never user media. +- Array order is transport structure only and has no biometric meaning. +- Simulator outcomes are selected by an authenticated server-side staging scenario, never by pixels or browser scores. + +## Change control + +- Main is the sole writer. +- Any field, invariant, state, outcome, canonicalization, or trust-boundary change requires Main review and a version increment. +- Additive changes are not automatically compatible; a consumer must explicitly admit the new version. +- V0 simulation types can never be renamed or promoted into real TEE/issuer types. +- Future real TEE and issuer contracts start as new versions from owner-supplied interfaces; V0 does not promise wire compatibility. +- Workers stop and request a Main contract change instead of editing this package. + +## Canonical digest + +`FrameBundleV0.artifactDigestSha256` is lowercase hex SHA-256 over UTF-8 RFC 8785 JSON Canonicalization Scheme serialization of the bundle with `artifactDigestSha256` omitted. Frame digests use the same lowercase hex representation. The current contract defines the digest preimage; worker implementations must add deterministic vectors before integration. + +## Staging signatures + +Gateway-to-simulator requests, `SimulationReceiptV0`, and `SimulatedStagingCredentialV0` use Ed25519 with purpose-specific staging-only allowlisted keys and audiences. The signing preimage is UTF-8 RFC 8785 JSON Canonicalization Scheme serialization of every object field, including `authentication.scheme` and `authentication.keyId`, with only `authentication.signatureBase64Url` omitted. Consumers reject unknown keys, algorithms, environments, audiences, versions, expiries, scenario/outcome mismatches, nonce/idempotency/policy mismatches, and other binding failures. Production rejects the simulation discriminator before signature or outcome processing. diff --git a/packages/contracts/package.json b/packages/contracts/package.json new file mode 100644 index 0000000..af42854 --- /dev/null +++ b/packages/contracts/package.json @@ -0,0 +1,9 @@ +{ + "name": "@world-id/web-authenticator-contracts", + "private": true, + "version": "0.0.0", + "type": "module", + "exports": { + ".": "./src/index.ts" + } +} diff --git a/packages/contracts/src/authenticator-ui-copy-v1.ts b/packages/contracts/src/authenticator-ui-copy-v1.ts new file mode 100644 index 0000000..221682c --- /dev/null +++ b/packages/contracts/src/authenticator-ui-copy-v1.ts @@ -0,0 +1,170 @@ +import type { + AuthenticatorUiDetailCodeV1, + AuthenticatorUiStateIdV1, +} from "./authenticator-ui-flow-v1"; + +export interface AuthenticatorUiCopyV1 { + readonly heading: string; + readonly body: string; + readonly primaryAction: string | null; + readonly secondaryAction: string | null; +} + +const copy = ( + heading: string, + body: string, + primaryAction: string | null = null, + secondaryAction: string | null = null, +): AuthenticatorUiCopyV1 => Object.freeze({ heading, body, primaryAction, secondaryAction }); + +export const AUTHENTICATOR_UI_STAGING_BANNER_V1 = + "Staging demo · No biometric verification" as const; + +export const AUTHENTICATOR_UI_COPY_V1: Readonly< + Record +> = Object.freeze({ + request_checking: copy("Checking request", "Please wait while this staging request is checked."), + request_review: copy( + "Camera-flow demo for Zoom", + "This staging demo does not verify a person or issue a Selfie Check credential. Camera images stay on this device.", + "Continue", + "Cancel", + ), + request_invalid: copy("Request not valid", "Close this tab, then start a new staging request from the app.", "Close"), + request_expired: copy("Request expired", "Close this tab, then start a new staging request from the app.", "Close"), + request_return_target_invalid: copy("Cannot return safely", "The staging return destination was not approved.", "Close"), + request_rp_identity_unavailable: copy("App details unavailable", "The requesting app could not be matched to an approved presentation.", "Close"), + admission_checking: copy("Checking this browser", "No camera or authenticator operation has started."), + admission_safari_candidate: copy("Safari can try this demo", "Continue to the staging authenticator step.", "Continue"), + admission_chrome_candidate: copy("Chrome can try this demo", "Continue to the staging authenticator step.", "Continue"), + admission_handoff_required: copy("Open in Safari or Chrome", "Continue in a normal browser tab before any sensitive operation starts.", "Open browser", "Cancel"), + admission_handoff_departing: copy("Opening browser", "A fresh staging challenge will be created after navigation."), + admission_handoff_failed: copy("Browser could not open", "Close this tab and try the handoff again from the app.", "Close"), + admission_update_required: copy("Update iOS to continue", "This first demo supports iOS 18 or later in a normal Safari or Chrome tab.", "Close"), + admission_unsupported: copy("Device not supported", "This first staging demo runs only on supported iPhone browsers.", "Close"), + admission_insecure: copy("Secure page required", "Open the approved secure staging page to continue.", "Close"), + admission_framed: copy("Open the page directly", "This staging flow cannot run inside another page.", "Close"), + admission_private: copy("Use a normal browser tab", "Private or unknown browsing contexts are not admitted in this first demo.", "Close"), + admission_pwa: copy("Use Safari or Chrome", "Installed web-app mode is not admitted in this first demo.", "Close"), + admission_unknown: copy("Browser support unknown", "This context cannot safely enter the staging flow.", "Close"), + demo_authenticator_intro: copy( + "Try the authenticator step", + "This staging demo uses an injected authenticator. It does not create a passkey, evaluate PRF, or create a World ID.", + "Continue with demo authenticator", + "Cancel", + ), + session_creating: copy("Starting staging session", "The server is creating an expiring simulator session."), + demo_authenticator_pending: copy("Starting demo authenticator", "No WebAuthn or PRF operation is running."), + session_completing_authenticator: copy("Completing demo step", "The server is checking the staging-only completion handle."), + demo_authenticator_ready: copy("Demo authenticator ready", "No passkey, PRF result, or World ID was created.", "Continue to camera"), + demo_authenticator_non_completion: copy("Demo authenticator not completed", "Try again to continue the staging workflow.", "Try again", "Cancel"), + demo_authenticator_unavailable: copy("Demo authenticator unavailable", "This staging demo cannot continue in this context.", "Return to app"), + demo_authenticator_interrupted: copy("Demo authenticator interrupted", "Try the staging step again.", "Try again", "Cancel"), + demo_authenticator_transport_failure: copy("Connection interrupted", "Check the authoritative staging status before retrying.", "Check status", "Cancel"), + demo_authenticator_invalid_response: copy("Demo response not valid", "The staging flow stopped safely.", "Return to app"), + session_reconciling: copy("Checking staging status", "The server is resolving the last operation without repeating it."), + session_error: copy("Staging status unknown", "The last operation may have completed. Check the server status before continuing.", "Check status", "Cancel"), + capture_policy_loading: copy("Preparing camera step", "Loading the provisional staging capture policy."), + capture_intro: copy( + "Try the camera step", + "Use your camera to collect local frame metadata for this staging workflow. No biometric or uniqueness check is performed.", + "Start camera demo", + "Cancel", + ), + capture_permission_request: copy("Allow camera access", "The browser will ask for camera access. Camera images stay on this device."), + capture_acquiring: copy("Starting camera", "Waiting for the user-facing camera."), + capture_preparing: copy("Preparing preview", "Waiting for the first local frame."), + capture_preview: copy("Camera ready", "Place your face in the oval, then hold steady.", "Collect frame metadata", "Cancel"), + capture_guidance_adjust: copy("Adjust the camera view", "Follow the local capture guidance, then try again.", "Try again", "Cancel"), + capture_guidance_retake: copy("Retake the capture", "The local image was not clear enough for this capture attempt.", "Retake", "Cancel"), + capture_guidance_unavailable: copy("Visual guidance unavailable", "You can continue only through the approved guidance-free staging path.", "Continue without guidance", "Cancel"), + capture_sampling: copy("Camera ready, hold steady", "Collecting local frame metadata. This is not biometric verification."), + capture_artifact_ready: copy("Frame metadata ready", "Camera pixels will be cleared before only metadata and digests are submitted."), + capture_cleaning: copy("Closing camera", "Stopping camera tracks and clearing transient frame buffers."), + capture_complete: copy("Capture complete", "Only the approved metadata and digests are ready for the staging simulator."), + capture_error: copy("Camera step stopped", "The capture ended safely. Review the reason and try an allowed next step.", "Try again", "Cancel"), + biometric_simulation_pending: copy("Running staging scenario", "The server-selected simulator is processing workflow metadata. No biometric model is running."), + biometric_simulated_pass: copy("Pass scenario returned", "This is a server-selected simulator result. No biometric check ran."), + biometric_simulated_reject: copy("Reject scenario returned", "This staging result does not mean a spoof or person was detected.", "Return to app"), + biometric_simulated_retry: copy("Retry scenario returned", "Start a new local capture attempt in the same unexpired staging session.", "Retake", "Cancel"), + biometric_simulated_unavailable: copy("Simulator unavailable", "Check status or retry the same staging operation without assuming success.", "Retry", "Cancel"), + issuance_simulation_pending: copy("Creating staging artifact", "The issuance simulator is creating a non-production workflow artifact."), + issuance_simulated_reject: copy("Issuance scenario rejected", "No credential or proof was issued.", "Return to app"), + issuance_simulated_unavailable: copy("Issuance simulator unavailable", "Check status or retry the same staging operation without assuming success.", "Retry", "Cancel"), + simulated_credential_ready: copy( + "Staging demo complete", + "A non-production workflow artifact was created. No biometric verification or uniqueness check was performed. It is not a Selfie Check credential.", + "Return to app", + ), + return_redirecting: copy("Returning to app", "The server-approved return action is in progress."), + return_callback_failed: copy("Could not return", "The staging result remains unchanged. Try the server-approved return action again.", "Try again", "Close"), + returned: copy("Returned", "The staging flow is complete."), + flow_cancelling: copy("Cancelling", "Stopping active work and clearing transient data."), + flow_cancelled: copy("Demo cancelled", "Camera tracks and transient data were cleared.", "Close"), + flow_closed: copy("You can close this tab", "No session-bound return action was used."), + flow_expired: copy("Session expired", "Close this tab and start a new staging session from the app.", "Close"), + flow_failed: copy("Demo stopped safely", "No success was assumed. Close this tab and start again from the app.", "Close"), +}); + +export const AUTHENTICATOR_UI_DETAIL_COPY_V1: Readonly< + Record +> = Object.freeze({ + face_not_found: "Move into the camera view.", + multiple_faces: "Keep only one face in the camera view.", + move_closer: "Move closer to the camera.", + move_farther: "Move farther from the camera.", + center_face: "Center your face in the oval.", + improve_lighting: "Move to brighter, even lighting.", + reduce_lighting: "Move away from very bright light.", + image_blurry: "Hold the device steady and retake the capture.", + camera_inactive: "The camera is not active.", + camera_unavailable: "The camera is unavailable.", + face_guidance_unavailable: "Face-count guidance is unavailable.", + framing_guidance_unavailable: "Framing guidance is unavailable.", + lighting_guidance_unavailable: "Lighting guidance is unavailable.", + sharpness_guidance_unavailable: "Sharpness guidance is unavailable.", + retake_limit_reached: "The staging retake limit was reached.", + policy_invalid: "The staging quality policy is not valid.", + quality_input_invalid: "The local quality input is not valid.", + unsupported_context: "This browser context cannot start the camera step.", + prf_not_ready: "The staging compatibility gate is not ready.", + user_activation_required: "Tap the camera button to start.", + permission_denied: "Camera permission was not granted.", + camera_busy: "Another app or page may be using the camera.", + camera_restricted: "Camera access is restricted on this device.", + camera_unsupported: "This browser does not expose the required camera API.", + non_user_facing_camera: "A user-facing camera was not available.", + constraints_unsatisfied: "The requested camera settings were unavailable.", + acquisition_aborted: "Camera startup was interrupted.", + permission_timeout: "The camera permission request timed out.", + preview_timeout: "The first camera frame did not arrive in time.", + preview_invalid_frame: "The camera returned an invalid frame.", + interrupted: "The active step was interrupted.", + session_expired: "The staging session expired.", + capture_in_progress: "A capture attempt is already running.", + artifact_limit: "The capture exceeded the provisional staging limits.", + quality_callback_failed: "Local capture guidance failed safely.", + unknown: "An unknown local capture error occurred.", + gateway_disabled: "The staging gateway is disabled.", + invalid_request: "The staging request was not valid.", + body_too_large: "The staging request exceeded its size limit.", + unauthorized: "The staging request could not be authenticated.", + origin_forbidden: "This origin is not approved for the staging flow.", + not_found: "The staging session was not found.", + expired: "The staging session expired.", + invalid_state: "The staging operation is not allowed in the current state.", + binding_mismatch: "The operation did not match the existing staging request.", + replay_rejected: "The staging operation was already consumed.", + artifact_invalid: "The frame metadata did not match the staging policy.", + resource_busy: "The staging service is busy.", + network_unavailable: "The network is unavailable.", + network_timeout: "The staging request timed out.", + response_invalid: "The staging response was not valid.", + return_target_invalid: "The return destination was not approved.", + navigation_blocked: "The browser blocked the return action.", + navigation_failed: "The return action failed.", + safe_internal_error: "The staging demo stopped safely.", +}); + +// Copy is intentionally explicit about negative assurance. Figma text that says +// real person, liveness, or real passkey/Selfie Check success is not used here. diff --git a/packages/contracts/src/authenticator-ui-flow-v1.ts b/packages/contracts/src/authenticator-ui-flow-v1.ts new file mode 100644 index 0000000..8fbf6b5 --- /dev/null +++ b/packages/contracts/src/authenticator-ui-flow-v1.ts @@ -0,0 +1,1444 @@ +import type { EnrollmentSessionStateV2 } from "./enrollment-session-v2"; +import { ENROLLMENT_SESSION_STATES_V2 } from "./enrollment-session-v2"; +import type { RuntimeEnvironment } from "./common"; +import { + assertSimulationArtifactAllowed, + hasExactKeys, + isRecord, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, +} from "./common"; +import { + RP_PRESENTATION_IDS_V0, + isSimulatorBrowserSessionErrorV0, + type RpPresentationIdV0, + type SimulatorBrowserSessionErrorV0, +} from "./simulator-browser-session-port-v0"; + +export const AUTHENTICATOR_UI_FLOW_V1 = "authenticator_ui_flow_v1" as const; +export const AUTHENTICATOR_UI_SNAPSHOT_V1 = "authenticator_ui_snapshot_v1" as const; + +export const AUTHENTICATOR_UI_STATES_V1 = Object.freeze([ + "request_checking", + "request_review", + "request_invalid", + "request_expired", + "request_return_target_invalid", + "request_rp_identity_unavailable", + "admission_checking", + "admission_safari_candidate", + "admission_chrome_candidate", + "admission_handoff_required", + "admission_handoff_departing", + "admission_handoff_failed", + "admission_update_required", + "admission_unsupported", + "admission_insecure", + "admission_framed", + "admission_private", + "admission_pwa", + "admission_unknown", + "demo_authenticator_intro", + "session_creating", + "demo_authenticator_pending", + "session_completing_authenticator", + "demo_authenticator_ready", + "demo_authenticator_non_completion", + "demo_authenticator_unavailable", + "demo_authenticator_interrupted", + "demo_authenticator_transport_failure", + "demo_authenticator_invalid_response", + "session_reconciling", + "session_error", + "capture_policy_loading", + "capture_intro", + "capture_permission_request", + "capture_acquiring", + "capture_preparing", + "capture_preview", + "capture_guidance_adjust", + "capture_guidance_retake", + "capture_guidance_unavailable", + "capture_sampling", + "capture_artifact_ready", + "capture_cleaning", + "capture_complete", + "capture_error", + "biometric_simulation_pending", + "biometric_simulated_pass", + "biometric_simulated_reject", + "biometric_simulated_retry", + "biometric_simulated_unavailable", + "issuance_simulation_pending", + "issuance_simulated_reject", + "issuance_simulated_unavailable", + "simulated_credential_ready", + "return_redirecting", + "return_callback_failed", + "returned", + "flow_cancelling", + "flow_cancelled", + "flow_closed", + "flow_expired", + "flow_failed", +] as const); + +export type AuthenticatorUiStateIdV1 = (typeof AUTHENTICATOR_UI_STATES_V1)[number]; + +export const AUTHENTICATOR_UI_PROGRESS_STAGES_V1 = Object.freeze([ + "request_validation", + "admission", + "demo_authenticator", + "session_create", + "camera_permission", + "camera_prepare", + "frame_collection", + "biometric_simulation", + "issuance_simulation", + "status_recovery", + "callback", + "cancellation", +] as const); + +export type AuthenticatorUiProgressStageV1 = + (typeof AUTHENTICATOR_UI_PROGRESS_STAGES_V1)[number]; +export type AuthenticatorUiProgressStatusV1 = "idle" | "pending" | "complete"; + +export interface AuthenticatorUiProgressV1 { + readonly stage: AuthenticatorUiProgressStageV1; + readonly status: AuthenticatorUiProgressStatusV1; +} + +export const AUTHENTICATOR_UI_DETAIL_CODES_V1 = Object.freeze([ + "face_not_found", + "multiple_faces", + "move_closer", + "move_farther", + "center_face", + "improve_lighting", + "reduce_lighting", + "image_blurry", + "camera_inactive", + "camera_unavailable", + "face_guidance_unavailable", + "framing_guidance_unavailable", + "lighting_guidance_unavailable", + "sharpness_guidance_unavailable", + "retake_limit_reached", + "policy_invalid", + "quality_input_invalid", + "unsupported_context", + "prf_not_ready", + "user_activation_required", + "permission_denied", + "camera_busy", + "camera_restricted", + "camera_unsupported", + "non_user_facing_camera", + "constraints_unsatisfied", + "acquisition_aborted", + "permission_timeout", + "preview_timeout", + "preview_invalid_frame", + "interrupted", + "session_expired", + "capture_in_progress", + "artifact_limit", + "quality_callback_failed", + "unknown", + "gateway_disabled", + "invalid_request", + "body_too_large", + "unauthorized", + "origin_forbidden", + "not_found", + "expired", + "invalid_state", + "binding_mismatch", + "replay_rejected", + "artifact_invalid", + "resource_busy", + "network_unavailable", + "network_timeout", + "response_invalid", + "return_target_invalid", + "navigation_blocked", + "navigation_failed", + "safe_internal_error", +] as const); + +export type AuthenticatorUiDetailCodeV1 = + (typeof AUTHENTICATOR_UI_DETAIL_CODES_V1)[number]; + +export const AUTHENTICATOR_UI_VISUAL_SOURCES_V1 = Object.freeze([ + "figma_5132_134352", + "figma_5132_134394", + "figma_5132_134441", + "figma_5132_134488", + "figma_5132_134535", + "figma_5132_134582_external", + "figma_5132_134643", + "figma_5132_134692_external", + "figma_5132_134743", + "figma_5132_134841", + "figma_5132_134939", + "figma_5132_135038", + "figma_5132_135071", + "figma_5132_135104", + "verified_template", + "not_figma_verified", + "none", +] as const); + +export type AuthenticatorUiVisualSourceV1 = + (typeof AUTHENTICATOR_UI_VISUAL_SOURCES_V1)[number]; + +export interface AuthenticatorUiSnapshotV1 { + readonly kind: typeof AUTHENTICATOR_UI_SNAPSHOT_V1; + readonly version: typeof AUTHENTICATOR_UI_FLOW_V1; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly state: AuthenticatorUiStateIdV1; + readonly progress: AuthenticatorUiProgressV1; + readonly detailCode: AuthenticatorUiDetailCodeV1 | null; + readonly authoritativeSessionState: EnrollmentSessionStateV2 | null; + readonly rpPresentationId: RpPresentationIdV0 | null; + readonly visualSource: AuthenticatorUiVisualSourceV1; +} + +export const AUTHENTICATOR_UI_STATE_PROGRESS_V1: Readonly< + Record +> = { + request_checking: { stage: "request_validation", status: "pending" }, + request_review: { stage: "request_validation", status: "complete" }, + request_invalid: { stage: "request_validation", status: "complete" }, + request_expired: { stage: "request_validation", status: "complete" }, + request_return_target_invalid: { stage: "request_validation", status: "complete" }, + request_rp_identity_unavailable: { stage: "request_validation", status: "complete" }, + admission_checking: { stage: "admission", status: "pending" }, + admission_safari_candidate: { stage: "admission", status: "complete" }, + admission_chrome_candidate: { stage: "admission", status: "complete" }, + admission_handoff_required: { stage: "admission", status: "complete" }, + admission_handoff_departing: { stage: "admission", status: "pending" }, + admission_handoff_failed: { stage: "admission", status: "complete" }, + admission_update_required: { stage: "admission", status: "complete" }, + admission_unsupported: { stage: "admission", status: "complete" }, + admission_insecure: { stage: "admission", status: "complete" }, + admission_framed: { stage: "admission", status: "complete" }, + admission_private: { stage: "admission", status: "complete" }, + admission_pwa: { stage: "admission", status: "complete" }, + admission_unknown: { stage: "admission", status: "complete" }, + demo_authenticator_intro: { stage: "demo_authenticator", status: "idle" }, + session_creating: { stage: "session_create", status: "pending" }, + demo_authenticator_pending: { stage: "demo_authenticator", status: "pending" }, + session_completing_authenticator: { stage: "demo_authenticator", status: "pending" }, + demo_authenticator_ready: { stage: "demo_authenticator", status: "complete" }, + demo_authenticator_non_completion: { stage: "demo_authenticator", status: "complete" }, + demo_authenticator_unavailable: { stage: "demo_authenticator", status: "complete" }, + demo_authenticator_interrupted: { stage: "demo_authenticator", status: "complete" }, + demo_authenticator_transport_failure: { stage: "demo_authenticator", status: "complete" }, + demo_authenticator_invalid_response: { stage: "demo_authenticator", status: "complete" }, + session_reconciling: { stage: "status_recovery", status: "pending" }, + session_error: { stage: "status_recovery", status: "complete" }, + capture_policy_loading: { stage: "camera_prepare", status: "pending" }, + capture_intro: { stage: "camera_prepare", status: "complete" }, + capture_permission_request: { stage: "camera_permission", status: "pending" }, + capture_acquiring: { stage: "camera_prepare", status: "pending" }, + capture_preparing: { stage: "camera_prepare", status: "pending" }, + capture_preview: { stage: "camera_prepare", status: "complete" }, + capture_guidance_adjust: { stage: "camera_prepare", status: "complete" }, + capture_guidance_retake: { stage: "frame_collection", status: "complete" }, + capture_guidance_unavailable: { stage: "camera_prepare", status: "complete" }, + capture_sampling: { stage: "frame_collection", status: "pending" }, + capture_artifact_ready: { stage: "frame_collection", status: "complete" }, + capture_cleaning: { stage: "frame_collection", status: "pending" }, + capture_complete: { stage: "frame_collection", status: "complete" }, + capture_error: { stage: "frame_collection", status: "complete" }, + biometric_simulation_pending: { stage: "biometric_simulation", status: "pending" }, + biometric_simulated_pass: { stage: "biometric_simulation", status: "complete" }, + biometric_simulated_reject: { stage: "biometric_simulation", status: "complete" }, + biometric_simulated_retry: { stage: "biometric_simulation", status: "complete" }, + biometric_simulated_unavailable: { stage: "biometric_simulation", status: "complete" }, + issuance_simulation_pending: { stage: "issuance_simulation", status: "pending" }, + issuance_simulated_reject: { stage: "issuance_simulation", status: "complete" }, + issuance_simulated_unavailable: { stage: "issuance_simulation", status: "complete" }, + simulated_credential_ready: { stage: "issuance_simulation", status: "complete" }, + return_redirecting: { stage: "callback", status: "pending" }, + return_callback_failed: { stage: "callback", status: "complete" }, + returned: { stage: "callback", status: "complete" }, + flow_cancelling: { stage: "cancellation", status: "pending" }, + flow_cancelled: { stage: "cancellation", status: "complete" }, + flow_closed: { stage: "cancellation", status: "complete" }, + flow_expired: { stage: "cancellation", status: "complete" }, + flow_failed: { stage: "cancellation", status: "complete" }, +}; + +for (const progress of Object.values(AUTHENTICATOR_UI_STATE_PROGRESS_V1)) { + Object.freeze(progress); +} +Object.freeze(AUTHENTICATOR_UI_STATE_PROGRESS_V1); + +const ADJUST_CODES = new Set([ + "face_not_found", + "multiple_faces", + "move_closer", + "move_farther", + "center_face", + "improve_lighting", + "reduce_lighting", +]); + +const UNAVAILABLE_GUIDANCE_CODES = new Set([ + "camera_inactive", + "camera_unavailable", + "face_guidance_unavailable", + "framing_guidance_unavailable", + "lighting_guidance_unavailable", + "sharpness_guidance_unavailable", + "retake_limit_reached", + "policy_invalid", + "quality_input_invalid", +]); + +const CAPTURE_ERROR_CODES = new Set([ + "unsupported_context", + "prf_not_ready", + "user_activation_required", + "permission_denied", + "camera_unavailable", + "camera_busy", + "camera_restricted", + "camera_unsupported", + "non_user_facing_camera", + "constraints_unsatisfied", + "acquisition_aborted", + "permission_timeout", + "preview_timeout", + "preview_invalid_frame", + "interrupted", + "session_expired", + "capture_in_progress", + "artifact_limit", + "quality_callback_failed", + "unknown", +]); + +const SESSION_ERROR_CODES = new Set([ + "gateway_disabled", + "invalid_request", + "body_too_large", + "unauthorized", + "origin_forbidden", + "not_found", + "expired", + "invalid_state", + "binding_mismatch", + "replay_rejected", + "artifact_invalid", + "resource_busy", + "network_unavailable", + "network_timeout", + "response_invalid", +]); + +const CALLBACK_ERROR_CODES = new Set([ + "return_target_invalid", + "navigation_blocked", + "navigation_failed", +]); + +function detailMatchesState( + state: AuthenticatorUiStateIdV1, + detailCode: AuthenticatorUiDetailCodeV1 | null, +): boolean { + if (state === "capture_guidance_adjust") return detailCode !== null && ADJUST_CODES.has(detailCode); + if (state === "capture_guidance_retake") return detailCode === "image_blurry"; + if (state === "capture_guidance_unavailable") { + return detailCode !== null && UNAVAILABLE_GUIDANCE_CODES.has(detailCode); + } + if (state === "capture_error") return detailCode !== null && CAPTURE_ERROR_CODES.has(detailCode); + if (state === "session_error") return detailCode !== null && SESSION_ERROR_CODES.has(detailCode); + if (state === "return_callback_failed") { + return detailCode !== null && CALLBACK_ERROR_CODES.has(detailCode); + } + if (state === "flow_failed") return detailCode === "safe_internal_error"; + return detailCode === null; +} + +export const ENROLLMENT_SESSION_TO_UI_STATE_V1: Readonly< + Record +> = Object.freeze({ + created: "demo_authenticator_pending", + passkey_complete: "demo_authenticator_ready", + capture_ready: "capture_intro", + biometric_simulation_pending: "biometric_simulation_pending", + simulated_pass: "biometric_simulated_pass", + simulated_reject: "biometric_simulated_reject", + simulated_retry: "biometric_simulated_retry", + simulated_unavailable: "biometric_simulated_unavailable", + issuance_simulation_pending: "issuance_simulation_pending", + simulated_issuance_reject: "issuance_simulated_reject", + simulated_issuance_unavailable: "issuance_simulated_unavailable", + simulated_credential_ready: "simulated_credential_ready", + cancelled: "flow_cancelled", + expired: "flow_expired", +}); + +const frozenUiStates = ( + ...states: readonly AuthenticatorUiStateIdV1[] +): readonly AuthenticatorUiStateIdV1[] => Object.freeze([...states]); + +export const ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1: Readonly< + Record +> = Object.freeze({ + created: frozenUiStates( + "demo_authenticator_pending", + "session_completing_authenticator", + "demo_authenticator_non_completion", + "demo_authenticator_unavailable", + "demo_authenticator_interrupted", + "demo_authenticator_transport_failure", + "demo_authenticator_invalid_response", + "session_reconciling", + "session_error", + "flow_cancelling", + ), + passkey_complete: frozenUiStates( + "demo_authenticator_ready", + "capture_policy_loading", + "session_reconciling", + "session_error", + "flow_cancelling", + ), + capture_ready: frozenUiStates( + "capture_intro", + "capture_permission_request", + "capture_acquiring", + "capture_preparing", + "capture_preview", + "capture_guidance_adjust", + "capture_guidance_retake", + "capture_guidance_unavailable", + "capture_sampling", + "capture_artifact_ready", + "capture_cleaning", + "capture_complete", + "capture_error", + "session_reconciling", + "session_error", + "flow_cancelling", + ), + biometric_simulation_pending: frozenUiStates( + "biometric_simulation_pending", + "session_reconciling", + "session_error", + "flow_cancelling", + ), + simulated_pass: frozenUiStates( + "biometric_simulated_pass", + "issuance_simulation_pending", + "session_reconciling", + "session_error", + "flow_cancelling", + ), + simulated_reject: frozenUiStates( + "biometric_simulated_reject", + ), + simulated_retry: frozenUiStates( + "biometric_simulated_retry", + "capture_policy_loading", + "session_reconciling", + "session_error", + "flow_cancelling", + ), + simulated_unavailable: frozenUiStates( + "biometric_simulated_unavailable", + "session_reconciling", + "session_error", + "flow_cancelling", + ), + issuance_simulation_pending: frozenUiStates( + "issuance_simulation_pending", + "session_reconciling", + "session_error", + "flow_cancelling", + ), + simulated_issuance_reject: frozenUiStates( + "issuance_simulated_reject", + ), + simulated_issuance_unavailable: frozenUiStates( + "issuance_simulated_unavailable", + "session_reconciling", + "session_error", + "flow_cancelling", + ), + simulated_credential_ready: frozenUiStates( + "simulated_credential_ready", + ), + cancelled: frozenUiStates("flow_cancelled"), + expired: frozenUiStates("flow_expired"), +}); + +const SERVER_STATE_REQUIRED_UI_STATES = new Set([ + "demo_authenticator_pending", + "session_completing_authenticator", + "demo_authenticator_ready", + "demo_authenticator_non_completion", + "demo_authenticator_unavailable", + "demo_authenticator_interrupted", + "demo_authenticator_transport_failure", + "demo_authenticator_invalid_response", + "capture_policy_loading", + "capture_intro", + "capture_permission_request", + "capture_acquiring", + "capture_preparing", + "capture_preview", + "capture_guidance_adjust", + "capture_guidance_retake", + "capture_guidance_unavailable", + "capture_sampling", + "capture_artifact_ready", + "capture_cleaning", + "capture_complete", + "capture_error", + "biometric_simulation_pending", + "biometric_simulated_pass", + "biometric_simulated_reject", + "biometric_simulated_retry", + "biometric_simulated_unavailable", + "issuance_simulation_pending", + "issuance_simulated_reject", + "issuance_simulated_unavailable", + "simulated_credential_ready", + "session_error", +]); + +function authoritativeStateMatchesUi( + state: AuthenticatorUiStateIdV1, + authoritativeSessionState: EnrollmentSessionStateV2 | null, +): boolean { + if (authoritativeSessionState === null) return !SERVER_STATE_REQUIRED_UI_STATES.has(state); + return ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1[authoritativeSessionState].includes(state); +} + +export const AUTHENTICATOR_UI_TERMINAL_STATES_V1 = Object.freeze([ + "request_invalid", + "request_expired", + "request_return_target_invalid", + "request_rp_identity_unavailable", + "admission_update_required", + "admission_unsupported", + "admission_insecure", + "admission_framed", + "admission_private", + "admission_pwa", + "admission_unknown", + "biometric_simulated_reject", + "issuance_simulated_reject", + "simulated_credential_ready", + "returned", + "flow_cancelled", + "flow_closed", + "flow_expired", + "flow_failed", +] as const satisfies readonly AuthenticatorUiStateIdV1[]); + +const TERMINAL_STATE_SET = new Set( + AUTHENTICATOR_UI_TERMINAL_STATES_V1, +); + +export const AUTHENTICATOR_UI_ACTIONS_V1 = Object.freeze([ + "continue", + "cancel", + "open_external_browser", + "start_demo_authenticator", + "continue_to_camera", + "start_camera", + "collect_frame_metadata", + "try_again", + "continue_without_guidance", + "retake", + "retry_same_operation", + "query_status", + "return_to_rp", + "close", +] as const); + +export type AuthenticatorUiActionV1 = (typeof AUTHENTICATOR_UI_ACTIONS_V1)[number]; + +export const AUTHENTICATOR_UI_EFFECTS_V1 = Object.freeze([ + "validate_request", + "evaluate_admission", + "open_external_browser", + "create_session", + "begin_demo_authenticator", + "complete_demo_authenticator", + "prepare_capture", + "start_capture", + "evaluate_quality", + "collect_frame_metadata", + "stop_capture", + "clear_transient_media", + "abort_active_effects", + "submit_capture", + "retry_unavailable", + "query_status", + "cancel_session", + "return_to_rp", + "close_locally", +] as const); + +export type AuthenticatorUiEffectV1 = (typeof AUTHENTICATOR_UI_EFFECTS_V1)[number]; + +export const AUTHENTICATOR_UI_INITIAL_EFFECTS_V1 = Object.freeze([ + "validate_request", +] as const satisfies readonly AuthenticatorUiEffectV1[]); + +export const AUTHENTICATOR_UI_EVENTS_V1 = Object.freeze([ + "request_accepted", + "request_invalid", + "request_expired", + "request_return_target_invalid", + "request_rp_identity_unavailable", + "continue", + "admission_safari_candidate", + "admission_chrome_candidate", + "admission_handoff_required", + "admission_update_required", + "admission_unsupported", + "admission_insecure", + "admission_framed", + "admission_private", + "admission_pwa", + "admission_unknown", + "handoff_started", + "handoff_failed", + "start_demo_authenticator", + "demo_authenticator_ready", + "demo_authenticator_non_completion", + "demo_authenticator_unavailable", + "demo_authenticator_interrupted", + "demo_authenticator_transport_failure", + "demo_authenticator_invalid_response", + "continue_to_camera", + "start_camera", + "capture_permission_requested", + "capture_acquiring", + "capture_preparing", + "capture_preview", + "quality_ready", + "quality_adjust", + "quality_retake", + "quality_unavailable", + "capture_sampling", + "capture_artifact_ready", + "cleanup_started", + "cleanup_complete", + "capture_failed", + "authoritative_session", + "session_failed", + "try_again", + "continue_without_guidance", + "retake", + "retry_requested", + "status_requested", + "cancel_requested", + "local_cancel_complete", + "local_close_requested", + "page_hidden", + "page_unloaded", + "orientation_invalidated", + "component_unmounted", + "operation_interrupted", + "session_expired", + "return_requested", + "return_failed", + "return_completed", + "fatal_error", +] as const); + +export type AuthenticatorUiEventTypeV1 = (typeof AUTHENTICATOR_UI_EVENTS_V1)[number]; +export const AUTHENTICATOR_UI_EVENT_V1 = "authenticator_ui_event_v1" as const; + +export interface AuthenticatorUiEventV1 { + readonly kind: typeof AUTHENTICATOR_UI_EVENT_V1; + readonly version: typeof AUTHENTICATOR_UI_FLOW_V1; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly event: AuthenticatorUiEventTypeV1; + readonly detailCode: AuthenticatorUiDetailCodeV1 | null; + readonly authoritativeSessionState: EnrollmentSessionStateV2 | null; + readonly rpPresentationId: RpPresentationIdV0 | null; +} + +export interface AuthenticatorUiTransitionV1 { + readonly snapshot: AuthenticatorUiSnapshotV1; + readonly effects: readonly AuthenticatorUiEffectV1[]; +} + +function frozenList(...values: readonly T[]): readonly T[] { + return Object.freeze([...values]); +} + +const EMPTY_ACTIONS = frozenList(); +const actionMap = Object.fromEntries( + AUTHENTICATOR_UI_STATES_V1.map((state) => [state, EMPTY_ACTIONS]), +) as Record; + +actionMap.request_review = frozenList("continue", "cancel"); +actionMap.admission_safari_candidate = frozenList("continue", "cancel"); +actionMap.admission_chrome_candidate = frozenList("continue", "cancel"); +actionMap.admission_handoff_required = frozenList("open_external_browser", "cancel"); +actionMap.demo_authenticator_intro = frozenList("start_demo_authenticator", "cancel"); +actionMap.demo_authenticator_ready = frozenList("continue_to_camera", "cancel"); +actionMap.demo_authenticator_non_completion = frozenList("try_again", "cancel"); +actionMap.demo_authenticator_interrupted = frozenList("try_again", "cancel"); +actionMap.demo_authenticator_transport_failure = frozenList("query_status", "cancel"); +actionMap.capture_intro = frozenList("start_camera", "cancel"); +actionMap.capture_preview = frozenList("collect_frame_metadata", "cancel"); +actionMap.capture_guidance_adjust = frozenList("try_again", "cancel"); +actionMap.capture_guidance_retake = frozenList("retake", "cancel"); +actionMap.capture_guidance_unavailable = frozenList("continue_without_guidance", "cancel"); +actionMap.capture_error = frozenList("try_again", "cancel"); +actionMap.biometric_simulated_retry = frozenList("retake", "cancel"); +actionMap.biometric_simulated_unavailable = frozenList( + "retry_same_operation", + "query_status", + "cancel", +); +actionMap.issuance_simulated_unavailable = frozenList( + "retry_same_operation", + "query_status", + "cancel", +); +actionMap.session_error = frozenList("query_status", "cancel"); +actionMap.return_callback_failed = frozenList("return_to_rp", "close"); + +for (const state of [ + "request_invalid", + "request_expired", + "request_return_target_invalid", + "request_rp_identity_unavailable", + "admission_handoff_failed", + "admission_update_required", + "admission_unsupported", + "admission_insecure", + "admission_framed", + "admission_private", + "admission_pwa", + "admission_unknown", + "flow_cancelled", + "flow_expired", + "flow_failed", +] as const) { + actionMap[state] = frozenList("close"); +} + +for (const state of [ + "demo_authenticator_unavailable", + "demo_authenticator_invalid_response", + "biometric_simulated_reject", + "issuance_simulated_reject", + "simulated_credential_ready", +] as const) { + actionMap[state] = frozenList("return_to_rp"); +} + +for (const state of [ + "request_checking", + "admission_checking", + "admission_handoff_departing", + "session_creating", + "demo_authenticator_pending", + "session_completing_authenticator", + "session_reconciling", + "capture_policy_loading", + "capture_permission_request", + "capture_acquiring", + "capture_preparing", + "capture_sampling", + "capture_artifact_ready", + "capture_cleaning", + "capture_complete", + "biometric_simulation_pending", + "biometric_simulated_pass", + "issuance_simulation_pending", + "return_redirecting", +] as const) { + actionMap[state] = frozenList(...actionMap[state], "cancel"); +} + +export const AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1: Readonly< + Record +> = Object.freeze(actionMap); + +function visualForState(state: AuthenticatorUiStateIdV1): AuthenticatorUiVisualSourceV1 { + if (state === "request_review") return "figma_5132_134352"; + if ( + state === "demo_authenticator_intro" || + state === "session_creating" || + state === "demo_authenticator_pending" || + state === "session_completing_authenticator" || + state === "demo_authenticator_ready" + ) { + return "figma_5132_134394"; + } + if (state === "demo_authenticator_unavailable") return "figma_5132_134441"; + if (state === "demo_authenticator_non_completion") return "figma_5132_134488"; + if ( + state === "demo_authenticator_transport_failure" || + state === "demo_authenticator_invalid_response" + ) { + return "figma_5132_134535"; + } + if (state === "capture_intro" || state === "capture_permission_request") { + return "figma_5132_134643"; + } + if ( + state === "capture_acquiring" || + state === "capture_preparing" || + state === "capture_preview" || + state === "capture_guidance_adjust" || + state === "capture_guidance_retake" || + state === "capture_guidance_unavailable" + ) { + return "figma_5132_134743"; + } + if (state === "capture_sampling") return "figma_5132_134841"; + if ( + state === "capture_artifact_ready" || + state === "capture_cleaning" || + state === "capture_complete" + ) { + return "figma_5132_134939"; + } + if (state === "biometric_simulation_pending") return "figma_5132_135038"; + if (state === "biometric_simulated_pass" || state === "issuance_simulation_pending") { + return "figma_5132_135071"; + } + if (state === "simulated_credential_ready" || state === "return_redirecting") { + return "figma_5132_135104"; + } + if (state.startsWith("biometric_") || state.startsWith("issuance_")) { + return "not_figma_verified"; + } + return "verified_template"; +} + +export const AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1: Readonly< + Record +> = Object.freeze(Object.fromEntries( + AUTHENTICATOR_UI_STATES_V1.map((state) => [state, visualForState(state)]), +) as Record); + +function eventPayloadIsValid(value: AuthenticatorUiEventV1): boolean { + if (value.event === "request_accepted") { + return value.rpPresentationId !== null && + value.detailCode === null && + value.authoritativeSessionState === null; + } + if (value.event === "authoritative_session") { + return value.authoritativeSessionState !== null && + value.detailCode === null && + value.rpPresentationId === null; + } + if (value.event === "quality_adjust") { + return value.detailCode !== null && ADJUST_CODES.has(value.detailCode) && + value.authoritativeSessionState === null && value.rpPresentationId === null; + } + if (value.event === "quality_retake") { + return value.detailCode === "image_blurry" && + value.authoritativeSessionState === null && value.rpPresentationId === null; + } + if (value.event === "quality_unavailable") { + return value.detailCode !== null && UNAVAILABLE_GUIDANCE_CODES.has(value.detailCode) && + value.authoritativeSessionState === null && value.rpPresentationId === null; + } + if (value.event === "capture_failed") { + return value.detailCode !== null && CAPTURE_ERROR_CODES.has(value.detailCode) && + value.authoritativeSessionState === null && value.rpPresentationId === null; + } + if (value.event === "session_failed") { + return value.detailCode !== null && SESSION_ERROR_CODES.has(value.detailCode) && + value.authoritativeSessionState === null && value.rpPresentationId === null; + } + if (value.event === "return_failed") { + return value.detailCode !== null && CALLBACK_ERROR_CODES.has(value.detailCode) && + value.authoritativeSessionState === null && value.rpPresentationId === null; + } + if (value.event === "fatal_error") { + return value.detailCode === "safe_internal_error" && + value.authoritativeSessionState === null && value.rpPresentationId === null; + } + return value.detailCode === null && + value.authoritativeSessionState === null && + value.rpPresentationId === null; +} + +export function isAuthenticatorUiEventV1(value: unknown): value is AuthenticatorUiEventV1 { + try { + if ( + !isRecord(value) || + !hasExactKeys(value, [ + "kind", + "version", + "mode", + "environment", + "event", + "detailCode", + "authoritativeSessionState", + "rpPresentationId", + ]) || + value.kind !== AUTHENTICATOR_UI_EVENT_V1 || + value.version !== AUTHENTICATOR_UI_FLOW_V1 || + value.mode !== SIMULATION_MODE || + value.environment !== SIMULATION_ENVIRONMENT || + typeof value.event !== "string" || + !AUTHENTICATOR_UI_EVENTS_V1.includes(value.event as AuthenticatorUiEventTypeV1) || + (value.detailCode !== null && + (typeof value.detailCode !== "string" || + !AUTHENTICATOR_UI_DETAIL_CODES_V1.includes( + value.detailCode as AuthenticatorUiDetailCodeV1, + ))) || + (value.authoritativeSessionState !== null && + (typeof value.authoritativeSessionState !== "string" || + !ENROLLMENT_SESSION_STATES_V2.includes( + value.authoritativeSessionState as EnrollmentSessionStateV2, + ))) || + (value.rpPresentationId !== null && + (typeof value.rpPresentationId !== "string" || + !RP_PRESENTATION_IDS_V0.includes(value.rpPresentationId as RpPresentationIdV0))) + ) { + return false; + } + return eventPayloadIsValid(value as unknown as AuthenticatorUiEventV1); + } catch { + return false; + } +} + +interface StaticTransitionV1 { + readonly state: AuthenticatorUiStateIdV1; + readonly effects: readonly AuthenticatorUiEffectV1[]; +} + +const staticTransition = ( + state: AuthenticatorUiStateIdV1, + ...effects: readonly AuthenticatorUiEffectV1[] +): StaticTransitionV1 => Object.freeze({ state, effects: frozenList(...effects) }); + +const STATIC_TRANSITIONS_V1: Readonly> = Object.freeze({ + "request_checking|request_accepted": staticTransition("request_review"), + "request_checking|request_invalid": staticTransition("request_invalid"), + "request_checking|request_expired": staticTransition("request_expired"), + "request_checking|request_return_target_invalid": staticTransition("request_return_target_invalid"), + "request_checking|request_rp_identity_unavailable": staticTransition("request_rp_identity_unavailable"), + "request_review|continue": staticTransition("admission_checking", "evaluate_admission"), + "admission_checking|admission_safari_candidate": staticTransition("admission_safari_candidate"), + "admission_checking|admission_chrome_candidate": staticTransition("admission_chrome_candidate"), + "admission_checking|admission_handoff_required": staticTransition("admission_handoff_required"), + "admission_checking|admission_update_required": staticTransition("admission_update_required"), + "admission_checking|admission_unsupported": staticTransition("admission_unsupported"), + "admission_checking|admission_insecure": staticTransition("admission_insecure"), + "admission_checking|admission_framed": staticTransition("admission_framed"), + "admission_checking|admission_private": staticTransition("admission_private"), + "admission_checking|admission_pwa": staticTransition("admission_pwa"), + "admission_checking|admission_unknown": staticTransition("admission_unknown"), + "admission_safari_candidate|continue": staticTransition("demo_authenticator_intro"), + "admission_chrome_candidate|continue": staticTransition("demo_authenticator_intro"), + "admission_handoff_required|handoff_started": staticTransition( + "admission_handoff_departing", + "open_external_browser", + ), + "admission_handoff_departing|handoff_failed": staticTransition("admission_handoff_failed"), + "demo_authenticator_intro|start_demo_authenticator": staticTransition( + "session_creating", + "create_session", + ), + "demo_authenticator_pending|demo_authenticator_ready": staticTransition( + "session_completing_authenticator", + "complete_demo_authenticator", + ), + "demo_authenticator_pending|demo_authenticator_non_completion": staticTransition( + "demo_authenticator_non_completion", + ), + "demo_authenticator_pending|demo_authenticator_unavailable": staticTransition( + "demo_authenticator_unavailable", + ), + "demo_authenticator_pending|demo_authenticator_interrupted": staticTransition( + "demo_authenticator_interrupted", + ), + "demo_authenticator_pending|demo_authenticator_transport_failure": staticTransition( + "demo_authenticator_transport_failure", + ), + "demo_authenticator_pending|demo_authenticator_invalid_response": staticTransition( + "demo_authenticator_invalid_response", + ), + "demo_authenticator_non_completion|try_again": staticTransition( + "demo_authenticator_pending", + "begin_demo_authenticator", + ), + "demo_authenticator_interrupted|try_again": staticTransition( + "demo_authenticator_pending", + "begin_demo_authenticator", + ), + "demo_authenticator_transport_failure|status_requested": staticTransition( + "session_reconciling", + "query_status", + ), + "demo_authenticator_ready|continue_to_camera": staticTransition( + "capture_policy_loading", + "prepare_capture", + ), + "capture_intro|start_camera": staticTransition("capture_permission_request", "start_capture"), + "capture_intro|capture_permission_requested": staticTransition("capture_permission_request"), + "capture_permission_request|capture_acquiring": staticTransition("capture_acquiring"), + "capture_acquiring|capture_preparing": staticTransition("capture_preparing"), + "capture_preparing|capture_preview": staticTransition("capture_preview"), + "capture_preview|quality_ready": staticTransition("capture_sampling", "collect_frame_metadata"), + "capture_sampling|capture_sampling": staticTransition("capture_sampling"), + "capture_preview|quality_adjust": staticTransition( + "capture_guidance_adjust", + "stop_capture", + "clear_transient_media", + ), + "capture_preview|quality_retake": staticTransition( + "capture_guidance_retake", + "stop_capture", + "clear_transient_media", + ), + "capture_preview|quality_unavailable": staticTransition( + "capture_guidance_unavailable", + "stop_capture", + "clear_transient_media", + ), + "capture_guidance_adjust|try_again": staticTransition("capture_permission_request", "start_capture"), + "capture_guidance_retake|retake": staticTransition("capture_permission_request", "start_capture"), + "capture_guidance_unavailable|continue_without_guidance": staticTransition( + "capture_sampling", + "start_capture", + "collect_frame_metadata", + ), + "capture_sampling|capture_artifact_ready": staticTransition( + "capture_artifact_ready", + "stop_capture", + "clear_transient_media", + ), + "capture_artifact_ready|cleanup_started": staticTransition("capture_cleaning"), + "capture_artifact_ready|cleanup_complete": staticTransition("capture_complete", "submit_capture"), + "capture_cleaning|cleanup_complete": staticTransition("capture_complete", "submit_capture"), + "capture_error|try_again": staticTransition("capture_permission_request", "start_capture"), + "biometric_simulated_retry|retake": staticTransition("capture_policy_loading", "prepare_capture"), + "biometric_simulated_unavailable|retry_requested": staticTransition( + "session_reconciling", + "retry_unavailable", + ), + "biometric_simulated_unavailable|status_requested": staticTransition( + "session_reconciling", + "query_status", + ), + "issuance_simulated_unavailable|retry_requested": staticTransition( + "session_reconciling", + "retry_unavailable", + ), + "issuance_simulated_unavailable|status_requested": staticTransition( + "session_reconciling", + "query_status", + ), + "session_error|status_requested": staticTransition( + "session_reconciling", + "query_status", + ), + "return_callback_failed|return_requested": staticTransition("return_redirecting", "return_to_rp"), + "return_redirecting|return_failed": staticTransition("return_callback_failed"), + "return_redirecting|return_completed": staticTransition("returned"), +}); + +const AUTHORITATIVE_STATUS_STATES = new Set([ + "session_creating", + "demo_authenticator_pending", + "session_completing_authenticator", + "capture_policy_loading", + "capture_complete", + "biometric_simulation_pending", + "biometric_simulated_pass", + "biometric_simulated_unavailable", + "issuance_simulation_pending", + "issuance_simulated_unavailable", + "session_reconciling", + "flow_cancelling", +]); + +const LIFECYCLE_ABORT_EVENTS = new Set([ + "page_hidden", + "page_unloaded", + "orientation_invalidated", + "component_unmounted", + "operation_interrupted", +]); + +function isProgress(value: unknown, state: AuthenticatorUiStateIdV1): boolean { + if (!isRecord(value) || !hasExactKeys(value, ["stage", "status"])) return false; + const expected = AUTHENTICATOR_UI_STATE_PROGRESS_V1[state]; + return value.stage === expected.stage && value.status === expected.status; +} + +export function isAuthenticatorUiSnapshotV1(value: unknown): value is AuthenticatorUiSnapshotV1 { + try { + if (!isRecord(value)) return false; + if ( + !hasExactKeys(value, [ + "kind", + "version", + "mode", + "environment", + "state", + "progress", + "detailCode", + "authoritativeSessionState", + "rpPresentationId", + "visualSource", + ]) || + value.kind !== AUTHENTICATOR_UI_SNAPSHOT_V1 || + value.version !== AUTHENTICATOR_UI_FLOW_V1 || + value.mode !== SIMULATION_MODE || + value.environment !== SIMULATION_ENVIRONMENT || + typeof value.state !== "string" || + !AUTHENTICATOR_UI_STATES_V1.includes(value.state as AuthenticatorUiStateIdV1) || + (value.detailCode !== null && + (typeof value.detailCode !== "string" || + !AUTHENTICATOR_UI_DETAIL_CODES_V1.includes(value.detailCode as AuthenticatorUiDetailCodeV1))) || + (value.authoritativeSessionState !== null && + (typeof value.authoritativeSessionState !== "string" || + !ENROLLMENT_SESSION_STATES_V2.includes(value.authoritativeSessionState as EnrollmentSessionStateV2))) || + (value.rpPresentationId !== null && + (typeof value.rpPresentationId !== "string" || + !RP_PRESENTATION_IDS_V0.includes(value.rpPresentationId as RpPresentationIdV0))) || + typeof value.visualSource !== "string" || + !AUTHENTICATOR_UI_VISUAL_SOURCES_V1.includes(value.visualSource as AuthenticatorUiVisualSourceV1) + ) { + return false; + } + const state = value.state as AuthenticatorUiStateIdV1; + const authoritativeSessionState = + value.authoritativeSessionState as EnrollmentSessionStateV2 | null; + return ( + isProgress(value.progress, state) && + detailMatchesState(state, value.detailCode as AuthenticatorUiDetailCodeV1 | null) && + authoritativeStateMatchesUi(state, authoritativeSessionState) + ); + } catch { + return false; + } +} + +export function makeAuthenticatorUiSnapshotV1(input: { + readonly state: AuthenticatorUiStateIdV1; + readonly detailCode?: AuthenticatorUiDetailCodeV1 | null; + readonly authoritativeSessionState?: EnrollmentSessionStateV2 | null; + readonly rpPresentationId?: RpPresentationIdV0 | null; + readonly visualSource?: AuthenticatorUiVisualSourceV1; +}): AuthenticatorUiSnapshotV1 { + const snapshot: AuthenticatorUiSnapshotV1 = Object.freeze({ + kind: AUTHENTICATOR_UI_SNAPSHOT_V1, + version: AUTHENTICATOR_UI_FLOW_V1, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + state: input.state, + progress: Object.freeze({ ...AUTHENTICATOR_UI_STATE_PROGRESS_V1[input.state] }), + detailCode: input.detailCode ?? null, + authoritativeSessionState: input.authoritativeSessionState ?? null, + rpPresentationId: input.rpPresentationId ?? null, + visualSource: input.visualSource ?? "none", + }); + if (!isAuthenticatorUiSnapshotV1(snapshot)) { + throw new TypeError("invalid_authenticator_ui_snapshot_v1"); + } + return snapshot; +} + +export function makeAuthenticatorUiEventV1(input: { + readonly event: AuthenticatorUiEventTypeV1; + readonly detailCode?: AuthenticatorUiDetailCodeV1 | null; + readonly authoritativeSessionState?: EnrollmentSessionStateV2 | null; + readonly rpPresentationId?: RpPresentationIdV0 | null; +}): AuthenticatorUiEventV1 { + const event: AuthenticatorUiEventV1 = Object.freeze({ + kind: AUTHENTICATOR_UI_EVENT_V1, + version: AUTHENTICATOR_UI_FLOW_V1, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + event: input.event, + detailCode: input.detailCode ?? null, + authoritativeSessionState: input.authoritativeSessionState ?? null, + rpPresentationId: input.rpPresentationId ?? null, + }); + if (!isAuthenticatorUiEventV1(event)) { + throw new TypeError("invalid_authenticator_ui_event_v1"); + } + return event; +} + +export function projectSimulatorBrowserErrorToUiEventV1( + value: unknown, +): AuthenticatorUiEventV1 | null { + if (!isSimulatorBrowserSessionErrorV0(value)) return null; + const error = value as SimulatorBrowserSessionErrorV0; + if (error.operation === "begin_demo_authenticator") { + if (error.reasonCode === "user_non_completion") { + return makeAuthenticatorUiEventV1({ event: "demo_authenticator_non_completion" }); + } + if (error.reasonCode === "demo_authenticator_unavailable") { + return makeAuthenticatorUiEventV1({ event: "demo_authenticator_unavailable" }); + } + if (error.reasonCode === "demo_authenticator_interrupted") { + return makeAuthenticatorUiEventV1({ event: "demo_authenticator_interrupted" }); + } + if ( + error.reasonCode === "network_unavailable" || + error.reasonCode === "network_timeout" + ) { + return makeAuthenticatorUiEventV1({ event: "demo_authenticator_transport_failure" }); + } + return makeAuthenticatorUiEventV1({ event: "demo_authenticator_invalid_response" }); + } + if (error.operation === "return_to_rp") { + return makeAuthenticatorUiEventV1({ + event: "return_failed", + detailCode: "navigation_failed", + }); + } + if (error.operation === "bootstrap") { + return makeAuthenticatorUiEventV1({ + event: "fatal_error", + detailCode: "safe_internal_error", + }); + } + if (error.operation === "create_session") { + return makeAuthenticatorUiEventV1({ + event: "fatal_error", + detailCode: "safe_internal_error", + }); + } + const detailCode = SESSION_ERROR_CODES.has( + error.reasonCode as AuthenticatorUiDetailCodeV1, + ) + ? error.reasonCode as AuthenticatorUiDetailCodeV1 + : "response_invalid"; + return makeAuthenticatorUiEventV1({ event: "session_failed", detailCode }); +} + +export function transitionAuthenticatorUiV1( + current: AuthenticatorUiSnapshotV1, + event: AuthenticatorUiEventV1, +): AuthenticatorUiTransitionV1 | null { + if (!isAuthenticatorUiSnapshotV1(current) || !isAuthenticatorUiEventV1(event)) { + return null; + } + if (TERMINAL_STATE_SET.has(current.state)) { + if ( + (event.event !== "return_requested" && event.event !== "local_close_requested") || + (event.event === "return_requested" && + !AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[current.state].includes("return_to_rp")) || + (event.event === "local_close_requested" && + !AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[current.state].includes("close")) + ) { + return null; + } + } + + let nextState: AuthenticatorUiStateIdV1; + let effects: readonly AuthenticatorUiEffectV1[] = frozenList(); + let detailCode: AuthenticatorUiDetailCodeV1 | null = event.detailCode; + let authoritativeSessionState = current.authoritativeSessionState; + let rpPresentationId = current.rpPresentationId; + + if (event.event === "authoritative_session") { + if (!AUTHORITATIVE_STATUS_STATES.has(current.state)) return null; + const serverState = event.authoritativeSessionState; + if (serverState === null) return null; + nextState = ENROLLMENT_SESSION_TO_UI_STATE_V1[serverState]; + authoritativeSessionState = serverState; + detailCode = null; + if (serverState === "created") effects = frozenList("begin_demo_authenticator"); + } else if (event.event === "cancel_requested") { + if (!AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[current.state].includes("cancel")) return null; + nextState = "flow_cancelling"; + effects = current.authoritativeSessionState === null + ? frozenList("abort_active_effects", "stop_capture", "clear_transient_media") + : frozenList( + "abort_active_effects", + "stop_capture", + "clear_transient_media", + "cancel_session", + ); + detailCode = null; + } else if (LIFECYCLE_ABORT_EVENTS.has(event.event)) { + if (TERMINAL_STATE_SET.has(current.state) || current.state === "flow_cancelling") { + return null; + } + nextState = "flow_cancelling"; + effects = current.authoritativeSessionState === null + ? frozenList("abort_active_effects", "stop_capture", "clear_transient_media") + : frozenList( + "abort_active_effects", + "stop_capture", + "clear_transient_media", + "cancel_session", + ); + detailCode = null; + } else if (event.event === "local_cancel_complete") { + if (current.state !== "flow_cancelling" || current.authoritativeSessionState !== null) { + return null; + } + nextState = "flow_cancelled"; + detailCode = null; + } else if (event.event === "session_expired") { + if (TERMINAL_STATE_SET.has(current.state)) return null; + nextState = "flow_expired"; + effects = frozenList("abort_active_effects", "stop_capture", "clear_transient_media"); + detailCode = null; + authoritativeSessionState = null; + } else if (event.event === "fatal_error") { + nextState = "flow_failed"; + effects = frozenList("abort_active_effects", "stop_capture", "clear_transient_media"); + authoritativeSessionState = null; + } else if (event.event === "session_failed") { + if (current.state === "session_creating" && current.authoritativeSessionState === null) { + nextState = "flow_failed"; + effects = frozenList("abort_active_effects", "stop_capture", "clear_transient_media"); + detailCode = "safe_internal_error"; + authoritativeSessionState = null; + } else if (!AUTHORITATIVE_STATUS_STATES.has(current.state)) { + return null; + } else { + nextState = "session_error"; + } + } else if (event.event === "capture_failed") { + if (!current.state.startsWith("capture_")) return null; + nextState = "capture_error"; + effects = frozenList("abort_active_effects", "stop_capture", "clear_transient_media"); + } else if (event.event === "local_close_requested") { + if (!AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[current.state].includes("close")) { + return null; + } + nextState = "flow_closed"; + effects = frozenList( + "abort_active_effects", + "stop_capture", + "clear_transient_media", + "close_locally", + ); + detailCode = null; + authoritativeSessionState = null; + } else if (event.event === "return_requested") { + const allowedActions = AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[current.state]; + if (!allowedActions.includes("return_to_rp")) return null; + nextState = "return_redirecting"; + effects = frozenList( + "abort_active_effects", + "stop_capture", + "clear_transient_media", + "return_to_rp", + ); + detailCode = null; + authoritativeSessionState = null; + } else { + const transition = STATIC_TRANSITIONS_V1[`${current.state}|${event.event}`]; + if (transition === undefined) return null; + nextState = transition.state; + effects = transition.effects; + if (event.event === "request_accepted") { + rpPresentationId = event.rpPresentationId; + } + } + + try { + const snapshot = makeAuthenticatorUiSnapshotV1({ + state: nextState, + detailCode, + authoritativeSessionState, + rpPresentationId, + visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[nextState], + }); + return Object.freeze({ snapshot, effects }); + } catch { + return null; + } +} + +export function dispatchAuthenticatorUiActionV1( + current: AuthenticatorUiSnapshotV1, + action: AuthenticatorUiActionV1, +): AuthenticatorUiTransitionV1 | null { + if ( + !isAuthenticatorUiSnapshotV1(current) || + !AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[current.state].includes(action) + ) { + return null; + } + if (action === "collect_frame_metadata") { + return Object.freeze({ + snapshot: current, + effects: frozenList("evaluate_quality"), + }); + } + const eventType: AuthenticatorUiEventTypeV1 = + action === "cancel" + ? "cancel_requested" + : action === "open_external_browser" + ? "handoff_started" + : action === "start_demo_authenticator" + ? "start_demo_authenticator" + : action === "continue_to_camera" + ? "continue_to_camera" + : action === "start_camera" + ? "start_camera" + : action === "try_again" + ? "try_again" + : action === "continue_without_guidance" + ? "continue_without_guidance" + : action === "retake" + ? "retake" + : action === "retry_same_operation" + ? "retry_requested" + : action === "query_status" + ? "status_requested" + : action === "return_to_rp" + ? "return_requested" + : action === "close" + ? "local_close_requested" + : "continue"; + return transitionAuthenticatorUiV1(current, makeAuthenticatorUiEventV1({ + event: eventType, + })); +} + +export function projectEnrollmentSessionStateToUiV1( + state: EnrollmentSessionStateV2, + input: Omit[0], "state" | "authoritativeSessionState"> = {}, +): AuthenticatorUiSnapshotV1 { + return makeAuthenticatorUiSnapshotV1({ + ...input, + state: ENROLLMENT_SESSION_TO_UI_STATE_V1[state], + authoritativeSessionState: state, + }); +} + +export function assertAuthenticatorUiSnapshotAllowed( + runtimeEnvironment: RuntimeEnvironment, + value: unknown, +): void { + assertSimulationArtifactAllowed(runtimeEnvironment, value); +} + +export function assertAuthenticatorUiEventAllowed( + runtimeEnvironment: RuntimeEnvironment, + value: unknown, +): void { + assertSimulationArtifactAllowed(runtimeEnvironment, value); +} + +// UI snapshots are categorical presentation state only. They are not telemetry, +// security evidence, biometric results, or proof that any external operation ran. diff --git a/packages/contracts/src/biometric-verification-port-v0.ts b/packages/contracts/src/biometric-verification-port-v0.ts new file mode 100644 index 0000000..213122a --- /dev/null +++ b/packages/contracts/src/biometric-verification-port-v0.ts @@ -0,0 +1,298 @@ +import type { + BiometricSimulationOutcomeV0, + BiometricSimulationScenarioV0, + HexSha256, + Identifier, + IsoDateTime, + RuntimeEnvironment, + StagingAuthenticationV0, + StagingEd25519TrustRootV0, +} from "./common"; +import { + assertSimulationArtifactAllowed, + BIOMETRIC_SIMULATION_OUTCOMES_V0, + BIOMETRIC_SIMULATION_SCENARIOS_V0, + hasExactKeys, + isHexSha256, + isIsoDateTime, + isRecord, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + verifyStagingEd25519V0, +} from "./common"; +import type { FrameBundleV0 } from "./frame-bundle-v0"; +import { validateFrameBundleV0 } from "./frame-bundle-v0"; +import type { SimulationCapturePolicyV0 } from "./simulation-capture-policy-v0"; + +export const BIOMETRIC_VERIFICATION_PORT_V0 = "biometric_verification_port_v0" as const; +export const BIOMETRIC_SIMULATION_REQUEST_V0 = "biometric_simulation_request_v0" as const; +export const SIMULATION_RECEIPT_V0 = "simulation_receipt_v0" as const; +export const BIOMETRIC_SIMULATOR_AUDIENCE_V0 = + "world_id_web_authenticator_biometric_simulator_staging" as const; + +export const BIOMETRIC_SCENARIO_OUTCOME_V0: Readonly< + Record +> = { + happy_path: "simulated_pass", + spoof_reject: "simulated_reject", + capture_retry: "simulated_retry", + dependency_unavailable: "simulated_unavailable", +}; + +export const BIOMETRIC_SCENARIO_REASON_V0 = { + happy_path: "scenario_happy_path", + spoof_reject: "scenario_spoof_reject", + capture_retry: "scenario_capture_retry", + dependency_unavailable: "scenario_dependency_unavailable", +} as const; + +export type BiometricSimulationReasonV0 = + (typeof BIOMETRIC_SCENARIO_REASON_V0)[BiometricSimulationScenarioV0]; + +export interface BiometricSimulationRequestV0 { + readonly kind: typeof BIOMETRIC_SIMULATION_REQUEST_V0; + readonly version: typeof BIOMETRIC_VERIFICATION_PORT_V0; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly audience: typeof BIOMETRIC_SIMULATOR_AUDIENCE_V0; + readonly requestId: Identifier; + readonly sessionId: Identifier; + readonly nonceDigestSha256: HexSha256; + readonly idempotencyKey: Identifier; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly capturePolicyId: Identifier; + readonly scenario: BiometricSimulationScenarioV0; + readonly frameBundle: FrameBundleV0; + readonly requestedAt: IsoDateTime; + readonly expiresAt: IsoDateTime; + readonly authentication: StagingAuthenticationV0; +} + +export interface SimulationReceiptV0 { + readonly kind: typeof SIMULATION_RECEIPT_V0; + readonly version: typeof BIOMETRIC_VERIFICATION_PORT_V0; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly audience: typeof BIOMETRIC_SIMULATOR_AUDIENCE_V0; + readonly receiptId: Identifier; + readonly requestId: Identifier; + readonly simulatorVersion: string; + readonly scenario: BiometricSimulationScenarioV0; + readonly sessionId: Identifier; + readonly nonceDigestSha256: HexSha256; + readonly idempotencyKey: Identifier; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly capturePolicyId: Identifier; + readonly artifactDigestSha256: HexSha256; + readonly outcome: BiometricSimulationOutcomeV0; + readonly reasonCode: BiometricSimulationReasonV0; + readonly issuedAt: IsoDateTime; + readonly expiresAt: IsoDateTime; + readonly authentication: StagingAuthenticationV0; +} + +function isNonEmptyString(value: unknown): value is string { + return typeof value === "string" && value.length > 0; +} + +function isStagingAuthenticationV0(value: unknown): value is StagingAuthenticationV0 { + return ( + isRecord(value) && + hasExactKeys(value, ["scheme", "keyId", "signatureBase64Url"]) && + value.scheme === "staging-ed25519" && + isNonEmptyString(value.keyId) && + isNonEmptyString(value.signatureBase64Url) + ); +} + +function isBiometricScenarioV0(value: unknown): value is BiometricSimulationScenarioV0 { + return ( + typeof value === "string" && + BIOMETRIC_SIMULATION_SCENARIOS_V0.includes(value as BiometricSimulationScenarioV0) + ); +} + +function hasValidTimeWindow(issuedAt: unknown, expiresAt: unknown): boolean { + return ( + isIsoDateTime(issuedAt) && + isIsoDateTime(expiresAt) && + Date.parse(expiresAt) > Date.parse(issuedAt) + ); +} + +export function isBiometricSimulationRequestV0( + value: unknown, +): value is BiometricSimulationRequestV0 { + if (!isRecord(value)) return false; + if ( + !hasExactKeys(value, [ + "kind", + "version", + "mode", + "environment", + "audience", + "requestId", + "sessionId", + "nonceDigestSha256", + "idempotencyKey", + "accountPublicMaterialDigestSha256", + "capturePolicyId", + "scenario", + "frameBundle", + "requestedAt", + "expiresAt", + "authentication", + ]) + ) { + return false; + } + return ( + value.kind === BIOMETRIC_SIMULATION_REQUEST_V0 && + value.version === BIOMETRIC_VERIFICATION_PORT_V0 && + value.mode === SIMULATION_MODE && + value.environment === SIMULATION_ENVIRONMENT && + value.audience === BIOMETRIC_SIMULATOR_AUDIENCE_V0 && + isNonEmptyString(value.requestId) && + isNonEmptyString(value.sessionId) && + isHexSha256(value.nonceDigestSha256) && + isNonEmptyString(value.idempotencyKey) && + isHexSha256(value.accountPublicMaterialDigestSha256) && + isNonEmptyString(value.capturePolicyId) && + isBiometricScenarioV0(value.scenario) && + isRecord(value.frameBundle) && + hasValidTimeWindow(value.requestedAt, value.expiresAt) && + isStagingAuthenticationV0(value.authentication) + ); +} + +export function isSimulationReceiptV0(value: unknown): value is SimulationReceiptV0 { + if (!isRecord(value)) return false; + if ( + !hasExactKeys(value, [ + "kind", + "version", + "mode", + "environment", + "audience", + "receiptId", + "requestId", + "simulatorVersion", + "scenario", + "sessionId", + "nonceDigestSha256", + "idempotencyKey", + "accountPublicMaterialDigestSha256", + "capturePolicyId", + "artifactDigestSha256", + "outcome", + "reasonCode", + "issuedAt", + "expiresAt", + "authentication", + ]) + ) { + return false; + } + if (!isBiometricScenarioV0(value.scenario)) return false; + return ( + value.kind === SIMULATION_RECEIPT_V0 && + value.version === BIOMETRIC_VERIFICATION_PORT_V0 && + value.mode === SIMULATION_MODE && + value.environment === SIMULATION_ENVIRONMENT && + value.audience === BIOMETRIC_SIMULATOR_AUDIENCE_V0 && + isNonEmptyString(value.receiptId) && + isNonEmptyString(value.requestId) && + isNonEmptyString(value.simulatorVersion) && + isNonEmptyString(value.sessionId) && + isHexSha256(value.nonceDigestSha256) && + isNonEmptyString(value.idempotencyKey) && + isHexSha256(value.accountPublicMaterialDigestSha256) && + isNonEmptyString(value.capturePolicyId) && + isHexSha256(value.artifactDigestSha256) && + typeof value.outcome === "string" && + BIOMETRIC_SIMULATION_OUTCOMES_V0.includes( + value.outcome as BiometricSimulationOutcomeV0, + ) && + value.outcome === BIOMETRIC_SCENARIO_OUTCOME_V0[value.scenario] && + value.reasonCode === BIOMETRIC_SCENARIO_REASON_V0[value.scenario] && + hasValidTimeWindow(value.issuedAt, value.expiresAt) && + isStagingAuthenticationV0(value.authentication) + ); +} + +export interface ExpectedBiometricSimulationRequestV0 { + readonly runtimeEnvironment: RuntimeEnvironment; + readonly requestId: Identifier; + readonly sessionId: Identifier; + readonly nonceDigestSha256: HexSha256; + readonly idempotencyKey: Identifier; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly capturePolicyId: Identifier; + readonly scenario: BiometricSimulationScenarioV0; + readonly now: IsoDateTime; +} + +export async function verifyBiometricSimulationRequestV0( + value: unknown, + expected: ExpectedBiometricSimulationRequestV0, + capturePolicy: SimulationCapturePolicyV0, + trustRoot: StagingEd25519TrustRootV0, +): Promise { + assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); + if (!isBiometricSimulationRequestV0(value)) return false; + if ( + value.requestId !== expected.requestId || + value.sessionId !== expected.sessionId || + value.nonceDigestSha256 !== expected.nonceDigestSha256 || + value.idempotencyKey !== expected.idempotencyKey || + value.accountPublicMaterialDigestSha256 !== expected.accountPublicMaterialDigestSha256 || + value.capturePolicyId !== expected.capturePolicyId || + value.scenario !== expected.scenario || + value.frameBundle.sessionId !== expected.sessionId || + value.frameBundle.nonceDigestSha256 !== expected.nonceDigestSha256 || + value.frameBundle.accountPublicMaterialDigestSha256 !== + expected.accountPublicMaterialDigestSha256 || + value.frameBundle.policyId !== expected.capturePolicyId || + Date.parse(value.requestedAt) > Date.parse(expected.now) || + Date.parse(value.expiresAt) <= Date.parse(expected.now) + ) { + return false; + } + if ((await validateFrameBundleV0(value.frameBundle, capturePolicy)).length > 0) return false; + return verifyStagingEd25519V0(value as unknown as Record, trustRoot); +} + +export interface ExpectedSimulationReceiptV0 + extends Omit { + readonly runtimeEnvironment: RuntimeEnvironment; + readonly receiptId: Identifier; + readonly artifactDigestSha256: HexSha256; + readonly now: IsoDateTime; +} + +export async function verifySimulationReceiptV0( + value: unknown, + expected: ExpectedSimulationReceiptV0, + trustRoot: StagingEd25519TrustRootV0, +): Promise { + assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); + if (!isSimulationReceiptV0(value)) return false; + if ( + value.receiptId !== expected.receiptId || + value.requestId !== expected.requestId || + value.sessionId !== expected.sessionId || + value.nonceDigestSha256 !== expected.nonceDigestSha256 || + value.idempotencyKey !== expected.idempotencyKey || + value.accountPublicMaterialDigestSha256 !== expected.accountPublicMaterialDigestSha256 || + value.capturePolicyId !== expected.capturePolicyId || + value.artifactDigestSha256 !== expected.artifactDigestSha256 || + value.scenario !== expected.scenario || + Date.parse(value.issuedAt) > Date.parse(expected.now) || + Date.parse(value.expiresAt) <= Date.parse(expected.now) + ) { + return false; + } + return verifyStagingEd25519V0(value as unknown as Record, trustRoot); +} + +// The simulator uses authenticated scenario mapping, never pixels or a browser spoof score. diff --git a/packages/contracts/src/client-quality-policy-v0.ts b/packages/contracts/src/client-quality-policy-v0.ts new file mode 100644 index 0000000..58e0cd0 --- /dev/null +++ b/packages/contracts/src/client-quality-policy-v0.ts @@ -0,0 +1,83 @@ +import type { Identifier } from "./common"; +import { SIMULATION_ENVIRONMENT, SIMULATION_MODE } from "./common"; + +export const CLIENT_QUALITY_POLICY_V0 = "client_quality_policy_v0" as const; + +export type ClientQualityCheckV0 = + | { readonly kind: "camera_active" } + | { readonly kind: "single_face" } + | { + readonly kind: "framing"; + readonly minFaceAreaRatio: number; + readonly maxFaceAreaRatio: number; + readonly maxCenterOffsetRatio: number; + } + | { + readonly kind: "lighting"; + readonly minMeanLuma: number; + readonly maxMeanLuma: number; + } + | { readonly kind: "sharpness"; readonly minScore: number }; + +export type ClientQualityActionV0 = "ready" | "adjust" | "retake" | "unavailable"; + +export interface ClientQualityPolicyV0 { + readonly version: typeof CLIENT_QUALITY_POLICY_V0; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly policyId: Identifier; + readonly purpose: "capture_ux_only"; + readonly checks: readonly ClientQualityCheckV0[]; + readonly maxRetakes: number; +} + +export interface ClientQualityResultV0 { + readonly version: typeof CLIENT_QUALITY_POLICY_V0; + readonly policyId: Identifier; + readonly action: ClientQualityActionV0; + readonly reasonCodes: readonly string[]; +} + +export function validateClientQualityPolicyV0( + policy: ClientQualityPolicyV0, +): readonly string[] { + const errors: string[] = []; + if (policy.version !== CLIENT_QUALITY_POLICY_V0) errors.push("version"); + if (policy.mode !== SIMULATION_MODE) errors.push("mode"); + if (policy.environment !== SIMULATION_ENVIRONMENT) errors.push("environment"); + if (policy.purpose !== "capture_ux_only") errors.push("purpose"); + if (policy.maxRetakes < 0) errors.push("maxRetakes"); + + const kinds = policy.checks.map((check) => check.kind); + if (new Set(kinds).size !== kinds.length) errors.push("duplicateChecks"); + if (!kinds.includes("camera_active")) errors.push("cameraActiveRequired"); + + for (const check of policy.checks) { + if (check.kind === "framing") { + if ( + check.minFaceAreaRatio < 0 || + check.maxFaceAreaRatio > 1 || + check.minFaceAreaRatio >= check.maxFaceAreaRatio || + check.maxCenterOffsetRatio < 0 || + check.maxCenterOffsetRatio > 1 + ) { + errors.push("framingThresholds"); + } + } + if (check.kind === "lighting") { + if ( + check.minMeanLuma < 0 || + check.maxMeanLuma > 255 || + check.minMeanLuma >= check.maxMeanLuma + ) { + errors.push("lightingThresholds"); + } + } + if (check.kind === "sharpness" && check.minScore < 0) { + errors.push("sharpnessThreshold"); + } + } + return errors; +} + +// Results contain actions and reason codes only: no frames, landmarks, bounds, or spoof score. diff --git a/packages/contracts/src/common.ts b/packages/contracts/src/common.ts new file mode 100644 index 0000000..7304a0b --- /dev/null +++ b/packages/contracts/src/common.ts @@ -0,0 +1,186 @@ +export type Base64Url = string; +export type HexSha256 = string; +export type IsoDateTime = string; +export type Identifier = string; + +export const SIMULATION_MODE = "simulation" as const; +export const SIMULATION_ENVIRONMENT = "staging" as const; + +export type RuntimeEnvironment = "development" | "test" | "staging" | "production"; + +export const BIOMETRIC_SIMULATION_SCENARIOS_V0 = [ + "happy_path", + "spoof_reject", + "capture_retry", + "dependency_unavailable", +] as const; + +export type BiometricSimulationScenarioV0 = + (typeof BIOMETRIC_SIMULATION_SCENARIOS_V0)[number]; + +export const BIOMETRIC_SIMULATION_OUTCOMES_V0 = [ + "simulated_pass", + "simulated_reject", + "simulated_retry", + "simulated_unavailable", +] as const; + +export type BiometricSimulationOutcomeV0 = + (typeof BIOMETRIC_SIMULATION_OUTCOMES_V0)[number]; + +export interface StagingAuthenticationV0 { + readonly scheme: "staging-ed25519"; + readonly keyId: Identifier; + readonly signatureBase64Url: Base64Url; +} + +export interface StagingEd25519TrustRootV0 { + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly audience: string; + readonly keyId: Identifier; + readonly publicKeyRawBase64Url: Base64Url; +} + +export function isRecord(value: unknown): value is Record { + return typeof value === "object" && value !== null && !Array.isArray(value); +} + +export function isHexSha256(value: unknown): value is HexSha256 { + return typeof value === "string" && /^[0-9a-f]{64}$/.test(value); +} + +export function hasExactKeys( + value: Record, + allowedKeys: readonly string[], +): boolean { + const actual = Object.keys(value).sort(); + const allowed = [...allowedKeys].sort(); + return actual.length === allowed.length && actual.every((key, index) => key === allowed[index]); +} + +export function isIsoDateTime(value: unknown): value is IsoDateTime { + return typeof value === "string" && Number.isFinite(Date.parse(value)); +} + +export function canonicalizeJsonV0(value: unknown): string { + if (value === null || typeof value === "boolean" || typeof value === "string") { + return JSON.stringify(value); + } + if (typeof value === "number") { + if (!Number.isSafeInteger(value)) throw new TypeError("Canonical V0 numbers must be safe integers"); + return JSON.stringify(value); + } + if (Array.isArray(value)) { + return `[${value.map(canonicalizeJsonV0).join(",")}]`; + } + if (isRecord(value)) { + const entries = Object.entries(value) + .filter(([, entryValue]) => entryValue !== undefined) + .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0)); + return `{${entries + .map(([key, entryValue]) => `${JSON.stringify(key)}:${canonicalizeJsonV0(entryValue)}`) + .join(",")}}`; + } + throw new TypeError("Value is not in the V0 canonical JSON domain"); +} + +export function stagingSignaturePreimageV0(value: Record): Uint8Array { + const authentication = value.authentication; + if (!isRecord(authentication)) throw new TypeError("Missing staging authentication"); + const { signatureBase64Url: _omitted, ...authenticationWithoutSignature } = authentication; + const preimage = { ...value, authentication: authenticationWithoutSignature }; + return new TextEncoder().encode(canonicalizeJsonV0(preimage)); +} + +export function bytesToBase64Url(bytes: Uint8Array): Base64Url { + let binary = ""; + for (const byte of bytes) binary += String.fromCharCode(byte); + return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, ""); +} + +export function base64UrlToBytes(value: Base64Url): Uint8Array { + const normalized = value.replace(/-/g, "+").replace(/_/g, "/"); + const padded = normalized.padEnd(Math.ceil(normalized.length / 4) * 4, "="); + const binary = atob(padded); + return Uint8Array.from(binary, (character) => character.charCodeAt(0)); +} + +export function bytesToArrayBuffer(bytes: Uint8Array): ArrayBuffer { + const copy = new Uint8Array(bytes.byteLength); + copy.set(bytes); + return copy.buffer; +} + +export async function verifyStagingEd25519V0( + value: Record, + trustRoot: StagingEd25519TrustRootV0, +): Promise { + const authentication = value.authentication; + if (!isRecord(authentication)) return false; + if ( + authentication.scheme !== "staging-ed25519" || + authentication.keyId !== trustRoot.keyId || + value.environment !== trustRoot.environment || + value.audience !== trustRoot.audience || + typeof authentication.signatureBase64Url !== "string" + ) { + return false; + } + try { + const key = await crypto.subtle.importKey( + "raw", + bytesToArrayBuffer(base64UrlToBytes(trustRoot.publicKeyRawBase64Url)), + { name: "Ed25519" }, + false, + ["verify"], + ); + return crypto.subtle.verify( + { name: "Ed25519" }, + key, + bytesToArrayBuffer(base64UrlToBytes(authentication.signatureBase64Url)), + bytesToArrayBuffer(stagingSignaturePreimageV0(value)), + ); + } catch { + return false; + } +} + +export class SimulationArtifactInProductionError extends Error { + constructor() { + super("Simulation artifacts are forbidden in production"); + this.name = "SimulationArtifactInProductionError"; + } +} + +export function assertSimulationArtifactAllowed( + runtimeEnvironment: RuntimeEnvironment, + value: unknown, +): void { + if (runtimeEnvironment !== "production") return; + try { + if (!isRecord(value)) return; + const kind = value.kind; + const mode = value.mode; + const environment = value.environment; + const isSimulationKind = + kind === "simulation_receipt_v0" || + kind === "simulated_staging_credential_v0" || + kind === "injected_authenticator_request_v0" || + kind === "staging_demo_authenticator_ready_v0" || + kind === "staging_demo_authenticator_error_v0" || + kind === "simulator_ui_bootstrap_v0" || + kind === "simulator_browser_demo_authenticator_ready_v0" || + kind === "simulator_browser_session_view_v0" || + kind === "simulator_browser_session_error_v0" || + kind === "simulator_browser_return_accepted_v0" || + kind === "simulated_workflow_artifact_summary_v0" || + kind === "authenticator_ui_snapshot_v1" || + kind === "authenticator_ui_event_v1"; + + if (isSimulationKind || mode === SIMULATION_MODE || environment === SIMULATION_ENVIRONMENT) { + throw new SimulationArtifactInProductionError(); + } + } catch { + throw new SimulationArtifactInProductionError(); + } +} diff --git a/packages/contracts/src/enrollment-session-v1.ts b/packages/contracts/src/enrollment-session-v1.ts new file mode 100644 index 0000000..2142cc7 --- /dev/null +++ b/packages/contracts/src/enrollment-session-v1.ts @@ -0,0 +1,71 @@ +import type { + BiometricSimulationScenarioV0, + HexSha256, + Identifier, + IsoDateTime, +} from "./common"; +import { SIMULATION_ENVIRONMENT, SIMULATION_MODE } from "./common"; + +export const ENROLLMENT_SESSION_V1 = "enrollment_session_v1" as const; + +export const ENROLLMENT_SESSION_STATES_V1 = [ + "created", + "passkey_complete", + "capture_ready", + "simulation_pending", + "simulated_pass", + "simulated_reject", + "simulated_retry", + "simulated_unavailable", + "issuance_pending", + "simulated_credential_ready", + "cancelled", + "expired", +] as const; + +export type EnrollmentSessionStateV1 = (typeof ENROLLMENT_SESSION_STATES_V1)[number]; + +export interface EnrollmentSessionV1 { + readonly version: typeof ENROLLMENT_SESSION_V1; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly sessionId: Identifier; + readonly rpRequestDigestSha256: HexSha256; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly nonceBase64Url: string; + readonly idempotencyKey: Identifier; + readonly biometricScenario: BiometricSimulationScenarioV0; + readonly state: EnrollmentSessionStateV1; + readonly createdAt: IsoDateTime; + readonly expiresAt: IsoDateTime; +} + +export const ENROLLMENT_SESSION_TRANSITIONS_V1: Readonly< + Record +> = { + created: ["passkey_complete", "cancelled", "expired"], + passkey_complete: ["capture_ready", "cancelled", "expired"], + capture_ready: ["simulation_pending", "cancelled", "expired"], + simulation_pending: [ + "simulated_pass", + "simulated_reject", + "simulated_retry", + "simulated_unavailable", + "expired", + ], + simulated_pass: ["issuance_pending", "expired"], + simulated_reject: [], + simulated_retry: ["capture_ready", "cancelled", "expired"], + simulated_unavailable: ["simulation_pending", "cancelled", "expired"], + issuance_pending: ["simulated_credential_ready", "simulated_unavailable", "expired"], + simulated_credential_ready: [], + cancelled: [], + expired: [], +}; + +export function isEnrollmentTransitionAllowedV1( + from: EnrollmentSessionStateV1, + to: EnrollmentSessionStateV1, +): boolean { + return ENROLLMENT_SESSION_TRANSITIONS_V1[from].includes(to); +} diff --git a/packages/contracts/src/enrollment-session-v2.ts b/packages/contracts/src/enrollment-session-v2.ts new file mode 100644 index 0000000..bcde1cc --- /dev/null +++ b/packages/contracts/src/enrollment-session-v2.ts @@ -0,0 +1,84 @@ +import type { + BiometricSimulationScenarioV0, + HexSha256, + Identifier, + IsoDateTime, +} from "./common"; +import { SIMULATION_ENVIRONMENT, SIMULATION_MODE } from "./common"; +import type { IssuanceSimulationScenarioV0 } from "./staging-issuance-port-v0"; + +export const ENROLLMENT_SESSION_V2 = "enrollment_session_v2" as const; + +export const ENROLLMENT_SESSION_STATES_V2 = [ + "created", + "passkey_complete", + "capture_ready", + "biometric_simulation_pending", + "simulated_pass", + "simulated_reject", + "simulated_retry", + "simulated_unavailable", + "issuance_simulation_pending", + "simulated_issuance_reject", + "simulated_issuance_unavailable", + "simulated_credential_ready", + "cancelled", + "expired", +] as const; + +export type EnrollmentSessionStateV2 = (typeof ENROLLMENT_SESSION_STATES_V2)[number]; + +export interface EnrollmentSessionV2 { + readonly version: typeof ENROLLMENT_SESSION_V2; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly sessionId: Identifier; + readonly rpRequestDigestSha256: HexSha256; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly nonceBase64Url: string; + readonly idempotencyKey: Identifier; + readonly biometricScenario: BiometricSimulationScenarioV0; + readonly issuanceScenario: IssuanceSimulationScenarioV0; + readonly state: EnrollmentSessionStateV2; + readonly createdAt: IsoDateTime; + readonly expiresAt: IsoDateTime; +} + +export const ENROLLMENT_SESSION_TRANSITIONS_V2: Readonly< + Record +> = { + created: ["passkey_complete", "cancelled", "expired"], + passkey_complete: ["capture_ready", "cancelled", "expired"], + capture_ready: ["biometric_simulation_pending", "cancelled", "expired"], + biometric_simulation_pending: [ + "simulated_pass", + "simulated_reject", + "simulated_retry", + "simulated_unavailable", + "expired", + ], + simulated_pass: ["issuance_simulation_pending", "expired"], + simulated_reject: [], + simulated_retry: ["capture_ready", "cancelled", "expired"], + simulated_unavailable: ["biometric_simulation_pending", "cancelled", "expired"], + issuance_simulation_pending: [ + "simulated_credential_ready", + "simulated_issuance_reject", + "simulated_issuance_unavailable", + "expired", + ], + simulated_issuance_reject: [], + simulated_issuance_unavailable: ["issuance_simulation_pending", "cancelled", "expired"], + simulated_credential_ready: [], + cancelled: [], + expired: [], +}; + +export function isEnrollmentTransitionAllowedV2( + from: EnrollmentSessionStateV2, + to: EnrollmentSessionStateV2, +): boolean { + return ENROLLMENT_SESSION_TRANSITIONS_V2[from].includes(to); +} + +// V2 supersedes V1 for implementation because V1 collapsed issuance failures into biometric states. diff --git a/packages/contracts/src/frame-bundle-v0.ts b/packages/contracts/src/frame-bundle-v0.ts new file mode 100644 index 0000000..0c14754 --- /dev/null +++ b/packages/contracts/src/frame-bundle-v0.ts @@ -0,0 +1,147 @@ +import type { HexSha256, Identifier } from "./common"; +import { canonicalizeJsonV0, isHexSha256, isRecord, SIMULATION_MODE } from "./common"; +import type { + FrameArtifactDataModeV0, + SimulationCapturePolicyV0, +} from "./simulation-capture-policy-v0"; + +export const FRAME_BUNDLE_V0 = "frame_bundle_v0" as const; +export const FRAME_BUNDLE_V0_DIGEST_ALGORITHM = "sha256_rfc8785_jcs" as const; + +export interface FrameDescriptorV0 { + readonly transportIndex: number; + readonly width: number; + readonly height: number; + readonly encoding: "rgba8"; + readonly byteLength: number; + readonly frameDigestSha256: HexSha256; + readonly captureOffsetMs?: number; +} + +export interface FrameBundleV0 { + readonly kind: typeof FRAME_BUNDLE_V0; + readonly mode: typeof SIMULATION_MODE; + readonly sessionId: Identifier; + readonly policyId: Identifier; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly nonceDigestSha256: HexSha256; + readonly dataMode: FrameArtifactDataModeV0; + readonly frames: readonly FrameDescriptorV0[]; + readonly syntheticFixtureId?: Identifier; + readonly totalByteLength: number; + readonly digestAlgorithm: typeof FRAME_BUNDLE_V0_DIGEST_ALGORITHM; + readonly artifactDigestSha256: HexSha256; +} + +export async function validateFrameBundleV0( + value: unknown, + policy: SimulationCapturePolicyV0, +): Promise { + const errors: string[] = []; + if (!isRecord(value)) return ["bundleType"]; + const bundle = value as unknown as FrameBundleV0; + const allowedBundleKeys = new Set([ + "kind", + "mode", + "sessionId", + "policyId", + "accountPublicMaterialDigestSha256", + "nonceDigestSha256", + "dataMode", + "frames", + "syntheticFixtureId", + "totalByteLength", + "digestAlgorithm", + "artifactDigestSha256", + ]); + for (const key of Object.keys(bundle)) { + if (!allowedBundleKeys.has(key)) errors.push(`unknown.${key}`); + } + if (bundle.kind !== FRAME_BUNDLE_V0) errors.push("kind"); + if (bundle.mode !== SIMULATION_MODE) errors.push("mode"); + if (typeof bundle.sessionId !== "string" || !bundle.sessionId) errors.push("sessionId"); + if (bundle.policyId !== policy.policyId) errors.push("policyId"); + if (bundle.dataMode !== policy.dataMode) errors.push("dataMode"); + if (bundle.digestAlgorithm !== FRAME_BUNDLE_V0_DIGEST_ALGORITHM) { + errors.push("digestAlgorithm"); + } + if (!isHexSha256(bundle.accountPublicMaterialDigestSha256)) errors.push("accountDigest"); + if (!isHexSha256(bundle.nonceDigestSha256)) errors.push("nonceDigest"); + if (!isHexSha256(bundle.artifactDigestSha256)) errors.push("artifactDigest"); + if (!Array.isArray(bundle.frames)) return [...errors, "framesType"]; + if (bundle.frames.length < policy.minFrames || bundle.frames.length > policy.maxFrames) { + errors.push("frameCount"); + } + if (bundle.totalByteLength > policy.maxTotalBytes || bundle.totalByteLength < 0) { + errors.push("totalByteLength"); + } + if (!Number.isSafeInteger(bundle.totalByteLength)) errors.push("totalByteLengthType"); + if (bundle.dataMode === "synthetic_fixture" && !bundle.syntheticFixtureId) { + errors.push("syntheticFixtureId"); + } + if (bundle.dataMode === "metadata_only" && bundle.syntheticFixtureId !== undefined) { + errors.push("unexpectedSyntheticFixtureId"); + } + + let computedByteLength = 0; + bundle.frames.forEach((candidate, index) => { + if (!isRecord(candidate)) { + errors.push(`frames[${index}].type`); + return; + } + const frame = candidate as unknown as FrameDescriptorV0; + const allowedFrameKeys = new Set([ + "transportIndex", + "width", + "height", + "encoding", + "byteLength", + "frameDigestSha256", + "captureOffsetMs", + ]); + for (const key of Object.keys(frame)) { + if (!allowedFrameKeys.has(key)) errors.push(`frames[${index}].unknown.${key}`); + } + if (frame.transportIndex !== index) errors.push(`frames[${index}].transportIndex`); + if (!Number.isSafeInteger(frame.transportIndex)) errors.push(`frames[${index}].indexType`); + if (frame.encoding !== policy.encoding) errors.push(`frames[${index}].encoding`); + if (frame.width <= 0 || frame.width > policy.maxWidth) errors.push(`frames[${index}].width`); + if (!Number.isSafeInteger(frame.width)) errors.push(`frames[${index}].widthType`); + if (frame.height <= 0 || frame.height > policy.maxHeight) { + errors.push(`frames[${index}].height`); + } + if (!Number.isSafeInteger(frame.height)) errors.push(`frames[${index}].heightType`); + if (frame.byteLength < 0 || frame.byteLength > policy.maxFrameBytes) { + errors.push(`frames[${index}].byteLength`); + } + if (!Number.isSafeInteger(frame.byteLength)) errors.push(`frames[${index}].byteLengthType`); + if (frame.captureOffsetMs !== undefined && !Number.isSafeInteger(frame.captureOffsetMs)) { + errors.push(`frames[${index}].captureOffsetType`); + } + if (!isHexSha256(frame.frameDigestSha256)) errors.push(`frames[${index}].digest`); + computedByteLength += frame.byteLength; + }); + + if (computedByteLength !== bundle.totalByteLength) errors.push("byteLengthSum"); + try { + if (await computeFrameBundleDigestV0(bundle) !== bundle.artifactDigestSha256) { + errors.push("artifactDigestMismatch"); + } + } catch { + errors.push("artifactCanonicalization"); + } + return errors; +} + +export function canonicalFrameBundlePreimageV0(bundle: FrameBundleV0): string { + const { artifactDigestSha256: _omitted, ...preimage } = bundle; + return canonicalizeJsonV0(preimage); +} + +export async function computeFrameBundleDigestV0(bundle: FrameBundleV0): Promise { + const bytes = new TextEncoder().encode(canonicalFrameBundlePreimageV0(bundle)); + const digest = await crypto.subtle.digest("SHA-256", bytes); + return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join(""); +} + +// FrameBundleV0 contains descriptors and digests only. It has no camera-byte field. diff --git a/packages/contracts/src/index.ts b/packages/contracts/src/index.ts new file mode 100644 index 0000000..2028697 --- /dev/null +++ b/packages/contracts/src/index.ts @@ -0,0 +1,14 @@ +export * from "./biometric-verification-port-v0"; +export * from "./authenticator-ui-flow-v1"; +export * from "./authenticator-ui-copy-v1"; +export * from "./client-quality-policy-v0"; +export * from "./common"; +export * from "./enrollment-session-v1"; +export * from "./enrollment-session-v2"; +export * from "./frame-bundle-v0"; +export * from "./injected-authenticator-port-v0"; +export * from "./simulation-capture-policy-v0"; +export * from "./simulator-browser-session-port-v0"; +export * from "./staging-issuance-port-v0"; +export * from "./webauthn-prf-authenticator-v1"; +export * from "./world-id-registration-adapter-v1"; diff --git a/packages/contracts/src/injected-authenticator-port-v0.ts b/packages/contracts/src/injected-authenticator-port-v0.ts new file mode 100644 index 0000000..f1c66fa --- /dev/null +++ b/packages/contracts/src/injected-authenticator-port-v0.ts @@ -0,0 +1,256 @@ +import type { HexSha256, Identifier, IsoDateTime, RuntimeEnvironment } from "./common"; +import { + assertSimulationArtifactAllowed, + hasExactKeys, + isHexSha256, + isIsoDateTime, + isRecord, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, +} from "./common"; + +export const INJECTED_AUTHENTICATOR_PORT_V0 = "injected_authenticator_port_v0" as const; +export const INJECTED_AUTHENTICATOR_REQUEST_V0 = "injected_authenticator_request_v0" as const; +export const STAGING_DEMO_AUTHENTICATOR_READY_V0 = "staging_demo_authenticator_ready_v0" as const; +export const STAGING_DEMO_AUTHENTICATOR_ERROR_V0 = "staging_demo_authenticator_error_v0" as const; + +export const STAGING_DEMO_AUTHENTICATOR_ERROR_REASONS_V0 = Object.freeze([ + "user_non_completion", + "unavailable", + "interrupted", + "transport_failure", + "invalid_response", +] as const); + +export type StagingDemoAuthenticatorErrorReasonV0 = + (typeof STAGING_DEMO_AUTHENTICATOR_ERROR_REASONS_V0)[number]; + +export interface InjectedAuthenticatorRequestV0 { + readonly kind: typeof INJECTED_AUTHENTICATOR_REQUEST_V0; + readonly version: typeof INJECTED_AUTHENTICATOR_PORT_V0; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly requestId: Identifier; + readonly sessionId: Identifier; + readonly idempotencyKey: Identifier; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly requestedAt: IsoDateTime; + readonly expiresAt: IsoDateTime; +} + +export interface StagingDemoAuthenticatorReadyV0 { + readonly kind: typeof STAGING_DEMO_AUTHENTICATOR_READY_V0; + readonly version: typeof INJECTED_AUTHENTICATOR_PORT_V0; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly requestId: Identifier; + readonly sessionId: Identifier; + readonly idempotencyKey: Identifier; + readonly completionHandle: Identifier; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly claims: { + readonly webauthnPerformed: false; + readonly prfEvaluated: false; + readonly worldIdCreated: false; + }; + readonly issuedAt: IsoDateTime; + readonly expiresAt: IsoDateTime; +} + +export interface StagingDemoAuthenticatorErrorV0 { + readonly kind: typeof STAGING_DEMO_AUTHENTICATOR_ERROR_V0; + readonly version: typeof INJECTED_AUTHENTICATOR_PORT_V0; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly requestId: Identifier; + readonly sessionId: Identifier; + readonly idempotencyKey: Identifier; + readonly reasonCode: StagingDemoAuthenticatorErrorReasonV0; +} + +export type InjectedAuthenticatorResultV0 = + | StagingDemoAuthenticatorReadyV0 + | StagingDemoAuthenticatorErrorV0; + +export interface ExpectedStagingDemoAuthenticatorReadyV0 { + readonly runtimeEnvironment: RuntimeEnvironment; + readonly requestId: Identifier; + readonly sessionId: Identifier; + readonly idempotencyKey: Identifier; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly requestRequestedAt: IsoDateTime; + readonly requestExpiresAt: IsoDateTime; + readonly now: IsoDateTime; +} + +export interface ExpectedStagingDemoAuthenticatorErrorV0 { + readonly runtimeEnvironment: RuntimeEnvironment; + readonly requestId: Identifier; + readonly sessionId: Identifier; + readonly idempotencyKey: Identifier; +} + +function nonEmpty(value: unknown): value is string { + return typeof value === "string" && value.length > 0; +} + +function validWindow(start: unknown, end: unknown): boolean { + return isIsoDateTime(start) && isIsoDateTime(end) && Date.parse(end) > Date.parse(start); +} + +export function isInjectedAuthenticatorRequestV0( + value: unknown, +): value is InjectedAuthenticatorRequestV0 { + try { + if (!isRecord(value)) return false; + return ( + hasExactKeys(value, [ + "kind", + "version", + "mode", + "environment", + "requestId", + "sessionId", + "idempotencyKey", + "accountPublicMaterialDigestSha256", + "requestedAt", + "expiresAt", + ]) && + value.kind === INJECTED_AUTHENTICATOR_REQUEST_V0 && + value.version === INJECTED_AUTHENTICATOR_PORT_V0 && + value.mode === SIMULATION_MODE && + value.environment === SIMULATION_ENVIRONMENT && + nonEmpty(value.requestId) && + nonEmpty(value.sessionId) && + nonEmpty(value.idempotencyKey) && + isHexSha256(value.accountPublicMaterialDigestSha256) && + validWindow(value.requestedAt, value.expiresAt) + ); + } catch { + return false; + } +} + +export function isStagingDemoAuthenticatorReadyV0( + value: unknown, +): value is StagingDemoAuthenticatorReadyV0 { + try { + if (!isRecord(value)) return false; + const claims = value.claims; + return ( + hasExactKeys(value, [ + "kind", + "version", + "mode", + "environment", + "requestId", + "sessionId", + "idempotencyKey", + "completionHandle", + "accountPublicMaterialDigestSha256", + "claims", + "issuedAt", + "expiresAt", + ]) && + value.kind === STAGING_DEMO_AUTHENTICATOR_READY_V0 && + value.version === INJECTED_AUTHENTICATOR_PORT_V0 && + value.mode === SIMULATION_MODE && + value.environment === SIMULATION_ENVIRONMENT && + nonEmpty(value.requestId) && + nonEmpty(value.sessionId) && + nonEmpty(value.idempotencyKey) && + nonEmpty(value.completionHandle) && + isHexSha256(value.accountPublicMaterialDigestSha256) && + isRecord(claims) && + hasExactKeys(claims, ["webauthnPerformed", "prfEvaluated", "worldIdCreated"]) && + claims.webauthnPerformed === false && + claims.prfEvaluated === false && + claims.worldIdCreated === false && + validWindow(value.issuedAt, value.expiresAt) + ); + } catch { + return false; + } +} + +export function isStagingDemoAuthenticatorErrorV0( + value: unknown, +): value is StagingDemoAuthenticatorErrorV0 { + try { + if (!isRecord(value)) return false; + return ( + hasExactKeys(value, [ + "kind", + "version", + "mode", + "environment", + "requestId", + "sessionId", + "idempotencyKey", + "reasonCode", + ]) && + value.kind === STAGING_DEMO_AUTHENTICATOR_ERROR_V0 && + value.version === INJECTED_AUTHENTICATOR_PORT_V0 && + value.mode === SIMULATION_MODE && + value.environment === SIMULATION_ENVIRONMENT && + nonEmpty(value.requestId) && + nonEmpty(value.sessionId) && + nonEmpty(value.idempotencyKey) && + typeof value.reasonCode === "string" && + STAGING_DEMO_AUTHENTICATOR_ERROR_REASONS_V0.includes( + value.reasonCode as StagingDemoAuthenticatorErrorReasonV0, + ) + ); + } catch { + return false; + } +} + +export function matchesExpectedStagingDemoAuthenticatorReadyV0( + value: unknown, + expected: ExpectedStagingDemoAuthenticatorReadyV0, +): value is StagingDemoAuthenticatorReadyV0 { + assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); + try { + return ( + isIsoDateTime(expected.now) && + isIsoDateTime(expected.requestRequestedAt) && + isIsoDateTime(expected.requestExpiresAt) && + isStagingDemoAuthenticatorReadyV0(value) && + value.requestId === expected.requestId && + value.sessionId === expected.sessionId && + value.idempotencyKey === expected.idempotencyKey && + value.accountPublicMaterialDigestSha256 === expected.accountPublicMaterialDigestSha256 && + Date.parse(value.issuedAt) >= Date.parse(expected.requestRequestedAt) && + Date.parse(value.expiresAt) <= Date.parse(expected.requestExpiresAt) && + Date.parse(value.issuedAt) <= Date.parse(expected.now) && + Date.parse(value.expiresAt) > Date.parse(expected.now) + ); + } catch { + return false; + } +} + +export function matchesExpectedStagingDemoAuthenticatorErrorV0( + value: unknown, + expected: ExpectedStagingDemoAuthenticatorErrorV0, +): value is StagingDemoAuthenticatorErrorV0 { + assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); + try { + return ( + isStagingDemoAuthenticatorErrorV0(value) && + value.requestId === expected.requestId && + value.sessionId === expected.sessionId && + value.idempotencyKey === expected.idempotencyKey + ); + } catch { + return false; + } +} + +export interface InjectedAuthenticatorPortV0 { + begin(request: InjectedAuthenticatorRequestV0): Promise; +} + +// This port is an explicit staging compatibility seam. It performs no WebAuthn, +// PRF evaluation, World ID key derivation, registration, or returning authentication. diff --git a/packages/contracts/src/simulation-capture-policy-v0.ts b/packages/contracts/src/simulation-capture-policy-v0.ts new file mode 100644 index 0000000..6da6a07 --- /dev/null +++ b/packages/contracts/src/simulation-capture-policy-v0.ts @@ -0,0 +1,42 @@ +import type { Identifier, IsoDateTime } from "./common"; +import { SIMULATION_ENVIRONMENT, SIMULATION_MODE } from "./common"; + +export const SIMULATION_CAPTURE_POLICY_V0 = "simulation_capture_policy_v0" as const; +export const FRAME_BUNDLE_V0_MIN_FRAMES = 1 as const; +export const FRAME_BUNDLE_V0_MAX_FRAMES = 4 as const; + +export type FrameArtifactDataModeV0 = "metadata_only" | "synthetic_fixture"; + +export interface SimulationCapturePolicyV0 { + readonly version: typeof SIMULATION_CAPTURE_POLICY_V0; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly policyId: Identifier; + readonly dataMode: FrameArtifactDataModeV0; + readonly encoding: "rgba8"; + readonly minFrames: number; + readonly maxFrames: number; + readonly maxWidth: number; + readonly maxHeight: number; + readonly maxFrameBytes: number; + readonly maxTotalBytes: number; + readonly captureOffsetsAreDiagnosticOnly: true; + readonly arrayOrderHasBiometricMeaning: false; + readonly qualityPolicyId: Identifier; + readonly expiresAt: IsoDateTime; +} + +export function validateSimulationCapturePolicyV0( + policy: SimulationCapturePolicyV0, +): readonly string[] { + const errors: string[] = []; + if (policy.version !== SIMULATION_CAPTURE_POLICY_V0) errors.push("version"); + if (policy.mode !== SIMULATION_MODE) errors.push("mode"); + if (policy.environment !== SIMULATION_ENVIRONMENT) errors.push("environment"); + if (policy.minFrames < FRAME_BUNDLE_V0_MIN_FRAMES) errors.push("minFrames"); + if (policy.maxFrames > FRAME_BUNDLE_V0_MAX_FRAMES) errors.push("maxFrames"); + if (policy.minFrames > policy.maxFrames) errors.push("frameRange"); + if (policy.maxWidth <= 0 || policy.maxHeight <= 0) errors.push("dimensions"); + if (policy.maxFrameBytes <= 0 || policy.maxTotalBytes <= 0) errors.push("byteLimits"); + return errors; +} diff --git a/packages/contracts/src/simulator-browser-session-port-v0.ts b/packages/contracts/src/simulator-browser-session-port-v0.ts new file mode 100644 index 0000000..7205ab7 --- /dev/null +++ b/packages/contracts/src/simulator-browser-session-port-v0.ts @@ -0,0 +1,748 @@ +import type { + HexSha256, + Identifier, + IsoDateTime, + RuntimeEnvironment, +} from "./common"; +import { + assertSimulationArtifactAllowed, + hasExactKeys, + isHexSha256, + isIsoDateTime, + isRecord, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, +} from "./common"; +import type { ClientQualityPolicyV0 } from "./client-quality-policy-v0"; +import { validateClientQualityPolicyV0 } from "./client-quality-policy-v0"; +import type { EnrollmentSessionStateV2 } from "./enrollment-session-v2"; +import { ENROLLMENT_SESSION_STATES_V2 } from "./enrollment-session-v2"; +import type { FrameBundleV0 } from "./frame-bundle-v0"; +import { validateFrameBundleV0 } from "./frame-bundle-v0"; +import type { SimulationCapturePolicyV0 } from "./simulation-capture-policy-v0"; +import { validateSimulationCapturePolicyV0 } from "./simulation-capture-policy-v0"; + +export const SIMULATOR_BROWSER_SESSION_PORT_V0 = "simulator_browser_session_port_v0" as const; +export const SIMULATOR_UI_BOOTSTRAP_V0 = "simulator_ui_bootstrap_v0" as const; +export const SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0 = + "simulator_browser_demo_authenticator_ready_v0" as const; +export const SIMULATOR_BROWSER_SESSION_VIEW_V0 = "simulator_browser_session_view_v0" as const; +export const SIMULATOR_BROWSER_SESSION_ERROR_V0 = "simulator_browser_session_error_v0" as const; +export const SIMULATOR_BROWSER_RETURN_ACCEPTED_V0 = + "simulator_browser_return_accepted_v0" as const; +export const SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0 = + "simulated_workflow_artifact_summary_v0" as const; + +export const RP_PRESENTATION_IDS_V0 = Object.freeze(["zoom_demo"] as const); +export type RpPresentationIdV0 = (typeof RP_PRESENTATION_IDS_V0)[number]; + +export const SIMULATOR_UI_QUALITY_POLICY_V0: ClientQualityPolicyV0 = Object.freeze({ + version: "client_quality_policy_v0", + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + policyId: "cs5-camera-active-only-v0", + purpose: "capture_ux_only", + checks: Object.freeze([Object.freeze({ kind: "camera_active" as const })]), + maxRetakes: 2, +}); + +export const SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0: Omit< + SimulationCapturePolicyV0, + "expiresAt" +> = Object.freeze({ + version: "simulation_capture_policy_v0", + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + policyId: "cs5-metadata-camera-active-v0", + dataMode: "metadata_only", + encoding: "rgba8", + minFrames: 1, + maxFrames: 2, + maxWidth: 1024, + maxHeight: 1024, + maxFrameBytes: 4_194_304, + maxTotalBytes: 8_388_608, + captureOffsetsAreDiagnosticOnly: true, + arrayOrderHasBiometricMeaning: false, + qualityPolicyId: SIMULATOR_UI_QUALITY_POLICY_V0.policyId, +}); + +export const SIMULATOR_SESSION_STATUS_CODES_V0 = Object.freeze([ + "created", + "passkey_complete", + "capture_ready", + "simulation_pass", + "simulation_reject", + "simulation_retry", + "simulation_unavailable", + "issuance_rejected", + "issuance_unavailable", + "simulated_credential_ready", + "cancelled", + "expired", +] as const); + +export type SimulatorSessionStatusCodeV0 = + (typeof SIMULATOR_SESSION_STATUS_CODES_V0)[number]; + +export const SIMULATOR_BROWSER_SESSION_OPERATIONS_V0 = Object.freeze([ + "bootstrap", + "create_session", + "begin_demo_authenticator", + "complete_demo_authenticator", + "prepare_capture", + "submit_capture", + "retry_unavailable", + "get_status", + "cancel", + "return_to_rp", +] as const); + +export type SimulatorBrowserSessionOperationV0 = + (typeof SIMULATOR_BROWSER_SESSION_OPERATIONS_V0)[number]; + +export const SIMULATOR_BROWSER_SESSION_ERROR_CODES_V0 = Object.freeze([ + "gateway_disabled", + "invalid_request", + "body_too_large", + "unauthorized", + "origin_forbidden", + "not_found", + "expired", + "invalid_state", + "binding_mismatch", + "replay_rejected", + "artifact_invalid", + "resource_busy", + "network_unavailable", + "network_timeout", + "response_invalid", + "navigation_failed", + "user_non_completion", + "demo_authenticator_unavailable", + "demo_authenticator_interrupted", +] as const); + +export type SimulatorBrowserSessionErrorCodeV0 = + (typeof SIMULATOR_BROWSER_SESSION_ERROR_CODES_V0)[number]; + +export interface SimulatorUiBootstrapV0 { + readonly kind: typeof SIMULATOR_UI_BOOTSTRAP_V0; + readonly version: typeof SIMULATOR_BROWSER_SESSION_PORT_V0; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly rpPresentationId: RpPresentationIdV0; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly returnAction: "server_managed"; + readonly authenticator: { + readonly kind: "injected_demo_only"; + readonly webauthnPerformed: false; + readonly prfEvaluated: false; + readonly worldIdCreated: false; + }; + readonly qualityPolicy: ClientQualityPolicyV0; +} + +export interface SimulatorBrowserDemoAuthenticatorReadyV0 { + readonly kind: typeof SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0; + readonly version: typeof SIMULATOR_BROWSER_SESSION_PORT_V0; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly sessionId: Identifier; + readonly idempotencyKey: Identifier; + readonly completionHandle: Identifier; + readonly claims: { + readonly webauthnPerformed: false; + readonly prfEvaluated: false; + readonly worldIdCreated: false; + }; + readonly expiresAt: IsoDateTime; +} + +export interface SimulatedWorkflowArtifactSummaryV0 { + readonly kind: typeof SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0; + readonly biometricVerification: "not_performed"; + readonly uniqueness: "not_performed"; + readonly credentialClass: "not_selfie_check"; + readonly productionCredential: false; +} + +export interface SimulatorBrowserSessionViewV0 { + readonly kind: typeof SIMULATOR_BROWSER_SESSION_VIEW_V0; + readonly version: typeof SIMULATOR_BROWSER_SESSION_PORT_V0; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly sessionId: Identifier; + readonly browserHandle: Identifier; + readonly nonceBase64Url: string; + readonly state: EnrollmentSessionStateV2; + readonly code: SimulatorSessionStatusCodeV0; + readonly retryable: boolean; + readonly expiresAt: IsoDateTime; + readonly capturePolicy: SimulationCapturePolicyV0; + readonly artifactSummary: SimulatedWorkflowArtifactSummaryV0 | null; +} + +export interface SimulatorBrowserSessionErrorV0 { + readonly kind: typeof SIMULATOR_BROWSER_SESSION_ERROR_V0; + readonly version: typeof SIMULATOR_BROWSER_SESSION_PORT_V0; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly operation: SimulatorBrowserSessionOperationV0; + readonly reasonCode: SimulatorBrowserSessionErrorCodeV0; +} + +export interface SimulatorBrowserReturnAcceptedV0 { + readonly kind: typeof SIMULATOR_BROWSER_RETURN_ACCEPTED_V0; + readonly version: typeof SIMULATOR_BROWSER_SESSION_PORT_V0; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly action: "server_managed"; +} + +export interface BrowserSessionFieldsV0 { + readonly sessionId: Identifier; + readonly browserHandle: Identifier; +} + +export interface BrowserIdempotentSessionFieldsV0 extends BrowserSessionFieldsV0 { + readonly idempotencyKey: Identifier; +} + +export interface CreateSimulatorBrowserSessionV0 { + readonly idempotencyKey: Identifier; +} + +export interface CompleteDemoAuthenticatorV0 extends BrowserIdempotentSessionFieldsV0 { + readonly completionHandle: Identifier; +} + +export interface SubmitSimulatorCaptureV0 extends BrowserIdempotentSessionFieldsV0 { + readonly nonceBase64Url: string; + readonly frameBundle: FrameBundleV0; +} + +export type SimulatorBrowserBootstrapResultV0 = + | SimulatorUiBootstrapV0 + | SimulatorBrowserSessionErrorV0; +export type SimulatorBrowserDemoAuthenticatorResultV0 = + | SimulatorBrowserDemoAuthenticatorReadyV0 + | SimulatorBrowserSessionErrorV0; +export type SimulatorBrowserSessionResultV0 = + | SimulatorBrowserSessionViewV0 + | SimulatorBrowserSessionErrorV0; +export type SimulatorBrowserReturnResultV0 = + | SimulatorBrowserReturnAcceptedV0 + | SimulatorBrowserSessionErrorV0; + +export interface SimulatorBrowserSessionPortV0 { + bootstrap(): Promise; + createSession(input: CreateSimulatorBrowserSessionV0): Promise; + beginDemoAuthenticator(input: BrowserIdempotentSessionFieldsV0): Promise; + completeDemoAuthenticator(input: CompleteDemoAuthenticatorV0): Promise; + prepareCapture(input: BrowserSessionFieldsV0): Promise; + submitCapture(input: SubmitSimulatorCaptureV0): Promise; + retryUnavailable(input: BrowserIdempotentSessionFieldsV0): Promise; + getStatus(input: BrowserSessionFieldsV0): Promise; + cancel(input: BrowserSessionFieldsV0): Promise; + returnToRp(input: BrowserSessionFieldsV0): Promise; +} + +export interface ExpectedSimulatorBrowserSessionViewV0 { + readonly runtimeEnvironment: RuntimeEnvironment; + readonly sessionId: Identifier; + readonly browserHandle: Identifier; + readonly now: IsoDateTime; +} + +export interface ExpectedSimulatorBrowserDemoAuthenticatorReadyV0 { + readonly runtimeEnvironment: RuntimeEnvironment; + readonly sessionId: Identifier; + readonly idempotencyKey: Identifier; + readonly now: IsoDateTime; +} + +export interface ExpectedSubmitSimulatorCaptureV0 { + readonly sessionId: Identifier; + readonly browserHandle: Identifier; + readonly idempotencyKey: Identifier; + readonly nonceBase64Url: string; + readonly nonceDigestSha256: HexSha256; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly capturePolicy: SimulationCapturePolicyV0; +} + +const frozenStatusCodes = ( + ...codes: readonly SimulatorSessionStatusCodeV0[] +): readonly SimulatorSessionStatusCodeV0[] => Object.freeze([...codes]); + +const STATE_CODES: Readonly< + Record +> = Object.freeze({ + created: frozenStatusCodes("created"), + passkey_complete: frozenStatusCodes("passkey_complete"), + capture_ready: frozenStatusCodes("capture_ready"), + biometric_simulation_pending: frozenStatusCodes("capture_ready"), + simulated_pass: frozenStatusCodes("simulation_pass"), + simulated_reject: frozenStatusCodes("simulation_reject"), + simulated_retry: frozenStatusCodes("simulation_retry"), + simulated_unavailable: frozenStatusCodes("simulation_unavailable"), + issuance_simulation_pending: frozenStatusCodes("simulation_pass"), + simulated_issuance_reject: frozenStatusCodes("issuance_rejected"), + simulated_issuance_unavailable: frozenStatusCodes("issuance_unavailable"), + simulated_credential_ready: frozenStatusCodes("simulated_credential_ready"), + cancelled: frozenStatusCodes("cancelled"), + expired: frozenStatusCodes("expired"), +}); + +const RETRYABLE_CODES = new Set([ + "simulation_retry", + "simulation_unavailable", + "issuance_unavailable", +]); + +function nonEmpty(value: unknown): value is string { + return typeof value === "string" && value.length > 0; +} + +function isAuthenticatorDisclosure(value: unknown): boolean { + return ( + isRecord(value) && + hasExactKeys(value, ["kind", "webauthnPerformed", "prfEvaluated", "worldIdCreated"]) && + value.kind === "injected_demo_only" && + value.webauthnPerformed === false && + value.prfEvaluated === false && + value.worldIdCreated === false + ); +} + +function isNegativeAuthenticatorClaims(value: unknown): boolean { + return ( + isRecord(value) && + hasExactKeys(value, ["webauthnPerformed", "prfEvaluated", "worldIdCreated"]) && + value.webauthnPerformed === false && + value.prfEvaluated === false && + value.worldIdCreated === false + ); +} + +function isExactUiQualityPolicy(value: unknown): value is ClientQualityPolicyV0 { + try { + return ( + isRecord(value) && + hasExactKeys(value, [ + "version", + "mode", + "environment", + "policyId", + "purpose", + "checks", + "maxRetakes", + ]) && + value.version === SIMULATOR_UI_QUALITY_POLICY_V0.version && + value.mode === SIMULATOR_UI_QUALITY_POLICY_V0.mode && + value.environment === SIMULATOR_UI_QUALITY_POLICY_V0.environment && + value.policyId === SIMULATOR_UI_QUALITY_POLICY_V0.policyId && + value.purpose === SIMULATOR_UI_QUALITY_POLICY_V0.purpose && + value.maxRetakes === SIMULATOR_UI_QUALITY_POLICY_V0.maxRetakes && + Array.isArray(value.checks) && + value.checks.length === 1 && + isRecord(value.checks[0]) && + hasExactKeys(value.checks[0], ["kind"]) && + value.checks[0].kind === "camera_active" && + validateClientQualityPolicyV0( + value as unknown as ClientQualityPolicyV0, + ).length === 0 + ); + } catch { + return false; + } +} + +function isExactUiCapturePolicy(value: unknown): value is SimulationCapturePolicyV0 { + try { + return ( + isRecord(value) && + hasExactKeys(value, [ + "version", + "mode", + "environment", + "policyId", + "dataMode", + "encoding", + "minFrames", + "maxFrames", + "maxWidth", + "maxHeight", + "maxFrameBytes", + "maxTotalBytes", + "captureOffsetsAreDiagnosticOnly", + "arrayOrderHasBiometricMeaning", + "qualityPolicyId", + "expiresAt", + ]) && + value.version === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.version && + value.mode === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.mode && + value.environment === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.environment && + value.policyId === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.policyId && + value.dataMode === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.dataMode && + value.encoding === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.encoding && + value.minFrames === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.minFrames && + value.maxFrames === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.maxFrames && + value.maxWidth === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.maxWidth && + value.maxHeight === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.maxHeight && + value.maxFrameBytes === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.maxFrameBytes && + value.maxTotalBytes === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.maxTotalBytes && + value.captureOffsetsAreDiagnosticOnly === true && + value.arrayOrderHasBiometricMeaning === false && + value.qualityPolicyId === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.qualityPolicyId && + isIsoDateTime(value.expiresAt) && + validateSimulationCapturePolicyV0( + value as unknown as SimulationCapturePolicyV0, + ).length === 0 + ); + } catch { + return false; + } +} + +export function isCreateSimulatorBrowserSessionV0( + value: unknown, +): value is CreateSimulatorBrowserSessionV0 { + try { + return isRecord(value) && hasExactKeys(value, ["idempotencyKey"]) && nonEmpty(value.idempotencyKey); + } catch { + return false; + } +} + +export function isBrowserSessionFieldsV0(value: unknown): value is BrowserSessionFieldsV0 { + try { + return ( + isRecord(value) && + hasExactKeys(value, ["sessionId", "browserHandle"]) && + nonEmpty(value.sessionId) && + nonEmpty(value.browserHandle) + ); + } catch { + return false; + } +} + +export function isBrowserIdempotentSessionFieldsV0( + value: unknown, +): value is BrowserIdempotentSessionFieldsV0 { + try { + return ( + isRecord(value) && + hasExactKeys(value, ["sessionId", "browserHandle", "idempotencyKey"]) && + nonEmpty(value.sessionId) && + nonEmpty(value.browserHandle) && + nonEmpty(value.idempotencyKey) + ); + } catch { + return false; + } +} + +export function isCompleteDemoAuthenticatorV0( + value: unknown, +): value is CompleteDemoAuthenticatorV0 { + try { + return ( + isRecord(value) && + hasExactKeys(value, ["sessionId", "browserHandle", "idempotencyKey", "completionHandle"]) && + nonEmpty(value.sessionId) && + nonEmpty(value.browserHandle) && + nonEmpty(value.idempotencyKey) && + nonEmpty(value.completionHandle) + ); + } catch { + return false; + } +} + +export function isSubmitSimulatorCaptureShapeV0( + value: unknown, +): value is SubmitSimulatorCaptureV0 { + try { + return ( + isRecord(value) && + hasExactKeys(value, [ + "sessionId", + "browserHandle", + "idempotencyKey", + "nonceBase64Url", + "frameBundle", + ]) && + nonEmpty(value.sessionId) && + nonEmpty(value.browserHandle) && + nonEmpty(value.idempotencyKey) && + nonEmpty(value.nonceBase64Url) && + isRecord(value.frameBundle) + ); + } catch { + return false; + } +} + +export async function matchesExpectedSubmitSimulatorCaptureV0( + value: unknown, + expected: ExpectedSubmitSimulatorCaptureV0, +): Promise { + try { + if ( + !isSubmitSimulatorCaptureShapeV0(value) || + !isExactUiCapturePolicy(expected.capturePolicy) + ) { + return false; + } + const bundle = value.frameBundle; + return ( + value.sessionId === expected.sessionId && + value.browserHandle === expected.browserHandle && + value.idempotencyKey === expected.idempotencyKey && + value.nonceBase64Url === expected.nonceBase64Url && + bundle.sessionId === expected.sessionId && + bundle.nonceDigestSha256 === expected.nonceDigestSha256 && + bundle.accountPublicMaterialDigestSha256 === expected.accountPublicMaterialDigestSha256 && + (await validateFrameBundleV0(bundle, expected.capturePolicy)).length === 0 + ); + } catch { + return false; + } +} + +export function isSimulatorUiBootstrapV0(value: unknown): value is SimulatorUiBootstrapV0 { + try { + return ( + isRecord(value) && + hasExactKeys(value, [ + "kind", + "version", + "mode", + "environment", + "rpPresentationId", + "accountPublicMaterialDigestSha256", + "returnAction", + "authenticator", + "qualityPolicy", + ]) && + value.kind === SIMULATOR_UI_BOOTSTRAP_V0 && + value.version === SIMULATOR_BROWSER_SESSION_PORT_V0 && + value.mode === SIMULATION_MODE && + value.environment === SIMULATION_ENVIRONMENT && + typeof value.rpPresentationId === "string" && + RP_PRESENTATION_IDS_V0.includes(value.rpPresentationId as RpPresentationIdV0) && + isHexSha256(value.accountPublicMaterialDigestSha256) && + value.returnAction === "server_managed" && + isAuthenticatorDisclosure(value.authenticator) && + isExactUiQualityPolicy(value.qualityPolicy) + ); + } catch { + return false; + } +} + +export function isSimulatorBrowserDemoAuthenticatorReadyV0( + value: unknown, +): value is SimulatorBrowserDemoAuthenticatorReadyV0 { + try { + return ( + isRecord(value) && + hasExactKeys(value, [ + "kind", + "version", + "mode", + "environment", + "sessionId", + "idempotencyKey", + "completionHandle", + "claims", + "expiresAt", + ]) && + value.kind === SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0 && + value.version === SIMULATOR_BROWSER_SESSION_PORT_V0 && + value.mode === SIMULATION_MODE && + value.environment === SIMULATION_ENVIRONMENT && + nonEmpty(value.sessionId) && + nonEmpty(value.idempotencyKey) && + nonEmpty(value.completionHandle) && + isNegativeAuthenticatorClaims(value.claims) && + isIsoDateTime(value.expiresAt) + ); + } catch { + return false; + } +} + +export function matchesExpectedSimulatorBrowserDemoAuthenticatorReadyV0( + value: unknown, + expected: ExpectedSimulatorBrowserDemoAuthenticatorReadyV0, +): value is SimulatorBrowserDemoAuthenticatorReadyV0 { + assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); + try { + return ( + isIsoDateTime(expected.now) && + isSimulatorBrowserDemoAuthenticatorReadyV0(value) && + value.sessionId === expected.sessionId && + value.idempotencyKey === expected.idempotencyKey && + Date.parse(value.expiresAt) > Date.parse(expected.now) + ); + } catch { + return false; + } +} + +export function isSimulatedWorkflowArtifactSummaryV0( + value: unknown, +): value is SimulatedWorkflowArtifactSummaryV0 { + try { + return ( + isRecord(value) && + hasExactKeys(value, [ + "kind", + "biometricVerification", + "uniqueness", + "credentialClass", + "productionCredential", + ]) && + value.kind === SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0 && + value.biometricVerification === "not_performed" && + value.uniqueness === "not_performed" && + value.credentialClass === "not_selfie_check" && + value.productionCredential === false + ); + } catch { + return false; + } +} + +export function isSimulatorBrowserSessionErrorV0( + value: unknown, +): value is SimulatorBrowserSessionErrorV0 { + try { + return ( + isRecord(value) && + hasExactKeys(value, ["kind", "version", "mode", "environment", "operation", "reasonCode"]) && + value.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0 && + value.version === SIMULATOR_BROWSER_SESSION_PORT_V0 && + value.mode === SIMULATION_MODE && + value.environment === SIMULATION_ENVIRONMENT && + typeof value.operation === "string" && + SIMULATOR_BROWSER_SESSION_OPERATIONS_V0.includes( + value.operation as SimulatorBrowserSessionOperationV0, + ) && + typeof value.reasonCode === "string" && + SIMULATOR_BROWSER_SESSION_ERROR_CODES_V0.includes( + value.reasonCode as SimulatorBrowserSessionErrorCodeV0, + ) + ); + } catch { + return false; + } +} + +export function isSimulatorBrowserReturnAcceptedV0( + value: unknown, +): value is SimulatorBrowserReturnAcceptedV0 { + try { + return ( + isRecord(value) && + hasExactKeys(value, ["kind", "version", "mode", "environment", "action"]) && + value.kind === SIMULATOR_BROWSER_RETURN_ACCEPTED_V0 && + value.version === SIMULATOR_BROWSER_SESSION_PORT_V0 && + value.mode === SIMULATION_MODE && + value.environment === SIMULATION_ENVIRONMENT && + value.action === "server_managed" + ); + } catch { + return false; + } +} + +export function isSimulatorBrowserSessionViewV0( + value: unknown, +): value is SimulatorBrowserSessionViewV0 { + try { + if ( + !isRecord(value) || + !hasExactKeys(value, [ + "kind", + "version", + "mode", + "environment", + "sessionId", + "browserHandle", + "nonceBase64Url", + "state", + "code", + "retryable", + "expiresAt", + "capturePolicy", + "artifactSummary", + ]) || + value.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0 || + value.version !== SIMULATOR_BROWSER_SESSION_PORT_V0 || + value.mode !== SIMULATION_MODE || + value.environment !== SIMULATION_ENVIRONMENT || + !nonEmpty(value.sessionId) || + !nonEmpty(value.browserHandle) || + !nonEmpty(value.nonceBase64Url) || + typeof value.state !== "string" || + !ENROLLMENT_SESSION_STATES_V2.includes(value.state as EnrollmentSessionStateV2) || + typeof value.code !== "string" || + !SIMULATOR_SESSION_STATUS_CODES_V0.includes(value.code as SimulatorSessionStatusCodeV0) || + typeof value.retryable !== "boolean" || + !isIsoDateTime(value.expiresAt) || + !isExactUiCapturePolicy(value.capturePolicy) || + value.capturePolicy.expiresAt !== value.expiresAt + ) { + return false; + } + const state = value.state as EnrollmentSessionStateV2; + const code = value.code as SimulatorSessionStatusCodeV0; + const summaryValid = + value.artifactSummary === null || + isSimulatedWorkflowArtifactSummaryV0(value.artifactSummary); + return ( + STATE_CODES[state].includes(code) && + value.retryable === RETRYABLE_CODES.has(code) && + summaryValid && + (state === "simulated_credential_ready" + ? value.artifactSummary !== null + : value.artifactSummary === null) + ); + } catch { + return false; + } +} + +export function matchesExpectedSimulatorBrowserSessionViewV0( + value: unknown, + expected: ExpectedSimulatorBrowserSessionViewV0, +): value is SimulatorBrowserSessionViewV0 { + assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); + try { + return ( + isIsoDateTime(expected.now) && + isSimulatorBrowserSessionViewV0(value) && + value.sessionId === expected.sessionId && + value.browserHandle === expected.browserHandle && + Date.parse(value.expiresAt) > Date.parse(expected.now) + ); + } catch { + return false; + } +} + +export function assertSimulatorBrowserArtifactAllowed( + runtimeEnvironment: RuntimeEnvironment, + value: unknown, +): void { + assertSimulationArtifactAllowed(runtimeEnvironment, value); +} + +// The browser projection intentionally omits simulator scenarios, receipts, +// signatures, credential bodies, account identifiers, and return URLs. The +// opaque browser/completion handles remain transient effect-runner state only. diff --git a/packages/contracts/src/staging-issuance-port-v0.ts b/packages/contracts/src/staging-issuance-port-v0.ts new file mode 100644 index 0000000..b4f1bea --- /dev/null +++ b/packages/contracts/src/staging-issuance-port-v0.ts @@ -0,0 +1,314 @@ +import type { + HexSha256, + Identifier, + IsoDateTime, + RuntimeEnvironment, + StagingAuthenticationV0, + StagingEd25519TrustRootV0, +} from "./common"; +import { + assertSimulationArtifactAllowed, + hasExactKeys, + isHexSha256, + isIsoDateTime, + isRecord, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + verifyStagingEd25519V0, +} from "./common"; +import type { + ExpectedSimulationReceiptV0, + SimulationReceiptV0, +} from "./biometric-verification-port-v0"; +import { + isSimulationReceiptV0, + verifySimulationReceiptV0, +} from "./biometric-verification-port-v0"; + +export const STAGING_ISSUANCE_PORT_V0 = "staging_issuance_port_v0" as const; +export const STAGING_ISSUANCE_SIMULATION_REQUEST_V0 = + "staging_issuance_simulation_request_v0" as const; +export const STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0 = + "world_id_web_authenticator_issuance_simulator_staging" as const; +export const SIMULATED_STAGING_CREDENTIAL_V0 = "simulated_staging_credential_v0" as const; +export const SIMULATED_STAGING_ISSUER_V0 = "world_id_web_authenticator_simulator" as const; +export const SIMULATED_STAGING_AUDIENCE_V0 = + "world_id_web_authenticator_staging" as const; + +export const ISSUANCE_SIMULATION_SCENARIOS_V0 = [ + "issue_success", + "issue_reject", + "issue_unavailable", +] as const; + +export type IssuanceSimulationScenarioV0 = + (typeof ISSUANCE_SIMULATION_SCENARIOS_V0)[number]; + +export interface StagingIssuanceSimulationRequestV0 { + readonly kind: typeof STAGING_ISSUANCE_SIMULATION_REQUEST_V0; + readonly version: typeof STAGING_ISSUANCE_PORT_V0; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly audience: typeof STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0; + readonly requestId: Identifier; + readonly sessionId: Identifier; + readonly nonceDigestSha256: HexSha256; + readonly idempotencyKey: Identifier; + readonly accountId: Identifier; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly biometricReceipt: SimulationReceiptV0 & { readonly outcome: "simulated_pass" }; + readonly scenario: IssuanceSimulationScenarioV0; + readonly requestedAt: IsoDateTime; + readonly expiresAt: IsoDateTime; + readonly authentication: StagingAuthenticationV0; +} + +export interface SimulatedStagingCredentialV0 { + readonly kind: typeof SIMULATED_STAGING_CREDENTIAL_V0; + readonly version: typeof STAGING_ISSUANCE_PORT_V0; + readonly mode: typeof SIMULATION_MODE; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly credentialId: Identifier; + readonly issuer: typeof SIMULATED_STAGING_ISSUER_V0; + readonly audience: typeof SIMULATED_STAGING_AUDIENCE_V0; + readonly issuanceRequestId: Identifier; + readonly idempotencyKey: Identifier; + readonly nonceDigestSha256: HexSha256; + readonly subjectAccountId: Identifier; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly simulationReceiptId: Identifier; + readonly claims: { + readonly biometricVerification: "simulated_not_performed"; + readonly uniqueness: "not_performed"; + readonly credentialClass: "not_selfie_check"; + }; + readonly issuedAt: IsoDateTime; + readonly expiresAt: IsoDateTime; + readonly authentication: StagingAuthenticationV0; +} + +export type StagingIssuanceSimulationResultV0 = + | { + readonly kind: "simulated_credential_ready_v0"; + readonly credential: SimulatedStagingCredentialV0; + } + | { + readonly kind: "simulated_issuance_rejected_v0"; + readonly reasonCode: "scenario_issue_reject"; + } + | { + readonly kind: "simulated_issuance_unavailable_v0"; + readonly reasonCode: "scenario_issue_unavailable"; + }; + +function isNonEmptyString(value: unknown): value is string { + return typeof value === "string" && value.length > 0; +} + +function isStagingAuthenticationV0(value: unknown): value is StagingAuthenticationV0 { + return ( + isRecord(value) && + hasExactKeys(value, ["scheme", "keyId", "signatureBase64Url"]) && + value.scheme === "staging-ed25519" && + isNonEmptyString(value.keyId) && + isNonEmptyString(value.signatureBase64Url) + ); +} + +function hasValidTimeWindow(issuedAt: unknown, expiresAt: unknown): boolean { + return ( + isIsoDateTime(issuedAt) && + isIsoDateTime(expiresAt) && + Date.parse(expiresAt) > Date.parse(issuedAt) + ); +} + +export function isStagingIssuanceSimulationRequestV0( + value: unknown, +): value is StagingIssuanceSimulationRequestV0 { + if (!isRecord(value)) return false; + if ( + !hasExactKeys(value, [ + "kind", + "version", + "mode", + "environment", + "audience", + "requestId", + "sessionId", + "nonceDigestSha256", + "idempotencyKey", + "accountId", + "accountPublicMaterialDigestSha256", + "biometricReceipt", + "scenario", + "requestedAt", + "expiresAt", + "authentication", + ]) + ) { + return false; + } + return ( + value.kind === STAGING_ISSUANCE_SIMULATION_REQUEST_V0 && + value.version === STAGING_ISSUANCE_PORT_V0 && + value.mode === SIMULATION_MODE && + value.environment === SIMULATION_ENVIRONMENT && + value.audience === STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0 && + isNonEmptyString(value.requestId) && + isNonEmptyString(value.sessionId) && + isHexSha256(value.nonceDigestSha256) && + isNonEmptyString(value.idempotencyKey) && + isNonEmptyString(value.accountId) && + isHexSha256(value.accountPublicMaterialDigestSha256) && + isSimulationReceiptV0(value.biometricReceipt) && + value.biometricReceipt.outcome === "simulated_pass" && + typeof value.scenario === "string" && + ISSUANCE_SIMULATION_SCENARIOS_V0.includes( + value.scenario as IssuanceSimulationScenarioV0, + ) && + hasValidTimeWindow(value.requestedAt, value.expiresAt) && + isStagingAuthenticationV0(value.authentication) + ); +} + +export function isSimulatedStagingCredentialV0( + value: unknown, +): value is SimulatedStagingCredentialV0 { + if (!isRecord(value)) return false; + if ( + !hasExactKeys(value, [ + "kind", + "version", + "mode", + "environment", + "credentialId", + "issuer", + "audience", + "issuanceRequestId", + "idempotencyKey", + "nonceDigestSha256", + "subjectAccountId", + "accountPublicMaterialDigestSha256", + "simulationReceiptId", + "claims", + "issuedAt", + "expiresAt", + "authentication", + ]) + ) { + return false; + } + const claims = value.claims; + return ( + value.kind === SIMULATED_STAGING_CREDENTIAL_V0 && + value.version === STAGING_ISSUANCE_PORT_V0 && + value.mode === SIMULATION_MODE && + value.environment === SIMULATION_ENVIRONMENT && + value.issuer === SIMULATED_STAGING_ISSUER_V0 && + value.audience === SIMULATED_STAGING_AUDIENCE_V0 && + isNonEmptyString(value.credentialId) && + isNonEmptyString(value.issuanceRequestId) && + isNonEmptyString(value.idempotencyKey) && + isHexSha256(value.nonceDigestSha256) && + isNonEmptyString(value.subjectAccountId) && + isHexSha256(value.accountPublicMaterialDigestSha256) && + isNonEmptyString(value.simulationReceiptId) && + isRecord(claims) && + hasExactKeys(claims, ["biometricVerification", "uniqueness", "credentialClass"]) && + claims.biometricVerification === "simulated_not_performed" && + claims.uniqueness === "not_performed" && + claims.credentialClass === "not_selfie_check" && + hasValidTimeWindow(value.issuedAt, value.expiresAt) && + isStagingAuthenticationV0(value.authentication) + ); +} + +export interface ExpectedStagingIssuanceRequestV0 { + readonly runtimeEnvironment: RuntimeEnvironment; + readonly requestId: Identifier; + readonly sessionId: Identifier; + readonly nonceDigestSha256: HexSha256; + readonly idempotencyKey: Identifier; + readonly accountId: Identifier; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly biometricReceipt: ExpectedSimulationReceiptV0; + readonly scenario: IssuanceSimulationScenarioV0; + readonly now: IsoDateTime; +} + +export async function verifyStagingIssuanceSimulationRequestV0( + value: unknown, + expected: ExpectedStagingIssuanceRequestV0, + gatewayTrustRoot: StagingEd25519TrustRootV0, + biometricReceiptTrustRoot: StagingEd25519TrustRootV0, +): Promise { + assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); + if (!isStagingIssuanceSimulationRequestV0(value)) return false; + if ( + value.requestId !== expected.requestId || + value.sessionId !== expected.sessionId || + value.nonceDigestSha256 !== expected.nonceDigestSha256 || + value.idempotencyKey !== expected.idempotencyKey || + value.accountId !== expected.accountId || + value.accountPublicMaterialDigestSha256 !== expected.accountPublicMaterialDigestSha256 || + value.biometricReceipt.receiptId !== expected.biometricReceipt.receiptId || + value.biometricReceipt.sessionId !== expected.sessionId || + value.biometricReceipt.nonceDigestSha256 !== expected.nonceDigestSha256 || + value.biometricReceipt.accountPublicMaterialDigestSha256 !== + expected.accountPublicMaterialDigestSha256 || + value.scenario !== expected.scenario || + Date.parse(value.requestedAt) > Date.parse(expected.now) || + Date.parse(value.expiresAt) <= Date.parse(expected.now) + ) { + return false; + } + if ( + !(await verifySimulationReceiptV0( + value.biometricReceipt, + expected.biometricReceipt, + biometricReceiptTrustRoot, + )) + ) { + return false; + } + return verifyStagingEd25519V0( + value as unknown as Record, + gatewayTrustRoot, + ); +} + +export interface ExpectedSimulatedStagingCredentialV0 { + readonly runtimeEnvironment: RuntimeEnvironment; + readonly issuanceRequestId: Identifier; + readonly idempotencyKey: Identifier; + readonly nonceDigestSha256: HexSha256; + readonly subjectAccountId: Identifier; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly simulationReceiptId: Identifier; + readonly now: IsoDateTime; +} + +export async function verifySimulatedStagingCredentialV0( + value: unknown, + expected: ExpectedSimulatedStagingCredentialV0, + trustRoot: StagingEd25519TrustRootV0, +): Promise { + assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); + if (!isSimulatedStagingCredentialV0(value)) return false; + if ( + value.issuanceRequestId !== expected.issuanceRequestId || + value.idempotencyKey !== expected.idempotencyKey || + value.nonceDigestSha256 !== expected.nonceDigestSha256 || + value.subjectAccountId !== expected.subjectAccountId || + value.accountPublicMaterialDigestSha256 !== expected.accountPublicMaterialDigestSha256 || + value.simulationReceiptId !== expected.simulationReceiptId || + Date.parse(value.issuedAt) > Date.parse(expected.now) || + Date.parse(value.expiresAt) <= Date.parse(expected.now) + ) { + return false; + } + return verifyStagingEd25519V0(value as unknown as Record, trustRoot); +} + +// This type is intentionally incompatible with a real Selfie Check credential. diff --git a/packages/contracts/src/webauthn-prf-authenticator-v1.ts b/packages/contracts/src/webauthn-prf-authenticator-v1.ts new file mode 100644 index 0000000..87be272 --- /dev/null +++ b/packages/contracts/src/webauthn-prf-authenticator-v1.ts @@ -0,0 +1,33 @@ +import type { Base64Url, HexSha256, Identifier } from "./common"; + +export const WEB_AUTHN_PRF_AUTHENTICATOR_V1 = "webauthn_prf_authenticator_v1" as const; +export const PRF_INPUT_V1_LABEL = "world-id:web-authenticator:world-id-4:v1" as const; +export const PRF_INPUT_V1_SHA256 = + "0b2ba181b397d6ac08ef7139cd2410c31fd416120d35f075420a4af38f3609e6" as const; +export const PRF_RESULT_LENGTH_BYTES_V1 = 32 as const; + +export interface WebAuthnPrfAuthenticatorPolicyV1 { + readonly version: typeof WEB_AUTHN_PRF_AUTHENTICATOR_V1; + readonly rpId: string; + readonly allowedOrigins: readonly string[]; + readonly userVerification: "required"; + readonly prfInputSha256: typeof PRF_INPUT_V1_SHA256; + readonly prfOutputMapping: "verbatim_32_byte_first_result_to_world_id_4_signer_seed"; + readonly secretLifecycle: "browser_memory_only"; +} + +export interface WorldIdPublicAuthenticatorMaterialV1 { + readonly managementAddress: `0x${string}`; + readonly provingPublicKeyCompressedLeHex: string; + readonly keySetCommitmentHex: string; +} + +export interface WebAuthnPrfPublicResultV1 { + readonly version: typeof WEB_AUTHN_PRF_AUTHENTICATOR_V1; + readonly ceremonyId: Identifier; + readonly credentialIdBase64Url: Base64Url; + readonly credentialPublicKeyDigestSha256: HexSha256; + readonly worldIdPublicMaterial: WorldIdPublicAuthenticatorMaterialV1; +} + +// No wire type in this contract contains the PRF result, seed, or either private key. diff --git a/packages/contracts/src/world-id-registration-adapter-v1.ts b/packages/contracts/src/world-id-registration-adapter-v1.ts new file mode 100644 index 0000000..ee9c2e2 --- /dev/null +++ b/packages/contracts/src/world-id-registration-adapter-v1.ts @@ -0,0 +1,63 @@ +import type { HexSha256, Identifier, IsoDateTime } from "./common"; +import { SIMULATION_ENVIRONMENT } from "./common"; +import type { WorldIdPublicAuthenticatorMaterialV1 } from "./webauthn-prf-authenticator-v1"; + +export const WORLD_ID_REGISTRATION_ADAPTER_V1 = "world_id_registration_adapter_v1" as const; + +export interface WorldIdRegistrationAdapterPolicyV1 { + readonly version: typeof WORLD_ID_REGISTRATION_ADAPTER_V1; + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly sdkRevision: string; + readonly gatewayBaseUrl: string; + readonly chainId: number; + readonly gatewayRecomputesOrRejectsCommitmentMismatch: true; + readonly endpointConfigurationHasNoDefault: true; +} + +export interface WorldIdRegistrationRequestV1 { + readonly version: typeof WORLD_ID_REGISTRATION_ADAPTER_V1; + readonly registrationId: Identifier; + readonly idempotencyKey: Identifier; + readonly recoveryAddress: `0x${string}`; + readonly publicAuthenticator: WorldIdPublicAuthenticatorMaterialV1; + readonly publicMaterialDigestSha256: HexSha256; + readonly requestedAt: IsoDateTime; +} + +export type WorldIdRegistrationResultV1 = + | { + readonly status: "registered"; + readonly accountId: Identifier; + readonly leafIndex: string; + readonly publicMaterialDigestSha256: HexSha256; + } + | { readonly status: "pending"; readonly registrationId: Identifier } + | { + readonly status: "rejected" | "unavailable"; + readonly reasonCode: string; + }; + +export function validateWorldIdRegistrationAdapterPolicyV1( + policy: WorldIdRegistrationAdapterPolicyV1, +): readonly string[] { + const errors: string[] = []; + if (policy.version !== WORLD_ID_REGISTRATION_ADAPTER_V1) errors.push("version"); + if (policy.environment !== SIMULATION_ENVIRONMENT) errors.push("environment"); + if (!policy.sdkRevision || policy.sdkRevision === "required-at-runtime") { + errors.push("sdkRevision"); + } + try { + const gatewayUrl = new URL(policy.gatewayBaseUrl); + if (gatewayUrl.protocol !== "https:") errors.push("gatewayBaseUrl"); + } catch { + errors.push("gatewayBaseUrl"); + } + if (!Number.isSafeInteger(policy.chainId) || policy.chainId <= 0) errors.push("chainId"); + if (!policy.gatewayRecomputesOrRejectsCommitmentMismatch) { + errors.push("commitmentMismatchEnforcement"); + } + if (!policy.endpointConfigurationHasNoDefault) errors.push("endpointDefault"); + return errors; +} + +// The staging endpoint, chain, and SDK revision are required configuration; this contract invents none. diff --git a/packages/contracts/test/contracts.test.ts b/packages/contracts/test/contracts.test.ts new file mode 100644 index 0000000..ffe0fdb --- /dev/null +++ b/packages/contracts/test/contracts.test.ts @@ -0,0 +1,768 @@ +import { beforeAll, describe, expect, test } from "bun:test"; +import { + assertSimulationArtifactAllowed, + BIOMETRIC_SCENARIO_OUTCOME_V0, + BIOMETRIC_SIMULATION_REQUEST_V0, + BIOMETRIC_SIMULATOR_AUDIENCE_V0, + BIOMETRIC_VERIFICATION_PORT_V0, + bytesToBase64Url, + bytesToArrayBuffer, + CLIENT_QUALITY_POLICY_V0, + computeFrameBundleDigestV0, + ENROLLMENT_SESSION_V2, + FRAME_BUNDLE_V0, + FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + isEnrollmentTransitionAllowedV2, + isSimulatedStagingCredentialV0, + isSimulationReceiptV0, + PRF_INPUT_V1_SHA256, + SIMULATED_STAGING_AUDIENCE_V0, + SIMULATED_STAGING_CREDENTIAL_V0, + SIMULATED_STAGING_ISSUER_V0, + SIMULATION_CAPTURE_POLICY_V0, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + SimulationArtifactInProductionError, + stagingSignaturePreimageV0, + STAGING_ISSUANCE_PORT_V0, + STAGING_ISSUANCE_SIMULATION_REQUEST_V0, + STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, + validateClientQualityPolicyV0, + validateFrameBundleV0, + validateSimulationCapturePolicyV0, + validateWorldIdRegistrationAdapterPolicyV1, + verifyBiometricSimulationRequestV0, + verifySimulatedStagingCredentialV0, + verifySimulationReceiptV0, + verifyStagingIssuanceSimulationRequestV0, + WEB_AUTHN_PRF_AUTHENTICATOR_V1, + WORLD_ID_REGISTRATION_ADAPTER_V1, + type BiometricSimulationRequestV0, + type ClientQualityPolicyV0, + type EnrollmentSessionV2, + type FrameBundleV0, + type HexSha256, + type SimulatedStagingCredentialV0, + type SimulationCapturePolicyV0, + type SimulationReceiptV0, + type StagingAuthenticationV0, + type StagingEd25519TrustRootV0, + type StagingIssuanceSimulationRequestV0, + type WebAuthnPrfAuthenticatorPolicyV1, + type WorldIdRegistrationAdapterPolicyV1, +} from "../src"; + +const ZERO_HASH = "0".repeat(64) as HexSha256; +const ONE_HASH = "1".repeat(64) as HexSha256; +const NOW = "2026-09-02T18:30:00Z"; + +interface TestSigner { + readonly privateKey: CryptoKey; + readonly trustRoot: StagingEd25519TrustRootV0; +} + +let gatewayBiometricSigner: TestSigner; +let biometricReceiptSigner: TestSigner; +let gatewayIssuanceSigner: TestSigner; +let issuanceCredentialSigner: TestSigner; + +async function createSigner(audience: string, keyId: string): Promise { + const pair = (await crypto.subtle.generateKey( + { name: "Ed25519" }, + true, + ["sign", "verify"], + )) as CryptoKeyPair; + const publicKey = new Uint8Array(await crypto.subtle.exportKey("raw", pair.publicKey)); + return { + privateKey: pair.privateKey, + trustRoot: { + environment: SIMULATION_ENVIRONMENT, + audience, + keyId, + publicKeyRawBase64Url: bytesToBase64Url(publicKey), + }, + }; +} + +async function signArtifact( + value: T, + signer: TestSigner, +): Promise { + const unsigned = { + ...value, + authentication: { + scheme: "staging-ed25519" as const, + keyId: signer.trustRoot.keyId, + signatureBase64Url: "pending", + }, + }; + const signature = await crypto.subtle.sign( + { name: "Ed25519" }, + signer.privateKey, + bytesToArrayBuffer( + stagingSignaturePreimageV0(unsigned as unknown as Record), + ), + ); + return { + ...unsigned, + authentication: { + ...unsigned.authentication, + signatureBase64Url: bytesToBase64Url(new Uint8Array(signature)), + }, + } as T; +} + +beforeAll(async () => { + [gatewayBiometricSigner, biometricReceiptSigner, gatewayIssuanceSigner, issuanceCredentialSigner] = + await Promise.all([ + createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "gateway-biometric-key"), + createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "biometric-receipt-key"), + createSigner(STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, "gateway-issuance-key"), + createSigner(SIMULATED_STAGING_AUDIENCE_V0, "issuance-credential-key"), + ]); +}); + +const capturePolicy: SimulationCapturePolicyV0 = { + version: SIMULATION_CAPTURE_POLICY_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + policyId: "capture-policy-fixture", + dataMode: "metadata_only", + encoding: "rgba8", + minFrames: 1, + maxFrames: 4, + maxWidth: 4096, + maxHeight: 4096, + maxFrameBytes: 67_108_864, + maxTotalBytes: 268_435_456, + captureOffsetsAreDiagnosticOnly: true, + arrayOrderHasBiometricMeaning: false, + qualityPolicyId: "quality-policy-fixture", + expiresAt: "2026-09-02T19:00:00Z", +}; + +async function makeFrameBundle(): Promise { + const pending: FrameBundleV0 = { + kind: FRAME_BUNDLE_V0, + mode: SIMULATION_MODE, + sessionId: "session-fixture", + policyId: capturePolicy.policyId, + accountPublicMaterialDigestSha256: ZERO_HASH, + nonceDigestSha256: ONE_HASH, + dataMode: "metadata_only", + frames: [ + { + transportIndex: 0, + width: 640, + height: 480, + encoding: "rgba8", + byteLength: 1_228_800, + frameDigestSha256: ZERO_HASH, + captureOffsetMs: 0, + }, + ], + totalByteLength: 1_228_800, + digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + artifactDigestSha256: ZERO_HASH, + }; + return { ...pending, artifactDigestSha256: await computeFrameBundleDigestV0(pending) }; +} + +async function makeBiometricRequest( + frameBundle: FrameBundleV0, +): Promise { + return signArtifact( + { + kind: BIOMETRIC_SIMULATION_REQUEST_V0, + version: BIOMETRIC_VERIFICATION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, + requestId: "biometric-request-fixture", + sessionId: frameBundle.sessionId, + nonceDigestSha256: frameBundle.nonceDigestSha256, + idempotencyKey: "biometric-idempotency-fixture", + accountPublicMaterialDigestSha256: frameBundle.accountPublicMaterialDigestSha256, + capturePolicyId: frameBundle.policyId, + scenario: "happy_path", + frameBundle, + requestedAt: "2026-09-02T18:00:00Z", + expiresAt: "2026-09-02T19:00:00Z", + authentication: { + scheme: "staging-ed25519", + keyId: "pending", + signatureBase64Url: "pending", + }, + }, + gatewayBiometricSigner, + ); +} + +async function makeReceipt(frameBundle: FrameBundleV0): Promise { + return signArtifact( + { + kind: "simulation_receipt_v0", + version: BIOMETRIC_VERIFICATION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, + receiptId: "receipt-fixture", + requestId: "biometric-request-fixture", + simulatorVersion: "simulator-fixture-v0", + scenario: "happy_path", + sessionId: frameBundle.sessionId, + nonceDigestSha256: frameBundle.nonceDigestSha256, + idempotencyKey: "biometric-idempotency-fixture", + accountPublicMaterialDigestSha256: frameBundle.accountPublicMaterialDigestSha256, + capturePolicyId: frameBundle.policyId, + artifactDigestSha256: frameBundle.artifactDigestSha256, + outcome: "simulated_pass", + reasonCode: "scenario_happy_path", + issuedAt: "2026-09-02T18:00:00Z", + expiresAt: "2026-09-02T19:00:00Z", + authentication: { + scheme: "staging-ed25519", + keyId: "pending", + signatureBase64Url: "pending", + }, + }, + biometricReceiptSigner, + ); +} + +async function makeIssuanceRequest( + receipt: SimulationReceiptV0, +): Promise { + return signArtifact( + { + kind: STAGING_ISSUANCE_SIMULATION_REQUEST_V0, + version: STAGING_ISSUANCE_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + audience: STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, + requestId: "issuance-request-fixture", + sessionId: receipt.sessionId, + nonceDigestSha256: receipt.nonceDigestSha256, + idempotencyKey: "issuance-idempotency-fixture", + accountId: "account-fixture", + accountPublicMaterialDigestSha256: receipt.accountPublicMaterialDigestSha256, + biometricReceipt: receipt as SimulationReceiptV0 & { readonly outcome: "simulated_pass" }, + scenario: "issue_success", + requestedAt: "2026-09-02T18:00:00Z", + expiresAt: "2026-09-02T19:00:00Z", + authentication: { + scheme: "staging-ed25519", + keyId: "pending", + signatureBase64Url: "pending", + }, + }, + gatewayIssuanceSigner, + ); +} + +async function makeCredential( + receipt: SimulationReceiptV0, +): Promise { + return signArtifact( + { + kind: SIMULATED_STAGING_CREDENTIAL_V0, + version: STAGING_ISSUANCE_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + credentialId: "credential-fixture", + issuer: SIMULATED_STAGING_ISSUER_V0, + audience: SIMULATED_STAGING_AUDIENCE_V0, + issuanceRequestId: "issuance-request-fixture", + idempotencyKey: "issuance-idempotency-fixture", + nonceDigestSha256: receipt.nonceDigestSha256, + subjectAccountId: "account-fixture", + accountPublicMaterialDigestSha256: receipt.accountPublicMaterialDigestSha256, + simulationReceiptId: receipt.receiptId, + claims: { + biometricVerification: "simulated_not_performed", + uniqueness: "not_performed", + credentialClass: "not_selfie_check", + }, + issuedAt: "2026-09-02T18:00:00Z", + expiresAt: "2026-09-02T19:00:00Z", + authentication: { + scheme: "staging-ed25519", + keyId: "pending", + signatureBase64Url: "pending", + }, + }, + issuanceCredentialSigner, + ); +} + +describe("the eight frozen interfaces", () => { + test("pins the approved PRF mapping without a secret wire field", () => { + const policy: WebAuthnPrfAuthenticatorPolicyV1 = { + version: WEB_AUTHN_PRF_AUTHENTICATOR_V1, + rpId: "auth.example.test", + allowedOrigins: ["https://auth.example.test"], + userVerification: "required", + prfInputSha256: PRF_INPUT_V1_SHA256, + prfOutputMapping: "verbatim_32_byte_first_result_to_world_id_4_signer_seed", + secretLifecycle: "browser_memory_only", + }; + expect(policy.prfInputSha256).toBe( + "0b2ba181b397d6ac08ef7139cd2410c31fd416120d35f075420a4af38f3609e6", + ); + expect(Object.keys(policy)).not.toContain("prfOutput"); + expect(Object.keys(policy)).not.toContain("privateKey"); + expect(Object.keys(policy)).not.toContain("seed32"); + }); + + test("separates biometric and issuance simulation transitions in V2", () => { + const session: EnrollmentSessionV2 = { + version: ENROLLMENT_SESSION_V2, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + sessionId: "session-fixture", + rpRequestDigestSha256: ZERO_HASH, + accountPublicMaterialDigestSha256: ONE_HASH, + nonceBase64Url: "nonce-fixture", + idempotencyKey: "idempotency-fixture", + biometricScenario: "happy_path", + issuanceScenario: "issue_success", + state: "created", + createdAt: "2026-09-02T18:00:00Z", + expiresAt: "2026-09-02T19:00:00Z", + }; + expect(session.mode).toBe("simulation"); + expect( + isEnrollmentTransitionAllowedV2("biometric_simulation_pending", "simulated_pass"), + ).toBe(true); + expect( + isEnrollmentTransitionAllowedV2( + "issuance_simulation_pending", + "simulated_issuance_reject", + ), + ).toBe(true); + expect( + isEnrollmentTransitionAllowedV2( + "issuance_simulation_pending", + "simulated_issuance_unavailable", + ), + ).toBe(true); + expect(isEnrollmentTransitionAllowedV2("simulated_pass", "simulated_credential_ready")).toBe( + false, + ); + expect( + isEnrollmentTransitionAllowedV2("simulated_issuance_reject", "simulated_reject"), + ).toBe(false); + }); + + test("recomputes the artifact digest and rejects unknown media fields", async () => { + const bundle = await makeFrameBundle(); + expect(validateSimulationCapturePolicyV0(capturePolicy)).toEqual([]); + expect(await validateFrameBundleV0(bundle, capturePolicy)).toEqual([]); + expect(bundle.artifactDigestSha256).toBe( + "4f3b997f844b8551e27bc311e987d45d7bf5315a3d29fc6576af3079caf4e153", + ); + const wrongDigest = { ...bundle, artifactDigestSha256: ZERO_HASH }; + expect(await validateFrameBundleV0(wrongDigest, capturePolicy)).toContain( + "artifactDigestMismatch", + ); + const withPixels = { ...bundle, pixels: "forbidden" }; + expect(await validateFrameBundleV0(withPixels, capturePolicy)).toContain("unknown.pixels"); + const nonCanonicalUnknown = { ...bundle, pixels: 1n }; + expect(await validateFrameBundleV0(nonCanonicalUnknown, capturePolicy)).toEqual( + expect.arrayContaining(["unknown.pixels", "artifactCanonicalization"]), + ); + }); + + test("detects one-field mutations across the artifact binding", async () => { + const bundle = await makeFrameBundle(); + const mutations: unknown[] = [ + { ...bundle, sessionId: "session-other" }, + { ...bundle, policyId: "policy-other" }, + { ...bundle, accountPublicMaterialDigestSha256: ONE_HASH }, + { ...bundle, nonceDigestSha256: ZERO_HASH }, + { ...bundle, dataMode: "synthetic_fixture", syntheticFixtureId: "fixture" }, + { ...bundle, frames: [{ ...bundle.frames[0], width: 641 }] }, + { ...bundle, frames: [{ ...bundle.frames[0], frameDigestSha256: ONE_HASH }] }, + ]; + for (const mutation of mutations) { + expect(await validateFrameBundleV0(mutation, capturePolicy)).toContain( + "artifactDigestMismatch", + ); + } + }); + + test("keeps client quality explicitly UX-only", () => { + const policy: ClientQualityPolicyV0 = { + version: CLIENT_QUALITY_POLICY_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + policyId: "quality-policy-fixture", + purpose: "capture_ux_only", + checks: [ + { kind: "camera_active" }, + { kind: "single_face" }, + { + kind: "framing", + minFaceAreaRatio: 0.15, + maxFaceAreaRatio: 0.7, + maxCenterOffsetRatio: 0.2, + }, + ], + maxRetakes: 2, + }; + expect(validateClientQualityPolicyV0(policy)).toEqual([]); + expect(JSON.stringify(policy)).not.toMatch(/spoof|verified|liveness/i); + }); + + test("authenticates the server-selected biometric scenario and all bindings", async () => { + const bundle = await makeFrameBundle(); + const request = await makeBiometricRequest(bundle); + const expected = { + runtimeEnvironment: "staging" as const, + requestId: request.requestId, + sessionId: request.sessionId, + nonceDigestSha256: request.nonceDigestSha256, + idempotencyKey: request.idempotencyKey, + accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, + capturePolicyId: request.capturePolicyId, + scenario: request.scenario, + now: NOW, + }; + expect( + await verifyBiometricSimulationRequestV0( + request, + expected, + capturePolicy, + gatewayBiometricSigner.trustRoot, + ), + ).toBe(true); + expect( + await verifyBiometricSimulationRequestV0( + { ...request, scenario: "spoof_reject" }, + expected, + capturePolicy, + gatewayBiometricSigner.trustRoot, + ), + ).toBe(false); + expect( + await verifyBiometricSimulationRequestV0( + request, + { ...expected, capturePolicyId: "policy-other" }, + capturePolicy, + gatewayBiometricSigner.trustRoot, + ), + ).toBe(false); + expect( + await verifyBiometricSimulationRequestV0( + { ...request, audience: "wrong-audience" }, + expected, + capturePolicy, + gatewayBiometricSigner.trustRoot, + ), + ).toBe(false); + expect( + await verifyBiometricSimulationRequestV0( + request, + { ...expected, now: "2026-09-02T19:00:00Z" }, + capturePolicy, + gatewayBiometricSigner.trustRoot, + ), + ).toBe(false); + expect( + await verifyBiometricSimulationRequestV0( + request, + { ...expected, nonceDigestSha256: ZERO_HASH }, + capturePolicy, + gatewayBiometricSigner.trustRoot, + ), + ).toBe(false); + expect( + await verifyBiometricSimulationRequestV0( + request, + expected, + capturePolicy, + biometricReceiptSigner.trustRoot, + ), + ).toBe(false); + }); + + test("strictly parses and verifies simulation receipts", async () => { + const bundle = await makeFrameBundle(); + const receipt = await makeReceipt(bundle); + const expected = { + runtimeEnvironment: "staging" as const, + receiptId: receipt.receiptId, + requestId: receipt.requestId, + sessionId: receipt.sessionId, + nonceDigestSha256: receipt.nonceDigestSha256, + idempotencyKey: receipt.idempotencyKey, + accountPublicMaterialDigestSha256: receipt.accountPublicMaterialDigestSha256, + capturePolicyId: receipt.capturePolicyId, + scenario: receipt.scenario, + artifactDigestSha256: receipt.artifactDigestSha256, + now: NOW, + }; + expect(isSimulationReceiptV0(receipt)).toBe(true); + expect( + await verifySimulationReceiptV0(receipt, expected, biometricReceiptSigner.trustRoot), + ).toBe(true); + const { authentication: _authentication, ...withoutAuthentication } = receipt; + expect(isSimulationReceiptV0(withoutAuthentication)).toBe(false); + expect( + isSimulationReceiptV0({ + ...receipt, + scenario: "spoof_reject", + outcome: "simulated_pass", + }), + ).toBe(false); + expect( + await verifySimulationReceiptV0( + { ...receipt, idempotencyKey: "tampered" }, + expected, + biometricReceiptSigner.trustRoot, + ), + ).toBe(false); + expect( + await verifySimulationReceiptV0( + receipt, + { ...expected, capturePolicyId: "policy-other" }, + biometricReceiptSigner.trustRoot, + ), + ).toBe(false); + expect(isSimulationReceiptV0({ ...receipt, audience: "wrong-audience" })).toBe(false); + expect(isSimulationReceiptV0({ ...receipt, unexpected: true })).toBe(false); + }); + + test("authenticates issuance scenarios and requires a simulated pass", async () => { + const bundle = await makeFrameBundle(); + const receipt = await makeReceipt(bundle); + const request = await makeIssuanceRequest(receipt); + const expected = { + runtimeEnvironment: "staging" as const, + requestId: request.requestId, + sessionId: request.sessionId, + nonceDigestSha256: request.nonceDigestSha256, + idempotencyKey: request.idempotencyKey, + accountId: request.accountId, + accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, + biometricReceipt: { + runtimeEnvironment: "staging" as const, + receiptId: receipt.receiptId, + requestId: receipt.requestId, + sessionId: receipt.sessionId, + nonceDigestSha256: receipt.nonceDigestSha256, + idempotencyKey: receipt.idempotencyKey, + accountPublicMaterialDigestSha256: receipt.accountPublicMaterialDigestSha256, + capturePolicyId: receipt.capturePolicyId, + scenario: receipt.scenario, + artifactDigestSha256: receipt.artifactDigestSha256, + now: NOW, + }, + scenario: request.scenario, + now: NOW, + }; + expect( + await verifyStagingIssuanceSimulationRequestV0( + request, + expected, + gatewayIssuanceSigner.trustRoot, + biometricReceiptSigner.trustRoot, + ), + ).toBe(true); + expect( + await verifyStagingIssuanceSimulationRequestV0( + { ...request, scenario: "issue_reject" }, + expected, + gatewayIssuanceSigner.trustRoot, + biometricReceiptSigner.trustRoot, + ), + ).toBe(false); + expect( + await verifyStagingIssuanceSimulationRequestV0( + request, + { ...expected, idempotencyKey: "idempotency-other" }, + gatewayIssuanceSigner.trustRoot, + biometricReceiptSigner.trustRoot, + ), + ).toBe(false); + expect( + await verifyStagingIssuanceSimulationRequestV0( + { ...request, audience: "wrong-audience" }, + expected, + gatewayIssuanceSigner.trustRoot, + biometricReceiptSigner.trustRoot, + ), + ).toBe(false); + expect( + await verifyStagingIssuanceSimulationRequestV0( + { + ...request, + biometricReceipt: { + ...receipt, + scenario: "spoof_reject", + outcome: "simulated_reject", + reasonCode: "scenario_spoof_reject", + }, + }, + expected, + gatewayIssuanceSigner.trustRoot, + biometricReceiptSigner.trustRoot, + ), + ).toBe(false); + + const invalidlySignedReceipt = { + ...receipt, + authentication: { ...receipt.authentication, signatureBase64Url: "not-a-signature" }, + } as SimulationReceiptV0 & { readonly outcome: "simulated_pass" }; + const requestWithInvalidReceipt = await signArtifact( + { ...request, biometricReceipt: invalidlySignedReceipt }, + gatewayIssuanceSigner, + ); + expect( + await verifyStagingIssuanceSimulationRequestV0( + requestWithInvalidReceipt, + expected, + gatewayIssuanceSigner.trustRoot, + biometricReceiptSigner.trustRoot, + ), + ).toBe(false); + + const expiredReceipt = await signArtifact( + { + ...receipt, + issuedAt: "2026-09-02T16:00:00Z", + expiresAt: "2026-09-02T17:00:00Z", + }, + biometricReceiptSigner, + ); + const requestWithExpiredReceipt = await signArtifact( + { + ...request, + biometricReceipt: expiredReceipt as SimulationReceiptV0 & { + readonly outcome: "simulated_pass"; + }, + }, + gatewayIssuanceSigner, + ); + expect( + await verifyStagingIssuanceSimulationRequestV0( + requestWithExpiredReceipt, + expected, + gatewayIssuanceSigner.trustRoot, + biometricReceiptSigner.trustRoot, + ), + ).toBe(false); + expect( + await verifyStagingIssuanceSimulationRequestV0( + request, + expected, + gatewayIssuanceSigner.trustRoot, + gatewayBiometricSigner.trustRoot, + ), + ).toBe(false); + }); + + test("strictly verifies the simulated credential and exact non-claims", async () => { + const bundle = await makeFrameBundle(); + const receipt = await makeReceipt(bundle); + const credential = await makeCredential(receipt); + const expected = { + runtimeEnvironment: "staging" as const, + issuanceRequestId: credential.issuanceRequestId, + idempotencyKey: credential.idempotencyKey, + nonceDigestSha256: credential.nonceDigestSha256, + subjectAccountId: credential.subjectAccountId, + accountPublicMaterialDigestSha256: credential.accountPublicMaterialDigestSha256, + simulationReceiptId: credential.simulationReceiptId, + now: NOW, + }; + expect(isSimulatedStagingCredentialV0(credential)).toBe(true); + expect( + await verifySimulatedStagingCredentialV0( + credential, + expected, + issuanceCredentialSigner.trustRoot, + ), + ).toBe(true); + expect( + isSimulatedStagingCredentialV0({ + ...credential, + claims: { + biometricVerification: "verified", + uniqueness: "not_performed", + credentialClass: "selfie_check", + }, + }), + ).toBe(false); + const { authentication: _authentication, ...withoutAuthentication } = credential; + expect(isSimulatedStagingCredentialV0(withoutAuthentication)).toBe(false); + expect(isSimulatedStagingCredentialV0({ ...credential, audience: "wrong-audience" })).toBe( + false, + ); + expect(isSimulatedStagingCredentialV0({ ...credential, unexpected: true })).toBe(false); + expect( + await verifySimulatedStagingCredentialV0( + credential, + { ...expected, now: "2026-09-02T19:00:00Z" }, + issuanceCredentialSigner.trustRoot, + ), + ).toBe(false); + }); + + test("requires World ID staging configuration without inventing an endpoint", () => { + const unresolvedPolicy: WorldIdRegistrationAdapterPolicyV1 = { + version: WORLD_ID_REGISTRATION_ADAPTER_V1, + environment: SIMULATION_ENVIRONMENT, + sdkRevision: "required-at-runtime", + gatewayBaseUrl: "required-at-runtime", + chainId: 0, + gatewayRecomputesOrRejectsCommitmentMismatch: true, + endpointConfigurationHasNoDefault: true, + }; + expect(validateWorldIdRegistrationAdapterPolicyV1(unresolvedPolicy)).toEqual([ + "sdkRevision", + "gatewayBaseUrl", + "chainId", + ]); + }); +}); + +describe("production isolation", () => { + test("rejects a simulation receipt before reading outcome or authentication", () => { + let outcomeWasRead = false; + let authenticationWasRead = false; + const value: Record = { + kind: "simulation_receipt_v0", + mode: "simulation", + environment: "staging", + }; + Object.defineProperty(value, "outcome", { + enumerable: true, + get() { + outcomeWasRead = true; + return "simulated_pass"; + }, + }); + Object.defineProperty(value, "authentication", { + enumerable: true, + get() { + authenticationWasRead = true; + return {}; + }, + }); + + expect(() => assertSimulationArtifactAllowed("production", value)).toThrow( + SimulationArtifactInProductionError, + ); + expect(outcomeWasRead).toBe(false); + expect(authenticationWasRead).toBe(false); + }); + + test("rejects a simulated credential and permits it only outside production", async () => { + const credential = await makeCredential(await makeReceipt(await makeFrameBundle())); + expect(() => assertSimulationArtifactAllowed("production", credential)).toThrow( + SimulationArtifactInProductionError, + ); + expect(() => assertSimulationArtifactAllowed("staging", credential)).not.toThrow(); + }); +}); diff --git a/packages/contracts/test/ui-contracts.test.ts b/packages/contracts/test/ui-contracts.test.ts new file mode 100644 index 0000000..84939cc --- /dev/null +++ b/packages/contracts/test/ui-contracts.test.ts @@ -0,0 +1,996 @@ +import { describe, expect, test } from "bun:test"; +import { + AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, + AUTHENTICATOR_UI_ACTIONS_V1, + AUTHENTICATOR_UI_COPY_V1, + AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, + AUTHENTICATOR_UI_DETAIL_CODES_V1, + AUTHENTICATOR_UI_DETAIL_COPY_V1, + AUTHENTICATOR_UI_EFFECTS_V1, + AUTHENTICATOR_UI_EVENTS_V1, + AUTHENTICATOR_UI_EVENT_V1, + AUTHENTICATOR_UI_FLOW_V1, + AUTHENTICATOR_UI_INITIAL_EFFECTS_V1, + AUTHENTICATOR_UI_SNAPSHOT_V1, + AUTHENTICATOR_UI_STAGING_BANNER_V1, + AUTHENTICATOR_UI_STATES_V1, + AUTHENTICATOR_UI_STATE_PROGRESS_V1, + AUTHENTICATOR_UI_TERMINAL_STATES_V1, + AUTHENTICATOR_UI_VISUAL_SOURCES_V1, + ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1, + ENROLLMENT_SESSION_STATES_V2, + ENROLLMENT_SESSION_TO_UI_STATE_V1, + FRAME_BUNDLE_V0, + FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + INJECTED_AUTHENTICATOR_PORT_V0, + INJECTED_AUTHENTICATOR_REQUEST_V0, + RP_PRESENTATION_IDS_V0, + SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, + SIMULATOR_BROWSER_SESSION_ERROR_CODES_V0, + SIMULATOR_BROWSER_SESSION_ERROR_V0, + SIMULATOR_BROWSER_SESSION_OPERATIONS_V0, + SIMULATOR_BROWSER_SESSION_PORT_V0, + SIMULATOR_BROWSER_SESSION_VIEW_V0, + SIMULATOR_SESSION_STATUS_CODES_V0, + SIMULATOR_UI_BOOTSTRAP_V0, + SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, + SIMULATOR_UI_QUALITY_POLICY_V0, + STAGING_DEMO_AUTHENTICATOR_ERROR_REASONS_V0, + STAGING_DEMO_AUTHENTICATOR_ERROR_V0, + STAGING_DEMO_AUTHENTICATOR_READY_V0, + SimulationArtifactInProductionError, + assertAuthenticatorUiEventAllowed, + assertAuthenticatorUiSnapshotAllowed, + assertSimulationArtifactAllowed, + assertSimulatorBrowserArtifactAllowed, + computeFrameBundleDigestV0, + dispatchAuthenticatorUiActionV1, + isAuthenticatorUiEventV1, + isAuthenticatorUiSnapshotV1, + isBrowserIdempotentSessionFieldsV0, + isBrowserSessionFieldsV0, + isCompleteDemoAuthenticatorV0, + isCreateSimulatorBrowserSessionV0, + isInjectedAuthenticatorRequestV0, + isSimulatorBrowserDemoAuthenticatorReadyV0, + isSimulatorBrowserReturnAcceptedV0, + isSimulatorBrowserSessionErrorV0, + isSimulatorBrowserSessionViewV0, + isSimulatorUiBootstrapV0, + isStagingDemoAuthenticatorErrorV0, + isStagingDemoAuthenticatorReadyV0, + isSubmitSimulatorCaptureShapeV0, + makeAuthenticatorUiEventV1, + makeAuthenticatorUiSnapshotV1, + matchesExpectedSimulatorBrowserDemoAuthenticatorReadyV0, + matchesExpectedSimulatorBrowserSessionViewV0, + matchesExpectedStagingDemoAuthenticatorErrorV0, + matchesExpectedStagingDemoAuthenticatorReadyV0, + matchesExpectedSubmitSimulatorCaptureV0, + projectEnrollmentSessionStateToUiV1, + projectSimulatorBrowserErrorToUiEventV1, + transitionAuthenticatorUiV1, + type AuthenticatorUiDetailCodeV1, + type AuthenticatorUiEventTypeV1, + type AuthenticatorUiSnapshotV1, + type AuthenticatorUiStateIdV1, + type EnrollmentSessionStateV2, + type FrameBundleV0, + type SimulatorBrowserSessionViewV0, +} from "../src"; + +const REQUEST_STARTED = "2026-09-02T21:59:59.000Z"; +const NOW = "2026-09-02T22:00:00.000Z"; +const LATER = "2026-09-02T22:05:00.000Z"; +const ACCOUNT_DIGEST = "a".repeat(64); +const NONCE_DIGEST = "b".repeat(64); +const FRAME_DIGEST = "c".repeat(64); + +const injectedRequest = { + kind: INJECTED_AUTHENTICATOR_REQUEST_V0, + version: INJECTED_AUTHENTICATOR_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + requestId: "demo-auth-request", + sessionId: "session-v0", + idempotencyKey: "demo-auth-idempotency", + accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, + requestedAt: REQUEST_STARTED, + expiresAt: LATER, +} as const; + +const injectedReady = { + kind: STAGING_DEMO_AUTHENTICATOR_READY_V0, + version: INJECTED_AUTHENTICATOR_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + requestId: injectedRequest.requestId, + sessionId: injectedRequest.sessionId, + idempotencyKey: injectedRequest.idempotencyKey, + completionHandle: "opaque-completion-handle", + accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, + claims: { + webauthnPerformed: false, + prfEvaluated: false, + worldIdCreated: false, + }, + issuedAt: NOW, + expiresAt: LATER, +} as const; + +const expectedInjectedReady = { + runtimeEnvironment: "staging" as const, + requestId: injectedRequest.requestId, + sessionId: injectedRequest.sessionId, + idempotencyKey: injectedRequest.idempotencyKey, + accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, + requestRequestedAt: injectedRequest.requestedAt, + requestExpiresAt: injectedRequest.expiresAt, + now: NOW, +}; + +function capturePolicy(expiresAt = LATER) { + return { ...SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, expiresAt }; +} + +const artifactSummary = { + kind: SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0, + biometricVerification: "not_performed", + uniqueness: "not_performed", + credentialClass: "not_selfie_check", + productionCredential: false, +} as const; + +function sessionView( + state: EnrollmentSessionStateV2 = "capture_ready", + code: SimulatorBrowserSessionViewV0["code"] = "capture_ready", +): SimulatorBrowserSessionViewV0 { + return { + kind: SIMULATOR_BROWSER_SESSION_VIEW_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + sessionId: "session-v0", + browserHandle: "opaque-browser-handle", + nonceBase64Url: "opaque-nonce", + state, + code, + retryable: + code === "simulation_retry" || + code === "simulation_unavailable" || + code === "issuance_unavailable", + expiresAt: LATER, + capturePolicy: capturePolicy(), + artifactSummary: state === "simulated_credential_ready" ? artifactSummary : null, + }; +} + +async function frameBundle(): Promise { + const pending: FrameBundleV0 = { + kind: FRAME_BUNDLE_V0, + mode: SIMULATION_MODE, + sessionId: "session-v0", + policyId: SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.policyId, + accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, + nonceDigestSha256: NONCE_DIGEST, + dataMode: "metadata_only", + frames: [ + { + transportIndex: 0, + width: 1, + height: 1, + encoding: "rgba8", + byteLength: 4, + frameDigestSha256: FRAME_DIGEST, + }, + ], + totalByteLength: 4, + digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + artifactDigestSha256: "0".repeat(64), + }; + return { ...pending, artifactDigestSha256: await computeFrameBundleDigestV0(pending) }; +} + +function detailFor(state: AuthenticatorUiStateIdV1): AuthenticatorUiDetailCodeV1 | null { + if (state === "capture_guidance_adjust") return "move_closer"; + if (state === "capture_guidance_retake") return "image_blurry"; + if (state === "capture_guidance_unavailable") return "framing_guidance_unavailable"; + if (state === "capture_error") return "permission_denied"; + if (state === "session_error") return "network_timeout"; + if (state === "return_callback_failed") return "navigation_failed"; + if (state === "flow_failed") return "safe_internal_error"; + return null; +} + +function authoritativeFor( + state: AuthenticatorUiStateIdV1, +): EnrollmentSessionStateV2 | null { + for (const serverState of ENROLLMENT_SESSION_STATES_V2) { + if (ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1[serverState].includes(state)) { + return serverState; + } + } + return null; +} + +function event( + eventType: AuthenticatorUiEventTypeV1, + fields: Partial<{ + detailCode: AuthenticatorUiDetailCodeV1 | null; + authoritativeSessionState: EnrollmentSessionStateV2 | null; + rpPresentationId: "zoom_demo" | null; + }> = {}, +) { + return makeAuthenticatorUiEventV1({ event: eventType, ...fields }); +} + +function advance( + current: AuthenticatorUiSnapshotV1, + nextEvent: ReturnType, +) { + const transition = transitionAuthenticatorUiV1(current, nextEvent); + expect(transition).not.toBeNull(); + return transition!; +} + +describe("InjectedAuthenticatorPortV0", () => { + test("is type-distinct, strict, staging-only, and explicitly performs no real authenticator work", () => { + expect(isInjectedAuthenticatorRequestV0(injectedRequest)).toBe(true); + expect(isStagingDemoAuthenticatorReadyV0(injectedReady)).toBe(true); + expect(matchesExpectedStagingDemoAuthenticatorReadyV0( + injectedReady, + expectedInjectedReady, + )).toBe(true); + expect(injectedReady.claims).toEqual({ + webauthnPerformed: false, + prfEvaluated: false, + worldIdCreated: false, + }); + + for (const extra of [ + { syntheticAccountHandle: "unneeded" }, + { prfResult: "forbidden" }, + { privateKey: "forbidden" }, + { passkeyCredential: "forbidden" }, + { worldIdSignature: "forbidden" }, + ]) { + expect(isStagingDemoAuthenticatorReadyV0({ ...injectedReady, ...extra })).toBe(false); + } + expect(isStagingDemoAuthenticatorReadyV0({ + ...injectedReady, + claims: { ...injectedReady.claims, prfEvaluated: true }, + })).toBe(false); + }); + + test("binds a ready result to the initiating request time window", () => { + for (const [candidate, expected] of [ + [injectedReady, { ...expectedInjectedReady, requestId: "wrong" }], + [injectedReady, { ...expectedInjectedReady, sessionId: "wrong" }], + [injectedReady, { ...expectedInjectedReady, idempotencyKey: "wrong" }], + [injectedReady, { ...expectedInjectedReady, accountPublicMaterialDigestSha256: "d".repeat(64) }], + [injectedReady, { ...expectedInjectedReady, now: LATER }], + [{ ...injectedReady, issuedAt: "2020-01-01T00:00:00.000Z", expiresAt: "2030-01-01T00:00:00.000Z" }, expectedInjectedReady], + [{ ...injectedReady, expiresAt: "2026-09-02T22:06:00.000Z" }, expectedInjectedReady], + ] as const) { + expect(matchesExpectedStagingDemoAuthenticatorReadyV0(candidate, expected)).toBe(false); + } + expect(matchesExpectedStagingDemoAuthenticatorReadyV0(injectedReady, { + ...expectedInjectedReady, + now: "not-a-date", + })).toBe(false); + }); + + test("strictly matches stable demo errors to the initiating operation", () => { + const error = { + kind: STAGING_DEMO_AUTHENTICATOR_ERROR_V0, + version: INJECTED_AUTHENTICATOR_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + requestId: injectedRequest.requestId, + sessionId: injectedRequest.sessionId, + idempotencyKey: injectedRequest.idempotencyKey, + reasonCode: "interrupted", + } as const; + expect(isStagingDemoAuthenticatorErrorV0(error)).toBe(true); + expect(matchesExpectedStagingDemoAuthenticatorErrorV0(error, { + runtimeEnvironment: "staging", + requestId: injectedRequest.requestId, + sessionId: injectedRequest.sessionId, + idempotencyKey: injectedRequest.idempotencyKey, + })).toBe(true); + expect(matchesExpectedStagingDemoAuthenticatorErrorV0(error, { + runtimeEnvironment: "staging", + requestId: "wrong", + sessionId: injectedRequest.sessionId, + idempotencyKey: injectedRequest.idempotencyKey, + })).toBe(false); + expect(isStagingDemoAuthenticatorErrorV0({ ...error, reasonCode: "raw upstream error" })).toBe(false); + expect(isStagingDemoAuthenticatorErrorV0({ ...error, message: "forbidden" })).toBe(false); + }); + + test("rejects production before nested demo claims are read", () => { + let claimsReads = 0; + const hostile = { ...injectedReady } as Record; + Object.defineProperty(hostile, "claims", { + enumerable: true, + get() { + claimsReads += 1; + throw new Error("nested claims read"); + }, + }); + expect(() => matchesExpectedStagingDemoAuthenticatorReadyV0(hostile, { + ...expectedInjectedReady, + runtimeEnvironment: "production", + })).toThrow(SimulationArtifactInProductionError); + expect(claimsReads).toBe(0); + }); + + test("fails closed for hostile request and result objects", () => { + const hostile = new Proxy({}, { ownKeys() { throw new Error("hostile keys"); } }); + expect(isInjectedAuthenticatorRequestV0(hostile)).toBe(false); + expect(isStagingDemoAuthenticatorReadyV0(hostile)).toBe(false); + expect(isStagingDemoAuthenticatorErrorV0(hostile)).toBe(false); + }); +}); + +describe("SimulatorBrowserSessionPortV0", () => { + const bootstrap = { + kind: SIMULATOR_UI_BOOTSTRAP_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + rpPresentationId: "zoom_demo", + accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, + returnAction: "server_managed", + authenticator: { + kind: "injected_demo_only", + webauthnPerformed: false, + prfEvaluated: false, + worldIdCreated: false, + }, + qualityPolicy: SIMULATOR_UI_QUALITY_POLICY_V0, + } as const; + + test("enforces the exact camera-active-only bootstrap policy", () => { + expect(isSimulatorUiBootstrapV0(bootstrap)).toBe(true); + expect(SIMULATOR_UI_QUALITY_POLICY_V0.checks).toEqual([{ kind: "camera_active" }]); + expect(SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.qualityPolicyId).toBe( + SIMULATOR_UI_QUALITY_POLICY_V0.policyId, + ); + expect(isSimulatorUiBootstrapV0({ ...bootstrap, scenario: "happy_path" })).toBe(false); + expect(isSimulatorUiBootstrapV0({ + ...bootstrap, + authenticator: { ...bootstrap.authenticator, worldIdCreated: true }, + })).toBe(false); + expect(isSimulatorUiBootstrapV0({ + ...bootstrap, + qualityPolicy: { + ...SIMULATOR_UI_QUALITY_POLICY_V0, + checks: [ + { kind: "camera_active" }, + { + kind: "framing", + minFaceAreaRatio: 0.2, + maxFaceAreaRatio: 0.8, + maxCenterOffsetRatio: 0.2, + }, + ], + }, + })).toBe(false); + }); + + test("strictly validates every browser request shape", async () => { + const basic = { sessionId: "session-v0", browserHandle: "opaque-browser-handle" }; + const idempotent = { ...basic, idempotencyKey: "operation-key" }; + const complete = { ...idempotent, completionHandle: "opaque-completion" }; + const bundle = await frameBundle(); + const submit = { ...idempotent, nonceBase64Url: "opaque-nonce", frameBundle: bundle }; + + expect(isCreateSimulatorBrowserSessionV0({ idempotencyKey: "create-key" })).toBe(true); + expect(isBrowserSessionFieldsV0(basic)).toBe(true); + expect(isBrowserIdempotentSessionFieldsV0(idempotent)).toBe(true); + expect(isCompleteDemoAuthenticatorV0(complete)).toBe(true); + expect(isSubmitSimulatorCaptureShapeV0(submit)).toBe(true); + expect(await matchesExpectedSubmitSimulatorCaptureV0(submit, { + ...idempotent, + nonceBase64Url: "opaque-nonce", + nonceDigestSha256: NONCE_DIGEST, + accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, + capturePolicy: capturePolicy(), + })).toBe(true); + + for (const invalid of [ + { ...basic, extra: true }, + { ...idempotent, idempotencyKey: "" }, + { ...complete, completionHandle: "", extra: true }, + { ...submit, pixels: "forbidden" }, + ]) { + expect( + isBrowserSessionFieldsV0(invalid) || + isBrowserIdempotentSessionFieldsV0(invalid) || + isCompleteDemoAuthenticatorV0(invalid) || + isSubmitSimulatorCaptureShapeV0(invalid), + ).toBe(false); + } + expect(await matchesExpectedSubmitSimulatorCaptureV0(submit, { + ...idempotent, + sessionId: "wrong", + nonceBase64Url: "opaque-nonce", + nonceDigestSha256: NONCE_DIGEST, + accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, + capturePolicy: capturePolicy(), + })).toBe(false); + }); + + test("narrows demo results and errors to strict browser envelopes", () => { + const ready = { + kind: SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + sessionId: "session-v0", + idempotencyKey: "demo-auth-idempotency", + completionHandle: "opaque-completion", + claims: { + webauthnPerformed: false, + prfEvaluated: false, + worldIdCreated: false, + }, + expiresAt: LATER, + } as const; + expect(isSimulatorBrowserDemoAuthenticatorReadyV0(ready)).toBe(true); + expect(matchesExpectedSimulatorBrowserDemoAuthenticatorReadyV0(ready, { + runtimeEnvironment: "staging", + sessionId: "session-v0", + idempotencyKey: "demo-auth-idempotency", + now: NOW, + })).toBe(true); + expect(isSimulatorBrowserDemoAuthenticatorReadyV0({ + ...ready, + syntheticAccountHandle: "forbidden", + })).toBe(false); + expect(isSimulatorBrowserDemoAuthenticatorReadyV0({ + ...ready, + accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, + })).toBe(false); + + const error = { + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + operation: "begin_demo_authenticator", + reasonCode: "user_non_completion", + } as const; + expect(isSimulatorBrowserSessionErrorV0(error)).toBe(true); + expect(projectSimulatorBrowserErrorToUiEventV1(error)?.event).toBe( + "demo_authenticator_non_completion", + ); + expect(isSimulatorBrowserSessionErrorV0({ ...error, message: "raw" })).toBe(false); + expect(isSimulatorBrowserSessionErrorV0({ ...error, operation: "unknown" })).toBe(false); + + const returned = { + kind: SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + action: "server_managed", + } as const; + expect(isSimulatorBrowserReturnAcceptedV0(returned)).toBe(true); + expect(isSimulatorBrowserReturnAcceptedV0({ ...returned, returnUrl: "https://evil.test" })).toBe(false); + }); + + test("maps each strict browser error class to one frozen UI event", () => { + const base = { + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + } as const; + expect(projectSimulatorBrowserErrorToUiEventV1({ + ...base, + operation: "submit_capture", + reasonCode: "artifact_invalid", + })).toMatchObject({ event: "session_failed", detailCode: "artifact_invalid" }); + expect(projectSimulatorBrowserErrorToUiEventV1({ + ...base, + operation: "return_to_rp", + reasonCode: "navigation_failed", + })).toMatchObject({ event: "return_failed", detailCode: "navigation_failed" }); + expect(projectSimulatorBrowserErrorToUiEventV1({ + ...base, + operation: "bootstrap", + reasonCode: "response_invalid", + })).toMatchObject({ event: "fatal_error", detailCode: "safe_internal_error" }); + expect(projectSimulatorBrowserErrorToUiEventV1({ + ...base, + operation: "create_session", + reasonCode: "network_unavailable", + })).toMatchObject({ event: "fatal_error", detailCode: "safe_internal_error" }); + expect(projectSimulatorBrowserErrorToUiEventV1({ ...base, message: "raw" })).toBeNull(); + }); + + test("enforces exact state/code/retryability and expected session bindings", () => { + expect(isSimulatorBrowserSessionViewV0(sessionView())).toBe(true); + const ready = sessionView("simulated_credential_ready", "simulated_credential_ready"); + expect(isSimulatorBrowserSessionViewV0(ready)).toBe(true); + expect(isSimulatorBrowserSessionViewV0({ ...ready, retryable: true })).toBe(false); + expect(isSimulatorBrowserSessionViewV0(sessionView("simulated_reject", "simulation_pass"))).toBe(false); + expect(isSimulatorBrowserSessionViewV0({ + ...sessionView(), + capturePolicy: capturePolicy("2026-09-02T22:04:00.000Z"), + })).toBe(false); + expect(matchesExpectedSimulatorBrowserSessionViewV0(sessionView(), { + runtimeEnvironment: "staging", + sessionId: "session-v0", + browserHandle: "opaque-browser-handle", + now: NOW, + })).toBe(true); + expect(matchesExpectedSimulatorBrowserSessionViewV0(sessionView(), { + runtimeEnvironment: "staging", + sessionId: "wrong", + browserHandle: "opaque-browser-handle", + now: NOW, + })).toBe(false); + + for (const extra of [ + { biometricScenario: "happy_path" }, + { issuanceScenario: "issue_success" }, + { receipt: {} }, + { credential: {} }, + { signatureBase64Url: "forbidden" }, + { pixels: "forbidden" }, + { returnUrl: "https://example.test" }, + ]) { + expect(isSimulatorBrowserSessionViewV0({ ...sessionView(), ...extra })).toBe(false); + } + }); + + test("requires the negative artifact summary only at simulated credential ready", () => { + expect(isSimulatorBrowserSessionViewV0({ + ...sessionView("simulated_credential_ready", "simulated_credential_ready"), + artifactSummary: null, + })).toBe(false); + expect(isSimulatorBrowserSessionViewV0({ ...sessionView(), artifactSummary })).toBe(false); + expect(isSimulatorBrowserSessionViewV0({ + ...sessionView("simulated_credential_ready", "simulated_credential_ready"), + artifactSummary: { ...artifactSummary, biometricVerification: "performed" }, + })).toBe(false); + }); + + test("rejects production before a projected artifact body is read", () => { + let summaryReads = 0; + const hostile = { ...sessionView() } as Record; + Object.defineProperty(hostile, "artifactSummary", { + enumerable: true, + get() { + summaryReads += 1; + throw new Error("summary read"); + }, + }); + expect(() => assertSimulatorBrowserArtifactAllowed("production", hostile)).toThrow( + SimulationArtifactInProductionError, + ); + expect(summaryReads).toBe(0); + }); + + test("fails closed for hostile request, policy, and result objects", () => { + const hostile = new Proxy({}, { ownKeys() { throw new Error("hostile keys"); } }); + expect(isCreateSimulatorBrowserSessionV0(hostile)).toBe(false); + expect(isBrowserSessionFieldsV0(hostile)).toBe(false); + expect(isBrowserIdempotentSessionFieldsV0(hostile)).toBe(false); + expect(isCompleteDemoAuthenticatorV0(hostile)).toBe(false); + expect(isSubmitSimulatorCaptureShapeV0(hostile)).toBe(false); + expect(isSimulatorUiBootstrapV0({ ...bootstrap, qualityPolicy: hostile })).toBe(false); + expect(isSimulatorBrowserSessionViewV0({ ...sessionView(), capturePolicy: hostile })).toBe(false); + expect(isSimulatorBrowserSessionErrorV0(hostile)).toBe(false); + }); +}); + +describe("AuthenticatorUiFlowV1", () => { + test("covers every frozen state with exact categorical progress, actions, visuals, and copy", () => { + expect(new Set(AUTHENTICATOR_UI_STATES_V1).size).toBe(AUTHENTICATOR_UI_STATES_V1.length); + for (const registry of [ + AUTHENTICATOR_UI_STATE_PROGRESS_V1, + AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, + AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, + AUTHENTICATOR_UI_COPY_V1, + ]) { + expect(Object.keys(registry).sort()).toEqual([...AUTHENTICATOR_UI_STATES_V1].sort()); + } + for (const state of AUTHENTICATOR_UI_STATES_V1) { + const snapshot = makeAuthenticatorUiSnapshotV1({ + state, + detailCode: detailFor(state), + authoritativeSessionState: authoritativeFor(state), + rpPresentationId: "zoom_demo", + visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[state], + }); + expect(isAuthenticatorUiSnapshotV1(snapshot)).toBe(true); + expect(snapshot.progress).toEqual(AUTHENTICATOR_UI_STATE_PROGRESS_V1[state]); + expect(AUTHENTICATOR_UI_COPY_V1[state].heading.length).toBeGreaterThan(0); + expect(AUTHENTICATOR_UI_COPY_V1[state].body.length).toBeGreaterThan(0); + } + expect(AUTHENTICATOR_UI_STAGING_BANNER_V1).toContain("No biometric verification"); + expect(AUTHENTICATOR_UI_TERMINAL_STATES_V1).toContain("simulated_credential_ready"); + expect(AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1.biometric_simulation_pending).toBe( + "figma_5132_135038", + ); + }); + + test("contains no fabricated percentage, ETA, or positive assurance copy", () => { + const text = JSON.stringify(AUTHENTICATOR_UI_COPY_V1).toLowerCase(); + expect(text).not.toContain("%"); + expect(text).not.toMatch(/\beta\b/); + for (const forbidden of [ + "verified human", + "biometric verification complete", + "selfie check credential issued", + "prove your liveness", + "real, unique person", + "passkey created successfully", + "world id created successfully", + "great position", + ]) { + expect(text).not.toContain(forbidden); + } + }); + + test("rejects impossible UI/server combinations and projects every V2 state", () => { + expect(Object.keys(ENROLLMENT_SESSION_TO_UI_STATE_V1).sort()).toEqual( + [...ENROLLMENT_SESSION_STATES_V2].sort(), + ); + for (const state of ENROLLMENT_SESSION_STATES_V2) { + const projected = projectEnrollmentSessionStateToUiV1(state, { + rpPresentationId: "zoom_demo", + visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[ + ENROLLMENT_SESSION_TO_UI_STATE_V1[state] + ], + }); + expect(projected.state).toBe(ENROLLMENT_SESSION_TO_UI_STATE_V1[state]); + expect(projected.authoritativeSessionState).toBe(state); + } + const valid = projectEnrollmentSessionStateToUiV1("simulated_credential_ready"); + expect(isAuthenticatorUiSnapshotV1({ + ...valid, + authoritativeSessionState: "created", + })).toBe(false); + expect(isAuthenticatorUiSnapshotV1({ + ...makeAuthenticatorUiSnapshotV1({ state: "request_review" }), + authoritativeSessionState: "simulated_credential_ready", + })).toBe(false); + for (const authoritativeSessionState of [ + "simulated_reject", + "simulated_issuance_reject", + "simulated_credential_ready", + "cancelled", + "expired", + ] as const) { + expect(isAuthenticatorUiSnapshotV1({ + ...makeAuthenticatorUiSnapshotV1({ state: "return_redirecting" }), + authoritativeSessionState, + })).toBe(false); + } + }); + + test("freezes legal actions, effects, events, and a complete happy transition path", () => { + expect(AUTHENTICATOR_UI_INITIAL_EFFECTS_V1).toEqual(["validate_request"]); + let current = makeAuthenticatorUiSnapshotV1({ + state: "request_checking", + visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1.request_checking, + }); + current = advance(current, event("request_accepted", { rpPresentationId: "zoom_demo" })).snapshot; + current = advance(current, event("continue")).snapshot; + current = advance(current, event("admission_safari_candidate")).snapshot; + current = advance(current, event("continue")).snapshot; + let result = advance(current, event("start_demo_authenticator")); + expect(result.effects).toEqual(["create_session"]); + current = result.snapshot; + result = advance(current, event("authoritative_session", { + authoritativeSessionState: "created", + })); + expect(result.effects).toEqual(["begin_demo_authenticator"]); + current = result.snapshot; + result = advance(current, event("demo_authenticator_ready")); + expect(result.effects).toEqual(["complete_demo_authenticator"]); + current = result.snapshot; + current = advance(current, event("authoritative_session", { + authoritativeSessionState: "passkey_complete", + })).snapshot; + result = advance(current, event("continue_to_camera")); + expect(result.effects).toEqual(["prepare_capture"]); + current = result.snapshot; + current = advance(current, event("authoritative_session", { + authoritativeSessionState: "capture_ready", + })).snapshot; + result = advance(current, event("start_camera")); + expect(result.effects).toEqual(["start_capture"]); + current = result.snapshot; + current = advance(current, event("capture_acquiring")).snapshot; + current = advance(current, event("capture_preparing")).snapshot; + current = advance(current, event("capture_preview")).snapshot; + result = advance(current, event("quality_ready")); + expect(result.effects).toEqual(["collect_frame_metadata"]); + current = result.snapshot; + result = advance(current, event("capture_artifact_ready")); + expect(result.effects).toEqual(["stop_capture", "clear_transient_media"]); + current = result.snapshot; + result = advance(current, event("cleanup_complete")); + expect(result.effects).toEqual(["submit_capture"]); + current = result.snapshot; + current = advance(current, event("authoritative_session", { + authoritativeSessionState: "simulated_credential_ready", + })).snapshot; + expect(current.state).toBe("simulated_credential_ready"); + result = advance(current, event("return_requested")); + expect(result.effects).toEqual([ + "abort_active_effects", + "stop_capture", + "clear_transient_media", + "return_to_rp", + ]); + current = result.snapshot; + current = advance(current, event("return_completed")).snapshot; + expect(current.state).toBe("returned"); + expect(transitionAuthenticatorUiV1(current, event("start_camera"))).toBeNull(); + }); + + test("orders cancellation cleanup before server cancel and rejects illegal transitions", () => { + const preview = makeAuthenticatorUiSnapshotV1({ + state: "capture_preview", + authoritativeSessionState: "capture_ready", + rpPresentationId: "zoom_demo", + visualSource: "figma_5132_134743", + }); + const cancelling = advance(preview, event("cancel_requested")); + expect(cancelling.effects).toEqual([ + "abort_active_effects", + "stop_capture", + "clear_transient_media", + "cancel_session", + ]); + expect(cancelling.snapshot.state).toBe("flow_cancelling"); + const cancelled = advance(cancelling.snapshot, event("authoritative_session", { + authoritativeSessionState: "cancelled", + })); + expect(cancelled.snapshot.state).toBe("flow_cancelled"); + expect(transitionAuthenticatorUiV1(preview, event("return_completed"))).toBeNull(); + const quality = dispatchAuthenticatorUiActionV1(preview, "collect_frame_metadata"); + expect(quality?.snapshot).toBe(preview); + expect(quality?.effects).toEqual(["evaluate_quality"]); + expect(dispatchAuthenticatorUiActionV1(preview, "return_to_rp")).toBeNull(); + }); + + test("keeps pre-session failures local and makes ambiguous post-session status recoverable", () => { + const creating = makeAuthenticatorUiSnapshotV1({ state: "session_creating" }); + const preSessionFailure = advance(creating, event("session_failed", { + detailCode: "network_unavailable", + })); + expect(preSessionFailure.snapshot.state).toBe("flow_failed"); + expect(preSessionFailure.snapshot.authoritativeSessionState).toBeNull(); + expect(preSessionFailure.effects).toEqual([ + "abort_active_effects", + "stop_capture", + "clear_transient_media", + ]); + + const captureComplete = makeAuthenticatorUiSnapshotV1({ + state: "capture_complete", + authoritativeSessionState: "capture_ready", + }); + const ambiguous = advance(captureComplete, event("session_failed", { + detailCode: "network_unavailable", + })); + expect(ambiguous.snapshot.state).toBe("session_error"); + expect(ambiguous.snapshot.authoritativeSessionState).toBe("capture_ready"); + expect(AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1.session_error).toEqual([ + "query_status", + "cancel", + ]); + const recovery = dispatchAuthenticatorUiActionV1(ambiguous.snapshot, "query_status"); + expect(recovery?.snapshot.state).toBe("session_reconciling"); + expect(recovery?.effects).toEqual(["query_status"]); + expect(() => makeAuthenticatorUiSnapshotV1({ + state: "session_error", + detailCode: "network_unavailable", + })).toThrow("invalid_authenticator_ui_snapshot_v1"); + }); + + test("keeps pre-session close separate from session-bound RP return", () => { + const invalidReturn = makeAuthenticatorUiSnapshotV1({ + state: "request_return_target_invalid", + visualSource: "verified_template", + }); + expect(AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[invalidReturn.state]).toEqual(["close"]); + expect(dispatchAuthenticatorUiActionV1(invalidReturn, "return_to_rp")).toBeNull(); + const closed = dispatchAuthenticatorUiActionV1(invalidReturn, "close"); + expect(closed?.snapshot.state).toBe("flow_closed"); + expect(closed?.effects).toEqual([ + "abort_active_effects", + "stop_capture", + "clear_transient_media", + "close_locally", + ]); + expect(closed?.effects).not.toContain("return_to_rp"); + + const callbackFailure = makeAuthenticatorUiSnapshotV1({ + state: "return_callback_failed", + detailCode: "navigation_failed", + }); + expect(callbackFailure.authoritativeSessionState).toBeNull(); + const callbackClosed = dispatchAuthenticatorUiActionV1(callbackFailure, "close"); + expect(callbackClosed?.snapshot.state).toBe("flow_closed"); + expect(callbackClosed?.effects).not.toContain("return_to_rp"); + }); + + test("freezes abort and cleanup behavior for every in-flight state", () => { + const inFlight: readonly [AuthenticatorUiStateIdV1, EnrollmentSessionStateV2 | null][] = [ + ["request_checking", null], + ["admission_checking", null], + ["admission_handoff_departing", null], + ["session_creating", null], + ["demo_authenticator_pending", "created"], + ["session_completing_authenticator", "created"], + ["session_reconciling", "created"], + ["capture_policy_loading", "passkey_complete"], + ["capture_permission_request", "capture_ready"], + ["capture_acquiring", "capture_ready"], + ["capture_preparing", "capture_ready"], + ["capture_sampling", "capture_ready"], + ["capture_artifact_ready", "capture_ready"], + ["capture_cleaning", "capture_ready"], + ["capture_complete", "capture_ready"], + ["biometric_simulation_pending", "biometric_simulation_pending"], + ["biometric_simulated_pass", "simulated_pass"], + ["issuance_simulation_pending", "issuance_simulation_pending"], + ["return_redirecting", null], + ]; + const lifecycleEvents = [ + "page_hidden", + "page_unloaded", + "orientation_invalidated", + "component_unmounted", + "operation_interrupted", + ] as const; + + for (const [state, authoritativeSessionState] of inFlight) { + const snapshot = makeAuthenticatorUiSnapshotV1({ + state, + authoritativeSessionState, + visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[state], + }); + for (const lifecycleEvent of lifecycleEvents) { + const aborted = transitionAuthenticatorUiV1(snapshot, event(lifecycleEvent)); + expect(aborted).not.toBeNull(); + expect(aborted?.snapshot.state).toBe("flow_cancelling"); + expect(aborted?.effects.slice(0, 3)).toEqual([ + "abort_active_effects", + "stop_capture", + "clear_transient_media", + ]); + expect(aborted?.effects.includes("cancel_session")).toBe( + authoritativeSessionState !== null, + ); + } + } + + for (const [state] of inFlight) { + expect(AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state]).toContain("cancel"); + } + }); + + test("strictly validates event payloads and state-specific error details", () => { + const accepted = event("request_accepted", { rpPresentationId: "zoom_demo" }); + expect(isAuthenticatorUiEventV1(accepted)).toBe(true); + expect(isAuthenticatorUiEventV1({ ...accepted, message: "free text" })).toBe(false); + expect(() => event("quality_adjust", { detailCode: "network_timeout" })).toThrow( + "invalid_authenticator_ui_event_v1", + ); + expect(() => event("authoritative_session")).toThrow( + "invalid_authenticator_ui_event_v1", + ); + + const captureError = makeAuthenticatorUiSnapshotV1({ + state: "capture_error", + detailCode: "permission_denied", + authoritativeSessionState: "capture_ready", + }); + expect(isAuthenticatorUiSnapshotV1({ ...captureError, detailCode: "navigation_failed" })).toBe(false); + expect(isAuthenticatorUiSnapshotV1({ + ...captureError, + progress: { stage: "biometric_simulation", status: "pending" }, + })).toBe(false); + expect(isAuthenticatorUiSnapshotV1({ ...captureError, message: "free text" })).toBe(false); + }); + + test("runtime-freezes every exported registry used for policy or presentation", () => { + for (const values of [ + AUTHENTICATOR_UI_ACTIONS_V1, + AUTHENTICATOR_UI_EFFECTS_V1, + AUTHENTICATOR_UI_EVENTS_V1, + AUTHENTICATOR_UI_DETAIL_CODES_V1, + AUTHENTICATOR_UI_VISUAL_SOURCES_V1, + SIMULATOR_SESSION_STATUS_CODES_V0, + SIMULATOR_BROWSER_SESSION_OPERATIONS_V0, + SIMULATOR_BROWSER_SESSION_ERROR_CODES_V0, + ]) { + expect(new Set(values).size).toBe(values.length); + } + for (const registry of [ + AUTHENTICATOR_UI_STATES_V1, + AUTHENTICATOR_UI_ACTIONS_V1, + AUTHENTICATOR_UI_EFFECTS_V1, + AUTHENTICATOR_UI_INITIAL_EFFECTS_V1, + AUTHENTICATOR_UI_EVENTS_V1, + AUTHENTICATOR_UI_DETAIL_CODES_V1, + AUTHENTICATOR_UI_VISUAL_SOURCES_V1, + AUTHENTICATOR_UI_TERMINAL_STATES_V1, + AUTHENTICATOR_UI_STATE_PROGRESS_V1, + AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, + AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, + ENROLLMENT_SESSION_TO_UI_STATE_V1, + ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1, + AUTHENTICATOR_UI_COPY_V1, + AUTHENTICATOR_UI_DETAIL_COPY_V1, + RP_PRESENTATION_IDS_V0, + SIMULATOR_SESSION_STATUS_CODES_V0, + SIMULATOR_BROWSER_SESSION_OPERATIONS_V0, + SIMULATOR_BROWSER_SESSION_ERROR_CODES_V0, + STAGING_DEMO_AUTHENTICATOR_ERROR_REASONS_V0, + SIMULATOR_UI_QUALITY_POLICY_V0, + SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, + ]) { + expect(Object.isFrozen(registry)).toBe(true); + } + for (const state of AUTHENTICATOR_UI_STATES_V1) { + expect(Object.isFrozen(AUTHENTICATOR_UI_STATE_PROGRESS_V1[state])).toBe(true); + expect(Object.isFrozen(AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state])).toBe(true); + expect(Object.isFrozen(AUTHENTICATOR_UI_COPY_V1[state])).toBe(true); + } + for (const state of ENROLLMENT_SESSION_STATES_V2) { + expect(Object.isFrozen(ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1[state])).toBe(true); + } + }); + + test("production rejects snapshots/events and revoked proxies with stable isolation errors", () => { + let progressReads = 0; + const hostile = { + kind: AUTHENTICATOR_UI_SNAPSHOT_V1, + version: AUTHENTICATOR_UI_FLOW_V1, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + } as Record; + Object.defineProperty(hostile, "progress", { + enumerable: true, + get() { + progressReads += 1; + throw new Error("progress read"); + }, + }); + expect(() => assertAuthenticatorUiSnapshotAllowed("production", hostile)).toThrow( + SimulationArtifactInProductionError, + ); + expect(progressReads).toBe(0); + expect(() => assertAuthenticatorUiEventAllowed("production", { + kind: AUTHENTICATOR_UI_EVENT_V1, + mode: SIMULATION_MODE, + })).toThrow(SimulationArtifactInProductionError); + + const target = {}; + const revoked = Proxy.revocable(target, {}); + revoked.revoke(); + expect(() => assertSimulationArtifactAllowed("production", revoked.proxy)).toThrow( + SimulationArtifactInProductionError, + ); + }); + + test("fails closed for hostile snapshot and event objects", () => { + const hostile = new Proxy({}, { ownKeys() { throw new Error("hostile keys"); } }); + expect(isAuthenticatorUiSnapshotV1(hostile)).toBe(false); + expect(isAuthenticatorUiEventV1(hostile)).toBe(false); + }); +}); diff --git a/packages/frame-capture/README.md b/packages/frame-capture/README.md new file mode 100644 index 0000000..43e05b6 --- /dev/null +++ b/packages/frame-capture/README.md @@ -0,0 +1,34 @@ +# Frame capture + +Metadata-only iPhone camera capture for the simulator-backed milestone. The runtime starts only +after a user action plus an approved iOS 18+ Safari/Chrome top-level context and successful PRF +setup. It requests video with a soft front-camera preference and never records audio. + +## Boundary + +- Camera pixels are transient RGBA8 application buffers. Each buffer is locally hashed, exposed + to an optional local capture-guidance callback, cleared, and released. +- The only returned wire artifact is Main-owned `FrameBundleV0`: one to four descriptors, exact + byte lengths, diagnostic offsets, per-frame SHA-256 digests, and the canonical artifact digest. +- Preview mirroring is CSS-only. Canvas sampling uses unmirrored source coordinates. +- No recording, video/JPEG encoding, media blob, upload, persistence, logging, analytics, object + URL, service worker, or snapshot artifact exists in this package. +- Synthetic fixtures are descriptor-only and require both `testMode: true` and a + `synthetic_fixture` policy. That path never opens a camera. + +## Lifecycle + +Every attempt owns its stream, tracks, canvas sampler, listeners, timers, and transient buffers. +Cancel, hidden/pagehide, unload, orientation or intrinsic-size change, track mute/end, expiry, +watchdog failure, acquisition error, local inspection error, and success all converge on cleanup. +Cleanup detaches preview, clears the canvas and buffers, stops every owned track, and requires a +fresh user-initiated attempt. A cancelled unresolved `getUserMedia()` request is tombstoned; if it +later resolves, every late track is immediately stopped and the stream is never attached. + +## Evidence status + +Unit tests cover lifecycle, exact digest vectors, bounds, interruption cleanup, late permission, +and network/storage/log sentinels. Safari and Chrome on iPhone remain separate unverified device +cells. Browser-process suspension can prevent page cleanup handlers, and application-level buffer +clearing is best effort rather than a claim of OS/browser/GPU zeroization or app-switcher snapshot +absence. diff --git a/packages/frame-capture/src/artifact.ts b/packages/frame-capture/src/artifact.ts new file mode 100644 index 0000000..3034984 --- /dev/null +++ b/packages/frame-capture/src/artifact.ts @@ -0,0 +1,111 @@ +import { + computeFrameBundleDigestV0, + FRAME_BUNDLE_V0, + FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + SIMULATION_MODE, + validateFrameBundleV0, + type FrameBundleV0, + type FrameDescriptorV0, + type HexSha256, + type SimulationCapturePolicyV0, +} from "../../contracts/src"; +import type { SyntheticFixtureRequest, TransientRgba8Frame } from "./types"; + +export async function sha256Rgba8(frame: TransientRgba8Frame): Promise { + const digest = await crypto.subtle.digest( + "SHA-256", + frame.bytes.buffer.slice( + frame.bytes.byteOffset, + frame.bytes.byteOffset + frame.bytes.byteLength, + ) as ArrayBuffer, + ); + return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join( + "", + ); +} + +export function assertFrameWithinPolicy( + frame: TransientRgba8Frame, + policy: SimulationCapturePolicyV0, +): void { + if ( + !Number.isSafeInteger(frame.width) || + !Number.isSafeInteger(frame.height) || + frame.width <= 0 || + frame.height <= 0 || + frame.width > policy.maxWidth || + frame.height > policy.maxHeight + ) { + throw new RangeError("Frame dimensions exceed the capture policy"); + } + const expectedByteLength = frame.width * frame.height * 4; + if ( + !Number.isSafeInteger(expectedByteLength) || + frame.bytes.byteLength !== expectedByteLength || + expectedByteLength > policy.maxFrameBytes + ) { + throw new RangeError("RGBA8 frame byte length exceeds the capture policy"); + } +} + +export async function buildFrameBundle( + fields: { + readonly sessionId: string; + readonly policy: SimulationCapturePolicyV0; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly nonceDigestSha256: HexSha256; + readonly frames: readonly FrameDescriptorV0[]; + readonly syntheticFixtureId?: string; + }, +): Promise { + const totalByteLength = fields.frames.reduce((sum, frame) => sum + frame.byteLength, 0); + const pending: FrameBundleV0 = { + kind: FRAME_BUNDLE_V0, + mode: SIMULATION_MODE, + sessionId: fields.sessionId, + policyId: fields.policy.policyId, + accountPublicMaterialDigestSha256: fields.accountPublicMaterialDigestSha256, + nonceDigestSha256: fields.nonceDigestSha256, + dataMode: fields.policy.dataMode, + frames: fields.frames, + ...(fields.syntheticFixtureId === undefined + ? {} + : { syntheticFixtureId: fields.syntheticFixtureId }), + totalByteLength, + digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + artifactDigestSha256: "0".repeat(64), + }; + const bundle = { + ...pending, + artifactDigestSha256: await computeFrameBundleDigestV0(pending), + }; + const errors = await validateFrameBundleV0(bundle, fields.policy); + if (errors.length > 0) throw new RangeError(`Invalid frame bundle: ${errors.join(",")}`); + return bundle; +} + +export async function createSyntheticFixtureBundle( + request: SyntheticFixtureRequest, +): Promise { + if (request.testMode !== true || request.policy.dataMode !== "synthetic_fixture") { + throw new TypeError("Synthetic fixtures require explicit test mode and synthetic policy"); + } + return buildFrameBundle({ + sessionId: request.sessionId, + policy: request.policy, + accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, + nonceDigestSha256: request.nonceDigestSha256, + syntheticFixtureId: request.fixtureId, + frames: request.frames.map((frame, transportIndex) => ({ + transportIndex, + width: frame.width, + height: frame.height, + encoding: "rgba8", + byteLength: frame.byteLength, + frameDigestSha256: frame.frameDigestSha256, + ...(frame.captureOffsetMs === undefined + ? {} + : { captureOffsetMs: frame.captureOffsetMs }), + })), + }); +} diff --git a/packages/frame-capture/src/browser-platform.ts b/packages/frame-capture/src/browser-platform.ts new file mode 100644 index 0000000..b975c49 --- /dev/null +++ b/packages/frame-capture/src/browser-platform.ts @@ -0,0 +1,199 @@ +import type { + CaptureInterruptionReason, + CapturePlatform, + FrameSampler, + OwnedMediaStream, + TransientRgba8Frame, +} from "./types"; +import type { SimulationCapturePolicyV0 } from "../../contracts/src"; + +function nextPresentedFrame(video: HTMLVideoElement): Promise { + return new Promise((resolve) => { + if (typeof video.requestVideoFrameCallback === "function") { + video.requestVideoFrameCallback(() => resolve()); + return; + } + requestAnimationFrame(() => resolve()); + }); +} + +function waitForMetadata(video: HTMLVideoElement): Promise { + if (video.readyState >= HTMLMediaElement.HAVE_METADATA && video.videoWidth > 0) { + return Promise.resolve(); + } + return new Promise((resolve, reject) => { + const loaded = () => { + cleanup(); + resolve(); + }; + const failed = () => { + cleanup(); + reject(new Error("preview metadata unavailable")); + }; + const cleanup = () => { + video.removeEventListener("loadedmetadata", loaded); + video.removeEventListener("error", failed); + }; + video.addEventListener("loadedmetadata", loaded, { once: true }); + video.addEventListener("error", failed, { once: true }); + }); +} + +export function boundedRgbaDimensions( + sourceWidth: number, + sourceHeight: number, + policy: SimulationCapturePolicyV0, +): { readonly width: number; readonly height: number } { + if (sourceWidth <= 0 || sourceHeight <= 0) throw new RangeError("Invalid source dimensions"); + const maxPixels = Math.floor(policy.maxFrameBytes / 4); + const scale = Math.min( + 1, + policy.maxWidth / sourceWidth, + policy.maxHeight / sourceHeight, + Math.sqrt(maxPixels / (sourceWidth * sourceHeight)), + ); + const width = Math.max(1, Math.floor(sourceWidth * scale)); + const height = Math.max(1, Math.floor(sourceHeight * scale)); + return { width, height }; +} + +class CanvasFrameSampler implements FrameSampler { + private readonly context: CanvasRenderingContext2D; + private preparedWidth = 0; + private preparedHeight = 0; + private originalTransform: string; + private interruptionListener?: (reason: CaptureInterruptionReason) => void; + private listeningForResize = false; + private disposed = false; + + constructor( + private readonly video: HTMLVideoElement, + private readonly canvas: HTMLCanvasElement, + stream: OwnedMediaStream, + ) { + const context = canvas.getContext("2d", { willReadFrequently: true }); + if (context === null) throw new Error("Canvas 2D unavailable"); + this.context = context; + this.originalTransform = video.style.transform; + video.style.transform = "scaleX(-1)"; + video.srcObject = stream as MediaStream; + } + + setInterruptionListener(listener: (reason: CaptureInterruptionReason) => void): void { + this.interruptionListener = listener; + } + + async prepare(policy: SimulationCapturePolicyV0): Promise { + await waitForMetadata(this.video); + if (this.disposed) throw new Error("Capture sampler disposed"); + await this.video.play(); + if (this.disposed) throw new Error("Capture sampler disposed"); + await nextPresentedFrame(this.video); + if (this.disposed) throw new Error("Capture sampler disposed"); + this.preparedWidth = this.video.videoWidth; + this.preparedHeight = this.video.videoHeight; + const firstFrame = await this.sample(policy); + firstFrame.bytes.fill(0); + this.clear(); + if (this.disposed) throw new Error("Capture sampler disposed"); + this.video.addEventListener("resize", this.handleResize); + this.listeningForResize = true; + } + + async sample(policy: SimulationCapturePolicyV0): Promise { + await nextPresentedFrame(this.video); + if (this.disposed) throw new Error("Capture sampler disposed"); + const { width, height } = boundedRgbaDimensions( + this.video.videoWidth, + this.video.videoHeight, + policy, + ); + this.canvas.width = width; + this.canvas.height = height; + // Analysis coordinates are source-oriented. Mirroring is CSS preview-only. + this.context.setTransform(1, 0, 0, 1, 0, 0); + this.context.drawImage(this.video, 0, 0, width, height); + const image = this.context.getImageData(0, 0, width, height); + this.context.clearRect(0, 0, width, height); + return { width, height, bytes: image.data }; + } + + clear(): void { + this.context.setTransform(1, 0, 0, 1, 0, 0); + this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); + } + + dispose(): void { + if (this.disposed) return; + this.disposed = true; + try { + this.clear(); + this.canvas.width = 1; + this.canvas.height = 1; + } catch { + // Continue detaching preview even if canvas release fails. + } + try { + this.video.pause(); + } catch { + // Continue detaching preview. + } + this.video.srcObject = null; + this.video.removeAttribute("src"); + try { + this.video.load(); + } catch { + // The media source is already detached. + } + this.video.style.transform = this.originalTransform; + if (this.listeningForResize) this.video.removeEventListener("resize", this.handleResize); + this.interruptionListener = undefined; + } + + private readonly handleResize = (): void => { + if ( + this.video.videoWidth !== this.preparedWidth || + this.video.videoHeight !== this.preparedHeight + ) { + this.interruptionListener?.("orientation_change"); + } + }; +} + +export function createBrowserCapturePlatform( + video: HTMLVideoElement, + canvas: HTMLCanvasElement, +): CapturePlatform { + return { + requestCamera: (constraints) => { + if (typeof navigator.mediaDevices?.getUserMedia !== "function") { + return Promise.reject({ name: "NotSupportedError" }); + } + return navigator.mediaDevices.getUserMedia(constraints); + }, + createSampler: (stream) => new CanvasFrameSampler(video, canvas, stream), + subscribeInterruptions: (listener) => { + const visibility = () => { + if (document.visibilityState !== "visible") listener("visibility_hidden"); + }; + const pagehide = () => listener("pagehide"); + const beforeunload = () => listener("beforeunload"); + const orientation = () => listener("orientation_change"); + document.addEventListener("visibilitychange", visibility); + window.addEventListener("pagehide", pagehide); + window.addEventListener("beforeunload", beforeunload); + window.addEventListener("orientationchange", orientation); + visibility(); + return () => { + document.removeEventListener("visibilitychange", visibility); + window.removeEventListener("pagehide", pagehide); + window.removeEventListener("beforeunload", beforeunload); + window.removeEventListener("orientationchange", orientation); + }; + }, + nowMonotonicMs: () => performance.now(), + nowEpochMs: () => Date.now(), + setTimer: (callback, delayMs) => globalThis.setTimeout(callback, delayMs), + clearTimer: (handle) => globalThis.clearTimeout(handle as ReturnType), + }; +} diff --git a/packages/frame-capture/src/index.ts b/packages/frame-capture/src/index.ts new file mode 100644 index 0000000..cf539bf --- /dev/null +++ b/packages/frame-capture/src/index.ts @@ -0,0 +1,5 @@ +export * from "./artifact"; +export * from "./browser-platform"; +export * from "./runtime"; +export * from "./state"; +export * from "./types"; diff --git a/packages/frame-capture/src/runtime.ts b/packages/frame-capture/src/runtime.ts new file mode 100644 index 0000000..1ceab55 --- /dev/null +++ b/packages/frame-capture/src/runtime.ts @@ -0,0 +1,476 @@ +import { + isHexSha256, + validateSimulationCapturePolicyV0, + type FrameDescriptorV0, +} from "../../contracts/src"; +import { assertFrameWithinPolicy, buildFrameBundle, sha256Rgba8 } from "./artifact"; +import { reduceCaptureState } from "./state"; +import type { + CaptureFailureCode, + CaptureInterruptionReason, + CapturePlatform, + CaptureRequest, + CaptureRuntimeOptions, + CaptureState, + FrameSampler, + OwnedMediaStream, + TransientRgba8Frame, +} from "./types"; + +const CAMERA_CONSTRAINTS: MediaStreamConstraints = { + audio: false, + video: { facingMode: { ideal: "user" } }, +}; + +const SAFE_MESSAGES: Readonly> = { + unsupported_context: "Camera capture is not supported in this context", + prf_not_ready: "Authentication setup must complete before camera capture", + user_activation_required: "Camera capture requires a user action", + permission_denied: "Camera permission was denied or revoked", + camera_unavailable: "No usable camera is available", + camera_busy: "The camera is busy or unavailable to this tab", + camera_restricted: "Camera access is restricted", + camera_unsupported: "Camera capture is unavailable in this browser", + non_user_facing_camera: "The selected camera is not user-facing", + constraints_unsatisfied: "The requested camera constraints are unavailable", + acquisition_aborted: "Camera acquisition was aborted", + permission_timeout: "Camera permission did not resolve in time", + preview_timeout: "The camera did not produce a frame in time", + preview_invalid_frame: "The camera produced an invalid frame", + interrupted: "Camera capture was interrupted", + session_expired: "The capture session expired", + capture_in_progress: "A camera capture is already in progress", + artifact_limit: "The captured frame exceeds the metadata policy", + quality_callback_failed: "The local capture guidance could not inspect the frame", + unknown: "Camera capture failed", +}; + +export class CaptureRuntimeError extends Error { + readonly code: CaptureFailureCode; + + constructor(code: CaptureFailureCode) { + super(SAFE_MESSAGES[code]); + this.name = "CaptureRuntimeError"; + this.code = code; + } +} + +interface ActiveAttempt { + readonly generation: number; + readonly interrupted: Promise; + rejectInterruption(error: CaptureRuntimeError): void; + stream?: OwnedMediaStream; + sampler?: FrameSampler; + readonly buffers: Set; + readonly cleanupCallbacks: Array<() => void>; + expiryTimer?: unknown; + terminalError?: CaptureRuntimeError; + cleaned: boolean; +} + +function terminalStateFor(code: CaptureFailureCode): CaptureState { + switch (code) { + case "permission_denied": + return "permission_denied"; + case "camera_unavailable": + case "camera_unsupported": + case "non_user_facing_camera": + case "constraints_unsatisfied": + return "camera_unavailable"; + case "camera_busy": + return "camera_busy"; + case "camera_restricted": + return "camera_restricted"; + case "session_expired": + return "expired"; + case "interrupted": + case "acquisition_aborted": + return "interrupted"; + default: + return "failed"; + } +} + +function classifyCameraError(value: unknown): CaptureRuntimeError { + let name = ""; + try { + if (typeof value === "object" && value !== null) { + name = String((value as { readonly name?: unknown }).name ?? ""); + } + } catch { + return new CaptureRuntimeError("unknown"); + } + switch (name) { + case "NotAllowedError": + return new CaptureRuntimeError("permission_denied"); + case "NotFoundError": + return new CaptureRuntimeError("camera_unavailable"); + case "NotReadableError": + return new CaptureRuntimeError("camera_busy"); + case "SecurityError": + return new CaptureRuntimeError("camera_restricted"); + case "OverconstrainedError": + return new CaptureRuntimeError("constraints_unsatisfied"); + case "AbortError": + return new CaptureRuntimeError("acquisition_aborted"); + case "NotSupportedError": + return new CaptureRuntimeError("camera_unsupported"); + default: + return new CaptureRuntimeError("unknown"); + } +} + +function stopStream(stream: OwnedMediaStream): void { + for (const track of stream.getTracks()) { + try { + track.stop(); + } catch { + // Resource cleanup is best effort and errors never include media data. + } + } +} + +function assertUserFacingWhenKnown(stream: OwnedMediaStream): void { + for (const track of stream.getTracks()) { + let facingMode: string | undefined; + try { + facingMode = track.getSettings?.().facingMode; + } catch { + // Missing or unreadable settings are unknown observations, not trust signals. + } + if (facingMode === "environment" || facingMode === "left" || facingMode === "right") { + throw new CaptureRuntimeError("non_user_facing_camera"); + } + } +} + +export class MetadataOnlyCaptureRuntime { + private stateValue: CaptureState = "idle"; + private generation = 0; + private active?: ActiveAttempt; + private readonly permissionTimeoutMs: number; + private readonly firstFrameTimeoutMs: number; + + constructor( + private readonly platform: CapturePlatform, + private readonly options: CaptureRuntimeOptions = {}, + ) { + this.permissionTimeoutMs = options.permissionTimeoutMs ?? 20_000; + this.firstFrameTimeoutMs = options.firstFrameTimeoutMs ?? 8_000; + } + + get state(): CaptureState { + return this.stateValue; + } + + async capture(request: CaptureRequest) { + if (this.active !== undefined) throw new CaptureRuntimeError("capture_in_progress"); + const admissionError = this.validateRequest(request); + if (admissionError !== undefined) { + this.transition(terminalStateFor(admissionError.code)); + this.transition("cleaning_up"); + this.transition("complete"); + throw admissionError; + } + + let rejectInterruption!: (error: CaptureRuntimeError) => void; + const interrupted = new Promise((_resolve, reject) => { + rejectInterruption = reject; + }); + // A handler is attached immediately so a synchronous cancel cannot create an unhandled rejection. + void interrupted.catch(() => undefined); + const attempt: ActiveAttempt = { + generation: ++this.generation, + interrupted, + rejectInterruption, + buffers: new Set(), + cleanupCallbacks: [], + cleaned: false, + }; + this.active = attempt; + + try { + this.transition("permission_request"); + const unsubscribe = this.platform.subscribeInterruptions((reason) => + this.interruptAttempt(attempt, reason), + ); + if (attempt.cleaned) unsubscribe(); + else attempt.cleanupCallbacks.push(unsubscribe); + if (attempt.terminalError !== undefined) throw attempt.terminalError; + const expiresInMs = Date.parse(request.policy.expiresAt) - this.platform.nowEpochMs(); + attempt.expiryTimer = this.platform.setTimer( + () => this.interruptAttempt(attempt, "session_expired"), + Math.max(0, expiresInMs), + ); + + const pendingStream = this.platform.requestCamera(CAMERA_CONSTRAINTS); + // getUserMedia has no abort signal. A stale late stream is disposed before use. + const guardedStream = pendingStream.then( + (stream) => { + if (this.active !== attempt || attempt.terminalError !== undefined || attempt.cleaned) { + stopStream(stream); + throw attempt.terminalError ?? new CaptureRuntimeError("interrupted"); + } + return stream; + }, + (error: unknown) => { + throw classifyCameraError(error); + }, + ); + attempt.stream = await this.raceAttempt( + attempt, + this.withTimeout(guardedStream, this.permissionTimeoutMs, "permission_timeout"), + ); + this.bindTrackInterruptions(attempt); + this.transition("acquiring"); + assertUserFacingWhenKnown(attempt.stream); + + attempt.sampler = this.platform.createSampler(attempt.stream); + attempt.sampler.setInterruptionListener?.((reason) => + this.interruptAttempt(attempt, reason), + ); + this.transition("awaiting_first_frame"); + await this.raceAttempt( + attempt, + this.withTimeout( + attempt.sampler.prepare(request.policy), + this.firstFrameTimeoutMs, + "preview_timeout", + "preview_invalid_frame", + ), + ); + this.transition("preview"); + this.transition("sampling"); + + const captureStartedAt = this.platform.nowMonotonicMs(); + const targetCount = request.frameCount ?? request.policy.minFrames; + const descriptors: FrameDescriptorV0[] = []; + let totalByteLength = 0; + for (let transportIndex = 0; transportIndex < targetCount; transportIndex += 1) { + const pendingFrame = attempt.sampler.sample(request.policy).then((frame) => { + if (this.active !== attempt || attempt.terminalError !== undefined || attempt.cleaned) { + frame.bytes.fill(0); + attempt.sampler?.clear(); + throw attempt.terminalError ?? new CaptureRuntimeError("interrupted"); + } + return frame; + }); + const frame = await this.raceAttempt(attempt, pendingFrame); + attempt.buffers.add(frame.bytes); + try { + assertFrameWithinPolicy(frame, request.policy); + totalByteLength += frame.bytes.byteLength; + if (totalByteLength > request.policy.maxTotalBytes) { + throw new CaptureRuntimeError("artifact_limit"); + } + const frameDigestSha256 = await this.raceAttempt(attempt, sha256Rgba8(frame)); + if (request.inspectTransientFrame !== undefined) { + try { + await this.raceAttempt(attempt, Promise.resolve(request.inspectTransientFrame(frame))); + } catch { + if (attempt.terminalError !== undefined) throw attempt.terminalError; + throw new CaptureRuntimeError("quality_callback_failed"); + } + } + const offset = Math.trunc(this.platform.nowMonotonicMs() - captureStartedAt); + if (!Number.isSafeInteger(offset)) throw new CaptureRuntimeError("artifact_limit"); + descriptors.push({ + transportIndex, + width: frame.width, + height: frame.height, + encoding: "rgba8", + byteLength: frame.bytes.byteLength, + frameDigestSha256, + captureOffsetMs: Math.max(0, offset), + }); + } catch (error) { + if (error instanceof CaptureRuntimeError) throw error; + if (error instanceof RangeError) throw new CaptureRuntimeError("artifact_limit"); + throw new CaptureRuntimeError("preview_invalid_frame"); + } finally { + frame.bytes.fill(0); + attempt.buffers.delete(frame.bytes); + attempt.sampler.clear(); + } + } + + const bundle = await this.raceAttempt( + attempt, + buildFrameBundle({ + sessionId: request.sessionId, + policy: request.policy, + accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, + nonceDigestSha256: request.nonceDigestSha256, + frames: descriptors, + }), + ); + this.transition("artifact_ready"); + this.finishAttempt(attempt); + return bundle; + } catch (error) { + const safeError = + attempt.terminalError ?? + (error instanceof CaptureRuntimeError ? error : classifyCameraError(error)); + if (!attempt.cleaned) { + this.transition(terminalStateFor(safeError.code)); + this.finishAttempt(attempt); + } + throw safeError; + } + } + + cancel(): void { + if (this.active !== undefined) this.interruptAttempt(this.active, "cancel"); + } + + unmount(): void { + if (this.active !== undefined) this.interruptAttempt(this.active, "unmount"); + } + + private validateRequest(request: CaptureRequest): CaptureRuntimeError | undefined { + if (!request.entry.userActivated) return new CaptureRuntimeError("user_activation_required"); + if ( + !request.entry.secureTopLevelContextApproved || + !Number.isSafeInteger(request.entry.iosMajor) || + request.entry.iosMajor < 18 || + (request.entry.browser !== "safari" && request.entry.browser !== "chrome") + ) { + return new CaptureRuntimeError("unsupported_context"); + } + if (!request.entry.prfReady) return new CaptureRuntimeError("prf_not_ready"); + if ( + request.policy.dataMode !== "metadata_only" || + validateSimulationCapturePolicyV0(request.policy).length > 0 + ) { + return new CaptureRuntimeError("artifact_limit"); + } + const expiresAt = Date.parse(request.policy.expiresAt); + if (!Number.isFinite(expiresAt) || expiresAt <= this.platform.nowEpochMs()) { + return new CaptureRuntimeError("session_expired"); + } + const integerLimits = [ + request.policy.minFrames, + request.policy.maxFrames, + request.policy.maxWidth, + request.policy.maxHeight, + request.policy.maxFrameBytes, + request.policy.maxTotalBytes, + ]; + if ( + integerLimits.some((value) => !Number.isSafeInteger(value)) || + request.policy.maxFrameBytes < 4 || + request.policy.maxTotalBytes < request.policy.minFrames * 4 + ) { + return new CaptureRuntimeError("artifact_limit"); + } + if ( + !request.sessionId || + !isHexSha256(request.accountPublicMaterialDigestSha256) || + !isHexSha256(request.nonceDigestSha256) + ) { + return new CaptureRuntimeError("artifact_limit"); + } + const frameCount = request.frameCount ?? request.policy.minFrames; + if ( + !Number.isSafeInteger(frameCount) || + frameCount < request.policy.minFrames || + frameCount > request.policy.maxFrames + ) { + return new CaptureRuntimeError("artifact_limit"); + } + return undefined; + } + + private raceAttempt(attempt: ActiveAttempt, operation: Promise): Promise { + return Promise.race([operation, attempt.interrupted]); + } + + private withTimeout( + operation: Promise, + delayMs: number, + timeoutCode: CaptureFailureCode, + rejectionCode?: CaptureFailureCode, + ): Promise { + return new Promise((resolve, reject) => { + const timer = this.platform.setTimer( + () => reject(new CaptureRuntimeError(timeoutCode)), + delayMs, + ); + operation.then( + (value) => { + this.platform.clearTimer(timer); + resolve(value); + }, + (error: unknown) => { + this.platform.clearTimer(timer); + if (rejectionCode !== undefined) reject(new CaptureRuntimeError(rejectionCode)); + else if (error instanceof CaptureRuntimeError) reject(error); + else reject(new CaptureRuntimeError("unknown")); + }, + ); + }); + } + + private bindTrackInterruptions(attempt: ActiveAttempt): void { + if (attempt.stream === undefined) return; + for (const track of attempt.stream.getTracks()) { + const muted = () => this.interruptAttempt(attempt, "track_muted"); + const ended = () => this.interruptAttempt(attempt, "track_ended"); + track.addEventListener?.("mute", muted); + track.addEventListener?.("ended", ended); + attempt.cleanupCallbacks.push(() => { + track.removeEventListener?.("mute", muted); + track.removeEventListener?.("ended", ended); + }); + } + } + + private interruptAttempt(attempt: ActiveAttempt, reason: CaptureInterruptionReason): void { + if (this.active !== attempt || attempt.cleaned) return; + const error = new CaptureRuntimeError( + reason === "session_expired" ? "session_expired" : "interrupted", + ); + attempt.terminalError = error; + this.transition(reason === "session_expired" ? "expired" : "interrupted"); + this.finishAttempt(attempt); + attempt.rejectInterruption(error); + } + + private finishAttempt(attempt: ActiveAttempt): void { + if (attempt.cleaned) return; + attempt.cleaned = true; + this.transition("cleaning_up"); + if (attempt.expiryTimer !== undefined) this.platform.clearTimer(attempt.expiryTimer); + for (const callback of attempt.cleanupCallbacks.splice(0)) { + try { + callback(); + } catch { + // Cleanup remains best effort and emits no underlying object. + } + } + for (const buffer of attempt.buffers) buffer.fill(0); + attempt.buffers.clear(); + try { + attempt.sampler?.clear(); + } catch { + // Canvas clearing remains best effort. + } + try { + attempt.sampler?.dispose(); + } catch { + // Preview detachment remains best effort. + } + if (attempt.stream !== undefined) stopStream(attempt.stream); + if (this.active === attempt) this.active = undefined; + this.transition("complete"); + } + + private transition(next: CaptureState): void { + this.stateValue = reduceCaptureState(this.stateValue, next); + try { + this.options.onStateChange?.(next); + } catch { + // Observers are metadata-only and cannot prevent resource cleanup. + } + } +} diff --git a/packages/frame-capture/src/state.ts b/packages/frame-capture/src/state.ts new file mode 100644 index 0000000..3f3a88d --- /dev/null +++ b/packages/frame-capture/src/state.ts @@ -0,0 +1,46 @@ +import type { CaptureState } from "./types"; + +const TRANSITIONS: Readonly> = { + idle: ["permission_request", "sampling", "failed", "expired"], + permission_request: [ + "permission_denied", + "camera_unavailable", + "camera_busy", + "camera_restricted", + "acquiring", + "interrupted", + "expired", + "failed", + ], + permission_denied: ["cleaning_up"], + camera_unavailable: ["cleaning_up"], + camera_busy: ["cleaning_up"], + camera_restricted: ["cleaning_up"], + acquiring: [ + "camera_unavailable", + "awaiting_first_frame", + "interrupted", + "expired", + "failed", + ], + awaiting_first_frame: ["preview", "interrupted", "expired", "failed"], + preview: ["sampling", "interrupted", "expired", "failed"], + sampling: ["artifact_ready", "interrupted", "expired", "failed"], + artifact_ready: ["cleaning_up"], + interrupted: ["cleaning_up"], + expired: ["cleaning_up"], + failed: ["cleaning_up"], + cleaning_up: ["complete"], + complete: ["permission_request", "sampling", "failed", "expired"], +}; + +export function isCaptureTransitionAllowed(from: CaptureState, to: CaptureState): boolean { + return TRANSITIONS[from].includes(to); +} + +export function reduceCaptureState(from: CaptureState, to: CaptureState): CaptureState { + if (!isCaptureTransitionAllowed(from, to)) { + throw new Error(`Invalid capture state transition: ${from} -> ${to}`); + } + return to; +} diff --git a/packages/frame-capture/src/types.ts b/packages/frame-capture/src/types.ts new file mode 100644 index 0000000..bc64b90 --- /dev/null +++ b/packages/frame-capture/src/types.ts @@ -0,0 +1,142 @@ +import type { + FrameBundleV0, + HexSha256, + SimulationCapturePolicyV0, +} from "../../contracts/src"; + +export const CAPTURE_STATES = [ + "idle", + "permission_request", + "permission_denied", + "camera_unavailable", + "camera_busy", + "camera_restricted", + "acquiring", + "awaiting_first_frame", + "preview", + "sampling", + "artifact_ready", + "interrupted", + "expired", + "failed", + "cleaning_up", + "complete", +] as const; + +export type CaptureState = (typeof CAPTURE_STATES)[number]; + +export type CaptureFailureCode = + | "unsupported_context" + | "prf_not_ready" + | "user_activation_required" + | "permission_denied" + | "camera_unavailable" + | "camera_busy" + | "camera_restricted" + | "camera_unsupported" + | "non_user_facing_camera" + | "constraints_unsatisfied" + | "acquisition_aborted" + | "permission_timeout" + | "preview_timeout" + | "preview_invalid_frame" + | "interrupted" + | "session_expired" + | "capture_in_progress" + | "artifact_limit" + | "quality_callback_failed" + | "unknown"; + +export type CaptureInterruptionReason = + | "cancel" + | "visibility_hidden" + | "pagehide" + | "beforeunload" + | "orientation_change" + | "track_muted" + | "track_ended" + | "session_expired" + | "unmount"; + +/** W02/W03-owned results must be supplied, not recomputed from the user agent here. */ +export interface ApprovedCaptureEntry { + readonly userActivated: boolean; + readonly secureTopLevelContextApproved: boolean; + readonly prfReady: boolean; + readonly iosMajor: number; + readonly browser: "safari" | "chrome"; +} + +export interface CaptureRequest { + readonly entry: ApprovedCaptureEntry; + readonly policy: SimulationCapturePolicyV0; + readonly sessionId: string; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly nonceDigestSha256: HexSha256; + readonly frameCount?: number; + /** Runs synchronously in the capture lifecycle. The bytes are cleared after it returns. */ + readonly inspectTransientFrame?: TransientFrameInspector; +} + +export interface TransientRgba8Frame { + readonly width: number; + readonly height: number; + readonly bytes: Uint8ClampedArray; +} + +export type TransientFrameInspector = ( + frame: Readonly, +) => void | Promise; + +export interface OwnedMediaTrack { + stop(): void; + getSettings?(): { readonly facingMode?: string }; + addEventListener?(type: "mute" | "ended", listener: () => void): void; + removeEventListener?(type: "mute" | "ended", listener: () => void): void; +} + +export interface OwnedMediaStream { + getTracks(): readonly OwnedMediaTrack[]; +} + +export interface FrameSampler { + prepare(policy: SimulationCapturePolicyV0): Promise; + sample(policy: SimulationCapturePolicyV0): Promise; + setInterruptionListener?(listener: (reason: CaptureInterruptionReason) => void): void; + clear(): void; + dispose(): void; +} + +export interface CapturePlatform { + requestCamera(constraints: MediaStreamConstraints): Promise; + createSampler(stream: OwnedMediaStream): FrameSampler; + subscribeInterruptions(listener: (reason: CaptureInterruptionReason) => void): () => void; + nowMonotonicMs(): number; + nowEpochMs(): number; + setTimer(callback: () => void, delayMs: number): unknown; + clearTimer(handle: unknown): void; +} + +export interface CaptureRuntimeOptions { + readonly permissionTimeoutMs?: number; + readonly firstFrameTimeoutMs?: number; + readonly onStateChange?: (state: CaptureState) => void; +} + +export interface SyntheticFixtureRequest { + readonly testMode: true; + readonly fixtureId: string; + readonly policy: SimulationCapturePolicyV0; + readonly sessionId: string; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly nonceDigestSha256: HexSha256; + readonly frames: readonly { + readonly width: number; + readonly height: number; + readonly byteLength: number; + readonly frameDigestSha256: HexSha256; + readonly captureOffsetMs?: number; + }[]; +} + +export type CaptureArtifact = FrameBundleV0; diff --git a/packages/frame-capture/test/artifact.test.ts b/packages/frame-capture/test/artifact.test.ts new file mode 100644 index 0000000..95d569f --- /dev/null +++ b/packages/frame-capture/test/artifact.test.ts @@ -0,0 +1,75 @@ +import { describe, expect, test } from "bun:test"; +import { + SIMULATION_CAPTURE_POLICY_V0, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + validateFrameBundleV0, +} from "../../contracts/src"; +import { + buildFrameBundle, + createSyntheticFixtureBundle, + sha256Rgba8, +} from "../src"; +import { metadataPolicy, ONE_HASH, testFrame, ZERO_HASH } from "./helpers"; + +describe("deterministic metadata artifact", () => { + test("hashes exact RGBA8 bytes with a fixed vector", async () => { + expect(await sha256Rgba8(testFrame())).toBe( + "054edec1d0211f624fed0cbca9d4f9400b0e491c43742af2c5b0abebf0c990d8", + ); + }); + + test("builds a validator-clean canonical bundle with a fixed digest", async () => { + const bundle = await buildFrameBundle({ + sessionId: "session-test", + policy: metadataPolicy, + accountPublicMaterialDigestSha256: ZERO_HASH, + nonceDigestSha256: ONE_HASH, + frames: [ + { + transportIndex: 0, + width: 1, + height: 1, + encoding: "rgba8", + byteLength: 4, + frameDigestSha256: + "054edec1d0211f624fed0cbca9d4f9400b0e491c43742af2c5b0abebf0c990d8", + captureOffsetMs: 0, + }, + ], + }); + expect(await validateFrameBundleV0(bundle, metadataPolicy)).toEqual([]); + expect(bundle.artifactDigestSha256).toBe( + "d696da0c10a6849c031511df738927d6a77fe3dd85103448407c953d0b02516f", + ); + }); + + test("synthetic fixture mode is explicit and consumes descriptors only", async () => { + const policy = { + ...metadataPolicy, + version: SIMULATION_CAPTURE_POLICY_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + dataMode: "synthetic_fixture" as const, + }; + const bundle = await createSyntheticFixtureBundle({ + testMode: true, + fixtureId: "fixture-checkerboard-v1", + policy, + sessionId: "session-synthetic", + accountPublicMaterialDigestSha256: ZERO_HASH, + nonceDigestSha256: ONE_HASH, + frames: [ + { + width: 1, + height: 1, + byteLength: 4, + frameDigestSha256: ZERO_HASH, + }, + ], + }); + expect(bundle.dataMode).toBe("synthetic_fixture"); + expect(bundle.syntheticFixtureId).toBe("fixture-checkerboard-v1"); + expect(Object.keys(bundle.frames[0] ?? {})).not.toContain("bytes"); + }); +}); diff --git a/packages/frame-capture/test/browser-platform.test.ts b/packages/frame-capture/test/browser-platform.test.ts new file mode 100644 index 0000000..2f251fa --- /dev/null +++ b/packages/frame-capture/test/browser-platform.test.ts @@ -0,0 +1,23 @@ +import { describe, expect, test } from "bun:test"; +import { boundedRgbaDimensions } from "../src"; +import { metadataPolicy } from "./helpers"; + +describe("browser frame geometry", () => { + test("deterministically preserves aspect ratio within dimensions and RGBA8 bytes", () => { + const dimensions = boundedRgbaDimensions(1920, 1080, { + ...metadataPolicy, + maxWidth: 640, + maxHeight: 640, + maxFrameBytes: 640 * 360 * 4, + }); + expect(dimensions).toEqual({ width: 640, height: 360 }); + expect(dimensions.width * dimensions.height * 4).toBeLessThanOrEqual(640 * 360 * 4); + }); + + test("uses sampled source geometry and rejects missing intrinsic dimensions", () => { + expect(() => boundedRgbaDimensions(0, 1080, metadataPolicy)).toThrow(RangeError); + expect( + boundedRgbaDimensions(4, 4, { ...metadataPolicy, maxFrameBytes: 16 }), + ).toEqual({ width: 2, height: 2 }); + }); +}); diff --git a/packages/frame-capture/test/helpers.ts b/packages/frame-capture/test/helpers.ts new file mode 100644 index 0000000..aedfd1b --- /dev/null +++ b/packages/frame-capture/test/helpers.ts @@ -0,0 +1,224 @@ +import { + SIMULATION_CAPTURE_POLICY_V0, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + type SimulationCapturePolicyV0, +} from "../../contracts/src"; +import type { + CaptureInterruptionReason, + CapturePlatform, + CaptureRequest, + FrameSampler, + OwnedMediaStream, + OwnedMediaTrack, + TransientRgba8Frame, +} from "../src"; + +export const ZERO_HASH = "0".repeat(64); +export const ONE_HASH = "1".repeat(64); + +export const metadataPolicy: SimulationCapturePolicyV0 = { + version: SIMULATION_CAPTURE_POLICY_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + policyId: "capture-policy-test", + dataMode: "metadata_only", + encoding: "rgba8", + minFrames: 1, + maxFrames: 4, + maxWidth: 4, + maxHeight: 4, + maxFrameBytes: 64, + maxTotalBytes: 256, + captureOffsetsAreDiagnosticOnly: true, + arrayOrderHasBiometricMeaning: false, + qualityPolicyId: "quality-policy-test", + expiresAt: "2030-01-01T00:00:00.000Z", +}; + +export class FakeTrack implements OwnedMediaTrack { + stopCount = 0; + facingMode?: string; + settingsError?: unknown; + private readonly listeners = new Map void>>(); + + stop(): void { + this.stopCount += 1; + } + + getSettings(): { readonly facingMode?: string } { + if (this.settingsError !== undefined) throw this.settingsError; + return this.facingMode === undefined ? {} : { facingMode: this.facingMode }; + } + + addEventListener(type: "mute" | "ended", listener: () => void): void { + const current = this.listeners.get(type) ?? new Set(); + current.add(listener); + this.listeners.set(type, current); + } + + removeEventListener(type: "mute" | "ended", listener: () => void): void { + this.listeners.get(type)?.delete(listener); + } + + emit(type: "mute" | "ended"): void { + for (const listener of this.listeners.get(type) ?? []) listener(); + } +} + +export class FakeStream implements OwnedMediaStream { + readonly tracks = [new FakeTrack(), new FakeTrack()]; + + getTracks(): readonly FakeTrack[] { + return this.tracks; + } +} + +export class FakeSampler implements FrameSampler { + prepareResult: Promise = Promise.resolve(); + frames: TransientRgba8Frame[] = []; + sampleOverride?: () => Promise; + sampleCount = 0; + clearCount = 0; + disposeCount = 0; + interruptionListener?: (reason: CaptureInterruptionReason) => void; + + prepare(): Promise { + return this.prepareResult; + } + + sample(): Promise { + this.sampleCount += 1; + if (this.sampleOverride !== undefined) return this.sampleOverride(); + const frame = this.frames.shift(); + if (frame === undefined) return Promise.reject(new Error("no synthetic test frame")); + return Promise.resolve(frame); + } + + setInterruptionListener(listener: (reason: CaptureInterruptionReason) => void): void { + this.interruptionListener = listener; + } + + clear(): void { + this.clearCount += 1; + } + + dispose(): void { + this.disposeCount += 1; + } +} + +export interface Deferred { + readonly promise: Promise; + resolve(value: T): void; + reject(error: unknown): void; +} + +export function deferred(): Deferred { + let resolve!: (value: T) => void; + let reject!: (error: unknown) => void; + const promise = new Promise((yes, no) => { + resolve = yes; + reject = no; + }); + return { promise, resolve, reject }; +} + +export class FakePlatform implements CapturePlatform { + readonly stream = new FakeStream(); + readonly sampler = new FakeSampler(); + requestResult: Promise = Promise.resolve(this.stream); + requestCount = 0; + constraints?: MediaStreamConstraints; + interruptionListener?: (reason: CaptureInterruptionReason) => void; + monotonic = 100; + epoch = Date.parse("2026-09-02T12:00:00.000Z"); + private nextTimer = 0; + readonly timers = new Map void; readonly delay: number }>(); + + requestCamera(constraints: MediaStreamConstraints): Promise { + this.requestCount += 1; + this.constraints = constraints; + return this.requestResult; + } + + createSampler(): FrameSampler { + return this.sampler; + } + + subscribeInterruptions(listener: (reason: CaptureInterruptionReason) => void): () => void { + this.interruptionListener = listener; + return () => { + if (this.interruptionListener === listener) this.interruptionListener = undefined; + }; + } + + nowMonotonicMs(): number { + return this.monotonic++; + } + + nowEpochMs(): number { + return this.epoch; + } + + setTimer(callback: () => void, delay: number): number { + const handle = ++this.nextTimer; + this.timers.set(handle, { callback, delay }); + return handle; + } + + clearTimer(handle: unknown): void { + this.timers.delete(handle as number); + } + + emit(reason: CaptureInterruptionReason): void { + this.interruptionListener?.(reason); + } + + fireShortestTimer(): void { + const entry = [...this.timers.entries()].sort((left, right) => left[1].delay - right[1].delay)[0]; + if (entry !== undefined) { + this.timers.delete(entry[0]); + entry[1].callback(); + } + } + + fireLongestTimer(): void { + const entry = [...this.timers.entries()].sort((left, right) => right[1].delay - left[1].delay)[0]; + if (entry !== undefined) { + this.timers.delete(entry[0]); + entry[1].callback(); + } + } +} + +export function makeRequest(overrides: Partial = {}): CaptureRequest { + return { + entry: { + userActivated: true, + secureTopLevelContextApproved: true, + prfReady: true, + iosMajor: 18, + browser: "safari" as const, + }, + policy: metadataPolicy, + sessionId: "session-test", + accountPublicMaterialDigestSha256: ZERO_HASH, + nonceDigestSha256: ONE_HASH, + ...overrides, + }; +} + +export function testFrame(bytes = [0, 1, 2, 3]): TransientRgba8Frame { + return { width: 1, height: 1, bytes: new Uint8ClampedArray(bytes) }; +} + +export async function nextTask(): Promise { + await Promise.resolve(); + await Promise.resolve(); +} + +export async function waitUntil(predicate: () => boolean): Promise { + for (let index = 0; index < 20 && !predicate(); index += 1) await nextTask(); + if (!predicate()) throw new Error("Synthetic lifecycle did not reach the expected state"); +} diff --git a/packages/frame-capture/test/privacy.test.ts b/packages/frame-capture/test/privacy.test.ts new file mode 100644 index 0000000..b916ad5 --- /dev/null +++ b/packages/frame-capture/test/privacy.test.ts @@ -0,0 +1,112 @@ +import { afterEach, describe, expect, test } from "bun:test"; +import { readdir, readFile } from "node:fs/promises"; +import { join } from "node:path"; +import { MetadataOnlyCaptureRuntime } from "../src"; +import { FakePlatform, makeRequest, testFrame } from "./helpers"; + +const replacedDescriptors = new Map(); + +function installSentinel(name: string, value: unknown): void { + replacedDescriptors.set(name, Object.getOwnPropertyDescriptor(globalThis, name)); + Object.defineProperty(globalThis, name, { configurable: true, writable: true, value }); +} + +afterEach(() => { + for (const [name, descriptor] of replacedDescriptors) { + if (descriptor === undefined) Reflect.deleteProperty(globalThis, name); + else Object.defineProperty(globalThis, name, descriptor); + } + replacedDescriptors.clear(); +}); + +describe("camera-byte privacy boundary", () => { + test("touches no network or persistent-storage API during capture", async () => { + const touched: string[] = []; + installSentinel("fetch", () => touched.push("fetch")); + installSentinel("XMLHttpRequest", class { + constructor() { + touched.push("XMLHttpRequest"); + } + }); + installSentinel("WebSocket", class { + constructor() { + touched.push("WebSocket"); + } + }); + installSentinel("navigator", { + ...navigator, + sendBeacon: () => { + touched.push("sendBeacon"); + return true; + }, + }); + installSentinel("caches", { + open: () => { + touched.push("caches.open"); + return Promise.resolve(undefined); + }, + }); + for (const name of ["localStorage", "sessionStorage", "indexedDB"]) { + replacedDescriptors.set(name, Object.getOwnPropertyDescriptor(globalThis, name)); + Object.defineProperty(globalThis, name, { + configurable: true, + get: () => { + touched.push(name); + return undefined; + }, + }); + } + + const platform = new FakePlatform(); + const frame = testFrame([211, 173, 199, 241]); + platform.sampler.frames.push(frame); + const artifact = await new MetadataOnlyCaptureRuntime(platform).capture(makeRequest()); + + expect(touched).toEqual([]); + expect(frame.bytes).toEqual(new Uint8ClampedArray(4)); + expect(JSON.stringify(artifact)).not.toContain("211,173,199,241"); + expect(Object.values(artifact.frames[0] ?? {}).some(ArrayBuffer.isView)).toBe(false); + }); + + test("runtime source contains no media recorder, upload, storage, URL, or logging path", async () => { + const sourceDirectory = join(import.meta.dir, "../src"); + const files = (await readdir(sourceDirectory)).filter((name) => name.endsWith(".ts")); + const source = ( + await Promise.all(files.map((name) => readFile(join(sourceDirectory, name), "utf8"))) + ).join("\n"); + const forbidden = [ + "MediaRecorder", + "Blob", + "FileReader", + "XMLHttpRequest", + "WebSocket", + "sendBeacon", + "localStorage", + "sessionStorage", + "indexedDB", + "caches.open", + "toDataURL", + "toBlob", + "createObjectURL", + "console.", + ]; + for (const token of forbidden) expect(source).not.toContain(token); + expect(source).not.toMatch(/\bfetch\s*\(/); + }); + + test("safe errors do not copy arbitrary camera error fields", async () => { + const platform = new FakePlatform(); + platform.requestResult = Promise.reject({ + name: "NotReadableError", + pixels: [211, 173, 199, 241], + dataUrl: "data:image/private", + }); + try { + await new MetadataOnlyCaptureRuntime(platform).capture(makeRequest()); + throw new Error("expected rejection"); + } catch (error) { + expect(JSON.stringify(error)).not.toContain("211"); + expect(String(error)).not.toContain("data:image"); + } + }); +}); diff --git a/packages/frame-capture/test/runtime.test.ts b/packages/frame-capture/test/runtime.test.ts new file mode 100644 index 0000000..224233f --- /dev/null +++ b/packages/frame-capture/test/runtime.test.ts @@ -0,0 +1,338 @@ +import { describe, expect, test } from "bun:test"; +import { + CaptureRuntimeError, + MetadataOnlyCaptureRuntime, + type CaptureFailureCode, +} from "../src"; +import { + deferred, + FakePlatform, + FakeStream, + makeRequest, + metadataPolicy, + nextTask, + testFrame, + waitUntil, +} from "./helpers"; + +describe("metadata-only capture runtime", () => { + test("requires iOS 18+, approved top-level context, user action, and PRF before camera", async () => { + const rejectedEntries = [ + { userActivated: false }, + { secureTopLevelContextApproved: false }, + { prfReady: false }, + { iosMajor: 17 }, + ]; + for (const override of rejectedEntries) { + const platform = new FakePlatform(); + const runtime = new MetadataOnlyCaptureRuntime(platform); + await expect( + runtime.capture( + makeRequest({ entry: { ...makeRequest().entry, ...override } }), + ), + ).rejects.toBeInstanceOf(CaptureRuntimeError); + expect(platform.requestCount).toBe(0); + expect(runtime.state).toBe("complete"); + } + }); + + test("uses W02's frozen Chrome product-cell name", async () => { + const platform = new FakePlatform(); + platform.sampler.frames.push(testFrame()); + const runtime = new MetadataOnlyCaptureRuntime(platform); + await expect( + runtime.capture( + makeRequest({ entry: { ...makeRequest().entry, browser: "chrome" } }), + ), + ).resolves.toMatchObject({ dataMode: "metadata_only" }); + expect(platform.requestCount).toBe(1); + }); + + test("rejects an explicitly non-user-facing camera and leaves unknown settings non-assertive", async () => { + const rearPlatform = new FakePlatform(); + const rearTrack = rearPlatform.stream.tracks[0]; + if (rearTrack !== undefined) rearTrack.facingMode = "environment"; + const rearRuntime = new MetadataOnlyCaptureRuntime(rearPlatform); + await expect(rearRuntime.capture(makeRequest())).rejects.toMatchObject({ + code: "non_user_facing_camera", + }); + expect(rearPlatform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); + expect(rearPlatform.sampler.disposeCount).toBe(0); + + const unknownPlatform = new FakePlatform(); + const unknownTrack = unknownPlatform.stream.tracks[0]; + if (unknownTrack !== undefined) unknownTrack.facingMode = "vendor-unknown"; + const unreadableTrack = unknownPlatform.stream.tracks[1]; + if (unreadableTrack !== undefined) unreadableTrack.settingsError = new Error("unreadable"); + unknownPlatform.sampler.frames.push(testFrame()); + await expect( + new MetadataOnlyCaptureRuntime(unknownPlatform).capture(makeRequest()), + ).resolves.toMatchObject({ dataMode: "metadata_only" }); + }); + + test("acquires once, samples one-to-four frames, emits only descriptors, and cleans up", async () => { + const platform = new FakePlatform(); + const first = testFrame([0, 1, 2, 3]); + const second = testFrame([4, 5, 6, 7]); + platform.sampler.frames.push(first, second); + const states: string[] = []; + const inspected: Uint8ClampedArray[] = []; + const runtime = new MetadataOnlyCaptureRuntime(platform, { + onStateChange: (state) => states.push(state), + }); + const bundle = await runtime.capture( + makeRequest({ + frameCount: 2, + inspectTransientFrame: (frame) => { + inspected.push(frame.bytes); + }, + }), + ); + + expect(platform.requestCount).toBe(1); + expect(platform.constraints).toEqual({ + audio: false, + video: { facingMode: { ideal: "user" } }, + }); + expect(bundle.frames).toHaveLength(2); + expect(bundle.frames.map((frame) => frame.transportIndex)).toEqual([0, 1]); + expect(bundle.frames.map((frame) => frame.captureOffsetMs)).toEqual([1, 2]); + expect(bundle.frames.every((frame) => frame.encoding === "rgba8")).toBe(true); + expect(JSON.stringify(bundle)).not.toContain("bytes"); + expect(first.bytes.every((byte) => byte === 0)).toBe(true); + expect(second.bytes.every((byte) => byte === 0)).toBe(true); + expect(inspected.every((bytes) => bytes.every((byte) => byte === 0))).toBe(true); + expect(platform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); + expect(platform.sampler.disposeCount).toBe(1); + expect(states).toEqual([ + "permission_request", + "acquiring", + "awaiting_first_frame", + "preview", + "sampling", + "artifact_ready", + "cleaning_up", + "complete", + ]); + }); + + test("tombstones a cancelled permission request and stops its late stream", async () => { + const platform = new FakePlatform(); + const camera = deferred(); + platform.requestResult = camera.promise; + const runtime = new MetadataOnlyCaptureRuntime(platform); + const capture = runtime.capture(makeRequest()); + await nextTask(); + runtime.cancel(); + await expect(capture).rejects.toMatchObject({ code: "interrupted" }); + const lateStream = new FakeStream(); + camera.resolve(lateStream); + await nextTask(); + expect(lateStream.tracks.every((track) => track.stopCount === 1)).toBe(true); + expect(platform.sampler.disposeCount).toBe(0); + expect(runtime.state).toBe("complete"); + }); + + test("classifies acquisition errors without retaining underlying details", async () => { + const cases: readonly [string, CaptureFailureCode][] = [ + ["NotAllowedError", "permission_denied"], + ["NotFoundError", "camera_unavailable"], + ["NotReadableError", "camera_busy"], + ["SecurityError", "camera_restricted"], + ["OverconstrainedError", "constraints_unsatisfied"], + ["AbortError", "acquisition_aborted"], + ["NotSupportedError", "camera_unsupported"], + ["UnexpectedPrivateError", "unknown"], + ]; + for (const [name, code] of cases) { + const platform = new FakePlatform(); + platform.requestResult = Promise.reject({ name, secret: "raw-camera-secret" }); + const runtime = new MetadataOnlyCaptureRuntime(platform); + try { + await runtime.capture(makeRequest()); + throw new Error("expected capture rejection"); + } catch (error) { + expect(error).toBeInstanceOf(CaptureRuntimeError); + expect((error as CaptureRuntimeError).code).toBe(code); + expect(String(error)).not.toContain("raw-camera-secret"); + } + expect(runtime.state).toBe("complete"); + } + }); + + test("classifies a hostile throwing error-name getter as unknown", async () => { + const platform = new FakePlatform(); + const hostile = Object.defineProperty({}, "name", { + get(): never { + throw new Error("hostile getter detail"); + }, + }); + platform.requestResult = Promise.reject(hostile); + await expect( + new MetadataOnlyCaptureRuntime(platform).capture(makeRequest()), + ).rejects.toMatchObject({ code: "unknown" }); + expect(platform.requestCount).toBe(1); + }); + + test("first-frame watchdog stops all tracks and clears the sampler", async () => { + const platform = new FakePlatform(); + platform.sampler.prepareResult = new Promise(() => undefined); + const runtime = new MetadataOnlyCaptureRuntime(platform, { firstFrameTimeoutMs: 50 }); + const capture = runtime.capture(makeRequest()); + await waitUntil(() => runtime.state === "awaiting_first_frame"); + platform.fireShortestTimer(); + await expect(capture).rejects.toMatchObject({ code: "preview_timeout" }); + expect(platform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); + expect(platform.sampler.clearCount).toBeGreaterThan(0); + expect(platform.sampler.disposeCount).toBe(1); + }); + + test("permission timeout tombstones and clears a late stream", async () => { + const platform = new FakePlatform(); + const camera = deferred(); + platform.requestResult = camera.promise; + const runtime = new MetadataOnlyCaptureRuntime(platform, { permissionTimeoutMs: 50 }); + const capture = runtime.capture(makeRequest()); + await waitUntil(() => platform.requestCount === 1); + platform.fireShortestTimer(); + await expect(capture).rejects.toMatchObject({ code: "permission_timeout" }); + const lateStream = new FakeStream(); + camera.resolve(lateStream); + await nextTask(); + expect(lateStream.tracks.every((track) => track.stopCount === 1)).toBe(true); + }); + + test("state observers cannot prevent cleanup", async () => { + const platform = new FakePlatform(); + platform.sampler.frames.push(testFrame()); + const runtime = new MetadataOnlyCaptureRuntime(platform, { + onStateChange: () => { + throw new Error("observer failure"); + }, + }); + await expect(runtime.capture(makeRequest())).resolves.toMatchObject({ + dataMode: "metadata_only", + }); + expect(platform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); + expect(platform.sampler.disposeCount).toBe(1); + }); + + test("every observable interruption invalidates the attempt and releases resources", async () => { + const reasons = [ + "visibility_hidden", + "pagehide", + "beforeunload", + "orientation_change", + "unmount", + ] as const; + for (const reason of reasons) { + const platform = new FakePlatform(); + const pendingFrame = deferred>(); + platform.sampler.sampleOverride = () => pendingFrame.promise; + const runtime = new MetadataOnlyCaptureRuntime(platform); + const capture = runtime.capture(makeRequest()); + await waitUntil(() => platform.sampler.sampleCount === 1); + if (reason === "unmount") runtime.unmount(); + else platform.emit(reason); + await expect(capture).rejects.toMatchObject({ code: "interrupted" }); + expect(platform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); + expect(platform.sampler.disposeCount).toBe(1); + } + }); + + test("clears a sampled frame that resolves after interruption", async () => { + const platform = new FakePlatform(); + const pendingFrame = deferred>(); + platform.sampler.sampleOverride = () => pendingFrame.promise; + const runtime = new MetadataOnlyCaptureRuntime(platform); + const capture = runtime.capture(makeRequest()); + await waitUntil(() => platform.sampler.sampleCount === 1); + platform.emit("pagehide"); + await expect(capture).rejects.toMatchObject({ code: "interrupted" }); + const lateFrame = testFrame([20, 21, 22, 23]); + pendingFrame.resolve(lateFrame); + await nextTask(); + expect(lateFrame.bytes).toEqual(new Uint8ClampedArray(4)); + }); + + test("track mute/end and session expiry are terminal and require a fresh attempt", async () => { + for (const terminal of ["mute", "ended", "expiry"] as const) { + const platform = new FakePlatform(); + platform.sampler.sampleOverride = () => new Promise(() => undefined); + const runtime = new MetadataOnlyCaptureRuntime(platform); + const capture = runtime.capture(makeRequest()); + await waitUntil(() => platform.sampler.sampleCount === 1); + if (terminal === "expiry") platform.fireLongestTimer(); + else platform.stream.tracks[0]?.emit(terminal); + await expect(capture).rejects.toMatchObject({ + code: terminal === "expiry" ? "session_expired" : "interrupted", + }); + expect(platform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); + expect(runtime.state).toBe("complete"); + } + }); + + test("zeros an owned frame when local inspection fails", async () => { + const platform = new FakePlatform(); + const frame = testFrame([99, 98, 97, 96]); + platform.sampler.frames.push(frame); + const runtime = new MetadataOnlyCaptureRuntime(platform); + await expect( + runtime.capture( + makeRequest({ inspectTransientFrame: () => Promise.reject(new Error("private")) }), + ), + ).rejects.toMatchObject({ code: "quality_callback_failed" }); + expect(frame.bytes).toEqual(new Uint8ClampedArray(4)); + expect(platform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); + }); + + test("sanitizes decorated CaptureRuntimeError values thrown by frame inspection", async () => { + const platform = new FakePlatform(); + const frame = testFrame([211, 173, 199, 241]); + platform.sampler.frames.push(frame); + const decorated = Object.assign(new CaptureRuntimeError("unknown"), { + pixels: [211, 173, 199, 241], + copiedFrame: new Uint8ClampedArray([211, 173, 199, 241]), + }); + decorated.message = "copied pixels: 211,173,199,241"; + + try { + await new MetadataOnlyCaptureRuntime(platform).capture( + makeRequest({ + inspectTransientFrame: () => { + throw decorated; + }, + }), + ); + throw new Error("expected sanitized callback rejection"); + } catch (error) { + expect(error).toBeInstanceOf(CaptureRuntimeError); + const safeError = error as CaptureRuntimeError; + expect(safeError).not.toBe(decorated); + expect(safeError.code).toBe("quality_callback_failed"); + expect(safeError.message).toBe("The local capture guidance could not inspect the frame"); + expect(Object.keys(safeError).sort()).toEqual(["code", "name"]); + expect("pixels" in safeError).toBe(false); + expect("copiedFrame" in safeError).toBe(false); + expect(JSON.stringify(safeError)).not.toContain("211"); + expect(String(safeError)).not.toContain("211"); + } + expect(frame.bytes).toEqual(new Uint8ClampedArray(4)); + expect(platform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); + }); + + test("enforces frame count, dimensions, byte length, and total-byte bounds", async () => { + const invalidRequests = [ + makeRequest({ frameCount: 0 }), + makeRequest({ frameCount: 5 }), + makeRequest({ policy: { ...metadataPolicy, maxTotalBytes: 3 } }), + ]; + for (const request of invalidRequests) { + const platform = new FakePlatform(); + platform.sampler.frames.push(testFrame()); + const runtime = new MetadataOnlyCaptureRuntime(platform); + await expect(runtime.capture(request)).rejects.toMatchObject({ code: "artifact_limit" }); + expect(runtime.state).toBe("complete"); + } + }); +}); diff --git a/packages/frame-capture/test/state.test.ts b/packages/frame-capture/test/state.test.ts new file mode 100644 index 0000000..9c75ead --- /dev/null +++ b/packages/frame-capture/test/state.test.ts @@ -0,0 +1,53 @@ +import { describe, expect, test } from "bun:test"; +import { + CAPTURE_STATES, + isCaptureTransitionAllowed, + reduceCaptureState, + type CaptureState, +} from "../src"; + +describe("capture lifecycle reducer", () => { + test("contains every frozen runtime state", () => { + expect(CAPTURE_STATES).toEqual([ + "idle", + "permission_request", + "permission_denied", + "camera_unavailable", + "camera_busy", + "camera_restricted", + "acquiring", + "awaiting_first_frame", + "preview", + "sampling", + "artifact_ready", + "interrupted", + "expired", + "failed", + "cleaning_up", + "complete", + ]); + }); + + test("allows a successful metadata-only lifecycle", () => { + const path = [ + "permission_request", + "acquiring", + "awaiting_first_frame", + "preview", + "sampling", + "artifact_ready", + "cleaning_up", + "complete", + ] as const; + let state: CaptureState = "idle"; + for (const next of path) state = reduceCaptureState(state, next); + expect(state).toBe("complete"); + }); + + test("requires cleanup between terminal state and restart", () => { + expect(isCaptureTransitionAllowed("sampling", "interrupted")).toBe(true); + expect(isCaptureTransitionAllowed("interrupted", "permission_request")).toBe(false); + expect(() => reduceCaptureState("interrupted", "permission_request")).toThrow(); + expect(isCaptureTransitionAllowed("complete", "permission_request")).toBe(true); + }); +}); diff --git a/packages/staging-issuance-port/README.md b/packages/staging-issuance-port/README.md new file mode 100644 index 0000000..047888f --- /dev/null +++ b/packages/staging-issuance-port/README.md @@ -0,0 +1,5 @@ +# Staging issuance port + +This package exposes the application port for simulated staging issuance. The caller supplies independently trusted request and embedded-receipt bindings. Results preserve the frozen staging-only result shapes plus stable, detail-free validation errors. + +The port cannot return a production credential or proof. diff --git a/packages/staging-issuance-port/package.json b/packages/staging-issuance-port/package.json new file mode 100644 index 0000000..31fabcc --- /dev/null +++ b/packages/staging-issuance-port/package.json @@ -0,0 +1,13 @@ +{ + "name": "@world-id/web-authenticator-staging-issuance-port", + "private": true, + "version": "0.0.0", + "type": "module", + "exports": { + ".": "./src/index.ts" + }, + "scripts": { + "test": "bun test test", + "lint": "eslint ." + } +} diff --git a/packages/staging-issuance-port/src/index.ts b/packages/staging-issuance-port/src/index.ts new file mode 100644 index 0000000..c709b09 --- /dev/null +++ b/packages/staging-issuance-port/src/index.ts @@ -0,0 +1,33 @@ +import type { + ExpectedStagingIssuanceRequestV0, + StagingIssuanceSimulationRequestV0, + StagingIssuanceSimulationResultV0, +} from "../../contracts/src"; + +export const STAGING_ISSUANCE_ERROR_V0 = "staging_issuance_error_v0" as const; + +export type StagingIssuanceErrorReasonV0 = + | "invalid_request" + | "non_pass_receipt" + | "idempotency_conflict" + | "request_replay" + | "service_not_ready"; + +export type StagingIssuancePortResultV0 = + | StagingIssuanceSimulationResultV0 + | { + readonly kind: typeof STAGING_ISSUANCE_ERROR_V0; + readonly reasonCode: StagingIssuanceErrorReasonV0; + }; + +export interface StagingIssuanceInvocationV0 { + readonly request: unknown; + readonly expected: ExpectedStagingIssuanceRequestV0; +} + +export interface StagingIssuancePortV0 { + issue(invocation: StagingIssuanceInvocationV0): Promise; + readiness(): Readonly<{ ready: boolean; reasonCode?: "service_not_ready" }>; +} + +export type { StagingIssuanceSimulationRequestV0 }; diff --git a/packages/world-id-authenticator/README.md b/packages/world-id-authenticator/README.md new file mode 100644 index 0000000..ff54559 --- /dev/null +++ b/packages/world-id-authenticator/README.md @@ -0,0 +1,3 @@ +# World ID authenticator + +W03-owned after explicit `GO`. Derives the current-protocol authenticator in browser memory and exports public material only. Real staging registration remains blocked until endpoint configuration is supplied. diff --git a/playwright.integration.config.ts b/playwright.integration.config.ts new file mode 100644 index 0000000..069ae76 --- /dev/null +++ b/playwright.integration.config.ts @@ -0,0 +1,51 @@ +import { defineConfig } from "@playwright/test"; + +export default defineConfig({ + testDir: "./tests/integration/browser", + outputDir: "./test-results", + fullyParallel: false, + forbidOnly: true, + retries: 0, + reporter: [["list"], ["html", { outputFolder: "./playwright-report", open: "never" }]], + use: { + baseURL: "http://127.0.0.1:4173", + trace: "off", + video: "off", + screenshot: "only-on-failure", + }, + webServer: { + command: "bun run start:authenticator", + cwd: import.meta.dirname, + env: { + ...process.env, + AUTHENTICATOR_HOST: "127.0.0.1", + PORT: "4173", + AUTHENTICATOR_PUBLIC_ORIGIN: "http://127.0.0.1:4173", + AUTHENTICATOR_LOCAL_ORIGIN: "http://localhost:4173", + }, + port: 4173, + reuseExistingServer: false, + timeout: 120_000, + }, + projects: [ + { + name: "desktop-chromium-synthetic", + use: { + browserName: "chromium", + viewport: { width: 393, height: 852 }, + permissions: ["camera"], + launchOptions: { + executablePath: process.env.PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH, + args: [ + "--use-fake-device-for-media-stream", + "--use-fake-ui-for-media-stream", + ], + }, + }, + }, + { + name: "desktop-webkit-synthetic", + use: { browserName: "webkit", viewport: { width: 393, height: 852 } }, + }, + ], +}); diff --git a/postcss.config.mjs b/postcss.config.mjs deleted file mode 100644 index ca0fd7a..0000000 --- a/postcss.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -const config = { - plugins: ['@tailwindcss/postcss'], -} - -export default config diff --git a/public/images/marble.png b/public/images/marble.png deleted file mode 100644 index 8189adb44ed49804f0b4da587f62180e0198241b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4641 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 { + const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value)); + return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join(""); +} + +interface HandlePayloadV0 { + readonly v: 1; + readonly sessionId: string; + readonly rpId: string; + readonly origin: string; + readonly expiresAt: string; +} + +function timingSafeEqual(left: Uint8Array, right: Uint8Array): boolean { + let difference = left.byteLength ^ right.byteLength; + const length = Math.max(left.byteLength, right.byteLength); + for (let index = 0; index < length; index += 1) { + difference |= (left[index] ?? 0) ^ (right[index] ?? 0); + } + return difference === 0; +} + +export class OpaqueBrowserHandleCodecV0 { + constructor(private readonly key: CryptoKey) {} + + async seal(payload: Omit): Promise { + const encodedPayload = bytesToBase64Url( + new TextEncoder().encode(canonicalizeJsonV0({ v: 1, ...payload })), + ); + const signature = await crypto.subtle.sign( + "HMAC", + this.key, + new TextEncoder().encode(encodedPayload), + ); + return `${encodedPayload}.${bytesToBase64Url(new Uint8Array(signature))}`; + } + + async open(handle: string): Promise { + const parts = handle.split("."); + if (parts.length !== 2) return null; + try { + const [encodedPayload, encodedSignature] = parts as [string, string]; + const expected = new Uint8Array( + await crypto.subtle.sign("HMAC", this.key, new TextEncoder().encode(encodedPayload)), + ); + const actual = base64UrlToBytes(encodedSignature); + if (!timingSafeEqual(expected, actual)) return null; + const parsed: unknown = JSON.parse( + new TextDecoder().decode(base64UrlToBytes(encodedPayload)), + ); + if ( + typeof parsed !== "object" || + parsed === null || + Array.isArray(parsed) || + Object.keys(parsed).sort().join(",") !== "expiresAt,origin,rpId,sessionId,v" || + (parsed as Record).v !== 1 || + typeof (parsed as Record).sessionId !== "string" || + typeof (parsed as Record).rpId !== "string" || + typeof (parsed as Record).origin !== "string" || + typeof (parsed as Record).expiresAt !== "string" + ) { + return null; + } + return parsed as HandlePayloadV0; + } catch { + return null; + } + } +} + +export async function signStagingArtifactV0( + artifact: T, + signer: { readonly trustRoot: { readonly keyId: string }; sign(preimage: Uint8Array): Promise }, + preimage: (value: Record) => Uint8Array, +): Promise { + const unsigned = { + ...artifact, + authentication: { + scheme: "staging-ed25519" as const, + keyId: signer.trustRoot.keyId, + signatureBase64Url: "pending", + }, + }; + const signatureBase64Url = await signer.sign(preimage(unsigned as unknown as Record)); + return { + ...unsigned, + authentication: { ...unsigned.authentication, signatureBase64Url }, + } as T; +} + +export function bytesForBodyLimit(value: unknown): number { + try { + return new TextEncoder().encode(JSON.stringify(value)).byteLength; + } catch { + return Number.POSITIVE_INFINITY; + } +} diff --git a/services/session-gateway/src/errors.ts b/services/session-gateway/src/errors.ts new file mode 100644 index 0000000..c26b960 --- /dev/null +++ b/services/session-gateway/src/errors.ts @@ -0,0 +1,32 @@ +export const GATEWAY_ERROR_CODES_V0 = [ + "gateway_disabled", + "invalid_request", + "body_too_large", + "unauthorized", + "origin_forbidden", + "not_found", + "expired", + "invalid_state", + "binding_mismatch", + "replay_rejected", + "artifact_invalid", + "resource_busy", +] as const; + +export type GatewayErrorCodeV0 = (typeof GATEWAY_ERROR_CODES_V0)[number]; + +export class GatewayErrorV0 extends Error { + readonly code: GatewayErrorCodeV0; + readonly httpStatus: number; + + constructor(code: GatewayErrorCodeV0, httpStatus: number) { + super(code); + this.name = "GatewayErrorV0"; + this.code = code; + this.httpStatus = httpStatus; + } + + toResponse(): { readonly code: GatewayErrorCodeV0 } { + return { code: this.code }; + } +} diff --git a/services/session-gateway/src/gateway.ts b/services/session-gateway/src/gateway.ts new file mode 100644 index 0000000..7569a9c --- /dev/null +++ b/services/session-gateway/src/gateway.ts @@ -0,0 +1,1037 @@ +import { + assertSimulationArtifactAllowed, + base64UrlToBytes, + BIOMETRIC_SIMULATION_REQUEST_V0, + BIOMETRIC_SIMULATION_SCENARIOS_V0, + BIOMETRIC_SIMULATOR_AUDIENCE_V0, + BIOMETRIC_VERIFICATION_PORT_V0, + ENROLLMENT_SESSION_V2, + isEnrollmentTransitionAllowedV2, + isSimulationReceiptV0, + ISSUANCE_SIMULATION_SCENARIOS_V0, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + stagingSignaturePreimageV0, + STAGING_ISSUANCE_PORT_V0, + STAGING_ISSUANCE_SIMULATION_REQUEST_V0, + STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, + validateFrameBundleV0, + validateSimulationCapturePolicyV0, + verifyBiometricSimulationRequestV0, + verifySimulatedStagingCredentialV0, + verifySimulationReceiptV0, + verifyStagingIssuanceSimulationRequestV0, + type BiometricSimulationRequestV0, + type EnrollmentSessionStateV2, + type EnrollmentSessionV2, + type FrameBundleV0, + type HexSha256, + type SimulatedStagingCredentialV0, + type SimulationCapturePolicyV0, + type SimulationReceiptV0, + type StagingIssuanceSimulationRequestV0, +} from "../../../packages/contracts/src"; +import { SIMULATION_RECEIPT_READY_V0 } from "../../../packages/biometric-verification-port/src"; +import { STAGING_ISSUANCE_ERROR_V0 } from "../../../packages/staging-issuance-port/src"; +import { bytesForBodyLimit, OpaqueBrowserHandleCodecV0, randomNonce, randomOpaqueId, sha256Text, signStagingArtifactV0 } from "./crypto"; +import { GatewayErrorV0 } from "./errors"; +import { InMemorySessionRepositoryV0 } from "./repository"; +import type { + CreateSessionResultV0, + GatewayStatusCodeV0, + RequestContextV0, + SessionGatewayConfigV0, + SessionRepositoryV0, + SessionStatusV0, + StoredSessionV0, + SubmitCaptureResultV0, +} from "./types"; + +const TERMINAL_STATES = new Set([ + "simulated_reject", + "simulated_issuance_reject", + "simulated_credential_ready", + "cancelled", + "expired", +]); + +const RETRYABLE_CODES = new Set([ + "simulation_retry", + "simulation_unavailable", + "issuance_unavailable", +]); + +function isRecord(value: unknown): value is Record { + return typeof value === "object" && value !== null && !Array.isArray(value); +} + +function exactKeys(value: Record, expected: readonly string[]): boolean { + const actual = Object.keys(value).sort(); + const sortedExpected = [...expected].sort(); + return actual.length === sortedExpected.length && actual.every((key, index) => key === sortedExpected[index]); +} + +function nonEmpty(value: unknown): value is string { + return typeof value === "string" && value.length > 0; +} + +function hexSha256(value: unknown): value is HexSha256 { + return typeof value === "string" && /^[0-9a-f]{64}$/.test(value); +} + +interface BrowserAuthFieldsV0 { + readonly sessionId: string; + readonly browserHandle: string; +} + +export class SessionGatewayV0 { + private readonly repository: SessionRepositoryV0; + private readonly handles: OpaqueBrowserHandleCodecV0; + private readonly clock: { now(): Date }; + private readonly mutationInFlight = new Map< + string, + { + readonly kind: "passkey" | "prepare" | "capture" | "retry" | "cancel"; + readonly digest: HexSha256; + readonly result: Promise; + } + >(); + private readonly creationInFlight = new Map< + string, + { + readonly bindingDigest: HexSha256; + readonly result: Promise; + } + >(); + private readonly responseCache = new Map< + string, + { + readonly digest: HexSha256; + readonly expiresAt: string; + readonly result: SubmitCaptureResultV0; + } + >(); + private activeOperations = 0; + + constructor( + private readonly config: SessionGatewayConfigV0, + repository: SessionRepositoryV0 = new InMemorySessionRepositoryV0(), + ) { + this.repository = repository; + this.handles = new OpaqueBrowserHandleCodecV0(config.handleKey); + this.clock = config.clock ?? { now: () => new Date() }; + if ( + !Number.isSafeInteger(config.sessionTtlMs) || + config.sessionTtlMs <= 0 || + !Number.isSafeInteger(config.maxRequestBodyBytes) || + config.maxRequestBodyBytes <= 0 || + !Number.isSafeInteger(config.maxConcurrentOperations) || + config.maxConcurrentOperations <= 0 || + !Number.isSafeInteger(config.simulatorTimeoutMs) || + config.simulatorTimeoutMs <= 0 || + validateSimulationCapturePolicyV0({ + ...config.capturePolicy, + expiresAt: new Date(this.clock.now().getTime() + config.sessionTtlMs).toISOString(), + }).length > 0 + ) { + throw new GatewayErrorV0("invalid_request", 500); + } + } + + async createSession(body: unknown, context: RequestContextV0): Promise { + this.assertAvailable(); + this.assertBody(body); + if ( + !isRecord(body) || + !exactKeys(body, ["rpRequest", "accountId", "accountPublicMaterialDigestSha256", "idempotencyKey"]) || + !nonEmpty(body.accountId) || + !hexSha256(body.accountPublicMaterialDigestSha256) || + !nonEmpty(body.idempotencyKey) + ) { + throw new GatewayErrorV0("invalid_request", 400); + } + const now = this.now(); + let verified; + try { + verified = await this.config.rpRequestVerifier.verify(body.rpRequest, context, now); + } catch { + throw new GatewayErrorV0("unauthorized", 401); + } + if (verified === null) throw new GatewayErrorV0("unauthorized", 401); + if (verified.origin !== context.origin || verified.rpId !== context.rpId) { + throw new GatewayErrorV0("origin_forbidden", 403); + } + const accountId = body.accountId; + const accountPublicMaterialDigestSha256 = body.accountPublicMaterialDigestSha256; + const idempotencyKey = body.idempotencyKey; + + const prior = this.repository.findByCreationIdempotency(verified.rpId, idempotencyKey); + if (prior !== undefined) { + if ( + prior.origin !== verified.origin || + prior.returnTarget !== verified.returnTarget || + prior.session.rpRequestDigestSha256 !== verified.requestDigestSha256 || + prior.accountId !== accountId || + prior.session.accountPublicMaterialDigestSha256 !== accountPublicMaterialDigestSha256 + ) { + throw new GatewayErrorV0("binding_mismatch", 409); + } + this.expireIfNeeded(prior); + return this.createResult(prior); + } + const creationKey = `${verified.rpId}\u0000${idempotencyKey}`; + const bindingDigest = await sha256Text(JSON.stringify({ + rpId: verified.rpId, + origin: verified.origin, + returnTarget: verified.returnTarget, + rpRequestDigestSha256: verified.requestDigestSha256, + accountId, + accountPublicMaterialDigestSha256, + idempotencyKey, + })); + const active = this.creationInFlight.get(creationKey); + if (active !== undefined) { + if (active.bindingDigest !== bindingDigest) { + throw new GatewayErrorV0("binding_mismatch", 409); + } + return active.result; + } + const operation = Promise.resolve().then(async () => { + let scenarios; + try { + scenarios = await this.config.scenarioSelector.select({ + verifiedRpRequest: verified, + authenticatedServerContext: context.authenticatedServerContext, + }); + } catch { + throw new GatewayErrorV0("unauthorized", 401); + } + if ( + !BIOMETRIC_SIMULATION_SCENARIOS_V0.includes(scenarios.biometric) || + !ISSUANCE_SIMULATION_SCENARIOS_V0.includes(scenarios.issuance) + ) { + throw new GatewayErrorV0("invalid_request", 500); + } + const createdAt = now; + const expiresAt = new Date(Date.parse(now) + this.config.sessionTtlMs).toISOString(); + const session: EnrollmentSessionV2 = Object.freeze({ + version: ENROLLMENT_SESSION_V2, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + sessionId: randomOpaqueId("ses"), + rpRequestDigestSha256: verified.requestDigestSha256, + accountPublicMaterialDigestSha256, + nonceBase64Url: randomNonce(), + idempotencyKey, + biometricScenario: scenarios.biometric, + issuanceScenario: scenarios.issuance, + state: "created", + createdAt, + expiresAt, + }); + const record: StoredSessionV0 = { + session, + rpId: verified.rpId, + origin: verified.origin, + returnTarget: verified.returnTarget, + accountId, + nonceConsumed: false, + captureAttempt: 0, + statusCode: "created", + operationResults: new Map(), + operationRequestDigests: new Map(), + }; + this.repository.put(record); + this.audit(record, "session_created"); + return this.createResult(record); + }); + this.creationInFlight.set(creationKey, { bindingDigest, result: operation }); + try { + return await operation; + } finally { + this.creationInFlight.delete(creationKey); + } + } + + async completePasskey(body: unknown, context: RequestContextV0): Promise { + this.assertAvailable(); + this.assertBody(body); + if ( + !isRecord(body) || + !exactKeys(body, ["sessionId", "browserHandle", "idempotencyKey", "ceremony"]) || + !nonEmpty(body.sessionId) || + !nonEmpty(body.browserHandle) || + !nonEmpty(body.idempotencyKey) + ) { + throw new GatewayErrorV0("invalid_request", 400); + } + const record = await this.authenticate(body as unknown as BrowserAuthFieldsV0, context); + const resultKey = `passkey:${body.idempotencyKey}`; + const requestDigest = await sha256Text(JSON.stringify(body)); + const prior = record.operationResults.get(resultKey); + if (prior !== undefined) { + if (record.operationRequestDigests.get(resultKey) !== requestDigest) { + throw new GatewayErrorV0("binding_mismatch", 409); + } + return prior; + } + const boundDigest = record.operationRequestDigests.get(resultKey); + if (boundDigest !== undefined && boundDigest !== requestDigest) { + throw new GatewayErrorV0("binding_mismatch", 409); + } + return this.runSessionMutation(record, "passkey", requestDigest, async () => { + if (record.session.state !== "created") { + throw new GatewayErrorV0("invalid_state", 409); + } + let valid = false; + try { + valid = await this.config.ceremonyVerifier.verify(body.ceremony, { + sessionId: record.session.sessionId, + rpId: record.rpId, + origin: record.origin, + accountPublicMaterialDigestSha256: record.session.accountPublicMaterialDigestSha256, + now: this.now(), + }); + } catch { + valid = false; + } + if (!valid) throw new GatewayErrorV0("unauthorized", 401); + record.operationRequestDigests.set(resultKey, requestDigest); + this.transition(record, "passkey_complete", "passkey_complete"); + const result = this.status(record); + record.operationResults.set(resultKey, result); + this.audit(record, "passkey_complete"); + return result; + }); + } + + async prepareCapture(body: unknown, context: RequestContextV0): Promise { + this.assertAvailable(); + this.assertBody(body); + const fields = this.parseAuthOnly(body); + const record = await this.authenticate(fields, context); + const requestDigest = await sha256Text(JSON.stringify(body)); + return this.runSessionMutation(record, "prepare", requestDigest, async () => { + if (record.session.state !== "passkey_complete" && record.session.state !== "simulated_retry") { + throw new GatewayErrorV0("invalid_state", 409); + } + if (record.session.state === "simulated_retry") { + record.session = Object.freeze({ ...record.session, nonceBase64Url: randomNonce() }); + record.nonceConsumed = false; + record.frameBundle = undefined; + record.artifactDigestSha256 = undefined; + record.biometricRequestId = undefined; + record.biometricIdempotencyKey = undefined; + record.biometricRequestedAt = undefined; + record.receiptId = undefined; + record.issuanceRequestId = undefined; + record.issuanceIdempotencyKey = undefined; + record.issuanceRequestedAt = undefined; + } + record.captureAttempt += 1; + this.transition(record, "capture_ready", "capture_ready"); + this.audit(record, "capture_ready"); + return this.createResult(record); + }); + } + + async submitCapture(body: unknown, context: RequestContextV0): Promise { + this.assertAvailable(); + this.assertBody(body); + if ( + !isRecord(body) || + !exactKeys(body, ["sessionId", "browserHandle", "idempotencyKey", "nonceBase64Url", "frameBundle"]) || + !nonEmpty(body.sessionId) || + !nonEmpty(body.browserHandle) || + !nonEmpty(body.idempotencyKey) || + !nonEmpty(body.nonceBase64Url) + ) { + throw new GatewayErrorV0("invalid_request", 400); + } + const record = await this.authenticate(body as unknown as BrowserAuthFieldsV0, context); + const resultKey = `capture:${body.idempotencyKey}`; + const cacheKey = `${record.session.sessionId}:${resultKey}`; + const requestDigest = await sha256Text(JSON.stringify(body)); + const cached = this.cachedResponse(cacheKey, requestDigest); + if (cached !== undefined) return cached; + const prior = record.operationResults.get(resultKey); + if (prior !== undefined) { + if (record.operationRequestDigests.get(resultKey) !== requestDigest) { + throw new GatewayErrorV0("binding_mismatch", 409); + } + return prior; + } + const boundCaptureDigest = record.operationRequestDigests.get(resultKey); + if (boundCaptureDigest !== undefined && boundCaptureDigest !== requestDigest) { + throw new GatewayErrorV0("binding_mismatch", 409); + } + return this.runSessionMutation(record, "capture", requestDigest, () => this.withOperation(async () => { + if (record.nonceConsumed || body.nonceBase64Url !== record.session.nonceBase64Url) { + throw new GatewayErrorV0("replay_rejected", 409); + } + if (record.session.state !== "capture_ready") { + throw new GatewayErrorV0("invalid_state", 409); + } + record.operationRequestDigests.set(resultKey, requestDigest); + const frameBundle = body.frameBundle; + const policy = this.policyFor(record); + const validationErrors = await validateFrameBundleV0(frameBundle, policy); + if ( + validationErrors.length > 0 || + !isRecord(frameBundle) || + frameBundle.sessionId !== record.session.sessionId || + frameBundle.accountPublicMaterialDigestSha256 !== record.session.accountPublicMaterialDigestSha256 || + frameBundle.nonceDigestSha256 !== (await sha256Text(record.session.nonceBase64Url)) || + (frameBundle.dataMode === "synthetic_fixture" && + (!nonEmpty(frameBundle.syntheticFixtureId) || + !this.config.allowedSyntheticFixtureIds.includes(frameBundle.syntheticFixtureId))) + ) { + throw new GatewayErrorV0("artifact_invalid", 400); + } + record.nonceConsumed = true; + record.frameBundle = frameBundle as unknown as FrameBundleV0; + record.artifactDigestSha256 = record.frameBundle.artifactDigestSha256; + this.transition(record, "biometric_simulation_pending", "capture_ready"); + const result = await this.orchestrate(record); + record.operationResults.set(resultKey, this.status(record)); + return this.cacheResponse(cacheKey, requestDigest, record.session.expiresAt, result); + })); + } + + async retryUnavailable(body: unknown, context: RequestContextV0): Promise { + this.assertAvailable(); + this.assertBody(body); + if ( + !isRecord(body) || + !exactKeys(body, ["sessionId", "browserHandle", "idempotencyKey"]) || + !nonEmpty(body.sessionId) || + !nonEmpty(body.browserHandle) || + !nonEmpty(body.idempotencyKey) + ) { + throw new GatewayErrorV0("invalid_request", 400); + } + const record = await this.authenticate(body as unknown as BrowserAuthFieldsV0, context); + const resultKey = `retry:${body.idempotencyKey}`; + const cacheKey = `${record.session.sessionId}:${resultKey}`; + const requestDigest = await sha256Text(JSON.stringify(body)); + const cached = this.cachedResponse(cacheKey, requestDigest); + if (cached !== undefined) return cached; + const prior = record.operationResults.get(resultKey); + if (prior !== undefined) { + if (record.operationRequestDigests.get(resultKey) !== requestDigest) { + throw new GatewayErrorV0("binding_mismatch", 409); + } + return prior; + } + const boundRetryDigest = record.operationRequestDigests.get(resultKey); + if (boundRetryDigest !== undefined && boundRetryDigest !== requestDigest) { + throw new GatewayErrorV0("binding_mismatch", 409); + } + return this.runSessionMutation(record, "retry", requestDigest, () => this.withOperation(async () => { + if ( + (record.session.state !== "simulated_unavailable" && + record.session.state !== "simulated_issuance_unavailable") || + record.frameBundle === undefined + ) { + throw new GatewayErrorV0("invalid_state", 409); + } + record.operationRequestDigests.set(resultKey, requestDigest); + let retryResult: SubmitCaptureResultV0; + if (record.session.state === "simulated_unavailable") { + this.transition(record, "biometric_simulation_pending", "simulation_unavailable"); + retryResult = await this.orchestrate(record); + } else { + const receipt = await this.runBiometric(record, record.frameBundle!); + if (receipt === null || receipt.outcome !== "simulated_pass") { + retryResult = this.status(record); + } else { + this.transition(record, "issuance_simulation_pending", "issuance_unavailable"); + retryResult = await this.runIssuance( + record, + receipt as SimulationReceiptV0 & { readonly outcome: "simulated_pass" }, + ); + } + } + record.operationResults.set(resultKey, this.status(record)); + return this.cacheResponse( + cacheKey, + requestDigest, + record.session.expiresAt, + retryResult, + ); + })); + } + + async cancel(body: unknown, context: RequestContextV0): Promise { + this.assertAvailable(); + this.assertBody(body); + const fields = this.parseAuthOnly(body); + const record = await this.authenticate(fields, context); + const requestDigest = await sha256Text(JSON.stringify(body)); + return this.runSessionMutation(record, "cancel", requestDigest, async () => { + if (TERMINAL_STATES.has(record.session.state)) return this.status(record); + this.transition(record, "cancelled", "cancelled"); + record.frameBundle = undefined; + this.audit(record, "session_cancelled"); + return this.status(record); + }); + } + + async getStatus(body: unknown, context: RequestContextV0): Promise { + this.assertAvailable(); + this.assertBody(body); + return this.status(await this.authenticate(this.parseAuthOnly(body), context)); + } + + async readiness(): Promise<{ readonly ready: boolean; readonly code: "ready" | "disabled" | "dependency_unavailable" }> { + if (!this.isAvailable()) return { ready: false, code: "disabled" }; + if (!this.purposeKeyMaterialsAreDistinct()) { + return { ready: false, code: "dependency_unavailable" }; + } + const [biometric, issuance] = await Promise.all([ + this.safeReady(() => this.config.biometricClient.readiness().ready), + this.safeReady(() => this.config.issuanceClient.readiness().ready), + ]); + return biometric && issuance + ? { ready: true, code: "ready" } + : { ready: false, code: "dependency_unavailable" }; + } + + purgeExpired(): number { + const nowMs = this.clock.now().getTime(); + this.purgeResponseCache(nowMs); + return this.repository.purgeExpired(nowMs); + } + + private async orchestrate(record: StoredSessionV0): Promise { + const frameBundle = record.frameBundle; + if (frameBundle === undefined) throw new GatewayErrorV0("invalid_state", 409); + const receipt = await this.runBiometric(record, frameBundle); + if (receipt === null) { + if (this.expireDuringOperation(record)) return this.status(record); + return this.unavailable(record, "simulation_unavailable"); + } + this.audit(record, "simulation_finished", this.codeForOutcome(receipt.outcome)); + if (receipt.outcome === "simulated_reject") { + this.transition(record, "simulated_reject", "simulation_reject"); + record.frameBundle = undefined; + return this.status(record); + } + if (receipt.outcome === "simulated_retry") { + this.transition(record, "simulated_retry", "simulation_retry"); + record.frameBundle = undefined; + return this.status(record); + } + if (receipt.outcome === "simulated_unavailable") { + return this.unavailable(record, "simulation_unavailable"); + } + this.transition(record, "simulated_pass", "simulation_pass"); + this.transition(record, "issuance_simulation_pending", "simulation_pass"); + return this.runIssuance( + record, + receipt as SimulationReceiptV0 & { readonly outcome: "simulated_pass" }, + ); + } + + private async runBiometric(record: StoredSessionV0, frameBundle: FrameBundleV0): Promise { + const verificationNow = this.now(); + const nonceDigestSha256 = await sha256Text(record.session.nonceBase64Url); + record.biometricRequestId ??= randomOpaqueId("bio_req"); + record.biometricIdempotencyKey ??= `bio-${record.session.sessionId}-${record.captureAttempt}`; + record.biometricRequestedAt ??= verificationNow; + const pending: BiometricSimulationRequestV0 = { + kind: BIOMETRIC_SIMULATION_REQUEST_V0, + version: BIOMETRIC_VERIFICATION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, + requestId: record.biometricRequestId, + sessionId: record.session.sessionId, + nonceDigestSha256, + idempotencyKey: record.biometricIdempotencyKey, + accountPublicMaterialDigestSha256: record.session.accountPublicMaterialDigestSha256, + capturePolicyId: this.config.capturePolicy.policyId, + scenario: record.session.biometricScenario, + frameBundle, + requestedAt: record.biometricRequestedAt, + expiresAt: record.session.expiresAt, + authentication: { scheme: "staging-ed25519", keyId: "pending", signatureBase64Url: "pending" }, + }; + let request: BiometricSimulationRequestV0; + try { + request = await signStagingArtifactV0(pending, this.config.biometricRequestSigner, stagingSignaturePreimageV0); + } catch { + return null; + } + const expectedRequest = { + runtimeEnvironment: this.config.runtimeEnvironment, + requestId: request.requestId, + sessionId: request.sessionId, + nonceDigestSha256: request.nonceDigestSha256, + idempotencyKey: request.idempotencyKey, + accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, + capturePolicyId: request.capturePolicyId, + scenario: request.scenario, + now: verificationNow, + } as const; + if (!(await verifyBiometricSimulationRequestV0(request, expectedRequest, this.policyFor(record), this.config.biometricRequestSigner.trustRoot))) { + return null; + } + let response: unknown; + try { + response = await this.withTimeout(this.config.biometricClient.verify({ + request, + expected: expectedRequest, + capturePolicy: this.policyFor(record), + })); + } catch { + return null; + } + try { + assertSimulationArtifactAllowed(this.config.runtimeEnvironment, response); + if ( + !isRecord(response) || + !exactKeys(response, ["kind", "receipt"]) || + response.kind !== SIMULATION_RECEIPT_READY_V0 || + !isSimulationReceiptV0(response.receipt) + ) { + return null; + } + const receipt = response.receipt; + if ( + Date.parse(receipt.issuedAt) < Date.parse(request.requestedAt) || + Date.parse(receipt.expiresAt) > Date.parse(record.session.expiresAt) + ) { + return null; + } + const valid = await verifySimulationReceiptV0(receipt, { + ...expectedRequest, + receiptId: receipt.receiptId, + artifactDigestSha256: frameBundle.artifactDigestSha256, + now: this.now(), + }, this.config.biometricReceiptTrustRoot); + if (!valid) return null; + record.receiptId = receipt.receiptId; + return receipt; + } catch { + return null; + } + } + + private async runIssuance(record: StoredSessionV0, receipt: SimulationReceiptV0 & { outcome: "simulated_pass" }): Promise { + if (this.expireDuringOperation(record)) return this.status(record); + const verificationNow = this.now(); + record.issuanceRequestId ??= randomOpaqueId("iss_req"); + record.issuanceIdempotencyKey ??= `iss-${record.session.sessionId}-${record.captureAttempt}`; + record.issuanceRequestedAt ??= verificationNow; + const pending: StagingIssuanceSimulationRequestV0 = { + kind: STAGING_ISSUANCE_SIMULATION_REQUEST_V0, + version: STAGING_ISSUANCE_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + audience: STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, + requestId: record.issuanceRequestId, + sessionId: record.session.sessionId, + nonceDigestSha256: receipt.nonceDigestSha256, + idempotencyKey: record.issuanceIdempotencyKey, + accountId: record.accountId, + accountPublicMaterialDigestSha256: record.session.accountPublicMaterialDigestSha256, + biometricReceipt: receipt, + scenario: record.session.issuanceScenario, + requestedAt: record.issuanceRequestedAt, + expiresAt: record.session.expiresAt, + authentication: { scheme: "staging-ed25519", keyId: "pending", signatureBase64Url: "pending" }, + }; + let request: StagingIssuanceSimulationRequestV0; + try { + request = await signStagingArtifactV0(pending, this.config.issuanceRequestSigner, stagingSignaturePreimageV0); + } catch { + return this.issuanceUnavailable(record); + } + const expectedReceipt = { + runtimeEnvironment: this.config.runtimeEnvironment, + receiptId: receipt.receiptId, + requestId: receipt.requestId, + sessionId: receipt.sessionId, + nonceDigestSha256: receipt.nonceDigestSha256, + idempotencyKey: receipt.idempotencyKey, + accountPublicMaterialDigestSha256: receipt.accountPublicMaterialDigestSha256, + capturePolicyId: receipt.capturePolicyId, + scenario: receipt.scenario, + artifactDigestSha256: receipt.artifactDigestSha256, + now: verificationNow, + } as const; + const expectedRequest = { + runtimeEnvironment: this.config.runtimeEnvironment, + requestId: request.requestId, + sessionId: request.sessionId, + nonceDigestSha256: request.nonceDigestSha256, + idempotencyKey: request.idempotencyKey, + accountId: request.accountId, + accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, + biometricReceipt: expectedReceipt, + scenario: request.scenario, + now: verificationNow, + } as const; + if (!(await verifyStagingIssuanceSimulationRequestV0(request, expectedRequest, this.config.issuanceRequestSigner.trustRoot, this.config.biometricReceiptTrustRoot))) { + return this.issuanceUnavailable(record); + } + let response: unknown; + try { + response = await this.withTimeout(this.config.issuanceClient.issue({ + request, + expected: expectedRequest, + })); + } catch { + return this.issuanceUnavailable(record); + } + if (this.expireDuringOperation(record)) return this.status(record); + try { + assertSimulationArtifactAllowed(this.config.runtimeEnvironment, response); + if (!isRecord(response) || !nonEmpty(response.kind)) { + return this.issuanceUnavailable(record); + } + if (response.kind === STAGING_ISSUANCE_ERROR_V0) { + return this.issuanceUnavailable(record); + } + const expectedKind = record.session.issuanceScenario === "issue_success" + ? "simulated_credential_ready_v0" + : record.session.issuanceScenario === "issue_reject" + ? "simulated_issuance_rejected_v0" + : "simulated_issuance_unavailable_v0"; + if (response.kind !== expectedKind) return this.issuanceUnavailable(record); + if (response.kind === "simulated_issuance_rejected_v0") { + if ( + !exactKeys(response, ["kind", "reasonCode"]) || + response.reasonCode !== "scenario_issue_reject" + ) { + return this.issuanceUnavailable(record); + } + this.transition(record, "simulated_issuance_reject", "issuance_rejected"); + record.frameBundle = undefined; + this.audit(record, "issuance_finished", "issuance_rejected"); + return this.status(record); + } + if (response.kind === "simulated_issuance_unavailable_v0") { + if ( + !exactKeys(response, ["kind", "reasonCode"]) || + response.reasonCode !== "scenario_issue_unavailable" + ) { + return this.issuanceUnavailable(record); + } + return this.issuanceUnavailable(record); + } + if ( + response.kind !== "simulated_credential_ready_v0" || + !exactKeys(response, ["kind", "credential"]) + ) { + return this.issuanceUnavailable(record); + } + const credential = response.credential; + if ( + !isRecord(credential) || + typeof credential.issuedAt !== "string" || + typeof credential.expiresAt !== "string" || + Date.parse(credential.issuedAt) < Date.parse(request.requestedAt) || + Date.parse(credential.expiresAt) > Date.parse(record.session.expiresAt) + ) { + return this.issuanceUnavailable(record); + } + const valid = await verifySimulatedStagingCredentialV0(credential, { + runtimeEnvironment: this.config.runtimeEnvironment, + issuanceRequestId: request.requestId, + idempotencyKey: request.idempotencyKey, + nonceDigestSha256: request.nonceDigestSha256, + subjectAccountId: record.accountId, + accountPublicMaterialDigestSha256: record.session.accountPublicMaterialDigestSha256, + simulationReceiptId: receipt.receiptId, + now: this.now(), + }, this.config.simulatedCredentialTrustRoot); + if (!valid) return this.issuanceUnavailable(record); + this.transition(record, "simulated_credential_ready", "simulated_credential_ready"); + record.frameBundle = undefined; + this.audit(record, "issuance_finished", "simulated_credential_ready"); + return { + ...this.status(record), + credential: credential as unknown as SimulatedStagingCredentialV0, + }; + } catch { + return this.issuanceUnavailable(record); + } + } + + private unavailable(record: StoredSessionV0, code: "simulation_unavailable"): SubmitCaptureResultV0 { + this.transition(record, "simulated_unavailable", code); + this.audit(record, "simulation_finished", code); + return this.status(record); + } + + private issuanceUnavailable(record: StoredSessionV0): SubmitCaptureResultV0 { + this.transition(record, "simulated_issuance_unavailable", "issuance_unavailable"); + this.audit(record, "issuance_finished", "issuance_unavailable"); + return this.status(record); + } + + private expireDuringOperation(record: StoredSessionV0): boolean { + if (Date.parse(record.session.expiresAt) > this.clock.now().getTime()) return false; + this.transition(record, "expired", "expired"); + record.frameBundle = undefined; + this.purgeSessionResponses(record.session.sessionId); + this.audit(record, "session_expired"); + return true; + } + + private parseAuthOnly(body: unknown): BrowserAuthFieldsV0 { + if ( + !isRecord(body) || + !exactKeys(body, ["sessionId", "browserHandle"]) || + !nonEmpty(body.sessionId) || + !nonEmpty(body.browserHandle) + ) { + throw new GatewayErrorV0("invalid_request", 400); + } + return body as unknown as BrowserAuthFieldsV0; + } + + private async authenticate(fields: BrowserAuthFieldsV0, context: RequestContextV0): Promise { + const record = this.repository.get(fields.sessionId); + if (record === undefined) throw new GatewayErrorV0("not_found", 404); + if (context.origin !== record.origin || context.rpId !== record.rpId) { + throw new GatewayErrorV0("origin_forbidden", 403); + } + const payload = await this.handles.open(fields.browserHandle); + if ( + payload === null || + payload.sessionId !== record.session.sessionId || + payload.origin !== record.origin || + payload.rpId !== record.rpId || + payload.expiresAt !== record.session.expiresAt + ) { + throw new GatewayErrorV0("unauthorized", 401); + } + this.expireIfNeeded(record); + return record; + } + + private expireIfNeeded(record: StoredSessionV0): void { + if (Date.parse(record.session.expiresAt) > this.clock.now().getTime()) return; + if (!TERMINAL_STATES.has(record.session.state)) { + this.transition(record, "expired", "expired"); + record.frameBundle = undefined; + this.audit(record, "session_expired"); + } + this.purgeSessionResponses(record.session.sessionId); + throw new GatewayErrorV0("expired", 410); + } + + private transition(record: StoredSessionV0, next: EnrollmentSessionStateV2, code: GatewayStatusCodeV0): void { + if (!isEnrollmentTransitionAllowedV2(record.session.state, next)) { + throw new GatewayErrorV0("invalid_state", 409); + } + record.session = Object.freeze({ ...record.session, state: next }); + record.statusCode = code; + } + + private status(record: StoredSessionV0): SessionStatusV0 { + return Object.freeze({ + session: record.session, + code: record.statusCode, + retryable: RETRYABLE_CODES.has(record.statusCode), + }); + } + + private runSessionMutation( + record: StoredSessionV0, + kind: "passkey" | "prepare" | "capture" | "retry" | "cancel", + requestDigest: HexSha256, + operation: () => Promise, + ): Promise { + const sessionId = record.session.sessionId; + const active = this.mutationInFlight.get(sessionId); + if (active !== undefined) { + if (active.kind !== kind || active.digest !== requestDigest) { + throw new GatewayErrorV0("binding_mismatch", 409); + } + return active.result as Promise; + } + const result = Promise.resolve().then(operation); + this.mutationInFlight.set(sessionId, { + kind, + digest: requestDigest, + result, + }); + return result.finally(() => { + if (this.mutationInFlight.get(sessionId)?.result === result) { + this.mutationInFlight.delete(sessionId); + } + }); + } + + private cachedResponse( + cacheKey: string, + requestDigest: HexSha256, + ): SubmitCaptureResultV0 | undefined { + const cached = this.responseCache.get(cacheKey); + if (cached === undefined) return undefined; + if (Date.parse(cached.expiresAt) <= this.clock.now().getTime()) { + this.responseCache.delete(cacheKey); + return undefined; + } + if (cached.digest !== requestDigest) { + throw new GatewayErrorV0("binding_mismatch", 409); + } + return cached.result; + } + + private cacheResponse( + cacheKey: string, + requestDigest: HexSha256, + expiresAt: string, + result: SubmitCaptureResultV0, + ): SubmitCaptureResultV0 { + const immutableResult = result.credential === undefined + ? Object.freeze({ ...result }) + : Object.freeze({ + ...result, + credential: Object.freeze({ + ...result.credential, + claims: Object.freeze({ ...result.credential.claims }), + authentication: Object.freeze({ ...result.credential.authentication }), + }), + }); + if (Date.parse(expiresAt) > this.clock.now().getTime()) { + this.responseCache.set(cacheKey, { + digest: requestDigest, + expiresAt, + result: immutableResult, + }); + } + return immutableResult; + } + + private purgeResponseCache(nowMs: number): void { + for (const [cacheKey, cached] of this.responseCache) { + if (Date.parse(cached.expiresAt) <= nowMs) this.responseCache.delete(cacheKey); + } + } + + private purgeSessionResponses(sessionId: string): void { + const prefix = `${sessionId}:`; + for (const cacheKey of this.responseCache.keys()) { + if (cacheKey.startsWith(prefix)) this.responseCache.delete(cacheKey); + } + } + + private async createResult(record: StoredSessionV0): Promise { + const browserHandle = await this.handles.seal({ + sessionId: record.session.sessionId, + rpId: record.rpId, + origin: record.origin, + expiresAt: record.session.expiresAt, + }); + return Object.freeze({ + ...this.status(record), + browserHandle, + capturePolicy: this.policyFor(record), + }); + } + + private policyFor(record: StoredSessionV0): SimulationCapturePolicyV0 { + return Object.freeze({ ...this.config.capturePolicy, expiresAt: record.session.expiresAt }); + } + + private assertAvailable(): void { + if (!this.isAvailable()) throw new GatewayErrorV0("gateway_disabled", 404); + } + + private isAvailable(): boolean { + return this.config.enabled && this.config.runtimeEnvironment === "staging"; + } + + private assertBody(body: unknown): void { + if (bytesForBodyLimit(body) > this.config.maxRequestBodyBytes) { + throw new GatewayErrorV0("body_too_large", 413); + } + } + + private now(): string { + return this.clock.now().toISOString(); + } + + private async withOperation(operation: () => Promise): Promise { + if (this.activeOperations >= this.config.maxConcurrentOperations) { + throw new GatewayErrorV0("resource_busy", 429); + } + this.activeOperations += 1; + try { + return await operation(); + } finally { + this.activeOperations -= 1; + } + } + + private async withTimeout(operation: Promise): Promise { + let timer: ReturnType | undefined; + const timeout = new Promise((_resolve, reject) => { + timer = setTimeout(() => reject(new GatewayErrorV0("resource_busy", 503)), this.config.simulatorTimeoutMs); + }); + try { + return await Promise.race([operation, timeout]); + } finally { + if (timer !== undefined) clearTimeout(timer); + } + } + + private async safeReady(check: () => boolean | Promise): Promise { + try { + return await this.withTimeout(Promise.resolve(check())); + } catch { + return false; + } + } + + private purposeKeyMaterialsAreDistinct(): boolean { + try { + const fingerprints = [ + this.config.biometricRequestSigner.trustRoot, + this.config.biometricReceiptTrustRoot, + this.config.issuanceRequestSigner.trustRoot, + this.config.simulatedCredentialTrustRoot, + ].map((trustRoot) => { + const bytes = base64UrlToBytes(trustRoot.publicKeyRawBase64Url); + if (bytes.byteLength !== 32) throw new TypeError("invalid_staging_public_key"); + return Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join(""); + }); + return new Set(fingerprints).size === fingerprints.length; + } catch { + return false; + } + } + + private codeForOutcome(outcome: SimulationReceiptV0["outcome"]): GatewayStatusCodeV0 { + return outcome === "simulated_pass" + ? "simulation_pass" + : outcome === "simulated_reject" + ? "simulation_reject" + : outcome === "simulated_retry" + ? "simulation_retry" + : "simulation_unavailable"; + } + + private audit(record: StoredSessionV0, event: Parameters["record"]>[0]["event"], code?: GatewayStatusCodeV0): void { + try { + this.config.auditSink?.record(Object.freeze({ + event, + sessionId: record.session.sessionId, + state: record.session.state, + ...(code === undefined ? {} : { code }), + })); + } catch { + // Audit transport failures cannot alter the authoritative session outcome. + } + } +} + +export function rejectSimulationArtifactAtProductionBoundary(runtimeEnvironment: "development" | "test" | "staging" | "production", artifact: unknown): void { + assertSimulationArtifactAllowed(runtimeEnvironment, artifact); +} diff --git a/services/session-gateway/src/index.ts b/services/session-gateway/src/index.ts new file mode 100644 index 0000000..c841597 --- /dev/null +++ b/services/session-gateway/src/index.ts @@ -0,0 +1,5 @@ +export * from "./crypto"; +export * from "./errors"; +export * from "./gateway"; +export * from "./repository"; +export * from "./types"; diff --git a/services/session-gateway/src/repository.ts b/services/session-gateway/src/repository.ts new file mode 100644 index 0000000..cb9ee67 --- /dev/null +++ b/services/session-gateway/src/repository.ts @@ -0,0 +1,34 @@ +import type { SessionRepositoryV0, StoredSessionV0 } from "./types"; + +export class InMemorySessionRepositoryV0 implements SessionRepositoryV0 { + private readonly records = new Map(); + private readonly creationKeys = new Map(); + + get(sessionId: string): StoredSessionV0 | undefined { + return this.records.get(sessionId); + } + + put(record: StoredSessionV0): void { + this.records.set(record.session.sessionId, record); + this.creationKeys.set( + `${record.rpId}\u0000${record.session.idempotencyKey}`, + record.session.sessionId, + ); + } + + findByCreationIdempotency(rpId: string, idempotencyKey: string): StoredSessionV0 | undefined { + const sessionId = this.creationKeys.get(`${rpId}\u0000${idempotencyKey}`); + return sessionId === undefined ? undefined : this.records.get(sessionId); + } + + purgeExpired(nowMs: number): number { + let purged = 0; + for (const [sessionId, record] of this.records) { + if (Date.parse(record.session.expiresAt) > nowMs) continue; + this.records.delete(sessionId); + this.creationKeys.delete(`${record.rpId}\u0000${record.session.idempotencyKey}`); + purged += 1; + } + return purged; + } +} diff --git a/services/session-gateway/src/types.ts b/services/session-gateway/src/types.ts new file mode 100644 index 0000000..f0f7cfe --- /dev/null +++ b/services/session-gateway/src/types.ts @@ -0,0 +1,171 @@ +import type { + BiometricSimulationScenarioV0, + EnrollmentSessionV2, + FrameBundleV0, + HexSha256, + IssuanceSimulationScenarioV0, + RuntimeEnvironment, + SimulatedStagingCredentialV0, + SimulationCapturePolicyV0, + SimulationReceiptV0, + StagingEd25519TrustRootV0, +} from "../../../packages/contracts/src"; +import type { BiometricVerificationPortV0 } from "../../../packages/biometric-verification-port/src"; +import type { StagingIssuancePortV0 } from "../../../packages/staging-issuance-port/src"; + +export interface RequestContextV0 { + readonly origin: string; + readonly rpId: string; + readonly authenticatedServerContext?: unknown; +} + +export interface VerifiedRpRequestV0 { + readonly rpId: string; + readonly origin: string; + readonly returnTarget: string; + readonly requestDigestSha256: HexSha256; +} + +export interface RpRequestVerifierV0 { + verify(request: unknown, context: RequestContextV0, now: string): Promise; +} + +export interface BrowserCeremonyVerifierV0 { + verify( + ceremony: unknown, + expected: { + readonly sessionId: string; + readonly rpId: string; + readonly origin: string; + readonly accountPublicMaterialDigestSha256: HexSha256; + readonly now: string; + }, + ): Promise; +} + +export interface ServerScenarioSelectionV0 { + readonly biometric: BiometricSimulationScenarioV0; + readonly issuance: IssuanceSimulationScenarioV0; +} + +export interface ServerScenarioSelectorV0 { + select(input: { + readonly verifiedRpRequest: VerifiedRpRequestV0; + readonly authenticatedServerContext: unknown; + }): Promise; +} + +export interface GatewayRequestSignerV0 { + readonly trustRoot: StagingEd25519TrustRootV0; + sign(preimage: Uint8Array): Promise; +} + +export interface GatewayAuditEventV0 { + readonly event: + | "session_created" + | "passkey_complete" + | "capture_ready" + | "simulation_finished" + | "issuance_finished" + | "session_expired" + | "session_cancelled"; + readonly sessionId: string; + readonly state: EnrollmentSessionV2["state"]; + readonly code?: GatewayStatusCodeV0; +} + +export interface GatewayAuditSinkV0 { + record(event: GatewayAuditEventV0): void; +} + +export interface GatewayClockV0 { + now(): Date; +} + +export type CapturePolicyTemplateV0 = Omit; + +export interface SessionGatewayConfigV0 { + readonly runtimeEnvironment: RuntimeEnvironment; + readonly enabled: boolean; + readonly sessionTtlMs: number; + readonly maxRequestBodyBytes: number; + readonly maxConcurrentOperations: number; + readonly simulatorTimeoutMs: number; + readonly capturePolicy: CapturePolicyTemplateV0; + readonly allowedSyntheticFixtureIds: readonly string[]; + readonly handleKey: CryptoKey; + readonly rpRequestVerifier: RpRequestVerifierV0; + readonly ceremonyVerifier: BrowserCeremonyVerifierV0; + readonly scenarioSelector: ServerScenarioSelectorV0; + readonly biometricRequestSigner: GatewayRequestSignerV0; + readonly issuanceRequestSigner: GatewayRequestSignerV0; + readonly biometricReceiptTrustRoot: StagingEd25519TrustRootV0; + readonly simulatedCredentialTrustRoot: StagingEd25519TrustRootV0; + readonly biometricClient: BiometricVerificationPortV0; + readonly issuanceClient: StagingIssuancePortV0; + readonly auditSink?: GatewayAuditSinkV0; + readonly clock?: GatewayClockV0; +} + +export type GatewayStatusCodeV0 = + | "created" + | "passkey_complete" + | "capture_ready" + | "simulation_pass" + | "simulation_reject" + | "simulation_retry" + | "simulation_unavailable" + | "issuance_rejected" + | "issuance_unavailable" + | "simulated_credential_ready" + | "cancelled" + | "expired"; + +export interface SessionStatusV0 { + readonly session: EnrollmentSessionV2; + readonly code: GatewayStatusCodeV0; + readonly retryable: boolean; +} + +export interface CreateSessionResultV0 extends SessionStatusV0 { + readonly browserHandle: string; + readonly capturePolicy: SimulationCapturePolicyV0; +} + +export interface SubmitCaptureResultV0 extends SessionStatusV0 { + readonly credential?: SimulatedStagingCredentialV0; +} + +export interface StoredSessionV0 { + session: EnrollmentSessionV2; + readonly rpId: string; + readonly origin: string; + readonly returnTarget: string; + readonly accountId: string; + nonceConsumed: boolean; + captureAttempt: number; + frameBundle?: FrameBundleV0; + artifactDigestSha256?: HexSha256; + biometricRequestId?: string; + biometricIdempotencyKey?: string; + biometricRequestedAt?: string; + receiptId?: string; + issuanceRequestId?: string; + issuanceIdempotencyKey?: string; + issuanceRequestedAt?: string; + statusCode: GatewayStatusCodeV0; + readonly operationResults: Map; + readonly operationRequestDigests: Map; +} + +export interface SessionRepositoryV0 { + get(sessionId: string): StoredSessionV0 | undefined; + put(record: StoredSessionV0): void; + findByCreationIdempotency(rpId: string, idempotencyKey: string): StoredSessionV0 | undefined; + purgeExpired(nowMs: number): number; +} + +export interface ExpectedReceiptContextV0 { + readonly receipt: SimulationReceiptV0; + readonly frameBundle: FrameBundleV0; +} diff --git a/services/session-gateway/test/helpers.ts b/services/session-gateway/test/helpers.ts new file mode 100644 index 0000000..e7bcd1f --- /dev/null +++ b/services/session-gateway/test/helpers.ts @@ -0,0 +1,313 @@ +import { + BIOMETRIC_SCENARIO_OUTCOME_V0, + BIOMETRIC_SCENARIO_REASON_V0, + BIOMETRIC_SIMULATOR_AUDIENCE_V0, + BIOMETRIC_VERIFICATION_PORT_V0, + bytesToArrayBuffer, + bytesToBase64Url, + computeFrameBundleDigestV0, + FRAME_BUNDLE_V0, + FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + SIMULATED_STAGING_AUDIENCE_V0, + SIMULATED_STAGING_CREDENTIAL_V0, + SIMULATED_STAGING_ISSUER_V0, + SIMULATION_CAPTURE_POLICY_V0, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + SIMULATION_RECEIPT_V0, + stagingSignaturePreimageV0, + STAGING_ISSUANCE_PORT_V0, + type BiometricSimulationRequestV0, + type FrameBundleV0, + type HexSha256, + type SimulatedStagingCredentialV0, + type SimulationReceiptV0, + type StagingAuthenticationV0, + type StagingEd25519TrustRootV0, + type StagingIssuanceSimulationRequestV0, +} from "../../../packages/contracts/src"; +import { + BIOMETRIC_SIMULATION_ERROR_V0, + SIMULATION_RECEIPT_READY_V0, + type BiometricVerificationInvocationV0, + type BiometricVerificationResultV0, +} from "../../../packages/biometric-verification-port/src"; +import { + STAGING_ISSUANCE_ERROR_V0, + type StagingIssuanceInvocationV0, + type StagingIssuancePortResultV0, +} from "../../../packages/staging-issuance-port/src"; +import { + SessionGatewayV0, + sha256Text, + type GatewayAuditEventV0, + type GatewayRequestSignerV0, + type SessionGatewayConfigV0, + type SessionRepositoryV0, +} from "../src"; + +export const ACCOUNT_DIGEST = "a".repeat(64) as HexSha256; +export const RP_DIGEST = "b".repeat(64) as HexSha256; +export const FRAME_DIGEST = "c".repeat(64) as HexSha256; +export const CONTEXT = Object.freeze({ + origin: "https://auth.example.test", + rpId: "auth.example.test", + authenticatedServerContext: "server-authenticated", +}); + +export class MutableClock { + constructor(private timestamp = Date.parse("2026-09-02T18:00:00.000Z")) {} + now(): Date { return new Date(this.timestamp); } + advance(milliseconds: number): void { this.timestamp += milliseconds; } +} + +export interface TestSigner extends GatewayRequestSignerV0 { + readonly privateKey: CryptoKey; +} + +export async function createSigner(audience: string, keyId: string): Promise { + const pair = (await crypto.subtle.generateKey({ name: "Ed25519" }, true, ["sign", "verify"])) as CryptoKeyPair; + const publicKey = new Uint8Array(await crypto.subtle.exportKey("raw", pair.publicKey)); + return { + privateKey: pair.privateKey, + trustRoot: { + environment: SIMULATION_ENVIRONMENT, + audience, + keyId, + publicKeyRawBase64Url: bytesToBase64Url(publicKey), + }, + async sign(preimage: Uint8Array): Promise { + const signature = await crypto.subtle.sign({ name: "Ed25519" }, pair.privateKey, bytesToArrayBuffer(preimage)); + return bytesToBase64Url(new Uint8Array(signature)); + }, + }; +} + +async function sign(value: T, signer: TestSigner): Promise { + const unsigned = { + ...value, + authentication: { + scheme: "staging-ed25519" as const, + keyId: signer.trustRoot.keyId, + signatureBase64Url: "pending", + }, + }; + return { + ...unsigned, + authentication: { + ...unsigned.authentication, + signatureBase64Url: await signer.sign(stagingSignaturePreimageV0(unsigned as unknown as Record)), + }, + } as T; +} + +export interface Harness { + readonly gateway: SessionGatewayV0; + readonly config: SessionGatewayConfigV0; + readonly clock: MutableClock; + readonly events: GatewayAuditEventV0[]; + readonly calls: { + biometric: number; + issuance: number; + biometricRequests: BiometricSimulationRequestV0[]; + issuanceRequests: StagingIssuanceSimulationRequestV0[]; + }; + biometricMode: "normal" | "throw" | "malformed" | "tampered" | "port_error"; + issuanceMode: "normal" | "throw" | "malformed" | "tampered" | "wrong_outcome" | "port_error"; + biometricBarrier?: { + readonly started: () => void; + readonly release: Promise; + }; +} + +export async function makeHarness(overrides: Partial = {}, scenarios: { biometric: "happy_path" | "spoof_reject" | "capture_retry" | "dependency_unavailable"; issuance: "issue_success" | "issue_reject" | "issue_unavailable" } = { biometric: "happy_path", issuance: "issue_success" }, repository?: SessionRepositoryV0): Promise { + const clock = new MutableClock(); + const [gatewayBiometric, receiptSigner, gatewayIssuance, credentialSigner] = await Promise.all([ + createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "gateway-biometric"), + createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "receipt-signer"), + createSigner("world_id_web_authenticator_issuance_simulator_staging", "gateway-issuance"), + createSigner(SIMULATED_STAGING_AUDIENCE_V0, "credential-signer"), + ]); + const handleKey = await crypto.subtle.generateKey({ name: "HMAC", hash: "SHA-256", length: 256 }, false, ["sign"]); + const events: GatewayAuditEventV0[] = []; + const calls = { biometric: 0, issuance: 0, biometricRequests: [] as BiometricSimulationRequestV0[], issuanceRequests: [] as StagingIssuanceSimulationRequestV0[] }; + const harness = { biometricMode: "normal", issuanceMode: "normal" } as Harness; + const config: SessionGatewayConfigV0 = { + runtimeEnvironment: "staging", + enabled: true, + sessionTtlMs: 60_000, + maxRequestBodyBytes: 16_384, + maxConcurrentOperations: 2, + simulatorTimeoutMs: 1_000, + capturePolicy: { + version: SIMULATION_CAPTURE_POLICY_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + policyId: "policy-v0", + dataMode: "metadata_only", + encoding: "rgba8", + minFrames: 1, + maxFrames: 2, + maxWidth: 1024, + maxHeight: 1024, + maxFrameBytes: 4_194_304, + maxTotalBytes: 8_388_608, + captureOffsetsAreDiagnosticOnly: true, + arrayOrderHasBiometricMeaning: false, + qualityPolicyId: "quality-v0", + }, + allowedSyntheticFixtureIds: ["fixture-neutral-v0"], + handleKey, + rpRequestVerifier: { + async verify(request, context) { + if (request !== "signed-rp-request" || context.origin !== CONTEXT.origin || context.rpId !== CONTEXT.rpId) return null; + return { rpId: CONTEXT.rpId, origin: CONTEXT.origin, returnTarget: "https://rp.example.test/return", requestDigestSha256: RP_DIGEST }; + }, + }, + ceremonyVerifier: { async verify(ceremony) { return ceremony === "valid-ceremony"; } }, + scenarioSelector: { + async select(input) { + if (input.authenticatedServerContext !== "server-authenticated") throw new Error("unauthenticated selector context"); + return scenarios; + }, + }, + biometricRequestSigner: gatewayBiometric, + issuanceRequestSigner: gatewayIssuance, + biometricReceiptTrustRoot: receiptSigner.trustRoot, + simulatedCredentialTrustRoot: credentialSigner.trustRoot, + biometricClient: { + readiness() { return { ready: true }; }, + async verify(invocation: BiometricVerificationInvocationV0): Promise { + const request = invocation.request as BiometricSimulationRequestV0; + calls.biometric += 1; + calls.biometricRequests.push(request); + harness.biometricBarrier?.started(); + if (harness.biometricBarrier !== undefined) { + await harness.biometricBarrier.release; + } + if (harness.biometricMode === "throw") throw new Error("untrusted upstream details"); + if (harness.biometricMode === "port_error") { + return { kind: BIOMETRIC_SIMULATION_ERROR_V0, reasonCode: "service_not_ready" }; + } + if (harness.biometricMode === "malformed") { + return { outcome: "simulated_pass" } as unknown as BiometricVerificationResultV0; + } + const receipt: SimulationReceiptV0 = await sign({ + kind: SIMULATION_RECEIPT_V0, + version: BIOMETRIC_VERIFICATION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, + receiptId: `receipt-${request.requestId}`, + requestId: request.requestId, + simulatorVersion: "test-simulator-v0", + scenario: request.scenario, + sessionId: request.sessionId, + nonceDigestSha256: request.nonceDigestSha256, + idempotencyKey: request.idempotencyKey, + accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, + capturePolicyId: request.capturePolicyId, + artifactDigestSha256: request.frameBundle.artifactDigestSha256, + outcome: BIOMETRIC_SCENARIO_OUTCOME_V0[request.scenario], + reasonCode: BIOMETRIC_SCENARIO_REASON_V0[request.scenario], + issuedAt: clock.now().toISOString(), + expiresAt: request.expiresAt, + authentication: { scheme: "staging-ed25519", keyId: "pending", signatureBase64Url: "pending" }, + }, receiptSigner); + return { + kind: SIMULATION_RECEIPT_READY_V0, + receipt: harness.biometricMode === "tampered" + ? { ...receipt, sessionId: "tampered" } + : receipt, + } as BiometricVerificationResultV0; + }, + }, + issuanceClient: { + readiness() { return { ready: true }; }, + async issue(invocation: StagingIssuanceInvocationV0): Promise { + const request = invocation.request as StagingIssuanceSimulationRequestV0; + calls.issuance += 1; + calls.issuanceRequests.push(request); + if (harness.issuanceMode === "throw") throw new Error("untrusted issuer details"); + if (harness.issuanceMode === "port_error") { + return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "service_not_ready" }; + } + if (harness.issuanceMode === "malformed") { + return { kind: "simulated_credential_ready_v0", credential: { claims: {} } } as unknown as StagingIssuancePortResultV0; + } + if (harness.issuanceMode === "wrong_outcome") return { kind: "simulated_issuance_rejected_v0", reasonCode: "scenario_issue_reject" }; + if (request.scenario === "issue_reject") return { kind: "simulated_issuance_rejected_v0", reasonCode: "scenario_issue_reject" }; + if (request.scenario === "issue_unavailable") return { kind: "simulated_issuance_unavailable_v0", reasonCode: "scenario_issue_unavailable" }; + const credential: SimulatedStagingCredentialV0 = await sign({ + kind: SIMULATED_STAGING_CREDENTIAL_V0, + version: STAGING_ISSUANCE_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + credentialId: `credential-${request.requestId}`, + issuer: SIMULATED_STAGING_ISSUER_V0, + audience: SIMULATED_STAGING_AUDIENCE_V0, + issuanceRequestId: request.requestId, + idempotencyKey: request.idempotencyKey, + nonceDigestSha256: request.nonceDigestSha256, + subjectAccountId: request.accountId, + accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, + simulationReceiptId: request.biometricReceipt.receiptId, + claims: { biometricVerification: "simulated_not_performed", uniqueness: "not_performed", credentialClass: "not_selfie_check" }, + issuedAt: clock.now().toISOString(), + expiresAt: request.expiresAt, + authentication: { scheme: "staging-ed25519", keyId: "pending", signatureBase64Url: "pending" }, + }, credentialSigner); + return { + kind: "simulated_credential_ready_v0", + credential: harness.issuanceMode === "tampered" + ? { ...credential, subjectAccountId: "tampered" } + : credential, + } as StagingIssuancePortResultV0; + }, + }, + auditSink: { record(event) { events.push(event); } }, + clock, + ...overrides, + }; + Object.assign(harness, { + gateway: new SessionGatewayV0(config, repository), + config, + clock, + events, + calls, + }); + return harness; +} + +export function createBody(idempotencyKey = "create-key") { + return { rpRequest: "signed-rp-request", accountId: "account-v0", accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, idempotencyKey }; +} + +export async function reachCaptureReady(harness: Harness) { + const created = await harness.gateway.createSession(createBody(), CONTEXT); + await harness.gateway.completePasskey({ sessionId: created.session.sessionId, browserHandle: created.browserHandle, idempotencyKey: "passkey-key", ceremony: "valid-ceremony" }, CONTEXT); + const ready = await harness.gateway.prepareCapture({ sessionId: created.session.sessionId, browserHandle: created.browserHandle }, CONTEXT); + return { created, ready }; +} + +export async function makeBundle(sessionId: string, nonce: string, dataMode: "metadata_only" | "synthetic_fixture" = "metadata_only"): Promise { + const pending: FrameBundleV0 = { + kind: FRAME_BUNDLE_V0, + mode: SIMULATION_MODE, + sessionId, + policyId: "policy-v0", + accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, + nonceDigestSha256: await sha256Text(nonce), + dataMode, + frames: [{ transportIndex: 0, width: 640, height: 480, encoding: "rgba8", byteLength: 1_228_800, frameDigestSha256: FRAME_DIGEST, captureOffsetMs: 0 }], + ...(dataMode === "synthetic_fixture" ? { syntheticFixtureId: "fixture-neutral-v0" } : {}), + totalByteLength: 1_228_800, + digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + artifactDigestSha256: "0".repeat(64), + }; + return { ...pending, artifactDigestSha256: await computeFrameBundleDigestV0(pending) }; +} + +export async function submitReady(harness: Harness, ready: Awaited>["ready"], idempotencyKey = "capture-key") { + return harness.gateway.submitCapture({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey, nonceBase64Url: ready.session.nonceBase64Url, frameBundle: await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url) }, CONTEXT); +} diff --git a/services/session-gateway/test/privacy.test.ts b/services/session-gateway/test/privacy.test.ts new file mode 100644 index 0000000..5ba74ff --- /dev/null +++ b/services/session-gateway/test/privacy.test.ts @@ -0,0 +1,31 @@ +import { describe, expect, test } from "bun:test"; +import { readdir, readFile } from "node:fs/promises"; +import { join } from "node:path"; +import { GatewayErrorV0 } from "../src"; +import { CONTEXT, makeHarness, reachCaptureReady } from "./helpers"; + +describe("privacy and redaction sentinels", () => { + test("source has no network, persistent-storage, private-key literal, or raw logging path", async () => { + const sourceDirectory = join(import.meta.dir, "../src"); + const source = (await Promise.all((await readdir(sourceDirectory)).filter((name) => name.endsWith(".ts")).map((name) => readFile(join(sourceDirectory, name), "utf8")))).join("\n"); + for (const token of ["console.", "fetch(", "XMLHttpRequest", "WebSocket", "localStorage", "sessionStorage", "indexedDB", ["BEGIN", "PRIVATE", "KEY"].join(" "), ["PRIVATE", "KEY-----"].join(" "), "data:image", "createObjectURL"]) { + expect(source).not.toContain(token); + } + }); + + test("upstream errors collapse to stable codes without copied text", async () => { + const harness = await makeHarness(); + harness.biometricMode = "throw"; + const { ready } = await reachCaptureReady(harness); + const bundle = await (await import("./helpers")).makeBundle(ready.session.sessionId, ready.session.nonceBase64Url); + const result = await harness.gateway.submitCapture({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "capture", nonceBase64Url: ready.session.nonceBase64Url, frameBundle: bundle }, CONTEXT); + expect(result.code).toBe("simulation_unavailable"); + expect(JSON.stringify(result)).not.toContain("untrusted upstream details"); + }); + + test("public errors expose only stable codes", () => { + const error = new GatewayErrorV0("artifact_invalid", 400); + expect(error.toResponse()).toEqual({ code: "artifact_invalid" }); + expect(Object.keys(error.toResponse())).toEqual(["code"]); + }); +}); diff --git a/services/session-gateway/test/production-isolation.test.ts b/services/session-gateway/test/production-isolation.test.ts new file mode 100644 index 0000000..c683795 --- /dev/null +++ b/services/session-gateway/test/production-isolation.test.ts @@ -0,0 +1,45 @@ +import { describe, expect, test } from "bun:test"; +import { SimulationArtifactInProductionError } from "../../../packages/contracts/src"; +import { GatewayErrorV0, rejectSimulationArtifactAtProductionBoundary } from "../src"; +import { CONTEXT, createBody, makeHarness } from "./helpers"; + +describe("production isolation", () => { + test("makes every gateway route unavailable in production", async () => { + const harness = await makeHarness({ runtimeEnvironment: "production" }); + try { + await harness.gateway.createSession(createBody(), CONTEXT); + throw new Error("expected rejection"); + } catch (error) { + expect(error).toBeInstanceOf(GatewayErrorV0); + expect((error as GatewayErrorV0).code).toBe("gateway_disabled"); + } + expect(await harness.gateway.readiness()).toEqual({ ready: false, code: "disabled" }); + }); + + test("rejects a production route before inspecting its body", async () => { + const harness = await makeHarness({ runtimeEnvironment: "production" }); + const body = new Proxy({}, { ownKeys() { throw new Error("body inspected"); } }); + try { + await harness.gateway.createSession(body, CONTEXT); + throw new Error("expected rejection"); + } catch (error) { + expect(error).toBeInstanceOf(GatewayErrorV0); + expect((error as GatewayErrorV0).code).toBe("gateway_disabled"); + } + }); + + test.each([ + ["receipt", { kind: "simulation_receipt_v0" }], + ["credential", { kind: "simulated_staging_credential_v0" }], + ["mode", { mode: "simulation" }], + ["environment", { environment: "staging" }], + ] as const)("rejects simulation by %s discriminator before sensitive getters", (_label, discriminator) => { + const touched: string[] = []; + const artifact = Object.defineProperties({ ...discriminator }, { + outcome: { enumerable: false, get() { touched.push("outcome"); throw new Error("outcome read"); } }, + authentication: { enumerable: false, get() { touched.push("authentication"); throw new Error("authentication read"); } }, + }); + expect(() => rejectSimulationArtifactAtProductionBoundary("production", artifact)).toThrow(SimulationArtifactInProductionError); + expect(touched).toEqual([]); + }); +}); diff --git a/services/session-gateway/test/real-simulators.integration.test.ts b/services/session-gateway/test/real-simulators.integration.test.ts new file mode 100644 index 0000000..253b0c1 --- /dev/null +++ b/services/session-gateway/test/real-simulators.integration.test.ts @@ -0,0 +1,302 @@ +import { describe, expect, test } from "bun:test"; +import { + BIOMETRIC_SCENARIO_OUTCOME_V0, + BIOMETRIC_SIMULATOR_AUDIENCE_V0, + SIMULATED_STAGING_AUDIENCE_V0, + SIMULATION_ENVIRONMENT, + STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, + verifySimulatedStagingCredentialV0, + type BiometricSimulationScenarioV0, + type IssuanceSimulationScenarioV0, +} from "../../../packages/contracts/src"; +import { + SIMULATION_RECEIPT_READY_V0, + type BiometricVerificationResultV0, + type BiometricVerificationPortV0, +} from "../../../packages/biometric-verification-port/src"; +import type { StagingIssuancePortV0 } from "../../../packages/staging-issuance-port/src"; +import type { StagingIssuancePortResultV0 } from "../../../packages/staging-issuance-port/src"; +import { SimulatedBiometricVerifierV0 } from "../../simulated-biometric-verifier/src"; +import { SimulatedStagingIssuerV0 } from "../../simulated-staging-issuer/src"; +import { + ACCOUNT_DIGEST, + CONTEXT, + createSigner, + makeBundle, + makeHarness, + MutableClock, + reachCaptureReady, +} from "./helpers"; + +interface RealHarness { + readonly harness: Awaited>; + readonly biometric: SimulatedBiometricVerifierV0; + readonly issuer: SimulatedStagingIssuerV0; + readonly credentialTrustRoot: Awaited>["trustRoot"]; + readonly clock: MutableClock; + readonly issuerCalls: { count: number }; + readonly biometricResults: BiometricVerificationResultV0[]; + readonly issuanceResults: StagingIssuancePortResultV0[]; +} + +interface RealHarnessOptions { + readonly tamperReceipt?: boolean; + readonly dropReceiptOnce?: boolean; + readonly dropCredentialOnce?: boolean; +} + +async function makeRealHarness( + biometricScenario: BiometricSimulationScenarioV0, + issuanceScenario: IssuanceSimulationScenarioV0, + options: RealHarnessOptions = {}, +): Promise { + const clock = new MutableClock(); + const [gatewayBiometric, receiptSigner, gatewayIssuance, credentialSigner] = await Promise.all([ + createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "integration-gateway-biometric"), + createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "integration-receipt"), + createSigner(STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, "integration-gateway-issuance"), + createSigner(SIMULATED_STAGING_AUDIENCE_V0, "integration-credential"), + ]); + const biometric = new SimulatedBiometricVerifierV0({ + runtimeEnvironment: "staging", + gatewayTrustRoot: gatewayBiometric.trustRoot, + receiptSigner: { + environment: SIMULATION_ENVIRONMENT, + audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, + keyId: receiptSigner.trustRoot.keyId, + privateKey: receiptSigner.privateKey, + }, + simulatorVersion: "gateway-integration-biometric-v0", + receiptTtlMs: 30_000, + maxCacheEntries: 100, + allowedSyntheticFixtureIds: ["fixture-neutral-v0"], + now: () => clock.now(), + }); + const issuer = new SimulatedStagingIssuerV0({ + runtimeEnvironment: "staging", + gatewayTrustRoot: gatewayIssuance.trustRoot, + biometricReceiptTrustRoot: receiptSigner.trustRoot, + credentialSigner: { + environment: SIMULATION_ENVIRONMENT, + audience: SIMULATED_STAGING_AUDIENCE_V0, + keyId: credentialSigner.trustRoot.keyId, + privateKey: credentialSigner.privateKey, + }, + credentialTtlMs: 30_000, + maxCacheEntries: 100, + now: () => clock.now(), + }); + const biometricResults: BiometricVerificationResultV0[] = []; + const biometricPort: BiometricVerificationPortV0 = { + readiness: () => biometric.readiness(), + async verify(invocation) { + const result = await biometric.verify(invocation); + biometricResults.push(result); + if (options.dropReceiptOnce && biometricResults.length === 1) { + throw new Error("simulated_lost_receipt_response"); + } + if (!options.tamperReceipt || result.kind !== SIMULATION_RECEIPT_READY_V0) { + return result; + } + return { + ...result, + receipt: { + ...result.receipt, + authentication: { + ...result.receipt.authentication, + signatureBase64Url: `${result.receipt.authentication.signatureBase64Url}x`, + }, + }, + }; + }, + }; + const issuerCalls = { count: 0 }; + const issuanceResults: StagingIssuancePortResultV0[] = []; + const issuancePort: StagingIssuancePortV0 = { + readiness: () => issuer.readiness(), + async issue(invocation) { + issuerCalls.count += 1; + const result = await issuer.issue(invocation); + issuanceResults.push(result); + if ( + options.dropCredentialOnce && + issuanceResults.length === 1 && + result.kind === "simulated_credential_ready_v0" + ) { + throw new Error("simulated_lost_credential_response"); + } + return result; + }, + }; + const harness = await makeHarness({ + clock, + biometricRequestSigner: gatewayBiometric, + issuanceRequestSigner: gatewayIssuance, + biometricReceiptTrustRoot: receiptSigner.trustRoot, + simulatedCredentialTrustRoot: credentialSigner.trustRoot, + biometricClient: biometricPort, + issuanceClient: issuancePort, + }, { biometric: biometricScenario, issuance: issuanceScenario }); + return { + harness, + biometric, + issuer, + credentialTrustRoot: credentialSigner.trustRoot, + clock, + issuerCalls, + biometricResults, + issuanceResults, + }; +} + +async function submit(real: RealHarness, idempotencyKey = "real-capture") { + const { ready } = await reachCaptureReady(real.harness); + const frameBundle = await makeBundle( + ready.session.sessionId, + ready.session.nonceBase64Url, + ); + const request = { + sessionId: ready.session.sessionId, + browserHandle: ready.browserHandle, + idempotencyKey, + nonceBase64Url: ready.session.nonceBase64Url, + frameBundle, + }; + return { + request, + result: await real.harness.gateway.submitCapture(request, CONTEXT), + }; +} + +describe("gateway with real deterministic simulator ports", () => { + for (const [scenario, state, code] of [ + ["happy_path", "simulated_credential_ready", "simulated_credential_ready"], + ["spoof_reject", "simulated_reject", "simulation_reject"], + ["capture_retry", "simulated_retry", "simulation_retry"], + ["dependency_unavailable", "simulated_unavailable", "simulation_unavailable"], + ] as const) { + test(`runs biometric scenario ${scenario} through the typed W10 port`, async () => { + const real = await makeRealHarness(scenario, "issue_success"); + const { result } = await submit(real); + expect(result.session.biometricScenario).toBe(scenario); + expect(result.session.state).toBe(state); + expect(result.code).toBe(code); + expect(real.issuerCalls.count).toBe(scenario === "happy_path" ? 1 : 0); + if (scenario === "happy_path") expect(result.credential).toBeDefined(); + else expect(result.credential).toBeUndefined(); + }); + } + + for (const [scenario, state, code] of [ + ["issue_success", "simulated_credential_ready", "simulated_credential_ready"], + ["issue_reject", "simulated_issuance_reject", "issuance_rejected"], + ["issue_unavailable", "simulated_issuance_unavailable", "issuance_unavailable"], + ] as const) { + test(`runs issuance scenario ${scenario} through the typed W10 port`, async () => { + const real = await makeRealHarness("happy_path", scenario); + const { result } = await submit(real); + expect(result.session.issuanceScenario).toBe(scenario); + expect(result.session.state).toBe(state); + expect(result.code).toBe(code); + expect(real.issuerCalls.count).toBe(1); + }); + } + + test("returns the exact signed credential on an idempotent lost-response retry", async () => { + const real = await makeRealHarness("happy_path", "issue_success"); + const { request, result } = await submit(real); + const retry = await real.harness.gateway.submitCapture(request, CONTEXT); + expect(retry).toBe(result); + expect(retry.credential).toBeDefined(); + expect(retry.credential?.claims).toEqual({ + biometricVerification: "simulated_not_performed", + uniqueness: "not_performed", + credentialClass: "not_selfie_check", + }); + expect(await verifySimulatedStagingCredentialV0(retry.credential, { + runtimeEnvironment: "staging", + issuanceRequestId: retry.credential!.issuanceRequestId, + idempotencyKey: retry.credential!.idempotencyKey, + nonceDigestSha256: retry.credential!.nonceDigestSha256, + subjectAccountId: "account-v0", + accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, + simulationReceiptId: retry.credential!.simulationReceiptId, + now: real.clock.now().toISOString(), + }, real.credentialTrustRoot)).toBe(true); + expect(real.issuerCalls.count).toBe(1); + }); + + test("rejects a tampered nested receipt before invoking the real issuer", async () => { + const real = await makeRealHarness("happy_path", "issue_success", { + tamperReceipt: true, + }); + const { result } = await submit(real); + expect(result.session.state).toBe("simulated_unavailable"); + expect(result.code).toBe("simulation_unavailable"); + expect(result.credential).toBeUndefined(); + expect(real.issuerCalls.count).toBe(0); + }); + + test("recovers the exact W10 receipt after processing, response loss, and clock advance", async () => { + const real = await makeRealHarness("happy_path", "issue_success", { + dropReceiptOnce: true, + }); + const first = await submit(real); + expect(first.result.session.state).toBe("simulated_unavailable"); + expect(real.biometricResults).toHaveLength(1); + real.clock.advance(1_000); + const recovered = await real.harness.gateway.retryUnavailable({ + sessionId: first.result.session.sessionId, + browserHandle: first.request.browserHandle, + idempotencyKey: "recover-receipt", + }, CONTEXT); + expect(recovered.session.state).toBe("simulated_credential_ready"); + expect(real.biometricResults).toHaveLength(2); + expect(real.biometricResults[1]).toBe(real.biometricResults[0]); + if ( + real.biometricResults[0]?.kind === SIMULATION_RECEIPT_READY_V0 && + real.biometricResults[1]?.kind === SIMULATION_RECEIPT_READY_V0 + ) { + expect(real.biometricResults[1].receipt).toBe(real.biometricResults[0].receipt); + expect(real.biometricResults[1].receipt.authentication.signatureBase64Url).toBe( + real.biometricResults[0].receipt.authentication.signatureBase64Url, + ); + } + }); + + test("recovers the exact W10 credential after processing, response loss, and clock advance", async () => { + const real = await makeRealHarness("happy_path", "issue_success", { + dropCredentialOnce: true, + }); + const first = await submit(real); + expect(first.result.session.state).toBe("simulated_issuance_unavailable"); + expect(real.issuanceResults).toHaveLength(1); + real.clock.advance(1_000); + const recovered = await real.harness.gateway.retryUnavailable({ + sessionId: first.result.session.sessionId, + browserHandle: first.request.browserHandle, + idempotencyKey: "recover-credential", + }, CONTEXT); + expect(recovered.session.state).toBe("simulated_credential_ready"); + expect(real.biometricResults[1]).toBe(real.biometricResults[0]); + expect(real.issuanceResults).toHaveLength(2); + expect(real.issuanceResults[1]).toBe(real.issuanceResults[0]); + if ( + real.issuanceResults[0]?.kind === "simulated_credential_ready_v0" && + real.issuanceResults[1]?.kind === "simulated_credential_ready_v0" + ) { + expect(recovered.credential).toEqual(real.issuanceResults[0].credential); + expect(real.issuanceResults[1].credential.authentication.signatureBase64Url).toBe( + real.issuanceResults[0].credential.authentication.signatureBase64Url, + ); + } + }); + + test("reports ready only when both real W10 ports are ready", async () => { + const real = await makeRealHarness("happy_path", "issue_success"); + expect(real.biometric.readiness()).toEqual({ ready: true }); + expect(real.issuer.readiness()).toEqual({ ready: true }); + expect(await real.harness.gateway.readiness()).toEqual({ ready: true, code: "ready" }); + expect(BIOMETRIC_SCENARIO_OUTCOME_V0.happy_path).toBe("simulated_pass"); + }); +}); diff --git a/services/session-gateway/test/session-gateway.test.ts b/services/session-gateway/test/session-gateway.test.ts new file mode 100644 index 0000000..a2a4e25 --- /dev/null +++ b/services/session-gateway/test/session-gateway.test.ts @@ -0,0 +1,508 @@ +import { describe, expect, test } from "bun:test"; +import { SIMULATION_CAPTURE_POLICY_V0, SIMULATION_ENVIRONMENT, SIMULATION_MODE, validateFrameBundleV0 } from "../../../packages/contracts/src"; +import { GatewayErrorV0, type GatewayErrorCodeV0 } from "../src"; +import { ACCOUNT_DIGEST, CONTEXT, createBody, makeBundle, makeHarness, MutableClock, reachCaptureReady, submitReady } from "./helpers"; + +async function expectCode(operation: Promise, code: GatewayErrorCodeV0): Promise { + try { + await operation; + throw new Error("expected gateway rejection"); + } catch (error) { + expect(error).toBeInstanceOf(GatewayErrorV0); + expect((error as GatewayErrorV0).code).toBe(code); + expect((error as GatewayErrorV0).message).toBe(code); + } +} + +describe("session lifecycle and authenticated browser handle", () => { + test("creates a short-lived staging session with random identifiers and server-owned scenarios", async () => { + const firstHarness = await makeHarness(); + const secondHarness = await makeHarness(); + const first = await firstHarness.gateway.createSession(createBody(), CONTEXT); + const second = await secondHarness.gateway.createSession(createBody(), CONTEXT); + + expect(first.session.state).toBe("created"); + expect(first.session.mode).toBe("simulation"); + expect(first.session.environment).toBe("staging"); + expect(first.session.biometricScenario).toBe("happy_path"); + expect(first.session.sessionId).not.toBe(second.session.sessionId); + expect(first.session.nonceBase64Url).not.toBe(second.session.nonceBase64Url); + expect(first.browserHandle).not.toContain(first.session.sessionId); + expect(Date.parse(first.session.expiresAt) - Date.parse(first.session.createdAt)).toBe(60_000); + }); + + test("replays creation idempotently but rejects reuse against different account binding", async () => { + const { gateway } = await makeHarness(); + const first = await gateway.createSession(createBody(), CONTEXT); + const replay = await gateway.createSession(createBody(), CONTEXT); + expect(replay.session).toEqual(first.session); + expect(replay.browserHandle).toBe(first.browserHandle); + await expectCode(gateway.createSession({ ...createBody(), accountId: "other-account" }, CONTEXT), "binding_mismatch"); + }); + + test("singleflights concurrent creation by RP, idempotency key, and binding digest", async () => { + let announceStarted: (() => void) | undefined; + let release: (() => void) | undefined; + let selections = 0; + const started = new Promise((resolve) => { announceStarted = resolve; }); + const held = new Promise((resolve) => { release = resolve; }); + const harness = await makeHarness({ + scenarioSelector: { + async select() { + selections += 1; + announceStarted?.(); + await held; + return { biometric: "happy_path", issuance: "issue_success" }; + }, + }, + }); + const first = harness.gateway.createSession(createBody(), CONTEXT); + await started; + const duplicate = harness.gateway.createSession(createBody(), CONTEXT); + await expectCode(harness.gateway.createSession({ ...createBody(), accountId: "other-account" }, CONTEXT), "binding_mismatch"); + expect(selections).toBe(1); + release?.(); + const [firstResult, duplicateResult] = await Promise.all([first, duplicate]); + expect(duplicateResult).toBe(firstResult); + expect(duplicateResult.session.sessionId).toBe(firstResult.session.sessionId); + expect(selections).toBe(1); + }); + + test("enforces exact origin, RP, handle authentication, and expiry", async () => { + const harness = await makeHarness(); + const created = await harness.gateway.createSession(createBody(), CONTEXT); + await expectCode(harness.gateway.getStatus({ sessionId: created.session.sessionId, browserHandle: created.browserHandle }, { ...CONTEXT, origin: "https://evil.example" }), "origin_forbidden"); + await expectCode(harness.gateway.getStatus({ sessionId: created.session.sessionId, browserHandle: `${created.browserHandle}x` }, CONTEXT), "unauthorized"); + harness.clock.advance(60_000); + await expectCode(harness.gateway.getStatus({ sessionId: created.session.sessionId, browserHandle: created.browserHandle }, CONTEXT), "expired"); + expect(harness.events.at(-1)?.state).toBe("expired"); + }); + + test("requires a valid ceremony and preserves passkey idempotency", async () => { + const harness = await makeHarness(); + const created = await harness.gateway.createSession(createBody(), CONTEXT); + const request = { sessionId: created.session.sessionId, browserHandle: created.browserHandle, idempotencyKey: "passkey-key", ceremony: "valid-ceremony" }; + await expectCode(harness.gateway.completePasskey({ ...request, ceremony: "bad" }, CONTEXT), "unauthorized"); + const first = await harness.gateway.completePasskey(request, CONTEXT); + const replay = await harness.gateway.completePasskey(request, CONTEXT); + expect(first.session.state).toBe("passkey_complete"); + expect(replay).toEqual(first); + await expectCode(harness.gateway.completePasskey({ ...request, ceremony: "different-valid-shape" }, CONTEXT), "binding_mismatch"); + }); + + test("singleflights passkey completion and rejects conflicting session mutations", async () => { + let announceStarted: (() => void) | undefined; + let release: (() => void) | undefined; + let verifications = 0; + const started = new Promise((resolve) => { announceStarted = resolve; }); + const held = new Promise((resolve) => { release = resolve; }); + const harness = await makeHarness({ + ceremonyVerifier: { + async verify(ceremony) { + verifications += 1; + announceStarted?.(); + await held; + return ceremony === "valid-ceremony"; + }, + }, + }); + const created = await harness.gateway.createSession(createBody(), CONTEXT); + const request = { sessionId: created.session.sessionId, browserHandle: created.browserHandle, idempotencyKey: "passkey", ceremony: "valid-ceremony" }; + const first = harness.gateway.completePasskey(request, CONTEXT); + await started; + const duplicate = harness.gateway.completePasskey(request, CONTEXT); + await expectCode(harness.gateway.completePasskey({ ...request, ceremony: "conflict" }, CONTEXT), "binding_mismatch"); + await expectCode(harness.gateway.cancel({ sessionId: created.session.sessionId, browserHandle: created.browserHandle }, CONTEXT), "binding_mismatch"); + expect(verifications).toBe(1); + release?.(); + const [firstResult, duplicateResult] = await Promise.all([first, duplicate]); + expect(duplicateResult).toBe(firstResult); + expect(firstResult.session.state).toBe("passkey_complete"); + expect(verifications).toBe(1); + }); + + test("requires authenticated server context for scenario selection", async () => { + const harness = await makeHarness(); + await expectCode(harness.gateway.createSession(createBody(), { ...CONTEXT, authenticatedServerContext: undefined }), "unauthorized"); + }); + + test("allows only frozen transitions and rotates the nonce for an approved retake", async () => { + const harness = await makeHarness({}, { biometric: "capture_retry", issuance: "issue_success" }); + const { ready } = await reachCaptureReady(harness); + const result = await submitReady(harness, ready); + expect(result.session.state).toBe("simulated_retry"); + expect(result.retryable).toBe(true); + const retake = await harness.gateway.prepareCapture({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle }, CONTEXT); + expect(retake.session.state).toBe("capture_ready"); + expect(retake.session.nonceBase64Url).not.toBe(ready.session.nonceBase64Url); + await expectCode(harness.gateway.prepareCapture({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle }, CONTEXT), "invalid_state"); + const secondBundle = await makeBundle(retake.session.sessionId, retake.session.nonceBase64Url); + await harness.gateway.submitCapture({ sessionId: retake.session.sessionId, browserHandle: retake.browserHandle, idempotencyKey: "capture-two", nonceBase64Url: retake.session.nonceBase64Url, frameBundle: secondBundle }, CONTEXT); + expect(harness.calls.biometricRequests[1]?.requestId).not.toBe(harness.calls.biometricRequests[0]?.requestId); + expect(harness.calls.biometricRequests[1]?.idempotencyKey).not.toBe(harness.calls.biometricRequests[0]?.idempotencyKey); + }); +}); + +describe("strict metadata-only capture boundary", () => { + test("accepts a canonical metadata bundle and authenticates every downstream binding", async () => { + const harness = await makeHarness(); + const { ready } = await reachCaptureReady(harness); + const result = await submitReady(harness, ready); + expect(result.session.state).toBe("simulated_credential_ready"); + expect(result.credential?.claims.credentialClass).toBe("not_selfie_check"); + expect(harness.calls.biometric).toBe(1); + expect(harness.calls.issuance).toBe(1); + const biometric = harness.calls.biometricRequests[0]!; + const issuance = harness.calls.issuanceRequests[0]!; + expect(biometric.scenario).toBe("happy_path"); + expect(biometric.sessionId).toBe(ready.session.sessionId); + expect(biometric.accountPublicMaterialDigestSha256).toBe(ACCOUNT_DIGEST); + expect(issuance.biometricReceipt.outcome).toBe("simulated_pass"); + expect(issuance.biometricReceipt.authentication.signatureBase64Url.length).toBeGreaterThan(20); + }); + + test("rejects unknown fields, browser scenario override, media values, and arbitrary fixture names", async () => { + const harness = await makeHarness(); + const { ready } = await reachCaptureReady(harness); + const bundle = await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url); + const base = { sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "capture", nonceBase64Url: ready.session.nonceBase64Url, frameBundle: bundle }; + await expectCode(harness.gateway.submitCapture({ ...base, scenario: "spoof_reject" }, CONTEXT), "invalid_request"); + await expectCode(harness.gateway.submitCapture({ ...base, frameBundle: { ...bundle, pixels: "data:image/private;base64,AAAA" } }, CONTEXT), "artifact_invalid"); + const fixture = await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url, "synthetic_fixture"); + const arbitrary = { ...fixture, syntheticFixtureId: "https://example.test/private.mov" }; + arbitrary.artifactDigestSha256 = await (await import("../../../packages/contracts/src")).computeFrameBundleDigestV0(arbitrary); + await expectCode(harness.gateway.submitCapture({ ...base, idempotencyKey: "capture-fixture", frameBundle: arbitrary }, CONTEXT), "artifact_invalid"); + expect(harness.calls.biometric).toBe(0); + }); + + test("enforces session, account, nonce, policy, digest, dimensions, counts, and byte bindings", async () => { + const cases: Array<(bundle: Awaited>) => unknown> = [ + (bundle) => ({ ...bundle, sessionId: "wrong" }), + (bundle) => ({ ...bundle, accountPublicMaterialDigestSha256: "d".repeat(64) }), + (bundle) => ({ ...bundle, nonceDigestSha256: "d".repeat(64) }), + (bundle) => ({ ...bundle, policyId: "wrong" }), + (bundle) => ({ ...bundle, artifactDigestSha256: "d".repeat(64) }), + (bundle) => ({ ...bundle, frames: [] }), + (bundle) => ({ ...bundle, frames: [{ ...bundle.frames[0], width: 2048 }] }), + (bundle) => ({ ...bundle, totalByteLength: 8_388_609 }), + ]; + for (const mutate of cases) { + const harness = await makeHarness(); + const { ready } = await reachCaptureReady(harness); + const bundle = await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url); + await expectCode(harness.gateway.submitCapture({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "capture", nonceBase64Url: ready.session.nonceBase64Url, frameBundle: mutate(bundle) }, CONTEXT), "artifact_invalid"); + } + }); + + test("rejects oversized bodies before inspecting nested fields", async () => { + const harness = await makeHarness({ maxRequestBodyBytes: 128 }); + const sentinel = new Proxy({}, { ownKeys() { throw new Error("nested body inspected"); } }); + await expectCode(harness.gateway.createSession({ ...createBody(), padding: "x".repeat(1000) }, CONTEXT), "body_too_large"); + await expectCode(harness.gateway.createSession(sentinel, CONTEXT), "body_too_large"); + }); + + test("accepts only an allowlisted named synthetic fixture under synthetic policy", async () => { + const harness = await makeHarness({ + capturePolicy: { + version: SIMULATION_CAPTURE_POLICY_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + policyId: "policy-v0", + dataMode: "synthetic_fixture", + encoding: "rgba8", + minFrames: 1, + maxFrames: 2, + maxWidth: 1024, + maxHeight: 1024, + maxFrameBytes: 4_194_304, + maxTotalBytes: 8_388_608, + captureOffsetsAreDiagnosticOnly: true, + arrayOrderHasBiometricMeaning: false, + qualityPolicyId: "quality-v0", + }, + }); + const { ready } = await reachCaptureReady(harness); + const frameBundle = await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url, "synthetic_fixture"); + const result = await harness.gateway.submitCapture({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "capture", nonceBase64Url: ready.session.nonceBase64Url, frameBundle }, CONTEXT); + expect(result.session.state).toBe("simulated_credential_ready"); + }); + + test("consumes each nonce once while returning the same authoritative idempotent status", async () => { + const harness = await makeHarness(); + const { ready } = await reachCaptureReady(harness); + const bundle = await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url); + const request = { sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "capture", nonceBase64Url: ready.session.nonceBase64Url, frameBundle: bundle }; + const first = await harness.gateway.submitCapture(request, CONTEXT); + const replay = await harness.gateway.submitCapture(request, CONTEXT); + expect(replay.session).toEqual(first.session); + expect(replay.code).toBe("simulated_credential_ready"); + expect(replay).toBe(first); + expect(replay.credential).toEqual(first.credential); + expect(replay.credential?.authentication.signatureBase64Url).toBe( + first.credential?.authentication.signatureBase64Url, + ); + expect(Object.isFrozen(replay)).toBe(true); + expect(Object.isFrozen(replay.credential)).toBe(true); + expect(Object.isFrozen(replay.credential?.claims)).toBe(true); + expect(Object.isFrozen(replay.credential?.authentication)).toBe(true); + expect(harness.calls.biometric).toBe(1); + await expectCode(harness.gateway.submitCapture({ ...request, idempotencyKey: "different" }, CONTEXT), "replay_rejected"); + await expectCode(harness.gateway.submitCapture({ ...request, frameBundle: { ...bundle, artifactDigestSha256: "d".repeat(64) } }, CONTEXT), "binding_mismatch"); + }); + + test("singleflights identical capture and rejects a concurrent key or artifact mismatch", async () => { + const harness = await makeHarness(); + let announceStarted: (() => void) | undefined; + let release: (() => void) | undefined; + const started = new Promise((resolve) => { announceStarted = resolve; }); + const held = new Promise((resolve) => { release = resolve; }); + harness.biometricBarrier = { started: () => announceStarted?.(), release: held }; + const { ready } = await reachCaptureReady(harness); + const frameBundle = await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url); + const request = { sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "capture", nonceBase64Url: ready.session.nonceBase64Url, frameBundle }; + const first = harness.gateway.submitCapture(request, CONTEXT); + await started; + const duplicate = harness.gateway.submitCapture(request, CONTEXT); + await expectCode(harness.gateway.submitCapture({ ...request, idempotencyKey: "capture-other" }, CONTEXT), "binding_mismatch"); + await expectCode(harness.gateway.submitCapture({ ...request, frameBundle: { ...frameBundle, artifactDigestSha256: "d".repeat(64) } }, CONTEXT), "binding_mismatch"); + await expectCode(harness.gateway.cancel({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle }, CONTEXT), "binding_mismatch"); + expect(harness.calls.biometric).toBe(1); + release?.(); + const [firstResult, duplicateResult] = await Promise.all([first, duplicate]); + expect(duplicateResult).toBe(firstResult); + expect(firstResult.credential).toBeDefined(); + expect(harness.calls.biometric).toBe(1); + expect(harness.calls.issuance).toBe(1); + }); +}); + +describe("simulator failure safety and issuance gate", () => { + test.each([ + ["spoof_reject", "simulated_reject", "simulation_reject", false], + ["capture_retry", "simulated_retry", "simulation_retry", false], + ["dependency_unavailable", "simulated_unavailable", "simulation_unavailable", false], + ] as const)("maps %s deterministically without entering issuance", async (scenario, state, code, expectedIssuance) => { + const harness = await makeHarness({}, { biometric: scenario, issuance: "issue_success" }); + const { ready } = await reachCaptureReady(harness); + const result = await submitReady(harness, ready); + expect(result.session.state).toBe(state); + expect(result.code).toBe(code); + expect(harness.calls.issuance > 0).toBe(expectedIssuance); + }); + + test.each(["throw", "malformed", "tampered", "port_error"] as const)("fails closed on %s biometric response", async (mode) => { + const harness = await makeHarness(); + harness.biometricMode = mode; + const { ready } = await reachCaptureReady(harness); + const result = await submitReady(harness, ready); + expect(result.session.state).toBe("simulated_unavailable"); + expect(result.code).toBe("simulation_unavailable"); + expect(harness.calls.issuance).toBe(0); + }); + + test.each(["throw", "malformed", "tampered", "wrong_outcome", "port_error"] as const)("fails closed on %s issuance response", async (mode) => { + const harness = await makeHarness(); + harness.issuanceMode = mode; + const { ready } = await reachCaptureReady(harness); + const result = await submitReady(harness, ready); + expect(result.session.state).toBe("simulated_issuance_unavailable"); + expect(result.code).toBe("issuance_unavailable"); + expect(result.credential).toBeUndefined(); + }); + + test.each([ + ["issue_reject", "simulated_issuance_reject", "issuance_rejected", false], + ["issue_unavailable", "simulated_issuance_unavailable", "issuance_unavailable", true], + ] as const)("maps %s to its distinct V2 issuance state", async (scenario, state, code, retryable) => { + const harness = await makeHarness({}, { biometric: "happy_path", issuance: scenario }); + const { ready } = await reachCaptureReady(harness); + const result = await submitReady(harness, ready); + expect(result.session.state).toBe(state); + expect(result.code).toBe(code); + expect(result.retryable).toBe(retryable); + }); + + test("retries an unavailable call with stable downstream idempotency and authoritative status", async () => { + const harness = await makeHarness(); + harness.biometricMode = "throw"; + const { ready } = await reachCaptureReady(harness); + const first = await submitReady(harness, ready); + expect(first.retryable).toBe(true); + harness.biometricMode = "normal"; + const retry = await harness.gateway.retryUnavailable({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "retry-1" }, CONTEXT); + expect(retry.session.state).toBe("simulated_credential_ready"); + expect(harness.calls.biometricRequests[0]?.idempotencyKey).toBe(harness.calls.biometricRequests[1]?.idempotencyKey); + }); + + test("retries issuance unavailability without retaining a receipt or changing issuance idempotency", async () => { + const harness = await makeHarness(); + harness.issuanceMode = "throw"; + const { ready } = await reachCaptureReady(harness); + const first = await submitReady(harness, ready); + expect(first.session.state).toBe("simulated_issuance_unavailable"); + harness.issuanceMode = "normal"; + const retry = await harness.gateway.retryUnavailable({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "issue-retry" }, CONTEXT); + expect(retry.session.state).toBe("simulated_credential_ready"); + expect(harness.calls.issuanceRequests[0]?.idempotencyKey).toBe(harness.calls.issuanceRequests[1]?.idempotencyKey); + expect(harness.calls.biometric).toBe(2); + }); + + test("singleflights unavailable retry and rejects a concurrent retry key", async () => { + const harness = await makeHarness(); + harness.biometricMode = "throw"; + const { ready } = await reachCaptureReady(harness); + await submitReady(harness, ready); + + harness.biometricMode = "normal"; + let announceStarted: (() => void) | undefined; + let release: (() => void) | undefined; + const started = new Promise((resolve) => { announceStarted = resolve; }); + const held = new Promise((resolve) => { release = resolve; }); + harness.biometricBarrier = { started: () => announceStarted?.(), release: held }; + const retryRequest = { sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "retry" }; + const first = harness.gateway.retryUnavailable(retryRequest, CONTEXT); + await started; + const duplicate = harness.gateway.retryUnavailable(retryRequest, CONTEXT); + await expectCode(harness.gateway.retryUnavailable({ ...retryRequest, idempotencyKey: "retry-other" }, CONTEXT), "binding_mismatch"); + await expectCode(harness.gateway.cancel({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle }, CONTEXT), "binding_mismatch"); + expect(harness.calls.biometric).toBe(2); + release?.(); + const [firstResult, duplicateResult] = await Promise.all([first, duplicate]); + expect(duplicateResult).toBe(firstResult); + expect(firstResult.session.state).toBe("simulated_credential_ready"); + expect(harness.calls.biometric).toBe(2); + expect(harness.calls.issuance).toBe(1); + }); + + test("bounds simulator time and global operation concurrency", async () => { + let announceStarted: (() => void) | undefined; + let releaseCall: ((value: unknown) => void) | undefined; + const started = new Promise((resolve) => { announceStarted = resolve; }); + const held = new Promise((resolve) => { releaseCall = resolve; }); + const harness = await makeHarness({ + maxConcurrentOperations: 1, + simulatorTimeoutMs: 1_000, + biometricClient: { + readiness() { return { ready: true }; }, + async verify() { announceStarted?.(); return await held as never; }, + }, + }); + const first = await reachCaptureReady(harness); + const secondCreated = await harness.gateway.createSession(createBody("create-two"), CONTEXT); + await harness.gateway.completePasskey({ sessionId: secondCreated.session.sessionId, browserHandle: secondCreated.browserHandle, idempotencyKey: "passkey-two", ceremony: "valid-ceremony" }, CONTEXT); + const second = await harness.gateway.prepareCapture({ sessionId: secondCreated.session.sessionId, browserHandle: secondCreated.browserHandle }, CONTEXT); + const firstBundle = await makeBundle(first.ready.session.sessionId, first.ready.session.nonceBase64Url); + const firstOperation = harness.gateway.submitCapture({ sessionId: first.ready.session.sessionId, browserHandle: first.ready.browserHandle, idempotencyKey: "capture-one", nonceBase64Url: first.ready.session.nonceBase64Url, frameBundle: firstBundle }, CONTEXT); + await started; + const secondBundle = await makeBundle(second.session.sessionId, second.session.nonceBase64Url); + await expectCode(harness.gateway.submitCapture({ sessionId: second.session.sessionId, browserHandle: second.browserHandle, idempotencyKey: "capture-two", nonceBase64Url: second.session.nonceBase64Url, frameBundle: secondBundle }, CONTEXT), "resource_busy"); + releaseCall?.({}); + expect((await firstOperation).code).toBe("simulation_unavailable"); + + const timeoutHarness = await makeHarness({ + simulatorTimeoutMs: 5, + biometricClient: { readiness() { return { ready: true }; }, async verify() { return new Promise(() => undefined); } }, + }); + const timeoutReady = await reachCaptureReady(timeoutHarness); + expect((await submitReady(timeoutHarness, timeoutReady.ready)).code).toBe("simulation_unavailable"); + }); + + test("expires an in-flight session instead of converting timeout into retryable success", async () => { + const clock = new MutableClock(); + const harness = await makeHarness({ + clock, + biometricClient: { + readiness() { return { ready: true }; }, + async verify() { clock.advance(60_000); throw new Error("late response"); }, + }, + }); + const { ready } = await reachCaptureReady(harness); + const result = await submitReady(harness, ready); + expect(result.session.state).toBe("expired"); + expect(result.code).toBe("expired"); + expect(result.retryable).toBe(false); + }); + + test("exposes readiness and immediate kill-switch behavior", async () => { + const enabled = await makeHarness(); + expect(await enabled.gateway.readiness()).toEqual({ ready: true, code: "ready" }); + const disabled = await makeHarness({ enabled: false }); + expect(await disabled.gateway.readiness()).toEqual({ ready: false, code: "disabled" }); + await expectCode(disabled.gateway.createSession(createBody(), CONTEXT), "gateway_disabled"); + }); + + test("readiness rejects reused public-key material regardless of key ID", async () => { + const baseline = await makeHarness(); + const requestRoot = baseline.config.biometricRequestSigner.trustRoot; + const sameId = await makeHarness({ + biometricRequestSigner: baseline.config.biometricRequestSigner, + biometricReceiptTrustRoot: requestRoot, + }); + expect(await sameId.gateway.readiness()).toEqual({ + ready: false, + code: "dependency_unavailable", + }); + const differentId = await makeHarness({ + biometricRequestSigner: baseline.config.biometricRequestSigner, + biometricReceiptTrustRoot: { ...requestRoot, keyId: "different-purpose-id" }, + }); + expect(await differentId.gateway.readiness()).toEqual({ + ready: false, + code: "dependency_unavailable", + }); + }); +}); + +describe("storage and redaction", () => { + test("audit records contain only allowlisted transaction fields", async () => { + const harness = await makeHarness(); + const { ready } = await reachCaptureReady(harness); + await submitReady(harness, ready); + for (const event of harness.events) { + expect(Object.keys(event).every((key) => ["event", "sessionId", "state", "code"].includes(key))).toBe(true); + } + const serialized = JSON.stringify(harness.events); + expect(serialized).not.toContain("signatureBase64Url"); + expect(serialized).not.toContain("credential-"); + expect(serialized).not.toContain("frameDigestSha256"); + expect(serialized).not.toContain("valid-ceremony"); + }); + + test("purges expired records by TTL", async () => { + const harness = await makeHarness(); + await harness.gateway.createSession(createBody(), CONTEXT); + harness.clock.advance(60_000); + expect(harness.gateway.purgeExpired()).toBe(1); + expect(harness.gateway.purgeExpired()).toBe(0); + }); + + test("persisted records omit handles, ceremonies, signatures, and credential bodies", async () => { + const records: unknown[] = []; + const byId = new Map(); + const repository = { + get(sessionId: string) { return byId.get(sessionId); }, + put(record: any) { byId.set(record.session.sessionId, record); records.push(record); }, + findByCreationIdempotency() { return undefined; }, + purgeExpired() { return 0; }, + }; + const harness = await makeHarness({}, { biometric: "happy_path", issuance: "issue_success" }, repository); + const { ready } = await reachCaptureReady(harness); + await submitReady(harness, ready); + const serialized = JSON.stringify(records); + expect(serialized).not.toContain(ready.browserHandle); + expect(serialized).not.toContain("valid-ceremony"); + expect(serialized).not.toContain("signatureBase64Url"); + expect(serialized).not.toContain("credential-"); + expect(serialized).not.toContain("authentication"); + expect(serialized).toContain("biometricRequestedAt"); + expect(serialized).toContain("issuanceRequestedAt"); + }); + + test("contract validator independently rejects media and unknown descriptor fields", async () => { + const harness = await makeHarness(); + const { ready } = await reachCaptureReady(harness); + const bundle = await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url); + expect(await validateFrameBundleV0({ ...bundle, mediaUrl: "https://example.test/face" }, ready.capturePolicy)).toContain("unknown.mediaUrl"); + expect(await validateFrameBundleV0({ ...bundle, frames: [{ ...bundle.frames[0], bytesBase64: "AAAA" }] }, ready.capturePolicy)).toContain("frames[0].unknown.bytesBase64"); + }); +}); diff --git a/services/simulated-biometric-verifier/README.md b/services/simulated-biometric-verifier/README.md new file mode 100644 index 0000000..cc757bc --- /dev/null +++ b/services/simulated-biometric-verifier/README.md @@ -0,0 +1,7 @@ +# Simulated biometric verifier + +This staging-only service authenticates a gateway request, validates all server-owned bindings and the metadata-only or allowlisted synthetic artifact, then maps the authenticated scenario to one deterministic `SimulationReceiptV0` outcome. + +Configuration injects the gateway trust root, a distinct Ed25519 receipt-signing key, clock, TTL, fixture allowlist, and bounded idempotency-cache capacity. Audit events contain only an event name and optional stable reason code. Production runtime configuration rejects before reading the request. + +It does not inspect pixels and makes no camera-provenance, model, liveness, spoof-detection, or trusted-execution claim. diff --git a/services/simulated-biometric-verifier/package.json b/services/simulated-biometric-verifier/package.json new file mode 100644 index 0000000..7e424c6 --- /dev/null +++ b/services/simulated-biometric-verifier/package.json @@ -0,0 +1,13 @@ +{ + "name": "@world-id/web-authenticator-simulated-biometric-verifier", + "private": true, + "version": "0.0.0", + "type": "module", + "exports": { + ".": "./src/index.ts" + }, + "scripts": { + "test": "bun test test", + "lint": "eslint ." + } +} diff --git a/services/simulated-biometric-verifier/src/index.ts b/services/simulated-biometric-verifier/src/index.ts new file mode 100644 index 0000000..44852ba --- /dev/null +++ b/services/simulated-biometric-verifier/src/index.ts @@ -0,0 +1,263 @@ +import { + BIOMETRIC_SCENARIO_OUTCOME_V0, + BIOMETRIC_SCENARIO_REASON_V0, + BIOMETRIC_SIMULATOR_AUDIENCE_V0, + BIOMETRIC_VERIFICATION_PORT_V0, + base64UrlToBytes, + bytesToArrayBuffer, + bytesToBase64Url, + canonicalizeJsonV0, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + SIMULATION_RECEIPT_V0, + SimulationArtifactInProductionError, + stagingSignaturePreimageV0, + verifyBiometricSimulationRequestV0, + type BiometricSimulationRequestV0, + type HexSha256, + type RuntimeEnvironment, + type SimulationReceiptV0, + type StagingAuthenticationV0, + type StagingEd25519TrustRootV0, +} from "../../../packages/contracts/src"; +import { + BIOMETRIC_SIMULATION_ERROR_V0, + SIMULATION_RECEIPT_READY_V0, + type BiometricVerificationInvocationV0, + type BiometricVerificationPortV0, + type BiometricVerificationResultV0, +} from "../../../packages/biometric-verification-port/src"; + +export interface StagingEd25519SignerV0 { + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly audience: typeof BIOMETRIC_SIMULATOR_AUDIENCE_V0; + readonly keyId: string; + readonly privateKey: CryptoKey; +} + +export interface SimulatorAuditEventV0 { + readonly event: "request_rejected" | "receipt_created" | "idempotent_replay"; + readonly reasonCode?: string; +} + +export interface SimulatedBiometricVerifierConfigV0 { + readonly runtimeEnvironment: RuntimeEnvironment; + readonly gatewayTrustRoot: StagingEd25519TrustRootV0; + readonly receiptSigner: StagingEd25519SignerV0; + readonly simulatorVersion: string; + readonly receiptTtlMs: number; + readonly maxCacheEntries: number; + readonly allowedSyntheticFixtureIds: readonly string[]; + readonly now: () => Date; + readonly audit?: (event: SimulatorAuditEventV0) => void; +} + +interface CachedResult { + readonly fingerprint: string; + readonly requestId: string; + readonly result: BiometricVerificationResultV0; + readonly expiresAtMs: number; +} + +const invalidRequest = (): BiometricVerificationResultV0 => ({ + kind: BIOMETRIC_SIMULATION_ERROR_V0, + reasonCode: "invalid_request", +}); + +async function sha256Hex(value: string): Promise { + const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value)); + return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join(""); +} + +function signerIsReady(signer: StagingEd25519SignerV0): boolean { + return ( + signer.environment === SIMULATION_ENVIRONMENT && + signer.audience === BIOMETRIC_SIMULATOR_AUDIENCE_V0 && + signer.keyId.length > 0 && + signer.privateKey.type === "private" && + signer.privateKey.algorithm.name === "Ed25519" && + signer.privateKey.usages.includes("sign") + ); +} + +function trustRootIsReady(trustRoot: StagingEd25519TrustRootV0): boolean { + try { + return ( + trustRoot.environment === SIMULATION_ENVIRONMENT && + trustRoot.audience === BIOMETRIC_SIMULATOR_AUDIENCE_V0 && + trustRoot.keyId.length > 0 && + base64UrlToBytes(trustRoot.publicKeyRawBase64Url).byteLength === 32 + ); + } catch { + return false; + } +} + +function emitAudit( + audit: SimulatedBiometricVerifierConfigV0["audit"], + event: SimulatorAuditEventV0, +): void { + try { + audit?.(Object.freeze(event)); + } catch { + // Audit transport failures never change a simulator result or expose their free-text error. + } +} + +async function signReceipt( + receipt: SimulationReceiptV0, + signer: StagingEd25519SignerV0, +): Promise { + const signature = await crypto.subtle.sign( + { name: "Ed25519" }, + signer.privateKey, + bytesToArrayBuffer(stagingSignaturePreimageV0(receipt as unknown as Record)), + ); + return { + ...receipt, + authentication: { + ...receipt.authentication, + signatureBase64Url: bytesToBase64Url(new Uint8Array(signature)), + }, + }; +} + +export class SimulatedBiometricVerifierV0 implements BiometricVerificationPortV0 { + readonly #config: SimulatedBiometricVerifierConfigV0; + readonly #byIdempotencyKey = new Map(); + readonly #requestIds = new Map(); + + constructor(config: SimulatedBiometricVerifierConfigV0) { + this.#config = config; + } + + readiness(): Readonly<{ ready: boolean; reasonCode?: "service_not_ready" }> { + const ready = + this.#config.runtimeEnvironment === "staging" && + trustRootIsReady(this.#config.gatewayTrustRoot) && + signerIsReady(this.#config.receiptSigner) && + this.#config.receiptSigner.keyId !== this.#config.gatewayTrustRoot.keyId && + this.#config.simulatorVersion.length > 0 && + this.#config.allowedSyntheticFixtureIds.every( + (fixtureId) => fixtureId.length > 0 && !fixtureId.includes("://"), + ) && + new Set(this.#config.allowedSyntheticFixtureIds).size === + this.#config.allowedSyntheticFixtureIds.length && + Number.isSafeInteger(this.#config.receiptTtlMs) && + this.#config.receiptTtlMs > 0 && + Number.isSafeInteger(this.#config.maxCacheEntries) && + this.#config.maxCacheEntries > 0; + return Object.freeze(ready ? { ready: true } : { ready: false, reasonCode: "service_not_ready" }); + } + + async verify(invocation: BiometricVerificationInvocationV0): Promise { + // Production isolation must precede every request getter, including outcome/authentication sentinels. + if (this.#config.runtimeEnvironment === "production") { + throw new SimulationArtifactInProductionError(); + } + if (!this.readiness().ready) return { kind: BIOMETRIC_SIMULATION_ERROR_V0, reasonCode: "service_not_ready" }; + + try { + const now = this.#config.now(); + const expected = { ...invocation.expected, runtimeEnvironment: "staging" as const, now: now.toISOString() }; + if (!(await verifyBiometricSimulationRequestV0( + invocation.request, + expected, + invocation.capturePolicy, + this.#config.gatewayTrustRoot, + ))) { + emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "invalid_request" }); + return invalidRequest(); + } + + const request = invocation.request as BiometricSimulationRequestV0; + if ( + request.frameBundle.dataMode === "synthetic_fixture" && + (request.frameBundle.syntheticFixtureId === undefined || + !this.#config.allowedSyntheticFixtureIds.includes(request.frameBundle.syntheticFixtureId)) + ) { + emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "invalid_request" }); + return invalidRequest(); + } + const fingerprint = await sha256Hex(canonicalizeJsonV0(request)); + for (const [key, entry] of this.#byIdempotencyKey) { + if (entry.expiresAtMs <= now.getTime()) { + this.#byIdempotencyKey.delete(key); + this.#requestIds.delete(entry.requestId); + } + } + const cached = this.#byIdempotencyKey.get(request.idempotencyKey); + if (cached) { + if (cached.fingerprint !== fingerprint || cached.requestId !== request.requestId) { + emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "idempotency_conflict" }); + return { kind: BIOMETRIC_SIMULATION_ERROR_V0, reasonCode: "idempotency_conflict" }; + } + emitAudit(this.#config.audit, { event: "idempotent_replay" }); + return cached.result; + } + const knownIdempotencyKey = this.#requestIds.get(request.requestId); + if (knownIdempotencyKey !== undefined && knownIdempotencyKey !== request.idempotencyKey) { + emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "request_replay" }); + return { kind: BIOMETRIC_SIMULATION_ERROR_V0, reasonCode: "request_replay" }; + } + if (this.#byIdempotencyKey.size >= this.#config.maxCacheEntries) { + emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "service_not_ready" }); + return { kind: BIOMETRIC_SIMULATION_ERROR_V0, reasonCode: "service_not_ready" }; + } + + const issuedAt = now.toISOString(); + const expiresAt = new Date( + Math.min(Date.parse(request.expiresAt), now.getTime() + this.#config.receiptTtlMs), + ).toISOString(); + if (Date.parse(expiresAt) <= now.getTime()) return invalidRequest(); + const receiptId = `sim-receipt-${(await sha256Hex(`biometric-receipt-v0:${fingerprint}`)).slice(0, 32)}`; + const unsigned: SimulationReceiptV0 = { + kind: SIMULATION_RECEIPT_V0, + version: BIOMETRIC_VERIFICATION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, + receiptId, + requestId: request.requestId, + simulatorVersion: this.#config.simulatorVersion, + scenario: request.scenario, + sessionId: request.sessionId, + nonceDigestSha256: request.nonceDigestSha256, + idempotencyKey: request.idempotencyKey, + accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, + capturePolicyId: request.capturePolicyId, + artifactDigestSha256: request.frameBundle.artifactDigestSha256, + outcome: BIOMETRIC_SCENARIO_OUTCOME_V0[request.scenario], + reasonCode: BIOMETRIC_SCENARIO_REASON_V0[request.scenario], + issuedAt, + expiresAt, + authentication: { + scheme: "staging-ed25519", + keyId: this.#config.receiptSigner.keyId, + signatureBase64Url: "pending", + } satisfies StagingAuthenticationV0, + }; + const signedReceipt = await signReceipt(unsigned, this.#config.receiptSigner); + const receipt = Object.freeze({ + ...signedReceipt, + authentication: Object.freeze({ ...signedReceipt.authentication }), + }); + const result: BiometricVerificationResultV0 = Object.freeze({ + kind: SIMULATION_RECEIPT_READY_V0, + receipt, + }); + this.#byIdempotencyKey.set(request.idempotencyKey, { + fingerprint, + requestId: request.requestId, + result, + expiresAtMs: Date.parse(expiresAt), + }); + this.#requestIds.set(request.requestId, request.idempotencyKey); + emitAudit(this.#config.audit, { event: "receipt_created" }); + return result; + } catch { + emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "invalid_request" }); + return invalidRequest(); + } + } +} diff --git a/services/simulated-biometric-verifier/test/simulated-biometric-verifier.test.ts b/services/simulated-biometric-verifier/test/simulated-biometric-verifier.test.ts new file mode 100644 index 0000000..3eba26b --- /dev/null +++ b/services/simulated-biometric-verifier/test/simulated-biometric-verifier.test.ts @@ -0,0 +1,426 @@ +import { beforeAll, describe, expect, test } from "bun:test"; +import { + BIOMETRIC_SCENARIO_OUTCOME_V0, + BIOMETRIC_SCENARIO_REASON_V0, + BIOMETRIC_SIMULATION_REQUEST_V0, + BIOMETRIC_SIMULATOR_AUDIENCE_V0, + BIOMETRIC_VERIFICATION_PORT_V0, + bytesToArrayBuffer, + bytesToBase64Url, + computeFrameBundleDigestV0, + FRAME_BUNDLE_V0, + FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + SIMULATION_CAPTURE_POLICY_V0, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + stagingSignaturePreimageV0, + verifySimulationReceiptV0, + type BiometricSimulationRequestV0, + type BiometricSimulationScenarioV0, + type ExpectedBiometricSimulationRequestV0, + type FrameBundleV0, + type HexSha256, + type SimulationCapturePolicyV0, + type StagingAuthenticationV0, + type StagingEd25519TrustRootV0, +} from "../../../packages/contracts/src"; +import { SimulatedBiometricVerifierV0, type SimulatorAuditEventV0 } from "../src"; + +const ZERO_HASH = "0".repeat(64) as HexSha256; +const ONE_HASH = "1".repeat(64) as HexSha256; +const TWO_HASH = "2".repeat(64) as HexSha256; +const NOW = new Date("2026-09-02T18:30:00.000Z"); + +interface TestSigner { + readonly privateKey: CryptoKey; + readonly trustRoot: StagingEd25519TrustRootV0; +} + +let gatewaySigner: TestSigner; +let receiptSigner: TestSigner; +let wrongSigner: TestSigner; + +async function createSigner(audience: string, keyId: string): Promise { + const pair = (await crypto.subtle.generateKey( + { name: "Ed25519" }, + true, + ["sign", "verify"], + )) as CryptoKeyPair; + const raw = new Uint8Array(await crypto.subtle.exportKey("raw", pair.publicKey)); + return { + privateKey: pair.privateKey, + trustRoot: { + environment: SIMULATION_ENVIRONMENT, + audience, + keyId, + publicKeyRawBase64Url: bytesToBase64Url(raw), + }, + }; +} + +async function sign( + artifact: T, + signer: TestSigner, +): Promise { + const unsigned = { + ...artifact, + authentication: { + scheme: "staging-ed25519" as const, + keyId: signer.trustRoot.keyId, + signatureBase64Url: "pending", + }, + }; + const signature = await crypto.subtle.sign( + { name: "Ed25519" }, + signer.privateKey, + bytesToArrayBuffer(stagingSignaturePreimageV0(unsigned as unknown as Record)), + ); + return { + ...unsigned, + authentication: { + ...unsigned.authentication, + signatureBase64Url: bytesToBase64Url(new Uint8Array(signature)), + }, + } as T; +} + +beforeAll(async () => { + [gatewaySigner, receiptSigner, wrongSigner] = await Promise.all([ + createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "gateway-biometric-key"), + createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "receipt-biometric-key"), + createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "wrong-key"), + ]); +}); + +function policy(dataMode: "metadata_only" | "synthetic_fixture" = "metadata_only"): SimulationCapturePolicyV0 { + return { + version: SIMULATION_CAPTURE_POLICY_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + policyId: `capture-policy-${dataMode}`, + dataMode, + encoding: "rgba8", + minFrames: 1, + maxFrames: 2, + maxWidth: 1024, + maxHeight: 1024, + maxFrameBytes: 4_194_304, + maxTotalBytes: 8_388_608, + captureOffsetsAreDiagnosticOnly: true, + arrayOrderHasBiometricMeaning: false, + qualityPolicyId: "quality-policy-v0", + expiresAt: "2026-09-02T19:00:00.000Z", + }; +} + +async function bundle( + selectedPolicy: SimulationCapturePolicyV0 = policy(), + frameDigest: HexSha256 = ZERO_HASH, +): Promise { + const pending: FrameBundleV0 = { + kind: FRAME_BUNDLE_V0, + mode: SIMULATION_MODE, + sessionId: "session-1", + policyId: selectedPolicy.policyId, + accountPublicMaterialDigestSha256: ONE_HASH, + nonceDigestSha256: TWO_HASH, + dataMode: selectedPolicy.dataMode, + frames: [{ + transportIndex: 0, + width: 640, + height: 480, + encoding: "rgba8", + byteLength: 1_228_800, + frameDigestSha256: frameDigest, + captureOffsetMs: 0, + }], + ...(selectedPolicy.dataMode === "synthetic_fixture" ? { syntheticFixtureId: "fixture-neutral-v1" } : {}), + totalByteLength: 1_228_800, + digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + artifactDigestSha256: ZERO_HASH, + }; + return { ...pending, artifactDigestSha256: await computeFrameBundleDigestV0(pending) }; +} + +async function request( + scenario: BiometricSimulationScenarioV0 = "happy_path", + selectedBundle?: FrameBundleV0, + overrides: Partial = {}, + signer: TestSigner = gatewaySigner, +): Promise { + const frameBundle = selectedBundle ?? await bundle(); + return sign({ + kind: BIOMETRIC_SIMULATION_REQUEST_V0, + version: BIOMETRIC_VERIFICATION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, + requestId: "biometric-request-1", + sessionId: frameBundle.sessionId, + nonceDigestSha256: frameBundle.nonceDigestSha256, + idempotencyKey: "biometric-idempotency-1", + accountPublicMaterialDigestSha256: frameBundle.accountPublicMaterialDigestSha256, + capturePolicyId: frameBundle.policyId, + scenario, + frameBundle, + requestedAt: "2026-09-02T18:00:00.000Z", + expiresAt: "2026-09-02T19:00:00.000Z", + authentication: { scheme: "staging-ed25519", keyId: "pending", signatureBase64Url: "pending" }, + ...overrides, + }, signer); +} + +function expected( + value: BiometricSimulationRequestV0, +): ExpectedBiometricSimulationRequestV0 { + return { + runtimeEnvironment: "staging", + requestId: value.requestId, + sessionId: value.sessionId, + nonceDigestSha256: value.nonceDigestSha256, + idempotencyKey: value.idempotencyKey, + accountPublicMaterialDigestSha256: value.accountPublicMaterialDigestSha256, + capturePolicyId: value.capturePolicyId, + scenario: value.scenario, + now: NOW.toISOString(), + }; +} + +function service( + audit?: (event: SimulatorAuditEventV0) => void, + maxCacheEntries = 100, +): SimulatedBiometricVerifierV0 { + return new SimulatedBiometricVerifierV0({ + runtimeEnvironment: "staging", + gatewayTrustRoot: gatewaySigner.trustRoot, + receiptSigner: { + environment: SIMULATION_ENVIRONMENT, + audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, + keyId: receiptSigner.trustRoot.keyId, + privateKey: receiptSigner.privateKey, + }, + simulatorVersion: "deterministic-biometric-simulator-v0", + receiptTtlMs: 600_000, + maxCacheEntries, + allowedSyntheticFixtureIds: ["fixture-neutral-v1"], + now: () => NOW, + audit, + }); +} + +describe("deterministic scenario mapping", () => { + for (const scenario of ["happy_path", "spoof_reject", "capture_retry", "dependency_unavailable"] as const) { + test(`${scenario} maps to its one frozen outcome`, async () => { + const value = await request(scenario); + const result = await service().verify({ request: value, expected: expected(value), capturePolicy: policy() }); + expect(result.kind).toBe("simulation_receipt_ready_v0"); + if (result.kind !== "simulation_receipt_ready_v0") return; + expect(result.receipt.outcome).toBe(BIOMETRIC_SCENARIO_OUTCOME_V0[scenario]); + expect(result.receipt.reasonCode).toBe(BIOMETRIC_SCENARIO_REASON_V0[scenario]); + expect(result.receipt.scenario).toBe(scenario); + expect(Object.isFrozen(result)).toBe(true); + expect(Object.isFrozen(result.receipt)).toBe(true); + expect(Object.isFrozen(result.receipt.authentication)).toBe(true); + expect(await verifySimulationReceiptV0(result.receipt, { + ...expected(value), + receiptId: result.receipt.receiptId, + artifactDigestSha256: value.frameBundle.artifactDigestSha256, + now: NOW.toISOString(), + }, receiptSigner.trustRoot)).toBe(true); + }); + } + + test("metadata and named fixtures are accepted without affecting the selected outcome", async () => { + const metadataRequest = await request("spoof_reject", await bundle(policy(), ZERO_HASH)); + const fixturePolicy = policy("synthetic_fixture"); + const fixtureRequest = await request("spoof_reject", await bundle(fixturePolicy, TWO_HASH), { + requestId: "biometric-request-fixture", + idempotencyKey: "biometric-idempotency-fixture", + }); + const verifier = service(); + const metadata = await verifier.verify({ request: metadataRequest, expected: expected(metadataRequest), capturePolicy: policy() }); + const fixture = await verifier.verify({ request: fixtureRequest, expected: expected(fixtureRequest), capturePolicy: fixturePolicy }); + expect(metadata.kind).toBe("simulation_receipt_ready_v0"); + expect(fixture.kind).toBe("simulation_receipt_ready_v0"); + if (metadata.kind === "simulation_receipt_ready_v0" && fixture.kind === "simulation_receipt_ready_v0") { + expect(metadata.receipt.outcome).toBe("simulated_reject"); + expect(fixture.receipt.outcome).toBe("simulated_reject"); + expect(metadata.receipt.artifactDigestSha256).not.toBe(fixture.receipt.artifactDigestSha256); + } + }); +}); + +describe("strict authentication and bindings", () => { + test("rejects wrong signer, audience, expiry, and server-owned scenario mismatch", async () => { + const base = await request(); + const wrongKey = await request("happy_path", base.frameBundle, {}, wrongSigner); + const wrongAudience = await request("happy_path", base.frameBundle, { + audience: "wrong-audience" as typeof BIOMETRIC_SIMULATOR_AUDIENCE_V0, + }); + const expired = await request("happy_path", base.frameBundle, { expiresAt: "2026-09-02T18:29:59.000Z" }); + const wrongMode = await request("happy_path", base.frameBundle, { mode: "production" as typeof SIMULATION_MODE }); + const wrongEnvironment = await request("happy_path", base.frameBundle, { environment: "production" as typeof SIMULATION_ENVIRONMENT }); + const verifier = service(); + for (const candidate of [wrongKey, wrongAudience, expired, wrongMode, wrongEnvironment]) { + expect(await verifier.verify({ request: candidate, expected: expected(candidate), capturePolicy: policy() })).toEqual({ + kind: "biometric_simulation_error_v0", + reasonCode: "invalid_request", + }); + } + expect(await verifier.verify({ request: base, expected: { ...expected(base), scenario: "spoof_reject" }, capturePolicy: policy() })).toEqual({ + kind: "biometric_simulation_error_v0", + reasonCode: "invalid_request", + }); + }); + + test("rejects nonce, account, policy, artifact, and unknown-field mutations", async () => { + const valid = await request(); + const mutatedBundle = { ...valid.frameBundle, artifactDigestSha256: ZERO_HASH }; + const cases: Array<[unknown, ExpectedBiometricSimulationRequestV0]> = [ + [valid, { ...expected(valid), nonceDigestSha256: ZERO_HASH }], + [valid, { ...expected(valid), idempotencyKey: "wrong-idempotency" }], + [valid, { ...expected(valid), accountPublicMaterialDigestSha256: ZERO_HASH }], + [valid, { ...expected(valid), capturePolicyId: "wrong-policy" }], + [await request("happy_path", mutatedBundle), expected(await request("happy_path", mutatedBundle))], + [{ ...valid, browserSpoofScore: 0 }, expected(valid)], + [{ ...valid, pixelsBase64: "forbidden" }, expected(valid)], + [{ ...valid, privateKey: "forbidden" }, expected(valid)], + ]; + for (const [candidate, candidateExpected] of cases) { + expect(await service().verify({ request: candidate, expected: candidateExpected, capturePolicy: policy() })).toMatchObject({ + kind: "biometric_simulation_error_v0", + reasonCode: "invalid_request", + }); + } + }); + + test("rejects arbitrary synthetic fixture identifiers and URLs", async () => { + const fixturePolicy = policy("synthetic_fixture"); + for (const fixtureId of ["unregistered-fixture", "https://example.test/camera.png"]) { + const original = await bundle(fixturePolicy); + const pending = { ...original, syntheticFixtureId: fixtureId, artifactDigestSha256: ZERO_HASH }; + const changed = { ...pending, artifactDigestSha256: await computeFrameBundleDigestV0(pending) }; + const value = await request("happy_path", changed); + expect(await service().verify({ request: value, expected: expected(value), capturePolicy: fixturePolicy })).toEqual({ + kind: "biometric_simulation_error_v0", + reasonCode: "invalid_request", + }); + } + }); +}); + +describe("idempotency, isolation, readiness, and redaction", () => { + test("returns the exact cached receipt after a lost response and detects conflicts/replay", async () => { + const verifier = service(); + const firstRequest = await request(); + const first = await verifier.verify({ request: firstRequest, expected: expected(firstRequest), capturePolicy: policy() }); + const retry = await verifier.verify({ request: firstRequest, expected: expected(firstRequest), capturePolicy: policy() }); + expect(retry).toEqual(first); + + const conflict = await request("happy_path", firstRequest.frameBundle, { requestId: "biometric-request-conflict" }); + expect(await verifier.verify({ request: conflict, expected: expected(conflict), capturePolicy: policy() })).toMatchObject({ reasonCode: "idempotency_conflict" }); + const replay = await request("happy_path", firstRequest.frameBundle, { idempotencyKey: "biometric-idempotency-replay" }); + expect(await verifier.verify({ request: replay, expected: expected(replay), capturePolicy: policy() })).toMatchObject({ reasonCode: "request_replay" }); + }); + + test("bounds retained idempotency records", async () => { + const verifier = service(undefined, 1); + const first = await request(); + expect((await verifier.verify({ request: first, expected: expected(first), capturePolicy: policy() })).kind).toBe("simulation_receipt_ready_v0"); + const second = await request("happy_path", first.frameBundle, { + requestId: "biometric-request-2", + idempotencyKey: "biometric-idempotency-2", + }); + expect(await verifier.verify({ request: second, expected: expected(second), capturePolicy: policy() })).toEqual({ + kind: "biometric_simulation_error_v0", + reasonCode: "service_not_ready", + }); + }); + + test("rejects production before reading request outcome or authentication", async () => { + let reads = 0; + const sentinel = new Proxy({}, { get(_target, property) { + if (property === "outcome" || property === "authentication" || property === "scenario") reads += 1; + throw new Error("sensitive getter read"); + } }); + const production = new SimulatedBiometricVerifierV0({ + runtimeEnvironment: "production", + gatewayTrustRoot: gatewaySigner.trustRoot, + receiptSigner: { + environment: SIMULATION_ENVIRONMENT, + audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, + keyId: receiptSigner.trustRoot.keyId, + privateKey: receiptSigner.privateKey, + }, + simulatorVersion: "disabled", + receiptTtlMs: 1, + maxCacheEntries: 1, + allowedSyntheticFixtureIds: [], + now: () => NOW, + }); + await expect(production.verify({ request: sentinel, expected: sentinel as ExpectedBiometricSimulationRequestV0, capturePolicy: sentinel as SimulationCapturePolicyV0 })).rejects.toThrow("forbidden in production"); + expect(reads).toBe(0); + }); + + test("reports readiness failure without echoing key material", () => { + const unavailable = new SimulatedBiometricVerifierV0({ + runtimeEnvironment: "staging", + gatewayTrustRoot: { ...gatewaySigner.trustRoot, audience: "wrong" }, + receiptSigner: { + environment: SIMULATION_ENVIRONMENT, + audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, + keyId: receiptSigner.trustRoot.keyId, + privateKey: receiptSigner.privateKey, + }, + simulatorVersion: "v0", + receiptTtlMs: 1, + maxCacheEntries: 1, + allowedSyntheticFixtureIds: [], + now: () => NOW, + }); + expect(unavailable.readiness()).toEqual({ ready: false, reasonCode: "service_not_ready" }); + expect(JSON.stringify(unavailable.readiness())).not.toContain(gatewaySigner.trustRoot.publicKeyRawBase64Url); + }); + + test("requires purpose-distinct signer key IDs", () => { + const confused = new SimulatedBiometricVerifierV0({ + runtimeEnvironment: "staging", + gatewayTrustRoot: gatewaySigner.trustRoot, + receiptSigner: { + environment: SIMULATION_ENVIRONMENT, + audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, + keyId: gatewaySigner.trustRoot.keyId, + privateKey: receiptSigner.privateKey, + }, + simulatorVersion: "v0", + receiptTtlMs: 1, + maxCacheEntries: 1, + allowedSyntheticFixtureIds: [], + now: () => NOW, + }); + expect(confused.readiness()).toEqual({ ready: false, reasonCode: "service_not_ready" }); + }); + + test("audit output contains only allowlisted event and reason fields", async () => { + const events: SimulatorAuditEventV0[] = []; + const value = await request(); + const result = await service((event) => events.push(event)).verify({ request: value, expected: expected(value), capturePolicy: policy() }); + expect(result.kind).toBe("simulation_receipt_ready_v0"); + expect(events).toEqual([{ event: "receipt_created" }]); + const serialized = JSON.stringify(events); + for (const forbidden of [value.requestId, value.sessionId, value.accountPublicMaterialDigestSha256, value.authentication.signatureBase64Url, "privateKey", "pixels"]) { + expect(serialized).not.toContain(forbidden); + } + }); + + test("swallows free-text audit transport failures", async () => { + const value = await request(); + const result = await service(() => { throw new Error("secret upstream audit failure"); }).verify({ + request: value, + expected: expected(value), + capturePolicy: policy(), + }); + expect(result.kind).toBe("simulation_receipt_ready_v0"); + expect(JSON.stringify(result)).not.toContain("secret upstream audit failure"); + }); +}); diff --git a/services/simulated-staging-issuer/README.md b/services/simulated-staging-issuer/README.md new file mode 100644 index 0000000..be42fa0 --- /dev/null +++ b/services/simulated-staging-issuer/README.md @@ -0,0 +1,5 @@ +# Simulated staging issuer + +This staging-only service verifies the gateway signature and independently verifies the embedded `SimulationReceiptV0` against its own trust root, time, and bindings. Only a current authenticated `simulated_pass` can enter the three deterministic issuance scenarios. Success returns exactly `SimulatedStagingCredentialV0` with the frozen non-claims. + +Configuration injects purpose-distinct gateway, receipt, and credential keys, a clock, TTL, and bounded idempotency-cache capacity. Audit events contain no request, receipt, signature, credential body, identifier, or free-text error. Production runtime configuration rejects before reading receipt outcome or authentication. diff --git a/services/simulated-staging-issuer/package.json b/services/simulated-staging-issuer/package.json new file mode 100644 index 0000000..d8b0db5 --- /dev/null +++ b/services/simulated-staging-issuer/package.json @@ -0,0 +1,13 @@ +{ + "name": "@world-id/web-authenticator-simulated-staging-issuer", + "private": true, + "version": "0.0.0", + "type": "module", + "exports": { + ".": "./src/index.ts" + }, + "scripts": { + "test": "bun test test", + "lint": "eslint ." + } +} diff --git a/services/simulated-staging-issuer/src/index.ts b/services/simulated-staging-issuer/src/index.ts new file mode 100644 index 0000000..58710e0 --- /dev/null +++ b/services/simulated-staging-issuer/src/index.ts @@ -0,0 +1,311 @@ +import { + BIOMETRIC_SIMULATOR_AUDIENCE_V0, + base64UrlToBytes, + bytesToArrayBuffer, + bytesToBase64Url, + canonicalizeJsonV0, + SIMULATED_STAGING_AUDIENCE_V0, + SIMULATED_STAGING_CREDENTIAL_V0, + SIMULATED_STAGING_ISSUER_V0, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + SimulationArtifactInProductionError, + stagingSignaturePreimageV0, + STAGING_ISSUANCE_PORT_V0, + STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, + verifySimulationReceiptV0, + verifyStagingIssuanceSimulationRequestV0, + verifyStagingEd25519V0, + isRecord, + type HexSha256, + type RuntimeEnvironment, + type SimulatedStagingCredentialV0, + type StagingAuthenticationV0, + type StagingEd25519TrustRootV0, + type StagingIssuanceSimulationRequestV0, +} from "../../../packages/contracts/src"; +import { + STAGING_ISSUANCE_ERROR_V0, + type StagingIssuanceInvocationV0, + type StagingIssuancePortResultV0, + type StagingIssuancePortV0, +} from "../../../packages/staging-issuance-port/src"; + +export interface StagingCredentialSignerV0 { + readonly environment: typeof SIMULATION_ENVIRONMENT; + readonly audience: typeof SIMULATED_STAGING_AUDIENCE_V0; + readonly keyId: string; + readonly privateKey: CryptoKey; +} + +export interface IssuerAuditEventV0 { + readonly event: "request_rejected" | "credential_created" | "scenario_result" | "idempotent_replay"; + readonly reasonCode?: string; +} + +export interface SimulatedStagingIssuerConfigV0 { + readonly runtimeEnvironment: RuntimeEnvironment; + readonly gatewayTrustRoot: StagingEd25519TrustRootV0; + readonly biometricReceiptTrustRoot: StagingEd25519TrustRootV0; + readonly credentialSigner: StagingCredentialSignerV0; + readonly credentialTtlMs: number; + readonly maxCacheEntries: number; + readonly now: () => Date; + readonly audit?: (event: IssuerAuditEventV0) => void; +} + +interface CachedResult { + readonly fingerprint: string; + readonly requestId: string; + readonly result: StagingIssuancePortResultV0; + readonly expiresAtMs: number; +} + +async function sha256Hex(value: string): Promise { + const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value)); + return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join(""); +} + +function signerIsReady(signer: StagingCredentialSignerV0): boolean { + return ( + signer.environment === SIMULATION_ENVIRONMENT && + signer.audience === SIMULATED_STAGING_AUDIENCE_V0 && + signer.keyId.length > 0 && + signer.privateKey.type === "private" && + signer.privateKey.algorithm.name === "Ed25519" && + signer.privateKey.usages.includes("sign") + ); +} + +function trustRootIsReady( + trustRoot: StagingEd25519TrustRootV0, + audience: string, +): boolean { + try { + return ( + trustRoot.environment === SIMULATION_ENVIRONMENT && + trustRoot.audience === audience && + trustRoot.keyId.length > 0 && + base64UrlToBytes(trustRoot.publicKeyRawBase64Url).byteLength === 32 + ); + } catch { + return false; + } +} + +function emitAudit( + audit: SimulatedStagingIssuerConfigV0["audit"], + event: IssuerAuditEventV0, +): void { + try { + audit?.(Object.freeze(event)); + } catch { + // Audit transport failures never change a simulator result or expose their free-text error. + } +} + +async function signCredential( + credential: SimulatedStagingCredentialV0, + signer: StagingCredentialSignerV0, +): Promise { + const signature = await crypto.subtle.sign( + { name: "Ed25519" }, + signer.privateKey, + bytesToArrayBuffer(stagingSignaturePreimageV0(credential as unknown as Record)), + ); + return { + ...credential, + authentication: { + ...credential.authentication, + signatureBase64Url: bytesToBase64Url(new Uint8Array(signature)), + }, + }; +} + +export class SimulatedStagingIssuerV0 implements StagingIssuancePortV0 { + readonly #config: SimulatedStagingIssuerConfigV0; + readonly #byIdempotencyKey = new Map(); + readonly #requestIds = new Map(); + + constructor(config: SimulatedStagingIssuerConfigV0) { + this.#config = config; + } + + readiness(): Readonly<{ ready: boolean; reasonCode?: "service_not_ready" }> { + const ready = + this.#config.runtimeEnvironment === "staging" && + trustRootIsReady( + this.#config.gatewayTrustRoot, + STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, + ) && + trustRootIsReady( + this.#config.biometricReceiptTrustRoot, + BIOMETRIC_SIMULATOR_AUDIENCE_V0, + ) && + signerIsReady(this.#config.credentialSigner) && + new Set([ + this.#config.gatewayTrustRoot.keyId, + this.#config.biometricReceiptTrustRoot.keyId, + this.#config.credentialSigner.keyId, + ]).size === 3 && + Number.isSafeInteger(this.#config.credentialTtlMs) && + this.#config.credentialTtlMs > 0 && + Number.isSafeInteger(this.#config.maxCacheEntries) && + this.#config.maxCacheEntries > 0; + return Object.freeze(ready ? { ready: true } : { ready: false, reasonCode: "service_not_ready" }); + } + + async issue(invocation: StagingIssuanceInvocationV0): Promise { + // This branch intentionally executes before any property read from an untrusted request. + if (this.#config.runtimeEnvironment === "production") { + throw new SimulationArtifactInProductionError(); + } + if (!this.readiness().ready) return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "service_not_ready" }; + + try { + if ( + !isRecord(invocation.request) || + !(await verifyStagingEd25519V0(invocation.request, this.#config.gatewayTrustRoot)) + ) { + emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "invalid_request" }); + return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "invalid_request" }; + } + const now = this.#config.now(); + const embeddedReceipt = invocation.request.biometricReceipt; + const expectedBiometricReceipt = { + ...invocation.expected.biometricReceipt, + runtimeEnvironment: "staging" as const, + now: now.toISOString(), + }; + // Authenticate the nested artifact, its current time, and every expected binding before + // classifying the outcome. An outer gateway signature cannot substitute for this check. + if ( + !(await verifySimulationReceiptV0( + embeddedReceipt, + expectedBiometricReceipt, + this.#config.biometricReceiptTrustRoot, + )) + ) { + emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "invalid_request" }); + return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "invalid_request" }; + } + if ((embeddedReceipt as { readonly outcome: unknown }).outcome !== "simulated_pass") { + emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "non_pass_receipt" }); + return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "non_pass_receipt" }; + } + const expected = { + ...invocation.expected, + runtimeEnvironment: "staging" as const, + biometricReceipt: expectedBiometricReceipt, + now: now.toISOString(), + }; + if (!(await verifyStagingIssuanceSimulationRequestV0( + invocation.request, + expected, + this.#config.gatewayTrustRoot, + this.#config.biometricReceiptTrustRoot, + ))) { + emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "invalid_request" }); + return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "invalid_request" }; + } + + const request = invocation.request as unknown as StagingIssuanceSimulationRequestV0; + const fingerprint = await sha256Hex(canonicalizeJsonV0(request)); + for (const [key, entry] of this.#byIdempotencyKey) { + if (entry.expiresAtMs <= now.getTime()) { + this.#byIdempotencyKey.delete(key); + this.#requestIds.delete(entry.requestId); + } + } + const cached = this.#byIdempotencyKey.get(request.idempotencyKey); + if (cached) { + if (cached.fingerprint !== fingerprint || cached.requestId !== request.requestId) { + emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "idempotency_conflict" }); + return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "idempotency_conflict" }; + } + emitAudit(this.#config.audit, { event: "idempotent_replay" }); + return cached.result; + } + const knownIdempotencyKey = this.#requestIds.get(request.requestId); + if (knownIdempotencyKey !== undefined && knownIdempotencyKey !== request.idempotencyKey) { + emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "request_replay" }); + return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "request_replay" }; + } + if (this.#byIdempotencyKey.size >= this.#config.maxCacheEntries) { + emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "service_not_ready" }); + return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "service_not_ready" }; + } + + let result: StagingIssuancePortResultV0; + if (request.scenario === "issue_reject") { + result = Object.freeze({ kind: "simulated_issuance_rejected_v0", reasonCode: "scenario_issue_reject" }); + } else if (request.scenario === "issue_unavailable") { + result = Object.freeze({ kind: "simulated_issuance_unavailable_v0", reasonCode: "scenario_issue_unavailable" }); + } else { + const issuedAt = now.toISOString(); + const expiresAt = new Date( + Math.min(Date.parse(request.expiresAt), Date.parse(request.biometricReceipt.expiresAt), now.getTime() + this.#config.credentialTtlMs), + ).toISOString(); + if (Date.parse(expiresAt) <= now.getTime()) { + return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "invalid_request" }; + } + const credentialId = `sim-credential-${(await sha256Hex(`staging-credential-v0:${fingerprint}`)).slice(0, 32)}`; + const unsigned: SimulatedStagingCredentialV0 = { + kind: SIMULATED_STAGING_CREDENTIAL_V0, + version: STAGING_ISSUANCE_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + credentialId, + issuer: SIMULATED_STAGING_ISSUER_V0, + audience: SIMULATED_STAGING_AUDIENCE_V0, + issuanceRequestId: request.requestId, + idempotencyKey: request.idempotencyKey, + nonceDigestSha256: request.nonceDigestSha256, + subjectAccountId: request.accountId, + accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, + simulationReceiptId: request.biometricReceipt.receiptId, + claims: { + biometricVerification: "simulated_not_performed", + uniqueness: "not_performed", + credentialClass: "not_selfie_check", + }, + issuedAt, + expiresAt, + authentication: { + scheme: "staging-ed25519", + keyId: this.#config.credentialSigner.keyId, + signatureBase64Url: "pending", + } satisfies StagingAuthenticationV0, + }; + const signedCredential = await signCredential(unsigned, this.#config.credentialSigner); + const credential = Object.freeze({ + ...signedCredential, + claims: Object.freeze({ ...signedCredential.claims }), + authentication: Object.freeze({ ...signedCredential.authentication }), + }); + result = Object.freeze({ kind: "simulated_credential_ready_v0", credential }); + } + + this.#byIdempotencyKey.set(request.idempotencyKey, { + fingerprint, + requestId: request.requestId, + result, + expiresAtMs: Math.min( + Date.parse(request.expiresAt), + Date.parse(request.biometricReceipt.expiresAt), + ), + }); + this.#requestIds.set(request.requestId, request.idempotencyKey); + emitAudit( + this.#config.audit, + result.kind === "simulated_credential_ready_v0" + ? { event: "credential_created" } + : { event: "scenario_result", reasonCode: result.reasonCode }, + ); + return result; + } catch { + emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "invalid_request" }); + return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "invalid_request" }; + } + } +} diff --git a/services/simulated-staging-issuer/test/simulated-staging-issuer.test.ts b/services/simulated-staging-issuer/test/simulated-staging-issuer.test.ts new file mode 100644 index 0000000..601c2e2 --- /dev/null +++ b/services/simulated-staging-issuer/test/simulated-staging-issuer.test.ts @@ -0,0 +1,504 @@ +import { beforeAll, describe, expect, test } from "bun:test"; +import { + BIOMETRIC_SIMULATOR_AUDIENCE_V0, + BIOMETRIC_VERIFICATION_PORT_V0, + bytesToArrayBuffer, + bytesToBase64Url, + SIMULATED_STAGING_AUDIENCE_V0, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + SIMULATION_RECEIPT_V0, + stagingSignaturePreimageV0, + STAGING_ISSUANCE_PORT_V0, + STAGING_ISSUANCE_SIMULATION_REQUEST_V0, + STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, + verifySimulatedStagingCredentialV0, + type ExpectedSimulationReceiptV0, + type ExpectedStagingIssuanceRequestV0, + type HexSha256, + type IssuanceSimulationScenarioV0, + type SimulationReceiptV0, + type StagingAuthenticationV0, + type StagingEd25519TrustRootV0, + type StagingIssuanceSimulationRequestV0, +} from "../../../packages/contracts/src"; +import { SimulatedStagingIssuerV0, type IssuerAuditEventV0 } from "../src"; + +const ZERO_HASH = "0".repeat(64) as HexSha256; +const ONE_HASH = "1".repeat(64) as HexSha256; +const TWO_HASH = "2".repeat(64) as HexSha256; +const NOW = new Date("2026-09-02T18:30:00.000Z"); + +interface TestSigner { + readonly privateKey: CryptoKey; + readonly trustRoot: StagingEd25519TrustRootV0; +} + +let biometricSigner: TestSigner; +let gatewaySigner: TestSigner; +let credentialSigner: TestSigner; +let wrongSigner: TestSigner; + +async function createSigner(audience: string, keyId: string): Promise { + const pair = (await crypto.subtle.generateKey( + { name: "Ed25519" }, + true, + ["sign", "verify"], + )) as CryptoKeyPair; + const raw = new Uint8Array(await crypto.subtle.exportKey("raw", pair.publicKey)); + return { + privateKey: pair.privateKey, + trustRoot: { + environment: SIMULATION_ENVIRONMENT, + audience, + keyId, + publicKeyRawBase64Url: bytesToBase64Url(raw), + }, + }; +} + +async function sign( + artifact: T, + signer: TestSigner, +): Promise { + const unsigned = { + ...artifact, + authentication: { + scheme: "staging-ed25519" as const, + keyId: signer.trustRoot.keyId, + signatureBase64Url: "pending", + }, + }; + const signature = await crypto.subtle.sign( + { name: "Ed25519" }, + signer.privateKey, + bytesToArrayBuffer(stagingSignaturePreimageV0(unsigned as unknown as Record)), + ); + return { + ...unsigned, + authentication: { + ...unsigned.authentication, + signatureBase64Url: bytesToBase64Url(new Uint8Array(signature)), + }, + } as T; +} + +beforeAll(async () => { + [biometricSigner, gatewaySigner, credentialSigner, wrongSigner] = await Promise.all([ + createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "biometric-receipt-key"), + createSigner(STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, "gateway-issuance-key"), + createSigner(SIMULATED_STAGING_AUDIENCE_V0, "credential-key"), + createSigner(STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, "wrong-key"), + ]); +}); + +async function receipt( + overrides: Partial = {}, + signer: TestSigner = biometricSigner, +): Promise { + return sign({ + kind: SIMULATION_RECEIPT_V0, + version: BIOMETRIC_VERIFICATION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, + receiptId: "receipt-1", + requestId: "biometric-request-1", + simulatorVersion: "deterministic-biometric-simulator-v0", + scenario: "happy_path", + sessionId: "session-1", + nonceDigestSha256: ONE_HASH, + idempotencyKey: "biometric-idempotency-1", + accountPublicMaterialDigestSha256: TWO_HASH, + capturePolicyId: "capture-policy-1", + artifactDigestSha256: ZERO_HASH, + outcome: "simulated_pass", + reasonCode: "scenario_happy_path", + issuedAt: "2026-09-02T18:00:00.000Z", + expiresAt: "2026-09-02T19:00:00.000Z", + authentication: { scheme: "staging-ed25519", keyId: "pending", signatureBase64Url: "pending" }, + ...overrides, + }, signer); +} + +async function request( + biometricReceipt: SimulationReceiptV0, + scenario: IssuanceSimulationScenarioV0 = "issue_success", + overrides: Partial = {}, + signer: TestSigner = gatewaySigner, +): Promise { + return sign({ + kind: STAGING_ISSUANCE_SIMULATION_REQUEST_V0, + version: STAGING_ISSUANCE_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + audience: STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, + requestId: "issuance-request-1", + sessionId: biometricReceipt.sessionId, + nonceDigestSha256: biometricReceipt.nonceDigestSha256, + idempotencyKey: "issuance-idempotency-1", + accountId: "account-1", + accountPublicMaterialDigestSha256: biometricReceipt.accountPublicMaterialDigestSha256, + biometricReceipt: biometricReceipt as SimulationReceiptV0 & { readonly outcome: "simulated_pass" }, + scenario, + requestedAt: "2026-09-02T18:10:00.000Z", + expiresAt: "2026-09-02T19:00:00.000Z", + authentication: { scheme: "staging-ed25519", keyId: "pending", signatureBase64Url: "pending" }, + ...overrides, + }, signer); +} + +function expectedReceipt(value: SimulationReceiptV0): ExpectedSimulationReceiptV0 { + return { + runtimeEnvironment: "staging", + receiptId: value.receiptId, + requestId: value.requestId, + sessionId: value.sessionId, + nonceDigestSha256: value.nonceDigestSha256, + idempotencyKey: value.idempotencyKey, + accountPublicMaterialDigestSha256: value.accountPublicMaterialDigestSha256, + capturePolicyId: value.capturePolicyId, + scenario: value.scenario, + artifactDigestSha256: value.artifactDigestSha256, + now: NOW.toISOString(), + }; +} + +function expected(value: StagingIssuanceSimulationRequestV0): ExpectedStagingIssuanceRequestV0 { + return { + runtimeEnvironment: "staging", + requestId: value.requestId, + sessionId: value.sessionId, + nonceDigestSha256: value.nonceDigestSha256, + idempotencyKey: value.idempotencyKey, + accountId: value.accountId, + accountPublicMaterialDigestSha256: value.accountPublicMaterialDigestSha256, + biometricReceipt: expectedReceipt(value.biometricReceipt), + scenario: value.scenario, + now: NOW.toISOString(), + }; +} + +function service( + audit?: (event: IssuerAuditEventV0) => void, + maxCacheEntries = 100, +): SimulatedStagingIssuerV0 { + return new SimulatedStagingIssuerV0({ + runtimeEnvironment: "staging", + gatewayTrustRoot: gatewaySigner.trustRoot, + biometricReceiptTrustRoot: biometricSigner.trustRoot, + credentialSigner: { + environment: SIMULATION_ENVIRONMENT, + audience: SIMULATED_STAGING_AUDIENCE_V0, + keyId: credentialSigner.trustRoot.keyId, + privateKey: credentialSigner.privateKey, + }, + credentialTtlMs: 600_000, + maxCacheEntries, + now: () => NOW, + audit, + }); +} + +describe("issuance scenarios and credential shape", () => { + test("issues the exact staging-only non-credential after a valid pass", async () => { + const pass = await receipt(); + const value = await request(pass); + const result = await service().issue({ request: value, expected: expected(value) }); + expect(result.kind).toBe("simulated_credential_ready_v0"); + if (result.kind !== "simulated_credential_ready_v0") return; + expect(result.credential).toMatchObject({ + kind: "simulated_staging_credential_v0", + mode: "simulation", + environment: "staging", + issuer: "world_id_web_authenticator_simulator", + audience: "world_id_web_authenticator_staging", + subjectAccountId: value.accountId, + simulationReceiptId: pass.receiptId, + claims: { + biometricVerification: "simulated_not_performed", + uniqueness: "not_performed", + credentialClass: "not_selfie_check", + }, + }); + expect(Object.keys(result.credential.claims).sort()).toEqual(["biometricVerification", "credentialClass", "uniqueness"]); + expect(Object.isFrozen(result)).toBe(true); + expect(Object.isFrozen(result.credential)).toBe(true); + expect(Object.isFrozen(result.credential.claims)).toBe(true); + expect(Object.isFrozen(result.credential.authentication)).toBe(true); + expect(await verifySimulatedStagingCredentialV0(result.credential, { + runtimeEnvironment: "staging", + issuanceRequestId: value.requestId, + idempotencyKey: value.idempotencyKey, + nonceDigestSha256: value.nonceDigestSha256, + subjectAccountId: value.accountId, + accountPublicMaterialDigestSha256: value.accountPublicMaterialDigestSha256, + simulationReceiptId: pass.receiptId, + now: NOW.toISOString(), + }, credentialSigner.trustRoot)).toBe(true); + for (const forbidden of ["selfie_check", "proof", "attestation", "embedding", "shares", "biometric_passed"]) { + expect(Object.keys(result.credential).join(",")).not.toContain(forbidden); + } + }); + + for (const [scenario, kind, reasonCode] of [ + ["issue_reject", "simulated_issuance_rejected_v0", "scenario_issue_reject"], + ["issue_unavailable", "simulated_issuance_unavailable_v0", "scenario_issue_unavailable"], + ] as const) { + test(`${scenario} returns its exact frozen result`, async () => { + const pass = await receipt(); + const value = await request(pass, scenario); + const result = await service().issue({ request: value, expected: expected(value) }); + expect(result.kind).toBe(kind); + expect("reasonCode" in result ? result.reasonCode : undefined).toBe(reasonCode); + }); + } + + test("rejects every non-pass receipt before issuance", async () => { + for (const [scenario, outcome, reasonCode] of [ + ["spoof_reject", "simulated_reject", "scenario_spoof_reject"], + ["capture_retry", "simulated_retry", "scenario_capture_retry"], + ["dependency_unavailable", "simulated_unavailable", "scenario_dependency_unavailable"], + ] as const) { + const nonPass = await receipt({ scenario, outcome, reasonCode }); + const value = await request(nonPass); + expect(await service().issue({ request: value, expected: expected(value) })).toEqual({ + kind: "staging_issuance_error_v0", + reasonCode: "non_pass_receipt", + }); + } + }); + + test("classifies only authenticated current non-pass receipts as non-pass", async () => { + const validReject = await receipt({ + scenario: "spoof_reject", + outcome: "simulated_reject", + reasonCode: "scenario_spoof_reject", + }); + const value = await request(validReject); + expect(await service().issue({ request: value, expected: expected(value) })).toEqual({ + kind: "staging_issuance_error_v0", + reasonCode: "non_pass_receipt", + }); + }); +}); + +describe("independent outer request and embedded receipt verification", () => { + test("rejects wrong outer key, audience, expiry, and server scenario", async () => { + const pass = await receipt(); + const wrongKey = await request(pass, "issue_success", {}, wrongSigner); + const wrongAudience = await request(pass, "issue_success", { audience: "wrong" as typeof STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0 }); + const expired = await request(pass, "issue_success", { expiresAt: "2026-09-02T18:29:59.000Z" }); + const wrongMode = await request(pass, "issue_success", { mode: "production" as typeof SIMULATION_MODE }); + const wrongEnvironment = await request(pass, "issue_success", { environment: "production" as typeof SIMULATION_ENVIRONMENT }); + for (const value of [wrongKey, wrongAudience, expired, wrongMode, wrongEnvironment]) { + expect(await service().issue({ request: value, expected: expected(value) })).toMatchObject({ reasonCode: "invalid_request" }); + } + const valid = await request(pass); + expect(await service().issue({ request: valid, expected: { ...expected(valid), scenario: "issue_reject" } })).toMatchObject({ reasonCode: "invalid_request" }); + }); + + test("rejects an invalid, wrong-root, or expired embedded receipt even when the outer request is re-signed", async () => { + const valid = await receipt(); + const invalidSignature = { ...valid, authentication: { ...valid.authentication, signatureBase64Url: `${valid.authentication.signatureBase64Url}x` } }; + const wrongRoot = await receipt({}, wrongSigner); + const expired = await receipt({ issuedAt: "2026-09-02T17:00:00.000Z", expiresAt: "2026-09-02T18:29:59.000Z" }); + for (const embedded of [invalidSignature, wrongRoot, expired]) { + const value = await request(embedded); + expect(await service().issue({ request: value, expected: expected(value) })).toEqual({ + kind: "staging_issuance_error_v0", + reasonCode: "invalid_request", + }); + } + }); + + test("does not classify forged, wrong-root, expired, or binding-mismatched non-pass receipts", async () => { + const validReject = await receipt({ + scenario: "spoof_reject", + outcome: "simulated_reject", + reasonCode: "scenario_spoof_reject", + }); + const forged = { + ...validReject, + authentication: { + ...validReject.authentication, + signatureBase64Url: `${validReject.authentication.signatureBase64Url}x`, + }, + }; + const wrongRoot = await receipt({ + scenario: "spoof_reject", + outcome: "simulated_reject", + reasonCode: "scenario_spoof_reject", + }, wrongSigner); + const expired = await receipt({ + scenario: "spoof_reject", + outcome: "simulated_reject", + reasonCode: "scenario_spoof_reject", + issuedAt: "2026-09-02T17:00:00.000Z", + expiresAt: "2026-09-02T18:29:59.000Z", + }); + + for (const embedded of [forged, wrongRoot, expired]) { + const value = await request(embedded); + expect(await service().issue({ request: value, expected: expected(value) })).toEqual({ + kind: "staging_issuance_error_v0", + reasonCode: "invalid_request", + }); + } + + const boundValue = await request(validReject); + const bindingMismatch = { + ...expected(boundValue), + biometricReceipt: { + ...expectedReceipt(validReject), + artifactDigestSha256: ONE_HASH, + }, + }; + expect(await service().issue({ request: boundValue, expected: bindingMismatch })).toEqual({ + kind: "staging_issuance_error_v0", + reasonCode: "invalid_request", + }); + }); + + test("fails closed when receipt outcome changes after valid outer authentication", async () => { + const validReject = await receipt({ + scenario: "spoof_reject", + outcome: "simulated_reject", + reasonCode: "scenario_spoof_reject", + }); + const signedOuter = await request(validReject); + let outcomeReads = 0; + const hostileReceipt = { ...validReject } as SimulationReceiptV0; + Object.defineProperty(hostileReceipt, "outcome", { + enumerable: true, + configurable: true, + get: () => { + outcomeReads += 1; + if (outcomeReads === 1) return validReject.outcome; + throw new Error("hostile outcome getter detail"); + }, + }); + const hostileOuter = { ...signedOuter, biometricReceipt: hostileReceipt }; + const result = await service().issue({ request: hostileOuter, expected: expected(signedOuter) }); + expect(result).toEqual({ + kind: "staging_issuance_error_v0", + reasonCode: "invalid_request", + }); + expect(outcomeReads).toBe(2); + expect(JSON.stringify(result)).not.toContain("hostile outcome getter detail"); + }); + + test("rejects session, nonce, account, artifact, receipt-id, and unknown-field mismatches", async () => { + const pass = await receipt(); + const value = await request(pass); + const mismatches: ExpectedStagingIssuanceRequestV0[] = [ + { ...expected(value), sessionId: "wrong-session" }, + { ...expected(value), nonceDigestSha256: ZERO_HASH }, + { ...expected(value), idempotencyKey: "wrong-idempotency" }, + { ...expected(value), accountId: "wrong-account" }, + { ...expected(value), accountPublicMaterialDigestSha256: ZERO_HASH }, + { ...expected(value), biometricReceipt: { ...expectedReceipt(pass), artifactDigestSha256: ONE_HASH } }, + { ...expected(value), biometricReceipt: { ...expectedReceipt(pass), receiptId: "wrong-receipt" } }, + ]; + for (const mismatch of mismatches) { + expect(await service().issue({ request: value, expected: mismatch })).toMatchObject({ reasonCode: "invalid_request" }); + } + expect(await service().issue({ request: { ...value, rawBody: "forbidden" }, expected: expected(value) })).toMatchObject({ reasonCode: "invalid_request" }); + }); +}); + +describe("idempotency, isolation, readiness, and redaction", () => { + test("returns the cached lost response and detects idempotency conflict/request replay", async () => { + const issuer = service(); + const pass = await receipt(); + const firstRequest = await request(pass); + const first = await issuer.issue({ request: firstRequest, expected: expected(firstRequest) }); + expect(await issuer.issue({ request: firstRequest, expected: expected(firstRequest) })).toEqual(first); + + const conflict = await request(pass, "issue_success", { requestId: "issuance-request-conflict" }); + expect(await issuer.issue({ request: conflict, expected: expected(conflict) })).toMatchObject({ reasonCode: "idempotency_conflict" }); + const replay = await request(pass, "issue_success", { idempotencyKey: "issuance-idempotency-replay" }); + expect(await issuer.issue({ request: replay, expected: expected(replay) })).toMatchObject({ reasonCode: "request_replay" }); + }); + + test("bounds retained idempotency records", async () => { + const issuer = service(undefined, 1); + const pass = await receipt(); + const first = await request(pass); + expect((await issuer.issue({ request: first, expected: expected(first) })).kind).toBe("simulated_credential_ready_v0"); + const second = await request(pass, "issue_success", { + requestId: "issuance-request-2", + idempotencyKey: "issuance-idempotency-2", + }); + expect(await issuer.issue({ request: second, expected: expected(second) })).toEqual({ + kind: "staging_issuance_error_v0", + reasonCode: "service_not_ready", + }); + }); + + test("rejects production before reading receipt outcome or authentication", async () => { + let reads = 0; + const sentinel = new Proxy({}, { get(_target, property) { + if (property === "biometricReceipt" || property === "outcome" || property === "authentication") reads += 1; + throw new Error("sensitive getter read"); + } }); + const production = new SimulatedStagingIssuerV0({ + runtimeEnvironment: "production", + gatewayTrustRoot: gatewaySigner.trustRoot, + biometricReceiptTrustRoot: biometricSigner.trustRoot, + credentialSigner: { + environment: SIMULATION_ENVIRONMENT, + audience: SIMULATED_STAGING_AUDIENCE_V0, + keyId: credentialSigner.trustRoot.keyId, + privateKey: credentialSigner.privateKey, + }, + credentialTtlMs: 1, + maxCacheEntries: 1, + now: () => NOW, + }); + await expect(production.issue({ request: sentinel, expected: sentinel as ExpectedStagingIssuanceRequestV0 })).rejects.toThrow("forbidden in production"); + expect(reads).toBe(0); + }); + + test("readiness fails closed for purpose-confused trust roots", () => { + const unavailable = new SimulatedStagingIssuerV0({ + runtimeEnvironment: "staging", + gatewayTrustRoot: biometricSigner.trustRoot, + biometricReceiptTrustRoot: biometricSigner.trustRoot, + credentialSigner: { + environment: SIMULATION_ENVIRONMENT, + audience: SIMULATED_STAGING_AUDIENCE_V0, + keyId: credentialSigner.trustRoot.keyId, + privateKey: credentialSigner.privateKey, + }, + credentialTtlMs: 1, + maxCacheEntries: 1, + now: () => NOW, + }); + expect(unavailable.readiness()).toEqual({ ready: false, reasonCode: "service_not_ready" }); + }); + + test("audit output never contains request, receipt, credential, signature, or upstream error text", async () => { + const events: IssuerAuditEventV0[] = []; + const pass = await receipt(); + const value = await request(pass); + const result = await service((event) => events.push(event)).issue({ request: value, expected: expected(value) }); + expect(result.kind).toBe("simulated_credential_ready_v0"); + expect(events).toEqual([{ event: "credential_created" }]); + const serialized = JSON.stringify(events); + for (const forbidden of [value.requestId, value.sessionId, value.accountId, pass.receiptId, pass.authentication.signatureBase64Url, value.authentication.signatureBase64Url, "credentialId", "upstream stack"] ) { + expect(serialized).not.toContain(forbidden); + } + }); + + test("swallows free-text audit transport failures", async () => { + const pass = await receipt(); + const value = await request(pass); + const result = await service(() => { throw new Error("secret upstream audit failure"); }).issue({ + request: value, + expected: expected(value), + }); + expect(result.kind).toBe("simulated_credential_ready_v0"); + expect(JSON.stringify(result)).not.toContain("secret upstream audit failure"); + }); +}); diff --git a/src/app/globals.css b/src/app/globals.css deleted file mode 100644 index 768a171..0000000 --- a/src/app/globals.css +++ /dev/null @@ -1,11 +0,0 @@ -@import 'tailwindcss'; - -@theme inline { - --color-background: #f9f9f8; - --color-primary: #2d2c2c; - --color-secondary: #848382; - --color-border: #e1dfda; - - --font-tiempos: var(--raw-font-tiempos), var(--font-serif); - --font-brand: var(--raw-font-twk-lausanne), var(--font-sans); -} diff --git a/src/app/layout.tsx b/src/app/layout.tsx deleted file mode 100644 index 5b30f00..0000000 --- a/src/app/layout.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import './globals.css' -import LocalFont from 'next/font/local' - -const tiempos = LocalFont({ - preload: true, - display: 'swap', - adjustFontFallback: false, - variable: '--raw-font-tiempos', - src: '../fonts/TiemposHeadline-Regular.ttf', -}) - -const twkLausanne = LocalFont({ - preload: true, - display: 'swap', - adjustFontFallback: false, - variable: '--raw-font-twk-lausanne', - src: [ - { path: '../fonts/TWKLausanne-300.otf', weight: '300', style: 'normal' }, - { path: '../fonts/TWKLausanne-400.otf', weight: '400', style: 'normal' }, - { path: '../fonts/TWKLausanne-600.otf', weight: '600', style: 'normal' }, - ], -}) - -const RootLayout = ({ children }: Readonly<{ children: React.ReactNode }>) => ( - - {children} - -) - -export default RootLayout diff --git a/src/app/page.tsx b/src/app/page.tsx deleted file mode 100644 index 5082d0c..0000000 --- a/src/app/page.tsx +++ /dev/null @@ -1,115 +0,0 @@ -'use client' - -import { useState } from 'react' -import QRCode from '@/components/QRCode' -import spainFlag from '@images/spain.png' -import marbleImg from '@images/marble.png' -import * as motion from 'motion/react-client' -import { AnimatePresence } from 'motion/react' -import UserDropdown from '@/components/UserDropdown' -import WorldMark from '@/components/icons/WorldMark' -import FailedIcon from '@/components/icons/FailedIcon' -import SpinnerIcon from '@/components/icons/SpinnerIcon' - -export default function Home() { - const [didFail, setFailed] = useState(false) - const [isLoading, setLoading] = useState(false) - - return ( -
    -
    - - {}} /> -
    - -
    -
    -

    Welcome, Unique Human

    -

    - World ID is a privacy-preserving digital passport that lets you prove you're a real, unique - person—without revealing your identity. -

    -
    -
    -
    -
    - - {didFail ? 'Connection failed' : 'Connect your World ID'} - - - {didFail - ? 'Something went wrong. Please try scanning again.' - : 'Scan the following QR code with your World ID app to connect and start using immediately.'} - - - {didFail && ( - setFailed(false)} - className="mt-6 rounded-full bg-primary text-white py-3.5 px-6 font-semibold w-fit cursor-pointer" - > - Try again - - )} - -
    -
    setFailed(true)}> - - - - - {(isLoading || didFail) && ( - - {isLoading && } - {didFail && } - - )} - -
    -
    -
    - - -
    - ) -} diff --git a/src/components/QRCode.tsx b/src/components/QRCode.tsx deleted file mode 100644 index 331e424..0000000 --- a/src/components/QRCode.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { memo, useMemo } from 'react' -import type { FC, ReactElement } from 'react' -// @ts-expect-error - no types -import QRCodeUtil from 'qrcode/lib/core/qrcode.js' - -const generateMatrix = (data: string): Array => { - const arr = QRCodeUtil.create(data, { errorCorrectionLevel: 'M' }).modules.data as Uint8Array - const sqrt = Math.sqrt(arr.length) - - return arr.reduce( - (rows, key, index) => { - if (index % sqrt === 0) rows.push([key]) - else rows[rows.length - 1].push(key) - - return rows - }, - [] as Array - ) -} - -const Qrcode: FC<{ data: string; size?: number }> = ({ data, size = 300 }) => { - const dots = useMemo(() => { - const dots: ReactElement[] = [] - const matrix = generateMatrix(data) - const cellSize = size / matrix.length - const qrList = [ - { x: 0, y: 0 }, - { x: 1, y: 0 }, - { x: 0, y: 1 }, - ] - - qrList.forEach(({ x, y }) => { - const x1 = (matrix.length - 7) * cellSize * x - const y1 = (matrix.length - 7) * cellSize * y - - for (let i = 0; i < 3; i++) { - dots.push( - - ) - } - }) - - matrix.forEach((row, i) => { - row.forEach((_, j) => { - if (!matrix[i][j]) return - if ((i < 7 && j < 7) || (i > matrix.length - 8 && j < 7) || (i < 7 && j > matrix.length - 8)) return - - dots.push( - - ) - }) - }) - - return dots - }, [size, data]) - - return ( - - {dots} - - ) -} - -export default memo(Qrcode) diff --git a/src/components/UserDropdown.tsx b/src/components/UserDropdown.tsx deleted file mode 100644 index aedc145..0000000 --- a/src/components/UserDropdown.tsx +++ /dev/null @@ -1,64 +0,0 @@ -'use client' - -import { FC } from 'react' -import Image from 'next/image' -import LogOutIcon from './icons/LogOutIcon' -import CheckmarkIcon from './icons/CheckmarkIcon' -import { StaticImport } from 'next/dist/shared/lib/get-img-props' -import { - DropdownMenu as DropdownRoot, - DropdownMenuTrigger, - DropdownMenuContent, - DropdownMenuSeparator, - DropdownMenuItem, -} from '@radix-ui/react-dropdown-menu' - -type Props = { - onLogOut?: () => void - marble: string | StaticImport - passport?: { country: string; flag: string | StaticImport } -} - -const UserDropdown: FC = ({ marble, passport, onLogOut }) => ( - - - - - - -
    - -

    Unique Human

    -
    -
    - {passport && ( - -
    - {passport.country} -

    Passport

    -
    -
    - )} - - - - -
    -
    -) - -export default UserDropdown diff --git a/src/components/icons/CheckmarkIcon.tsx b/src/components/icons/CheckmarkIcon.tsx deleted file mode 100644 index 56b4f2b..0000000 --- a/src/components/icons/CheckmarkIcon.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { FC, SVGAttributes } from 'react' - -const CheckmarkIcon: FC> = props => ( - - - - -) - -export default CheckmarkIcon diff --git a/src/components/icons/FailedIcon.tsx b/src/components/icons/FailedIcon.tsx deleted file mode 100644 index 2eb5c60..0000000 --- a/src/components/icons/FailedIcon.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { FC, SVGAttributes } from 'react' - -const FailedIcon: FC> = props => ( - - - - - - -) - -export default FailedIcon diff --git a/src/components/icons/LogOutIcon.tsx b/src/components/icons/LogOutIcon.tsx deleted file mode 100644 index 4633cb7..0000000 --- a/src/components/icons/LogOutIcon.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { FC, SVGAttributes } from 'react' - -const LogOutIcon: FC> = props => ( - - - -) - -export default LogOutIcon diff --git a/src/components/icons/SpinnerIcon.tsx b/src/components/icons/SpinnerIcon.tsx deleted file mode 100644 index ba19b2f..0000000 --- a/src/components/icons/SpinnerIcon.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { FC, SVGAttributes } from 'react' - -const SpinnerIcon: FC> = props => ( - - - - -) - -export default SpinnerIcon diff --git a/src/components/icons/WorldMark.tsx b/src/components/icons/WorldMark.tsx deleted file mode 100644 index 3b0abac..0000000 --- a/src/components/icons/WorldMark.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { FC, SVGAttributes } from 'react' - -const WorldMark: FC> = props => ( - - - - - - - - - - -) - -export default WorldMark diff --git a/src/fonts/TWKLausanne-300.otf b/src/fonts/TWKLausanne-300.otf deleted file mode 100644 index 88cefddfd3daf7d2d9cb98ca42f258da4b5bf43f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75112 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 z 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 diff --git a/src/fonts/TWKLausanne-400.otf b/src/fonts/TWKLausanne-400.otf deleted file mode 100644 index fe750ed2fc7dda7b37e1c608bfd8d5b001cc9a9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75748 zcmdRX2S5}#_jqP@XLbQyPrX6i)m=caOBE0lQLv#Xh#+0+0;}|5FNoz7vG;QJ-ob*s z_g>E4>)G3>SuX4Oe=~~|MGyV-`+a{jn@q~f%gf8l%S$HXrUIx#%5Q^E_uB)Hh`eA!~5G9|D zP{sCMU9D`hM*F=)$dJz;9+eQ0EFJ570-?&&5n>GE)Dh9OHccylv_HT(#6g7ATeJWn z106h@$0elq8GIt3CPGvNgrqMMBKjoL&AlNB9S6rIMkJ`?=lk3T_?ZYvswF3-rGH?N z8{oSL(oGQZMs#xsQQ&BV93R!08dji1}mF+~zbk__PlP;TeIy9~FFfgZ}=2!Tm`a0-Qou2;(Cx7s?IF zJw=qL4PVzs_u*o3xG=6G;8#v3IskcjI_aH?@<*K;;+<>;EonQ}#vPaWXW zth|o;fF$($GMpjsLq&-H#8EGhSxHCtguXBbSF4176L|OG1vvCh?`R3g!@b}}0zEsUdQ=!p8KI~GbpzrG9lZ+V6F5;0^5h*K zPjCM457h|SQcb`$LL%^MP$8%Z2t^o{7Uo~ zRFj?!`0_Fn#<*xMYRuF`je&0tQgu*Q;2l?b1-Q1zRg{Wc8Rrtu#c3@*NfVy=vV6SY zdx6ipZczS63BL}6OE|h2@ESs3n_`tD94vyDWEWz1Oet^$PR0qBJ@RX7u zA8IP9P2~XZ@U9Q4Pnm)2i9=b`6r`k#fN!O!DX%Aq#(e;|jPr+my1&Fk(3}9=$3M`f z#B?2MJd8Xsoegt0f>9v&RCgEyP&=p-BEb`9B4p)_Ogell>+9dq1noxXpAY&v#C6eQ z6ND!5=`=$h1rHwK<ukU;=*>`bGHV!!+n+zZAxcOT;s%E~-`-&!S4G1!%66*Z@il zK%EN16hJ;w7^aa7Jt_=~kS)T6VR4B(4C+kPFN|k_KD`UW5)=gV(!-acnjru6VFP4L z8x@8P(JJesN*A0`Ts|!f-`;GF?y@mZ9#D!Y%%oj>-{iP7cyh3`Yh)6cp^1++v9Wcu zfzlrfH-^G!IW*B0Sjh&&WMd)3KUqSoJ4!;ys4q%I8WfA-P&&j#!m|nTMS;j0*wqsG z!>=bicLd)Dbw+E1lC4lY{4*(0GEI0=qco(3*k14(4LN|35+(t)~Z$QfW+ zL71nt8YtWwe&gY}r_eiz5EBJdNPu|$pC$Cv$2RpWY7w6&PT-T?KrfynOazYMc|}jb zbV%o)VuZd<7igXY^yaCqPl*O->EKL+`Vxh(M&LKTmwQ94d`>>5xXedrJY1e1cn&s! z-#!2%9x&khl8;G%TB9LH478Gm5G!y|Dx^k0I?we9K=1fZ(h?yxp+sC7V8G+7hrqXt z$0Zr+(U;}xQH9$V!DU&%=D}JWf1R9wyJz=|!;lvBtNXFUOBo zeVzQcZv`oQEg9hRHGGZYdfwLeZ4$Ja=Wl*QX@EXFY`$;O0RlgMc`SJ<>t#cv@SF_s zNdgX00(N@2V1n8Tbl_VWEwq8ho2Nzulr|A?<$ER-sK@u|$MKyEsd|ckqzLbSJ11Iw zp$02}&$mnsnDA1C@8_Qj{Yz3sFCT>&5THoK0GrtTL@?TFunVw2rBzsjq2w(@CZ?OqZIjH>1s1vr1-F%s4Z-nbNGGS$nf^ zGquH0LjUvO!-ql)Oh9Nmqj{ivYy%AbrmF)62kA>9Bw|H|fI*#77-RwluK|OqCe=-9 znwSU}IDLXaSJPnA@upKv=a{Z5#Go=@P@@QgXuyCHFrYrX1uX6fnD9TmriA|a?L#8( z^M4;I!}FVe-o793KJId_Ctq8g>-zU7*fzWiygtDbNgVJ&q)_?Fv z-=H7TFF|)jG~Z)IfAn*G4E>JQ(mK9#^<7+)p)detOO&HuLn(0jKN|GR!aos}N-d`b zQoE_g)M{!4HHsQd4WRZ@J*iBp2XI6Jl|-GRPEcp43~CkVid9fmpiwQ*pz47_z)!X= zu$pKCL(&rkpdb_sdSwg3T8({QqLk=hpRFEyGIobu<>>jiiwM6@2)o>8R^#Pdh524oRFsL-g zkOw-6+M^R-4ef|dqps)@sAcCsmAVKM`ZW{+cFXSQE(%3=P&n9cqF`+q32Vy;^Z*3f za}a0GK&U+hVf;6UR}2F7H3--OlmhGGG^B-z;U6>@boxv*6jlerVI?_?G63y)9IA{a zB0qEm#PuW81HGUfXloed&FH4I9bJj8Ojn~-v?<7*inI}3i>^x7pv`Fux-RMuL!=LS z530)tG=yTQq115dcWN#*g_=RlqNY(>sqIuhYB9Bx(o)ZyVlbys2w2~Us!Ua*l$0q|muf;aquNrQz~q6z)UhyZ z`@#?%MrFeQn@-K4R#JH|EOx@sJxZO2;c^ei@RlO5OfsUY06A;Z4S?hhbSt_e-G%n2 zL+L0wfljCU(?jSSdJ_FRJ)d4h=h55f9rS+s7=4DmMBk+!gP75YXpw=aqNu7!DKZx| z6j_Rzh+2u-i@J&eMPZ^CQM@Q!G*~o3lr0)BnkJefS|rL9Z5Hhk?H3&tofcgc-4i_) zy%iBLB{mYv#FfRriWOoraeZ+^v8~ui>?Uq6?kx5d2ZvTP-`I%~o%#`JQEUR+pUq}x zv1`~Z?0)tbdx5>pK4jlX7)e!$nZ#D&F6kzTmGqHhOQuVfO14OjOKwPBNj^wrQch|r zttYjS+DltVJ4*eek|of%Fu*X{u%}^f!%V}mhSLle8?G|kY`D+xoZ%J22ZqlK z3yhFa1*57)Dx-Qv4n{6U9!B0q{zl!6dKje`4KNyNG|p(2(Nd!|Mq7>cRFG7tW|^1~ zAMftdDl%2wOWi73qfS+)Y0@ks;?r9tL`0<~CALb6O-fYvY?Z1>jE#uONLRONBY5um z->3-4;~u3+jmk)fiC6b=k4{RDh>B7trneT7S_6!T^fm(cHbP9Bq8x4XHMG&!&`!wH zt{7BCqQ=_B*0xiP@;vTXraH=0z|bCqb|y!*4Loc*AOe@i7f^t^o6ZmY*GF=AWmFyx<)9Vv5ZfO ziud*DsOh26!_(;DX#`>j^s{s9QCv&_Yv`fUxvQT8GJ8g2o3Ko)X}>bcJGf|&|B#AzQrkhg@}Ga zfqq5QjtPs23Dd-c#q*WhIW-ZyR!)NF=ANwSr%p|>jE@n#biK!iK{!Ax|C=6@-kZR~etJwyQbsB~3LZRZdhv;ZmmZU*=>re^FN8r3CGt;#pB|&u#Kxt=v))gS zNz@1x3SJ=^X&I4eJOaGWS1$NMwR}jZQ3&vL@&Udg!56CFLwewRNPx=+gmy+JCMEEY zd7pgI^t^FDyKz3XH`Ah=d`lE=m-hN+qzQB`3h??uf+n#rIw2!IU6UN&SI85s>7|KQ>$@c-BO+c1B?8I#hmXDx2?82w zNEO2I>NI^7g^@z;lHsCULJFT<2nf+UTE*BzBqygP^$}7_1ci(dAd2L8g3#8+)`9nItsMYLbVgKqS_UvS�*pFq1^Y123g(BI2VpF)@%4hM&EV z-=@%WibzdO>Yb4+z;e=)*2$5lmyjTIMRACa*XQIF1eh6`7Ukr}g+7iS-;m@~l*IS9 z07K~bA`k-NHck%3K-=g`@?#Wq3~Rk-qxX1m0g?LA+=?H~@FXf7jO#`?>utbs|{p_r5OGLTr0l1fl;u{8q9ZE#C(nqxtqJ){1$D=4vBBy?a zv~E%yWuvcEU>R#WTYZyl^-UJQ+Uf~oD|D+6W5<)&+Ro0t7>Zp9bnHqLw$m53(^J(N z+6LP?A@!m{>YIRwb8KvDZEJ05;{I`fn?&|C@eTBDW9i?<)3;+ApUxrmd_wA5nzV|K zHxbw_%>;CPb!smVuAgoo!JZoR8!Sf=EN8(SL5)Ia6-8wuFyDZ!2#gW17Y$|!u#He- zVYiV2V+|~6VO0ti4KVe9?FY;mV4r{`J6cas(-2rpV8x2+Qq)WlERbRC3U&@^9s)ZG zH6NjTidulcmO(9~!RA3NL16u$mLjk=QOiVNM?sbpwTcGg2enq% zq1Gd?fq>*%OfgMI_0}VDFDj$KRiP|gzYY(+u1Qru8lTf=6+DlV=#IUJO9TdTF z5wMm}u&sCyfe{C6TNE4`JA^1We&&Y2fI^)_=m<@nqQHDYok3tm0hEjAXEY zhm|+j!oYX~RtH$~gH;I3Qs^{AT}5CWqOMV>9Yx&`ffa_jLxIf+Yye<=p}_q32SwdS zU_+uFh`=%f#yGI2QBNtbNm0*5U^{{BMe4N(%rq2O^}G?-Z77V;Wg5&LU{j<129qKJ z(;Ao=z%T`Sx3KaDD;D(+0;?Jrb;0HY<`<%>S zoZdxrWdxQAx(aU;rK^fi0!3F7p~?od!WGOxVCkZRDX`yx<$`J{qC+XLs)13BhTUWZ zqQm)ZY&rsgAqaL~!Gr{R^T-6D{)mRMsfdn7U@wBre6WatF_GVsbwOY%p<^hpwZY~x zSlMU|g<8USK1BC~Q+kMwM_`ts6A&1t=tKl2E*k8oEfAfIzzjvFATTx3sR+zdbQ%Jq zBb|=G=mlpFzy?G2LSSs7d-EnFx(@=gBn^ngBf6hp5Q6Fe6I1^99vEf7YzdY&x<3Nz z9zB2t>l_&1z!HY$A+QG0gArJ{=u8Ag9I)bmJ&_)Qz%~X3EwJj*Srl0B;1B}XHR<69 ztb_Cje)paJjRu<@4TGf?qDPCt;6sn6!F~uvQhE{s!zn#k3f3a9ZqdKHp`pSC{s0Qh zq+oXhb0LB%0Onu{0nFdvU?Oi^k^_lVFc!N)zu%$ifn9VJ^^~ql_oB~;oJ12v2gDMw zk9fBDEfc_8VwiJS&XcgY?5rP?1Jn?r5csm zR~lGp*Dn=*3HW8hFQjtY%JZriR_RgYU{#ZeBX)#ulXTnBCmcg47>@d)E{)hw$` ztoE+DfAxbkTx(pEcak4a)Kpk2d=!HeD-;)MGBw?6PN;dImT@h=T61b$Qr1;wDlaJu zRGzBUCY(thldGmirgo+p*i*P=R^80n%-?LJ+49;|YmYXsYCgfDg2f1nzw2bxL{;>K78;BcpX|S}RykSDa4GrHm3T?Eq(Ywa3ji)vKU>Rn)-OAW1&T5bKuhxC7 zXIuYm)63?eZK&;j+oyI)yI{K%yZ&|)?Y7!ovU}BpZlY-7+a#{Z)Fy|UJhPYDH?@zj zUtoXC{*wJ`2O|e7ht>{ihh+|@9L0{!9s4*w~KGLr+v-#Y3+};f9GN2k>Rnz z<3R^ShjtwXbXeBmK*#DGTX#(9xT)iDPnl<;=OoW7og6xK@3gnGymMIRMV&u*abC7w z>0X<>jlFw$&+^{gMbf2nmlZy&kEKsHpRHY$U3+ys>C5`o^!4}M?0dt{#4puvlHZGN zt-AH;Hm2Jl|GNI3{$u=a`2Q0S7_cJXPC!ARec;r<9f2Q$x&);KoeDM$ZW^2(d_JUN zh*Muu8Vya*CH+}Zfe}}xb1N#<8H=b4X0_XiPVhMtkPW7JnO;ssMf=( zNB16MdTj6Uq^G!Nt)7lOyYx)#Ik@Mcc)$4b@i<|4B9j=KSdbK#bUoQJS)Dv7d0z6S z_8s4MUElZp>i3)0 z-?qPd|B(KJ`p@jYrT_H-%mA|iEe1pm7%*VgfL#L~4rB(J4vZYQc;KId8V}M8S}^F` zp!b985B3{8Wbn$tX9gE!nq}H%x@CH1`ejCErezMxoRYaQ^GxQg%ojt%L*zqjhjbj0 zFl5}2Eko{RRm^h8YMIp`D>AE3)`qN?L#qt6AKG$g$D#g17^X$?6Ien1}P;)nRbYVrU-RFj7inW;=C{Qm?0YJ47d zXK+6I2LX>^$?Sse3{imp9-b5MMh-LhDl>+~EV;_azO?`e(e~vqVzK30hM2JbTE4^I zV$OZWp}>oZ3x{`{o33(Ud;S)m9;=9rU$AnxDnfVn+t6_?n9RLn4;(${$-H9;!Yo51 ztdH*gw?XMvFq3=ywh_DFlj>VT+xU3dAAb~d=ZNS97DO=S> z_Z*Ar{X1bA0%5SFDFd`5vbRjDPf+<+!nP?`!{H-`$q{zF?r13-J}o+#4Ubc6a)P8D zIR}&PD#jjRy7!y9I$Jer)t20ytE4$UoJG>KS2?fkL5B|R*na46;5Kispy1BRBiY>2 zIdhjT{k?ZmQr|vFNqy!lRep-;zp^VS2|BO$s)RX8Z1#+2#JWwG$o`4ZA@c94$F^V+ zcY>WiX3Fo2^YWwiD-N&Qc6_|54Vy9|t6zFl7__Hluoep4OPrIseO_Sad)xFUX(!4;+sl-PbK)iGi*Ohuh*S%v^GXm3?~=Tw9x5a?DMM{<6}hMkw>SY~yKa7r?T#ppfoS8r@1xw2Q?s)di*Nktmr(;QC3 z)g{-rr?|8Tig8rQaN~j=xF=`AHcNE(AqEQKY=f)fM!3-f@SHGnBFHXR#SeFRn8hQ~ zPC@z-1#uz~Bnr!kBQ(?lOJ3v3%YPswU1ROOlCAw=DC#l`tN<`!87u+%fb1|~y*;}e zWxk&Zfw&^E!Ri63Airf%%(xko$IetNo|D-(qvz1%UKtao^i%Z>U5wp=gDuMFT+MPzQ6uYdqFo)yW?~D_ygffwFkLpuj{k2%Xl*{ zA`{+s$EhqHh-+XgtiiFQ23C+P6`|gXIPEgbNN`;&ZbsZmMf7hMfO-fJsB`FnWko3f=128}E)_`z0}3UjLFrWW)sMqp zhj2&Zg6@3JOq4{##q|i1d*tj-zNr{Dq@T3D&+c+5fie>q@}3+} z&zvm>mA^6jUG23p`g$ca2oIFJdWZXvhYbFeCF`|zcop6yEbUH{mkfT%H&-GncTSu{ zOv)TR?euJ=^?N`b6^JCVPo5i;;*n1huaj`@7<(LtGqu@I3vPV>xIFb?ADu|w`2uWR z9f^AY(@t`3CqqUGIN`n$oQiFjQxcL&Y#4k62K>|u#&5L`U{M>Sd%$2L76)n{Fk^HN z-U1i6v80RcCX>w)U+oRzmcz*2>Rb3uYa!V?YTqvTqVT0b%l+_pokMl3Ea+~cvt@mA zf^q_ssT)$ZCT%BEwXLgvSD}-oX!SkS4)}sH^Ihn?_(BhS4`RK_Ias~|dnG%{HNCrg zw$x676*(tw;>z-zFHs+N(>5wd;>bXvB&|p&3B}-p-Z>Dfa4Q^&Lkaj~po+}W8FIMp zBVkr{c}!}Ox}RLIoGHA9}Cwbv$aPP7xFZ{Ey@L#I-PQfofXV~1+T9$7L*G^oA3pkJ> z#vny9u=w)EV>^_#+RhKi9ay>@y$>tXczpALuA`mgXrRkRB36(L0(nU&DEY>Et=}Ho z-_gsLCg9l4OhyMI5Pwr@%b@bWf<0lXpl173mMt8YqFwa19n)VCoUBf-Bd3 zNb0LdHY>}(SF~3+SnpOZR41))ZOE4W_#Un*$Ca(`kornen}D5jG_E0ex+T)dDKxx6 z4wzlKY2$EzE~LZOjOFQzGivnLsI$Tpg|e=+9CS%`4d|u{TjRevVVYFuj;rwP7o_O< zt)?tMJvcCWqdewSXJbL#kOIc6R25l1DN2__fvfWtZ1T!O{x{5+cl z1vFCqP+;}6W+mC`d-1&Rg(w1Wtgj%Ah@=UzR>``}ECBi1^Sua`!y+92K)06t7zcvWyd^dVD;Uz&#}*fe z1+HB>N6AtzzcBniLMxdUCwxJpE(4n{<~^nTfM;{sZm>G~jPEf^C$tZ_7?}+KD9x-?x?4HP`CCriOkaw2s=GG8pk2fmlO>O6il|SUwn< zR8ndD#^R>hXu-^d}ls@gZ@+^+jKJWF$`&R09SeA-wpZ%xA!!IV`!2Tv{tWrzVw z!gNoV-&hi=eF7Ua`-L1;bThY*00vvIn{dFNT1(i)zN52T&qvi^x8nd@T|1K@EK4fr zX7+VrMzMXb6A>R}&Jrm^IYU&xYlMZUp8yh1EVbJI@i=3*vaD)9p`PxanC5;$6?UJP z^43f?25lL40sYvEEMqVnSeULwpe?=zGbRh$M>9cDhn@uGc_di7WD~K9x4{0w;!!#m zhHM1QdZPqqYav{T?M$S;7F|rFquBE1v)6JZrDQpwgSop>83L`mrIk==DM?n|f*rJj zONp?-`H#59+W8N4rV=fuUC!Lq4QY%&NMv7#CvmX#QsNB9m$GfcGa*|Uiqw}1xMLf= z<<9jm)^RV`J=5}6A5@%PpA;UR(!YJC%5@NFKa^O=T@JhA3Ygw>WW!8lP6nGgy4RQt z2PEpG@ zD`o$+nyzYnxQi^Vg{v{Zbw9M;6F{tH;}3Vep}2W?-_`M|=4{lcjHD1nXxh^CBUK%A z=l@IX---Ki&)K6_jy7jru!Oj;POEI79SblK>@A z+MJZDo~6XU;!3`MIKNbUc2r1gpVhcBBM6J zNu}68&ylKJUG!Jj3IDzpn{qA(U9s%WrM$}D>ksGx@7A+~&25&P`W7oIQW(^hHuH38~mVq-EzGAiMEB+?2aHb=Q87d+WTN zCV?^Qe*&%1TF(-aUe{1u3dceCAt>&aojV8gRb}JtwcmID>q!n9H0QAQ0|hpJ3>vrt zc4!RKrn!o=BMZ1EJMX=HwYRycNw;RTO#<&dQ_B3c%dsO@hxO{!y=PlR-HzAayghc~ z#l>}zL330u*cZK;|3Qou#Fo%R1Xjf+7<_DtD_=i`#YYyoFV`Pss=x#tz;8==;|V~(r!QU&;Yt0`vndMq1r_1F?j*Z9UNKcOi!#Obq% z?>_@ca<$(2d1?@z5Bx&R8^cKe2jcLE(AfOXLkG9dQROszQ_#IO*`Cer?Az(El>&^& z3%IxYuDpD^)3#y#KwFdA-LAe<%2Kd>0mCf}#^ODDf_8e(53aE(DrjaG1!-(aDiSl| z_<~fx&9TcfP^p^XHeKLcZv{-Lo@`0mMhv>9&P$q?Ft0{qzeSnL`z%kdK^UDG_t&0t zud!sOQ)5!8wY#-V>vOo0Qud!Bs*S`uK{Rc|){F)Fb!ghF&-c~4P`f3m(-qetPX9sx zU+p~H7{-fFU%%9jiYA>7Js+yl)|ta%lk5&4k>F5bJ)kW^tcl}m7%G<7=q@kCbhSXs zy*X{){=15MTLkg)qX3a$ysYFX`eAVMwGF?b2+F><9&_!1vc{>EuHlcNkGa=cT2Ji^&MsTBtxvbz4HcwLW0=5fi0xw-k`_<5Z#y_&mD351 z>~{`xcImeG)DWcwOQ>nj+Tj`sTn$UFVtbV~UZS%iVBOnw=dZtZ)plv7u1yS0g6=$3 z{#@wuwEkZkc0aXc6Y%-Z#?H@eEf(R&9A+Q*vC~G++&D$KM$#!N#pfq?Ag+j?>PM^3 zQRCNmG>fYrI(q)>sxW&cIsOV?hb_T?dqmMJIM_Q`iSsQavhw6>f?Mt*EiYKKY~S@{ z`APs}A}Py?2B&LVY5(Hh5o976rTdF}t({@c%5=2=+tQ)mPLve=MHw36z_0O8Q9dGq z7eqc;V;5Irf4{V7D=IctpHQ5$0n}GgvJlHM@Wg~x#m>gKtz_qR>_U1oxC%?s@ebJFPv#eIqz6f6wDv$MiLAUC zvH2Iy&IthQB?tFmdy*j3l!!Ot7~H3@rXdU-Vy>GZ;YlnU-h9oU-7NWFUdo7EGG#ll zF4nI~CYXI;6N>CEuH(3_fqwh}qi1QmaM|bFx-xi@Ik_$I3T0YL4sB-0k=NR4aF(v8 zeuTbRc>nI%dBOmFiN{NDm2Jn49a&Lg!1~=IRahV@XrKTCwwci!%2-%U67J zIfsvrb}S4Gu9VDtWTBe@a#d0+S9PdxwDZGe4M+f49Ns#J!&dJwi*2xt36>Bm_=jM> z(FWdP0YfjgQW1N+kb8aX=F=y~9nCE|I5uq1@#ZV#e^B%dzFbmZem@Q~v>{)Uu;l{m zpnde2bRZ&K$PaDtLj0<<6fYNQWzu~bw7H~|FBha{+K0jpC2z^3*_LIs4&Ly(EF5Xm z=P6(Jwk)VvI6+L+IsOa9&h$DQvsJZYZ^Wj6uFR@%-#MO&kF3^uey6+;RY2D*(c5-2 z@tgMaJ)$ULy4=-+(ibb?sL>Rr-}0<=dGh0=5r+rhNzAOo$+2oV&yX=arp-?&&5=L7 zw)NVSZ)RdQ?ce2^4X2YQWe^iT!TE!^N2fNP%2l<^JsJ5}fsJk+z-YP3g6+~bkY5OU z9eg!RrLD#0Oc*_J9GK@iV-wQOs$E1Iweoay`%R62;$|?mt%>y;{m{0-3%Ga3u0DKt zteJ_ar*q@Rp4Z+gwe@y@5pK`E+lt#;0&KwuSIWTky!QKuzwq{NGjI*U%}6kZx8+F6 zGK&?P&i=7rpJ~I&u#kPl6hXGXDTt_D?_W#?WF>Zj)rcSyhq2gf-;%wPmE&eE$QiGA zDslBsY?Z8%l_O6uY*Lok^C?FOP{VeVIf0a?EYj^MbM}CfThH)6u%Cv-nN9YYD(W@# zY1r&|$kpDeg~JvNUpQR4W$=c9;c`E}zJVRoiw|e=ORFkVFbaF3c!AO0w>RDMoad?1 zCuEFIn;;FI7CS#zzCM4+)*U<3I!#c@ekycgi%X51pIh1Q_)Xcw|8@dSCiIQqTSJ0; zzxjmNnhnguiI4U?mkVT9{@;-Ocbxj!ME8?>+DeyQCiglW(9Yp>b6#twOI~bVcKl$T zx}Af6VvCW=mXZk*vnMDX?@A|Pr_cbKKJjD6_gC3TM$BI~Y95?%e0UuU1C-x>>v^i9 zv$yVgD92K(BLrC6sVS)fe7g^OVK{!jYH{;mu zy_W8Pk-iTv$IH2sHV;Z?wRUZPkyQCKJC;hy4||8!v{)xEH%30>3j@8pP5Kf5pM%(& zBjTO5SaEgRwu4KQjbFh^jf|F%>Rz6$TKCAmt;EN9&AWX0uuEyxyL_cCe|;%j&bp73 zu}&^$(Yv3lqRUzA;wMY$auz#qqJ*|}iBv18SCtdQuA-Iq=LIH7zP5{-Ep#vYo!u+J zb;`NP`Z-=@GS<#=u3*3>XbAH&5wXWe%cGXn<;#Tl01;w>HQ3et72vS{| z&4yxCD6R>=QW+fGv@(V_ysqJWQ*tM+nzXjY7ck_;=g}j|X`VcWaQA!~nPC!?+EZ zz{nb4DbHCHdz!eNCN0jB&i%rx#||8l7OL=ZyuzNzTX$rE>J83axc3!aA%%SK=2$Q> z4F^6O#RgziAgEs^-cGM@mN~+?^+O{0YCm)#B zTGyLopd>YYbat8wZ-ZCkPv}e?aiC<${Lwj!VEQh9UQ!F!FQu`6L(!3VRoTkpH^AU< zE4`I%q_!Tq*?3qg7_u5 zGaHNxYO`chK?u{7CH3Jl5bUEJg#C1b;NUI2!5A;WVJwmS?sMyn9M`ya4_;_dKCvaR zJKfsNBtuEU@S@wK(*X%K$~}%LcrO%tkm~R4#(yko_+nA?xgbtU8CpPMmV12N*Zqp zd^cCQay)ZY(*HLmY)IO~lXBTWy#Ei5Fx_!Oc=@2lW{`MrrPgM6pP&Y*(Va9TjEYRh z>p0?h0)$dG-0cLYq#bcb58RG)Bi%gU07yqrRK4&$cpKe8Qai0}--Zfz+)_7NB8xo) zmrcE5Z{*~kc%Zns#k*}2KQ)oGP?@!9*kUNLk!t(jA#d5`m+x=6eoT7%#DT52k{nmH zyaxC0)N9<7G*rsME@|g+FWE6Oncb7tu0NwVy;0rXBP^lq2vzogLD~HjmMbK8&TH&i z1bACJ`)<53R5i&o6BNOj_grxuc%kC{V=Pl;KMvp1a=CQxs^$5Y<(P6l2k#3hnl&d< zcr7S+4Q|81{RVAb;WpQ9Ico#zv*e_%EAwImhokULW-Qss%6e!A7f89=I;q50SN-)6 zX8nSVYmO@3?C4-w$IZLBOP4*zGF2AY3^AJa!VxPKxZx`}AyX4uHhe&8`vmlj*Ql1` zU`Ez2A3x$q#hJFdyp{f2PWQO1fV(y5H`olBg?7(p4S$xV6u&FD1s=?_6*r z1+Me&Yv&}PI;^=d44=k(dzcTTmpcJg$wvh_H37xqVg z1f!0{d;fE87cfamn>?$x3WsT%GjoC`dHKi-hl}#xhs!JD!hyDG>7ZWol_XN<&ZOp5|8HgM*q?f@d2sx` zvdR(O`@OQ@kHd!-x;1Z>)}nLg^h;NjGMxx>CfpTmt9ERMKH&p=6x}calhyPkCLBI| zibS$=*KD1)WsUT}=H;u-$j^K4wr|p*tF7`XyDew&ihRYUg$c0%$$i~|RjvV{F{2tt zWn>EO0*E}>edy%=v^BxARV!yNSiD_+&To^WLqLGr2;~(vXA-kw{M_HyD%LLO9T$_< zFE(41JuqwZ5QT>%XUf#kQxw})WkiH0CWnT{&tDG;$ONW2n=_PYHu*s4BZZ92$0306 ztDPqT@C+xGbRc6G7u-og*b|^~V_Rknv1OqJxD%jp@8t1Y_q`4{BqR>$*H<+QZnkN8 zf@HB8GW60gX8w%de_yZ2UmX`3q|tIFy4$u3fH*q|*EoeOZ{L#cC)?WM5J@|?4y5WJ(gbKXNkIC^ z!R?n1L~n?is#-UF@v80eBLO?@Yytv01ug2CJ5U*&85!9{?vi~l=!K#guEDKaw0iHZ z#c^@!lpg-RsjJp0XJQ|2<$@&}*Dpx!*)u&QDk6Q!3aES}_JrnOqs>61il;L7#;;SY zOpcuEuc+_Y!Pfb3r@Px$Eu1r5?82E!SDKfh)DWOg$y54UCgr_46w2lJZozp)yS?Pqb?kRQ!x za7gyMWE;*cOSnPo_j4Pd@^hsdk8?T18{qLDiZ{IU2eTZH`M=0Fo_arv>!3Y9P`>d~ zqgGKC`#|jXvyZmQ&txBv$xy*}4VC}z+6syQk8?SO3XtSK94gw%KX|C{nE%UA;W_1J z4Han5j~ptM@cx2u&W0sR-$yX_VGE=S<~|p_2Xt4s`z&5s5W(26Gv0@P=O}^~RLTIp zy(I8#xButxI820@`Ung&v@L=rNpt4loYBe8=!HxYIjt2nukjQk9vbF3KS!v+J2o5_H z75nvYSrx%mKE-(sltA?@fjjZ^RpQj*u#CLH-r9j2&VYlu8IpzM0CR}7Bc31g3hB$Z zG<<;ZV$&d%WPmk*h_!c0<-i$V&C>3Gb`sa`g(PP-b1i54?z4(>n?l-oN5(})tHL6? z2Rq7pyjmzZn!jPg2IYoL`S~~G*ud!~0jsW^HQ}LdT63?*6$Vg>mcvx6dIWf5Ih+!M(?gPx_ zD9HkCwUV%K*pC9HtAH!PvDdi7#JITSiECCZU%7Hk;<7lEj8D*7l#yVLr^9QU=1$Gb z&966o{rcLC*RP$g!X@^kCC&h=u%kzZrj94t-@JL^i`i)F<9(HL=w|nM%ELD!r}jTlE&0)eUI%;YBP0P-)9p^By*Wv zh9em)FY)l=tPMLC*JgNs1x{mJSiT^U3lE)j9vq(tC3rA0vJj6dn9h+=@Bd~V!QChY ze?#2jHwDu;OSm}Yy_R_hb{6vscrWLOuipf#5rnlR!XM+02wAi%AqxZ{hY-Yh7x|I} z*$~Z#AzlcVgm`|Gh6^w7-UP5O;Aj%W-D8{J#$91Mr@0(E?!|TQ;)Y6F)|}MxCC!M9 zoVXt$=1<^yLm4@VJEw3@SqE&TeggLx;R@?;wcGetWdpVzsU8D6H&x}te0|*~#0)ZD z7%RYjg6ki_=Ga}1ZG3Svb6g8x-z5$A!nLoCa?-pjsoR7!=3y`5K|jG}>tA4V*hq`P z73$&Y0QxrhbsecjD#(dK-OzzpLEa^x?$qV-&$+UJT|yn;HEv0psIYLQlVsESC^!Dm z;XvpP<;8PhY;@M<4Jzy^dD(G!`dH;y$%666*1|b8SIMTyoALnCdc2^Z9=GXS3pTiG zn3Kvv(k@yZ34k`_#kGMar+s1Dl$Xwhv+ALn@>CBcPdhEn;K9rve`Liy`9sOZNgHx` zeEtA*@+OCetB9+_@>uMG5z3L0^pPDC>c}A?GOK&EGR*xVyW_x?TPoa6^2hr1o0Qij z;ZgZ#_{Upawgf6&-J##t9|vS|Cq+i6EG4!_;^*^VGDdbvX&|?hL=O#DE5qF{vD^0L zUst`7oXK0W0f0nC=bnP6>s|AMl`VJ}_wk|vQ|>Ye{Kp;#UN$R$S6Rpvyy!G%p}q9# zIthF~00;8frbDhb?`N2~;K0A_2_JQ3;c3nZ2NnzC9wID_F*^*+O7y!1t@i~z6dtfrKg7ZM58RBRRN00Q+Jh0Y~ihl`{ zY=D^ozQ+Z#1o=h6zd!`SIgBli1xOb`fi9j~K1U0Z$uFPGG^A{_baHH63N4ta%0`8s z(@NFL&uL}VBqNR2^51hHBO3k7DQZSXYmoFPdur^ZDU{WI(>bn>bRBxX*%N~)0mxy z4Vmqe=S|^ncFh$Lmg`W|^3<+32{NFw11&X8;g zsb$rSR5N>6A6HW8?9LWU!3OWANMs=gVWz2nC;Cme@_fRXfxd9ky-#3=NdBZdT>eSB!}Vu1OSns_;~R zjJ1G10#$e_De?GO+^hYP^$YqY_DIW!E^PB?X!DNaM*??3n*%y^*ctd)o1>#cgJbfx zDYy7>OYo^ zFj6lR*JC=te7X$YB%a2FB(BTLUAAuP)@3p3=){;16;WQ~Tn>3%zIf!&<%^w;xVm_C za)r%E<%NQG+&{-J|9u>0bcCD34cvIV3mGrbrHd~^h?V*0!~GE0S9j~N_7?WNO?+`+ zBN9k_p{nW=aX7cV!`WTTpqv3YgOr4wkRS9~aeDizwYjR`6HH2CTuQVeu;2VMs^^lq zGZ`$sf94D}mOl(QZcV75wnU-?vGM2+4!cQC&0UeVYEgQ(*0G*#{giNh%Ur0oxHfy( z8azOJc`xuW4%8!ZKq5<7i>Gq%X*3C}%o@GCx#!vzW#TNRO;pQ}CW?U2SxeL^9Hgx& z!Hvz}J3fv0>t+eeWlCIqH3t-3lDlQrPQ|V*{gT$Hh=WAd1&_1f?*GZYoPP4~!spUD zZ2!=NgzlMAEiKtPXt8FdTKabq^isQZr%3zF!AAi{JY5?89zFG z?*5$EEfmC$R3TE*C|c#n#=A1F+3X>shYXPq9z8f`u+p7P zb``#O2^?J+_RoD3dv{EowF&g7hm}3L#{K{uCR=o)|&|=b>N5|d|nTMAhoziEOtny&1G_VQ~z?KmhsVlUXW^}&H>w5?&Z5jT+P?uR?WB`7oct zKQS`MJh|MNN8sNsaIwo1*R5W@YUSFbL)SG9kOPjvW3#oC!FlzC;_3Q<&Ql z9q-8?@wYE0g0yqwo#>q-ALj%;T=;CN!5|TCAOb&6ryf z-2`mG*h#e2>*=c3XJnA&<-cXwHILIy05B|W1yG0?b4Q}9{!Cl_Idd1l5etB_3rPI+ zEF<<_;#{=jE=zRdpkuIx*j|Hs&oozw2HQBpE9x3nmbn*u{9B&++RNJJoE01XTWVSl zKev-s3af4%Ek~&SWb?-?UabQ+g0Yi~Tepc8zj5iZGn2JiRdv)GoLWuCGm0j|oGVY{7p zJlAAj+eg=S@7cLe>A&N!-(|()z31-U_c~?O%)d)FU)3Jpu6vs)EW5U`Rh`e_@|Wjs z-M%NV$2z4Z&cAzrBBbZaZ7O^+n_Hc`W5*7~_T{l5p@|x>c5Gb7>olcSOwYB4%33DX z*X=E_Hj?lD(Wk>-uKvnlbotBz#65dI@om9Gd{*$DJ$m1Rm91C`OFiweJ322GFTyX# zMEobCwYj6qZOY;)KxX98bUbuIk8&&>cCZV1T@A%qYD1Y{N{ zB3eX6ltCP7Rn+!5iwdaVh_h8+MYM|63J$fFDz!M)I%820k--5KQ4tXt6F}yB!%aQk zf2}jzn-GV`EAPE;pWoSMojtC-_S$Q&J)JXp^hGBgQ4y^>jND?e(c|YWSu*p@*|TS! zFl5O1V@FGFu~?_Kt4Ss@cgxo8$8Th7n{!;(4i)k1>i>|Q+rzPrb2|xAZ*SeU^|+0S zRM$?D+lMpXAh%y0ari~YjwXYTD&o&ij&*#ylcXtukCnir*{Na;fgeu`d=Y`8^#$=c z%#CmeK~_0epmHvccTVIsG1nVEZb71LZ1ITr)$wa4*T0>)E-^3b-W!>UpRjmgvNp~~ z$lpnPm-tt#eoU|UqOAH3^&J-vPgEs3WF{A^%Z{GK?{ewt<}wYRoW44Ha-wf$ecwLu z2eOiLnUjyk?_a=vti-Y@$!n5VFB-<-{@Ucmcnt>yE=ZpL;8pdX@>8<9(-VslWwH7@ zdM573N<98OK^2WpVp9@hGJ7Q#WYvSgu;B@?$xJTll_hv2ejOVzA}-k`ALx_ln>7Vo z`tbV|7I+u%v8i|sIg|geh5S8j!c8}3Cg%0Zo>KpIl5&&y!cSs}G3%0xvJxE<9fvKd zuc~Kqc|k8qm^hV`wK(zVeTdOFGtqZ-@_{TZG$pKiha#@euK#rMgAc_oh@U@VadKm_ zhJw~ETAaKlezlaa?mj8uW8V`Z@%ZG-#2w5~zq1fRPp%)6xh}pSD*+0N7x9h8j+yaA z>nLL4R7kyWVN!@4e_(Ze->k_XvpOzC^sz`jolQMX8ooIBdUAGVazNJipcEgN6`!4) zy>M}ITzu@c)2OK99=Y7clh?%7$DhuMPfA|Bcu{gTXB|-WADTp$bOFpz6W@pcs9ii< zSS2$#Fgr;SFb+SipC(CYUB{ovy7t=Sxa8P{!}!$D>`ZcMy6y$LU-!-vJMPEN{9 z^4p5|akpOq5_RKZ9A>_DT9Sl^jSxIFGcp}ET*w*+5o!^nu9_qWlF#eI79~MCGyXI> z_GNW5UXCS?h#z&*Kl%OWRYxyO-od`hLxZrP@ zalVx>B?&LaFI(_(Y{5uAzdl7AFSsz-BiV!Zm*W!Um7_<*yC%CnJw_5s-Vwip_p6du zopcfruX*J1#A--bmv}#xmj0;t(V2-c$=lZ?R_vdgQa{GWAv3ymLE;$6scXF3(@$mA zUz(iKKRfZ|4w?YkBLv&zkbD<`0a@?91Bby z?V%{C@)aA!m8c^ZCP^kUaasI!lpE6SAD>cxY4&+fCCQX@M?P|S-9%7M$p7Uahs1k# zVXt*P)@LRTs4riexT1b)R?UXBYyGe{Uv3j85_aUswY_V4WY$luzhZ5oJaIr)kDk4H zy*naK0uu6flH{b=f(5ENHLH7%-n}!UC&yPZ71=o}d2Vud{M=+hzPLIrp2)24!@sEF_r-fA?@RVf z-jf-fMX<`6UD+%AZzIm)FZ1ndc4mL=|ByG{TE4s0y)rxcI6fUWZOe{sCyIPW-~0Y` z^b6eipSu5tjA;B2y!+^M(fA+<5Y->o$9wLi41Xa6({`Eii!}M3%off-f9%5! z+$=a8RIT3pO>Ikc>h~GZkBE9pvUjHU+0f_)UMD0^&-DHv8GV{xVeav*w13v!+r%gL zpC)Eg-);Km?kuKRn)rl0=h2qNn)=-OAz9w1*rV|p@cwz$h5tGB((~G!H}=uL-O_GQ z*5T9M8U1OSrSoThbbq_(Q+3^b;_>OH>*{~vFE-*OiA_K0voX;pe&RptqkpYCFm^m2 z8PATsT2~tz6@Pa=!l7egYi#W=vm1N@@SyDIQ>VmwzmeVWkGh1;NuC#L`~&ls-#C8C zs3U*uqrLyVxD!gc|KLZ=nMyCICWQZk=Z3#Unf21Mv-!tsok@HVdn>u&7unI8#D1|v z`=#~mv!ZqV5?{yuRdzyMSyohr8;R=pGyGAszB>6#W;8LIA1s{lLj5`Q_r82K{njOQ z=g0mv_+N*;d|KUMbwgMPc(QRjt3N5#vg#W*sbq4GR)kFdk!F*;yh--Q`FmJBIr+zV zI=S+v^Xx4@ofVVgQaqN7|97|r@%E#2KIy^4v_Hg;zWu@5vwZNuX32B^khpN_w^N%} zJaXVgdCgbmY|CAFcV6DMyYlkuoS4B_~qa@><7&o z*l(FHu)j1Luxo9Ou{PHh7{|VDUk9FJ=NRkcIz3H~t|1&VJ5*xOa8BnoOsg(+%J5#LOgR2Ym9lOMoN9=|n6CNYXQ!QjW%Gg}*U5X1=}O zI75bxJi$cAo^k1TQ$Z;(t_vRGUu^oBW`~|~M5P&g_@O6MnvsVekA3opLrslY*T33_;54R(v7!0=bzOZ-)4ksW}MP;303-L*+5fmj)MlzyS46I zcZ+Gu-Ol8=>)o~PW_P10aJRTM?l)YsO}_h2_f_{L!fthIOnY~oDdhP-WZbo2xyD`2 z^%Ym#jgzsXC704;+->eB?sj(<&n@oPynoGeE6?Q`$_w;=)^?xypFquB3V&omyF!!a zz6WjU+^5{XyQ|$rCc^EQ41p9AhgM_UIfNDZI_?*|ed(_BefJTvaG2C{!j!so+OBuN zYrEV{;I$GQ*0|rg^Wn*Nx#qcVxf|SXO;74L0@t>bx)x0L5o$rQneH+qSqrXKODt9H&N@%x&_XKt8QOPlFz_boJZ^osgy9x|x-TT-?+;8Y_T0*}vY8wL=u7a*n z+Q4e}bMV~`ycJ6AM54xMC9R~TaJN%Fv_SjRxQogAb9V)Ke&c6^><{FzyB_zCz0Yh-Zhq~YQ7*e0c z{Q~Y1e0+KcFM4mt6r<7zi3GI8eV>OzYxm@gIPP=ft|sSA;3>82X^38)5$bi9%EVfs zv*$>=XpW@ZDKgNbYv8l*5Ox1f{vRO!zJ}LUAVu@ z*mst@ko=ZIz0aT_eS{b!pwLg~D6RD)e3pp>f?wy-YE~i-*YI2>EBTc6@+lavrHzQh z+=`TmLcdaExWltTHHQsQcAxeu?n33Vwc69=L*J;@r}TCr%SCs5hx=`C{LFnpaVcQ5 z7{jer=w~^!?g$~@r;mhW3GBqJFQ35JRzat`DE!+j0z{1`0f z^BQsA3aG|N9G=t>x-rdl6tH4n*D?8vv?*q$q#WJ!3*|)mU$lwkV6zzMEHWD|)hh<~ zJqV|+$E8Z8%~E=#eL7B2nyFT=a#&uyS&Z;Wi;emkh3aRb*@$fSbVLm=qZJwRZ=wyY zqC~r>`69*AZ=)Pc&_r2a+C6>MlZ#pYXPX zyqV2W`RM80qI*m0676dTF~5a+$Q@EzLrNP>2^xoJok)C7lO$|I<4J@-j!2H%zE3m8 z=Uc5AL(3H-I0~FE@5KBL>NXcA=!e#Y%TDO}ow#@g+}45TCb(Eyj^teif1;`TraAE& zUx8ohnXW;nTuF@_>)a$xUa9E$Qr-&Xl51`nPx;}}T+$-Ieb5yeuBY5GKK$t>NVj2( zOm`mgI06POnYVdG`;{U)d&a}B$+P6FPQnQrPx40gDfLh8;T3XOkgER#ALuTr#tAFZ#=}t363BvG0ktNu<|X+_8{p}M zAt0PAQcz~0R%twg^k3uihGZ0^sVRnU;v-lF>Bw_W6OlHqvvIqSEeYOsxX+T0BUnj~ zhy)U?um#*Ivk`InX`x^OY(#F0j7UK1T#-zaWvzx4argX(O^`9XhX!4~2%G z1+f}s*Z9@zC8W+pKmGsAFbmCm8?>eOvc-sIU1wu6byyxBHuz9cTxd5drj0GLWv0DtW80W^ zw%nG3L0j9_w6ztKup=d`#BNVHE3}*)w47C1&T=hh8!cyhEoVC|XPK6>t(LP=%UP-A ztkiN=QqHl^Vw}C$G`E-7OMoZX2`0x*w3nJ(dl^)SL4|8f#9nK!g^t(R>!8l{_Ii_H zZ-6>2pw4Yjb}}?7f<||kOnWDk%7RjNn`}E3dNqSy_mlE8I~^)NU>}6a57~#I`ycHi zz<;uTqUIj8k5Y4gwtqJHc7~ln{r$!M1^377W4J$VAIE(rbT5GJv#4*Od#TbrqI54+ zx<{1m(iVTCbgyLnsK9ijr57@qZOPS-o~4x;#;RMn`59x}YSZ6z<~qQ1G2L+QVS1Yb z&HiQ}*FolB-hR$?AoVzi_d~c2G=t3$e2y?9fJd5>h;_0V4SWjMFmtN;H8K8!)zCra z9IgSZiC#cH7n;k=aC13VXLE(Qnmn%I>SC@nH=6y-P39KU)!b^PlEXb*hq0zOoqQhP z8q9j?JbM=S&Zpx9h(K$XR~VCOIK~XDF?Sz z4sNL&T&^74MmacFIXFi-xV3U{sd8|0<={f);I_)aZIy#tDhHP<2e(lU&Q%W1Q4Vgc z99*g#+*~=h(Dt+aXkiD~188#x*@Mi{_E38$@DcV1;G^tO_>Qn6Xp6_#V{rMU{Ut6Z z+mmrQ&7Ovf@OqIIUT>znUZlLyCXANz>jwW1lg@lE(z^-w8s)c4`09OKn=N82$!a_9PPZ|VQny7tFM#()(rc}!@14PX%-d)j%iKrN zlxLu|y^m&E!ic^U%|`TW8D(szzmKB%Fvm$RCho7H(Nv+m&2eYD&oNf2VckW-ehSQ3 zUv+B9b?=NfDwA=~26C18XG`9qYq64}Z=#`i8ja{dq8&@GE_%uiawn#~OW!R0u-_AV zV{(lRw zjO%3GL}2`gORDHpS_X8N1iKO}u@hWzwRfw2EalswmuO0xMZXk7m@T9oXI3i4m_?|b zNm`iCXlYwo6vH#Tg_&(lkV?i;~)rJUC2z(@aoC zTA)ATB>%A1wRVl-^cy7neasz}y7U$9k(BUNRsvg)Pa*Hyc#mrfUr8=g+-cHUku){z z>evD%*SS}_SGt$M``g&7uo1qSPx*?7S<4)y1JA?tl!MEA!kY?#Y8t*8f>}1N0L+tE zneimmUCa_KV8&V`70m>{X*D*JL(66Hec z^~_P0dbtro+F8gU9wA>E$&I+SW3MYNN%iD7L!vUR|`#<(opZr>5_t6GOxGO{iFZJ&ISBcPN)x3D3GhX z*J=1#%3Z+hFQY5+UJq9JU=-C96NF)HoZc!Ed^bQv2_tfSD?G_uA(yPPID(x@8rh#C zZoBCRn!_uZN@1_>l>XSGx6DvT9dOaM^hxcdD3%S@BHuU5+@Pix%s@z3(L}sB(nci> z>GL9_u$wf5)-o&Q#bd0Gi|iUGnn)8 zjW0VM@?L2{3*6_R$@A{t+y}KrpLSjMW#4xzdBoxS?aZUU!?g;Etf9SsOK$a=VN4s&tLxyvjtx*4mfa45aEu53syl0GH+jCy2uV#=g=DCH&)+?uMxhF&tW z>$Mi4w{HZu^ca3C)%h-FUq!CUybA^n40|k}HnIk|ntDt#>1m}oHvoyX+1C;(84p&H zei1X0jJ_#j74@`{d1*Kvip#phW+?O#d2i<_^zPt30B6Q%f5ogWZd8d=>r-m2U`Ace zb=mLgW$Mw=eZhbG2a@-5!mJ{-rQ*hW9H}65komO=oH}y1(Q>zjZ_9xdFG7eWTSwel z(Tm|NsYTK7YN2dLSwEpXQi^tjmAzEn%&TaLZ~)=IpkK(>9#q;IJt-xV{?yXyY1PCM zDOigOr67(P_E3x2wkTcoRuI@mX?vPD`+gj&c4lbwPWZ9(+LZ*ebBY3s>*W*Xr~=|AKtt=jJi z2rX@T3q15aM%(*RTD${4sc9IN8VutS%0i_raJ(lSyjHojv1SBj|9x`^^EO8_wj61G zVMdXhV|r?$l4mR43^N{vFk;T&eSnT;kI;9Ac^t#ow+}NpBC`%qSHo;gQ^p~ch#3qw zd+8nwr}u3tpt#BEFWj+)+VWQIRfcM4!HHY>R$$R&;?kl5gO9pP7?EY6X%#|y4+yUm zLV4NyDf(Bc?b55$Hop)FK)&c3aF?vGiTpwf!F9F7fVUXuHISa3td<~YhLW$5P^8Jo zj_1xmVy6WPK_s1}6$yX<9;4qj6xsLxsL}eS@tZlkBC(L zo`wAVe%j9|J(x{NTIu@ zLwP4S(&BhvdLDat?%_brLYH;uUbS$(jFi|F!gICzA>*Ny=vdScde%4CQoaZ+B;QY_ zRC-T(_|ItZ*|-HXPs7&_$pg8U)|ON5O+(O&RLC(%6CAvdUg_a`I6BSO8z+jJm{hEP zGvA|mwjgzxXYzC~SyKseY^(W7tM|tKo=lP6G#F=8=-W z)wddPre8;jm%`|CHRu>JJEr@PsA=5cPgiuRAVr?=sb}_nFS{pKNhQT80e^{1mOU2Y zlk!cMt5P$*`M1kebQ4Pa6|~U(qEJVB5&DW1^h0q*CLShrV7Wo|p23M39vzsMC;}}R z*EW>!GAFu+K@Wn;?!N+Qf@Jh}Xzvje2i4z~(Q_vP$rRM4_Y^roFrD8`j@5Sfn(UBf#?Px8xLNkNY-avO#uGba#|cm_Nf$ylzlxbM2zPqNF3iBfndF_A`*VAvW*M9pO zDW`0C(k~u_Kt%5C{H>9idF~1~vV?z`QDH?j3}34A9*x5N z*sI6``dXP&mUDQq2CZ8o(|>Ep11XDRJMl=@xHO4xM**Yl8NcQGTNoA>orZ!Lsm93 zSZ(E^CrOfnqi?%?{aocT^`2~y&L&!T87`GvWhxcZy@6#$K%4?T1{7VHSw69wGRP9S zWX297um=IFd`BNp6FxP35XSeD(W_|TGC$acy4*t=B2%P?PBXq-ZK%ok{^ExOT%&1v zZY626lv@I5I6**oqm@OqDaa0$B(J`bG3r}ZU5h_T-e!uK#FfYcr> z_*?k(BhQ`Qcnd8`jbC#<&R$f;V5o z@Ln6H5WH#0RHq1g@UXSuC#U$4!8=*gnC;F9(oH>m{tD^ygLpv;)qGYVE7UM={$)dY zdGe5OicKTD0t{K%aarG@4q5eO4tz-pp8yhVI^FybUgC%R+C*AjEyx^ftv^c~w7`b- zD80Nl2T3NWHU_@bEx5}$gPnmEkivt~YdRr?gPBX!%2MHcs3p&QCfmTW$sPdhc`@RkC{u)JK)|1ft5d4 ztN8>91!Ev)F9?&Pmjup1bCI{kJz|5N8Jcf~7et4*lrwd*Qc_SOt3m>#>P_@+-j|8J zhmo*p+(WpzT+CnSB`29Svl{KaX$r_Dxz_l-uJR1A7IQy}hWV(jY(2V1KL1M&Dnn!! zqkQuK6V!bQ9p(g!8v1xGGvMn~NQFd~6?%m!vEKK55Jp>@btii7qT2>0)!KbOuZ7Bf zhgRa!nE!D3+8=Mj(Vp@7J{-db?)sFr?cwEz*KvpFQ?f!UbIR5|(tq>iqROvrxTP87 z#47kwzDp!2`fV*O06nLa9-pOwtEZ_3tJHz3|AfC(g3GynHJtQ$#rN|{-Q1n(`+O)* zcxwgMbH1BTL$urtNC-|yaTP|s5o(%TZS~aC@YJcpd)W{A?Epx(R*vTL~EF)`1 zs%p!=2)Pt5{8l1+^=!HqBi;6TdcVI<_xRs|y?r#oSu!4qsg7U5=;JOZcMsp$y4`%q zx3xZIm-7|u+UDc}JGD8vz;0_!F0k90lMC#&=HvpqtvR{C9_nYDW)y~3P< zaLh$Wnus|H9u~PR`{gZdsTJHKx#nuFx#TKe*pglI5%v*xhr49gd=@*}_h)x-A68tm zb?%?wv2vz4OJocRr?j=S$c-@6lqK>A=qU>84Wm&bMaoJSPs!LtK^SVfN8? z(0%k}x{tn%?rW~nee`X0AAN&w|+zY#iZ;_6~Hv)8_}*et_;|AD}zg z57V9OhwD!E-nx^0knUtZQg^cNuRGa)u4gw6(X$(a_3TC;J-g9Y&u;Y7vl~Ct{p^S8 ze)c1DKl@PK&pt%=vk%q%><8-Ejf3>;#y~y0aj>4VEd2x}QB)_p|rb{p`8ApM9wAXYZ{$+1YGU3s_%A-S-M=c!M z)R_*e+?jr+G*ltnGX4?U2vwuDqjv#zI2o?y)zvV<;x7^%S`3VEal5= z<;!Num(BM$(@~*(*;3DRR46YNDKD0!o#_~+yx0a_49;})OFPq1k#?q|LV0e8^4t+= zXFB#%J{zul)=l}WyYg8N<+EH_^qpP0mi0R3WVm;Z>Sx&cEn zJ=syN=Q7$WHy^6p++Ml)Nag0El$)!Rk8_ld+bSP-Q9jO7J}$FzBBN4IWaR6KjHsT- zD9{rbEtG@XD+hN}4(_BJ+(9|GlX7q?<>1!J!KKQSZ%zo z7M2l0zL+=%*=viR;(ng{74A9Q^SBprFX3KhY>d#wE4XX8SNl)Sm=|-Bw74FB#uhR1 zj77Qm+MU!(x>%vhIXpF1p=(0uUcyb!eI)m>T!C&1AzLP7q1_?0G=!Fi(5ethg8Fh(CzsU zN~Jd^bX%g(3hdR2b3IT^0OdOYl(!{>b_I~E4FTV+>ATK`=?dheQpUD3> zggy_UjZHu+L$|ddlnS>kaPv}b*_~~tO8aODn0_a|0!1@IC?|wkgiyIaQp)J@(Js-R zji4%Vi}s6N937}JUT**m4&8=^(D5NOGK4M&A(FM^Dq5{ndAErmE3_npmW9yj5LyvJDYu%?4H@RAl1i^WaBC4&s0_PO%F$u~ zcXbGLZvyHQx(!lj2r-5$bSBWTA#`F0sg!CVzNa;Ey8*ZHEv8@#bZH1p3ZYvC;`H=s zksH*$M(qh|^EGpOS>$@LGdlC7@vAiCuOgFxKXDd_EiTT|h=lK}zJ0~r-lHx@sy*H9 zAuj4ZHF6Q~R1JAgm$2oCtZI$3-yp*dnR#ilBtI}9i8mlTI7*;6` zg_=T@<|2EStSwOZHZ9j}n!=54Puy=)_Zv0LZJOF?>LRqW_EZgdnmq?tYR8&anRnoH zxr8w{Dpog27+~(h`*@ zhL73VgfGz)W+`qh1s{`eGI4)NUB+to_G*vSSmQL8v6|*s4RgPi{eI2sex=@9k*i7J zex=*}ei*4c>6fgXrYUssV6mN*%va&=g%lhj6$&4s`3{yaX1fO~4ujNpfVh}V>OM$o zzrUtAKr!jBAqQwk*-K^3hZ?f2y0`V*mHwj@|Ir$2wBkQnL*A^V7_Frkt>GsqmyXt4 zJe*HaF8zc0O6#$9xWezN{hp@zzNY!U`o6Cz4^w!Uh8d{#LFztG!ylyK2Wpss>fS@c z^bpv5?YXFL59O;KT8fs=m*n2kc}wjN)P6#3PVL%u&WmD8iHxi&Su3ZLtj%}$vH*3h zHLmV2YhJCDo?Xc!+XX}SZjdr2&FiBh1JkfDV(8U zCPLv!_0uW#GZ%!4<{R}q({M)Ft$wbEYtL3f{#U3tGoDCD^04EdYv?6 zwX6<_uD;vU_eFJoQC+5~%QVT+EEd?7YcA!Af4Sn{#&;3?+i2~VYsmeaXC=Ji zvsCR?g1=L#zBu4(6u#cKrDm_!G_P0R>ojFqZ$qAIm@Kuk)jdl?iiTosmbjQ5;)^Zt zcF#q8aS`6wK`G?CLNF^-!dsf|`!rYL=i!e77fgkJ#+|b6#zX=}Z zoz+o=+xBjYcxj8-bLqj3er!>Ur%s&}(C85R|sZ}x7eyh1J zhT8HiCUgol^0i6nKPAM|YX42c$-1^f3PJoTurr)C>qluGkZ|S!sWX$cZe{`~<>_`(jmW&FRASpH+8|0i({*i^8~ll&I{bHalgqupIgFz%>6m{N^p8YC~E$ue14+BM=N}T!dEFg zSz%8@_=~!HruIB_|5D-C6n;bDyA{4$VB1?^sab0lD7;YNlLfZF0AB4l(kq+yq$f5DRW~|W`V}Z5J;aIH+HX)?C;QkVo6J0g zU(>$iVU^H#p}OVHvGcPyv6J@in*Q(!hJ9wD`^mp+D&W{Y@cAf8dnPU6a_V$4 zwSwIL9LXPD zPGvRaB6AgA>$=1I!4KvAAE%0S#s0L|qo}#lXxSITpEpyVa3WZ>Kyt{Rb2_lLa{wzi z!l0F=hfaE~|yp{ZQWDb~>3}oC-aZ z^`&1ji+#SC$STf%n!BalYmVN3c&b_H97wB{bsw)@dIy51(rB_%sp$b?6b#TG%m7e z@9c9YoN-oU$==yx&p+>s$nw3kFFI>%WYt))*Q>o*?Hy|G7CXbJouzi(_{+vk$Y{BD z_QgcYDBU}IBK(k1v6uGwomG`}eAc;H4`#idwJp1nG$q|;lwvwk@oePSi>%ar zYu{x@$RK-&9n9DD4r5=)5WcTB)Q+{|?Zx&|c9vXaueQIoH`<%+t?V0^!hV6f*e7tW zz0clnr`reZ!}bx@QfIJkI+K#F0UlsSQ|`kof4{Q_+Ebvw z;kG;QK)&NSidy1Ncge)UOIX>-dmF;M&Z5P|scDFrkZ}JiT zmY$n`e^6Eizc~t-w{}gk!G+I)vL$hIF^LLN_lzYm3>p zl*+x5FQ%RVpB)cRoeck+07cu))4jK$aq1*wAJvx4&84E-5D9u8ixAs9=*!YaGT&a(#UC&=K?Go zjauv0@ga3;6UN7SeAfbdh`Ca1%i zBQM9&52VR@{F@`2FGLEbN!l=$@VBJh>_>5*aj?5YVZ}+H*ibg;G?=NPU*(vY6dGqGYn>Vw29{u}!pc-f#5}|I+ z-Mgzg<6c)0GCGdX@<}~hT)Ve!+Ts*KdwL>-4)^f%@UCeuxrfkR2|}T}dw36U+BNBj z7or*;M5ty@5AXJt6TJs$5i(Fg{b9k;fpLYrP5Q^H+6+;_jOjk3A#v)@r&~d0U?TQ*#8R8&+2n0UngG==S)g9HPqoMA* zp(o(#`SxE3Kcly(Gy11AynT%Rd3zB8#C+b{>l6{V^EpcL_IC(>Limkt4sc3B z2@IQ3Sd>4s)4u&zG>pep8s1(kPnYBk1p2BOLPwB{j z9)a3X`KTT34Z$5Xr#+AY(rxJkc$T5sbP&XR8tTEkXjxW22Du7t;*h=2E(Wz1+QtBU zzI_a`5!%HdD*;Xnaui_2K>vAoG02RX0lce;>Qf0wMkS+$R1A_*@sJ(|`F%_B(;@$B z*QqA%ItpkLvNCYtlGT4^t4Z$CH*&8*YEC5C)2o|U|#IjO4sRO7U zwHkGRxFy7PWzQ693H`7utM>*eDP2%OtfD%?vo7#y6_tm&pnp*pYQ@`|qQR&Yy#-{V z6RJnMA#32D3GkuzyD@bI=o$#?;-vAm&5qbLF@T$ZEw91kV*iB(w{K@Eyo7AA*rtSvnN871aRV zLf`0OWKLg#`GSFtIY84In3KHDggFitLkq?o`oO+DK^Y@YktNKxJP6*XvuHBv%ve`= zu3Y8-WeyeUI`D1zHbOiUVm>58oy$VpS%@8wgUA7%OJdp%)dfkc51|nR3kY=(dV2@L z5lHj4QhNxkA(%t(fZz;)gJ4x5ZVqX_jtYVj!bk`T2t3RdC2?bjOG7J2gS|rWHcJ2m z9v%gu4Fr1%<_|gzv}oVn0U78?%|@-MRFF?TB%JAYNgIN$Syz&-0rT>5NxCLI59C?bR*C|c871l3s3G&T zBwYuwtcd4XpTOkAz?c}d%G%uAOC6RR6__wkosbw28>6x`GdDNyr0Nls78jlfPu6Bu zZB;?Z5m6y33riadXkFU49W+Lppo^9uf)>aIff|GqAIu=v8O5SFl!g*e1PVjpC<*d{ z;8}(GBVVwhU7?l_{OtqJZV-Eck)18HbVO0`PgS91qVS|fiAW8(DeyN0YW9crZcx$( z1)^jq3q&#SPYpTNK!Z6zR0HN@fE5U>ETILTYmPdVv@DI^ZQrh>{XhX*BG4ZTaQS|g zLr|d}05=VK7!H_qW!6w`h1$YX5MYgf@(@T{Ksy`wtE2WqxIWyM2myW|KuUsM1OiMo ziWYhl33;(76#jmUqaQ2l3sjC2V5xwUfkHZ_%8_e{f?+b3j62#>q8JOFkzWu!ca5Q0OHOAxw~>1Sk!Ja$f4Af!|T@l*K@4bcMV` zpn#`Y2Z8SyPfHx&(Y57q^7AhcW>6s1;^zfl!uPv;W+gzHmth_|PZJN7hsn!yQW3x@LGi*=Wh%BLs~_rAB7bVmS>20yO$DTJ-ycukAr_K#Ncv) z$!CYgf}+o*#!_>rx3rwLp$q97B0Z5rR6|r()Kb(@WGk8{+9WzCI;@ziSg!a>RYz4{ zB~vL>CaUHtbCtcyMYYwqo^byvu|(VNGh8)HUHuWF`ue zHYPnyhMB0FohJ0ZZ{PBM5}pDTC~bSR5^X_wK*2wBL!jU!eMN*stjGW;XkLkeaX`VJ zKtVlKLsesyN}#~*9SXdS{f)mjUSPc3czX#2b%26KWfX(}1(ZMm_4XCea9^N=|HE5O z=-;VtWB8c=?=9G6|Ni~&t2d+Hgufa1#v7qKg%DD7rI2#FlLvogcevXdZ!fz&?{@y} zS+{H6=B){IJK*-fTMusCymbkoTbCgmyS4Au+*`5WN9xAbq$5gfkkL?eA*G@$Deyzl zKhxLww)9Q<5&e?>8&dp;mHkJ*(B;stX$`IA2Uj=5Wfe*i(6&N5`cG&DLH8g1tTY8X zkOXQIHHJD&J)yQyo2lv4chqR=I2B2aqlSY-L{qWU1?n926O~MDMS5Vh)&m|j0Sl@n z7zF%c>wvn#^4=ZP?;zxd{LxUD)RCZqQo))UgCCb(@+-Tc9amyUjz3(Q>pA zBrY56K>1+b9Ro}2H2MkMK)29s7>lRqB_c>mQ4~#ysTtIMY8G{qil7pyL)1~KfI3Fy zQaN;cYCE-xxvJJ$h!%nUy#UG4Qn1gLp=M}3*zhY+Q?wQ}M;l;PtODD93oOfZ|jV22h+0M_ggbQE<%$B`2{3F`U;Eck`U z1r>owa|ZQ7Kfvzd9C$7u-Wbz<)Um{RYbH5iAT3 zL5)5Dh4uo}*>g~8&p;Xf1L_rng8dT|Y%z+5{c|GHz{2n^N(Y;M9GXZ;&}7&tPNMX| zdY%Qln>lCz`W4jmV>BH7PFvIFFv~m9wzL&pi>^aApp~>S=$@LiA>D+oM>nEP>1K2b zGz!$#2=oR_m$zs<#ZnWg$<#7x1vQ^qL@lARr~}kNY9zIe+CXWj7t|lrE9xKWcj_QLs5dAaJ$cHGm z8hU+5WMiiJKYN+RwOZ6_TsNmqK@)Iyd)B3f02ml*33OTx0@ezK$Q}lxJBXJ*urUl+ zmI%{g5{T4n82B|XusdKd55aK#fG)xi+yxf@jsBq!h`u3JhiX76C}XMx)q(0nb*K7( zko$sAhrzT>gDE}*Q629{gX zjrK(i)SIKXSZ}r7X1$$yxq657PU-!mcUAA6-ZQ;ddT$spQ-_f;O_?@~7308kXFM1m zCXk6_l9(~fWM&4F#jIpDF*}$%<^=NtbCJ2u++&_Ge=}N^WoxkwSryxw?Z7&)F032t z#rm?rY&1KH&0v?X*=#O*oIS%{V(+kz*wir&-$~zHzrVh}evp2Iew_X&{mJ@s^%v`})6dr5qkmZcl>R0C8~Ts* zf7gGl|HeSiz|f$sK_df|K??&jgN_EB4V(>n8}u_6WDsHyX^?6#&S0iNmccrMtp@uI zju~7q_|@Qn!E=LRLu6RPu%4mPu%)53p@U&BLr+5=!vMqKhVh1@4JR7TGF)P~!7$tK zfZ>rE;u;NVD9vJ$qoSO>9D@?nDQd@%2z7!wF(T0{Fe=G0IxsjPHpVeFEH*|R>6j1^ z6BZbpoTPSi6(VQd-{3%~;~X535S$zx8l@iL91@!p7#ysQNpca2TmVL3lB)pTRmgEI ztKq7{;HtyWL#WfE98_{lgt>*KWskD@J%a)hdX|^>>fK9d(yOdOFCD;MI)J^BV2`Wr zUEV+dXl30;puCSjj4sQm4}j<^WcMx4?$FUSCd@-X;Srt;y-!GvjtWdp^3Y-NNQ??h z3>O-C>Hd~C?P%>SWO)axLn5N00=+8}VQFCth%H?0T>C?p`j@w}w&V%2v~V0CpdC;V z?EoFx0lLl&;KyTt&_f>ql}|YepVDFU2}=k}QTvvc_zD?*LIb}twgn2v0(I~Mb?^hr z#ye0gR1enu6=)4EhZtN2B}6C+5yo3BKvWAk>arSY9R{@yLzqw}tQ?du7M50FW%a{> zIpO8y5ki9qv#8kMsQzAV5yK;N@FH~ZA_Qg#{IjwdUfxUqYh@D|mY`P0Ldj!i3nkaCJ<1jSkl8n6OxZg4l|q604&jwp*HcJb;B`-JofJ4F3;2>N;!D=yOV;%{nIENOq2s9nj?{A4sijho zDhzsBc}bd(F;ZwSvW(lILqkJ{MuZNH;*nd~br2#)J0Ws%j*A$nPKY&&3KgOxUBstB zIY2J|Hz_nJm9N47g>*RZn|~7Gq|ngVH4Sa=dV>*A!)miVI6Trtjav>Jb@+kqMkl=Ch2_BIU3n=)M4mh6@ z;PMHfpCK`^(L7{6<{=BQ0GUq-kc9*fnNRSLg;;>hr*x3{lmMAe2#{lvqd{@1LH$N2 z@Q{UAfXt@^$U=gL%qMurLM%Y$Q##0eN`TBK_^~o~5{As&Nl+!`PF4cC#N@aV7R8mY z2;veJ#g(!M5;_*em9Pln5*Edku_&&TMRAFM&eEbIFRT#p^3vV4dv}2bNAuv==;%PR z#6)w8;Ml0x7_;EOM0KJ%Izsov=c`A+Jd6&BP1O~~C#w^az+YLG5vNXwhz;Ra5?GT$ z1OP#>R;iPOWH@*;K~8wEI*cyrm=Ms%LXJAREXfmRZebA@m;jSs9ja?AJS7N%#RCX} zDXT6k6rL&he1 zGX9}77BWFW1BL`49i>jxp(x1|YFA8`)e=hh>Ow-u=E*9jCNM58A$EjNS|KS^3vEv3x|aML1slU$7g^{cUR^+@ZZRaERqSRsYUXl2e*Zw`^bR$ZEJ3|TfpmaqVUiU=x8=*EM$ zFZpa?Y2p(V066IYI914UF6kP;6_OQ-1np;KZdoDASqH$mLKfdKXlz{}%Tbr*C}asM zD^EvRqC!pG3TfVuM73glQ- zXl$ixY^CF>IrI$uLMaBP650yghx7e!^kr7#40S2%^G z77J&I%PH`9P%Ghb7@}4ow2y*gZt!YQYiRI(Q0o!+L8uJ~{7%$H5qMPKn3vj0gByg( z5spdo5Czx|($o$L{4CTi1l|yE*nnpQ+$(U_NbRP<+e7U`;B%t(i@@(g9Tb7@1RN&R zVT6v-)Dbr)J+liW2n0n zc%Q%<0Dc$>9Ff0J)Ncs9Nz?-o_-Mc_2c9+R83o=c>V*irC~(k7{V4*64F&!^PXrzu z3L|ut1_uau*QkHMxro5Y1`Y>sQ6Vo1d;s9jqW(qTUjz3pc%Q%#L(?K~b)lPxX2C5< z(_%g3L(w%v$d>{S1Py1X_YmB70G|b2mv@iS^+YI|q8o@%9erBf6&yq0^P>GJ@Z^CH zgX$)thfv^O1NRy|6oKc19>yO!(}4(FLU0ZX&LlX&M=FFyAsX5yAR4483DIfY&LnyS0tY1xghe45PRzkI1n7Vg zWBwu^xM#qD2|hP^6aqgVJ(>nT9k}AaCx%uc@C(AV2Jm;$;}E!Wz@G!2MS45}FB!PD zz`sXNpumquPeS0~q$eZr6Vg-oGkJO{4c_biX!i3k^zgA;AH9tvUh_r0Z-=! z>LIP7httQwO*28XN2Jkn1Xs#KrZ;nzHDf1(bE8=7DxNG}BmN0o7cP=C$ri~)eMa9* zf4Kg5{VN824GtQ%Hq12KYx`^(v2K^TE9$+#wc1!@Y-t=|ywLcnNduGqCUGW9P0pKWng%z$ZmKqY z*es&iz2<|O-)@oAvO&wut-7|l+uF2saO)jy4BDi(xztwKc39h@b`9DEwcBPUHj6X+ zrM-3gtoF~$dzde^pe#(%Lz7DTD z*68TaF}~yCj{7=3vo^9GWIe(9d+Tl1MbtQ?F_O4wMyMcDg z?EbcQv7cvuqmxyqluq|L2XroQ=;ScQ;gG}IE-ktY>9V5Bt*(w;cXl)DR_N&HnCDd2 zsf$yb(hNK3RPV`@D9yaqsIs&;75y^1kZ6hx$J9 z=;N{8v;S28 ztNvuL&)`ji4-eK3@fk8}$oe670~`W^0@ep;hRTMf3@sXZZJ7PAJ%IxQmj*QtS`!=+ zA`Qt3Ssbz~WJ^eX$ihyTIVSS^$W4)Xkr$$vD4VE=s3lQ*qkf8d9<3kUJlZBYJw`ufTFjp-!h^*6i9w0`lA0uamn=@6oqQv?IE70wOR-CFNr_Kc zo^mO*R;p>LU20V7iq!nnYpKN}8jP?XF=WKJ5o<=A9PuR0C2e_HcG~rk1|wUK%ourS zl;NnBqg+NsjG8{`>S+DZX=4;)+K=fuCVI?wW44SrH|FoLb;g>F9WXY2?Ci0-$6g;> zoNkofKYd>M&*SQk^BgyQ+@Wz##>>X{9G^UX<@mz!FDEpbU_QZRg6D+66QU-Jo-kv= z$_a-jT%YiC!ao!1PHZ*Nd7}TsF%wrzJT>vJNlhkopX52oZ&JdfX_JmmMw3k@yH56; z>_0hd@`%Y(Coi15V{*adpC;d*!cI|5={#lFl*}pnrW~6}O>Opky2gNuzz@iy9rzJ` zu#G&xkJRLmSlV2wHRAt&j@uahfIS$zo;^z-GG@tw;sAy?uq5kE0E4IC1KbOo&&*(d zC;7~0Rww;6u^g_=ViPQ4NL%)k%?JFW$2rX}^8Ho*Yf=6$3zU{@%(R5m2>I~%6&t52 z)!Lh%LyJ@K_Z+Ut<`o`Tb33dpEe>se&q6Xig#&z zPeLm~&Pm%6w?cs%{>e*QTQepsEk1OZ?5m*ZTs)Jz%&wZTaLMZI9Q6r#(Vo1YW-2?g z2~*QYr-X;?@{#un9N;!xc~Ki)p-)mxy(}Z#iv0r*VsI)Mq#1;1@-q&=2VRo{*d70f zX>B&!LEDkT9dIGDgcP!0&;%Q4qAJa^)fbF#CX4M~AH^+y@0r_Wv2up^>c-vq*JQYU zt0K}&L1wd9rhUm_KU_({_C~arWo=V;QdQ@sNi<@%KiI~An+2_2%sLA?y_!lz&fe}M-ebO8cOjG&~*c!;p z%9=NGp?uZSaih`_$H%3l&Ym|?Im(L}w{iXCZ26H(YktTJT03Cu_>5_jlo^@3c4M1) zSoClkmN)tj6udhW+G(2YRcOYqiJ_5ZKZjY22+K;J;RC#iOn4K3lUO_z%W*Rtk0Xg3 zHzL!OR@!HrX5?>TZ2G(#u_B#Y*$`7@SsQY_x7As4=tB*0A6)YusfmYwsD0Hq35V^f z8s$!JW`6@(QZ-wl|Jsl@0h%z(k~`QNpTZ(?3W&eSN(X8RDR6P?ZRM8*II_OSzM5`t-DbNs4gskGs|#SKc8t z#NTM3yfn%(vHe3ci&ujM9n@|sucFzO zf5I0VinTpR0f(i~PFmKcYKU6j{HnN0?py#WcV#Vj7;MoCJnVKIAWCfpet@D z$E|<5j@v6WU`wVl6KvwsTP5#sVsc)!Y(%LGw!#6Nz)T z%)8|mNHF&cdlm;XM8dw;dgGht)k2FMNpYDZ2q?78#NGWEXYu)i44JGW566qKKQ?AA zh>1TjW^f^>f}Nnt>ud67u(*ddpW$_LcTGMsQ=5qi&{(2kNQR>D+T*Y_nei{W7V}JAD(+9B ze(U#x^3tz9xsF|!T#wEh+R7^meqsKIsGSP(yOv^N_l-VsTy~#?aQJr(&1@XHq`#-E zWJb6TTCpYMz4`DzLVL0peWR&!PSdJ-OTA|CHeAesDv^OI8T0#v?8EsA7mXh*jlaM~ z@E~j#4#IZfC)h6dxQGw?I%l_#lQCccg8orrnGsgq0)^5FH@mCTGS(2aAgye4T4n*h zppkHd!K1K*y?Hdu!J%J>t&)7Fm2hA?F2c1~Xexez8{m2^o|2AAvXGU|#}75Pz@vlf zl~|#sxDiy#`11*FAj9>{ACQg;(umyVV3S@;d^0!N!C^?aE%K|aE{F<-`r7@}`RbNWy z)vDLu-r7muka}0`>ME_L#n=&#y!dwzB>De(O)l z&K+L=!Mv1(?>dpm?PI#lSWc`7V+jgW z8kVJb#$mPg8SI&#;Sf;Ud2DGW_-z_l;YQlpP*xi^x(7P8;X73-wfn2;`CkgIQe7PT z0pq$Vf<9RJNpW4A!)cshSMMw~4(x0~s3E_;Qj}y6r(1B46^Msig9XDuA^oh{+M1e? zmFC~)weF#L{4rDX^MLtjlB*KM&jZp8`tz+hcc{+Ln4iQnh-Zm1@)dY0J9+2HKLGr{*|nTcl>58+RPiM#eBGo2-Fnv-zG zb3>>>Yt!;c8iRYV2XNYD{5PC^|4jbg$7l6q592f}(WEiNgl(lw8)d~zWz+7p4;wzeCge_Uz1<%C} zWG;iPSuz{H!QbJ(iFqb*AeqD#gLB@B#nZ`OjC4J=<-N3RSv*nOlOda7HP|f1Q#6on z#r7d}gKT}8`@Zb|_rSj-pHugA<-z+5EMux1n9l%^^*+--qjlVS44ttTi#Q_EY{7ck z8e$Etnaw=X&W1h66S4FoWuzbOTxosySlv~4bCtH$$J&_Tu4UdnuVWa__~7ox!X29q z$xr4a1`Umbi#JN=aiq%_Vj}DCV-L(c-&?SIr6Mz)9ho^|=12wR*hyQb9o{9w9%5Y2 z;}Ib=F$RP%){|H>6j;=#ASI(*GT*0*wdvm<3l< z177=lUBnmhznuN|MFVcjZxtQ6{ykj037wvr7$Of&Ub8(z>81Vof5m|#cnpUr_TfwG6k-OrMzJjHX>a*_lq15q$r5>%?9tJynEZu=}K(K=FiXBP#`}FdOs{-Y|nJ1%UEJRiWtM~ zr`g<&jjPWtR9srTa@C@>5`QtF1_pHZN&r=kZ(?ii(!AXKi}GJL_3JqYTwebNh)UG- ztf2LmXD(j z>y2ppGpQ>lZAooYFqj;0Z4=xU*M9l~uDMG2ADfd?8nX)B`;XAH=9(QG)*~Fhbl{Su z!^_3_`Qti%S5J{xIe)QmMb&uaU(b+Ye;f3*uA3$9Ji1Y7G&qip-T@R zAGEWw8e-eJo!{jr3h5+lUCeUpd|u||4cqItGN{p($j~egIZ>KGgLb3~)+aO^b$7&i zuu!_;u3nHK!L;)3p7;WSeBxHcu8LaKh_F4^rf(dvF{zQg)`WYK|Kp>Vd5)F@x%aTP zb^j3~#eXJLGZ=2$US)UUjtmifyx*E@&yKaeL>hJ@jlFSW()JS^h}7iZww$1!hKv{> z@8(@_bG%ZcTFc^g8J%$h;wUF(L=U)ON$fC1MA#hH`Hfd;+6LHyyOeb(|BC$Pu6{k| zDy3f!6!F39E6%Dfhpd3x1Ru5w?RjnVb-G~5Ut6eZ=GuKt9IjQ(C+n|=L80kiYCFz( z2dWv~S7t4K`FOl5G{gL&A-18u|ezTDm<(sxMz50YuG2`e!uv$f(cmX-ETRaiAv z84{Buc%>@akLy=#D$2gL`uMTcS0wLGDzfu8&2BEvxzz=&4P5H5x%b>^mH5=s#d(T# z&-=1O8rHqJQaVrLpjpH@Wr+8r`Rwl~C#n`Li4C!R*#fKX=k7bWLYe8#S_K5!_Xt>X zEL}nBvdtDf?uwhqVJ{{{*kkk< zKSeBiuec`%r!6%|L%5w--ZvupqeTA*x$8f=2h9*zRuzFn^lP>DI8yQw57iAyLl_jR zH(NeHE?;q26j!MaElYd$(LypxqpfOQO5JfkBWx=^uphT0Y6iDuNgU3F7ci0-V#X35 z$kVhYaPw1K{hHX~12_BxTTX490jN*rQ z|4pv)ZvMW0qm;L+rw2S@6!$-?Chl~uq9ylfO;duw6jNLd8*RnxWB1%+9=5NJzA0&X zhM$d9nPSz@b0r|K)0>u6p2}96{$tggaIu;-QE=<1Tq)})&@SS2x444tK2@SAgjtpi z`a?Pf7mVg`8*KO*cf$6>@D*I&YeQ=Ad!bIah6=Y)l4f8>KRSN(-o4`vX6?KjtgO7Q zK305j!|V7;#j&gg{+7kjA5qQLTK_Mjt`mQT{r<+%;!EMR(15pH=Q5p96%5$=!AWR| ztF#*3?f~7cupW?lRROKeFj#7y2q&n#%e*Grt12+K1&j)R=T29rI#8X9r6r5XCav8k zM&Lqnk$S)Kz@ef0{RT2y1H6{G%S(jJakcxdAxhr?c|myvOyvG!Ba7r^@|L|ZJ#~$O zM39lp*maY(Y?T!f6Ap)ge$7gl6CEkzWpQ}Sg5^n-h4EV>Td4{COaXS*;A$P;pnsY=rN7)^P{IAlN=+>`bN+YpX2`Ia z6TDID*ugE_Gel7s)H@rD`8GsiOl)EIEfJ=46TFstee%rJt0&x41bOxD+_~Rba4~3% z4s)01A2@JHesNcT1MJ2tIo9rgUo8-h0=IpRV=W60Bz_#;k|}=Q8CSt!_pd1!G@2n* zc;-Ino*~=7KNCnAcKn2Mg3Q8wVPgY!60Z)&fGL~1Hg|zy&a&;_%>mb{*g3;HE~Y!Y z#8AC@y})Bp(S)pCD{vU@{=j-tO}wP0_FR>#3DL(7@LMo}Sxk?$FC+$X!dUfb-|4vD ztz_l8NoyysohaEkerI}+EHF6L-+TDF!xQ-38>zkMsSnnZW9j3wFRu67YqeULI6L|K z#5of0#j(q_$+qRJ-n)NSvd>(F^qXTK<~XhrQ@?eW$O8P=hlbg zUw3t+%XEdgc=nu(S@K(Z6WTcp4eT~5X~wK{rAjv>b$O-$ogKKa|3bf$WMo4qz^(Z94Owq8er*47 zea8)Ml);WI7*~{@?}^7ZB+c1=Bz;t$$wS9@LqYn<$-BoK>x-u}Bn{wIxo-y>U#~RJ zz9pvQswdR9L^-|cDflf>j(%s-IxI56Ch+wcYzHr`*fEeMz421GBt4tIa$ro_8{_tT z3cHdyjMM=e^P(qbi%6%_#PTu;7#rL$JblzCwY-1JXY5bAb56l~?^YW3j$}G+tLY?x zs)3}*P*Q(52;_8j7;Z2W>kq|^BwrC!Q6&-idL#x`Ef8N1L2}i@|Md`rzcbh>d{Se> zk#*!6(_Z8DJ8>6>#AIYdDDeh-lew?8Xo)+Dw{OUpu~jLpepLdm*;h1nKci(b&ijDX z`WZlI+^fVVxJqNfOJ~nj>^o;c zE#U+nUbX*nOrf8N2}`#b6@&ZsVDVtamL+wxe{$Gf(;0Wwc81H$4R#sfY#hZlUor5~ zOBt?p^E!OJs?I%oQcKmRXWL{2c!0OQAYG4&|K3~l0@sq^UPOj#lL7Eg4(6vDsd>8P zU&9prNjI@Hv5*V~*5Ckk+@h6JR>=ipOZkqm)hllQc?CW}II(oSW-)f-@bFttwD;To zsx`*7G{(3OSuQ5%=&;wz6uI9sPsM4|nE~U+th^+XuE6IXa7}|?zupKp*p2J{_1A7v z7hX|n6hvfAm1GTG&Jp)>q%XYc5O@xIfDY}`3-=&_B(N9hLHdA^+zJ1|zy6QJs%YoL zc5*x1T{~SY9eI?0ub?h_BQy61_zCt5?Au{TG^yE1Nov`5>NS;ENi?(I6CO|4twon} zt`Yz^*4yvRWK{)vjacKGy-YbV|9?fZH-ICvFaS4bT- z8Swt*W9>+S@I5iyp{PSB5|u)hNdUq^cs-H93vg3xERjyfCyT>5(yW7>sqLNtXOfg| zBV2oBw2}~`jF+9TwH#aiehnKv>+wVH<;qhl_aDC@`?JFh(i~m~(k|mp=bm`*U|&D? z-b202&4-*gtyqUIaYuF?`1!)l!20!O#*Km2VL5K=&{^{+6cNiKdyW$k?%F5G6kFD&}rBg~z@BS%2faWJpv5|^boa1SJZAGU*R9Es zZ(k7?Jt%oh7hk2dS7=mbEAZq`#6CdCv*U$lk0);TU83BwX#KiFvdjJUT38Mo*kzL9 z5t})W+3@{}C7a}1R;NWqB#w+!hB~sDS&P5RlJD7=8WtLt7#tYCV(S!T#%#unojIPd zTX16N3%QhJV1Jpl_G%7YQIA+5>;PU1RKsY-WH#&z~-?=3@MNZgZFR`0j zUm_h#Is(_G;J!fipGOZ}Jsz?vBulw{(b~-iWrc%}wr%6z-@|WRRL&ShNP0-Hm&_sK z=%80}XDsKouHJGmcg^s~@WiMgeo0%lDHh{?+@=+)w&$#XUzQ@JH>*opyi6OZ2JoeSOW=WSfGbfI#;7~WBpLWA5dmop&cTWK_&+E1!9!2h3B8r&rLx+;yQ z{1ZA2=>BFp4f^vnbs8*$8hKTM1G!%=IGQ@&MsPp_1L!YW?*AX^B`o+nwV#|Gz>5Do zJv6ny^7P;-|HSkFy1&`G3DNTpY~7E2(6|n=l6MZb@-EHhN#x{s`}iLMh%* z9LDf3u)YcY!r6n9s{&tC8T=~kZ(Nyy__Z{&6c?@g($xYlC-7zP^8U~IHUxT9#hde$ zc@y`B=CFI~%CqNcYPqe9r(>UQv#^~b@VWnTCPaObl9AQu&l>nnx6b&j&YZb7ySnx< z-v6!G@Iz%be6tSh#$Nx?K)76)(#7A3)sruL+-Lyjb*1TZoI&yEqzQAQ`(L+(#G&-EAZ(h zRw&7I5m-pNh8g#m1^Lqk5=h_NHd4aNa26fWX4M7{ER&Z z&dAT^1bYq)86Fg_92z`iP)Au5uD1$qxbNJvTd{l3-n}d<-%iP!oxSkWN+QHWlMI< z#&D&SFVHlrqM#L?ukqwe?K+v7-mv}i&+9k;{L}s#{H_3;>?CN?IGbL*ZEeo=ymjl` z54UdiIt$+iB=K8|YjH2b`dXa`KK<}?`{TPj?*6qs@vLzu^SXyhY`UG1j>10hDnm4h zVp`hWWk(P>#P`@(;?F!_H(+?Tpsw)nPKd3Zwc5{^v&7lHeT#Tow~$Xtxs;w*m6$J5?ugf*Ykx`5Ac&G7R-V7}D4 zprOjsW%&<*ts}}zq(4Z=D6Kp zxFOwHhHY|ji-)+40={-(N}70)PQ*e+oX-%`r=%75B=T^N6b|dN_E;J58p~z4&Q@IK z2CkzZ`m8yr8A$4rx-!!A06}+%5!BC}sYCD-w>kqqC*mx_7GAiMDQ?0ecu3mh!dEVB zWTf+8(!!jy;}NVB;NQVU2jCP6K8sg35Z5=yHF*R#NS&>4I8+CIoh(9SPn1x78Quru zx#g)9>)UULwURiAU4z4hDd0$N@2*HE{@MD(kbK3xr;%*Pg#EjfxP|zo+oq(Mikafo z-=E2OB!i5-^Y-opP}yKj)#5fiZO;xJ6x>xwSh0IpteOY4BPXG^l8D8Qhl2Jg9zKa? zBPQ<3QQj8c_g1tz}Y!(*f1q&AvQY`wt9+UnmB2i zTXb_7WCTqJ2vJ0~xyR<8$i1z^PU2s7ZP}~9NIWb!=O_O8cE4O-g;g8yvSl9yK-=bq zs+HDayJOKSrYNS1Q>S?+Sjw!$VH1NR6wz%TvilD0zNo}v@!6cUJ9seaunnh_m=#|h zv}>rMJrAZ3?gDAnx$dRJJ682j>OlxS@}DFRUMZ*uDUO zG!$bOBVJwku;sY`>q>D*#ZFW~8dRt@X&CpcOd2d{Ra3*Sew9)4t6x>Pq^6tk0uIXw zsDC{czSfq4YvK_M(PPh$5mn~%EuK_a^5GVm1V92m&>{fFHOUB4vjpK8BVIwtaZ1Hf zMrsNzo_tmda_mDLk@7`VQw&9T%Lho)l~qlIlsKFM-Mxw|V19>9;R2@6XfC8*u&W>~ zCI9e+%OK-1yG+RNjUer~Q!K8Nd+FtJWg&jfJZG2OV_LC`?=mMAEM1f*U&}6k!MMW< z!~wmV!!P)>XWFswF}TNY_3awtH9j@iPaXw(v`o#=?i}`cNc>siNA%!G-VuAky@cAh z8+LnOO4_%KbM#J{yli8pa%T22oWgWuC%Z8R#)t0cA#dK^0&bqxxX|VA(+6_$mnsL( z+%){G9M?DvAKz;X`nef4CP`#C83ezYGlh)C@as7^LrH3CIPRA{M@}5wGOWLKV1EzK z_?;IN(w{Xk=eZNz8QhX3aO-MA?&|Y%&opYmPKlimF*XWLC>k~VVbAfxTe9Cf9ycW- z*RFQGHxAqHrLYNb^)QvSxYZO}yg0Ny_n?BnS3kIOdo~~6qQEWSTbi&WM|PKc4%l0y zJg;H6+-+;K_iTy|%2W&ti4KfbMDB{&x=SVv(qs}bSNs!MASU%&b|4LmUzlR4QrrA` zamLFx8DeR|5sW#D%K;b-Q``$XGR999s7@)pv0tAhwH7`0!TNB!`Tn^V2a~piu2=3| zyL-zC*{_Z#TW?pi%NdllU$%AII=Hr<1lRV#Fv6m-b|;BGe7M4@r`gaIQJa&Lej|d^ zec|THY;MD%b=iv*Thp1}qK?LT$>JuaB&8}w&lx>?)ND!H?fsV*$fP(~W0T0i*E^lD zE&K*cB!QTO5H%co*ut+{#bSuDT1gIT>TxirGI;mY9xlc;f^#27(j8vOZ9wecMKT$D zNwYi9V?-pscK_q<>AlxiDQwyBG4W~s@_|Ege>|VN|L~5jV?vfGZ?HF#JoZ@0n{{#~ z4A>*jv0O8qJ6%w4?u<`CpI!q8_UU!l=bX|S8*sThwjbEPT^*3A@XriU2gvXfNtoM8sfjjLKa8srD7Ot1W=451zm>)AgYIfw3(UKdp*iq{y zuN}8VqMdh-!;#np7^CJH1RWhtVu>>_Mqm)nFvV>n(jC6T+(5?_o(mwLjetJ_S9mTd z@b}BPhlj=6){KdXNlFE4PU!O#zRy3L*7e!Fr>@V2+mJGHx1@iWr-Ke znl@?T)T!eH7TCbM)i7*T5m?#*CA@EY>eD^O8%cNW7OsDUy?iYH+-bjj_z<^(g-=p* zPY;TBEKQA%8| zz=UnvwyoW|XV1Eb;Suo>fl8wMk?UOO@#~dSg}+{LKh>qPhkF-=RI7iX_%-+M*~kB! zg;n(hCeqi2quIkr*zrALDv%CF~d-m_oX=Oz;u8yO!U_Z_?HsPcw*?Q#a|-@8zVRkD|T z&bMjW-Gwj;k}1Xp4>)WoKC*0m_U08ygT0~$x%()j5t?isaRqdQ!k%Oi@f2cTTnqb_ zkOOZdkILZ}khZXetA*RXymjPyt|Dd$;~Ly;a0mIIAxqY)mEhcMEXM6juoS*|)Ru^e z6f98Oa2p4&SFhiZyX26(Aa`W!b|tYEOGEL@X58<;u`d^2KC}Fl1h!D=fpPI+=@NWX zoSnWlAxkZRZzzp??s(30iR69@3wV(rxlJq5Qbt-nZGr2iDBAIFSY)3*3Ew8ZBKBMz ze)_UZI&>TUgY#YLw<$>B=~2}8WFZr?J3sBPJU@Tg#@)(7kHR9)LT1D6Wd{pn1tarf zb}LR6x}Wm!U^WE%FZGoV@EaK$r1U84>weOci4Gj;>m$Q@MmLMjT)T3jr$eWHJslj} z&%pJn#du*cd{W|qn z+}PnqqPJ86^`+q7Ux~+YIrkW{gUwiwk+ncJ@4NY#^Az|r%V%C=?`*kP1UkMjZ#3|B z&!5b;L0(Hc%SnH*>_wzSpwgTTw}SVD*o;_a+;{1j;}l)l;gA9EbD8dgn}!JYlON8T zw`8vp>x!4V2cJjAJ8TR}1%rT>7%?3qycq@+EGb=YAT)I=fbN8fi zTb1Lob0_YUA3L74eV4NTLuOQB#P}$A)bM$8@P(PuZ6zJAY);4>xuW>k9pW&!St5H@--k@t;Mn*Mk_t=R+0;E)SPD zvhc}JJ1{j!I~LUDFN~cPZon>%Wz?j(mGEdykrC18n|Z*KRttgDf#s1 zuy%eeBpIy#@7`F#e|~fv#=KtggPUc3WI%H~fcU|!J3l<&rI;_%H2Of<2Y(ZGZUMiG z)MUXPac%+l&r6c$HQhMenRJHlhjqEs4R?iaslwCGKa<`; zg-8meV9|fDRI`R}Yyg!>0@DtfLIjWGA#Mw8p%fZ_pme(Crl|`)vt#S96F*HRB+V)n*8O_D|er||JcUCf5<>DWr3$}u7kX_d-t}=$C=!& zEgQD)-lvY*u80l~3>_v9iCniwiBD&6TXOd8*d^b&B{nE1DlT|vaL(p1uu&>+sUB#S zR=JU~(9Wu`eQK5W_3oTwcGE|0x3|dB{J}kbGZ7mVPsBTQ@ncNANnoY9n@Mv{^YbgM zHH+ur>tq5bWKF|Y+WpN~{2jRhX2xwsdKwSs-zNxZ^_s;k;Jty;FN`byzv|8d&Z_EK z_pRbBW(-1tP-D!zdC*@Q&1RQB_O8-7BsZK9&QsSn~^vfzKVgPxy%UzBWJ z_R6dU@4Ywa^)t`7bnMZi9{bU&ZBru>@v@zZHYM^Bxr@5Dt3I(yDle5cx^`z(;+Fb{ zGFOrAsQ-fo%uVD;z|j&gR|0OIUN&mhk6w9|q~D!1_lz?qjXk<5UUzL`VzRRAjEM{0 ze{c4@S6`j=<55RV`q3F}Q%5C=%2H-=X9ltPi)xw4Gov@B@>BUIbW544#PoXRg3>Ej zch*BRv$&HV*zP)EGr1DBx@yPtvUeZ-D+!-^^ih+>oN>m_-+aF+@#0j1FOuLf($?T4 zJ(}PkxkvDLYFpwHR#iF2B#Wv$&{3BqIwoUHOeZJCFG^OGtr(aXn;3iF{Zs2_(1?=1 zi{5(!z3=HYHK}hCwUPMhy5@Wgv3@dNIGhu$FRG8P>Ypr3@;%lkME|*(HuuZ2#Ip&$ zI&<@`oTiN`jG{6@YaZWxtZ+dEcYJAOrL~Y_*z7bSAa3CV_?D{vR zN8)woB8hsH)j!M_|KVuzXHAAwG~OvoPD+4Do*bli(6b&5?iUfdzjqCsFcD z-7-B=og9`k9aO4QH#1!^eo^A%vP3P#p+Ey`P%BQq@rFq9cYMlddi{(W?oUyCGFU|V zlM}hAIniVh>94FWB>lt_DJf<0G}2E!n|gs?$5#_;Xe2poS2T6Y)Wq`%EoEJed=8*6 zr~ZwpiL(=DlS{3XGxcrF3Yx-rDQ4YGQq1$3^iTe5Y9#qE1ANdBYENQU-4i)UFj%#+ z9&93sIs6Jq@POLX47nz5nHt$uKP+b|$m~i;IbZORNZp>p8IbXVYWM*n)xy!WrZAF2 zZ!e@?Q2fSGQR8P`X%n@VP>2M-2ppdpSF=3zLgGaZ#N|j`k*Ss^RSUmJiBj!zQpD$t zyn>1*DiuABihco(kh646RJ)**dNJ|BAfl#7=ys{2X;+bZ-4$gZpCZ8l0|hzFgv@wT zw$bVX8AS@@1}>M}B8l5k#P6(oaiJ`dwd}cJ;|7MlEru*hO-oISq|S>nEj5I!)&{s$khNrUVyw8QA0uQXe{mKd8p$of@e> zK5=U*w|+Ama%=K$`T~@<_6jRj9n=(>7~&HlOzAh*8dG;g6XUz2$2`QNHM!6Q3deM*gk}A7x1z zv<>gek?}R+$A1&rr?Mi6VmP%Q{s-z;%=u1Y1*PaGA)=l)(l86BKM`gyVOIGc;Hl?? zxBLvx{}@l=Iid{itls<+ufB8oe<<;lMEzB&U&Q-}Kzt3aSHSSze?#LllQq(lH2#i! zd~O}%6MhV^=(W+Ze#+m`VlvDe)cVG4~`yj-{R9gZ}s`&*FXME+xUOg_5LT1hCf-C_$Pm!!nb7B z|5Kmbi9bSd%ZWe!A7$Ma<~01jGNEIs3(6Y*-G2UpQMVsA;)lMk{IA9RMR~`6 z_{qO`;>Pk+gdpeWm+2e+@8*d)PrvgNx=bwjMcIPXh9Bj`H?XZM+3~A-wz}7iNPb=R zU7wTc`b6W?6DOA?J16Gw7uovGDVBSf@15D)QuU1+8B?TW{KhMHb|9Q?# zottJkj!66q%#+%g_(2x9dPefW`xD1cn=viwgEMkd=iZ;Z@b0a5=T*%dcu7It_WVR? zZ2Nr$1$;ohpfH&%GuAjJZp55!?gcI|+2+T%j^(nror8U@c?f%kc>{Za`2xGfY{34; z<{N8cw#YbkuAK`!&(1T}i8;MZ7HQ=HmGWNZlpDvXa5?~YbUK?Xr;F3oWINrQZn$@M zx|@j8!|8!Wr`AoZQ4RClPssL3(K zZO%Jk$LNR0WsiUD?2h>65-!&`m8~UI<@}a|OlNZvGMiDO;M(DC zHf8Qk_gi-z*PEumebb%mzV80T-Q|8`I=UN8DbIhCakqlydcD@UYuw%LZZgiHlwzxK zQ|_m3(yen7;Jk^@YkBVC`K5;P0{x%0-8ugb)Z7|sKTh43nj&`@wE3ReeA(UXeqeIl zH=tz9eV>*pCaUdZF_6$W>aHgASI{z7JolGz7s6G>@qGs65!Dt&ix6%EQdjl<{MmcaR zJovr)9h9t8+`n}1u7QRtp`q0BZuoE)awth_ zD(9^dszrEKDIaF5eARW=K`zU|F@qlIH?T9(zj+vf z`KKTjg$q47BWUh-Lp>UD+z6fEy^QSgklA(8vq7Z@8kQP(Hj1SD9-F>Woc;|od>NX2 zjQra~+x^Pju88Cz!KK9r_PgD;Y0GcZH!pQR(mqFI415Ybr7wvR&THu!bw60DA5eeW zkuBSmBJ>f^PdF`))q%=^fU1Fcw;}2kyaT&deAz-MeEIP6?rO4c50hgg&mPLL(fOM zR@o#i=-*=^wAT)%Ej?d*dWlu4IeZDdHd2cT741(l#;Dg_=v)bK zN=hrGem_8K6$u`3-;u1$ zmnk+mCeZci;e4YrM!??8(N6ji#{FWXMhO=Y*)HuQFqDUJ0qJ~0-$^e>xKd^bcKXx~ zg6-22&Wl2)dNABgKbxazs&1pLr<9S@I(oPo@?KAGqAgxVDqy)=xf9KUm@>MNUP;2MXmx^OiAYKKU)@?K8#z zTeWV{u)#?*TSf?kh(NKV(r}HILDJemPu&9fDO%?@VShy645P9`u@p#p)CA?*i)IYx z?SNL&CS^X+uU%SCfxHtpg`d~flZ-<}n~^7dbYK`Aehr?Rk&QK!Sv0y9@Mpj`0Sz;s zLDcj!Q-4mo>im)7CY1Bar8-w;5U}|Md;{(b!)3T+1c&>etEm9r9U+bx{(A)@O{Zt# z?z{AMLa*jXzBj0&jqa1~)94O=g(^>LTRsx%OZn*)k(95ACV{?D=Dx@Km+oTvm`B}5 zkwoRp3^d1Wljvjaok)Z~!n^CKBkx)lLQ-o_Gt=^C^7z1g#(kf;qV0@zH=yO|m}#%& z_&?$S52xV!dPPUH`&zjDdvLE)I(w~6xG^eoV%jo%$s(o?UD9KQ(;fACzwimhCRcy zuou`XOiMe(-eNl2+w4?xpuOGRVGg#xws)KU_C7n?46skxKbhm~pY5N`3HCYroEdFj zurHVs?MwD0bCO+X7n(6(dAMTP2`o!ZM_XpgOqDIS<)(wJuob4gt+bV zZE4!sR<@OCYg^maV9>_4F>P!WCG1EEtFhZr&MGZu2Q6oNEoW;jXDcmdJ1u8hEoVzD zXB#bNwU)D5%UP}Etfrh7L5qv+r6$k*-2NPRlAUDo?Pd0I6SG%9g)*ox#bnuQ?X}SH zI(r?|`A_?wCfi;Qb&8?RZBTY9G-?iwZZ{Eo2b79Jsb8BMdpGpTgaI z-$M6FrF)jry;A9(rF3_o`!AL5)kupX(~;h$ndwB2QeqCGSE(>Zqj9!oov#h+O8wA3 zyO{o_tLcGzFVn{iFn!G+GteAr2J?0p*8uAAaNLG)4KPE^k@$@;#{wT`P9@e@a~kmJ zTt}NT%uk5-Q&vL{GZVNDVNLV`^10AlVU96Za&<9RnQP2ZW(rqVbFI0-bTc=aUzzUa zW^*_B+`~1DHN}U_aPwQPA*`o94m_Kyhk3&M2@IY#a|rWi^BP#ZZvJX|nt5gsE{nN( znYYXmbAfQa4Y5Dm~wEwa&Qaf;7aA-JmuhK%E4`vgWD(vmna9f zRt|2Z92`>)&Q}g@p&VSP9Gs^d+{_+q52l43Vh^Fs9cm9X$J=3c81M)?0(g`ih3~QU zSlZ%fI~tc$>?yd6wPSHP)1HZo@OpDAyq>GP-duUTgYtTN<@Hi~rM=4ZR*tvI@okmk zTPnwA`5ZsZPNN0hY44;B+-2{AlORN>yG^s zlBS)VW9OKomG3L;v-VkFkvi5sZ=VMi*;Aoy!0P(?a9v+NOxweW_G|k!^(*VD4n5e( ztedc=j@&O&z82m-9KP7|l66|)UZeaLfv?^t4a>;823yw4ogU{&N9`5K)zeix+Z!Qya4>EP`){uVLJ!iE5tgS#c^Z_A z+Ew4cUns^bHP5YtOz0Si8DK9aby17Hk_4-$=ufyO(Je$nlvRLj=!lYkA-cx*lrSZF z3A&dU^g^Km&y=R%l6JUmK$xA>&TeMd%1B%EoH+C-QoX1d8p#eq1i0;>c4Y;iR`af- zET!%Xq@54H#n7Nw0|N7Hq+f@Y_ciY_np?t*a*^V|SWlkRv)IB7+bAU~3S8oofP*qe z)3PeFN$4jt_4?cfri>@OHz*kx){}e#mx57xzFgLJMDK*&UI^&pX`=Gl!gFiF_O!Jo zJd|(5JxYDaEUD^nLT%`;MyRBDN-c^nI-vN$-7>yi$8!T=pfzvXNoNf%e#uFbk&ny~ zW|$0KB8KSHN&$uZSrILj7ezydI<}>Dg7QKKrH!AorXr(dp?Nlxj`<}JdI>kFkx@rz zDnkfB+LRd0+o!JQvUi)*q}+o4-tm(96MD&Ppvnq`)Nnd|?dVO;w)vn0m- z93E)Ks#G&LYdKnQORhG|aBoES-vy7by5)XEdtby_M;&rF$+&t2aauC3Rts(s=5@Ye zCj2XS>se+g+b~*NMNJpe>SV?>!vtj{4V`}#FPW9`j7Lp(C2muhZGVt4e1&^CZ)3=3 z9%&VkkBsvZ;3hLKNoFUC+}ZB)v}|er-!f+33MRL>*SpucQ|LJo$eK-zpWbEOw1k-3 zm<5c81OnbEm-iGYClGjK;HwgGhgbXf)*DCZwH7LT3N^k$`bQ|U%m8hbQ8dQmXG6`h zr-c56nLCjkNW`sB<2(FChRQq?r6IhG2@AE{1*Ec`HLg%jDEEn!^h`u&w)_`ukAZ9w zw>*!s)DDtPQYHjao2RtmZ}AstuuJx_0Ii{R;78`da>45?aFqGdVp$J#Kh~WQqS-dn z%%pWJWKK5+yyX%Zopk5;ZyTu*Z|p6yLi!bEPdp?ABboie<$Lm9L+Ub)W-fvrW+z%R z>jd=q7AiANrY{g_&-@{@+D5ot@FU|?p``YumCWkZL(3fME*Ffml)lTMpFdhASCQB9 zCizNV;rYmTT4YS--UQkbA#>)=mg1GZ6KR>}5tll)dInjP@->m^bcs0pq;E~B=7f{yO*D)v=$j8J&r+^R-1Oz zbOq^DAr~2qqknFOilR|{$nzsgzgpLzc0kM5h|`{V$s}u$CGdGW!V1kq7r{X5jo4d} z!%qagls8Z9z9jzm&7+=cc*>pxVgl7@%?TZ3ji4P)owzF~cMd$0fY++P6TAq4CW|e) z(q?I$T8r7pw{1|igRXy75w41LT%oqe9MwdXsv=ibBD;&hj0-=pzwqBgk3-^9S~N)9 zv<3t}AXb7!szWR3TT6j+kW($;{Fda_3O=g=2i9YeF3ZsU-bMEAh8DZ&ht`8l3#cn5 z!YZk(_^yX5d#M=Qqw;@B=_o}_dR_W7_{GyN7hZpxX6WUYVBLNdz~hy8aKEh2|VuiGocs% zmkqOX%%z=Vj%VaLn$&Wb#StTtz~htyfm(=@IS<$2Izuy3-*cFSG0gNFOq^<YLQc7iW8-j*q&|W=>fbO(`VA_HhQ0+Vc&qjvMiM~ca;vNr9Ygk0(z6QW8GMvt z5{6n$o60n}&ye&~C2(62?SPh=PM;OiJUDH&NC5H`O|BfBEQc0SF8qWmd#QN{M-?}y zM^8dZkPJh~w@4`3J0m-u^cor7jX)$_HhBwwZSlNxB@j^K%BrYHbfKN@o%HAxNO{j) z{RI0!vi~pem(YRw@pf)X24T+vRIlapdm7&1c9k+dRYN=^R@gdtDVKEqHRDM*a!`s$ zS~7p3Ptg*khZfF}K3t85SMZkMPN8)_>y|YTjStf9cP9JQkSP-)-Xnc zeIg;YgcKb<2;1a3L}nfh(`@QZX|fxtmBTp|q`jJUjDbs+>Rz-3QbR~j`X5a>Ut5XQ zv|0%-GD2GJ>jHl3Oj9v4N2I9F!I`dmgP|9tCdYI=20J0O^zgm3nzS#wR|p^UZ)x}c zWxl8PX-?ahc_vQ>i>iba`6|7;=MG(aNR& zlS}HPx#kSelwnpV=!d)>xnav9ing?Dtud)f9oM=m(`g}(GkIP-_E}E2^MiC{KNOmQ z=v!zrfvZ0KI#Rq8M$T@&TB)JThYQKZyHD7H$d0Clt%p|98=oCPgC zOhjkc=>8o{VqDrDnXwQFnjY5%$;zDQ9tJH0J|LB(=Y?bp$F+L|mNB#N%qHqWMw6JJ z)ZWvVVA;%FNpjEBIZHMqV`N~|i z?3)%^mOw{OQh9Wd(UHtMrA;8m(k?zEd?7i?D`{r-U5&%asM!&`XuDqNo5o9Ov#XC+ zF;YcLfS2x}Q5Vnp2Y8{q{!@6tBce~p*e8$^0pEM2@_HiWZ#|D8x_8JUX}-_E>R*r( z=~R50vJ-$&_gZq??8!`8{(AJUIz|=Brz)eEDWe8uenAcMGmPvo`HeU#Y^Cb!Tjbz# za8RybB%T>cU{AwRsFwbad3D^jGkQ}$G$8nw)I7Xoc2oMy9O~PzC%9im{4&Q>(x6Y& z9#&GxG?Y68t&@tnk|9)W{!JSq8m)6g%{>oD)qkNl3ghgYFQ4eMzQ+cyay$vpZXzcWqKb)YzZ$k=U( zryUVP_6jygH5_ke^m00K)#St0wp%ni;bunmA2WBbr}1WZLieUI^1Z$JOJ2Ov@LWL) zZ|V8^^2u)nL5MKn3_yAvxH%7wsD>kQb(J#1pLE~x`QB9lSSqN>9bv4@#+h z3~zJYx#S@u_*|%&3yRp#zv*bSMYO-knd$B;D2o3<8RTHBg`tbLK~@U(7H7>_)F!haE@=7Q39_}_5{xA zDs4jcpKYb(s38Zagx)P?liJ^?&FMLfu^U&pRC)(3g;thA8bm3dTou%4BSQ|2dM)og z*o)gRxQ_A!6VZ7+Q;PhHQQqLnCpUq!bS_^sCN6jl?LBR%!Cg?wFca67rzfq`-ayP~ z$;dk7W57=O&fI&`M(3Hn7Cl1@y@pRYVBKRM>}3x*P)`_pp#vLDE8Jg5?##NOlQuL+ zK6;!?BfL%64C#~U8~8Mk0uB2iAA`N8;H8o2@8#JjpT_*fh&9N)VaUw4ASIcD^JY~7 zUymF@8Pz{OZ@E^zz;uq=X1t3;4HJy;c zvN9tns8*H{&;wHDnrfat zy}c|vn^89sg!I>juD$df?R8HhIY>`UFX5MvnPOQXRpa$YvYsv`-5=?io9F1;#80qF zk%ZC}^pB+;)|o-jskMJhyZQ9rgR&Ar!fKBwJF7e+DK{{IW|FQm;xz8-NZox1N zD%@+lF|_ahS!2{TDGYBpzrgsJkjh|alPcb1-P!)v5Nt#Ht6@>dYc!-w^^f22pH_~ z18Vf%Ab42nKzr8xg&wZEkyC>6M{4h;)vBS-T1`J6^gs=g^Lhx+Zs76%=Eb4U$Wpl{ zqapbs3Ew1va(Cf&58v6EW@`Ah*2nB}zKUJjoLpe1HYXR@ZOzFAc3X3Df!)@eTwu2~ zCl}a5J%>HRhslm%t9ykx1L2rU$Ro>)(*DWO*;n@Zl0!_#VC+=kijk{)VM}(+XEEQ` z6MmCj^XwPr$~6bFPd-QY&gZiBdN@7X5Ox;l>wfttJA{8s3a4^8`rWVscFvzhezJEy zrhDfLb?T#oo}Xl=Sy_&d~@A9U#ffO%XII2IeX_lT0F>##6w)wx_7<> zd*?ZEV1CC{Z60PHeFxn~-%|I{x6*yh?R6i08{J1=W#*arw7mu9O~U_;tI{lFXMMHq ztZ%0~pxd*%ehEG92hhC(yX#kA%l`U~M)uct(*56g$v!}LvLB&4*@x>+_CC6k{czpMew6NH@2fl657V<7L-g#%P(8bGpq|}0 zNY8E@tY3;TMx}SZ7?q?sV``M4w{p=%kKl?yEyK$(V-58{2HwNq3je&Z0<4`@j zF-XsD4A!$72k3tG-nySXru*4P>VEc^?q~0#``Kfm!f!=z zndndlDUXg+9<}gjYff_rclKBAJOrBar8wozf$-)aE;-Y2D13Ps=R0KA`(QoOG0@1F zj>D8k2kMy)`KsM%gb}{9%9n>LUpmT{1C%eblrOWDFC)sAQRT}V<;z^<%RD{PF+|UF z9HD1As+2EF^h`&U@?vx4#d77vBa|19R$gocFD~NjhMeg*SkH6}*E1bedZuHz@?4ej zT;`dMBlJv1H|4Wql+Su7pY>Ee>!p0wL;0+?p6qC@Cp!+%lO1jKWJg~;+0k83c9iMK zj#53@(M3;obk>s{&GckPYdzU&cF0da|Rnp37*b+&oOVxt((JQOeDul$+ZtALlC{w^2Uss(f6aeB9E?iHvGJkx{58 zGU9q7qexF=6e|a}Qx5K^9NbAcxPx+VC*|M@<=_^|!IjFveUyVMl!IF+2UjWw_fZax zDF+W#4)#tWby5zt%E9@{!B#oAlX7srp2(yyLgy(ov4QW^q3_KK-Hq=9`43|^gr+xg zdoTav{LeLpK=VUrRtP;ALUTgs#Sl`BFTY{j#i6g4@=CB+CvGu#DF6Eq(ow0pZ4C@p>H8H zE>!Bq-X`1qBTu z2<-@=CekY?P~Q>`)96U6po-kOtJ@K{oh(=t2sAi^Mk#bc=zA{EWOV~7)K*a-Zl|l; zS(&~C7pdE%(Cs>)y9$1T-4MD--KK`VY3Rd(PYV{}zNSE+86osY2+a~*l6$)*{t`(dM<3PJYs6K!Soe;_mp;Cof2HaG5I8bMG6R2kh9T-9bLP+U{ ztTssO^RNXvF@$~`LgN*Bpzz_sn>DULSBKEV5K6mU-h|urp<6nY>7m=*Av8-N;p`_v zNO`>IT(%WytrotA?|k(YXmKOxwY~U$tl>V#cV*$a!cB!uLCM1Ji#*y3v_@kH^l1pC z-O>;>NUDS@+!jFb9RXD2)oPe>Nj1yiT1WBL91h8ra0=yzP;m&AhfsTgilT(=8b7$G zPa~+exW!+NUm72zF&aW6L${$Jly*BVbh{vg#wawF^nMb$ofAUoa966^6najr^Z2dc zccZ!qbcaIs0?kzDp%8i*=-K$2@wejwJr+Wq+fxmE=c?}#+?K|d$5+SK18tG?ga$~`WJah>Zmh4Zqm1zs#+oW<(CSmO@RSa&LXq}q?V-HCgb zy5E&0dEKrl+?jO&a8$!c%d~ckgfX*ibKuTd;ATEo-_9DVbCzJ(Sz~qf-33pfuXSW? z8d!5FQMg3mX_AherYYR$_6DA=?$XA^U2vG7E)&#cf`*)6C*V%)fx{9jU)oq8VT`7R zO)0R!2b&bkbioH0e2k`Vrh9Q&L$T)9LMwZp=5n8=f4=5*zTjh?(Xw<@+@81OVmoTw zXEc0;Vsg2L>8AGO8uDsQ^9oJp3Jv*ymh=Hl{{f}dgBt#stf{2=fZ%2y^g~MR%WS2! z4{JIHDSVLnN?WwfmnI+I->A!jfT;6S_&`l_sNyp~ z!wl0Dsx|H>8nRm5t37uu={R*Cr)3$ZamQ&{#;f~eEz3A9%Xp3T3*}GR3fOK|oPVaA z`I!2SR`<~gFZFCqXQ`&VR8wB6VV0@;NeZ8&A%}Rjx)0ItLp1yl4Kq~T`)HUx0-Lp- zi~9CazUreTDtA5yw{qt#wLeh%PihxncW_=3TS{R(Oc=G|(%e~!{e}|}Thn|)^J=TK z?WOL$Js0)u5L?2V zYsB4Lqh;@4;Q@24#KI;Pw)jqQ=Bo{CFVnbF{4kHHyQCxY_tyNvc^~_F2}2u^bbhJu z?V5XY#jQm7p}D4fk5YAtxR`s@!&u?JDe2wr-2leftbm$>vu{|_o4`(@WPlr1h$>D6dkn`oiyK0T8d6uicT7)uQNwNDn7E3VQo7ph0|AkbJQhA z;XBm6Q`5Oa(-dvU+B?)GU*UWW6Z381fqV@qyKn@SGS-PNw!-30xr8g~z&xVw-h7a( zbXFVYNx(+_k0F0f@cx})m_@P94DLs`nF(^9=4K|yVJ66#$Gwo7nIPvw=4bBahC>`? zf}BtN=Ng_HxoKMtGeS;1@{H88$T=&{&5TeMy*ARB*=MCkt06bT!Pzb;YGOGp^Rm1j5#OULdgj+=C@;r;_;cB|Gm+3Nn)?{~&44jICuR z&-)XJ<=-U=IfI}U>MnOFH?wZ$6iJc!VX<$;W?u~{6l*G{C}+>qHgGd`kdL%)nK86x zfMs@!eD?g$Nn_UooPn(2RFZ@A4x%AV*}&n z;a3!%r?9p`i({}zooEhU*;5n?K!x&hpR?13wazfl4GdFvF0(p%JdYoluz+B zn`h0X=4Ci)E;v$q-2XSyKhq9td}zKv~Dr3a+GHr&6lmUp8a)UpCk2ziejd zzii&tf7#T^zie!|{L97;mVen;ctq3n{$62+m!eX3jPjv&wM;YmN757;sXa zuV(i8U{+E_niF*F^QALeJ~=kz7NGIts@ zISu9gOQ$2Pcz_v-lsTE&KhI2}zGap0AwQJ&mz_@L0M>bi@g1#Gn7uyVT*m6nE#}v( z(s*fk|KI7%3g;kNwya;C1rJ?ru7hvxX13c4<^7qb3#&|ra{lyq);GuL>d=3h+sr+z zJw7~c+(nmXy|{1o+2byokTrK7?XxewH0#Z?_sKqI;w2Yny|Zujxs%47o%P|q*%zJv zvvFC=_tC!O?2EEiUnKT=wYR9fL+#ySXB)MnY8Onr;^Il!CHrPyO0?|CeX}ovAF`|V z(LR6Tx!D~r+c*2NK7F&hU$$@d72_|wMBYc z)dyttTHr#pTdG~4wrC8N9Uo%LmkbWKlbyS=x@JAZ^;&o>$;v{8JHtL~XR?Mmi}ljk ztmr?-+UMWwV*9pz$G&Hm*bnW;cB%c;er}iBFP#D>?i4#EPN`Fl2G!DO?Nm9{PJ5>_ ze|Ho8{uuhN^H~M|+H7IP`Y68bceFi*Z~Gl*kLTN!qwR_ILRO0}VSV^YJK0{%dhqr3 zm-bieW|+nrTUL61kGA=$+gdQ_oPcp_d8FZmiPl6J9*B8 zDkE$k;KBAkpwCEqAZy0*T~vov{dU;pwgYwrqaBA;{Vv!oEdSGERlf&zE87dZwLJj4 zjqOVr`C2J4%ZX7*$d-g?jZa(K-gdN|ZCBgf_O!iiAMz3YmY$n`qr!OUx0^5-&XTeK`(vX!6V zX3bqfSg?y?Tc{v-s$14j#g`d2Vt~7y3^at>P=-vm1)-ZC)0VPdDV=*YUrIe0J{tp1 zjfHm8e^G0_yICe1GSSd_$5sm;e`a{B9XYP3Z&PbvMZ2R`zoojmBWO~ zWRxi9-{fC`XeM&t2ild_Yf5>LXFArA)-c>}A=&JZ^4f|+Yw_BKwkJ+) Nvg3o&9A#NM_-|dWD+vGq diff --git a/src/fonts/TiemposHeadline-Regular.ttf b/src/fonts/TiemposHeadline-Regular.ttf deleted file mode 100644 index 7c0c44ce33f66b345681a463ed483fd04f02c92c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119284 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 diff --git a/src/lib/utils.ts b/src/lib/utils.ts deleted file mode 100644 index efd8022..0000000 --- a/src/lib/utils.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { twMerge } from 'tailwind-merge' -import { clsx, type ClassValue } from 'clsx' - -export const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs)) diff --git a/src/types/images.d.ts b/src/types/images.d.ts deleted file mode 100644 index da79a40..0000000 --- a/src/types/images.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -declare module '*.png' { - const content: string - export default content -} - -declare module '*.jpg' { - const content: string - export default content -} - -declare module '*.jpeg' { - const content: string - export default content -} - -declare module '*.gif' { - const content: string - export default content -} - -declare module '*.svg' { - const content: string - export default content -} - -declare module '*.webp' { - const content: string - export default content -} - -declare module '*.avif' { - const content: string - export default content -} diff --git a/tests/integration/README.md b/tests/integration/README.md new file mode 100644 index 0000000..5842a48 --- /dev/null +++ b/tests/integration/README.md @@ -0,0 +1,18 @@ +# Integration evidence + +This directory contains W09's synthetic-only evidence for the clean-start staging +simulator. It tests the product revision named in `reports/evidence-report.md`. + +- `contract/` exercises the frozen state/action contract, browser admission, + controller composition, the HTTP boundary, session binding/replay behavior, + and all 4 biometric x 3 issuance scenarios through the real W06/W10 services. +- `privacy/` scans browser-visible projections and source/fixture surfaces for + forbidden persistence, raw media, private material, and production claims. +- `browser/` runs the built app in the separately named Chromium and desktop + WebKit Playwright projects. These are desktop synthetic results, not iPhone + results. +- `device-lab/` is the physical-iPhone runbook, schema, and explicit unexecuted + matrix. No participant biometric media is accepted or committed. +- `reports/` contains the evidence boundary and reproducible command record. + +Playwright trace and video are disabled by the Main-owned configuration. diff --git a/tests/integration/browser/authenticator.browser.spec.ts b/tests/integration/browser/authenticator.browser.spec.ts new file mode 100644 index 0000000..41307b2 --- /dev/null +++ b/tests/integration/browser/authenticator.browser.spec.ts @@ -0,0 +1,397 @@ +import { expect, test, type Page } from "@playwright/test"; +import axe from "axe-core"; +import { mkdirSync } from "node:fs"; +import { resolve } from "node:path"; + +const screenshotRoot = resolve(import.meta.dirname, "../../../test-results/screenshots"); +const viewports = [ + { width: 320, height: 568 }, + { width: 375, height: 812 }, + { width: 390, height: 844 }, + { width: 393, height: 852 }, + { width: 430, height: 932 }, +] as const; + +async function enablePasskey(page: Page) { + const cdp = await page.context().newCDPSession(page); + await cdp.send("WebAuthn.enable"); + await cdp.send("WebAuthn.addVirtualAuthenticator", { + options: { + protocol: "ctap2", ctap2Version: "ctap2_1", transport: "internal", + hasResidentKey: true, hasUserVerification: true, isUserVerified: true, + automaticPresenceSimulation: true, hasPrf: true, + }, + }); +} + +async function waitForStablePaint(page: Page) { + await expect(page.locator("main h1")).toBeVisible(); + await page.evaluate(() => new Promise((resolvePaint) => { + requestAnimationFrame(() => requestAnimationFrame(() => resolvePaint())); + })); +} + +if (!("bun" in process.versions)) { +test.beforeAll(() => mkdirSync(screenshotRoot, { recursive: true })); + +test("built app opens the live flow at the root with no sensitive work before the passkey step", async ({ + page, +}, testInfo) => { + const requests: Array<{ readonly url: string; readonly body: string | null }> = []; + const consoleMessages: string[] = []; + page.on("request", (request) => { + if (request.url().includes("/api/")) { + requests.push({ url: request.url(), body: request.postData() }); + } + }); + page.on("console", (message) => consoleMessages.push(message.text())); + + await page.goto("/"); + const main = page.getByRole("main"); + await expect(main).toHaveAttribute("data-state", "request_review"); + await expect(page.getByRole("heading", { level: 1 })).toHaveCount(1); + await expect(page).toHaveTitle("World ID"); + await expect(page.getByRole("heading", { name: "Request from Zoom" })).toBeVisible(); + await expect(page.getByText("Proof of selfie")).toBeVisible(); + await expect(page.locator(".staging-banner")).toHaveCount(1); + await expect(page.locator(".template-notice")).toHaveCount(0); + await expect(page.locator(".staging-banner")).toContainText("simulated"); + await page.getByRole("button", { name: "Continue" }).click(); + await expect(main).toHaveAttribute("data-state", "demo_authenticator_intro"); + await expect(page.getByRole("heading", { name: "Secure your World ID" })).toBeVisible(); + await expect(page.locator(".staging-banner")).toContainText("simulated"); + + expect(requests.map((request) => new URL(request.url).pathname)).toEqual([ + "/api/v0/bootstrap", + ]); + expect(requests[0]?.body).toBe("{}"); + expect(requests.some((request) => request.url.includes("/session/create"))).toBe(false); + expect(consoleMessages.join("\n")).not.toMatch(/private|secret|signature|credential|receipt|frame|pixel/i); + expect(await page.evaluate(() => ({ + local: Object.keys(localStorage), + session: Object.keys(sessionStorage), + cookies: document.cookie, + query: location.search, + }))).toEqual({ local: [], session: [], cookies: "", query: "" }); + + await waitForStablePaint(page); + await page.screenshot({ + path: resolve(screenshotRoot, `${testInfo.project.name}-passkey-intro.png`), + fullPage: true, + animations: "disabled", + }); +}); + +test("responsive viewports, enlarged text, and dynamic height do not clip horizontally", async ({ + page, +}, testInfo) => { + let enlargeText = false; + await page.route(/\/assets\/.*\.css$/, async (route) => { + const response = await route.fetch(); + const original = await response.text(); + await route.fulfill({ + response, + body: enlargeText + ? `${original}\nh1,h2,p,span,button{font-size:200% !important;line-height:1.35 !important}` + : original, + }); + }); + for (const viewport of viewports) { + enlargeText = false; + await page.setViewportSize(viewport); + await page.goto("/"); + await expect(page.getByRole("main")).toHaveAttribute("data-state", "request_review"); + const normal = await page.evaluate(() => ({ + documentWidth: document.documentElement.scrollWidth, + viewportWidth: document.documentElement.clientWidth, + mainWidth: document.querySelector("main")?.scrollWidth ?? 0, + mainClientWidth: document.querySelector("main")?.clientWidth ?? 0, + mainHeight: document.querySelector("main")?.scrollHeight ?? 0, + viewportHeight: document.documentElement.clientHeight, + })); + expect(normal.documentWidth).toBeLessThanOrEqual(normal.viewportWidth); + expect(normal.mainWidth).toBeLessThanOrEqual(normal.mainClientWidth); + expect(normal.mainHeight).toBeGreaterThanOrEqual(normal.viewportHeight); + + enlargeText = true; + await page.reload(); + await expect(page.getByRole("main")).toHaveAttribute("data-state", "request_review"); + const enlarged = await page.evaluate(() => ({ + documentWidth: document.documentElement.scrollWidth, + viewportWidth: document.documentElement.clientWidth, + bodyHeight: document.body.scrollHeight, + })); + expect(enlarged.documentWidth).toBeLessThanOrEqual(enlarged.viewportWidth); + expect(enlarged.bodyHeight).toBeGreaterThan(0); + } + + const screenshotPage = await page.context().newPage(); + await screenshotPage.setViewportSize({ width: 393, height: 852 }); + await screenshotPage.goto("/"); + await expect(screenshotPage.getByRole("main")).toHaveAttribute("data-state", "request_review"); + await waitForStablePaint(screenshotPage); + await screenshotPage.screenshot({ + path: resolve(screenshotRoot, `${testInfo.project.name}-request-review-393x852.png`), + fullPage: true, + animations: "disabled", + }); + await screenshotPage.close(); +}); + +test("automated accessibility and reduced-motion checks pass on the actual built page", async ({ + page, +}) => { + await page.addInitScript({ content: axe.source }); + await page.emulateMedia({ reducedMotion: "reduce" }); + await page.goto("/"); + const violations = await page.evaluate(async () => { + const runtime = (window as typeof window & { + axe: { run(root: Element): Promise<{ violations: unknown[] }> }; + }).axe; + return (await runtime.run(document.querySelector("main")!)).violations; + }); + expect(violations).toEqual([]); + const motion = await page.evaluate(() => { + const element = document.querySelector("button")!; + const style = getComputedStyle(element); + return { + animationDuration: style.animationDuration, + animationIterationCount: style.animationIterationCount, + transitionDuration: style.transitionDuration, + targetHeight: element.getBoundingClientRect().height, + }; + }); + expect(["0s", "0.00001s", "1e-05s"]).toContain(motion.animationDuration); + expect(["0s", "0.00001s", "1e-05s"]).toContain(motion.transitionDuration); + expect(motion.animationIterationCount).toBe("1"); + expect(motion.targetHeight).toBeGreaterThanOrEqual(44); + await expect(page.locator("main h1")).toBeFocused(); +}); + +test("returned route is explicit and contains no browser-controlled callback payload", async ({ + page, +}, testInfo) => { + await page.goto("/returned"); + await expect(page.getByRole("main")).toHaveAttribute("data-state", "returned"); + await expect(page.getByRole("heading", { level: 1 })).toHaveCount(1); + await expect(page.locator("body")).not.toContainText(/signature|receipt/i); + await expect(page.locator("body")).toContainText("did not send a proof"); + expect(new URL(page.url()).search).toBe(""); + await waitForStablePaint(page); + await page.screenshot({ + path: resolve(screenshotRoot, `${testInfo.project.name}-returned.png`), + fullPage: true, + animations: "disabled", + }); +}); + +test("records bounded synthetic navigation timing without setting a product budget", async ({ + page, +}, testInfo) => { + const observations: number[] = []; + for (let attempt = 0; attempt < 3; attempt += 1) { + const started = performance.now(); + await page.goto("/"); + await expect(page.getByRole("main")).toHaveAttribute("data-state", "request_review"); + observations.push(Math.round((performance.now() - started) * 100) / 100); + } + expect(observations.every((value) => value > 0 && value < 120_000)).toBe(true); + await testInfo.attach("desktop-synthetic-navigation-timing.json", { + body: JSON.stringify({ + evidenceSurface: testInfo.project.name, + metric: "navigation_to_request_review_ms", + observations, + productBudget: null, + }), + contentType: "application/json", + }); +}); + +test("root flow completes with live passkey invocation and camera fallback", async ({ + page, browserName, +}) => { + await page.setViewportSize({ width: 1000, height: 852 }); + await page.addInitScript({ content: axe.source }); + test.skip(browserName !== "chromium", "Virtual WebAuthn PRF uses Chromium CDP"); + await enablePasskey(page); + await page.addInitScript(() => { + Object.defineProperty(Navigator.prototype, "mediaDevices", { + configurable: true, + get: () => ({ + getUserMedia: () => Promise.reject(new DOMException("Denied", "NotAllowedError")), + }), + }); + }); + + await page.goto("http://localhost:4173/"); + const main = page.getByRole("main"); + await expect(main).toHaveAttribute("data-state", "request_review"); + await expect(page.getByRole("heading", { name: "Request from Zoom" })).toBeVisible(); + await expect(page.getByText("Proof of selfie")).toBeVisible(); + await expect(page.getByRole("complementary")).toHaveCount(0); + await expect(page.locator(".staging-banner")).toHaveCount(1); + await expect(page.locator(".staging-banner")).toContainText("simulated"); + const walkthroughViolations = await page.evaluate(async () => { + const runtime = (window as typeof window & { + axe: { run(): Promise<{ violations: unknown[] }> }; + }).axe; + return (await runtime.run()).violations; + }); + expect(walkthroughViolations).toEqual([]); + + await page.locator('[data-action="continue"]').click(); + await expect(main).toHaveAttribute("data-state", "demo_authenticator_intro"); + await expect(page.getByRole("heading", { name: "Secure your World ID" })).toBeVisible(); + + await page.locator('[data-action="start_demo_authenticator"]').click(); + await expect(main).toHaveAttribute("data-state", "demo_authenticator_ready", { timeout: 60_000 }); + await expect(page.getByRole("heading", { name: "Wallet unlocked" })).toBeVisible(); + const profile = await page.evaluate(() => JSON.parse(localStorage.getItem("world-id-wallet-v1")!)); + expect(Object.keys(profile).sort()).toEqual(["credentialId", "version"]); + expect(profile.credentialId).toMatch(/^[0-9a-f]+$/); + await expect(page.locator('[data-action="continue_to_camera"]')).toHaveText("Start selfie check"); + await page.locator('[data-action="continue_to_camera"]').click(); + // The camera-intro state auto-advances before it paints; the camera opens directly. + await expect(main).toHaveAttribute("data-state", "capture_preview"); + await expect(page.locator('[data-action="start_camera"]')).toHaveCount(0); + await expect(page.locator('[data-action="collect_frame_metadata"]')).toHaveText("Continue"); + await page.locator('[data-action="collect_frame_metadata"]').click(); + await expect(main).toHaveAttribute("data-state", "simulated_credential_ready"); + await expect(main).toHaveAttribute("data-visual-source", "figma_5132_135104"); + await expect(page.getByRole("heading", { name: "Preview complete" })).toBeVisible(); + await expect(page.getByText("Simulated result — no Selfie Check credential was issued.")).toBeVisible(); + await expect(page.locator(".hero-icon")).toHaveAttribute("src", "/assets/figma/success-emblem.svg"); + await expect(page.getByRole("button", { name: "Return to Zoom" })).toBeVisible(); + await expect(page.locator(".staging-banner")).toContainText("simulated"); + + await page.locator('[data-action="return_to_rp"]').click(); + await page.waitForURL("http://localhost:4173/returned"); + await expect(page.getByRole("main")).toHaveAttribute("data-state", "returned"); + await expect(page.getByRole("heading", { name: "Returned to Zoom" })).toBeVisible(); + await expect(page.locator(".staging-banner")).toContainText("simulated"); + await expect(page.getByRole("complementary")).toHaveCount(0); +}); + +test("the /demo alias serves the same live flow and returned page", async ({ page }) => { + await page.goto("/demo"); + await expect(page.getByRole("main")).toHaveAttribute("data-state", "request_review"); + await expect(page.getByRole("heading", { name: "Request from Zoom" })).toBeVisible(); + await expect(page.locator(".staging-banner")).toContainText("simulated"); + await page.goto("/demo/returned"); + await expect(page.getByRole("main")).toHaveAttribute("data-state", "returned"); + await expect(page.getByRole("heading", { name: "Returned to Zoom" })).toBeVisible(); +}); + +test("the same passkey reopens the encrypted wallet after reload", async ({ page, browserName }) => { + test.skip(browserName !== "chromium", "Virtual WebAuthn PRF uses Chromium CDP"); + await enablePasskey(page); + await page.goto("http://localhost:4173/"); + const unlock = async () => { + await page.locator('[data-action="continue"]').click(); + await page.locator('[data-action="start_demo_authenticator"]').click(); + await expect(page.getByRole("heading", { name: "Wallet unlocked" })).toBeVisible({ timeout: 60_000 }); + }; + await unlock(); + const before = await page.evaluate(() => localStorage.getItem("world-id-wallet-v1")); + await page.reload(); + await unlock(); + expect(await page.evaluate(() => localStorage.getItem("world-id-wallet-v1"))).toBe(before); +}); + +test("concurrent setup cannot replace wallet metadata", async ({ page }) => { + await page.goto("http://localhost:4173/"); + await page.evaluate(() => new Promise((ready) => { + void navigator.locks.request("world-id-wallet-setup-v1", () => { + ready(); + return new Promise(() => {}); + }); + })); + await page.locator('[data-action="continue"]').click(); + await page.locator('[data-action="start_demo_authenticator"]').click(); + await expect(page.getByRole("alert")).toContainText("Could not unlock"); + await expect(page.getByRole("main")).toHaveAttribute("data-state", "demo_authenticator_intro"); + expect(await page.evaluate(() => localStorage.getItem("world-id-wallet-v1"))).toBeNull(); +}); + +test("cancelled passkey creation cannot advance to capture", async ({ page }) => { + await page.addInitScript(() => { + Object.defineProperty(navigator.credentials, "create", { + value: () => Promise.reject(new DOMException("Cancelled", "NotAllowedError")), + }); + }); + await page.goto("http://localhost:4173/"); + await page.locator('[data-action="continue"]').click(); + await page.locator('[data-action="start_demo_authenticator"]').click(); + await expect(page.getByRole("alert")).toContainText("cancelled"); + await expect(page.getByRole("main")).toHaveAttribute("data-state", "demo_authenticator_intro"); + expect(await page.evaluate(() => localStorage.getItem("world-id-wallet-v1"))).toBeNull(); +}); + +test("self-hosted face model emits live guidance and cleans up", async ({ + page, + browserName, +}) => { + test.skip(browserName !== "chromium", "Chromium project owns the deterministic fake camera"); + await page.setViewportSize({ width: 1000, height: 852 }); + const modelResponses: Array<{ readonly status: number; readonly url: string }> = []; + const externalRequests: string[] = []; + page.on("request", (request) => { + if (new URL(request.url()).origin !== "http://localhost:4173") { + externalRequests.push(request.url()); + } + }); + page.on("response", (response) => { + if ( + response.url().includes("/mediapipe/") || + response.url().includes("/models/face_landmarker.task") + ) { + modelResponses.push({ status: response.status(), url: response.url() }); + } + }); + await enablePasskey(page); + + await page.goto("http://localhost:4173/demo"); + for (const action of ["continue", "start_demo_authenticator"] as const) { + await page.locator(`[data-action="${action}"]`).click(); + } + await expect(page.getByRole("main")).toHaveAttribute( + "data-state", + "demo_authenticator_ready", { timeout: 60_000 }, + ); + await page.locator('[data-action="continue_to_camera"]').click(); + await expect(page.getByRole("main")).toHaveAttribute("data-state", "capture_preview"); + await expect(page.locator('[data-live-guidance="face_not_found"]')).toBeVisible({ + timeout: 30_000, + }); + await expect(page.getByRole("heading", { name: "Move your face into the oval" })).toBeVisible(); + await expect(page.locator('[data-action="collect_frame_metadata"]')).toHaveCount(0); + const geometry = await page.evaluate(() => { + const rect = (selector: string) => { + const bounds = document.querySelector(selector)?.getBoundingClientRect(); + return bounds === undefined + ? null + : { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height }; + }; + return { + host: rect(".media-host--visible"), + clip: rect(".media-clip"), + ring: rect(".capture-ring"), + clipPath: getComputedStyle(document.querySelector(".media-clip")!).clipPath, + }; + }); + expect(geometry.ring).toEqual(geometry.host); + expect(geometry.clip).toEqual(geometry.host); + expect(geometry.clipPath.startsWith("polygon(")).toBe(true); + expect(geometry.clipPath.split(",")).toHaveLength(64); + expect(modelResponses.map(({ status }) => status)).toEqual([200, 200, 200]); + expect(modelResponses.every(({ url }) => new URL(url).origin === "http://localhost:4173")) + .toBe(true); + expect(externalRequests).toEqual([]); + + await page.getByRole("button", { name: "Cancel" }).click(); + await expect(page.getByRole("main")).toHaveAttribute("data-state", "flow_cancelled"); + expect(await page.locator("video").evaluate( + (video) => (video as HTMLVideoElement).srcObject, + )).toBeNull(); +}); +} diff --git a/tests/integration/contract/admission-and-controller.test.ts b/tests/integration/contract/admission-and-controller.test.ts new file mode 100644 index 0000000..26cedc5 --- /dev/null +++ b/tests/integration/contract/admission-and-controller.test.ts @@ -0,0 +1,469 @@ +import { describe, expect, test } from "bun:test"; +import { + PRF_INPUT_V1_SHA256, + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + SIMULATOR_BROWSER_SESSION_ERROR_V0, + SIMULATOR_BROWSER_SESSION_PORT_V0, + WEB_AUTHN_PRF_AUTHENTICATOR_V1, + type FrameBundleV0, +} from "@clean-start/contracts"; +import { + admitBrowserV1, + type BrowserAdmissionDecisionV1, + type BrowserAdmissionInputV1, +} from "@clean-start/browser-admission"; +import type { + BrowserCaptureAdapterV1, + BrowserCaptureCallbacksV1, + BrowserCaptureStartV1, +} from "../../../apps/authenticator/src/adapters/browser-capture"; +import type { BrowserAdmissionAdapterV1 } from "../../../apps/authenticator/src/adapters/browser-admission"; +import { AuthenticatorFlowControllerV1 } from "../../../apps/authenticator/src/flow/controller"; +import { createAuthenticatorServerRuntimeV0 } from "../../../apps/authenticator/src/server/runtime.server"; +import { metadataBundle } from "../testkit/runtime"; + +const policy = Object.freeze({ + version: WEB_AUTHN_PRF_AUTHENTICATOR_V1, + rpId: "auth.example.test", + allowedOrigins: Object.freeze(["https://auth.example.test"]), + userVerification: "required" as const, + prfInputSha256: PRF_INPUT_V1_SHA256, + prfOutputMapping: "verbatim_32_byte_first_result_to_world_id_4_signer_seed" as const, + secretLifecycle: "browser_memory_only" as const, +}); + +function admissionInput( + iosMajor: number, + browser: "safari" | "chrome", + overrides: Partial = {}, +): BrowserAdmissionInputV1 { + return { + actualOrigin: "https://auth.example.test", + isTopLevel: true, + frameOrigin: "same_origin", + permissionsPolicy: "allowed", + requestContext: { + transactionHandle: "validated", + returnTarget: "validated", + session: "approved", + unexpectedQueryFields: false, + }, + platform: { device: "iphone", iosMajor, browser }, + browserContext: "normal_tab", + embeddedEvidence: "none", + capabilities: { + secureContext: true, + webAuthnApi: "available", + platformUv: "available", + clientCapabilitiesApi: "unknown", + conditionalMediation: "unknown", + mediaApi: "available", + visibility: "visible", + }, + ...overrides, + }; +} + +function adapter(decision: BrowserAdmissionDecisionV1): BrowserAdmissionAdapterV1 { + return { + async evaluate() { return decision; }, + async openExternalBrowser() {}, + }; +} + +class DeterministicMetadataCapture implements BrowserCaptureAdapterV1 { + starts = 0; + stops = 0; + clears = 0; + metadataRequests = 0; + private callbacks?: BrowserCaptureCallbacksV1; + private input?: BrowserCaptureStartV1; + private emitted = false; + private pending: Promise = Promise.resolve(); + + start(input: BrowserCaptureStartV1, callbacks: BrowserCaptureCallbacksV1): void { + this.starts += 1; + this.emitted = false; + this.pending = Promise.resolve(); + this.input = input; + this.callbacks = callbacks; + void callbacks.onCaptureState("acquiring"); + void callbacks.onCaptureState("awaiting_first_frame"); + void callbacks.onCaptureState("preview"); + } + + requestMetadataCollection(): void { + this.metadataRequests += 1; + if (this.emitted || this.callbacks === undefined || this.input === undefined) return; + this.emitted = true; + const callbacks = this.callbacks; + const input = this.input; + this.pending = (async () => { + await callbacks.onQuality({ + version: "client_quality_policy_v0", + policyId: input.qualityPolicy.policyId, + action: "ready", + reasonCodes: [], + }); + const artifact: FrameBundleV0 = await metadataBundle({ + kind: "simulator_browser_session_view_v0", + version: "simulator_browser_session_port_v0", + mode: "simulation", + environment: "staging", + sessionId: input.sessionId, + browserHandle: "test-only-not-serialized", + nonceBase64Url: "not-used-directly", + state: "capture_ready", + code: "capture_ready", + retryable: false, + expiresAt: input.policy.expiresAt, + capturePolicy: input.policy, + artifactSummary: null, + }, input.accountPublicMaterialDigestSha256); + const reboundArtifact = { + ...artifact, + nonceDigestSha256: input.nonceDigestSha256, + }; + const finalized = { + ...reboundArtifact, + artifactDigestSha256: await (async () => { + const { computeFrameBundleDigestV0 } = await import("@clean-start/contracts"); + return computeFrameBundleDigestV0(reboundArtifact); + })(), + }; + await callbacks.onArtifactReady(finalized); + await callbacks.onCaptureState("artifact_ready"); + await callbacks.onCaptureState("cleaning_up"); + await callbacks.onComplete(); + })(); + } + + stop(): void { this.stops += 1; } + clearTransientMedia(): void { this.clears += 1; } + unmount(): void { this.stop(); this.clearTransientMedia(); } + async wait(): Promise { await this.pending; } +} + +describe("browser admission and controller composition", () => { + test.each([15, 16, 17])("freezes iOS %i Safari and Chrome to update-only", (iosMajor) => { + for (const browser of ["safari", "chrome"] as const) { + const result = admitBrowserV1(policy, admissionInput(iosMajor, browser)); + expect(result.outcome).toBe("ios_update_required"); + expect(result.mayStartSensitiveFlow).toBe(false); + expect(result.browser).toBe(browser); + } + }); + + test("keeps iOS 18+ Safari and Chrome as separate candidates", () => { + for (const browser of ["safari", "chrome"] as const) { + const result = admitBrowserV1(policy, admissionInput(18, browser)); + expect(result.outcome).toBe("eligible_candidate"); + expect(result.mayStartSensitiveFlow).toBe(true); + expect(result.browser).toBe(browser); + } + }); + + test.each([ + ["insecure", { capabilities: { ...admissionInput(18, "safari").capabilities, secureContext: false } }, "insecure_context"], + ["framed", { isTopLevel: false, frameOrigin: "cross_origin" as const }, "context_not_top_level"], + ["embedded", { browserContext: "embedded" as const, embeddedEvidence: "confirmed" as const }, "embedded_browser_handoff"], + ["private", { browserContext: "private_or_unknown" as const }, "private_or_unknown_context"], + ["PWA", { browserContext: "installed_pwa" as const }, "private_or_unknown_context"], + ] as const)("rejects %s contexts before sensitive work", (_name, overrides, expected) => { + const result = admitBrowserV1(policy, admissionInput(18, "safari", overrides)); + expect(result.outcome).toBe(expected); + expect(result.mayStartSensitiveFlow).toBe(false); + }); + + test("does not create a session or start capture on the iOS 15-17 route", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + let sessionCreates = 0; + const capture = new DeterministicMetadataCapture(); + const sessionPort = new Proxy(runtime.browserPort, { + get(target, property, receiver) { + if (property === "createSession") { + return (...args: Parameters) => { + sessionCreates += 1; + return target.createSession(...args); + }; + } + const value = Reflect.get(target, property, receiver); + return typeof value === "function" ? value.bind(target) : value; + }, + }); + const decision = admitBrowserV1(policy, admissionInput(17, "safari")); + const controller = new AuthenticatorFlowControllerV1({ + sessionPort, + admission: adapter(decision), + capture, + }); + controller.start(); + await controller.waitForIdle(); + controller.act("continue"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("admission_update_required"); + expect(sessionCreates).toBe(0); + expect(capture.starts).toBe(0); + }); + + test.each([ + ["invalid_request", "flow_failed"], + ["expired", "flow_expired"], + ] as const)("maps bootstrap %s safely and performs no sensitive work", async (reasonCode, expectedState) => { + const runtime = await createAuthenticatorServerRuntimeV0(); + let sessionCreates = 0; + const capture = new DeterministicMetadataCapture(); + const sessionPort = new Proxy(runtime.browserPort, { + get(target, property, receiver) { + if (property === "bootstrap") { + return async () => ({ + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + operation: "bootstrap" as const, + reasonCode, + }); + } + if (property === "createSession") { + return (...args: Parameters) => { + sessionCreates += 1; + return target.createSession(...args); + }; + } + const value = Reflect.get(target, property, receiver); + return typeof value === "function" ? value.bind(target) : value; + }, + }); + const controller = new AuthenticatorFlowControllerV1({ + sessionPort, + admission: adapter(admitBrowserV1(policy, admissionInput(18, "safari"))), + capture, + }); + controller.start(); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe(expectedState); + expect(sessionCreates).toBe(0); + expect(capture.starts).toBe(0); + }); + + test("embedded handoff occurs before session or camera work", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + let sessionCreates = 0; + let handoffs = 0; + const capture = new DeterministicMetadataCapture(); + const sessionPort = new Proxy(runtime.browserPort, { + get(target, property, receiver) { + if (property === "createSession") { + return (...args: Parameters) => { + sessionCreates += 1; + return target.createSession(...args); + }; + } + const value = Reflect.get(target, property, receiver); + return typeof value === "function" ? value.bind(target) : value; + }, + }); + const embedded = admitBrowserV1(policy, admissionInput(18, "safari", { + browserContext: "embedded", + embeddedEvidence: "confirmed", + })); + const controller = new AuthenticatorFlowControllerV1({ + sessionPort, + admission: { + async evaluate() { return embedded; }, + async openExternalBrowser() { handoffs += 1; }, + }, + capture, + }); + controller.start(); + await controller.waitForIdle(); + controller.act("continue"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("admission_handoff_required"); + controller.act("open_external_browser"); + await controller.waitForIdle(); + expect(handoffs).toBe(1); + expect(sessionCreates).toBe(0); + expect(capture.starts).toBe(0); + }); + + test("drives the eligible happy path through actual server composition using metadata only", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const capture = new DeterministicMetadataCapture(); + const states: string[] = []; + const controller = new AuthenticatorFlowControllerV1({ + sessionPort: runtime.browserPort, + admission: adapter(admitBrowserV1(policy, admissionInput(18, "safari"))), + capture, + }); + controller.subscribe((snapshot) => states.push(snapshot.state)); + controller.start(); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("request_review"); + controller.act("continue"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("admission_safari_candidate"); + controller.act("continue"); + controller.act("start_demo_authenticator"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("demo_authenticator_ready"); + controller.act("continue_to_camera"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("capture_intro"); + controller.act("start_camera"); + expect(controller.snapshot.state).toBe("capture_preview"); + controller.act("collect_frame_metadata"); + await capture.wait(); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("simulated_credential_ready"); + expect(controller.snapshot.authoritativeSessionState).toBe("simulated_credential_ready"); + expect(states).toContain("capture_sampling"); + expect(states).toContain("capture_cleaning"); + expect(states).toContain("capture_complete"); + expect(capture.starts).toBe(1); + expect(capture.metadataRequests).toBeGreaterThanOrEqual(1); + expect(capture.stops).toBeGreaterThanOrEqual(1); + expect(capture.clears).toBeGreaterThanOrEqual(1); + }); + + test("retake rotates the capture key and actual W06/W10 accepts the second submission", async () => { + const runtime = await createAuthenticatorServerRuntimeV0({ + testConfiguration: { + kind: "authenticator_server_test_configuration_v0", + biometricScenario: "capture_retry", + issuanceScenario: "issue_success", + }, + }); + const capture = new DeterministicMetadataCapture(); + const submitKeys: string[] = []; + const submitReasonCodes: string[] = []; + const sessionPort = new Proxy(runtime.browserPort, { + get(target, property, receiver) { + if (property === "submitCapture") { + return async (input: Parameters[0]) => { + submitKeys.push(input.idempotencyKey); + const result = await target.submitCapture(input); + if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + submitReasonCodes.push(result.reasonCode); + } + return result; + }; + } + const value = Reflect.get(target, property, receiver); + return typeof value === "function" ? value.bind(target) : value; + }, + }); + const controller = new AuthenticatorFlowControllerV1({ + sessionPort, + admission: adapter(admitBrowserV1(policy, admissionInput(18, "safari"))), + capture, + }); + + controller.start(); + await controller.waitForIdle(); + controller.act("continue"); + await controller.waitForIdle(); + controller.act("continue"); + controller.act("start_demo_authenticator"); + await controller.waitForIdle(); + controller.act("continue_to_camera"); + await controller.waitForIdle(); + controller.act("start_camera"); + controller.act("collect_frame_metadata"); + await capture.wait(); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("biometric_simulated_retry"); + + controller.act("retake"); + await controller.waitForIdle(); + expect(controller.snapshot.state).toBe("capture_intro"); + controller.act("start_camera"); + controller.act("collect_frame_metadata"); + await capture.wait(); + await controller.waitForIdle(); + + expect(controller.snapshot.state).toBe("biometric_simulated_retry"); + expect(submitKeys).toHaveLength(2); + expect(submitKeys[1]).not.toBe(submitKeys[0]); + expect(submitReasonCodes).not.toContain("binding_mismatch"); + expect(capture.starts).toBe(2); + }); + + test("recovers a committed W06/W10 result by status after one lost browser response", async () => { + const runtime = await createAuthenticatorServerRuntimeV0({ + testConfiguration: { + kind: "authenticator_server_test_configuration_v0", + biometricScenario: "happy_path", + issuanceScenario: "issue_success", + }, + }); + const capture = new DeterministicMetadataCapture(); + let submitCalls = 0; + let statusCalls = 0; + let committedState: string | undefined; + const sessionPort = new Proxy(runtime.browserPort, { + get(target, property, receiver) { + if (property === "submitCapture") { + return async (input: Parameters[0]) => { + submitCalls += 1; + const committed = await target.submitCapture(input); + committedState = committed.kind === "simulator_browser_session_view_v0" + ? committed.state + : undefined; + return { + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + operation: "submit_capture" as const, + reasonCode: "network_unavailable" as const, + }; + }; + } + if (property === "getStatus") { + return (input: Parameters[0]) => { + statusCalls += 1; + return target.getStatus(input); + }; + } + const value = Reflect.get(target, property, receiver); + return typeof value === "function" ? value.bind(target) : value; + }, + }); + const controller = new AuthenticatorFlowControllerV1({ + sessionPort, + admission: adapter(admitBrowserV1(policy, admissionInput(18, "chrome"))), + capture, + }); + + controller.start(); + await controller.waitForIdle(); + controller.act("continue"); + await controller.waitForIdle(); + controller.act("continue"); + controller.act("start_demo_authenticator"); + await controller.waitForIdle(); + controller.act("continue_to_camera"); + await controller.waitForIdle(); + controller.act("start_camera"); + controller.act("collect_frame_metadata"); + await capture.wait(); + await controller.waitForIdle(); + + expect(committedState).toBe("simulated_credential_ready"); + expect(controller.snapshot.state).toBe("session_error"); + expect(controller.snapshot.detailCode).toBe("network_unavailable"); + expect(controller.snapshot.authoritativeSessionState).toBe("capture_ready"); + expect(submitCalls).toBe(1); + + expect(controller.act("query_status")).toBe(true); + await controller.waitForIdle(); + expect(statusCalls).toBe(1); + expect(controller.snapshot.state).toBe("simulated_credential_ready"); + expect(controller.snapshot.authoritativeSessionState).toBe("simulated_credential_ready"); + expect(submitCalls).toBe(1); + expect(capture.starts).toBe(1); + }); +}); diff --git a/tests/integration/contract/browser-response-binding.test.ts b/tests/integration/contract/browser-response-binding.test.ts new file mode 100644 index 0000000..9dfcc19 --- /dev/null +++ b/tests/integration/contract/browser-response-binding.test.ts @@ -0,0 +1,85 @@ +import { describe, expect, test } from "bun:test"; +import { + SIMULATION_ENVIRONMENT, + SIMULATION_MODE, + SIMULATOR_BROWSER_SESSION_ERROR_V0, + SIMULATOR_BROWSER_SESSION_PORT_V0, + SIMULATOR_BROWSER_SESSION_VIEW_V0, + SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, + type SimulatorBrowserSessionViewV0, +} from "@clean-start/contracts"; +import { HttpSimulatorBrowserSessionClientV0 } from "../../../apps/authenticator/src/adapters/http-session"; + +const expiresAt = "2030-01-01T00:00:00.000Z"; + +function view(sessionId: string, browserHandle: string): SimulatorBrowserSessionViewV0 { + return { + kind: SIMULATOR_BROWSER_SESSION_VIEW_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + sessionId, + browserHandle, + nonceBase64Url: "nonce", + state: "capture_ready", + code: "capture_ready", + retryable: false, + expiresAt, + capturePolicy: { ...SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, expiresAt }, + artifactSummary: null, + }; +} + +describe("browser response request-window binding", () => { + test("collapses a valid but cross-session server response to a safe error", async () => { + const fetcher = async () => new Response(JSON.stringify(view("session-b", "handle-b")), { + headers: { "content-type": "application/json" }, + }); + const client = new HttpSimulatorBrowserSessionClientV0( + fetcher, + "https://auth.example.test", + () => new Date("2026-09-03T00:00:00.000Z"), + ); + const result = await client.getStatus({ + sessionId: "session-a", + browserHandle: "handle-a", + }); + expect(result).toEqual({ + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + operation: "get_status", + reasonCode: "response_invalid", + }); + }); + + test("never follows redirects and sends only same-origin JSON without query fields", async () => { + const observed: { url?: string; init?: RequestInit } = {}; + const client = new HttpSimulatorBrowserSessionClientV0(async (input, init) => { + observed.url = String(input); + observed.init = init; + return new Response(JSON.stringify({ + kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, + version: SIMULATOR_BROWSER_SESSION_PORT_V0, + mode: SIMULATION_MODE, + environment: SIMULATION_ENVIRONMENT, + operation: "get_status", + reasonCode: "not_found", + }), { headers: { "content-type": "application/json" } }); + }, "https://auth.example.test"); + await client.getStatus({ sessionId: "session", browserHandle: "opaque" }); + expect(observed.url).toBe("https://auth.example.test/api/v0/session/status"); + expect(new URL(observed.url!).search).toBe(""); + expect(observed.init).toMatchObject({ + method: "POST", + cache: "no-store", + credentials: "same-origin", + redirect: "error", + }); + expect(JSON.parse(String(observed.init?.body))).toEqual({ + sessionId: "session", + browserHandle: "opaque", + }); + }); +}); diff --git a/tests/integration/contract/device-evidence-package.test.ts b/tests/integration/contract/device-evidence-package.test.ts new file mode 100644 index 0000000..735c741 --- /dev/null +++ b/tests/integration/contract/device-evidence-package.test.ts @@ -0,0 +1,49 @@ +import { describe, expect, test } from "bun:test"; +import { readFileSync } from "node:fs"; +import { resolve } from "node:path"; + +const deviceRoot = resolve(import.meta.dir, "../device-lab"); + +describe("physical-device evidence package", () => { + test("ships a strict observation schema without payload-bearing fields", () => { + const schema = JSON.parse(readFileSync( + resolve(deviceRoot, "observation.schema.json"), + "utf8", + )) as { + readonly additionalProperties: boolean; + readonly required: readonly string[]; + readonly properties: Readonly>; + }; + expect(schema.additionalProperties).toBe(false); + for (const field of [ + "productRevision", + "device", + "browser", + "provider", + "sensitiveOperationCounts", + "capture", + "performance", + "accessibility", + "sanitizationConfirmed", + ]) expect(schema.required).toContain(field); + for (const forbidden of [ + "image", + "video", + "rawMedia", + "passkey", + "privateKey", + "credential", + "signature", + "bearerToken", + ]) expect(Object.keys(schema.properties)).not.toContain(forbidden); + }); + + test("names every required physical OS/browser cell as unexecuted", () => { + const report = readFileSync(resolve(deviceRoot, "UNEXECUTED.md"), "utf8"); + for (const os of ["iOS 15", "iOS 16", "iOS 17", "iOS 18", "Current production iOS"]) { + expect(report).toContain(os); + } + expect(report.match(/Unexecuted:/g)).toHaveLength(10); + expect(report).toContain("desktop WebKit results must not be relabeled"); + }); +}); diff --git a/tests/integration/contract/gateway-recovery.test.ts b/tests/integration/contract/gateway-recovery.test.ts new file mode 100644 index 0000000..7f66ce6 --- /dev/null +++ b/tests/integration/contract/gateway-recovery.test.ts @@ -0,0 +1,90 @@ +import { describe, expect, test } from "bun:test"; +import { + CONTEXT, + createBody, + makeBundle, + makeHarness, + reachCaptureReady, +} from "../../../services/session-gateway/test/helpers"; + +describe("session expiry, idempotency, malformed dependencies, and recovery", () => { + test("replays exact creation idempotently and rejects a changed binding", async () => { + const harness = await makeHarness(); + const first = await harness.gateway.createSession(createBody("create-idempotent"), CONTEXT); + const replay = await harness.gateway.createSession(createBody("create-idempotent"), CONTEXT); + expect(replay).toEqual(first); + await expect(harness.gateway.createSession({ + ...createBody("create-idempotent"), + accountId: "different-account", + }, CONTEXT)).rejects.toMatchObject({ code: "binding_mismatch" }); + }); + + test("expires a session against the server clock", async () => { + const harness = await makeHarness(); + const created = await harness.gateway.createSession(createBody("expiry"), CONTEXT); + harness.clock.advance(harness.config.sessionTtlMs + 1); + await expect(harness.gateway.getStatus({ + sessionId: created.session.sessionId, + browserHandle: created.browserHandle, + }, CONTEXT)).rejects.toMatchObject({ code: "expired" }); + }); + + test.each(["malformed", "tampered", "port_error"] as const)( + "fails closed on %s biometric output and never enters issuance", + async (mode) => { + const harness = await makeHarness(); + harness.biometricMode = mode; + const { ready } = await reachCaptureReady(harness); + const result = await harness.gateway.submitCapture({ + sessionId: ready.session.sessionId, + browserHandle: ready.browserHandle, + idempotencyKey: `biometric-${mode}`, + nonceBase64Url: ready.session.nonceBase64Url, + frameBundle: await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url), + }, CONTEXT); + expect(result.session.state).toBe("simulated_unavailable"); + expect(harness.calls.issuance).toBe(0); + }, + ); + + test.each(["malformed", "tampered", "wrong_outcome", "port_error"] as const)( + "fails closed on %s issuance output without a credential", + async (mode) => { + const harness = await makeHarness(); + harness.issuanceMode = mode; + const { ready } = await reachCaptureReady(harness); + const result = await harness.gateway.submitCapture({ + sessionId: ready.session.sessionId, + browserHandle: ready.browserHandle, + idempotencyKey: `issuance-${mode}`, + nonceBase64Url: ready.session.nonceBase64Url, + frameBundle: await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url), + }, CONTEXT); + expect(result.session.state).toBe("simulated_issuance_unavailable"); + expect(result.credential).toBeUndefined(); + }, + ); + + test("recovers through retry after a lost biometric response without resubmitting browser media", async () => { + const harness = await makeHarness(); + harness.biometricMode = "throw"; + const { ready } = await reachCaptureReady(harness); + const first = await harness.gateway.submitCapture({ + sessionId: ready.session.sessionId, + browserHandle: ready.browserHandle, + idempotencyKey: "lost-biometric-response", + nonceBase64Url: ready.session.nonceBase64Url, + frameBundle: await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url), + }, CONTEXT); + expect(first.session.state).toBe("simulated_unavailable"); + harness.biometricMode = "normal"; + const recovered = await harness.gateway.retryUnavailable({ + sessionId: first.session.sessionId, + browserHandle: ready.browserHandle, + idempotencyKey: "recover-biometric-response", + }, CONTEXT); + expect(recovered.session.state).toBe("simulated_credential_ready"); + expect(harness.calls.biometric).toBe(2); + expect(harness.calls.issuance).toBe(1); + }); +}); diff --git a/tests/integration/contract/lifecycle-and-quality.test.ts b/tests/integration/contract/lifecycle-and-quality.test.ts new file mode 100644 index 0000000..9c9002e --- /dev/null +++ b/tests/integration/contract/lifecycle-and-quality.test.ts @@ -0,0 +1,108 @@ +import { describe, expect, test } from "bun:test"; +import { + AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, + makeAuthenticatorUiEventV1, + transitionAuthenticatorUiV1, + type AuthenticatorUiEventTypeV1, +} from "@clean-start/contracts"; +import { evaluateClientQualityV0 } from "@clean-start/client-quality"; +import { SIMULATOR_UI_QUALITY_POLICY_V0 } from "@clean-start/contracts"; +import { snapshotFor } from "../testkit/ui"; + +const lifecycleEvents = [ + "page_hidden", + "page_unloaded", + "orientation_invalidated", + "component_unmounted", + "operation_interrupted", +] as const satisfies readonly AuthenticatorUiEventTypeV1[]; + +const inFlightStates = [ + "request_checking", + "admission_checking", + "admission_handoff_departing", + "session_creating", + "demo_authenticator_pending", + "session_completing_authenticator", + "session_reconciling", + "capture_policy_loading", + "capture_permission_request", + "capture_acquiring", + "capture_preparing", + "capture_sampling", + "capture_artifact_ready", + "capture_cleaning", + "capture_complete", + "biometric_simulation_pending", + "biometric_simulated_pass", + "issuance_simulation_pending", + "return_redirecting", +] as const; + +describe("cancellation, lifecycle, and UX-only quality", () => { + test("defines exactly 19 in-flight states", () => { + expect(inFlightStates).toHaveLength(19); + }); + + for (const state of inFlightStates) { + test(`${state} exposes cancellation in the frozen cleanup order`, () => { + expect(AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state]).toContain("cancel"); + const current = snapshotFor(state); + const transition = transitionAuthenticatorUiV1( + current, + makeAuthenticatorUiEventV1({ event: "cancel_requested" }), + ); + expect(transition?.snapshot.state).toBe("flow_cancelling"); + expect(transition?.effects.slice(0, 3)).toEqual([ + "abort_active_effects", + "stop_capture", + "clear_transient_media", + ]); + expect(transition?.effects.includes("cancel_session")).toBe( + current.authoritativeSessionState !== null, + ); + if (current.authoritativeSessionState !== null) { + expect(transition?.effects.at(-1)).toBe("cancel_session"); + } + }); + + test(`${state} accepts all five lifecycle aborts`, () => { + for (const event of lifecycleEvents) { + const current = snapshotFor(state); + const transition = transitionAuthenticatorUiV1( + current, + makeAuthenticatorUiEventV1({ event }), + ); + expect(transition?.snapshot.state).toBe("flow_cancelling"); + expect(transition?.effects.slice(0, 3)).toEqual([ + "abort_active_effects", + "stop_capture", + "clear_transient_media", + ]); + } + }); + } + + test("quality outputs expose only UX actions/reasons and never a scenario or outcome", () => { + const sources = [ + { readCameraActive: () => true }, + { readCameraActive: () => false }, + { readCameraActive: () => null }, + ]; + for (const source of sources) { + const result = evaluateClientQualityV0( + SIMULATOR_UI_QUALITY_POLICY_V0, + source, + { retakesUsed: 0 }, + ); + expect(["ready", "adjust", "retake", "unavailable"]).toContain(result.action); + expect(Object.keys(result).sort()).toEqual([ + "action", + "policyId", + "reasonCodes", + "version", + ]); + expect(JSON.stringify(result)).not.toMatch(/scenario|biometric|issuance|success/i); + } + }); +}); diff --git a/tests/integration/contract/nested-receipt.test.ts b/tests/integration/contract/nested-receipt.test.ts new file mode 100644 index 0000000..10c6b92 --- /dev/null +++ b/tests/integration/contract/nested-receipt.test.ts @@ -0,0 +1,92 @@ +import { describe, expect, test } from "bun:test"; +import { + verifySimulationReceiptV0, + type ExpectedSimulationReceiptV0, + type SimulationReceiptV0, +} from "@clean-start/contracts"; +import { + CONTEXT, + makeBundle, + makeHarness, + reachCaptureReady, +} from "../../../services/session-gateway/test/helpers"; + +async function captureReceipt() { + const harness = await makeHarness(); + const { ready } = await reachCaptureReady(harness); + const result = await harness.gateway.submitCapture({ + sessionId: ready.session.sessionId, + browserHandle: ready.browserHandle, + idempotencyKey: "nested-receipt-capture", + nonceBase64Url: ready.session.nonceBase64Url, + frameBundle: await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url), + }, CONTEXT); + expect(result.session.state).toBe("simulated_credential_ready"); + const receipt = harness.calls.issuanceRequests.at(0)?.biometricReceipt; + if (receipt === undefined) throw new Error("receipt_not_observed"); + const expected: ExpectedSimulationReceiptV0 = { + runtimeEnvironment: "staging", + receiptId: receipt.receiptId, + requestId: receipt.requestId, + sessionId: receipt.sessionId, + nonceDigestSha256: receipt.nonceDigestSha256, + idempotencyKey: receipt.idempotencyKey, + accountPublicMaterialDigestSha256: receipt.accountPublicMaterialDigestSha256, + capturePolicyId: receipt.capturePolicyId, + scenario: receipt.scenario, + artifactDigestSha256: receipt.artifactDigestSha256, + now: harness.clock.now().toISOString(), + }; + return { harness, receipt, expected }; +} + +describe("nested biometric receipt authentication", () => { + test("accepts the exact nested receipt and rejects key, audience, expiry, and binding changes", async () => { + const { harness, receipt, expected } = await captureReceipt(); + expect(await verifySimulationReceiptV0( + receipt, + expected, + harness.config.biometricReceiptTrustRoot, + )).toBe(true); + + const cases: readonly SimulationReceiptV0[] = [ + { + ...receipt, + authentication: { ...receipt.authentication, keyId: "wrong-key" }, + }, + { ...receipt, audience: "wrong-audience" as SimulationReceiptV0["audience"] }, + { ...receipt, sessionId: "wrong-session" }, + { ...receipt, nonceDigestSha256: "f".repeat(64) }, + { ...receipt, artifactDigestSha256: "e".repeat(64) }, + ]; + for (const candidate of cases) { + expect(await verifySimulationReceiptV0( + candidate, + expected, + harness.config.biometricReceiptTrustRoot, + )).toBe(false); + } + + harness.clock.advance(Date.parse(receipt.expiresAt) - harness.clock.now().getTime() + 1); + expect(await verifySimulationReceiptV0( + receipt, + { ...expected, now: harness.clock.now().toISOString() }, + harness.config.biometricReceiptTrustRoot, + )).toBe(false); + }); + + test("does not invoke issuance when the nested receipt binding is tampered", async () => { + const harness = await makeHarness(); + harness.biometricMode = "tampered"; + const { ready } = await reachCaptureReady(harness); + const result = await harness.gateway.submitCapture({ + sessionId: ready.session.sessionId, + browserHandle: ready.browserHandle, + idempotencyKey: "tampered-nested-receipt", + nonceBase64Url: ready.session.nonceBase64Url, + frameBundle: await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url), + }, CONTEXT); + expect(result.session.state).toBe("simulated_unavailable"); + expect(harness.calls.issuance).toBe(0); + }); +}); diff --git a/tests/integration/contract/server-session-evidence.test.ts b/tests/integration/contract/server-session-evidence.test.ts new file mode 100644 index 0000000..5f31686 --- /dev/null +++ b/tests/integration/contract/server-session-evidence.test.ts @@ -0,0 +1,292 @@ +import { describe, expect, test } from "bun:test"; +import { + SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, + SIMULATOR_BROWSER_SESSION_ERROR_V0, + SIMULATOR_BROWSER_SESSION_VIEW_V0, + assertSimulationArtifactAllowed, + assertSimulatorBrowserArtifactAllowed, + type BiometricSimulationScenarioV0, + type EnrollmentSessionStateV2, + type IssuanceSimulationScenarioV0, +} from "@clean-start/contracts"; +import { AUTHENTICATOR_APP_CONFIG } from "@clean-start/app-config"; +import { rejectSimulationArtifactAtProductionBoundary } from "@clean-start/session-gateway"; +import { createAuthenticatorHttpHandlerV0 } from "../../../apps/authenticator/src/server/http.server"; +import { createAuthenticatorServerRuntimeV0 } from "../../../apps/authenticator/src/server/runtime.server"; +import { completeScenario, metadataBundle, prepareScenario } from "../testkit/runtime"; + +const expectedState: Readonly> +>> = Object.freeze({ + happy_path: Object.freeze({ + issue_success: "simulated_credential_ready", + issue_reject: "simulated_issuance_reject", + issue_unavailable: "simulated_issuance_unavailable", + }), + spoof_reject: Object.freeze({ + issue_success: "simulated_reject", + issue_reject: "simulated_reject", + issue_unavailable: "simulated_reject", + }), + capture_retry: Object.freeze({ + issue_success: "simulated_retry", + issue_reject: "simulated_retry", + issue_unavailable: "simulated_retry", + }), + dependency_unavailable: Object.freeze({ + issue_success: "simulated_unavailable", + issue_reject: "simulated_unavailable", + issue_unavailable: "simulated_unavailable", + }), +}); + +function request(path: string, body: unknown, headers: Record = {}): Request { + return new Request(`${AUTHENTICATOR_APP_CONFIG.publicOrigin}${path}`, { + method: "POST", + headers: { + origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, + "content-type": "application/json", + ...headers, + }, + body: JSON.stringify(body), + }); +} + +describe("actual W06/W10 composition and browser boundary", () => { + for (const biometric of [ + "happy_path", + "spoof_reject", + "capture_retry", + "dependency_unavailable", + ] as const) { + for (const issuance of [ + "issue_success", + "issue_reject", + "issue_unavailable", + ] as const) { + test(`${biometric} x ${issuance} has the server-owned outcome`, async () => { + const completed = await completeScenario(biometric, issuance); + expect(completed.result.kind).toBe(SIMULATOR_BROWSER_SESSION_VIEW_V0); + if (completed.result.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) return; + expect(completed.result.state).toBe(expectedState[biometric][issuance]); + const serialized = JSON.stringify(completed.result); + expect(serialized).not.toContain("biometricScenario"); + expect(serialized).not.toContain("issuanceScenario"); + expect(serialized).not.toContain("signatureBase64Url"); + expect(serialized).not.toContain("receiptId"); + expect(serialized).not.toContain("credentialId"); + if (completed.result.state === "simulated_credential_ready") { + expect(completed.result.artifactSummary).toEqual({ + kind: "simulated_workflow_artifact_summary_v0", + biometricVerification: "not_performed", + uniqueness: "not_performed", + credentialClass: "not_selfie_check", + productionCredential: false, + }); + } else { + expect(completed.result.artifactSummary).toBeNull(); + } + }); + } + } + + test("replays an exact submit idempotently and rejects nonce or artifact rebinding", async () => { + const completed = await completeScenario("happy_path", "issue_success", "replay-evidence"); + const replay = await completed.browserPort.submitCapture(completed.submitInput); + expect(replay).toEqual(completed.result); + + const otherKey = await completed.browserPort.submitCapture({ + ...completed.submitInput, + idempotencyKey: "capture-replay-other-key", + }); + expect(otherKey.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + if (otherKey.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + expect(["replay_rejected", "binding_mismatch"]).toContain(otherKey.reasonCode); + } + + const otherNonce = await completed.browserPort.submitCapture({ + ...completed.submitInput, + nonceBase64Url: `${completed.submitInput.nonceBase64Url}x`, + }); + expect(otherNonce.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + if (otherNonce.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + expect(otherNonce.reasonCode).toBe("binding_mismatch"); + } + + const reboundBundle = { + ...completed.submitInput.frameBundle, + artifactDigestSha256: "f".repeat(64), + }; + const otherArtifact = await completed.browserPort.submitCapture({ + ...completed.submitInput, + frameBundle: reboundBundle, + }); + expect(otherArtifact.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + if (otherArtifact.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + expect(otherArtifact.reasonCode).toBe("binding_mismatch"); + } + }); + + test("rejects cross-session handles and bound demo completion tampering", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const first = await runtime.browserPort.createSession({ idempotencyKey: "binding-first" }); + const second = await runtime.browserPort.createSession({ idempotencyKey: "binding-second" }); + if ( + first.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0 || + second.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0 + ) throw new Error("create_failed"); + + const crossed = await runtime.browserPort.getStatus({ + sessionId: first.sessionId, + browserHandle: second.browserHandle, + }); + expect(crossed.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + if (crossed.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + expect(crossed.reasonCode).toBe("unauthorized"); + } + + const ready = await runtime.browserPort.beginDemoAuthenticator({ + sessionId: first.sessionId, + browserHandle: first.browserHandle, + idempotencyKey: "binding-demo", + }); + expect(ready.kind).toBe(SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0); + if (ready.kind !== SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0) return; + const tampered = await runtime.browserPort.completeDemoAuthenticator({ + sessionId: first.sessionId, + browserHandle: first.browserHandle, + idempotencyKey: ready.idempotencyKey, + completionHandle: `${ready.completionHandle.slice(0, -1)}x`, + }); + expect(tampered.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + if (tampered.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + expect(tampered.reasonCode).toBe("binding_mismatch"); + } + }); + + test("accepts return only after a server-observed terminal state", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const created = await runtime.browserPort.createSession({ idempotencyKey: "return-live" }); + if (created.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create_failed"); + const early = await runtime.browserPort.returnToRp({ + sessionId: created.sessionId, + browserHandle: created.browserHandle, + }); + expect(early.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + if (early.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + expect(early.reasonCode).toBe("invalid_state"); + } + + const completed = await completeScenario("spoof_reject", "issue_success", "return-terminal"); + if (completed.result.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) { + throw new Error("terminal_scenario_failed"); + } + const accepted = await completed.browserPort.returnToRp({ + sessionId: completed.result.sessionId, + browserHandle: completed.result.browserHandle, + }); + expect(accepted.kind).toBe(SIMULATOR_BROWSER_RETURN_ACCEPTED_V0); + }); + + test("HTTP rejects scenario injection, raw media shapes, cross-origin, and invalid bodies", async () => { + const prepared = await prepareScenario("happy_path", "issue_success", "http-raw-media"); + const handle = createAuthenticatorHttpHandlerV0(prepared.browserPort); + const scenario = await handle(request("/api/v0/session/create", { + idempotencyKey: "scenario-injection", + biometricScenario: "happy_path", + })); + expect(scenario.status).toBe(400); + + const validBundle = await metadataBundle( + prepared.captureReady, + prepared.bootstrap.accountPublicMaterialDigestSha256, + ); + const rawMedia = await handle(request("/api/v0/session/capture/submit", { + sessionId: prepared.captureReady.sessionId, + browserHandle: prepared.captureReady.browserHandle, + idempotencyKey: "raw-media", + nonceBase64Url: prepared.captureReady.nonceBase64Url, + frameBundle: { + ...validBundle, + frames: [{ ...validBundle.frames[0], pixels: "data:image/png;base64,AAAA" }], + }, + })); + expect(rawMedia.status).toBe(400); + + const hostileOrigin = await handle(request("/api/v0/bootstrap", {}, { + origin: "https://attacker.invalid", + })); + expect(hostileOrigin.status).toBe(403); + + const wrongType = await handle(new Request( + `${AUTHENTICATOR_APP_CONFIG.publicOrigin}/api/v0/bootstrap`, + { + method: "POST", + headers: { + origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, + "content-type": "text/plain", + }, + body: "{}", + }, + )); + expect(wrongType.status).toBe(415); + }); + + test("browser-visible artifacts and gateway artifacts reject production before nested reads", () => { + const revoked = Proxy.revocable({}, {}); + revoked.revoke(); + expect(() => assertSimulationArtifactAllowed("production", revoked.proxy)).toThrow( + "Simulation artifacts are forbidden in production", + ); + expect(() => assertSimulatorBrowserArtifactAllowed("production", revoked.proxy)).toThrow( + "Simulation artifacts are forbidden in production", + ); + expect(() => rejectSimulationArtifactAtProductionBoundary("production", revoked.proxy)).toThrow( + "Simulation artifacts are forbidden in production", + ); + }); + + test("only accepts one or two ordered metadata descriptors at the HTTP boundary", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const bootstrap = await runtime.browserPort.bootstrap(); + const created = await runtime.browserPort.createSession({ idempotencyKey: "bounds-create" }); + if ( + bootstrap.kind !== "simulator_ui_bootstrap_v0" || + created.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0 + ) throw new Error("setup_failed"); + const demo = await runtime.browserPort.beginDemoAuthenticator({ + sessionId: created.sessionId, + browserHandle: created.browserHandle, + idempotencyKey: "bounds-demo", + }); + if (demo.kind !== SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0) throw new Error("demo_failed"); + const complete = await runtime.browserPort.completeDemoAuthenticator({ + sessionId: created.sessionId, + browserHandle: created.browserHandle, + idempotencyKey: demo.idempotencyKey, + completionHandle: demo.completionHandle, + }); + if (complete.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("complete_failed"); + const ready = await runtime.browserPort.prepareCapture({ + sessionId: complete.sessionId, + browserHandle: complete.browserHandle, + }); + if (ready.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("prepare_failed"); + const valid = await metadataBundle(ready, bootstrap.accountPublicMaterialDigestSha256); + expect(valid.frames).toHaveLength(1); + expect(valid.dataMode).toBe("metadata_only"); + const invalid = await runtime.browserPort.submitCapture({ + sessionId: ready.sessionId, + browserHandle: ready.browserHandle, + idempotencyKey: "bounds-submit", + nonceBase64Url: ready.nonceBase64Url, + frameBundle: { ...valid, frames: [] }, + }); + expect(invalid.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); + if (invalid.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { + expect(invalid.reasonCode).toBe("artifact_invalid"); + } + }); +}); diff --git a/tests/integration/contract/state-and-ui-matrix.test.ts b/tests/integration/contract/state-and-ui-matrix.test.ts new file mode 100644 index 0000000..6207513 --- /dev/null +++ b/tests/integration/contract/state-and-ui-matrix.test.ts @@ -0,0 +1,107 @@ +import { afterAll, beforeAll, describe, expect, test } from "bun:test"; +import { GlobalRegistrator } from "@happy-dom/global-registrator"; +import { cleanup, fireEvent, render } from "@testing-library/react"; +import axe from "axe-core"; +import { createElement } from "react"; +import { + AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, + AUTHENTICATOR_UI_ACTIONS_V1, + AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, + AUTHENTICATOR_UI_STATE_PROGRESS_V1, + AUTHENTICATOR_UI_STATES_V1, + dispatchAuthenticatorUiActionV1, + type AuthenticatorUiActionV1, +} from "@clean-start/contracts"; +import { FlowScreenV1 } from "../../../apps/authenticator/src/components/FlowScreen"; +import { + FIGMA_SCREEN_MATRIX_V1, + SCREEN_RENDER_REGISTRY_V1, +} from "../../../apps/authenticator/src/flow/render-registry"; +import { snapshotFor } from "../testkit/ui"; + +beforeAll(() => GlobalRegistrator.register()); +afterAll(() => { + cleanup(); + GlobalRegistrator.unregister(); +}); + +describe("frozen state, action, and visual evidence matrix", () => { + test("covers every one of the 62 frozen states in every registry", () => { + expect(AUTHENTICATOR_UI_STATES_V1).toHaveLength(62); + for (const registry of [ + AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, + AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, + AUTHENTICATOR_UI_STATE_PROGRESS_V1, + SCREEN_RENDER_REGISTRY_V1, + ]) { + expect(Object.keys(registry).sort()).toEqual([...AUTHENTICATOR_UI_STATES_V1].sort()); + expect(Object.isFrozen(registry)).toBe(true); + } + expect(FIGMA_SCREEN_MATRIX_V1.verified).toHaveLength(15); + expect(FIGMA_SCREEN_MATRIX_V1.notFigmaVerified).toEqual([]); + }); + + test("renders every frozen state with its exact legal actions and safe semantics", () => { + for (const state of AUTHENTICATOR_UI_STATES_V1) { + const observed: AuthenticatorUiActionV1[] = []; + const view = render(createElement(FlowScreenV1, { + snapshot: snapshotFor(state), + onAction: (action) => observed.push(action), + })); + expect(view.container.querySelectorAll("main")).toHaveLength(1); + expect(view.container.querySelectorAll("h1")).toHaveLength(1); + expect(view.getByRole("main").dataset.state).toBe(state); + expect(view.container.textContent).toContain("Staging demo"); + const buttons = [...view.container.querySelectorAll("button[data-action]")]; + expect(buttons.map((button) => button.dataset.action).sort()).toEqual( + [...AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state]].sort(), + ); + for (const button of buttons) fireEvent.click(button); + expect(observed.sort()).toEqual([...AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state]].sort()); + expect(view.container.querySelectorAll('[data-action="cancel"]')).toHaveLength( + AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state].includes("cancel") ? 1 : 0, + ); + expect(view.container.textContent).not.toMatch(/\b\d{1,3}%\b|\bETA\b|countdown/i); + view.unmount(); + } + }); + + test("keeps every illegal action inert for every state", () => { + for (const state of AUTHENTICATOR_UI_STATES_V1) { + const snapshot = snapshotFor(state); + for (const action of AUTHENTICATOR_UI_ACTIONS_V1) { + if (AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state].includes(action)) continue; + expect(dispatchAuthenticatorUiActionV1(snapshot, action)).toBeNull(); + } + } + }); + + test("has no automated axe violations in any frozen state", async () => { + for (const state of AUTHENTICATOR_UI_STATES_V1) { + const view = render(createElement(FlowScreenV1, { + snapshot: snapshotFor(state), + onAction: () => undefined, + })); + const result = await axe.run(view.container, { + rules: { "color-contrast": { enabled: false } }, + }); + expect(result.violations, state).toEqual([]); + view.unmount(); + } + }); + + test("moves focus to the state heading and preserves non-color text meaning", () => { + const view = render(createElement(FlowScreenV1, { + snapshot: snapshotFor("request_review"), + onAction: () => undefined, + })); + for (const state of AUTHENTICATOR_UI_STATES_V1) { + view.rerender(createElement(FlowScreenV1, { + snapshot: snapshotFor(state), + onAction: () => undefined, + })); + expect(document.activeElement).toBe(view.container.querySelector("h1")); + expect(view.container.textContent?.trim().length).toBeGreaterThan(0); + } + }); +}); diff --git a/tests/integration/device-lab/RUNBOOK.md b/tests/integration/device-lab/RUNBOOK.md new file mode 100644 index 0000000..19c7b81 --- /dev/null +++ b/tests/integration/device-lab/RUNBOOK.md @@ -0,0 +1,68 @@ +# Physical iPhone evidence runbook + +## Boundary + +This runbook is for physical iPhones only. Desktop WebKit, device emulation, and +synthetic streams cannot fill a physical cell. Use staging accounts and the +staging simulator. Do not capture or commit a participant's face, camera stream, +passkey data, credential payload, signature, private key, bearer token, or raw +trace. Persist only a sanitized observation that validates +`observation.schema.json`. + +## Prerequisites + +1. Record the exact 40-character product revision and deployed staging build. +2. Record device model, iOS version/build, Safari or Chrome version/build, + locale/region, tab context, provider, initial camera permission, battery, and + thermal state. +3. Confirm the operator consents to the test and that no screen/video recording + contains a real person or protected provider UI. +4. Use a network inspector that records operation names, status, sizes, and + timing only. Redact bodies and headers that can contain handles. +5. Start with browser storage empty. Do not export browser profiles. + +## Core cell procedure + +1. Open the exact staging URL in the recorded browser/context and confirm the + visible `Staging demo` label. +2. For iOS 15–17, confirm only update-required appears. Confirm authenticator, + camera, session, and simulator operation counts are all zero, then stop. +3. For iOS 18/current normal tabs, record whether the candidate route appears + and which provider is offered. A provider observation is not proof of PRF, + protected presence, or World ID key creation. +4. Complete the protected gesture only when the cell explicitly requires it. + Record start/end timing without recording provider content. +5. Confirm camera is not requested before the authenticator-ready gate. Exercise + allow, deny, and revoke as separate cells. +6. On allow, record actual track settings, MIME if any, time to first preview, + descriptor count/declared bytes, and whether every track stops at exit. +7. Confirm the browser request contains only one or two ordered metadata + descriptors (or the named allowlisted synthetic fixture). Do not retain body + contents. +8. Complete the staging scenario and record only the visible state and stable + reason code. Never copy a receipt or credential body. +9. Verify return/cancel behavior, empty URL query/fragment, empty browser + persistence, and no free-text upstream error. +10. Validate the observation against the schema and separately review it for + accidental personal or secret data before committing it. + +## Separate manual cells + +- Context: normal tab, private tab, installed PWA, in-app browser/handoff, frame. +- Provider: Apple Passwords, Google Password Manager where actually offered, + supported third party, unavailable/unknown. +- Camera: allow, deny, revoke during preview, no camera, busy/restricted camera. +- Interruption: app switch, lock, call, visibility loss, track end, offline and + restore, timeout, repeated attempt. +- Accessibility: VoiceOver reading/order/actions, 200% text, safe areas, browser + chrome, landscape/orientation invalidation, reduced motion. +- Reliability: at least ten repeated attempts per chosen current-production + device; measure times, cleanup, memory if observable, battery delta, and + thermal state. Do not set a product budget from this baseline. + +## Failure and stop rules + +Stop a cell if it needs product-code changes, unconsented biometric material, +production credentials, a real TEE/issuer/proof, an unavailable protected +gesture/provider, or evidence that would need to be mislabeled. Mark the exact +cell `blocked`; never replace it with emulation. diff --git a/tests/integration/device-lab/UNEXECUTED.md b/tests/integration/device-lab/UNEXECUTED.md new file mode 100644 index 0000000..34a0a97 --- /dev/null +++ b/tests/integration/device-lab/UNEXECUTED.md @@ -0,0 +1,25 @@ +# Physical-device evidence status + +Product revision under test: `b7d3949099b175ae41e1a95f4f65ee3c2714d98b` + +Status: **all physical cells unexecuted**. W09 had no physical iPhone, deployed +staging URL, camera operator, provider accounts, or protected user gestures. +Desktop Chromium and desktop WebKit results must not be relabeled as these cells. + +| OS | Safari | Chrome | +|---|---|---| +| iOS 15 | Unexecuted: update-only/zero-sensitive-operations | Unexecuted: update-only/zero-sensitive-operations | +| iOS 16 | Unexecuted: update-only/zero-sensitive-operations | Unexecuted: update-only/zero-sensitive-operations | +| iOS 17 | Unexecuted: update-only/zero-sensitive-operations | Unexecuted: update-only/zero-sensitive-operations | +| iOS 18 | Unexecuted: Apple Passwords candidate/provider | Unexecuted: Apple Passwords and GPM candidate/provider | +| Current production iOS | Unexecuted: provider/device matrix | Unexecuted: provider/device matrix | + +Also unexecuted for every applicable OS/browser/provider: private tab, PWA, +in-app handoff, iframe, permission allow/deny/revoke, camera settings/MIME, +app switch, lock, call, track end, offline/restore, timeout, repeated attempts, +VoiceOver, 200% Dynamic Type, safe-area/browser chrome, memory, battery, thermal, +real passkey/PRF, and protected user-presence behavior. + +Real camera provenance, biometric spoof detection, TEE behavior, real issuance, +uniqueness, AMPC, and proof are outside this simulator milestone and remain +unproven regardless of any future physical UI run. diff --git a/tests/integration/device-lab/observation.schema.json b/tests/integration/device-lab/observation.schema.json new file mode 100644 index 0000000..0ec26b2 --- /dev/null +++ b/tests/integration/device-lab/observation.schema.json @@ -0,0 +1,113 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://world-id.example.test/clean-start/device-observation-v0.schema.json", + "title": "Clean-start physical iPhone observation v0", + "type": "object", + "additionalProperties": false, + "required": [ + "schemaVersion", + "productRevision", + "executedAt", + "operatorAlias", + "device", + "browser", + "context", + "provider", + "permission", + "expectedRoute", + "observedRoute", + "sensitiveOperationCounts", + "capture", + "interruptions", + "performance", + "accessibility", + "outcome", + "evidenceMethod", + "sanitizationConfirmed" + ], + "properties": { + "schemaVersion": { "const": "physical_iphone_observation_v0" }, + "productRevision": { "type": "string", "pattern": "^[0-9a-f]{40}$" }, + "executedAt": { "type": "string", "format": "date-time" }, + "operatorAlias": { "type": "string", "minLength": 1, "maxLength": 64 }, + "device": { + "type": "object", + "additionalProperties": false, + "required": ["model", "osVersion", "osBuild", "thermalState"], + "properties": { + "model": { "type": "string", "minLength": 1 }, + "osVersion": { "type": "string", "minLength": 1 }, + "osBuild": { "type": "string", "minLength": 1 }, + "thermalState": { "enum": ["nominal", "fair", "serious", "critical", "unknown"] } + } + }, + "browser": { + "type": "object", + "additionalProperties": false, + "required": ["family", "version", "build"], + "properties": { + "family": { "enum": ["safari", "chrome"] }, + "version": { "type": "string", "minLength": 1 }, + "build": { "type": "string", "minLength": 1 } + } + }, + "context": { "enum": ["normal_tab", "private", "pwa", "in_app", "framed"] }, + "provider": { "enum": ["apple_passwords", "google_password_manager", "third_party", "unknown", "not_presented"] }, + "localeRegion": { "type": "string" }, + "permission": { "enum": ["allow", "deny", "revoked", "not_requested", "restricted"] }, + "expectedRoute": { "type": "string", "minLength": 1 }, + "observedRoute": { "type": "string", "minLength": 1 }, + "sensitiveOperationCounts": { + "type": "object", + "additionalProperties": false, + "required": ["authenticator", "camera", "session", "simulator"], + "properties": { + "authenticator": { "type": "integer", "minimum": 0 }, + "camera": { "type": "integer", "minimum": 0 }, + "session": { "type": "integer", "minimum": 0 }, + "simulator": { "type": "integer", "minimum": 0 } + } + }, + "capture": { + "type": "object", + "additionalProperties": false, + "required": ["settings", "mime", "descriptorCount", "totalDeclaredBytes", "trackStopped"], + "properties": { + "settings": { "type": "object", "additionalProperties": { "type": ["string", "number", "boolean", "null"] } }, + "mime": { "type": ["string", "null"] }, + "descriptorCount": { "type": "integer", "minimum": 0, "maximum": 2 }, + "totalDeclaredBytes": { "type": "integer", "minimum": 0 }, + "trackStopped": { "type": ["boolean", "null"] } + } + }, + "interruptions": { "type": "array", "items": { "enum": ["app_switch", "lock", "call", "visibility", "track_end", "offline", "timeout"] }, "uniqueItems": true }, + "performance": { + "type": "object", + "additionalProperties": false, + "properties": { + "admissionMs": { "type": ["number", "null"], "minimum": 0 }, + "protectedGestureMs": { "type": ["number", "null"], "minimum": 0 }, + "permissionToPreviewMs": { "type": ["number", "null"], "minimum": 0 }, + "captureToResultMs": { "type": ["number", "null"], "minimum": 0 }, + "memoryMb": { "type": ["number", "null"], "minimum": 0 }, + "batteryDeltaPercent": { "type": ["number", "null"], "minimum": 0, "maximum": 100 } + } + }, + "accessibility": { + "type": "object", + "additionalProperties": false, + "required": ["voiceOver", "textScalePercent", "horizontalOverflow", "focusNotes"], + "properties": { + "voiceOver": { "enum": ["on", "off", "not_tested"] }, + "textScalePercent": { "type": "integer", "minimum": 100, "maximum": 310 }, + "horizontalOverflow": { "type": ["boolean", "null"] }, + "focusNotes": { "type": "string" } + } + }, + "outcome": { "enum": ["pass", "fail", "blocked", "not_applicable"] }, + "errorCode": { "type": ["string", "null"] }, + "notes": { "type": "string" }, + "evidenceMethod": { "enum": ["physical_observation", "network_inspection", "screen_reader_observation", "structured_log"] }, + "sanitizationConfirmed": { "const": true } + } +} diff --git a/tests/integration/fixtures/README.md b/tests/integration/fixtures/README.md new file mode 100644 index 0000000..4d2da9a --- /dev/null +++ b/tests/integration/fixtures/README.md @@ -0,0 +1,9 @@ +# Synthetic fixture policy + +W09 automated evidence uses generated metadata and SHA-256-shaped digests only. +No person image, video, audio, passkey, credential, signature, private key, +device identifier, or raw timing trace is a committed fixture. + +The product's allowlisted `fixture-neutral-v0` identifier is exercised by the +full clean-start suite. W09's app-composition flow uses `metadata_only`, so it +does not need or imply a camera image. diff --git a/tests/integration/privacy/privacy-boundaries.test.ts b/tests/integration/privacy/privacy-boundaries.test.ts new file mode 100644 index 0000000..708f271 --- /dev/null +++ b/tests/integration/privacy/privacy-boundaries.test.ts @@ -0,0 +1,140 @@ +import { describe, expect, test } from "bun:test"; +import { readdirSync, readFileSync } from "node:fs"; +import { extname, join, relative, resolve } from "node:path"; +import { AUTHENTICATOR_APP_CONFIG } from "@clean-start/app-config"; +import { createAuthenticatorHttpHandlerV0 } from "../../../apps/authenticator/src/server/http.server"; +import { createAuthenticatorServerRuntimeV0 } from "../../../apps/authenticator/src/server/runtime.server"; +import { completeScenario } from "../testkit/runtime"; + +const cleanStartRoot = resolve(import.meta.dir, "../../.."); + +function filesUnder(root: string): string[] { + const result: string[] = []; + for (const entry of readdirSync(root, { withFileTypes: true })) { + const path = join(root, entry.name); + if (entry.isDirectory()) result.push(...filesUnder(path)); + else result.push(path); + } + return result; +} + +function sourceText(paths: readonly string[]): string { + return paths.map((path) => `\n/* ${relative(cleanStartRoot, path)} */\n${readFileSync(path, "utf8")}`).join(""); +} + +function apiRequest(path: string, body: unknown): Request { + return new Request(`${AUTHENTICATOR_APP_CONFIG.publicOrigin}${path}`, { + method: "POST", + headers: { + origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, + "content-type": "application/json", + }, + body: JSON.stringify(body), + }); +} + +describe("privacy, isolation, and copy sentinels", () => { + test("client source contains no browser persistence, beacon, cookie, or server imports", () => { + const clientRoot = join(cleanStartRoot, "apps/authenticator/src"); + const clientFiles = filesUnder(clientRoot).filter((path) => + [".ts", ".tsx"].includes(extname(path)) && !path.includes(`${join("src", "server")}/`)); + const text = sourceText(clientFiles); + const nonWalletText = sourceText(clientFiles.filter(path => !path.endsWith("/wallet/session.ts"))); + expect(nonWalletText).not.toMatch(/\blocalStorage\b/); + for (const forbidden of [ + /\bsessionStorage\b/, + /\bindexedDB\b/, + /\bdocument\.cookie\b/, + /\bsendBeacon\b/, + /from\s+["'][^"']*\/services\//, + /from\s+["'][^"']*\/server\//, + /from\s+["']@clean-start\/(?:session-gateway|simulated-biometric-verifier|simulated-staging-issuer)/, + ]) expect(text).not.toMatch(forbidden); + }); + + test("clean-start product source has no S1 implementation import", () => { + const productFiles = filesUnder(cleanStartRoot).filter((path) => + [".ts", ".tsx", ".js", ".mjs", ".css", ".html"].includes(extname(path)) && + !path.includes("node_modules") && + !path.includes("dist")); + const text = sourceText(productFiles); + expect(text).not.toMatch(/(?:from|import\s*\()\s*["'][^"']*(?:\/s1\/|legacy|src-old)/i); + }); + + test("actual browser projections omit secrets, raw media, signatures, and detailed measurements", async () => { + const completed = await completeScenario("happy_path", "issue_success", "privacy-projection"); + const serialized = JSON.stringify({ + bootstrap: completed.bootstrap, + created: completed.created, + captureReady: completed.captureReady, + result: completed.result, + }); + for (const forbidden of [ + "privateKey", + "derivedKey", + "prfResult", + "signatureBase64Url", + "receiptId", + "credentialId", + "embedding", + "landmarks", + "pixels", + "mediaStream", + "deviceId", + "deviceLabel", + "biometricScenario", + "issuanceScenario", + ]) expect(serialized).not.toContain(forbidden); + expect(completed.submitInput.frameBundle.dataMode).toBe("metadata_only"); + expect(Object.keys(completed.submitInput.frameBundle.frames[0] ?? {})).toEqual([ + "transportIndex", + "width", + "height", + "encoding", + "byteLength", + "frameDigestSha256", + ]); + }); + + test("invalid canaries are rejected without reflection into errors or headers", async () => { + const runtime = await createAuthenticatorServerRuntimeV0(); + const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort); + const canaries = { + privateKey: "W09_PRIVATE_KEY_CANARY", + rawFrame: "data:image/png;base64,W09_RAW_MEDIA_CANARY", + upstreamError: "W09_UPSTREAM_FREE_TEXT_CANARY", + signatureBase64Url: "W09_SIGNATURE_CANARY", + }; + const response = await handle(apiRequest("/api/v0/session/create", { + idempotencyKey: "privacy-canary", + ...canaries, + })); + expect(response.status).toBe(400); + const observed = `${JSON.stringify(await response.json())}\n${JSON.stringify(Object.fromEntries(response.headers))}`; + for (const value of Object.values(canaries)) expect(observed).not.toContain(value); + }); + + test("committed fixtures and reports contain no real biometric or credential payload files", () => { + const integrationRoot = resolve(import.meta.dir, ".."); + const files = filesUnder(integrationRoot); + for (const path of files) { + expect([".mp4", ".mov", ".webm", ".heic", ".jpg", ".jpeg"], path) + .not.toContain(extname(path).toLowerCase()); + } + const textFiles = files.filter((path) => [".ts", ".md", ".json"].includes(extname(path))); + const text = sourceText(textFiles); + expect(text).not.toContain(["BEGIN", "PRIVATE KEY"].join(" ")); + expect(text).not.toMatch(/Bearer\s+[A-Za-z0-9._~-]{12,}/); + }); + + test("user-visible copy never presents simulation as real biometric, TEE, uniqueness, or issuance proof", () => { + const copy = readFileSync( + join(cleanStartRoot, "packages/contracts/src/authenticator-ui-copy-v1.ts"), + "utf8", + ); + expect(copy).toContain("Staging demo"); + expect(copy).toContain("No biometric verification or uniqueness check was performed"); + expect(copy).toContain("not a Selfie Check credential"); + expect(copy).not.toMatch(/(?:verified|proven)\s+(?:real person|camera provenance|TEE)/i); + }); +}); diff --git a/tests/integration/reports/evidence-report.md b/tests/integration/reports/evidence-report.md new file mode 100644 index 0000000..aab5ad7 --- /dev/null +++ b/tests/integration/reports/evidence-report.md @@ -0,0 +1,101 @@ +# W09 deterministic evidence report + +Product revision under test: `b7d3949099b175ae41e1a95f4f65ee3c2714d98b` + +Evidence was integrated by Main through `ec55f231ddb027d7fd4d69b310b3b3e3bd76e4a8`. +The browser screenshot harness received its stable-paint guard at `7401092`. +The final scoped recovery re-review passed at `ec55f23`. + +Final automated results at this product revision: + +- Integration: 101 passed, 0 failed, 2,092 assertions. +- Browser: 10 passed, 0 failed across two separately named projects. +- Full clean-start: 362 passed, 0 failed, 5,139 assertions across 36 files. +- Typecheck: all client, server, test, and tool projects passed. +- ESLint: passed with zero warnings. +- Browser build: 299.96 kB JavaScript (87.06 kB gzip) and 5.76 kB CSS + (1.96 kB gzip). +- Server build: 162.96 kB. +- Six targeted privacy/copy/isolation scans returned zero matches. + +## Automated scope + +- Bun contract/in-process integration: all 62 frozen UI states, every legal and + illegal action, 19 explicit-cancel states, five lifecycle abort events, + iOS 15–17 update-only classification, iOS 18+ Safari/Chrome candidate + classification, rejected contexts, actual controller/server happy path, + session/result bindings, replay negatives, nested receipt authentication, + all 4 biometric x 3 issuance paths, HTTP strictness, and production isolation. +- Privacy: browser-visible responses, invalid-canary non-reflection, client + persistence/API imports, server-module isolation, S1 import isolation, + fixture types, safe simulator copy, and metadata-only request shape. +- Browser: actual production browser build and Bun server, separately executed as + `desktop-chromium-synthetic` and `desktop-webkit-synthetic`; responsive + 320x568, 375x812, 390x844, 393x852, and 430x932 checks; enlarged-text, + reduced-motion, focus, semantic, storage, URL, console, and network checks. +- Screenshot artifacts are synthetic/non-person. Playwright trace and video are + disabled. + +Browser tooling: Playwright 1.62.1, Chromium 151.0.7922.34, and desktop WebKit +26.5. The WebKit binary was installed through the pinned Playwright version; no +dependency or configuration changed. + +## Defects found and closed + +W09 found two product defects and stopped those paths instead of editing product: + +1. `return_redirecting` exposed Cancel/lifecycle actions while retaining a stale + terminal authoritative-session binding, causing the frozen transitions to + return null. Main corrected this at `7d4b00ea63e00fd039067c44e3f2c48cdbd1c030`; + all 19 cancel states and all five lifecycle events then passed. +2. Blocked admission outcomes were not announced as alerts in the built app. + W01/Main corrected the explicit alert-state registry at + `14dea2384fbc6bb63d0f8d0eef64232e43304d1e`; both browser projects then passed. +3. Retake reused the already-consumed capture idempotency key after the server + issued a new nonce. W01/Main corrected key rotation at + `b7d3949099b175ae41e1a95f4f65ee3c2714d98b`; W09 now drives two actual W06/W10 + submissions and proves the second uses a different key and is accepted. +4. An ambiguous submit transport failure had no authoritative status-recovery + action. Main corrected the frozen recovery transition at + `a311f683377f9d129d38a0d7804f4465ba3e194f`; W09 now proves a server-committed + credential-ready result is recovered through status without resubmission. + +No other product defect was reproduced by W09. + +## Screenshot checksums + +```text +8337244115300e1bb2206a5c411564ef6b16a0aced3c75195f71972d6b16499d desktop-chromium-synthetic-admission-blocked.png +d4d5645e1be39eac464a1edccba043247b7e3c4e109b35142a163477a54c3e2d desktop-chromium-synthetic-request-review-393x852.png +f44da597838657bb6d1598137aec75d54109a222950ba10eccbbffa976f9d855 desktop-chromium-synthetic-returned.png +3483e2a38d7c1b9fc6320342cd67a30f452a9d2c3011f4b499f6dcd9cc416fe4 desktop-webkit-synthetic-admission-blocked.png +146127a092ae75f3438e74f60677a21f86d95ad59e35145fac932d89859a2dcd desktop-webkit-synthetic-request-review-393x852.png +36543aeca014c0f280d68d8a9175074b32105647b27180f3b43dbd3307abea15 desktop-webkit-synthetic-returned.png +``` + +## Evidence boundary + +These results prove deterministic contracts and desktop rendering only. They do +not prove iOS Safari/Chrome behavior, Apple Passwords or GPM presentation, PRF, +protected user presence, camera provenance, physical camera cleanup, VoiceOver, +thermal behavior, biometric performance, TEE integration, real issuance, +uniqueness, AMPC, or proof. Every physical cell is explicitly unexecuted in +`device-lab/UNEXECUTED.md`. + +## Reproduction + +Run from the repository root: + +```text +bun run --cwd clean-start test:integration +bun run --cwd clean-start test:browser +bun run --cwd clean-start test +bun run --cwd clean-start typecheck +bun run --cwd clean-start lint +bun run --cwd clean-start build +git diff --check +./bin/memory check +``` + +The exact counts, browser-project results, final evidence commit, and any external +browser-binary gaps are returned to Main after the final run. diff --git a/tests/integration/reports/screenshots/desktop-chromium-synthetic-admission-blocked.png b/tests/integration/reports/screenshots/desktop-chromium-synthetic-admission-blocked.png new file mode 100644 index 0000000000000000000000000000000000000000..ae6966505bfdb025474b3190d5a6fd116cbc815e GIT binary patch literal 18044 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 tZ^<*k54^~YMBk literal 0 HcmV?d00001 diff --git a/tests/integration/reports/screenshots/desktop-chromium-synthetic-request-review-393x852.png b/tests/integration/reports/screenshots/desktop-chromium-synthetic-request-review-393x852.png new file mode 100644 index 0000000000000000000000000000000000000000..1509dda44846a14c859ee80484d5e6b3c7a4cd98 GIT binary patch literal 28067 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 literal 0 HcmV?d00001 diff --git a/tests/integration/reports/screenshots/desktop-chromium-synthetic-returned.png b/tests/integration/reports/screenshots/desktop-chromium-synthetic-returned.png new file mode 100644 index 0000000000000000000000000000000000000000..05e6c9316f196d87f5b2e340a7e434dd06e720b2 GIT binary patch literal 14949 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 D*56+< literal 0 HcmV?d00001 diff --git a/tests/integration/reports/screenshots/desktop-webkit-synthetic-admission-blocked.png b/tests/integration/reports/screenshots/desktop-webkit-synthetic-admission-blocked.png new file mode 100644 index 0000000000000000000000000000000000000000..361354f7e248dbe4174bf46b5fd1ac2db531b510 GIT binary patch literal 25933 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
    Wx64lXF)K3KsbJ5)`$}`zv%p(g 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 Y{_GPL-K)(N3%bh0)78&qol`;+02!HcR{#J2 literal 0 HcmV?d00001 diff --git a/tests/integration/reports/screenshots/desktop-webkit-synthetic-passkey-intro.png b/tests/integration/reports/screenshots/desktop-webkit-synthetic-passkey-intro.png new file mode 100644 index 0000000000000000000000000000000000000000..5bf9e65138157c67b8ca01808b7dc03f97573800 GIT binary patch literal 28549 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 b@s!0LqW(b`HusY9v$J~IM)#`kK7REd^?YQ6 literal 0 HcmV?d00001 diff --git a/tests/integration/testkit/runtime.ts b/tests/integration/testkit/runtime.ts new file mode 100644 index 0000000..94ab8a7 --- /dev/null +++ b/tests/integration/testkit/runtime.ts @@ -0,0 +1,159 @@ +import { + FRAME_BUNDLE_V0, + FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + SIMULATION_MODE, + SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, + SIMULATOR_BROWSER_SESSION_VIEW_V0, + SIMULATOR_UI_BOOTSTRAP_V0, + computeFrameBundleDigestV0, + type BiometricSimulationScenarioV0, + type FrameBundleV0, + type IssuanceSimulationScenarioV0, + type SimulatorBrowserSessionPortV0, + type SimulatorBrowserSessionViewV0, + type SimulatorUiBootstrapV0, +} from "@clean-start/contracts"; +import { createAuthenticatorServerRuntimeV0 } from "../../../apps/authenticator/src/server/runtime.server"; + +export const PRODUCT_REVISION_UNDER_TEST = + "b7d3949099b175ae41e1a95f4f65ee3c2714d98b" as const; + +export async function sha256Text(value: string): Promise { + const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value)); + return Array.from( + new Uint8Array(digest), + (byte) => byte.toString(16).padStart(2, "0"), + ).join(""); +} + +export async function metadataBundle( + session: SimulatorBrowserSessionViewV0, + accountDigest: string, + frameDigest = "a".repeat(64), +): Promise { + const pending: FrameBundleV0 = { + kind: FRAME_BUNDLE_V0, + mode: SIMULATION_MODE, + sessionId: session.sessionId, + policyId: session.capturePolicy.policyId, + accountPublicMaterialDigestSha256: accountDigest, + nonceDigestSha256: await sha256Text(session.nonceBase64Url), + dataMode: "metadata_only", + frames: [{ + transportIndex: 0, + width: 1, + height: 1, + encoding: "rgba8", + byteLength: 4, + frameDigestSha256: frameDigest, + }], + totalByteLength: 4, + digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, + artifactDigestSha256: "0".repeat(64), + }; + return Object.freeze({ + ...pending, + frames: Object.freeze(pending.frames), + artifactDigestSha256: await computeFrameBundleDigestV0(pending), + }); +} + +export interface CompletedScenarioV0 { + readonly browserPort: SimulatorBrowserSessionPortV0; + readonly bootstrap: SimulatorUiBootstrapV0; + readonly created: SimulatorBrowserSessionViewV0; + readonly captureReady: SimulatorBrowserSessionViewV0; + readonly result: Awaited>; + readonly submitInput: { + readonly sessionId: string; + readonly browserHandle: string; + readonly idempotencyKey: string; + readonly nonceBase64Url: string; + readonly frameBundle: FrameBundleV0; + }; +} + +export interface PreparedScenarioV0 { + readonly browserPort: SimulatorBrowserSessionPortV0; + readonly bootstrap: SimulatorUiBootstrapV0; + readonly created: SimulatorBrowserSessionViewV0; + readonly captureReady: SimulatorBrowserSessionViewV0; +} + +export async function prepareScenario( + biometricScenario: BiometricSimulationScenarioV0, + issuanceScenario: IssuanceSimulationScenarioV0, + id = `${biometricScenario}-${issuanceScenario}`, +): Promise { + const runtime = await createAuthenticatorServerRuntimeV0({ + testConfiguration: { + kind: "authenticator_server_test_configuration_v0", + biometricScenario, + issuanceScenario, + }, + }); + const bootstrap = await runtime.browserPort.bootstrap(); + if (bootstrap.kind !== SIMULATOR_UI_BOOTSTRAP_V0) throw new Error("bootstrap_failed"); + const created = await runtime.browserPort.createSession({ + idempotencyKey: `create-${id}`, + }); + if (created.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create_failed"); + const demo = await runtime.browserPort.beginDemoAuthenticator({ + sessionId: created.sessionId, + browserHandle: created.browserHandle, + idempotencyKey: `demo-${id}`, + }); + if (demo.kind !== SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0) { + throw new Error("demo_begin_failed"); + } + const completed = await runtime.browserPort.completeDemoAuthenticator({ + sessionId: created.sessionId, + browserHandle: created.browserHandle, + idempotencyKey: demo.idempotencyKey, + completionHandle: demo.completionHandle, + }); + if (completed.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) { + throw new Error("demo_complete_failed"); + } + const captureReady = await runtime.browserPort.prepareCapture({ + sessionId: completed.sessionId, + browserHandle: completed.browserHandle, + }); + if (captureReady.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) { + throw new Error("capture_prepare_failed"); + } + return Object.freeze({ + browserPort: runtime.browserPort, + bootstrap, + created, + captureReady, + }); +} + +export async function completeScenario( + biometricScenario: BiometricSimulationScenarioV0, + issuanceScenario: IssuanceSimulationScenarioV0, + id = `${biometricScenario}-${issuanceScenario}`, +): Promise { + const prepared = await prepareScenario(biometricScenario, issuanceScenario, id); + const { browserPort, bootstrap, created, captureReady } = prepared; + const submitInput = Object.freeze({ + sessionId: captureReady.sessionId, + browserHandle: captureReady.browserHandle, + idempotencyKey: `capture-${id}`, + nonceBase64Url: captureReady.nonceBase64Url, + frameBundle: await metadataBundle( + captureReady, + bootstrap.accountPublicMaterialDigestSha256, + ), + }); + const result = await browserPort.submitCapture(submitInput); + return Object.freeze({ + browserPort, + bootstrap, + created, + captureReady, + result, + submitInput, + }); +} diff --git a/tests/integration/testkit/ui.ts b/tests/integration/testkit/ui.ts new file mode 100644 index 0000000..c0af621 --- /dev/null +++ b/tests/integration/testkit/ui.ts @@ -0,0 +1,39 @@ +import { + AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, + ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1, + ENROLLMENT_SESSION_STATES_V2, + makeAuthenticatorUiSnapshotV1, + type AuthenticatorUiDetailCodeV1, + type AuthenticatorUiStateIdV1, + type EnrollmentSessionStateV2, +} from "@clean-start/contracts"; + +function detailFor(state: AuthenticatorUiStateIdV1): AuthenticatorUiDetailCodeV1 | null { + if (state === "capture_guidance_adjust") return "move_closer"; + if (state === "capture_guidance_retake") return "image_blurry"; + if (state === "capture_guidance_unavailable") return "framing_guidance_unavailable"; + if (state === "capture_error") return "permission_denied"; + if (state === "session_error") return "network_timeout"; + if (state === "return_callback_failed") return "navigation_failed"; + if (state === "flow_failed") return "safe_internal_error"; + return null; +} + +function authoritativeFor(state: AuthenticatorUiStateIdV1): EnrollmentSessionStateV2 | null { + for (const serverState of ENROLLMENT_SESSION_STATES_V2) { + if (ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1[serverState].includes(state)) { + return serverState; + } + } + return null; +} + +export function snapshotFor(state: AuthenticatorUiStateIdV1) { + return makeAuthenticatorUiSnapshotV1({ + state, + detailCode: detailFor(state), + authoritativeSessionState: authoritativeFor(state), + rpPresentationId: state === "request_checking" ? null : "zoom_demo", + visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[state], + }); +} diff --git a/tsconfig.client.json b/tsconfig.client.json new file mode 100644 index 0000000..dd6809b --- /dev/null +++ b/tsconfig.client.json @@ -0,0 +1,17 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "types": ["vite/client"] + }, + "include": [ + "apps/authenticator/src/**/*.ts", + "apps/authenticator/src/**/*.tsx", + "apps/authenticator/static-demo/**/*.tsx", + "packages/browser-admission/src/**/*.ts", + "packages/client-quality/src/**/*.ts", + "packages/contracts/src/**/*.ts", + "packages/frame-capture/src/**/*.ts" + ], + "exclude": ["apps/authenticator/src/server/**", "apps/authenticator/src/**/*.server.*"] +} diff --git a/tsconfig.json b/tsconfig.json index 7c8c878..e24fd6d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,28 +1,29 @@ { - "compilerOptions": { - "target": "ES2017", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "react-jsx", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./src/*"], - "@images/*": ["./public/images/*"] - } - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", ".next/dev/types/**/*.ts"], - "exclude": ["node_modules"] + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2022"], + "strict": true, + "noEmit": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "jsx": "react-jsx", + "resolveJsonModule": true, + "isolatedModules": true, + "skipLibCheck": true, + "types": [], + "baseUrl": ".", + "paths": { + "@clean-start/contracts": ["packages/contracts/src/index.ts"], + "@clean-start/browser-admission": ["packages/browser-admission/src/index.ts"], + "@clean-start/frame-capture": ["packages/frame-capture/src/index.ts"], + "@clean-start/client-quality": ["packages/client-quality/src/index.ts"], + "@clean-start/session-gateway": ["services/session-gateway/src/index.ts"], + "@clean-start/biometric-verification-port": ["packages/biometric-verification-port/src/index.ts"], + "@clean-start/staging-issuance-port": ["packages/staging-issuance-port/src/index.ts"], + "@clean-start/simulated-biometric-verifier": ["services/simulated-biometric-verifier/src/index.ts"], + "@clean-start/simulated-staging-issuer": ["services/simulated-staging-issuer/src/index.ts"], + "@clean-start/app-config": ["config/authenticator-app-v0.ts"] + } + }, + "files": [] } diff --git a/tsconfig.server.json b/tsconfig.server.json new file mode 100644 index 0000000..de5aaff --- /dev/null +++ b/tsconfig.server.json @@ -0,0 +1,17 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "lib": ["ES2022", "WebWorker"], + "types": ["bun", "node"] + }, + "include": [ + "apps/authenticator/src/server/**/*.ts", + "apps/authenticator/src/**/*.server.ts", + "apps/authenticator/src/**/*.server.tsx", + "config/**/*.ts", + "packages/biometric-verification-port/src/**/*.ts", + "packages/contracts/src/**/*.ts", + "packages/staging-issuance-port/src/**/*.ts", + "services/**/*.ts" + ] +} diff --git a/tsconfig.test.json b/tsconfig.test.json new file mode 100644 index 0000000..8fa57a4 --- /dev/null +++ b/tsconfig.test.json @@ -0,0 +1,15 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "types": ["bun", "node", "vite/client"] + }, + "include": [ + "apps/authenticator/test/**/*.ts", + "apps/authenticator/test/**/*.tsx", + "config/**/*.test.ts", + "packages/**/*.test.ts", + "services/**/*.test.ts", + "tests/**/*.ts" + ] +} diff --git a/tsconfig.tools.json b/tsconfig.tools.json new file mode 100644 index 0000000..30787e5 --- /dev/null +++ b/tsconfig.tools.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "lib": ["ES2022"], + "types": ["bun", "node"] + }, + "include": ["*.config.ts", "vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..ceb3a4f --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,59 @@ +import react from "@vitejs/plugin-react"; +import { defineConfig, type Plugin } from "vite"; +import { fileURLToPath, URL } from "node:url"; + +const cleanRoot = fileURLToPath(new URL(".", import.meta.url)); +const appRoot = fileURLToPath(new URL("./apps/authenticator", import.meta.url)); + +function path(relativePath: string): string { + return fileURLToPath(new URL(relativePath, import.meta.url)); +} + +function rejectServerModulesFromBrowser(): Plugin { + const forbidden = [ + path("./apps/authenticator/src/server/"), + path("./services/"), + path("./packages/biometric-verification-port/"), + path("./packages/staging-issuance-port/"), + ]; + return { + name: "clean-start-browser-server-boundary", + enforce: "pre", + load(id) { + const normalized = id.split("?")[0] ?? id; + if ( + forbidden.some((prefix) => normalized.startsWith(prefix)) || + /(?:^|\/)apps\/authenticator\/src\/.*\.server\.[cm]?[jt]sx?$/.test(normalized) + ) { + throw new Error("Server-only clean-start module entered the browser graph"); + } + return null; + }, + }; +} + +export default defineConfig({ + root: appRoot, + plugins: [rejectServerModulesFromBrowser(), react()], + publicDir: "public", + resolve: { + alias: { + "@clean-start/contracts": path("./packages/contracts/src/index.ts"), + "@clean-start/browser-admission": path("./packages/browser-admission/src/index.ts"), + "@clean-start/frame-capture": path("./packages/frame-capture/src/index.ts"), + "@clean-start/client-quality": path("./packages/client-quality/src/index.ts"), + }, + }, + server: { + host: "127.0.0.1", + port: 4173, + strictPort: true, + fs: { allow: [cleanRoot] }, + }, + build: { + target: "es2022", + outDir: path("./apps/authenticator/dist"), + emptyOutDir: true, + sourcemap: false, + }, +}); diff --git a/vite.static-demo.config.ts b/vite.static-demo.config.ts new file mode 100644 index 0000000..c37f190 --- /dev/null +++ b/vite.static-demo.config.ts @@ -0,0 +1,87 @@ +import react from "@vitejs/plugin-react"; +import { copyFileSync, mkdirSync, writeFileSync } from "node:fs"; +import { fileURLToPath, URL } from "node:url"; +import { defineConfig, type Plugin } from "vite"; +import { AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "./config/authenticator-app-v0"; + +// Static demo build: `apps/authenticator/static-demo` runs the staging simulator +// inside the page, so the output under `apps/authenticator/dist-static` is a +// plain static site. Deploy that folder to Cloudflare Pages or Vercel. + +function path(relativePath: string): string { + return fileURLToPath(new URL(relativePath, import.meta.url)); +} + +const outDir = path("./apps/authenticator/dist-static"); + +const MEDIAPIPE_RUNTIME_FILES = [ + "vision_wasm_internal.js", + "vision_wasm_internal.wasm", + "vision_wasm_module_internal.js", + "vision_wasm_module_internal.wasm", + "vision_wasm_nosimd_internal.js", + "vision_wasm_nosimd_internal.wasm", +] as const; + +// The served app sends these headers from the Bun server; static hosts need +// them as files. Cache-Control is left to the host so hashed assets stay cacheable. +const STATIC_HEADERS = Object.entries(AUTHENTICATOR_APP_SECURITY_HEADERS_V0) + .filter(([name]) => name !== "Cache-Control"); + +function staticDemoHostFiles(): Plugin { + return { + name: "clean-start-static-demo-host-files", + closeBundle() { + mkdirSync(`${outDir}/mediapipe`, { recursive: true }); + for (const name of MEDIAPIPE_RUNTIME_FILES) { + copyFileSync( + path(`./node_modules/@mediapipe/tasks-vision/wasm/${name}`), + `${outDir}/mediapipe/${name}`, + ); + } + writeFileSync( + `${outDir}/_headers`, + `/*\n${STATIC_HEADERS.map(([name, value]) => ` ${name}: ${value}`).join("\n")}\n`, + ); + writeFileSync(`${outDir}/.assetsignore`, "vercel.json\n"); + writeFileSync(`${outDir}/vercel.json`, `${JSON.stringify({ + rewrites: [{ source: "/(.*)", destination: "/index.html" }], + headers: [{ + source: "/(.*)", + headers: STATIC_HEADERS.map(([key, value]) => ({ key, value })), + }], + }, null, 2)}\n`); + }, + }; +} + +export default defineConfig({ + root: path("./apps/authenticator/static-demo"), + publicDir: path("./apps/authenticator/public"), + plugins: [react(), staticDemoHostFiles()], + resolve: { + alias: { + "@clean-start/contracts": path("./packages/contracts/src/index.ts"), + "@clean-start/browser-admission": path("./packages/browser-admission/src/index.ts"), + "@clean-start/frame-capture": path("./packages/frame-capture/src/index.ts"), + "@clean-start/client-quality": path("./packages/client-quality/src/index.ts"), + "@clean-start/session-gateway": path("./services/session-gateway/src/index.ts"), + "@clean-start/biometric-verification-port": path("./packages/biometric-verification-port/src/index.ts"), + "@clean-start/staging-issuance-port": path("./packages/staging-issuance-port/src/index.ts"), + "@clean-start/simulated-biometric-verifier": path("./services/simulated-biometric-verifier/src/index.ts"), + "@clean-start/simulated-staging-issuer": path("./services/simulated-staging-issuer/src/index.ts"), + "@clean-start/app-config": path("./config/authenticator-app-v0.ts"), + }, + }, + build: { + target: "es2022", + outDir, + emptyOutDir: true, + sourcemap: false, + }, + preview: { + host: "127.0.0.1", + port: 4174, + strictPort: true, + }, +}); From 50831f5b95c24f4b0c334cbe350f3cb583c66f2a Mon Sep 17 00:00:00 2001 From: dzejkop Date: Wed, 7 Oct 2026 20:55:25 +0000 Subject: [PATCH 02/38] Disable automatic Vercel deployments --- README.md | 4 +++- vercel.json | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 vercel.json diff --git a/README.md b/README.md index ea4aea1..68a0cc2 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,9 @@ physical-passkey/provider compatibility. For Nix Chromium, set configuration with installed fonts. CI installs both Playwright browser targets. `bun run build:static-demo` retains the standalone preview build. No deployment -project or automatic publishing target is configured. +project or automatic publishing target is configured. Automatic Vercel Git +deployments are disabled in the root `vercel.json`; the existing GitHub integration +does not need to build this app. ## Migration provenance diff --git a/vercel.json b/vercel.json new file mode 100644 index 0000000..8705660 --- /dev/null +++ b/vercel.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://openapi.vercel.sh/vercel.json", + "git": { + "deploymentEnabled": false + } +} From 0df4aec39861def14221897710332db581219b91 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Thu, 8 Oct 2026 13:25:46 -0700 Subject: [PATCH 03/38] turning the spec into a readme --- README.md | 170 ++++++++++++++++++++++++++++++- docs/connector-bridge.md | 64 ++++++++++++ docs/production-gaps.md | 81 +++++++++++++++ docs/selfie-enrollment.md | 163 ++++++++++++++++++++++++++++++ docs/wasm-upstream-plan.md | 198 +++++++++++++++++++++++++++++++++++++ 5 files changed, 674 insertions(+), 2 deletions(-) create mode 100644 docs/connector-bridge.md create mode 100644 docs/production-gaps.md create mode 100644 docs/selfie-enrollment.md create mode 100644 docs/wasm-upstream-plan.md diff --git a/README.md b/README.md index ce7842b..bf6253d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,169 @@ -# web-authenticator +# Web Authenticator -World ID Web Authenticator. +A browser authenticator for World ID. We will let users complete Selfie Check and respond to IDKit requests without downloading an app. + +This repo contains the browser experience and the current staging demo. Real selfie enrollment through a TEE is still being built. + +## Run locally + +Use Bun to install dependencies and start the demo: + +```sh +bun install --frozen-lockfile +bun run dev +``` + +Open [localhost:3100](http://localhost:3100). The development command starts Vite on port 3100 and the Bun API server on port 3101. + +- `/`: authenticator setup, unlock and request entry. +- `/selfie-check`: Selfie Check request flow. +- `/selfie-demo`: camera preview and connection log. + +Passkey setup requires a browser and provider that support the WebAuthn PRF extension. Camera access requires HTTPS or localhost. + +The TEE target is configured in `.env.local`: + +```dotenv +VITE_TEE_BASE_URL=http://localhost:8000 +``` + +This only selects a target. It does not start a TEE, verify an enclave or enable uploads. The current `connect()` implementation reports that connection setup is unavailable. + +## What works today + +The demo has passkey-derived authenticator setup, WalletKit integration, an encrypted browser credential vault and a continuous camera preview. + +The developer enrollment flow can issue a staging credential using synthetic face data. It does not use the camera image, create a real face PCP or verify TEE enrollment evidence. + +We still need frame extraction, local capture guidance, a verified TEE connection, real enrollment and request-bound face matching. + +## Where the work lives + +| Component | Responsibility | +| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `web-authenticator` | Consent, passkeys, camera, capture guidance, request handling and browser storage. | +| `walletkit` | Protocol registration, credential subjects, credential storage and proof generation. Browser TEE APIs still need integration. | +| `di-migration-tee` | Starting point for the biometrics TEE: admission API, host-to-enclave communication and attested keys. Selfie operations need to be added. | +| `signup-service` | Verify enrollment authorization and evidence, submit shares for uniqueness processing and request credential signing. | +| `signup-service-credential-signer` | Sign the credential with the ordered claims supplied by the issuer. | + +We refer to the planned biometric service as `biometrics-tee`. The starting implementation is in `di-migration-tee`; its migration API is not a selfie enrollment API. + +## Authenticator setup + +The current flow creates a passkey before enrollment. We derive two independent secrets from that passkey: + +```text +seed = HKDF-Expand( + PRF("web.world.org/authenticator"), + "web.world.org/v1/authenticator-secret", 32) + +databaseKey = HKDF-Expand( + PRF("web.world.org/storage"), + "web.world.org/v1/storage-secret", 32) +``` + +The seed initializes the World ID authenticator. The database key unlocks the encrypted credential vault in OPFS, the browser's origin-private filesystem. + +We register the authenticator and wait for finalization before using it. On return, we unlock the same passkey, derive the same secrets and reopen the vault. Secrets stay in memory and must not be logged or persisted in plaintext. + +The production passkey RP ID and hosting origin must be agreed before rollout. The domain names in the PRF labels do not configure either one. + +## First enrollment — planned + +1. Open an IDKit request or start enrollment from the authenticator. Show consent. +2. Prepare the schema-11 credential subject and blinding factor through WalletKit. +3. Start the camera and TEE session setup concurrently. Show local capture guidance while the connection is prepared. +4. Verify the enclave attestation and its public-key binding. Establish a session bound to the subject, challenge and expiry. +5. Capture the required images or video and encrypt them to the enclave. +6. The TEE runs the authoritative checks and generates the embedding, protected enrollment outputs and evidence binding those outputs to the enrollment. +7. The browser builds and encrypts the PCP from those outputs and the corresponding capture material. The exact output and PCP contracts still need implementation. +8. Submit the enrollment payload and TEE evidence to the Face issuer. The issuer verifies their binding and processes the uniqueness result. +9. Poll for the signed credential. Store it with its blinding factor and retain the associated encrypted PCP. +10. Complete the original IDKit request if enrollment started from one. + +We intend to use the existing Face issuer endpoints: + +- `PUT /api/v1/identity`: submit enrollment. +- `GET /api/v1/identity`: poll for its result and credential. + +Keeping those routes still requires changes to accept and verify TEE evidence, and to authorize browser polling. The browser does not have a World App integrity token. + +## Returning verification — planned + +We will validate the incoming request, unlock the authenticator and check the stored credential's expiry and constraints. + +When fresh user presence is required, we will capture a new selfie and ask the TEE to compare it with the credential-bound PCP reference. The match evidence must be bound to the current request. WalletKit and the RP verifier must carry and verify that binding before the response is accepted. + +Having a stored credential alone does not prove fresh presence. If the credential or PCP is missing, we need reissuance or transfer from another authenticator. + +## Browser and TEE checks + +| Browser: capture feedback | TEE: authoritative evaluation | +| -------------------------------------- | --------------------------------------------------------------------------------- | +| TFH face detection and QA models. | The complete configured face-engine enrollment or verification pipeline. | +| Lightweight glasses detector. | Full required occlusion and image-quality checks, including non-model validators. | +| Our own orchestration and guidance UI. | Configured spoof checks, embedding generation and matching when required. | + +A capture can pass browser guidance and still fail in the TEE. We will surface the rejection and let the user retake it. + +An encrypted connection does not prove that an image came from a live camera. Liveness guarantees depend on the capture protocol and the checks actually performed. We must not claim mobile LightGuard parity for the web flow. + +## PCP storage and reissuance + +The browser builds the PCP. The TEE supplies the verified biometric outputs needed to build it. + +We will store the PCP encrypted in browser storage. Its binding to the signed credential must survive storage and later verification. The browser PCP API and storage format are still to be implemented. + +A passkey can recover a storage key; it cannot recreate deleted vault files. If browser storage is lost, the intended recovery paths are: + +- Transfer the credential and PCP from another authenticator. +- Prove control of the same World ID, capture a fresh selfie and request reissuance with a new PCP. + +Reissuance requires issuer support and face continuity checks. Creating a new identity is not a reliable recovery path: the existing face enrollment can still match during uniqueness processing. + +## Issuance claims — proposed + +The existing signed claims occupy indices 0–2: + +| Index | Claim | +| ----- | -------------- | +| 0 | Z-score. | +| 1 | Match count. | +| 2 | Database size. | + +We will extend the credential with verified issuance information: + +| Proposed index | Claim | Meaning | +| -------------- | ------------------------ | ------------------------------------------------------------------------------------------------ | +| 3 | `issuance_assurance` | `0`: unknown; `1`: app; `2`: TEE; `3`: app and TEE. | +| 4 | `model_security_profile` | Versioned identifier for the checks and configuration that ran. Profile IDs remain to be agreed. | + +These additions need a compatible schema rollout. The issuer derives and persists the values from verified evidence; it must not accept assurance values supplied by the browser. + +## Admission and runtime protection + +The public ingress must admit and rate-limit enrollment attempts before allocating expensive TEE work. IP and User-Agent can support abuse controls; they are not proof of identity or camera authenticity. We do not plan to request browser geolocation. + +Promon Shield for Web is a proposed runtime-protection layer. Its session validation would need enforcement at ingress. It does not replace enclave attestation, biometric checks or issuer verification. + +Logs should record operation status, timings and bounded failure codes. Do not log images, embeddings, PCP contents, secrets or authorization tokens. + +## Next implementation steps + +1. **Browser frame sampling.** Keep the native preview smooth; process sampled frames in a worker with bounded memory and no backlog of stale guidance frames. +2. **TEE enrollment session.** Add subject/challenge binding, expiry, attested channel setup and a bounded encrypted-capture receiver. +3. **Encrypted frame-set experiment.** Send selected captures and verify an authenticated enclave acknowledgement. +4. **Encrypted WebRTC experiment.** Add signaling and media reception, with frame encryption that remains intact until enclave decryption. +5. **Real enrollment.** Run the full biometric checks, return enrollment outputs, build the PCP on the client and wire issuer verification and polling. +6. **Returning presence and recovery.** Add request-bound matching, credential reissuance and cross-authenticator transfer. + +Compare the two transport experiments using time to first accepted capture, bytes uploaded, guidance latency, UI responsiveness and enclave processing cost. + +## References + +- [Selfie Check via Web Authenticator — source spec](https://app.notion.com/p/worldcoin/Selfie-Check-via-Web-Authenticator-cfd0a1d9d6de45d49241382a36645c6b) +- [Soam's handover](https://github.com/worldcoin/web-authenticator-experiments/blob/0bd61a20b23ff0a778553ac1788bd3aa3c7b9404/docs/web-authenticator-handover.md) +- [WalletKit](https://github.com/worldcoin/walletkit) +- [TEE starting implementation](https://github.com/worldcoin/di-migration-tee) +- [Face signup service](https://github.com/worldcoin/signup-service) diff --git a/docs/connector-bridge.md b/docs/connector-bridge.md new file mode 100644 index 0000000..c1a3134 --- /dev/null +++ b/docs/connector-bridge.md @@ -0,0 +1,64 @@ +# Native connector and bridge flow + +The authenticator accepts World ID connector query parameters at `/verify` or `/`. +This code is independent of the relying-party demo's request generation. + +- `src/lib/requests/connector.ts`: strict `i`/`k` parsing, official bridge allowlist, + safe explicit return URLs. Only ordinary URL/QR links are supported, not invite codes. +- `bridge.ts`: bounded fetch, browser-only AES-256-GCM decryption, fresh-IV encrypted + response upload with PUT. The bridge key never goes to our server or browser storage. +- `proof-request.ts`: staging-only V4 uniqueness payload parsing, action/hash binding, + expiry, registry-backed RP signature validation, and vault credential matching. +- `/api/staging-rp`: fixed World Chain RPC / staging RP registry lookup. Caller controls + only a uint64 RP ID. It returns the active RP signer and OPRF key, not secrets. +- `incoming-request.ts`: turns the bridge payload into a request the + drawer can review. No signed request fields are rewritten to fit available credentials. +- `CredentialRequestSheet`: opens automatically, shows the actual requested schemas, + blocks unsatisfied or unsupported requests, and requires approval before generation. + The proof stays visible for review before explicit encrypted delivery/return. + +The connector query is removed from browser history after capture, and the app uses +`Referrer-Policy: no-referrer`. Reloading that cleaned page loses the in-memory request; +open a fresh connector from the RP to continue. Logs include steps/status only. + +## iOS reference + +Read-only reference: worldcoin/world-app-ios at +`468ef889125c4bad28c4b0b27686a1f6f20ea454` (latest remote `main` checked on 2026-10-01). +The local checkout was on a different branch; referenced files were fetched through +the GitHub API at this exact commit without modifying that checkout. +Bridge parsing, preload, crypto, networking and response-envelope files match the +local checkout. The legacy shell routing files differ, and the latest versions were +read to confirm the same prepare → preload → credential-request sheet flow. + +- `Sources/WorldAppLegacy/Sources/WorldIDAppLib/IDApp/IDAppReducer+UniversalLinks.swift`: incoming link routing. +- `Sources/WorldAppLegacy/Sources/RelyingPartyResponder/RelyingPartyResponderPreload.swift`: + request loading, metadata and credential checks before presentation. +- `Sources/WorldAppLegacy/Sources/RelyingPartyResponderCore/WorldIDBridge/AnonymousWorldIDBridgeClient.swift`: + allowlisted bridge fetch and response submission. +- The sibling `WorldIDBridgeCryptoService.swift`: AES-GCM, ciphertext followed by tag, + base64 IV/payload wrapper. +- `Sources/WorldAppLegacy/Sources/RelyingPartyResponderCore/Networking/WorldIDAPI.swift`: + GET request and PUT response routes. +- `WorldIDBridge/Models/WorldIDBridgeV2_1Response.swift`: `proof_response` response envelope. + +## Scope + +No iOS build or edits. No automated functional tests, per user preference. +User-presence/face-auth and identity attestation requests are visibly unsupported; +passkey user verification is not substituted for those protocol requirements. +Session proof types and legacy V3 requests are also rejected explicitly. +Native integrity bundles cannot be produced here. A staging RP verifier may reject +an otherwise returned proof if its policy requires such a bundle. Transport delivery +is shown separately from RP verification, which happens at the RP. + +The staged registry deployment address comes from the local World ID protocol +`contracts/deployments/core/staging.json`. App ID/action presentation does not claim +a verified brand or domain; the RP signature establishes the registry signer only. + +## Browser check + +The hosted RP created a real IDKit request targeting localhost `/verify`. The +authenticator fetched/decrypted it and validated RP c8b34be5b84c6722 against the +staging registry. It then waited for the user's passkey unlock. Proof generation, +response upload and RP verifier acceptance were not confirmed by that check. diff --git a/docs/production-gaps.md b/docs/production-gaps.md new file mode 100644 index 0000000..851b45e --- /dev/null +++ b/docs/production-gaps.md @@ -0,0 +1,81 @@ +# Demo → production gaps + +## Validated milestone + +The user reported completing **synthetic selfie enrollment → staging credential +issuance → encrypted browser storage → IDKit selfie request → proof generation → +successful staging contract verification** on October 1, 2026. This is user-run +end-to-end validation, not an agent-run functional test or a security assessment. + +The passkey PRF derivation, WalletKit authenticator, encrypted credential vault, +AMPC share generation/sealing, staging issuer signature, and credential proof are +real. The face embedding is synthetic. Share creation is **not** simulated: the +helper uses the AMPC library and seals shares to staging party public keys. + +## 0 — Directly missing relative to the mobile authenticator flow + +Comparison baseline is the reviewed iOS implementation, not a claim that every +Android path was checked. These are mobile-parity gaps in the authenticator or +its end-to-end issuer/RP integration; ownership is identified separately. + +| Gap | Current demo → mobile-parity work | Owner | +| ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | +| Real enrollment biometrics | Synthetic embedding → real capture, quality checks, PAD/liveness and model output. | Biometric SDK + authenticator | +| Enrollment integrity and data binding | Staging exception, synthetic associated-data hash and omitted attested share hashes → authenticated capture/model/share/PCP binding. Web needs an issuer-approved mechanism; native App Attest is not directly available to a website. | Integrity/issuer services + authenticator | +| PCP creation, custody and recovery | Credential vault only → complete attested package, encrypted PCP persistence/backup, recovery and its deletion/update lifecycle. | Oxide/PCP SDK + authenticator | +| Local enrollment identity custody | Helper stores a separate enrollment identity seed on the localhost server → custody on the intended user-device boundary. Having a separate face/enrollment identity is not itself a mobile-parity gap; its current custody location is. | Enrollment SDK + authenticator | +| Live presence when sharing | `require_user_presence: false`; presence-required requests blocked → actual selfie/presence verification bound to the request. Passkey unlock does not substitute for it. | Biometric SDK + authenticator | +| Proof-response integrity and trusted disclosed claims | Actual score attached, but no mobile-style response integrity bundle → bind the disclosed score and any presence result to the proof/request through the accepted integrity protocol. | Authenticator + integrity service | +| Equivalent RP acceptance policy | Direct contract verification only → Developer Portal verify or an approved equivalent that enforces required integrity/claims/presence policy. This is an **RP-side integration gap**, not code the mobile authenticator itself owns. | RP + verifier | + +## 1 — Missing, but not immediately necessary for the next staging milestone + +These are follow-up work, design decisions, or items removed from the immediate +mobile-parity gap list. Completed items are explicitly marked. "Not immediately necessary" does **not** mean optional +before exposing a production system to real users/data. + +| Work | Why it is in category 1 | Owner | +| ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | +| `proveCredentialSub` in enrollment | Current iOS exposes it for developer tooling but does not send it in live selfie enrollment. Confirm issuer protocol/enforcement before adding it as a requirement. | WalletKit + issuer + authenticator | +| RP nullifier replay protection — **implemented** | RP-owned, not an authenticator gap. The Worker now atomically consumes nullifiers across fresh requests for the same staging RP/action/credential schema, in addition to single-use nonces. Kept here to track the item removed from the missing-parity list. | RP Worker | +| Supported browser SDK and removing the native helper | The experimental WASM package already performs the validated wallet/proof flow. Upstream worker APIs, supported releases and browser-compatible enrollment primitives are packaging/runtime work; the custody boundary remains category 0. | WalletKit + enrollment SDK | +| Expanded session/account UX | Explicit sign-out/lock, idle policy, authenticator removal, account discovery and multi-tab handling can follow the current single-browser test. Do not assert a particular mobile idle/session policy without tracing it. PCP custody/recovery is separately category 0. | Authenticator + WalletKit | +| Production passkey domain and web hardening | Localhost works for staging. Production RP-ID/origin selection, provider compatibility, script/dependency policy and XSS defenses must be resolved before production rollout. | Web authenticator | +| Production service operations and privacy | Replace local-process assumptions with appropriate backend authorization, durable operation handling, abuse controls, restricted debug surfaces, privacy-aware telemetry, retention and incident handling before public use. | Each deployed service | +| RP business-action completion | Nonce replay protection and atomic persistent nullifier consumption across fresh requests are now implemented. Coupling verification to a real product action, idempotent fulfillment and retention policy is subsequent RP application work. | RP application | + +Not missing: real AMPC share generation/sealing, browser credential encryption, +issuer-signature checking, credential proof generation/contract verification, and +RP nullifier reuse protection. The RP ledger covers new verifications only; old +demo successes cannot be backfilled because their nullifiers were not retained. + +## Important distinctions + +Latest iOS `main` checked at `94fed50fe740123065f8b9fd6e24dea827381347` +(October 1, 2026) exposes `proveCredentialSub` in AuthenticatorClient and calls it +from the developer ownership-proof action. Its live selfie issuer currently calls +`enrollFacePcpWithIntegritySigner` with `faceIdentity` and `sub`, without supplying +a v4 ownership proof. Therefore ownership proof is category 1: a protocol/design integration +question, not a claim that the current iOS selfie flow already sends that proof. Determine issuer enforcement requirements before calling it mandatory. + +- A successful proof establishes the contract's credential/account/request + conditions. It does not turn synthetic input into verified human biometrics. +- A zero score is the issuer-returned claim, not a locally fabricated score. This + demo still does not authenticate that disclosed value for RP policy decisions. +- Local PRF evaluation is a vault-unlock ceremony, not a backend login assertion. + If a production backend authenticates sessions using WebAuthn, that requires its + own server-issued challenges and assertion validation. Such a backend login is + not automatically necessary for a purely local vault unlock. +- Clearing browser storage, deleting a password-manager passkey, removing an + on-chain authenticator, and deleting issuer-side biometric enrollment are + separate operations. +- The current proof-response path lacks the native app integrity bundle accepted + by Developer Portal. A production web integrity policy is an integration/design + requirement, not merely a missing hardcoded field. + +Implementation references: [selfie enrollment](selfie-enrollment.md), +[enrollment adapter](../src/lib/selfie-issuer-server.ts), and +[WalletKit wrapper patch](../walletkit-patches/walletkit-web@0.22.1.patch). + +The RP verifier and replay ledger described above belong to the separate local +playground under ignored `demo/`; their implementation is not included in this branch. diff --git a/docs/selfie-enrollment.md b/docs/selfie-enrollment.md new file mode 100644 index 0000000..a2cf16a --- /dev/null +++ b/docs/selfie-enrollment.md @@ -0,0 +1,163 @@ +# Selfie enrollment integration + +## Implemented synthetic staging issuance + +**Issue selfie credential** appears only in the initialized developer menu, below +faux issuance. It prepares schema 11 in the existing browser WalletKit, calls the +localhost-only `/api/selfie-credential` route, polls staging, verifies the returned +credential's signature against the current staging schema registry and its subject, +and stores it with the browser-held blinding factor. An active schema-11 credential +prevents another issuance. Deleting the credential does not delete its enrollment; +clicking issue again retrieves the existing result, rather than refreshing it. + +The local `src/server/face-enrollment-helper` helper uses pinned AMPC sharing/sealed boxes, +Oxide enrollment authentication, and credential verification primitives. Build with +`npm run build:selfie-helper` (Cargo must be on PATH; private GitHub dependency +access is required). The direct Oxide dependency also requires `wget`, `jq`, +`protoc` (protobuf), and the native C/C++ toolchain for its transitive biometric +dependencies. `build-config.toml` supplies Oxide's upstream asset-download settings. + +Authentication uses pinned Oxide `329274a32be02be0bb39ca02adc4e4e4e438ada0` +`ZkpAuthentication::create_header` with API v1. Oxide fetches the challenge and +builds the proof/header. The saved seed remains UTF-8 hexadecimal text with +`IdentityContext::Orb` (`identity_trapdoor`), preserving existing enrollment +identities; switching to Face context would change them. The helper now makes +staging authentication requests and is bounded by its parent process deadline. +It does not invoke WalletKit CLI or receive the wallet seed, +passkey PRF outputs, database key, or blinding factor. Synthetic input is generated +using `FaceVector::random_normalized`; the preview fixture below is separate. + +Only the staging enrollment endpoint is enabled. Like Orb Tools, this fixture uses +`staging-test-token` headers, a synthetic associated-data hash, and omits attested +share hashes. It has no actual camera capture, liveness check, or recoverable PCP. + +A private operation file under +`~/.local/state/web-authenticator/synthetic-selfie-issuance` contains a separate +staging enrollment identity seed, capture ID, token hash, and submission state +(directory 0700, files 0600). An opaque resume token is saved in browser localStorage; +it is not a wallet secret. Neither signed credentials nor embeddings are saved on +the server. An ambiguous submission is only polled, never resubmitted automatically. +If the backend never accepted it, it remains unresolved and requires investigation. +The original decimal-commitment request format was rejected with HTTP 400 before +enrollment storage. That specific saved rejection can retry once, on the next +button click, after migrating to the required padded-hex format; it retains the +same seed and capture ID. Other rejected or ambiguous attempts are not reset. +No automatic refresh or deletion of backend enrollment is implemented. + +The WalletKit worker attaches only schema 11's first stored claim (the score), +matching the iOS disclosure policy. This makes IDKit 4.3.0 able to decode the selfie +response. The demo RP verifies the credential proof against the staging contract; +it does **not** authenticate the separately disclosed score, App Attest integrity, +or user presence. Requests requiring user presence remain blocked by the drawer. + +References: + +- [Oxide share serialization and encryption](https://github.com/worldcoin/oxide/blob/c3c4d04b5ae60c924e5a8ba847cc337fd7489300/oxide/src/api/pop_face_backend_api/face_embedding_shares.rs) +- [Oxide identity authentication](https://github.com/worldcoin/oxide/blob/c3c4d04b5ae60c924e5a8ba847cc337fd7489300/oxide/src/zkp_authentication/mod.rs) +- [Orb Tools staging enrollment](https://github.com/worldcoin/orb-tools/blob/f02e8d65155dd5bee0d05ec9b26c2fb22f309625/crates/signup-flow/src/face_enrollment_harness.rs) + +Native helper build, TypeScript, ESLint, and Next build are static/build validation. +No enrollment, passkey prompt, proof generation, or end-to-end functional test was +run by the agent for this change. + +## Development fixtures and enrollment boundary + +The synthetic-result preview and its capture fixture are kept in the ignored +local `demo/fixtures/` directory. They are not imported or rendered by the +authenticator. The staging issuance flow described above still uses synthetic +input generated by the native helper. + +`src/lib/staging-face-enrollment.ts` copies Orb Tools' enrollment exception into a +request builder restricted to `https://app.stage.face.worldcoin.org/api/v1/identity`. +It supplies both staging integrity headers and retains the required `x-zkp-proof`. +It bounds the payload and request deadline and rejects redirects. The issuance route now constructs its multipart request directly with FormData; +this earlier request-builder helper remains unused. No enrollment has been +submitted automatically. +This exception is scoped to signup admission; RP verification is a separate service. + +`spoofScore` is a PAD result, not the issuer's sybil score. Neither belongs in logs. +Latest reviewed iOS reads the selfie credential's first stored claim and attaches +that claim to its proof response. It does not hardcode `sybil_score: 10`. +It then computes a digest including the claims and obtains an integrity bundle. + +## Planned TEE enrollment and native-compatible PCP custody + +The [upstream/WASM plan](wasm-upstream-plan.md) fixes share generation in the TEE. +The steps below describe the target implementation; current staging issuance +remains synthetic. Exact custody output and PCP assembly boundaries must be +specified with the service owners while preserving the canonical package format. + +1. Reuse the initialized WalletKit session and `prepareCredential(11n)`; retain the + subject and blinding factor for this operation. Do not register a new identity. +2. Obtain the accepted embedding and its exact custody data through TEE-backed + enrollment. The TEE quantizes the embedding, generates AMPC shares, encrypts + them to authenticated party keys and attests the bound output. Implement a + small PCP-only WASM surface from existing Oxide hashing, package and custody + crypto code as needed; exclude quantization, share generation and party + encryption. The installed `walletkit-web@0.22.1` does not expose these custody + APIs. Confirm dependency compatibility before choosing the binding revision; + do not bundle native camera/model inference into the browser. +3. Build Face PCP v1 associated data: identity commitment, capture ID/time, original + embedding plus metadata, accepted PNG, and three AMPC shares of the quantized + embedding. Resolve the enrollment identity explicitly: iOS supplies a face + identity separately from the v4 credential subject; an authenticator address is + not a substitute for that commitment. + Use the TEE-produced shares for custody and enrollment; never independently + generate a second set. Deliver sensitive custody data encrypted to the user's + authenticated custody key rather than exposing it to the relay or issuer. +4. Package with the enrollment attestation material. iOS uses the same integrity + session in the package and enrollment request. The web flow requires a defined + TEE evidence contract accepted by the issuer; it cannot label that evidence as + iOS App Attest. A synthetic fixture cannot supply + that material. For staging, use the copied Orb Tools test-admission headers; + they are not genuine attestation material to put into a production PCP. Keep + synthetic packages explicitly identified as test artifacts. +5. Encrypt and read back the pending package before submission, preserving the + operation ID, subject, and blinding factor in encrypted recovery state. Derive a + versioned PCP custody key from our storage secret during unlock, before clearing + raw secrets. For native-format interoperability use Oxide's personal-custody + public-key sealing, not an AES envelope described as native-compatible. Store + ciphertext in IndexedDB separately from WalletKit's OPFS credential store. +6. Submit the encrypted AMPC shares and hashes bound to that package and subject; + use bounded polling. Reconcile interrupted/unknown submissions under the same + operation instead of automatically creating another enrollment. +7. Validate the returned issuer credential and subject binding, call + `storeCredential(bytes, blindingFactor)`, insert `credential.json` into the PCP, + and save the updated encrypted package. Recover interrupted local commits from + the same persisted issuer result. Track local completion and cloud backup + separately; syncing a passkey does not sync PCP ciphertext. +8. Expose the required stored credential claims through WalletKit's worker API. + Attach the actual z-score claim when building selfie responses and bind it into + the integrity flow. Keep IDKit 4.3.0 and request `selfie`. + +The PCP archive contains optional `credential.json`, `associated_data/info.json`, +`associated_data/face_embeddings.json`, `associated_data/face_image.png`, three +`associated_data/face_ampc_share_{0,1,2}.json` files, and +`signed_hashes_attestation_gw.sign`. A saved embedding alone is not this package. + +## Reviewed sources + +- [Experiments PR #6 decoded biometric result](https://github.com/worldcoin/web-authenticator-experiments/blob/0bd61a20b23ff0a778553ac1788bd3aa3c7b9404/tools/biometric-lab/native.ts) +- [iOS enrollment on main reviewed October 1, 2026](https://github.com/worldcoin/world-app-ios/blob/468ef889125c4bad28c4b0b27686a1f6f20ea454/Sources/WorldAppLegacy/Sources/FaceCredentialIssuer/LiveFaceCredentialIssuerV4.swift) +- [iOS claims and integrity digest](https://github.com/worldcoin/world-app-ios/blob/468ef889125c4bad28c4b0b27686a1f6f20ea454/Sources/WorldAppLegacy/Sources/SelfieCheck/Screens/SelfieCheckRoot%2BBridge.swift) +- [Oxide PCP creation](https://github.com/worldcoin/oxide/blob/329274a32be02be0bb39ca02adc4e4e4e438ada0/oxide/src/face_enrollment/mod.rs) +- [Oxide archive format](https://github.com/worldcoin/oxide/blob/329274a32be02be0bb39ca02adc4e4e4e438ada0/oxide/src/face_personal_custody/extraction.rs) +- [Oxide custody encryption](https://github.com/worldcoin/oxide/blob/329274a32be02be0bb39ca02adc4e4e4e438ada0/oxide/src/face_personal_custody/storage.rs) + +Oxide links are its independently reviewed main revision. iOS pins oxide-swift +0.73.0 at b1b92e73015e4feda18b60cc73a638b2ce64e641; exact Rust release parity has +not been established. Check that before publishing a native-compatible codec. + +## Developer storage controls + +The credential vault provides per-credential deletion and deletion of all displayed +local credentials, with explicit confirmation. The WalletKit package patch exposes +`CredentialStore.deleteCredential` through its existing worker. Deletion preserves +registration and the passkey; it does not call issuer-side revocation/deletion. +Failures report confirmed deletions and refresh the list, including partial batches. + +The separate **Delete local PCP** control is disabled while PCP persistence is not +implemented. It must later target only this authenticator's local PCP records, not +clear origin storage or delete cloud backups. This follows iOS's separate local-PCP +reset action; iOS's face-credential deletion has broader backend effects that this +web developer control intentionally does not invoke. diff --git a/docs/wasm-upstream-plan.md b/docs/wasm-upstream-plan.md new file mode 100644 index 0000000..35995f7 --- /dev/null +++ b/docs/wasm-upstream-plan.md @@ -0,0 +1,198 @@ +# Browser/WASM dependencies and upstream PR plan + +Checked October 1, 2026 against this authenticator's source, dependency pins, +and the linked GitHub PRs. Proposed PR titles below are a plan, not opened PRs. + +**Decided plan for web enrollment:** the TEE produces the accepted embedding, +quantizes it, generates AMPC shares, encrypts them to authenticated party keys, +and attests the bound enrollment output. The browser handles capture, encrypted +transport and user custody. This is the implementation target agreed for this +project, not a claim that the upstream services already implement it. + +## What the authenticator uses today + +| Capability | Current implementation | Upstream action | +| -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Registration, credential preparation/storage, proof generation | `walletkit-web@0.22.1`, from the open WalletKit #480 → #522 → #523 stack | Finish/rebase the existing stack and support package releases; do not duplicate it. | +| Binding generation | The package build pins UniFFI 0.31.2 and patches UBRN's wasm-bindgen processing/generated TypeScript | Track UBRN #409, then update and validate WalletKit's generator/toolchain together. This is a build compatibility workaround, not new cryptography. | +| Credential listing/deletion | Our `walletkit-patches/` patch adds worker messages and TypeScript methods around existing Rust APIs | WalletKit: add the missing public worker APIs above #523. No new Rust implementation is needed just to expose these methods. | +| Credential subject binding on import | Our worker patch checks the imported credential's subject against this authenticator and its blinding factor | WalletKit: preserve this invariant in the supported import API. | +| Selfie score disclosure | Our worker patch fetches schema 11 and attaches its first claim to proof JSON | WalletKit/authenticator: expose deliberate claim access tied to the selected credential. Keep disclosure policy in the authenticator and provide accepted response integrity. Appended JSON is not authenticated by the ZK proof. | +| AMPC share creation/encryption | Native helper creates a synthetic vector, secret-shares it using `ampc-secret-sharing`, and seals shares to party keys | Flamingo/TEE: replace this job with attested enrollment output using existing Rust AMPC primitives. Quantization, share generation and party encryption are not browser/WASM requirements. Preserve the exact same shares in enrollment and PCP custody data. | +| Enrollment authentication | Native helper calls Oxide's `ZkpAuthentication::create_header`; enrollment identity state lives on the local server | Oxide/WalletKit: settle the intended browser auth contract before porting. Reuse the v4 ownership-proof path where required; do not assume the current demo's legacy identity/header flow is the target. | +| Issued credential verification | Native helper validates schema, subject, issuer key and signature with protocol primitives | WalletKit: expose/reuse verified credential import or verification through the worker. Preserve trusted issuer-key selection and all binding checks. | +| Enrollment submission/polling | Next.js routes and a staging-only integrity exception; associated-data hash is currently synthetic | Oxide + face signup service: implement the real evidence/binding contract. This is not solved by compiling the helper to WASM. Browser networking/CORS or a deliberate relay also needs integration. | + +Sources: [helper](../src/server/face-enrollment-helper/src/main.rs), +[helper pins](../src/server/face-enrollment-helper/Cargo.toml), +[server adapter](../src/lib/selfie-issuer-server.ts), +[worker patch](../walletkit-patches/walletkit-web@0.22.1.patch). + +Passkeys, PRF/HKDF derivation, bridge AES-GCM and request UI use browser APIs and +TypeScript. They are not missing WASM ports. Encrypted browser credential storage +already works through WalletKit; it is not a Face PCP implementation. + +## Needed next, but not integrated into this authenticator + +| Capability | Existing work | Remaining work / owner | +| ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Verify enclave attestation and key; encrypt/decrypt channel messages | Pontifex #47 is **merged** and enables browser clocks/randomness for attestation/channel APIs | Reuse a compatible revision/release. Validate it with the current Flamingo dependency graph; do not open another portability PR without a demonstrated gap. | +| Send encrypted matches from a browser and verify returned statements/input bindings | Flamingo #129 implemented browser WebSockets; **closed, unmerged**. #116 covered the older HTTP transport | Flamingo: adapt #129 to current main and the agreed browser authorization mechanism; run browser runtime tests. Native arbitrary upgrade headers cannot be copied to browser WebSockets. | +| Expose Flamingo to `walletkit-web` | WalletKit #554 enabled UniFFI/WASM but explicitly left the handwritten TypeScript worker API for follow-up; **closed, unmerged** | WalletKit: restore current-client WASM integration and add typed worker methods, lifecycle/cancellation handling and browser tests. | +| TEE Selfie Check enrollment | Current Flamingo match API has DeepFace and GrayBadge; neither is a raw embedding/AMPC enrollment API | Flamingo: add accepted embedding generation, quantization, AMPC sharing, party encryption and attested output bound to enrollment/custody. Face signup service: verify that evidence before acceptance. Model execution support may require biometric-engines changes. | +| Returning Selfie Check against enrolled reference | Current GrayBadge compares live and challenge images, not an enrolled Face PCP reference | Flamingo/protocol: define and implement the requested reference comparison and result binding. Do not rename GrayBadge and assume semantic equivalence. | +| Face PCP construction/encryption/readback | Oxide has native implementations; no current browser PCP API identified | Oxide: isolate portable data/crypto/archive operations from Face Engine/OpenCV and native host services. WalletKit: expose only the agreed reusable surface; avoid copying the PCP format into a second implementation. | +| PCP storage, backup and recovery | Oxide #1199 is merged for identity-scoped storage/backup. WalletKit #512 is open for credential-associated-data persistence/recovery | Reuse ownership and data-binding rules. Decide full-PCP storage vs credential-associated-data integration before adding a new vault. Browser persistence alone is not backup/recovery. | +| Browser capture guidance | Soam's experiments contain RGBNet via ONNX Runtime Web and capture helpers | Integrate the model harness in this authenticator. Model/runtime changes belong in biometric-engines or the runtime's repo if needed; this is not a WalletKit binding gap. | + +Soam's native evaluator and encrypted face vault are reference implementations, +not dependencies currently integrated in this authenticator. Running a model via +ONNX Runtime Web is separate from exporting the complete native Face Engine to WASM. + +## What the closed PRs covered + +| PR | Coverage | Why it does not finish this work | +| ------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| [Pontifex #47](https://github.com/worldcoin/pontifex/pull/47), merged | Browser-compatible Nitro attestation verification and channel dependencies | A lower-level building block; no Flamingo transport or enrollment API. | +| [Flamingo #116](https://github.com/worldcoin/flamingo/pull/116), closed | Attested client over browser Fetch, response limits, browser tests | Older HTTP contract; main now uses WebSockets. | +| [Flamingo #129](https://github.com/worldcoin/flamingo/pull/129), closed | Browser WebSocket assignment and sealed match exchange | Closure cites different browser authorization requirements; PR reported compile checks but no local browser runtime tests. | +| [WalletKit #548](https://github.com/worldcoin/walletkit/pull/548), closed | Standalone wasm-bindgen client/worker for three-way matching | Superseded integration approach; not enrollment, shares, PCPs or the current web-worker facade. | +| [WalletKit #554](https://github.com/worldcoin/walletkit/pull/554), closed | Existing matching API through UniFFI/WASM | Handwritten `walletkit-web` client exposure was explicitly deferred; pins predate the current transport. | +| [WalletKit #567](https://github.com/worldcoin/walletkit/pull/567), closed | Portable request types and input validation | No networking, attestation execution, matching or enrollment. | +| [Oxide #303](https://github.com/worldcoin/oxide/pull/303), closed | Historical broad WASM compilation attempt | Not a merged/current browser enrollment and PCP SDK. | +| [WalletKit #487](https://github.com/worldcoin/walletkit/pull/487), closed | Proof response claim disclosure from the same selected credentials | Not a WASM portability fix or integrity solution; broad disclosure is not automatically the desired policy. | + +The Flamingo closures cite browser authorization or no expected browser use, not +proof that encrypted browser matching is technically impossible. Prior code is +reusable, but its API/dependencies must be updated and revalidated. + +## Definite plan and upstream PR sequence + +### Decision: generate enrollment shares in the TEE + +This project's plan is TEE-side share generation. No earlier explicit decision +on that placement was found in the reviewed discussions; the following sources +support the reasoning, rather than establish cross-team approval: + +- [Web enrollment design discussion](https://tfh.enterprise.slack.com/archives/C0ARSRLVCV7/p1790628584513719): + TEE model execution, issuer acceptance of TEE integrity, and enrollment support + were proposed; exact share-generation placement/binding was not specified. +- [Ertugrul's scoring proposal](https://tfh.enterprise.slack.com/archives/C0ARSRLVCV7/p1790681976318759): + keep one AMPC set and distinguish web/mobile capture origins in signup-service + metadata and scoring. Vincent and Pranav supported that direction in the thread. + This does not decide where shares are generated. +- [Deep Identifier precedent](https://tfh.enterprise.slack.com/archives/C0AP0GJPYUF/p1789758405412779): + generate shares and assemble/sign/encrypt the PCP inside the TEE, outside the + biometric sandbox. This is a different product/PCP pipeline, not an approved + web Selfie Check implementation or a drop-in dependency. + +For the first TEE-backed enrollment, the TEE will generate the shares from the +accepted embedding, encrypt them to authenticated AMPC party keys and attest the +enrollment output. The browser will retain user-encrypted custody data and can +relay the per-party ciphertexts. The submission route and exact PCP assembly +location remain integration details; neither changes where shares are generated. + +The security invariant is that the shares accepted for enrollment represent the +embedding produced by the approved pipeline on the bound capture. A signed hash +of an embedding plus unrelated browser-generated shares does not establish that +relationship. Browser generation would need an existing accepted correctness +proof, or a trusted component to verify/recompute the relationship before signing. +Do not add a new proof system just to preserve browser share generation in v1. + +| Criterion | TEE generates shares | Browser generates shares | +| --------------------- | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| Output binding | Pipeline can directly bind accepted embedding, generated shares and enrollment context | Requires verification that the submitted shares encode the accepted embedding | +| Reuse | Reuse Rust AMPC primitives; integrate with enclave output/signing | Reuse AMPC primitives after WASM compatibility work, plus binding mechanism | +| Delivery dependencies | Enclave deployment, issuer verification, agreed custody output | Browser SDK work, issuer verification and a secure share-to-embedding binding path | +| Privacy | TEE already processes the image/embedding; keep host and issuer from plaintext via encryption | Browser needs the embedding; that may already be needed for custody, so assess actual data flow | +| Performance | No extra image round trip inherently required; benchmark share generation | Some work moves to browser, but trusted verification may add work/round trips | + +There is no measured schedule or performance comparison yet. The decision removes +browser share-generation work but adds a required enclave/service integration; +it is not a proven faster delivery estimate. Confirm with Flamingo/PoP owners +whether reusable enrollment output code already exists, +who owns the signer/key policy, and how account, capture, share/PCP commitments, +challenge/expiry and replay handling fit the issuer contract. Authenticate AMPC +recipient keys and the user's custody key rather than trusting arbitrary supplied +keys. Share generation in a TEE does not itself prove live camera provenance. + +### Effect on the browser/WASM checklist + +These are required work items, not claims that implementations have landed. + +| Status in the plan | Capability | Implementation boundary | +| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| Removed from browser/WASM scope | Embedding quantization, AMPC share generation and encryption to party keys | TEE enrollment operation, reusing native Rust primitives | +| Required service work | Bind accepted capture/model output, exact shares, custody commitments, account and challenge to verified evidence | Flamingo/TEE produces evidence; signup-service verifies it and enforces expiry/replay rules | +| Still required in browser | Encrypted enclave channel and trusted key/evidence verification path | Reuse Pontifex portability; complete Flamingo transport/auth and WalletKit worker integration as appropriate to the agreed channel design | +| Still required in browser | Enrollment authentication, credential verification/import and selected-claim access | Supported WalletKit/Oxide APIs replace remaining helper jobs and local patches | +| Still required for browser custody | Canonical PCP parsing/serialization where needed, custody encryption/readback, storage and recovery | Narrow Oxide portable surface plus WalletKit/browser storage adapters; consume TEE-produced data without generating new shares | +| Browser work, not an AMPC WASM port | Camera capture, framing guidance and request UI | Browser APIs and the model harness | + +Do not port the native helper wholesale or open an AMPC WASM PR for this v1 flow. +Retire the helper only after its share-generation job has moved to the TEE and +its authentication and credential-verification jobs have supported replacements. +The closed matching PRs remain useful transport/client work; they do not implement +this enrollment operation. Returning-user matching remains a separate requirement. + +### Implementation order + +1. **WalletKit: complete web credential worker APIs and verified import.** Build + above #523; replace the local listing/deletion and subject-binding patches, + expose credential verification, and provide deliberate claim access. Reuse + existing core/protocol implementations. Keep claim integrity and disclosure + policy explicit; do not silently make every proof disclose every claim. +2. **Flamingo: browser WebSocket client with agreed authorization.** Start from + #129, use compatible Pontifex browser support, and test attestation/key + binding, encrypted transport, result binding, timeouts and cancellation in a + real browser with fixtures. +3. **WalletKit: Flamingo browser worker integration.** Follow the current UniFFI + package architecture rather than #548's extra standalone wrapper. Depend on + PR 2 and expose only operations supported by the service. +4. **Flamingo + signup-service: attested Selfie Check enrollment contract.** + Implement TEE-side embedding quantization, share generation and party + encryption. Specify and bind exact shares/PCP/account/challenge, authenticate + recipient and custody keys, and define submission, expiry and replay handling. + Add the operation and issuer verification in their owning repositories. +5. **Oxide: portable PCP custody and enrollment data primitives.** Extract or + feature-isolate only the data/crypto operations needed by the browser under + PR 4; retain the canonical package format and identity checks. Consume the + TEE's exact embedding/share custody data. Test native/WASM equivalence with + synthetic fixtures. Exclude browser quantization, share generation, party + encryption and native model inference from this PR's scope. +6. **WalletKit: expose portable enrollment/PCP APIs and persistence.** Depend on + PR 5, evaluate #512 for associated data, and supply browser host adapters. + Coordinate credential import with PCP save/recovery. Remove the native helper + only when shares, enrollment authentication and credential verification all + have supported replacements. + +PRs 2–3 are needed if the browser owns the existing Flamingo attested session. +If a trusted service certifies the enclave key instead, design that certificate +and channel integration explicitly; the certificate service is additional work, +not something established by the closed PRs. + +New upstream PRs outside these three repos should be limited to demonstrated +dependencies: `signup-service` for issuer-side evidence verification, +`biometric-engines` for missing model operations, and UBRN for generator +compatibility. An `ampc-common` WASM port is not a dependency of this plan; +any required AMPC change must be justified by the TEE integration. Pontifex already +has the relevant merged portability work. + +## Related open/merged work to reuse + +- WalletKit [#480](https://github.com/worldcoin/walletkit/pull/480), + [#522](https://github.com/worldcoin/walletkit/pull/522), + [#523](https://github.com/worldcoin/walletkit/pull/523): open web package stack. +- WalletKit [#512](https://github.com/worldcoin/walletkit/pull/512): open + credential-associated-data persistence/recovery work. +- WalletKit [#492](https://github.com/worldcoin/walletkit/pull/492): open claim + accessor cleanup; removes `claims_hex`, which our current patch calls. +- Oxide [#1230](https://github.com/worldcoin/oxide/pull/1230): merged v4-proof face + enrollment; our helper's pin includes it but the demo does not call that API. +- Oxide [#1199](https://github.com/worldcoin/oxide/pull/1199): merged identity-scoped + PCP custody; our helper does not create or store a PCP. +- UBRN [#409](https://github.com/jhugman/uniffi-bindgen-react-native/pull/409): open + UniFFI 0.32 update; dependency upgrades need generator/build validation. + +This inventory is a source/PR review. No new browser, Rust or live-enclave tests +were run for it, and no new upstream PR was opened. From 8028af985a75c1756d7f90e30485b6fdf05ae4d8 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Thu, 8 Oct 2026 13:34:17 -0700 Subject: [PATCH 04/38] docs: link repository responsibilities and trim setup --- README.md | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index bf6253d..5e91a98 100644 --- a/README.md +++ b/README.md @@ -37,22 +37,20 @@ The developer enrollment flow can issue a staging credential using synthetic fac We still need frame extraction, local capture guidance, a verified TEE connection, real enrollment and request-bound face matching. -## Where the work lives +## Responsibility Table -| Component | Responsibility | -| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| `web-authenticator` | Consent, passkeys, camera, capture guidance, request handling and browser storage. | -| `walletkit` | Protocol registration, credential subjects, credential storage and proof generation. Browser TEE APIs still need integration. | -| `di-migration-tee` | Starting point for the biometrics TEE: admission API, host-to-enclave communication and attested keys. Selfie operations need to be added. | -| `signup-service` | Verify enrollment authorization and evidence, submit shares for uniqueness processing and request credential signing. | -| `signup-service-credential-signer` | Sign the credential with the ordered claims supplied by the issuer. | +| Component | Responsibility | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| [web-authenticator](https://github.com/worldcoin/web-authenticator) | Consent, passkeys, camera, capture guidance, request handling and browser storage. | +| [walletkit](https://github.com/worldcoin/walletkit) | Protocol registration, credential subjects, credential storage and proof generation. Browser TEE APIs still need integration. | +| [di-migration-tee](https://github.com/worldcoin/di-migration-tee) | Starting point for the biometrics TEE: admission API, host-to-enclave communication and attested keys. Selfie operations need to be added. | +| [signup-service](https://github.com/worldcoin/signup-service) | Verify enrollment authorization and evidence, submit shares for uniqueness processing and request credential signing. | +| [signup-service-credential-signer](https://github.com/worldcoin/signup-service-credential-signer) | Sign the credential with the ordered claims supplied by the issuer. | We refer to the planned biometric service as `biometrics-tee`. The starting implementation is in `di-migration-tee`; its migration API is not a selfie enrollment API. ## Authenticator setup -The current flow creates a passkey before enrollment. We derive two independent secrets from that passkey: - ```text seed = HKDF-Expand( PRF("web.world.org/authenticator"), @@ -63,12 +61,6 @@ databaseKey = HKDF-Expand( "web.world.org/v1/storage-secret", 32) ``` -The seed initializes the World ID authenticator. The database key unlocks the encrypted credential vault in OPFS, the browser's origin-private filesystem. - -We register the authenticator and wait for finalization before using it. On return, we unlock the same passkey, derive the same secrets and reopen the vault. Secrets stay in memory and must not be logged or persisted in plaintext. - -The production passkey RP ID and hosting origin must be agreed before rollout. The domain names in the PRF labels do not configure either one. - ## First enrollment — planned 1. Open an IDKit request or start enrollment from the authenticator. Show consent. From 5baf5d083a6bcdd8a5ffaf7436d3362c8efcca78 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Thu, 8 Oct 2026 13:35:29 -0700 Subject: [PATCH 05/38] docs: remove README boilerplate and repetition --- README.md | 36 ------------------------------------ 1 file changed, 36 deletions(-) diff --git a/README.md b/README.md index 5e91a98..8ae9178 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,9 @@ # Web Authenticator -A browser authenticator for World ID. We will let users complete Selfie Check and respond to IDKit requests without downloading an app. - This repo contains the browser experience and the current staging demo. Real selfie enrollment through a TEE is still being built. ## Run locally -Use Bun to install dependencies and start the demo: - ```sh bun install --frozen-lockfile bun run dev @@ -29,14 +25,8 @@ VITE_TEE_BASE_URL=http://localhost:8000 This only selects a target. It does not start a TEE, verify an enclave or enable uploads. The current `connect()` implementation reports that connection setup is unavailable. -## What works today - -The demo has passkey-derived authenticator setup, WalletKit integration, an encrypted browser credential vault and a continuous camera preview. - The developer enrollment flow can issue a staging credential using synthetic face data. It does not use the camera image, create a real face PCP or verify TEE enrollment evidence. -We still need frame extraction, local capture guidance, a verified TEE connection, real enrollment and request-bound face matching. - ## Responsibility Table | Component | Responsibility | @@ -47,8 +37,6 @@ We still need frame extraction, local capture guidance, a verified TEE connectio | [signup-service](https://github.com/worldcoin/signup-service) | Verify enrollment authorization and evidence, submit shares for uniqueness processing and request credential signing. | | [signup-service-credential-signer](https://github.com/worldcoin/signup-service-credential-signer) | Sign the credential with the ordered claims supplied by the issuer. | -We refer to the planned biometric service as `biometrics-tee`. The starting implementation is in `di-migration-tee`; its migration API is not a selfie enrollment API. - ## Authenticator setup ```text @@ -87,8 +75,6 @@ We will validate the incoming request, unlock the authenticator and check the st When fresh user presence is required, we will capture a new selfie and ask the TEE to compare it with the credential-bound PCP reference. The match evidence must be bound to the current request. WalletKit and the RP verifier must carry and verify that binding before the response is accepted. -Having a stored credential alone does not prove fresh presence. If the credential or PCP is missing, we need reissuance or transfer from another authenticator. - ## Browser and TEE checks | Browser: capture feedback | TEE: authoritative evaluation | @@ -103,8 +89,6 @@ An encrypted connection does not prove that an image came from a live camera. Li ## PCP storage and reissuance -The browser builds the PCP. The TEE supplies the verified biometric outputs needed to build it. - We will store the PCP encrypted in browser storage. Its binding to the signed credential must survive storage and later verification. The browser PCP API and storage format are still to be implemented. A passkey can recover a storage key; it cannot recreate deleted vault files. If browser storage is lost, the intended recovery paths are: @@ -116,16 +100,12 @@ Reissuance requires issuer support and face continuity checks. Creating a new id ## Issuance claims — proposed -The existing signed claims occupy indices 0–2: - | Index | Claim | | ----- | -------------- | | 0 | Z-score. | | 1 | Match count. | | 2 | Database size. | -We will extend the credential with verified issuance information: - | Proposed index | Claim | Meaning | | -------------- | ------------------------ | ------------------------------------------------------------------------------------------------ | | 3 | `issuance_assurance` | `0`: unknown; `1`: app; `2`: TEE; `3`: app and TEE. | @@ -139,23 +119,7 @@ The public ingress must admit and rate-limit enrollment attempts before allocati Promon Shield for Web is a proposed runtime-protection layer. Its session validation would need enforcement at ingress. It does not replace enclave attestation, biometric checks or issuer verification. -Logs should record operation status, timings and bounded failure codes. Do not log images, embeddings, PCP contents, secrets or authorization tokens. - -## Next implementation steps - -1. **Browser frame sampling.** Keep the native preview smooth; process sampled frames in a worker with bounded memory and no backlog of stale guidance frames. -2. **TEE enrollment session.** Add subject/challenge binding, expiry, attested channel setup and a bounded encrypted-capture receiver. -3. **Encrypted frame-set experiment.** Send selected captures and verify an authenticated enclave acknowledgement. -4. **Encrypted WebRTC experiment.** Add signaling and media reception, with frame encryption that remains intact until enclave decryption. -5. **Real enrollment.** Run the full biometric checks, return enrollment outputs, build the PCP on the client and wire issuer verification and polling. -6. **Returning presence and recovery.** Add request-bound matching, credential reissuance and cross-authenticator transfer. - -Compare the two transport experiments using time to first accepted capture, bytes uploaded, guidance latency, UI responsiveness and enclave processing cost. - ## References - [Selfie Check via Web Authenticator — source spec](https://app.notion.com/p/worldcoin/Selfie-Check-via-Web-Authenticator-cfd0a1d9d6de45d49241382a36645c6b) - [Soam's handover](https://github.com/worldcoin/web-authenticator-experiments/blob/0bd61a20b23ff0a778553ac1788bd3aa3c7b9404/docs/web-authenticator-handover.md) -- [WalletKit](https://github.com/worldcoin/walletkit) -- [TEE starting implementation](https://github.com/worldcoin/di-migration-tee) -- [Face signup service](https://github.com/worldcoin/signup-service) From e7f5eb5e995870df1039f5d1e211423b6cc51167 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Fri, 9 Oct 2026 12:30:08 -0700 Subject: [PATCH 06/38] Replace embedded RP simulation with staging authenticator flow --- .gitignore | 4 + README.md | 177 +- apps/authenticator/README.md | 15 +- .../public/assets/figma/zoom-app-icon.png | Bin 19677 -> 0 bytes apps/authenticator/src/App.tsx | 500 +- .../src/adapters/browser-admission.ts | 141 - .../src/adapters/browser-capture.ts | 170 - .../src/adapters/http-session.ts | 188 - .../src/adapters/staging-compatibility.ts | 40 - apps/authenticator/src/assets/provenance.ts | 2 - .../src/components/CameraPreview.tsx | 49 + .../src/components/FlowScreen.tsx | 438 - .../src/components/WalkthroughPanel.tsx | 95 - apps/authenticator/src/flow/controller.ts | 571 - .../authenticator/src/flow/render-registry.ts | 75 - apps/authenticator/src/lib/async.ts | 21 + apps/authenticator/src/lib/requests/bridge.ts | 84 + .../src/lib/requests/connector.ts | 57 + .../src/lib/requests/incoming-request.ts | 77 + .../src/lib/requests/proof-request.ts | 201 + apps/authenticator/src/lib/requests/prove.ts | 31 + apps/authenticator/src/lib/selfie-issuance.ts | 82 + apps/authenticator/src/lib/walletkit.ts | 169 + .../server/browser-session-service.server.ts | 397 - .../authenticator/src/server/crypto.server.ts | 89 - .../src/server/demo-authenticator.server.ts | 258 - apps/authenticator/src/server/http.server.ts | 224 +- apps/authenticator/src/server/main.ts | 11 +- .../src/server/runtime.server.ts | 234 - .../src/server/selfie-credential.server.ts | 57 + .../src/server/selfie-issuer.server.ts | 298 + .../src/server/staging-rp.server.ts | 32 + apps/authenticator/src/server/start.server.ts | 13 - apps/authenticator/src/styles/app.css | 182 +- .../src/walkthrough/live-passkey.ts | 139 - .../src/walkthrough/production-copy.ts | 217 - .../src/walkthrough/walkthrough-adapters.ts | 245 - apps/authenticator/src/wallet/persistence.ts | 25 + apps/authenticator/src/wallet/registration.ts | 43 + apps/authenticator/src/wallet/session.ts | 30 +- apps/authenticator/static-demo/index.html | 14 - apps/authenticator/static-demo/main.tsx | 22 - apps/authenticator/test/app.test.tsx | 90 + .../test/browser-admission-adapter.test.ts | 69 - .../test/capture-adapter.test.ts | 115 - apps/authenticator/test/controller.test.ts | 577 - apps/authenticator/test/http-client.test.ts | 204 - apps/authenticator/test/http-server.test.ts | 281 +- apps/authenticator/test/privacy.test.ts | 99 - .../test/production-presentation.test.tsx | 194 - apps/authenticator/test/registration.test.ts | 41 + .../test/render-registry.test.ts | 69 - apps/authenticator/test/requests.test.ts | 84 + apps/authenticator/test/screens.test.tsx | 249 - .../authenticator/test/selfie-routing.test.ts | 121 + .../test/server-composition.test.ts | 252 - .../test/staging-compatibility.test.ts | 72 - apps/authenticator/test/static-demo.test.ts | 58 - apps/authenticator/test/walkthrough.test.ts | 219 - apps/authenticator/test/walletkit.test.ts | 105 + bun.lock | 68 +- config/README.md | 20 +- config/authenticator-app-v0.test.ts | 116 - config/authenticator-app-v0.ts | 134 +- docs/review/README.md | 5 + docs/review/request-desktop.png | Bin 0 -> 53695 bytes docs/review/request-mobile.png | Bin 0 -> 41265 bytes eslint.config.mjs | 2 +- package.json | 10 +- .../biometric-verification-port/README.md | 5 - .../biometric-verification-port/package.json | 13 - .../biometric-verification-port/src/index.ts | 39 - packages/client-quality/README.md | 24 - packages/client-quality/package.json | 12 - packages/client-quality/src/index.ts | 364 - .../test/client-quality.test.ts | 343 - packages/contracts/README.md | 60 - .../contracts/src/authenticator-ui-copy-v1.ts | 170 - .../contracts/src/authenticator-ui-flow-v1.ts | 1444 --- .../src/biometric-verification-port-v0.ts | 298 - .../contracts/src/client-quality-policy-v0.ts | 83 - .../contracts/src/enrollment-session-v1.ts | 71 - .../contracts/src/enrollment-session-v2.ts | 84 - packages/contracts/src/frame-bundle-v0.ts | 147 - packages/contracts/src/index.ts | 12 - .../src/injected-authenticator-port-v0.ts | 256 - .../src/simulation-capture-policy-v0.ts | 42 - .../src/simulator-browser-session-port-v0.ts | 748 -- .../contracts/src/staging-issuance-port-v0.ts | 314 - .../src/world-id-registration-adapter-v1.ts | 63 - packages/contracts/test/contracts.test.ts | 768 -- packages/contracts/test/ui-contracts.test.ts | 996 -- packages/frame-capture/README.md | 34 - packages/frame-capture/src/artifact.ts | 111 - .../frame-capture/src/browser-platform.ts | 199 - packages/frame-capture/src/index.ts | 5 - packages/frame-capture/src/runtime.ts | 476 - packages/frame-capture/src/state.ts | 46 - packages/frame-capture/src/types.ts | 142 - packages/frame-capture/test/artifact.test.ts | 75 - .../test/browser-platform.test.ts | 23 - packages/frame-capture/test/helpers.ts | 224 - packages/frame-capture/test/privacy.test.ts | 112 - packages/frame-capture/test/runtime.test.ts | 338 - packages/frame-capture/test/state.test.ts | 53 - packages/staging-issuance-port/README.md | 5 - packages/staging-issuance-port/package.json | 13 - packages/staging-issuance-port/src/index.ts | 33 - packages/world-id-authenticator/README.md | 3 - playwright.integration.config.ts | 14 +- services/session-gateway/README.md | 14 - services/session-gateway/package.json | 13 - services/session-gateway/src/crypto.ts | 113 - services/session-gateway/src/errors.ts | 32 - services/session-gateway/src/gateway.ts | 1037 -- services/session-gateway/src/index.ts | 5 - services/session-gateway/src/repository.ts | 34 - services/session-gateway/src/types.ts | 171 - services/session-gateway/test/helpers.ts | 313 - services/session-gateway/test/privacy.test.ts | 31 - .../test/production-isolation.test.ts | 45 - .../test/real-simulators.integration.test.ts | 302 - .../test/session-gateway.test.ts | 508 - .../simulated-biometric-verifier/README.md | 7 - .../simulated-biometric-verifier/package.json | 13 - .../simulated-biometric-verifier/src/index.ts | 263 - .../test/simulated-biometric-verifier.test.ts | 426 - services/simulated-staging-issuer/README.md | 5 - .../simulated-staging-issuer/package.json | 13 - .../simulated-staging-issuer/src/index.ts | 311 - .../test/simulated-staging-issuer.test.ts | 504 - .../face-enrollment-helper/Cargo.lock | 9727 +++++++++++++++++ .../face-enrollment-helper/Cargo.toml | 21 + .../face-enrollment-helper/README.md | 16 + .../face-enrollment-helper/build-config.toml | 7 + .../face-enrollment-helper/src/main.rs | 146 + tests/integration/README.md | 18 - .../browser/authenticator.browser.spec.ts | 471 +- .../contract/admission-and-controller.test.ts | 469 - .../contract/browser-response-binding.test.ts | 85 - .../contract/device-evidence-package.test.ts | 49 - .../contract/gateway-recovery.test.ts | 90 - .../contract/lifecycle-and-quality.test.ts | 108 - .../contract/nested-receipt.test.ts | 92 - .../contract/server-session-evidence.test.ts | 292 - .../contract/state-and-ui-matrix.test.ts | 107 - tests/integration/device-lab/RUNBOOK.md | 68 - tests/integration/device-lab/UNEXECUTED.md | 25 - .../device-lab/observation.schema.json | 113 - tests/integration/fixtures/README.md | 9 - tests/integration/fixtures/request.ts | 36 + .../privacy/privacy-boundaries.test.ts | 140 - tests/integration/reports/evidence-report.md | 101 - ...p-chromium-synthetic-admission-blocked.png | Bin 18044 -> 0 bytes ...sktop-chromium-synthetic-passkey-intro.png | Bin 19978 -> 0 bytes ...omium-synthetic-request-review-393x852.png | Bin 28067 -> 0 bytes .../desktop-chromium-synthetic-returned.png | Bin 14949 -> 0 bytes ...top-webkit-synthetic-admission-blocked.png | Bin 25933 -> 0 bytes ...desktop-webkit-synthetic-passkey-intro.png | Bin 28549 -> 0 bytes ...ebkit-synthetic-request-review-393x852.png | Bin 37176 -> 0 bytes .../desktop-webkit-synthetic-returned.png | Bin 22265 -> 0 bytes tests/integration/testkit/runtime.ts | 159 - tests/integration/testkit/ui.ts | 39 - tsconfig.client.json | 21 +- tsconfig.json | 17 +- tsconfig.server.json | 18 +- vite.config.ts | 3 - vite.static-demo.config.ts | 87 - 168 files changed, 12237 insertions(+), 21690 deletions(-) delete mode 100644 apps/authenticator/public/assets/figma/zoom-app-icon.png delete mode 100644 apps/authenticator/src/adapters/browser-admission.ts delete mode 100644 apps/authenticator/src/adapters/browser-capture.ts delete mode 100644 apps/authenticator/src/adapters/http-session.ts delete mode 100644 apps/authenticator/src/adapters/staging-compatibility.ts create mode 100644 apps/authenticator/src/components/CameraPreview.tsx delete mode 100644 apps/authenticator/src/components/FlowScreen.tsx delete mode 100644 apps/authenticator/src/components/WalkthroughPanel.tsx delete mode 100644 apps/authenticator/src/flow/controller.ts delete mode 100644 apps/authenticator/src/flow/render-registry.ts create mode 100644 apps/authenticator/src/lib/async.ts create mode 100644 apps/authenticator/src/lib/requests/bridge.ts create mode 100644 apps/authenticator/src/lib/requests/connector.ts create mode 100644 apps/authenticator/src/lib/requests/incoming-request.ts create mode 100644 apps/authenticator/src/lib/requests/proof-request.ts create mode 100644 apps/authenticator/src/lib/requests/prove.ts create mode 100644 apps/authenticator/src/lib/selfie-issuance.ts create mode 100644 apps/authenticator/src/lib/walletkit.ts delete mode 100644 apps/authenticator/src/server/browser-session-service.server.ts delete mode 100644 apps/authenticator/src/server/crypto.server.ts delete mode 100644 apps/authenticator/src/server/demo-authenticator.server.ts delete mode 100644 apps/authenticator/src/server/runtime.server.ts create mode 100644 apps/authenticator/src/server/selfie-credential.server.ts create mode 100644 apps/authenticator/src/server/selfie-issuer.server.ts create mode 100644 apps/authenticator/src/server/staging-rp.server.ts delete mode 100644 apps/authenticator/src/server/start.server.ts delete mode 100644 apps/authenticator/src/walkthrough/live-passkey.ts delete mode 100644 apps/authenticator/src/walkthrough/production-copy.ts delete mode 100644 apps/authenticator/src/walkthrough/walkthrough-adapters.ts create mode 100644 apps/authenticator/src/wallet/persistence.ts create mode 100644 apps/authenticator/src/wallet/registration.ts delete mode 100644 apps/authenticator/static-demo/index.html delete mode 100644 apps/authenticator/static-demo/main.tsx create mode 100644 apps/authenticator/test/app.test.tsx delete mode 100644 apps/authenticator/test/browser-admission-adapter.test.ts delete mode 100644 apps/authenticator/test/capture-adapter.test.ts delete mode 100644 apps/authenticator/test/controller.test.ts delete mode 100644 apps/authenticator/test/http-client.test.ts delete mode 100644 apps/authenticator/test/privacy.test.ts delete mode 100644 apps/authenticator/test/production-presentation.test.tsx create mode 100644 apps/authenticator/test/registration.test.ts delete mode 100644 apps/authenticator/test/render-registry.test.ts create mode 100644 apps/authenticator/test/requests.test.ts delete mode 100644 apps/authenticator/test/screens.test.tsx create mode 100644 apps/authenticator/test/selfie-routing.test.ts delete mode 100644 apps/authenticator/test/server-composition.test.ts delete mode 100644 apps/authenticator/test/staging-compatibility.test.ts delete mode 100644 apps/authenticator/test/static-demo.test.ts delete mode 100644 apps/authenticator/test/walkthrough.test.ts create mode 100644 apps/authenticator/test/walletkit.test.ts delete mode 100644 config/authenticator-app-v0.test.ts create mode 100644 docs/review/README.md create mode 100644 docs/review/request-desktop.png create mode 100644 docs/review/request-mobile.png delete mode 100644 packages/biometric-verification-port/README.md delete mode 100644 packages/biometric-verification-port/package.json delete mode 100644 packages/biometric-verification-port/src/index.ts delete mode 100644 packages/client-quality/README.md delete mode 100644 packages/client-quality/package.json delete mode 100644 packages/client-quality/src/index.ts delete mode 100644 packages/client-quality/test/client-quality.test.ts delete mode 100644 packages/contracts/README.md delete mode 100644 packages/contracts/src/authenticator-ui-copy-v1.ts delete mode 100644 packages/contracts/src/authenticator-ui-flow-v1.ts delete mode 100644 packages/contracts/src/biometric-verification-port-v0.ts delete mode 100644 packages/contracts/src/client-quality-policy-v0.ts delete mode 100644 packages/contracts/src/enrollment-session-v1.ts delete mode 100644 packages/contracts/src/enrollment-session-v2.ts delete mode 100644 packages/contracts/src/frame-bundle-v0.ts delete mode 100644 packages/contracts/src/injected-authenticator-port-v0.ts delete mode 100644 packages/contracts/src/simulation-capture-policy-v0.ts delete mode 100644 packages/contracts/src/simulator-browser-session-port-v0.ts delete mode 100644 packages/contracts/src/staging-issuance-port-v0.ts delete mode 100644 packages/contracts/src/world-id-registration-adapter-v1.ts delete mode 100644 packages/contracts/test/contracts.test.ts delete mode 100644 packages/contracts/test/ui-contracts.test.ts delete mode 100644 packages/frame-capture/README.md delete mode 100644 packages/frame-capture/src/artifact.ts delete mode 100644 packages/frame-capture/src/browser-platform.ts delete mode 100644 packages/frame-capture/src/index.ts delete mode 100644 packages/frame-capture/src/runtime.ts delete mode 100644 packages/frame-capture/src/state.ts delete mode 100644 packages/frame-capture/src/types.ts delete mode 100644 packages/frame-capture/test/artifact.test.ts delete mode 100644 packages/frame-capture/test/browser-platform.test.ts delete mode 100644 packages/frame-capture/test/helpers.ts delete mode 100644 packages/frame-capture/test/privacy.test.ts delete mode 100644 packages/frame-capture/test/runtime.test.ts delete mode 100644 packages/frame-capture/test/state.test.ts delete mode 100644 packages/staging-issuance-port/README.md delete mode 100644 packages/staging-issuance-port/package.json delete mode 100644 packages/staging-issuance-port/src/index.ts delete mode 100644 packages/world-id-authenticator/README.md delete mode 100644 services/session-gateway/README.md delete mode 100644 services/session-gateway/package.json delete mode 100644 services/session-gateway/src/crypto.ts delete mode 100644 services/session-gateway/src/errors.ts delete mode 100644 services/session-gateway/src/gateway.ts delete mode 100644 services/session-gateway/src/index.ts delete mode 100644 services/session-gateway/src/repository.ts delete mode 100644 services/session-gateway/src/types.ts delete mode 100644 services/session-gateway/test/helpers.ts delete mode 100644 services/session-gateway/test/privacy.test.ts delete mode 100644 services/session-gateway/test/production-isolation.test.ts delete mode 100644 services/session-gateway/test/real-simulators.integration.test.ts delete mode 100644 services/session-gateway/test/session-gateway.test.ts delete mode 100644 services/simulated-biometric-verifier/README.md delete mode 100644 services/simulated-biometric-verifier/package.json delete mode 100644 services/simulated-biometric-verifier/src/index.ts delete mode 100644 services/simulated-biometric-verifier/test/simulated-biometric-verifier.test.ts delete mode 100644 services/simulated-staging-issuer/README.md delete mode 100644 services/simulated-staging-issuer/package.json delete mode 100644 services/simulated-staging-issuer/src/index.ts delete mode 100644 services/simulated-staging-issuer/test/simulated-staging-issuer.test.ts create mode 100644 services/staging-issuance/face-enrollment-helper/Cargo.lock create mode 100644 services/staging-issuance/face-enrollment-helper/Cargo.toml create mode 100644 services/staging-issuance/face-enrollment-helper/README.md create mode 100644 services/staging-issuance/face-enrollment-helper/build-config.toml create mode 100644 services/staging-issuance/face-enrollment-helper/src/main.rs delete mode 100644 tests/integration/README.md delete mode 100644 tests/integration/contract/admission-and-controller.test.ts delete mode 100644 tests/integration/contract/browser-response-binding.test.ts delete mode 100644 tests/integration/contract/device-evidence-package.test.ts delete mode 100644 tests/integration/contract/gateway-recovery.test.ts delete mode 100644 tests/integration/contract/lifecycle-and-quality.test.ts delete mode 100644 tests/integration/contract/nested-receipt.test.ts delete mode 100644 tests/integration/contract/server-session-evidence.test.ts delete mode 100644 tests/integration/contract/state-and-ui-matrix.test.ts delete mode 100644 tests/integration/device-lab/RUNBOOK.md delete mode 100644 tests/integration/device-lab/UNEXECUTED.md delete mode 100644 tests/integration/device-lab/observation.schema.json delete mode 100644 tests/integration/fixtures/README.md create mode 100644 tests/integration/fixtures/request.ts delete mode 100644 tests/integration/privacy/privacy-boundaries.test.ts delete mode 100644 tests/integration/reports/evidence-report.md delete mode 100644 tests/integration/reports/screenshots/desktop-chromium-synthetic-admission-blocked.png delete mode 100644 tests/integration/reports/screenshots/desktop-chromium-synthetic-passkey-intro.png delete mode 100644 tests/integration/reports/screenshots/desktop-chromium-synthetic-request-review-393x852.png delete mode 100644 tests/integration/reports/screenshots/desktop-chromium-synthetic-returned.png delete mode 100644 tests/integration/reports/screenshots/desktop-webkit-synthetic-admission-blocked.png delete mode 100644 tests/integration/reports/screenshots/desktop-webkit-synthetic-passkey-intro.png delete mode 100644 tests/integration/reports/screenshots/desktop-webkit-synthetic-request-review-393x852.png delete mode 100644 tests/integration/reports/screenshots/desktop-webkit-synthetic-returned.png delete mode 100644 tests/integration/testkit/runtime.ts delete mode 100644 tests/integration/testkit/ui.ts delete mode 100644 vite.static-demo.config.ts diff --git a/.gitignore b/.gitignore index 3ca8791..321dc03 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,7 @@ test-results/ coverage/ .vercel/ .wrangler/ + +services/staging-issuance/face-enrollment-helper/target/ +services/staging-issuance/face-enrollment-helper/cache/ +services/staging-issuance/face-enrollment-helper/assets/ diff --git a/README.md b/README.md index 68a0cc2..e362b84 100644 --- a/README.md +++ b/README.md @@ -1,85 +1,128 @@ # World ID Web Authenticator -Browser application migrated from the clean-start experiment. It uses the published -`@worldcoin/walletkit-web@0.27.1` package; no Rust checkout or WASM build is required. +Staging authenticator built on PR #9 with published `@worldcoin/walletkit-web@0.27.1`. +The relying-party demo belongs in its own website. This repository consumes its +requests; it does not host an RP demo, generate RP requests, or verify proofs for the RP. ## Run ```sh -nix shell nixpkgs#bun --command bun install --frozen-lockfile -nix shell nixpkgs#bun --command bun run build -nix shell nixpkgs#bun --command bun run start +bun install --frozen-lockfile +bun run build +bun run start +``` + +Open **http://localhost:4173**. Use localhost or HTTPS for passkeys. +`bun run dev` watches the browser build and Bun server. Use `PORT=4193 bun run dev` +when another checkout already occupies the default port. + +## Request and proof flow + +The external website sends its normal World ID connector link to this authenticator: + +```text +http://localhost:4173/?i=&k=&b=https%3A%2F%2Fstaging-bridge.worldcoin.org ``` -Open **http://localhost:4173**. Use localhost (not an IP address) or HTTPS for -WebAuthn. `bun run dev` watches both the browser build and Bun server. - -## What works - -- Migrated request, consent, passkey, camera guidance, retake and completion screens. -- A PRF-capable passkey creates/unlocks an encrypted WalletKit OPFS credential store. - HKDF derives distinct authenticator seed and database keys. Only the public - credential ID is saved in localStorage; PRF output and derived key buffers are - cleared after initialization. Reload and unlock uses the same passkey and store. -- WalletKit runs in its packaged worker. Vite emits its worker and WASM assets. -- Public MediaPipe model provides transient camera guidance. Camera pixels stay - in the browser; the migrated simulator receives metadata only. - -This is a **development preview**, not production enrollment. Biometric checks, -credential issuance and the partner return flow remain explicitly simulated. -Opening a local wallet does not register a World ID on chain. The simulator's -account is separate from the local vault; no simulated artifact is imported as a -real credential. The Zoom return screen sends no proof to Zoom. - -The private native biometric lab, model downloader, internal models/configs, -Orb Tools patches, staging integrity exception, and Deep-Live-Cam tooling were -not migrated. Real TEE enrollment and the agreed TFH detection/QA/glasses browser -pipeline are follow-up integrations. - -## Storage and recovery - -Web Locks serialize passkey/profile setup across tabs so concurrent creation cannot -overwrite another attempt’s credential ID. One WalletKit worker owns OPFS per origin. Close other tabs before unlocking. A -cancelled/unsupported passkey or failed wallet initialization blocks progression; -there is no plaintext key fallback. Passkeys can remain in the user's provider -when an attempt fails. The local credential ID is saved before opening storage so -an interrupted unlock retries the same passkey instead of replacing the wallet. - -The PRF derivation labels, metadata version and credential-based OPFS path are -persistent-format contracts. Changing them requires a migration. This local -profile supports one passkey; passkey rotation, cross-device vault recovery and -backup are not implemented. Clearing site data loses the vault and its local -profile; a synced passkey alone does not back up OPFS. +`b` is optional and defaults to `https://bridge.worldcoin.org`. Only those two +World ID bridge origins are accepted. `t=wld` and a validated `return_to` URL are +also supported. The encrypted request's callback takes precedence and conflicting +callbacks are rejected. Configure the external demo's authenticator base URL; +request creation and final verification remain on that website/server. + +1. Fetch and decrypt the bridge request. Validate staging environment, timestamps, + action binding, RP signer and OPRF key against the staging registry. +2. Show the RP ID, action and exact AND/OR credential requirements before opening + a passkey. New wallets register on staging; existing wallets unlock their vault. +3. Check the requested issuer schemas and date bounds. Selfie-only requests can + enter enrollment; Orb-only requests require an existing Orb credential. An + either-credential request asks the user to choose, without selecting Selfie automatically. +4. On explicit approval, revalidate the request and use WalletKit to generate the + proof from the original requirements. Selfie proofs include the existing + schema-11 uniqueness-score disclosure. +5. Encrypt and upload the response to the bridge. Failed delivery retains the same + proof in memory for retry. The UI reports delivery, not successful RP verification. + +Only staging World ID 4 uniqueness requests are supported. User-presence and +identity-attribute requests fail closed. Orb enrollment/import, recovery, and +production requests are not implemented. Closing/reloading the page discards the +bridge response capability; reopen a fresh request from the RP. Bridge keys are +removed from browser history and never persisted by the app. + +## Selfie issuance + +The local flow uses the **existing real staging issuer with synthetic face input**. +It obtains a schema-11 subject/blinding factor through WalletKit, creates encrypted +synthetic AMPC shares in a native helper, submits/polls Face staging, verifies the +issuer signature and subject, and stores the issued credential in the encrypted vault. + +```sh +bun run build:selfie-helper +``` + +The helper has pinned private Oxide/AMPC dependencies and needs their repository +access and native dependencies. See its [README](services/staging-issuance/face-enrollment-helper/README.md). +`STAGING_FACE_HELPER=/absolute/path/to/staging-face-crypto` can select an existing +build of this same helper for local development. Missing helpers return an actionable +503; there is no fake-success fallback. The web build does not build the native helper. + +Issuance is allowed only with a loopback server binding, an allowed localhost +request origin, and matching `Origin` header. Remote deployments cannot enable +this synthetic enrollment route by changing browser input. Interrupted submissions +are saved and polled instead of automatically submitted again. The server retains +operations under `~/.local/state/web-authenticator/synthetic-selfie-issuance` with +private filesystem permissions; the browser retains an opaque resume capability. +Set `STAGING_SELFIE_STATE_DIR` to a separate persistent directory when running +multiple local checkouts. Run one issuer process per directory; the in-memory +concurrency guard is not a distributed lock. + +The optional MediaPipe camera preview stays local and provides framing guidance. +It does **not** supply the issuer input or establish liveness. TEE capture, challenge +verification and production Selfie Check issuance remain separate integrations. + +## Storage + +PR #9's public profile (`world-id-wallet-v1`), PRF input, HKDF labels and OPFS path +are unchanged. Reloading at the **same origin** reopens that passkey's encrypted +WalletKit vault. PRF output and seed/database-key buffers are erased after opening. +No plaintext key fallback is available. Close other wallet tabs before unlocking. + +Registration status and the opaque issuance resume capability are additional +browser metadata. A submission of unknown outcome is never automatically +registered again; unlocking checks whether that account became available. + +Ports/hostnames are separate browser origins. The earlier development checkout +also used a different key derivation/storage format; this branch does not import +its vault. A synced passkey alone does not back up OPFS. Clearing site data loses +local vault/profile data; cross-device backup, passkey rotation and recovery are +not implemented. ## Validation ```sh -bun run typecheck bun run lint +bun run typecheck bun run build bun test -bunx playwright install chromium webkit +bun x playwright install chromium webkit bun run test:browser +cargo fmt --manifest-path services/staging-issuance/face-enrollment-helper/Cargo.toml -- --check ``` -Build before running unit tests: HTTP regression tests exercise the built shell. -Browser tests cover responsive layout, accessibility, capture cleanup and actual -WalletKit loading with a Chromium virtual PRF passkey. That is not evidence of -physical-passkey/provider compatibility. For Nix Chromium, set -`PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH` to its executable and provide a fontconfig -configuration with installed fonts. CI installs both Playwright browser targets. - -`bun run build:static-demo` retains the standalone preview build. No deployment -project or automatic publishing target is configured. Automatic Vercel Git -deployments are disabled in the root `vercel.json`; the existing GitHub integration -does not need to build this app. - -## Migration provenance - -The migrated `clean-start/` source comes from -`worldcoin/web-authenticator-experiments` commit -`b4139268da213a680e89bf5877c29fcafb145f25` (Soam's UX/hosting branch, PR #5), moved -to this repository root. The existing contracts, simulator boundaries, tests and -asset provenance are preserved. Changes on top add WalletKit, protected storage, -explicit simulation labels and updated CI. Historical test evidence under -`tests/integration/reports` describes the source experiment, not this migration. +Browser tests run a separate server on port 4194. Unit and browser tests use fixture +RP signatures, mocked upstream registry/bridge responses and mocked account/issuer +boundaries; they do not submit staging registrations or enrollments. Chromium also +exercises a virtual PRF passkey and the real WalletKit worker/vault against a failed +upstream registration. This is not physical-passkey or live end-to-end issuance evidence. + +No automatic deployment is configured. PR #9's `vercel.json` keeps Vercel Git +publishing disabled. Server bindings/origins and the explicit CSP allowlist live in +[`config/authenticator-app-v0.ts`](config/authenticator-app-v0.ts). + +## Provenance + +PR #9 migrated the browser UX from `worldcoin/web-authenticator-experiments` +commit `b4139268da213a680e89bf5877c29fcafb145f25`. This branch replaces its embedded +RP scenario, simulated session gateway and simulated issuers with the existing +development checkout's WalletKit, bridge and staging issuance integrations. +The original asset/model provenance and passkey vault format are retained. diff --git a/apps/authenticator/README.md b/apps/authenticator/README.md index 0367792..4739fdc 100644 --- a/apps/authenticator/README.md +++ b/apps/authenticator/README.md @@ -1,8 +1,11 @@ -# Browser app +# Browser authenticator -See the [root README](../../README.md) for setup, current behavior and limitations. +See the [root README](../../README.md) for setup, external RP integration and limits. -`src/wallet/session.ts` owns passkey PRF evaluation, key derivation and the real -WalletKit worker/vault. `src/App.tsx` prevents capture progression until that vault -opens successfully. The session controller and `src/server` retain the migrated -metadata-only simulator; they do not issue real credentials or attest biometrics. +- `src/App.tsx`: request review, wallet unlock, enrollment and explicit proof approval. +- `src/wallet/session.ts`: PR #9 passkey derivation and encrypted WalletKit vault. +- `src/wallet/registration.ts`: register once or reopen an existing staging account. +- `src/lib/requests`: bridge encryption, request validation, credential routing and proof generation. +- `src/lib/selfie-issuance.ts`: resumable staging issuance and vault storage. +- `src/server`: static assets, RP registry lookup and localhost-only staging issuer. +- `src/components/CameraPreview.tsx`: local camera guidance, separate from synthetic issuance. diff --git a/apps/authenticator/public/assets/figma/zoom-app-icon.png b/apps/authenticator/public/assets/figma/zoom-app-icon.png deleted file mode 100644 index bb6fa9de5439873d82fc88b2d7b6549ab3c96f5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19677 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 Ye=GUHfIgpPLjV8(07*qoM6N<$f|vP)BLDyZ diff --git a/apps/authenticator/src/App.tsx b/apps/authenticator/src/App.tsx index 8ba8144..c25c175 100644 --- a/apps/authenticator/src/App.tsx +++ b/apps/authenticator/src/App.tsx @@ -1,313 +1,211 @@ -import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react"; -import { - AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, - makeAuthenticatorUiSnapshotV1, - type AuthenticatorUiActionV1, - type AuthenticatorUiSnapshotV1, -} from "@clean-start/contracts"; -import { - HttpSimulatorBrowserSessionClientV0, - type AbortableSimulatorBrowserSessionPortV0, -} from "./adapters/http-session"; -import { openPasskeyWallet, type WalletSession } from "./wallet/session"; -import { FlowScreenV1 } from "./components/FlowScreen"; -import { - AuthenticatorFlowControllerV1, - type AuthenticatorFlowControllerOptionsV1, -} from "./flow/controller"; -import { - type LiveFaceGuidanceV1, -} from "./walkthrough/live-face-guidance"; -import { - CAPTURE_COMPLETE_ACK_MS_V1, - captureHoldProgressV1, -} from "./walkthrough/hold-steady-progress"; -import { - type LivePasskeyResultV1, - type LivePasskeyStatusV1, -} from "./walkthrough/live-passkey"; -import { - WALKTHROUGH_ACTION_LABELS_V1, - WALKTHROUGH_COPY_V1, - WALKTHROUGH_DETAIL_COPY_V1, - WALKTHROUGH_DISCLOSURE_V1, - WALKTHROUGH_PASSKEY_READY_COPY_V1, - WALKTHROUGH_RETURNED_HERO_V1, -} from "./walkthrough/production-copy"; -import { - createLocalWalkthroughAdmissionAdapterV1, - LocalWalkthroughCaptureAdapterV1, - type WalkthroughCameraStatusV1, -} from "./walkthrough/walkthrough-adapters"; - -export interface AuthenticatorAppMediaV1 { - readonly getVideo: () => HTMLVideoElement | null; - readonly getCanvas: () => HTMLCanvasElement | null; -} - -export interface AuthenticatorControllerRuntimeV1 { - readonly onCameraStatus: (status: WalkthroughCameraStatusV1) => void; - readonly onLiveGuidance: (guidance: LiveFaceGuidanceV1) => void; -} - -export type AuthenticatorControllerFactoryV1 = ( - media: AuthenticatorAppMediaV1, - initialSnapshot: AuthenticatorUiSnapshotV1, - runtime?: AuthenticatorControllerRuntimeV1, -) => AuthenticatorFlowControllerV1; - -// Every shell route runs the same live flow with the production presentation. -// `/demo` and `/demo/returned` are aliases of `/` and `/returned`, kept so -// existing links and evidence keep working. -const RETURNED_PATHS_V1: readonly string[] = Object.freeze(["/returned", "/demo/returned"]); - -export function returnedPathForV1(pathname: string): "/returned" | "/demo/returned" { - return pathname.startsWith("/demo") ? "/demo/returned" : "/returned"; -} - -export function initialAuthenticatorSnapshotV1(): AuthenticatorUiSnapshotV1 { - const state = RETURNED_PATHS_V1.includes(window.location.pathname) - ? "returned" - : "request_checking"; - return makeAuthenticatorUiSnapshotV1({ - state, - visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[state], - }); -} - -const NO_RUNTIME_CALLBACKS_V1: AuthenticatorControllerRuntimeV1 = Object.freeze({ - onCameraStatus: (_status: WalkthroughCameraStatusV1): void => undefined, - onLiveGuidance: (_guidance: LiveFaceGuidanceV1): void => undefined, -}); - -// Builds the controller factory for a given session port: the same-origin HTTP -// client for the served app, or the in-page simulator for the static demo build -// (`apps/authenticator/static-demo`). Admission, capture, and return handling are -// identical either way. -export function makeAuthenticatorControllerFactoryV1( - sessionPort: AbortableSimulatorBrowserSessionPortV0, -): AuthenticatorControllerFactoryV1 { - return (media, snapshot, runtime = NO_RUNTIME_CALLBACKS_V1) => { - const options: AuthenticatorFlowControllerOptionsV1 = { - sessionPort, - admission: createLocalWalkthroughAdmissionAdapterV1(), - capture: new LocalWalkthroughCaptureAdapterV1({ - getVideo: media.getVideo, - getCanvas: media.getCanvas, - onStatus: runtime.onCameraStatus, - onGuidance: runtime.onLiveGuidance, - }), - initialSnapshot: snapshot, - closeLocally: () => window.close(), - navigateReturned: () => window.location.assign( - returnedPathForV1(window.location.pathname), - ), - }; - return new AuthenticatorFlowControllerV1(options); - }; -} - -export const createDefaultAuthenticatorControllerV1: AuthenticatorControllerFactoryV1 = ( - media, - snapshot, - runtime, -) => makeAuthenticatorControllerFactoryV1(new HttpSimulatorBrowserSessionClientV0())( - media, - snapshot, - runtime, -); - -// User actions that begin a fresh capture attempt reset the hold-steady ring. -const CAPTURE_RESTART_ACTIONS_V1: ReadonlySet = new Set([ - "continue_to_camera", - "start_camera", - "retake", - "try_again", - "continue_without_guidance", -]); - -export function AuthenticatorAppV1({ - controllerFactory = createDefaultAuthenticatorControllerV1, - createPasskey, -}: { - readonly controllerFactory?: AuthenticatorControllerFactoryV1; - readonly createPasskey?: () => Promise; -}) { - const walletRef = useRef(null); - const walletOpeningRef = useRef(null); - const [walletError, setWalletError] = useState(); - const videoRef = useRef(null); - const canvasRef = useRef(null); - const controllerRef = useRef(null); - const initial = useMemo(() => initialAuthenticatorSnapshotV1(), []); - const [snapshot, setSnapshot] = useState(initial); - const [passkeyStatus, setPasskeyStatus] = useState("idle"); - const [cameraStatus, setCameraStatus] = useState("idle"); - const [liveGuidance, setLiveGuidance] = useState(); - const [captureHoldProgress, setCaptureHoldProgress] = useState(0); - const captureProgressFrameRef = useRef(undefined); - const captureCompleteTimerRef = useRef | undefined>(undefined); - - const onLiveGuidance = useCallback((guidance: LiveFaceGuidanceV1): void => { - setLiveGuidance(guidance); - if (guidance.code !== "hold_steady") setCaptureHoldProgress(0); - }, []); +import { useEffect, useRef, useState } from "react"; +import { CameraPreview } from "./components/CameraPreview"; +import { openAuthenticator } from "./wallet/session"; +import { abortable } from "./lib/async"; +import type { WalletKit, CredentialMetadata } from "./lib/walletkit"; +import { issueSelfieCredential } from "./lib/selfie-issuance"; +import { loadIncomingRequest, type IncomingRequest } from "./lib/requests/incoming-request"; +import { credentialAvailability, credentialRequirementsLabel } from "./lib/requests/proof-request"; +import { createProof } from "./lib/requests/prove"; + +const defaults = { open: openAuthenticator, load: loadIncomingRequest, issue: issueSelfieCredential, prove: createProof }; +type Screen = "review" | "enroll" | "delivery" | "done" | "cancelled"; + +export function AuthenticatorAppV1({ services = defaults }: { services?: typeof defaults }) { + const [incoming, setIncoming] = useState(null); + const [loading, setLoading] = useState(true); + const [wallet, setWallet] = useState(null); + const [records, setRecords] = useState([]); + const [screen, setScreen] = useState("review"); + const [busy, setBusy] = useState(false); + const [progress, setProgress] = useState(""); + const [error, setError] = useState(null); + const [loadFailed, setLoadFailed] = useState(false); + const [canIssue, setCanIssue] = useState(false); + const [configurationError, setConfigurationError] = useState(false); + const [preview, setPreview] = useState(false); + const [expired, setExpired] = useState(false); + const operation = useRef(null); + const activeWallet = useRef(null); + const retainedProof = useRef(null); + const source = useRef(null); useEffect(() => { - const controller = controllerFactory({ - getVideo: () => videoRef.current, - getCanvas: () => canvasRef.current, - }, initial, { - onCameraStatus: setCameraStatus, - onLiveGuidance, + const controller = new AbortController(); + source.current ??= window.location.href; + const url = new URL(source.current); + // Keep the response capability in memory; remove the bridge key from browser history immediately. + if (url.searchParams.has("k")) window.history.replaceState(null, "", window.location.pathname); + void fetch("/api/capabilities", { signal: AbortSignal.any([controller.signal, AbortSignal.timeout(10_000)]), cache: "no-store" }) + .then(async response => { + if (!response.ok) throw new Error("Configuration unavailable"); + const value = await response.json() as { environment?: unknown; syntheticSelfieIssuance?: unknown }; + if (value.environment !== "staging" || typeof value.syntheticSelfieIssuance !== "boolean") throw new Error("Invalid configuration"); + if (!controller.signal.aborted) setCanIssue(value.syntheticSelfieIssuance); + }).catch(() => { if (!controller.signal.aborted) setConfigurationError(true); }); + void services.load(source.current, controller.signal, setProgress).then(request => { + if (!controller.signal.aborted) { setIncoming(request); setLoading(false); setProgress(""); } + }).catch(cause => { + if (!controller.signal.aborted) { + setError(cause instanceof Error ? cause.message : "Could not validate the incoming request."); + setLoadFailed(true); + setLoading(false); + } }); - controllerRef.current = controller; - const unsubscribe = controller.subscribe(setSnapshot); - const visibility = () => { - if (document.visibilityState !== "visible") controller.interrupt("page_hidden"); - }; - const pagehide = () => { - controller.interrupt("page_unloaded"); - walletOpeningRef.current?.abort(); - walletRef.current?.client.terminate(); - walletRef.current = null; + const stop = () => { + controller.abort(); + operation.current?.abort(); + activeWallet.current?.terminate(); + retainedProof.current = null; }; - const orientation = () => controller.interrupt("orientation_invalidated"); - document.addEventListener("visibilitychange", visibility); - window.addEventListener("pagehide", pagehide); - window.addEventListener("orientationchange", orientation); - controller.start(); - return () => { - document.removeEventListener("visibilitychange", visibility); - window.removeEventListener("pagehide", pagehide); - window.removeEventListener("orientationchange", orientation); - unsubscribe(); - walletOpeningRef.current?.abort(); - walletRef.current?.client.terminate(); - walletRef.current = null; - controller.dispose(); - controllerRef.current = null; - }; - }, [controllerFactory, initial, onLiveGuidance]); + const restore = (event: PageTransitionEvent) => { if (event.persisted) window.location.reload(); }; + window.addEventListener("pagehide", stop); + window.addEventListener("pageshow", restore); + return () => { stop(); window.removeEventListener("pagehide", stop); window.removeEventListener("pageshow", restore); }; + }, [services]); - // Two states advance on their own before they paint. Supported-browser - // admission is answered locally, and the separate camera-intro screen is - // folded into the passkey-created screen: its "Start selfie check" action - // prepares the capture session, and the camera opens as soon as it is ready. - useLayoutEffect(() => { - if ( - snapshot.state === "admission_safari_candidate" || - snapshot.state === "admission_chrome_candidate" - ) { - controllerRef.current?.act("continue"); + useEffect(() => { + if (!incoming || screen === "done" || screen === "cancelled") return; + const timer = setTimeout(() => setExpired(true), Math.max(0, incoming.proof.expires_at * 1000 - Date.now())); + return () => clearTimeout(timer); + }, [incoming, screen]); + + const availability = incoming && wallet ? credentialAvailability(incoming.proof, records) : null; + const hasSelfie = records.some(record => record.issuerSchemaId === 11n && !record.isExpired); + const supported = !incoming?.unsupportedReason && !expired && !loadFailed; + const closeWallet = () => { activeWallet.current?.terminate(); activeWallet.current = null; setWallet(null); setRecords([]); }; + + async function run(action: (signal: AbortSignal) => Promise) { + if (operation.current) return; + const controller = new AbortController(); + operation.current = controller; + setBusy(true); setError(null); + try { await action(controller.signal); } + catch (cause) { + if (!controller.signal.aborted) setError(cause instanceof Error ? cause.message : "The operation could not complete. Try again."); + } finally { if (operation.current === controller) operation.current = null; setBusy(false); } + } + + async function refresh(current: WalletKit, signal: AbortSignal) { + try { + const next = await abortable(current.listCredentials(), AbortSignal.any([signal, AbortSignal.timeout(10_000)])); + signal.throwIfAborted(); setRecords(next); + return next; + } catch (cause) { + closeWallet(); + throw new Error("Could not read the encrypted vault. Unlock again to retry.", { cause }); } - if (snapshot.state === "capture_intro") { - controllerRef.current?.act("start_camera"); + } + + const unlock = () => run(async signal => { + setProgress("Use your passkey to open your wallet…"); + let current: WalletKit; + try { current = await services.open(signal, setProgress); } + catch (cause) { + throw new Error(cause instanceof Error && cause.message.startsWith("Could not ") + ? cause.message : "Passkey setup or unlock did not complete. Use a PRF-capable passkey provider and try again.", { cause }); } - }, [snapshot.state]); - - useEffect(() => { - if ( - cameraStatus !== "live" || - snapshot.state !== "capture_preview" || - liveGuidance?.code !== "hold_steady" - ) return; - const startedAt = performance.now(); - const tick = (now: number): void => { - const progress = captureHoldProgressV1(now - startedAt); - setCaptureHoldProgress(progress); - if (progress < 1) { - captureProgressFrameRef.current = requestAnimationFrame(tick); - return; - } - captureCompleteTimerRef.current = setTimeout(() => { - controllerRef.current?.act("collect_frame_metadata"); - }, CAPTURE_COMPLETE_ACK_MS_V1); - }; - captureProgressFrameRef.current = requestAnimationFrame(tick); - return () => { - if (captureProgressFrameRef.current !== undefined) { - cancelAnimationFrame(captureProgressFrameRef.current); - } - if (captureCompleteTimerRef.current !== undefined) { - clearTimeout(captureCompleteTimerRef.current); - } - captureProgressFrameRef.current = undefined; - captureCompleteTimerRef.current = undefined; - }; - }, [cameraStatus, liveGuidance?.code, snapshot.state]); + if (signal.aborted) { current.terminate(); signal.throwIfAborted(); } + activeWallet.current = current; setWallet(current); + const next = await refresh(current, signal); + if (incoming && credentialAvailability(incoming.proof, next).needsSelfieEnrollment && supported) setScreen("enroll"); + setProgress("Wallet unlocked."); + }); - const onAction = (action: AuthenticatorUiActionV1): void => { - if (action === "cancel" || action === "close") { - walletOpeningRef.current?.abort(); - walletRef.current?.client.terminate(); - walletRef.current = null; + const issue = () => run(async signal => { + if (!wallet || !canIssue || !supported || (incoming && !availability?.canEnrollSelfie)) return; + setPreview(false); + try { await services.issue(wallet, signal, setProgress); } + catch (cause) { + closeWallet(); + throw new Error(cause instanceof Error ? cause.message : "Issuance failed. Unlock and retry to resume the same operation.", { cause }); } - if (CAPTURE_RESTART_ACTIONS_V1.has(action)) setCaptureHoldProgress(0); - if (action === "start_demo_authenticator" && passkeyStatus !== "requesting") { - setPasskeyStatus("requesting"); - setWalletError(undefined); - const opening = new AbortController(); - walletOpeningRef.current = opening; - const unlock = async (): Promise => { - if (createPasskey !== undefined) return createPasskey(); - walletRef.current?.client.terminate(); - const session = await openPasskeyWallet(opening.signal); - if (opening.signal.aborted) { - session.client.terminate(); - opening.signal.throwIfAborted(); - } - walletRef.current = session; - return { status: "created", prfCapability: "available" }; - }; - void unlock().then((result) => { - if (opening.signal.aborted) return; - setPasskeyStatus(result.status); - if (result.status === "created" && result.prfCapability === "available") { - controllerRef.current?.act(action); - } else { - setWalletError("A PRF-capable passkey is required. Please try again."); - } - }).catch((error: unknown) => { - if (opening.signal.aborted) return; - setPasskeyStatus("failed"); - setWalletError(error instanceof DOMException && error.name === "NotAllowedError" - ? "Passkey unlock was cancelled. Please try again." - : "Could not unlock the wallet. Use a PRF-capable passkey and close other tabs using this wallet, then retry."); - }); - return; + await refresh(wallet, signal); + setScreen("review"); + setProgress("Selfie credential stored in your encrypted wallet."); + }); + + async function deliver(signal: AbortSignal) { + if (!incoming || !retainedProof.current) return; + setProgress("Encrypting and sending your proof…"); + try { await incoming.deliver(retainedProof.current, signal); } + catch (cause) { throw new Error("Proof delivery is unconfirmed. Retry sending the same proof; no new proof is needed.", { cause }); } + signal.throwIfAborted(); + retainedProof.current = null; setScreen("done"); setProgress(""); closeWallet(); + } + + const approve = () => run(async signal => { + if (!wallet || !incoming || !availability?.satisfied || !supported) return; + try { retainedProof.current = await services.prove(incoming, wallet, signal, setProgress); } + catch (cause) { closeWallet(); throw cause; } + setScreen("delivery"); + await deliver(signal); + }); + + const cancel = () => run(async signal => { + if (incoming) { + try { await incoming.cancel(AbortSignal.any([signal, AbortSignal.timeout(15_000)])); } + catch (cause) { throw new Error("Could not send the rejection. Retry cancellation or close this tab and let the request expire.", { cause }); } } - if (passkeyStatus === "requesting") return; - controllerRef.current?.act(action); - }; + setPreview(false); setScreen("cancelled"); setProgress(""); closeWallet(); + }); - const copyOverride = snapshot.state === "demo_authenticator_ready" - ? WALKTHROUGH_PASSKEY_READY_COPY_V1[passkeyStatus === "created" ? "created" : "notCreated"] - : WALKTHROUGH_COPY_V1[snapshot.state]; - return <> - {walletError &&

    {walletError}

    } - ; + const title = loading ? "Checking your request" : loadFailed ? "Request unavailable" + : screen === "done" ? "Proof response sent" : screen === "cancelled" ? "Request cancelled" + : screen === "delivery" ? "Sending your proof" : screen === "enroll" ? "Set up Selfie Check" + : incoming ? "Review your request" : wallet ? "Your World ID wallet" : "World ID authenticator"; + const finished = screen === "done" || screen === "cancelled"; + + return
    ; } diff --git a/apps/authenticator/src/adapters/browser-admission.ts b/apps/authenticator/src/adapters/browser-admission.ts deleted file mode 100644 index 87c0d87..0000000 --- a/apps/authenticator/src/adapters/browser-admission.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { - admitBrowserV1, - classifyIPhoneUserAgentV1, - collectAdvisoryCapabilitiesV1, - createExternalBrowserHandoffV1, - type BrowserAdmissionDecisionV1, - type BrowserAdmissionInputV1, - type BrowserContextKindV1, - type EmbeddedEvidenceV1, - type ValidatedHandoffContextV1, -} from "@clean-start/browser-admission"; -import { - PRF_INPUT_V1_SHA256, - WEB_AUTHN_PRF_AUTHENTICATOR_V1, - type WebAuthnPrfAuthenticatorPolicyV1, -} from "@clean-start/contracts"; - -export interface BrowserAdmissionAdapterV1 { - evaluate(signal?: AbortSignal): Promise; - openExternalBrowser(signal?: AbortSignal): Promise; -} - -export function evaluateBrowserAdmissionFactsV1( - policy: WebAuthnPrfAuthenticatorPolicyV1, - input: BrowserAdmissionInputV1, -): BrowserAdmissionDecisionV1 { - return admitBrowserV1(policy, input); -} - -function embeddedEvidence(userAgent: string): EmbeddedEvidenceV1 { - return /\b(FBAN|FBAV|Instagram|Line|MicroMessenger|GSA|TikTok)\b/i.test(userAgent) - ? "probable" - : "none"; -} - -function topLevelContext(): { - readonly isTopLevel: boolean; - readonly frameOrigin: "same_origin" | "cross_origin" | "unknown"; -} { - try { - if (window.top === window.self) return { isTopLevel: true, frameOrigin: "same_origin" }; - try { - return { - isTopLevel: false, - frameOrigin: window.top?.location.origin === window.location.origin - ? "same_origin" - : "cross_origin", - }; - } catch { - return { isTopLevel: false, frameOrigin: "cross_origin" }; - } - } catch { - return { isTopLevel: false, frameOrigin: "unknown" }; - } -} - -function browserContext(userAgent: string): BrowserContextKindV1 { - const standalone = window.matchMedia?.("(display-mode: standalone)").matches || - (navigator as Navigator & { readonly standalone?: boolean }).standalone === true; - if (standalone) return "installed_pwa"; - if (embeddedEvidence(userAgent) !== "none") return "embedded"; - return "normal_tab"; -} - -function cameraPermissionsPolicy(): "allowed" | "blocked" | "unknown" { - const documentWithPolicy = document as Document & { - readonly permissionsPolicy?: { allowsFeature(name: string): boolean }; - readonly featurePolicy?: { allowsFeature(name: string): boolean }; - }; - const policy = documentWithPolicy.permissionsPolicy ?? documentWithPolicy.featurePolicy; - if (policy === undefined) return "unknown"; - try { - return policy.allowsFeature("camera") ? "allowed" : "blocked"; - } catch { - return "unknown"; - } -} - -function defaultPolicy(): WebAuthnPrfAuthenticatorPolicyV1 { - const secureHttpsOrigin = window.location.protocol === "https:" ? window.location.origin : null; - return Object.freeze({ - version: WEB_AUTHN_PRF_AUTHENTICATOR_V1, - rpId: window.location.hostname, - allowedOrigins: Object.freeze(secureHttpsOrigin === null ? [] : [secureHttpsOrigin]), - userVerification: "required", - prfInputSha256: PRF_INPUT_V1_SHA256, - prfOutputMapping: "verbatim_32_byte_first_result_to_world_id_4_signer_seed", - secretLifecycle: "browser_memory_only", - }); -} - -export function createBrowserAdmissionAdapterV1(options: { - readonly policy?: WebAuthnPrfAuthenticatorPolicyV1; - readonly handoffContext?: ValidatedHandoffContextV1; - readonly assignLocation?: (href: string) => void; -} = {}): BrowserAdmissionAdapterV1 { - return { - async evaluate(signal?: AbortSignal): Promise { - if (signal?.aborted) throw new DOMException("Aborted", "AbortError"); - const userAgent = navigator.userAgent; - const capabilities = await collectAdvisoryCapabilitiesV1({ - isSecureContext: window.isSecureContext, - visibilityState: document.visibilityState, - publicKeyCredential: typeof PublicKeyCredential === "undefined" - ? undefined - : PublicKeyCredential, - mediaDevices: navigator.mediaDevices, - }); - if (signal?.aborted) throw new DOMException("Aborted", "AbortError"); - const frame = topLevelContext(); - return admitBrowserV1(options.policy ?? defaultPolicy(), { - actualOrigin: window.location.origin, - isTopLevel: frame.isTopLevel, - frameOrigin: frame.frameOrigin, - permissionsPolicy: cameraPermissionsPolicy(), - requestContext: { - transactionHandle: "validated", - returnTarget: "validated", - session: "approved", - unexpectedQueryFields: window.location.search.length > 0, - }, - platform: classifyIPhoneUserAgentV1(userAgent), - browserContext: browserContext(userAgent), - embeddedEvidence: embeddedEvidence(userAgent), - capabilities, - }); - }, - - async openExternalBrowser(signal?: AbortSignal): Promise { - if (signal?.aborted) throw new DOMException("Aborted", "AbortError"); - if (options.handoffContext === undefined || window.location.protocol !== "https:") { - throw new TypeError("validated_handoff_unavailable"); - } - const handoff = createExternalBrowserHandoffV1( - window.location.origin, - options.handoffContext, - ); - (options.assignLocation ?? ((href) => window.location.assign(href)))(handoff.href); - }, - }; -} diff --git a/apps/authenticator/src/adapters/browser-capture.ts b/apps/authenticator/src/adapters/browser-capture.ts deleted file mode 100644 index cb0e83d..0000000 --- a/apps/authenticator/src/adapters/browser-capture.ts +++ /dev/null @@ -1,170 +0,0 @@ -import { - evaluateClientQualityV0, - type EvaluatedClientQualityResultV0, -} from "@clean-start/client-quality"; -import { - MetadataOnlyCaptureRuntime, - createBrowserCapturePlatform, - type ApprovedCaptureEntry, - type CaptureFailureCode, - type CaptureRequest, - type CaptureRuntimeOptions, - type CaptureState, -} from "@clean-start/frame-capture"; -import type { - ClientQualityPolicyV0, - FrameBundleV0, - HexSha256, - SimulationCapturePolicyV0, -} from "@clean-start/contracts"; - -interface CaptureRuntimeV1 { - capture(request: CaptureRequest): Promise; - cancel(): void; - unmount(): void; -} - -export interface BrowserCaptureStartV1 { - readonly entry: ApprovedCaptureEntry; - readonly policy: SimulationCapturePolicyV0; - readonly qualityPolicy: ClientQualityPolicyV0; - readonly sessionId: string; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly nonceDigestSha256: HexSha256; - readonly retakesUsed: number; -} - -export interface BrowserCaptureCallbacksV1 { - readonly onCaptureState: (state: CaptureState) => void | Promise; - readonly onQuality: (result: EvaluatedClientQualityResultV0) => void | Promise; - readonly onArtifactReady: (artifact: FrameBundleV0) => void | Promise; - readonly onFailure: (code: CaptureFailureCode) => void | Promise; - readonly onComplete: () => void | Promise; -} - -export interface BrowserCaptureAdapterV1 { - start(input: BrowserCaptureStartV1, callbacks: BrowserCaptureCallbacksV1): void; - requestMetadataCollection(): void; - stop(): void; - clearTransientMedia(): void; - unmount(): void; -} - -class QualityOutcomeStopV1 extends Error {} - -export class BrowserMetadataCaptureAdapterV1 implements BrowserCaptureAdapterV1 { - private runtime?: CaptureRuntimeV1; - private qualityRequested = false; - private releaseQuality?: () => void; - private nonReadyQuality = false; - - constructor(private readonly options: { - readonly video?: HTMLVideoElement; - readonly canvas?: HTMLCanvasElement; - readonly getVideo?: () => HTMLVideoElement | null; - readonly getCanvas?: () => HTMLCanvasElement | null; - readonly runtimeFactory?: (options: CaptureRuntimeOptions) => CaptureRuntimeV1; - }) {} - - start(input: BrowserCaptureStartV1, callbacks: BrowserCaptureCallbacksV1): void { - if (this.runtime !== undefined) { - void callbacks.onFailure("capture_in_progress"); - return; - } - this.qualityRequested = false; - this.nonReadyQuality = false; - const runtimeOptions: CaptureRuntimeOptions = { - onStateChange: (state) => { - if ( - state === "acquiring" || - state === "awaiting_first_frame" || - state === "preview" - ) void callbacks.onCaptureState(state); - }, - }; - const runtime = this.options.runtimeFactory?.(runtimeOptions) ?? - this.createBrowserRuntime(runtimeOptions); - this.runtime = runtime; - - const capturePromise = runtime.capture({ - entry: input.entry, - policy: input.policy, - sessionId: input.sessionId, - accountPublicMaterialDigestSha256: input.accountPublicMaterialDigestSha256, - nonceDigestSha256: input.nonceDigestSha256, - inspectTransientFrame: async () => { - await new Promise((resolve) => { - this.releaseQuality = resolve; - if (this.qualityRequested) resolve(); - }); - this.releaseQuality = undefined; - const result = evaluateClientQualityV0( - input.qualityPolicy, - { readCameraActive: () => true }, - { retakesUsed: input.retakesUsed }, - ); - await callbacks.onQuality(result); - if (result.action !== "ready") { - this.nonReadyQuality = true; - throw new QualityOutcomeStopV1(); - } - }, - }); - - void capturePromise.then(async (artifact) => { - this.runtime = undefined; - await callbacks.onArtifactReady(artifact); - await callbacks.onCaptureState("artifact_ready"); - await callbacks.onCaptureState("cleaning_up"); - await callbacks.onComplete(); - }).catch(async (cause: unknown) => { - this.runtime = undefined; - if (this.nonReadyQuality || cause instanceof QualityOutcomeStopV1) return; - const code = typeof cause === "object" && cause !== null && - "code" in cause && typeof (cause as { readonly code?: unknown }).code === "string" - ? (cause as { readonly code: CaptureFailureCode }).code - : "unknown"; - await callbacks.onFailure(code); - }); - } - - requestMetadataCollection(): void { - this.qualityRequested = true; - this.releaseQuality?.(); - } - - stop(): void { - this.runtime?.cancel(); - } - - clearTransientMedia(): void { - this.releaseQuality?.(); - this.releaseQuality = undefined; - const video = this.options.video ?? this.options.getVideo?.() ?? undefined; - if (video !== undefined) video.srcObject = null; - const canvas = this.options.canvas ?? this.options.getCanvas?.() ?? undefined; - if (canvas !== undefined) { - const context = canvas.getContext("2d"); - context?.clearRect(0, 0, canvas.width, canvas.height); - canvas.width = 1; - canvas.height = 1; - } - } - - unmount(): void { - this.runtime?.unmount(); - this.clearTransientMedia(); - } - - private createBrowserRuntime(options: CaptureRuntimeOptions): CaptureRuntimeV1 { - const video = this.options.video ?? this.options.getVideo?.() ?? undefined; - const canvas = this.options.canvas ?? this.options.getCanvas?.() ?? undefined; - if (video === undefined || canvas === undefined) { - throw new TypeError("capture_elements_unavailable"); - } - return new MetadataOnlyCaptureRuntime( - createBrowserCapturePlatform(video, canvas), - options, - ); - } -} diff --git a/apps/authenticator/src/adapters/http-session.ts b/apps/authenticator/src/adapters/http-session.ts deleted file mode 100644 index 46d332b..0000000 --- a/apps/authenticator/src/adapters/http-session.ts +++ /dev/null @@ -1,188 +0,0 @@ -import { - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - SIMULATOR_BROWSER_SESSION_ERROR_V0, - SIMULATOR_BROWSER_SESSION_PORT_V0, - isSimulatorBrowserReturnAcceptedV0, - isSimulatorBrowserSessionErrorV0, - isSimulatorBrowserSessionViewV0, - isSimulatorUiBootstrapV0, - matchesExpectedSimulatorBrowserDemoAuthenticatorReadyV0, - matchesExpectedSimulatorBrowserSessionViewV0, - type BrowserIdempotentSessionFieldsV0, - type BrowserSessionFieldsV0, - type CompleteDemoAuthenticatorV0, - type CreateSimulatorBrowserSessionV0, - type SimulatorBrowserBootstrapResultV0, - type SimulatorBrowserDemoAuthenticatorResultV0, - type SimulatorBrowserReturnResultV0, - type SimulatorBrowserSessionOperationV0, - type SimulatorBrowserSessionPortV0, - type SimulatorBrowserSessionResultV0, - type SubmitSimulatorCaptureV0, -} from "@clean-start/contracts"; - -type FetchV0 = (input: RequestInfo | URL, init?: RequestInit) => Promise; - -export interface AbortableSimulatorBrowserSessionPortV0 - extends SimulatorBrowserSessionPortV0 { - bootstrap(signal?: AbortSignal): Promise; - createSession(input: CreateSimulatorBrowserSessionV0, signal?: AbortSignal): Promise; - beginDemoAuthenticator(input: BrowserIdempotentSessionFieldsV0, signal?: AbortSignal): Promise; - completeDemoAuthenticator(input: CompleteDemoAuthenticatorV0, signal?: AbortSignal): Promise; - prepareCapture(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise; - submitCapture(input: SubmitSimulatorCaptureV0, signal?: AbortSignal): Promise; - retryUnavailable(input: BrowserIdempotentSessionFieldsV0, signal?: AbortSignal): Promise; - getStatus(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise; - cancel(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise; - returnToRp(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise; -} - -function stableError(operation: SimulatorBrowserSessionOperationV0, reasonCode: "network_unavailable" | "response_invalid") { - return Object.freeze({ - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - operation, - reasonCode, - }); -} - -export class HttpSimulatorBrowserSessionClientV0 -implements AbortableSimulatorBrowserSessionPortV0 { - readonly #baseOrigin: string; - - constructor( - private readonly fetcher: FetchV0 = globalThis.fetch.bind(globalThis), - baseOrigin = globalThis.location?.origin ?? "http://127.0.0.1:4173", - private readonly now: () => Date = () => new Date(), - ) { - this.#baseOrigin = baseOrigin; - } - - bootstrap(signal?: AbortSignal): Promise { - return this.request("bootstrap", "/api/v0/bootstrap", {}, isSimulatorUiBootstrapV0, signal); - } - - createSession(input: CreateSimulatorBrowserSessionV0, signal?: AbortSignal): Promise { - return this.request( - "create_session", - "/api/v0/session/create", - input, - (value) => isSimulatorBrowserSessionViewV0(value) && - value.state === "created" && - value.code === "created" && - this.matchesSession(value, { - sessionId: value.sessionId, - browserHandle: value.browserHandle, - }), - signal, - ); - } - - beginDemoAuthenticator(input: BrowserIdempotentSessionFieldsV0, signal?: AbortSignal): Promise { - return this.request( - "begin_demo_authenticator", - "/api/v0/session/demo/begin", - input, - (value) => matchesExpectedSimulatorBrowserDemoAuthenticatorReadyV0(value, { - runtimeEnvironment: "staging", - sessionId: input.sessionId, - idempotencyKey: input.idempotencyKey, - now: this.now().toISOString(), - }), - signal, - ); - } - - completeDemoAuthenticator(input: CompleteDemoAuthenticatorV0, signal?: AbortSignal): Promise { - return this.sessionRequest("complete_demo_authenticator", "/api/v0/session/demo/complete", input, input, signal); - } - - prepareCapture(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise { - return this.sessionRequest("prepare_capture", "/api/v0/session/capture/prepare", input, input, signal); - } - - submitCapture(input: SubmitSimulatorCaptureV0, signal?: AbortSignal): Promise { - return this.sessionRequest("submit_capture", "/api/v0/session/capture/submit", input, input, signal); - } - - retryUnavailable(input: BrowserIdempotentSessionFieldsV0, signal?: AbortSignal): Promise { - return this.sessionRequest("retry_unavailable", "/api/v0/session/retry", input, input, signal); - } - - getStatus(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise { - return this.sessionRequest("get_status", "/api/v0/session/status", input, input, signal); - } - - cancel(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise { - return this.sessionRequest("cancel", "/api/v0/session/cancel", input, input, signal); - } - - returnToRp(input: BrowserSessionFieldsV0, signal?: AbortSignal): Promise { - return this.request( - "return_to_rp", - "/api/v0/session/return", - input, - isSimulatorBrowserReturnAcceptedV0, - signal, - ); - } - - private sessionRequest( - operation: SimulatorBrowserSessionOperationV0, - path: string, - body: unknown, - expected: BrowserSessionFieldsV0, - signal?: AbortSignal, - ): Promise { - return this.request( - operation, - path, - body, - (value) => this.matchesSession(value, expected), - signal, - ); - } - - private matchesSession(value: unknown, expected: BrowserSessionFieldsV0): boolean { - return matchesExpectedSimulatorBrowserSessionViewV0(value, { - runtimeEnvironment: "staging", - sessionId: expected.sessionId, - browserHandle: expected.browserHandle, - now: this.now().toISOString(), - }); - } - - private async request( - operation: SimulatorBrowserSessionOperationV0, - path: string, - body: unknown, - accepts: (value: unknown) => boolean, - signal?: AbortSignal, - ): Promise { - try { - const response = await this.fetcher(new URL(path, this.#baseOrigin), { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify(body), - cache: "no-store", - credentials: "same-origin", - redirect: "error", - signal, - }); - if (!response.headers.get("content-type")?.toLowerCase().startsWith("application/json")) { - return stableError(operation, "response_invalid") as T; - } - const value: unknown = await response.json(); - const accepted = isSimulatorBrowserSessionErrorV0(value) - ? value.operation === operation - : accepts(value); - return (accepted ? value : stableError(operation, "response_invalid")) as T; - } catch (cause) { - if (signal?.aborted) throw cause; - return stableError(operation, "network_unavailable") as T; - } - } -} diff --git a/apps/authenticator/src/adapters/staging-compatibility.ts b/apps/authenticator/src/adapters/staging-compatibility.ts deleted file mode 100644 index 4ad44b2..0000000 --- a/apps/authenticator/src/adapters/staging-compatibility.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { - ApprovedCaptureEntry, -} from "@clean-start/frame-capture"; -import type { - BrowserAdmissionDecisionV1, -} from "@clean-start/browser-admission"; -import { - isSimulatorBrowserDemoAuthenticatorReadyV0, - type SimulatorBrowserDemoAuthenticatorReadyV0, -} from "@clean-start/contracts"; - -export function makeExplicitStagingCaptureEntryV0(input: { - readonly admission: BrowserAdmissionDecisionV1; - readonly ready: SimulatorBrowserDemoAuthenticatorReadyV0; - readonly userActivated: boolean; -}): ApprovedCaptureEntry { - const { admission, ready } = input; - if ( - admission.outcome !== "eligible_candidate" || - admission.mayStartSensitiveFlow !== true || - admission.iosVersionBand !== "ios_18_plus" || - (admission.browser !== "safari" && admission.browser !== "chrome") || - !isSimulatorBrowserDemoAuthenticatorReadyV0(ready) || - ready.claims.webauthnPerformed !== false || - ready.claims.prfEvaluated !== false || - ready.claims.worldIdCreated !== false - ) { - throw new TypeError("staging_capture_gate_not_satisfied"); - } - - return Object.freeze({ - userActivated: input.userActivated, - secureTopLevelContextApproved: true, - // Compatibility translation only. The ready object above explicitly proves - // that no PRF operation happened, and this value is never rendered as fact. - prfReady: true, - iosMajor: 18, - browser: admission.browser, - }); -} diff --git a/apps/authenticator/src/assets/provenance.ts b/apps/authenticator/src/assets/provenance.ts index 12be21d..adf9cc2 100644 --- a/apps/authenticator/src/assets/provenance.ts +++ b/apps/authenticator/src/assets/provenance.ts @@ -7,7 +7,6 @@ export interface FigmaAssetProvenanceV1 { } export const FIGMA_ASSET_PROVENANCE_V1 = Object.freeze([ - { localPath: "/assets/figma/zoom-app-icon.png", nodeId: "5132:134352", sourceUrl: "https://www.figma.com/api/mcp/asset/f74f1a52-3b0c-456d-a8a1-9580acc91f99.png", sha256: "5dba613c9919c1d0e8ff72aa57f860c85e727364939685a4630d9199bed5efb9", purpose: "Zoom wordmark inside the RP icon" }, { localPath: "/assets/figma/human-emblem.svg", nodeId: "5132:134352", sourceUrl: "https://www.figma.com/api/mcp/asset/8d74901f-d2fa-4734-af04-c57af0a4d676.svg", sha256: "57859d4d34ced3758dcb099eba5ba9c12de04bd2d0d9202223472a05a3ad802b", purpose: "Staging workflow result disclosure" }, { localPath: "/assets/figma/disclosure-check.svg", nodeId: "5132:134352", sourceUrl: "https://www.figma.com/api/mcp/asset/e273220e-71af-4d7c-8d25-fac1d2341eb3.svg", sha256: "58c175883fd32c423ad0db2e8b997711124193387379f80d91b8c37058643777", purpose: "Disclosure included marker" }, { localPath: "/assets/figma/person-circle.svg", nodeId: "5132:134352", sourceUrl: "https://www.figma.com/api/mcp/asset/13368a6a-b3ab-43fe-8c5f-4eded03075b5.svg", sha256: "5a22414bbd7a80fcc6ca7d1b2ba4428d271264a6bbcfa7b895608a218ed64145", purpose: "Camera-image disclosure" }, @@ -27,7 +26,6 @@ export const FIGMA_ASSET_PROVENANCE_V1 = Object.freeze([ ] as const satisfies readonly FigmaAssetProvenanceV1[]); export const FIGMA_ASSET_PATHS_V1 = Object.freeze({ - zoom: "/assets/figma/zoom-app-icon.png", humanEmblem: "/assets/figma/human-emblem.svg", disclosureCheck: "/assets/figma/disclosure-check.svg", personCircle: "/assets/figma/person-circle.svg", diff --git a/apps/authenticator/src/components/CameraPreview.tsx b/apps/authenticator/src/components/CameraPreview.tsx new file mode 100644 index 0000000..57b37c8 --- /dev/null +++ b/apps/authenticator/src/components/CameraPreview.tsx @@ -0,0 +1,49 @@ +import { useEffect, useRef, useState } from "react"; +import { LiveFaceGuidanceControllerV1 } from "../walkthrough/live-face-guidance"; + +/** Local framing guidance only. No camera data enters synthetic staging issuance. */ +export function CameraPreview() { + const video = useRef(null); + const [message, setMessage] = useState("Starting your camera…"); + useEffect(() => { + let stopped = false; + let stream: MediaStream | undefined; + const guidance = new LiveFaceGuidanceControllerV1(() => video.current, result => { + setMessage(result.code === "unavailable" ? "Face guidance is unavailable. The preview is still local." : result.text); + }); + const stop = () => { + stopped = true; + guidance.stop(); + stream?.getTracks().forEach(track => track.stop()); + if (video.current) video.current.srcObject = null; + }; + const hide = () => { if (document.visibilityState === "hidden") { stop(); setMessage("Camera stopped. Reopen the preview to continue."); } }; + document.addEventListener("visibilitychange", hide); + window.addEventListener("pagehide", stop); + void (async () => { + if (!navigator.mediaDevices?.getUserMedia) throw new Error("Camera API unavailable"); + const media = await navigator.mediaDevices.getUserMedia({ video: { facingMode: "user", width: { ideal: 640 }, height: { ideal: 480 } }, audio: false }); + stream = media; + if (stopped || !video.current) { media.getTracks().forEach(track => track.stop()); return; } + video.current.srcObject = media; + await video.current.play(); + if (!stopped) guidance.start(); + })().catch(() => { + stream?.getTracks().forEach(track => track.stop()); + if (!stopped) setMessage("Camera unavailable. Allow camera access, then reopen the preview."); + }); + return () => { + document.removeEventListener("visibilitychange", hide); + window.removeEventListener("pagehide", stop); + stop(); + }; + }, []); + return
    +
    +
    +

    {message}

    +

    Framing preview only. Images stay in this browser; the staging issuer uses synthetic input.

    +
    ; +} diff --git a/apps/authenticator/src/components/FlowScreen.tsx b/apps/authenticator/src/components/FlowScreen.tsx deleted file mode 100644 index 946377d..0000000 --- a/apps/authenticator/src/components/FlowScreen.tsx +++ /dev/null @@ -1,438 +0,0 @@ -import { useEffect, useRef, type CSSProperties, type RefObject } from "react"; -import { - AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, - AUTHENTICATOR_UI_COPY_V1, - AUTHENTICATOR_UI_DETAIL_COPY_V1, - AUTHENTICATOR_UI_STAGING_BANNER_V1, - type AuthenticatorUiActionV1, - type AuthenticatorUiDetailCodeV1, - type AuthenticatorUiSnapshotV1, - type AuthenticatorUiStateIdV1, -} from "@clean-start/contracts"; -import { FIGMA_ASSET_PATHS_V1 } from "../assets/provenance"; -import { CAPTURE_OVAL_CLIP_PATH_V1 } from "../assets/capture-oval-geometry"; -import { SCREEN_RENDER_REGISTRY_V1 } from "../flow/render-registry"; - -export interface FlowScreenPropsV1 { - readonly snapshot: AuthenticatorUiSnapshotV1; - readonly onAction: (action: AuthenticatorUiActionV1) => void; - readonly videoRef?: RefObject; - readonly canvasRef?: RefObject; - readonly bannerText?: string | null; - readonly copyOverride?: Partial<{ - readonly heading: string; - readonly body: string; - readonly primaryAction: string | null; - readonly secondaryAction: string | null; - }>; - readonly actionLabelOverrides?: Partial>; - readonly actionsDisabled?: boolean; - readonly disclosure?: FlowScreenDisclosureV1; - readonly heroOverride?: FlowScreenHeroV1; - readonly detailCopyOverrides?: Partial>; - readonly showTemplateNotice?: boolean; - readonly liveCaptureGuidance?: { - readonly code: string; - readonly text: string; - }; - readonly captureProgress?: number; - readonly hiddenActions?: readonly AuthenticatorUiActionV1[]; -} - -export interface FlowScreenDisclosureRowV1 { - readonly icon: string; - readonly text: string; - readonly included: boolean; -} - -export interface FlowScreenDisclosureV1 { - readonly partnerIcon: string; - readonly partnerAlt: string; - readonly partnerTone: "brand" | "neutral"; - readonly heading: string; - readonly rows: readonly FlowScreenDisclosureRowV1[]; -} - -export interface FlowScreenHeroV1 { - readonly src: string; - readonly alt: string; -} - -// Default disclosure for the production-gated route: negative assurance only. -export const STAGING_DISCLOSURE_V1: FlowScreenDisclosureV1 = Object.freeze({ - partnerIcon: FIGMA_ASSET_PATHS_V1.zoom, - partnerAlt: "Zoom", - partnerTone: "brand", - heading: "App will receive", - rows: Object.freeze([ - Object.freeze({ icon: FIGMA_ASSET_PATHS_V1.humanEmblem, text: "Staging workflow result", included: true }), - Object.freeze({ icon: FIGMA_ASSET_PATHS_V1.personCircle, text: "Camera images stay on this device", included: false }), - Object.freeze({ icon: FIGMA_ASSET_PATHS_V1.personKey, text: "No passkey or World ID is created", included: false }), - ]), -}); - -const ACTION_LABELS: Readonly> = { - continue: "Continue", - cancel: "Cancel", - open_external_browser: "Open browser", - start_demo_authenticator: "Continue with demo authenticator", - continue_to_camera: "Continue to camera", - start_camera: "Start camera demo", - collect_frame_metadata: "Collect frame metadata", - try_again: "Try again", - continue_without_guidance: "Continue without guidance", - retake: "Retake", - retry_same_operation: "Retry", - query_status: "Check status", - return_to_rp: "Return to app", - close: "Close", -}; - -function labelFor( - action: AuthenticatorUiActionV1, - index: number, - copy: (typeof AUTHENTICATOR_UI_COPY_V1)[keyof typeof AUTHENTICATOR_UI_COPY_V1], - overrides?: Partial>, -): string { - if (overrides?.[action] !== undefined) return overrides[action]; - if (index === 0 && copy.primaryAction !== null) return copy.primaryAction; - if (action === "cancel" && copy.secondaryAction !== null) return copy.secondaryAction; - if (index === 1 && copy.secondaryAction !== null && action !== "query_status") { - return copy.secondaryAction; - } - return ACTION_LABELS[action]; -} - -export const AUTHENTICATOR_UI_ALERT_STATES_V1 = Object.freeze([ - "request_invalid", - "request_expired", - "request_return_target_invalid", - "request_rp_identity_unavailable", - "admission_handoff_failed", - "admission_update_required", - "admission_unsupported", - "admission_insecure", - "admission_framed", - "admission_private", - "admission_pwa", - "admission_unknown", - "demo_authenticator_non_completion", - "demo_authenticator_unavailable", - "demo_authenticator_interrupted", - "demo_authenticator_transport_failure", - "demo_authenticator_invalid_response", - "session_error", - "capture_guidance_adjust", - "capture_guidance_retake", - "capture_guidance_unavailable", - "capture_error", - "biometric_simulated_reject", - "biometric_simulated_retry", - "biometric_simulated_unavailable", - "issuance_simulated_reject", - "issuance_simulated_unavailable", - "return_callback_failed", - "flow_expired", - "flow_failed", -] as const satisfies readonly AuthenticatorUiStateIdV1[]); - -const ALERT_STATE_SET_V1 = new Set( - AUTHENTICATOR_UI_ALERT_STATES_V1, -); - -export function isAuthenticatorUiAlertStateV1( - state: AuthenticatorUiStateIdV1, -): boolean { - return ALERT_STATE_SET_V1.has(state); -} - -function RequestContentV1({ - heading, - body, - disclosure, -}: { - readonly heading: string; - readonly body: string; - readonly disclosure: FlowScreenDisclosureV1; -}) { - return
    -
    -
    - {disclosure.partnerAlt} -
    -
    -

    {heading}

    - {body ?

    {body}

    : null} -
    -
    -
    -
    -

    {disclosure.heading}

    - {disclosure.rows.map((row) => )} -
    -
    ; -} - -function DisclosureRowV1(props: { - readonly icon: string; - readonly marker: string; - readonly text: string; - readonly muted?: boolean; -}) { - return
    - - {props.text} - {props.muted -
    ; -} - -function CenteredContentV1(props: { - readonly heading: string; - readonly body: string; - readonly icon?: string; - readonly iconMuted?: boolean; - readonly pending?: boolean; - readonly partnerIcon?: FlowScreenHeroV1; - readonly detail?: string; - readonly notFigmaVerified?: boolean; -}) { - return
    - {props.notFigmaVerified ?

    Template view · Not Figma verified

    : null} - {props.partnerIcon ?
    - {props.partnerIcon.alt} -
    : null} - {props.icon && !props.partnerIcon ? : null} -
    -

    {props.heading}

    - {props.body ?

    {props.body}

    : null} - {props.detail ?

    {props.detail}

    : null} -
    -
    ; -} - -function CaptureContentV1(props: { - readonly snapshot: AuthenticatorUiSnapshotV1; - readonly heading: string; - readonly body: string; - readonly liveGuidance?: { - readonly code: string; - readonly text: string; - }; - readonly captureProgress?: number; -}) { - const isSampling = props.snapshot.visualSource === "figma_5132_134841"; - const isComplete = props.snapshot.visualSource === "figma_5132_134939"; - const staticRing = isComplete - ? FIGMA_ASSET_PATHS_V1.captureRingComplete - : isSampling - ? FIGMA_ASSET_PATHS_V1.captureRingSampling - : FIGMA_ASSET_PATHS_V1.captureRingReady; - const dynamicProgress = props.captureProgress === undefined - ? undefined - : Math.max(0, Math.min(1, props.captureProgress)); - const progressComplete = dynamicProgress === 1; - const progressStyle = dynamicProgress === undefined - ? undefined - : { - "--capture-progress-angle": `${dynamicProgress * 360}deg`, - } as CSSProperties; - return <> - -
    - {isComplete || progressComplete - ? - : null} -

    {progressComplete - ? "You’re all set" - : props.liveGuidance?.text ?? props.heading}

    -
    -

    {props.body}

    - ; -} - -export function FlowScreenV1({ - snapshot, - onAction, - videoRef, - canvasRef, - bannerText = AUTHENTICATOR_UI_STAGING_BANNER_V1, - copyOverride, - actionLabelOverrides, - actionsDisabled = false, - disclosure = STAGING_DISCLOSURE_V1, - heroOverride, - detailCopyOverrides, - showTemplateNotice = true, - liveCaptureGuidance, - captureProgress, - hiddenActions = [], -}: FlowScreenPropsV1) { - const headingRef = useRef(null); - const descriptor = SCREEN_RENDER_REGISTRY_V1[snapshot.state]; - const copy = Object.freeze({ - ...AUTHENTICATOR_UI_COPY_V1[snapshot.state], - ...copyOverride, - }); - const actions = AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[snapshot.state]; - const detail = snapshot.detailCode === null - ? undefined - : detailCopyOverrides?.[snapshot.detailCode] ?? - AUTHENTICATOR_UI_DETAIL_COPY_V1[snapshot.detailCode]; - const captureVisible = descriptor.family === "capture"; - const activeLiveGuidance = snapshot.state === "capture_preview" || - snapshot.state === "capture_sampling" - ? liveCaptureGuidance - : undefined; - - useEffect(() => { - const heading = document.querySelector("main h1"); - headingRef.current = heading; - heading?.focus({ preventScroll: true }); - }, [snapshot.state]); - - const centeredIcon = descriptor.family === "authenticator" - ? snapshot.state.includes("unavailable") || snapshot.state.includes("non_completion") - ? FIGMA_ASSET_PATHS_V1.personKeyDisabled - : FIGMA_ASSET_PATHS_V1.personKeyBlue - : descriptor.family === "camera_intro" - ? FIGMA_ASSET_PATHS_V1.selfieEmblem - : descriptor.family === "simulation_pending" - ? FIGMA_ASSET_PATHS_V1.simulationProgress - : descriptor.family === "verification_complete" - ? FIGMA_ASSET_PATHS_V1.verificationComplete - : descriptor.family === "success" - ? FIGMA_ASSET_PATHS_V1.successEmblem - : undefined; - const statusIllustration = descriptor.family === "simulation_pending" || - descriptor.family === "verification_complete" || - descriptor.family === "success"; - const alert = isAuthenticatorUiAlertStateV1(snapshot.state); - const hasTopCancel = actions.includes("cancel") && [ - "authenticator", - "camera_intro", - "capture", - "simulation_pending", - "verification_complete", - "success", - ].includes(descriptor.family); - const footerActions = (hasTopCancel - ? actions.filter((action) => action !== "cancel") - : actions).filter((action) => !hiddenActions.includes(action)); - - return
    - {bannerText ?

    {bannerText}

    : null} - {hasTopCancel ? : null} - -
    - - {captureVisible ? : null} -
    - -
    - {descriptor.family === "request" ? : null} - {descriptor.family !== "request" && descriptor.family !== "capture" ? : null} -
    - - {footerActions.length > 0 ? : null} -
    ; -} diff --git a/apps/authenticator/src/components/WalkthroughPanel.tsx b/apps/authenticator/src/components/WalkthroughPanel.tsx deleted file mode 100644 index 4cb0f07..0000000 --- a/apps/authenticator/src/components/WalkthroughPanel.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import type { AuthenticatorUiStateIdV1 } from "@clean-start/contracts"; -import type { - LivePasskeyStatusV1, - LivePrfCapabilityV1, -} from "../walkthrough/live-passkey"; -import type { WalkthroughCameraStatusV1 } from "../walkthrough/walkthrough-adapters"; - -export interface WalkthroughPanelPropsV1 { - readonly state: AuthenticatorUiStateIdV1; - readonly passkeyStatus: LivePasskeyStatusV1; - readonly prfCapability: LivePrfCapabilityV1; - readonly cameraStatus: WalkthroughCameraStatusV1; - readonly onRestart: () => void; -} - -function stepFor(state: AuthenticatorUiStateIdV1): number { - if (state.startsWith("request_")) return 1; - if (state.startsWith("admission_")) return 2; - if (state.startsWith("demo_authenticator_") || state === "session_creating") return 3; - if (state.startsWith("capture_") || state === "session_completing_authenticator") return 4; - if ( - state.startsWith("biometric_") || - state.startsWith("issuance_") || - state === "session_reconciling" || - state === "session_error" - ) return 5; - return 6; -} - -const PASSKEY_LABELS: Readonly> = Object.freeze({ - idle: "Ready to try", - requesting: "Browser prompt open", - created: "Created by browser", - unsupported: "Unavailable · simulator continued", - cancelled: "Not completed · simulator continued", - failed: "Failed safely · simulator continued", -}); - -const CAMERA_LABELS: Readonly> = Object.freeze({ - idle: "Waiting", - requesting: "Requesting browser camera", - live: "Live camera + on-device guidance", - synthetic_fallback: "Synthetic metadata fallback", - live_complete: "Live metadata submitted", - synthetic_complete: "Synthetic metadata submitted", - failed: "Stopped safely", -}); - -export function WalkthroughPanelV1(props: WalkthroughPanelPropsV1) { - return ; -} diff --git a/apps/authenticator/src/flow/controller.ts b/apps/authenticator/src/flow/controller.ts deleted file mode 100644 index ec3157a..0000000 --- a/apps/authenticator/src/flow/controller.ts +++ /dev/null @@ -1,571 +0,0 @@ -import type { - BrowserAdmissionDecisionV1, -} from "@clean-start/browser-admission"; -import { - AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, - AUTHENTICATOR_UI_INITIAL_EFFECTS_V1, - SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, - SIMULATOR_BROWSER_SESSION_ERROR_V0, - SIMULATOR_BROWSER_SESSION_VIEW_V0, - SIMULATOR_UI_BOOTSTRAP_V0, - dispatchAuthenticatorUiActionV1, - makeAuthenticatorUiEventV1, - makeAuthenticatorUiSnapshotV1, - matchesExpectedSimulatorBrowserDemoAuthenticatorReadyV0, - matchesExpectedSimulatorBrowserSessionViewV0, - projectSimulatorBrowserErrorToUiEventV1, - transitionAuthenticatorUiV1, - type AuthenticatorUiActionV1, - type AuthenticatorUiEffectV1, - type AuthenticatorUiEventTypeV1, - type AuthenticatorUiSnapshotV1, - type AuthenticatorUiTransitionV1, - type FrameBundleV0, - type SimulatorBrowserDemoAuthenticatorReadyV0, - type SimulatorBrowserSessionErrorV0, - type SimulatorBrowserSessionViewV0, - type SimulatorUiBootstrapV0, -} from "@clean-start/contracts"; -import type { BrowserAdmissionAdapterV1 } from "../adapters/browser-admission"; -import type { - BrowserCaptureAdapterV1, - BrowserCaptureCallbacksV1, -} from "../adapters/browser-capture"; -import type { AbortableSimulatorBrowserSessionPortV0 } from "../adapters/http-session"; -import { makeExplicitStagingCaptureEntryV0 } from "../adapters/staging-compatibility"; - -export interface AuthenticatorFlowControllerOptionsV1 { - readonly sessionPort: AbortableSimulatorBrowserSessionPortV0; - readonly admission: BrowserAdmissionAdapterV1; - readonly capture: BrowserCaptureAdapterV1; - readonly initialSnapshot?: AuthenticatorUiSnapshotV1; - readonly initialSession?: SimulatorBrowserSessionViewV0; - readonly closeLocally?: () => void; - readonly navigateReturned?: () => void; - readonly onEffect?: (effect: AuthenticatorUiEffectV1) => void; - readonly now?: () => Date; -} - -type SubscriberV1 = (snapshot: AuthenticatorUiSnapshotV1) => void; - -function randomId(prefix: string): string { - const bytes = crypto.getRandomValues(new Uint8Array(18)); - const encoded = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join(""); - return `${prefix}-${encoded}`; -} - -async function sha256Text(value: string): Promise { - const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value)); - return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join(""); -} - -function admissionEvent(decision: BrowserAdmissionDecisionV1): AuthenticatorUiEventTypeV1 { - if (decision.outcome === "eligible_candidate") { - return decision.browser === "chrome" - ? "admission_chrome_candidate" - : "admission_safari_candidate"; - } - if (decision.outcome === "ios_update_required") return "admission_update_required"; - if (decision.outcome === "embedded_browser_handoff") return "admission_handoff_required"; - if (decision.outcome === "context_not_top_level") return "admission_framed"; - if (decision.outcome === "insecure_context") return "admission_insecure"; - if (decision.outcome === "private_or_unknown_context") { - return decision.context === "installed_pwa" ? "admission_pwa" : "admission_private"; - } - if (decision.outcome === "unsupported" || decision.outcome === "uv_unavailable") { - return "admission_unsupported"; - } - return "admission_unknown"; -} - -export class AuthenticatorFlowControllerV1 { - private snapshotValue: AuthenticatorUiSnapshotV1; - private readonly subscribers = new Set(); - private readonly activeControllers = new Set(); - private readonly tasks = new Set>(); - private bootstrapValue?: SimulatorUiBootstrapV0; - private sessionValue?: SimulatorBrowserSessionViewV0; - private demoReadyValue?: SimulatorBrowserDemoAuthenticatorReadyV0; - private admissionValue?: BrowserAdmissionDecisionV1; - private artifactValue?: FrameBundleV0; - private nonceDigestValue?: string; - private captureNonceBase64Url?: string; - private createIdempotencyKey = randomId("create"); - private demoIdempotencyKey = randomId("demo"); - private captureIdempotencyKey = randomId("capture"); - private retryIdempotencyKey = randomId("retry"); - private retakesUsed = 0; - private started = false; - private readonly now: () => Date; - - constructor(private readonly options: AuthenticatorFlowControllerOptionsV1) { - this.now = options.now ?? (() => new Date()); - this.snapshotValue = options.initialSnapshot ?? makeAuthenticatorUiSnapshotV1({ - state: "request_checking", - visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1.request_checking, - }); - this.sessionValue = options.initialSession; - } - - get snapshot(): AuthenticatorUiSnapshotV1 { - return this.snapshotValue; - } - - subscribe(subscriber: SubscriberV1): () => void { - this.subscribers.add(subscriber); - try { - subscriber(this.snapshotValue); - } catch { - this.subscribers.delete(subscriber); - } - return () => this.subscribers.delete(subscriber); - } - - start(): void { - if (this.started) return; - this.started = true; - if (this.snapshotValue.state === "request_checking") { - this.launch(AUTHENTICATOR_UI_INITIAL_EFFECTS_V1); - } - } - - act(action: AuthenticatorUiActionV1): boolean { - if ( - action === "try_again" || - action === "retake" || - action === "continue_without_guidance" - ) this.retakesUsed += 1; - const transition = dispatchAuthenticatorUiActionV1(this.snapshotValue, action); - if (transition === null) return false; - this.apply(transition); - return true; - } - - interrupt(event: Extract): void { - this.emit(event); - } - - dispose(): void { - this.interrupt("component_unmounted"); - this.subscribers.clear(); - } - - async waitForIdle(): Promise { - while (this.tasks.size > 0) { - await Promise.allSettled([...this.tasks]); - } - } - - private emit( - event: AuthenticatorUiEventTypeV1, - fields: Partial<{ - detailCode: Parameters[0]["detailCode"]; - authoritativeSessionState: Parameters[0]["authoritativeSessionState"]; - rpPresentationId: Parameters[0]["rpPresentationId"]; - }> = {}, - ): boolean { - const transition = transitionAuthenticatorUiV1( - this.snapshotValue, - makeAuthenticatorUiEventV1({ event, ...fields }), - ); - if (transition === null) return false; - this.apply(transition); - return true; - } - - private apply(transition: AuthenticatorUiTransitionV1): void { - this.snapshotValue = transition.snapshot; - for (const subscriber of this.subscribers) { - try { - subscriber(this.snapshotValue); - } catch { - this.subscribers.delete(subscriber); - } - } - this.launch(transition.effects); - } - - private launch(effects: readonly AuthenticatorUiEffectV1[]): void { - if (effects.length === 0) return; - const task = this.runEffects(effects) - .catch(() => { - this.emit("fatal_error", { detailCode: "safe_internal_error" }); - }) - .finally(() => this.tasks.delete(task)); - this.tasks.add(task); - } - - private async runEffects(effects: readonly AuthenticatorUiEffectV1[]): Promise { - for (const effect of effects) { - this.options.onEffect?.(effect); - await this.runEffect(effect); - } - if ( - this.snapshotValue.state === "flow_cancelling" && - this.snapshotValue.authoritativeSessionState === null && - !effects.includes("cancel_session") - ) this.emit("local_cancel_complete"); - } - - private async abortable( - operation: (signal: AbortSignal) => Promise, - ): Promise { - const controller = new AbortController(); - this.activeControllers.add(controller); - try { - const result = await operation(controller.signal); - return controller.signal.aborted ? undefined : result; - } catch (cause) { - if (controller.signal.aborted) return undefined; - throw cause; - } finally { - this.activeControllers.delete(controller); - } - } - - private sessionFields(): { readonly sessionId: string; readonly browserHandle: string } | null { - return this.sessionValue === undefined ? null : { - sessionId: this.sessionValue.sessionId, - browserHandle: this.sessionValue.browserHandle, - }; - } - - private handleError(value: SimulatorBrowserSessionErrorV0): void { - if (value.reasonCode === "expired") { - this.emit("session_expired"); - return; - } - const projected = projectSimulatorBrowserErrorToUiEventV1(value); - if (projected === null) { - this.emit("fatal_error", { detailCode: "safe_internal_error" }); - return; - } - const transition = transitionAuthenticatorUiV1(this.snapshotValue, projected); - if (transition !== null) this.apply(transition); - } - - private async acceptSessionResult( - result: SimulatorBrowserSessionViewV0 | SimulatorBrowserSessionErrorV0, - prepareNonce = false, - ): Promise { - if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - this.handleError(result); - return; - } - if (result.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) { - this.emit("session_failed", { detailCode: "response_invalid" }); - return; - } - const expected = this.sessionValue === undefined - ? { sessionId: result.sessionId, browserHandle: result.browserHandle } - : { sessionId: this.sessionValue.sessionId, browserHandle: this.sessionValue.browserHandle }; - const validBinding = matchesExpectedSimulatorBrowserSessionViewV0(result, { - runtimeEnvironment: "staging", - ...expected, - now: this.now().toISOString(), - }); - if ( - !validBinding || - (this.sessionValue === undefined && - (result.state !== "created" || result.code !== "created")) - ) { - this.emit("session_failed", { detailCode: "response_invalid" }); - return; - } - if (result.state === "capture_ready") { - if ( - this.captureNonceBase64Url !== undefined && - this.captureNonceBase64Url !== result.nonceBase64Url - ) { - this.captureIdempotencyKey = randomId("capture"); - } - this.captureNonceBase64Url = result.nonceBase64Url; - } - this.sessionValue = result; - if (prepareNonce || result.state === "capture_ready") { - this.nonceDigestValue = await sha256Text(result.nonceBase64Url); - } - this.emit("authoritative_session", { authoritativeSessionState: result.state }); - } - - private async runEffect(effect: AuthenticatorUiEffectV1): Promise { - if (effect === "abort_active_effects") { - for (const controller of this.activeControllers) controller.abort(); - this.artifactValue = undefined; - this.nonceDigestValue = undefined; - return; - } - if (effect === "stop_capture") { - this.options.capture.stop(); - return; - } - if (effect === "clear_transient_media") { - this.options.capture.clearTransientMedia(); - return; - } - if (effect === "close_locally") { - this.options.closeLocally?.(); - return; - } - if (effect === "evaluate_quality" || effect === "collect_frame_metadata") { - this.options.capture.requestMetadataCollection(); - return; - } - if (effect === "validate_request") { - const result = await this.abortable((signal) => this.options.sessionPort.bootstrap(signal)); - if (result === undefined) return; - if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - this.handleError(result); - } else if (result.kind === SIMULATOR_UI_BOOTSTRAP_V0) { - this.bootstrapValue = result; - this.emit("request_accepted", { rpPresentationId: result.rpPresentationId }); - } else { - this.emit("fatal_error", { detailCode: "safe_internal_error" }); - } - return; - } - if (effect === "evaluate_admission") { - const result = await this.abortable((signal) => this.options.admission.evaluate(signal)); - if (result === undefined) return; - this.admissionValue = result; - this.emit(admissionEvent(result)); - return; - } - if (effect === "open_external_browser") { - try { - await this.abortable((signal) => this.options.admission.openExternalBrowser(signal)); - } catch { - this.emit("handoff_failed"); - } - return; - } - if (effect === "create_session") { - const result = await this.abortable((signal) => - this.options.sessionPort.createSession( - { idempotencyKey: this.createIdempotencyKey }, - signal, - )); - if (result !== undefined) await this.acceptSessionResult(result); - return; - } - if (effect === "begin_demo_authenticator") { - const fields = this.sessionFields(); - if (fields === null) { - this.emit("fatal_error", { detailCode: "safe_internal_error" }); - return; - } - const result = await this.abortable((signal) => - this.options.sessionPort.beginDemoAuthenticator({ - ...fields, - idempotencyKey: this.demoIdempotencyKey, - }, signal)); - if (result === undefined) return; - if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - this.handleError(result); - } else if ( - result.kind === SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0 && - matchesExpectedSimulatorBrowserDemoAuthenticatorReadyV0(result, { - runtimeEnvironment: "staging", - sessionId: fields.sessionId, - idempotencyKey: this.demoIdempotencyKey, - now: this.now().toISOString(), - }) && - this.sessionValue !== undefined && - Date.parse(result.expiresAt) <= Date.parse(this.sessionValue.expiresAt) - ) { - this.demoReadyValue = result; - this.emit("demo_authenticator_ready"); - } else { - this.emit("demo_authenticator_invalid_response"); - } - return; - } - if (effect === "complete_demo_authenticator") { - const fields = this.sessionFields(); - const ready = this.demoReadyValue; - if (fields === null || ready === undefined) { - this.emit("demo_authenticator_invalid_response"); - return; - } - const result = await this.abortable((signal) => - this.options.sessionPort.completeDemoAuthenticator({ - ...fields, - idempotencyKey: ready.idempotencyKey, - completionHandle: ready.completionHandle, - }, signal)); - if (result !== undefined) await this.acceptSessionResult(result); - return; - } - if (effect === "prepare_capture") { - const fields = this.sessionFields(); - if (fields === null) { - this.emit("session_failed", { detailCode: "invalid_state" }); - return; - } - const result = await this.abortable((signal) => - this.options.sessionPort.prepareCapture(fields, signal)); - if (result !== undefined) await this.acceptSessionResult(result, true); - return; - } - if (effect === "start_capture") { - this.startCapture(); - return; - } - if (effect === "submit_capture") { - const fields = this.sessionFields(); - const session = this.sessionValue; - const artifact = this.artifactValue; - if (fields === null || session === undefined || artifact === undefined) { - this.emit("session_failed", { detailCode: "invalid_state" }); - return; - } - const result = await this.abortable((signal) => - this.options.sessionPort.submitCapture({ - ...fields, - idempotencyKey: this.captureIdempotencyKey, - nonceBase64Url: session.nonceBase64Url, - frameBundle: artifact, - }, signal)); - if (result !== undefined) { - await this.acceptSessionResult(result); - if (result.kind === SIMULATOR_BROWSER_SESSION_VIEW_V0) this.artifactValue = undefined; - } - return; - } - if (effect === "retry_unavailable") { - const fields = this.sessionFields(); - if (fields === null) { - this.emit("session_failed", { detailCode: "invalid_state" }); - return; - } - const result = await this.abortable((signal) => - this.options.sessionPort.retryUnavailable({ - ...fields, - idempotencyKey: this.retryIdempotencyKey, - }, signal)); - if (result !== undefined) await this.acceptSessionResult(result); - return; - } - if (effect === "query_status") { - const fields = this.sessionFields(); - if (fields === null) { - this.emit("session_failed", { detailCode: "invalid_state" }); - return; - } - const result = await this.abortable((signal) => - this.options.sessionPort.getStatus(fields, signal)); - if (result !== undefined) await this.acceptSessionResult(result, true); - return; - } - if (effect === "cancel_session") { - const fields = this.sessionFields(); - if (fields === null) { - this.emit("local_cancel_complete"); - return; - } - const result = await this.abortable((signal) => - this.options.sessionPort.cancel(fields, signal)); - if (result !== undefined) { - await this.acceptSessionResult(result); - this.sessionValue = undefined; - this.demoReadyValue = undefined; - } - return; - } - if (effect === "return_to_rp") { - const fields = this.sessionFields(); - if (fields === null) { - this.emit("return_failed", { detailCode: "return_target_invalid" }); - return; - } - const result = await this.abortable((signal) => - this.options.sessionPort.returnToRp(fields, signal)); - if (result === undefined) return; - if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - this.handleError(result); - } else if (result.kind === SIMULATOR_BROWSER_RETURN_ACCEPTED_V0) { - try { - this.options.navigateReturned?.(); - this.emit("return_completed"); - } catch { - this.emit("return_failed", { detailCode: "navigation_failed" }); - } - } else { - this.emit("return_failed", { detailCode: "navigation_failed" }); - } - } - } - - private startCapture(): void { - const session = this.sessionValue; - const bootstrap = this.bootstrapValue; - const ready = this.demoReadyValue; - const admission = this.admissionValue; - const nonceDigest = this.nonceDigestValue; - if ( - session === undefined || - bootstrap === undefined || - ready === undefined || - admission === undefined || - nonceDigest === undefined - ) { - this.emit("capture_failed", { detailCode: "prf_not_ready" }); - return; - } - let entry; - try { - entry = makeExplicitStagingCaptureEntryV0({ - admission, - ready, - userActivated: true, - }); - } catch { - this.emit("capture_failed", { detailCode: "unsupported_context" }); - return; - } - - const callbacks: BrowserCaptureCallbacksV1 = { - onCaptureState: (state) => { - if (state === "acquiring") this.emit("capture_acquiring"); - else if (state === "awaiting_first_frame") this.emit("capture_preparing"); - else if (state === "preview") this.emit("capture_preview"); - else if (state === "artifact_ready") this.emit("capture_artifact_ready"); - else if (state === "cleaning_up") this.emit("cleanup_started"); - }, - onQuality: (result) => { - const reason = result.reasonCodes[0]; - if (result.action === "ready") this.emit("quality_ready"); - else if (result.action === "adjust" && reason !== undefined) { - this.emit("quality_adjust", { detailCode: reason }); - } else if (result.action === "retake") { - this.emit("quality_retake", { detailCode: "image_blurry" }); - } else if (reason !== undefined) { - this.emit("quality_unavailable", { detailCode: reason }); - } - }, - onArtifactReady: (artifact) => { this.artifactValue = artifact; }, - onFailure: (code) => { - if (code === "session_expired") this.emit("session_expired"); - else this.emit("capture_failed", { detailCode: code }); - }, - onComplete: () => { this.emit("cleanup_complete"); }, - }; - try { - this.options.capture.start({ - entry, - policy: session.capturePolicy, - qualityPolicy: bootstrap.qualityPolicy, - sessionId: session.sessionId, - accountPublicMaterialDigestSha256: - bootstrap.accountPublicMaterialDigestSha256, - nonceDigestSha256: nonceDigest, - retakesUsed: this.retakesUsed, - }, callbacks); - } catch { - this.emit("capture_failed", { detailCode: "unknown" }); - } - } -} diff --git a/apps/authenticator/src/flow/render-registry.ts b/apps/authenticator/src/flow/render-registry.ts deleted file mode 100644 index 60b21ac..0000000 --- a/apps/authenticator/src/flow/render-registry.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { - AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, - AUTHENTICATOR_UI_STATES_V1, - type AuthenticatorUiStateIdV1, - type AuthenticatorUiVisualSourceV1, -} from "@clean-start/contracts"; - -export type AuthenticatorScreenFamilyV1 = - | "request" - | "authenticator" - | "camera_intro" - | "capture" - | "simulation_pending" - | "verification_complete" - | "success" - | "generic"; - -export interface AuthenticatorScreenDescriptorV1 { - readonly family: AuthenticatorScreenFamilyV1; - readonly visualSource: AuthenticatorUiVisualSourceV1; -} - -function familyFor(visualSource: AuthenticatorUiVisualSourceV1): AuthenticatorScreenFamilyV1 { - if (visualSource === "figma_5132_134352") return "request"; - if (visualSource.startsWith("figma_5132_13439") || - visualSource === "figma_5132_134441" || - visualSource === "figma_5132_134488" || - visualSource === "figma_5132_134535" || - visualSource === "figma_5132_134582_external") return "authenticator"; - if (visualSource === "figma_5132_134643" || visualSource === "figma_5132_134692_external") { - return "camera_intro"; - } - if ( - visualSource === "figma_5132_134743" || - visualSource === "figma_5132_134841" || - visualSource === "figma_5132_134939" - ) return "capture"; - if (visualSource === "figma_5132_135038") return "simulation_pending"; - if (visualSource === "figma_5132_135071") return "verification_complete"; - if (visualSource === "figma_5132_135104") return "success"; - return "generic"; -} - -export const SCREEN_RENDER_REGISTRY_V1 = Object.freeze(Object.fromEntries( - AUTHENTICATOR_UI_STATES_V1.map((state) => { - const visualSource = AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[state]; - return [state, Object.freeze({ family: familyFor(visualSource), visualSource })]; - }), -) as Record); - -export const FIGMA_SCREEN_MATRIX_V1 = Object.freeze({ - verified: Object.freeze([ - "5132:134352", - "5132:134394", - "5132:134441", - "5132:134488", - "5132:134535", - "5132:134582", - "5132:134643", - "5132:134692", - "5132:134743", - "5132:134841", - "5132:134939", - "5132:135038", - "5132:135071", - "5132:135104", - "5132:135141", - ] as const), - // Every direct frame of section 5132:134348 now has exact design context. - notFigmaVerified: Object.freeze([] as const), - // Inspected but not rendered: the dark "face locked" capture variant. The - // verified base capture frames (134743/134841/134939) are white, and the app - // follows those. - verifiedNotRendered: Object.freeze(["5132:135141"] as const), -}); diff --git a/apps/authenticator/src/lib/async.ts b/apps/authenticator/src/lib/async.ts new file mode 100644 index 0000000..d36cedc --- /dev/null +++ b/apps/authenticator/src/lib/async.ts @@ -0,0 +1,21 @@ +/** WalletKit RPCs do not expose per-call signals. Callers terminate the worker on timeout. */ +export function abortable(operation: Promise, signal: AbortSignal): Promise { + return new Promise((resolve, reject) => { + const abort = () => reject(signal.reason); + signal.addEventListener("abort", abort, { once: true }); + operation.then(resolve, reject).finally(() => signal.removeEventListener("abort", abort)); + if (signal.aborted) abort(); + }); +} + +export function pause(ms: number, signal: AbortSignal): Promise { + return new Promise((resolve, reject) => { + const abort = () => { clearTimeout(timer); reject(signal.reason); }; + const timer = setTimeout(() => { + signal.removeEventListener("abort", abort); + resolve(); + }, ms); + signal.addEventListener("abort", abort, { once: true }); + if (signal.aborted) abort(); + }); +} diff --git a/apps/authenticator/src/lib/requests/bridge.ts b/apps/authenticator/src/lib/requests/bridge.ts new file mode 100644 index 0000000..6f5f0d4 --- /dev/null +++ b/apps/authenticator/src/lib/requests/bridge.ts @@ -0,0 +1,84 @@ +import { decodeBase64, type Connector } from './connector' + +function encode(bytes: Uint8Array): string { + let raw = '' + for (const byte of bytes) raw += String.fromCharCode(byte) + return btoa(raw) +} +export async function readBounded(response: Response, limit = 262144): Promise { + const reader = response.body?.getReader() + if (!reader) throw new Error('The bridge returned an empty response.') + const chunks: Uint8Array[] = [] + let size = 0 + try { + while (true) { + const { value, done } = await reader.read() + if (done) break + size += value.byteLength + if (size > limit) { + await reader.cancel() + throw new Error('The bridge response is too large.') + } + chunks.push(value) + } + } finally { + reader.releaseLock() + } + const bytes = new Uint8Array(size) + let offset = 0 + for (const chunk of chunks) { + bytes.set(chunk, offset) + offset += chunk.length + } + return new TextDecoder('utf-8', { fatal: true }).decode(bytes) +} +export async function openBridge(connector: Connector, signal: AbortSignal) { + const key = await crypto.subtle.importKey('raw', connector.key, 'AES-GCM', false, ['decrypt', 'encrypt']) + connector.key.fill(0) + const response = await fetch(`${connector.bridgeUrl}/request/${connector.requestId}`, { + signal: AbortSignal.any([signal, AbortSignal.timeout(15000)]), + credentials: 'omit', + referrerPolicy: 'no-referrer', + cache: 'no-store', + redirect: 'error', + }) + if (!response.ok) + throw new Error( + response.status === 404 + ? 'This request expired or was already consumed. Start a new request on the relying-party site.' + : `Bridge request fetch failed (HTTP ${response.status}).` + ) + const wrapper = JSON.parse(await readBounded(response)) as { iv?: unknown; payload?: unknown } + const iv = decodeBase64(wrapper.iv, 12) + const encrypted = decodeBase64(wrapper.payload, 196608) + if (iv.length !== 12 || encrypted.length < 16) throw new Error('Invalid encrypted bridge payload.') + let plaintext: ArrayBuffer + try { + plaintext = await crypto.subtle.decrypt({ name: 'AES-GCM', iv }, key, encrypted) + } catch { + throw new Error('Could not decrypt the request. The connector key may be invalid.') + } + const json = new TextDecoder('utf-8', { fatal: true }).decode(plaintext) + new Uint8Array(plaintext).fill(0) + return { + json, + async send(payload: unknown, signal: AbortSignal) { + const iv = crypto.getRandomValues(new Uint8Array(12)) + const encrypted = await crypto.subtle.encrypt( + { name: 'AES-GCM', iv }, + key, + new TextEncoder().encode(JSON.stringify(payload)) + ) + const response = await fetch(`${connector.bridgeUrl}/response/${connector.requestId}`, { + method: 'PUT', + headers: { 'content-type': 'application/json' }, + credentials: 'omit', + referrerPolicy: 'no-referrer', + redirect: 'error', + body: JSON.stringify({ iv: encode(iv), payload: encode(new Uint8Array(encrypted)) }), + signal: AbortSignal.any([signal, AbortSignal.timeout(15000)]), + }) + if (!response.ok) throw new Error(`Bridge response upload failed (HTTP ${response.status}).`) + }, + } +} diff --git a/apps/authenticator/src/lib/requests/connector.ts b/apps/authenticator/src/lib/requests/connector.ts new file mode 100644 index 0000000..67cdd9c --- /dev/null +++ b/apps/authenticator/src/lib/requests/connector.ts @@ -0,0 +1,57 @@ +export const BRIDGE_ORIGINS = ['https://bridge.worldcoin.org', 'https://staging-bridge.worldcoin.org'] +export type Connector = { requestId: string; key: Uint8Array; bridgeUrl: string; returnUrl?: string } + +export function decodeBase64(value: unknown, maxBytes: number): Uint8Array { + if ( + typeof value !== 'string' || + value.length > Math.ceil(maxBytes / 3) * 4 || + !/^[A-Za-z0-9+/]*={0,2}$/.test(value) + ) + throw new Error('Invalid bridge encoding.') + let raw: string + try { + raw = atob(value) + } catch { + throw new Error('Invalid bridge encoding.') + } + if (raw.length > maxBytes) throw new Error('Bridge payload is too large.') + return Uint8Array.from(raw, char => char.charCodeAt(0)) +} +export function returnUrl(value: string | null | undefined): string | undefined { + if (!value) return undefined + if (value.length > 2048) throw new Error('Return URL is too long.') + let url: URL + try { + url = new URL(value) + } catch { + throw new Error('Invalid return URL.') + } + if ( + url.username || + url.password || + !( + url.protocol === 'https:' || + (url.protocol === 'http:' && ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname)) + ) + ) + throw new Error('Return URL must use HTTPS or HTTP localhost.') + return url.href +} +export function parseConnector(href: string): Connector | null { + const params = new URL(href).searchParams + if (!params.has('i') && !params.has('k')) return null + for (const name of ['i', 'k', 'b', 't', 'return_to']) + if (params.getAll(name).length > 1) throw new Error('Duplicate connector parameters.') + const requestId = params.get('i') ?? '' + if ( + !/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(requestId) || + (params.has('t') && params.get('t') !== 'wld') + ) + throw new Error('Invalid World ID connector link.') + const key = decodeBase64(params.get('k'), 32) + if (key.byteLength !== 32) throw new Error('The connector needs a 32-byte bridge key.') + const bridgeUrl = (params.get('b') || BRIDGE_ORIGINS[0]).replace(/\/$/, '') + if (!BRIDGE_ORIGINS.includes(bridgeUrl)) + throw new Error('This authenticator only accepts the official World ID bridges.') + return { requestId, key, bridgeUrl, returnUrl: returnUrl(params.get('return_to')) } +} diff --git a/apps/authenticator/src/lib/requests/incoming-request.ts b/apps/authenticator/src/lib/requests/incoming-request.ts new file mode 100644 index 0000000..b41f368 --- /dev/null +++ b/apps/authenticator/src/lib/requests/incoming-request.ts @@ -0,0 +1,77 @@ +import { openBridge } from './bridge' +import type { WalletKit } from '../walletkit' +import { abortable } from '../async' +import { parseConnector, returnUrl } from './connector' +import { + credentialAvailability, + parsePayload, + validateSignature, + checkExpiry, + type ProofRequest, +} from './proof-request' + +export type IncomingRequest = { + proof: ProofRequest + label: string + appId?: string + actionLabel: string + returnUrl?: string + unsupportedReason?: string + validate: (signal: AbortSignal) => Promise + deliver: (proof: string, signal: AbortSignal) => Promise + cancel: (signal: AbortSignal) => Promise +} +export async function loadIncomingRequest( + href: string, + signal: AbortSignal, + progress: (message: string) => void +): Promise { + const connector = parseConnector(href) + if (!connector) return null + progress('Fetching the encrypted request from the World ID bridge…') + const bridge = await openBridge(connector, signal) + progress('Request decrypted. Checking staging metadata and signature…') + const payload = parsePayload(bridge.json) + await validateSignature(payload.proof_request, signal) + const callback = returnUrl(payload.return_to_url) ?? connector.returnUrl + // URL metadata cannot replace a different callback inside the encrypted request. + if (connector.returnUrl && callback !== connector.returnUrl) + throw new Error('Connector and encrypted request return URLs disagree.') + return { + proof: payload.proof_request, + label: payload.proof_request.rp_id, + appId: payload.app_id, + actionLabel: payload.action, + returnUrl: callback, + unsupportedReason: payload.require_user_presence + ? 'This request requires World App user presence verification. The web authenticator does not implement that check.' + : payload.identity_attributes?.length + ? 'Identity attribute attestation is not implemented by this web authenticator.' + : undefined, + validate: async signal => { + await validateSignature(payload.proof_request, signal) + }, + deliver: async (proof, signal) => { + const response = JSON.parse(proof) as { + id?: unknown + error?: unknown + responses?: unknown + nonce?: unknown + } + if ( + response.error || + !Array.isArray(response.responses) || + !response.responses.length || + response.id !== payload.proof_request.id + ) + throw new Error('WalletKit returned an error or mismatched proof response.') + checkExpiry(payload.proof_request) + await bridge.send({ proof_response: response }, signal) + }, + cancel: signal => bridge.send({ error_code: 'verification_rejected' }, signal), + } +} +export async function checkRequestCredentials(incoming: IncomingRequest, wallet: WalletKit, signal: AbortSignal) { + const records = await abortable(wallet.listCredentials(), AbortSignal.any([signal, AbortSignal.timeout(10000)])) + return credentialAvailability(incoming.proof, records) +} diff --git a/apps/authenticator/src/lib/requests/proof-request.ts b/apps/authenticator/src/lib/requests/proof-request.ts new file mode 100644 index 0000000..392f8aa --- /dev/null +++ b/apps/authenticator/src/lib/requests/proof-request.ts @@ -0,0 +1,201 @@ +import type { CredentialMetadata } from '../walletkit' +import { hexToBytes, keccak256, stringToHex, verifyMessage, type Hex } from 'viem' + +export type Requirement = { + identifier: string + issuer_schema_id: number + signal?: string | null + genesis_issued_at_min?: number | null + expires_at_min?: number | null +} +export type Constraint = string | { any: Constraint[] } | { all: Constraint[] } +export type ProofRequest = { + id: string + version: 1 + proof_type: 'uniqueness' + rp_id: string + oprf_key_id: string + nonce: Hex + signature: Hex + created_at: number + expires_at: number + action: Hex + session_id: null + proof_requests: Requirement[] + constraints?: Constraint | null +} +export type Payload = { + app_id: string + action: string + environment: 'staging' + proof_request: ProofRequest + require_user_presence?: boolean + identity_attributes?: unknown[] + return_to_url?: string +} +const uint = (value: unknown): value is number => typeof value === 'number' && Number.isSafeInteger(value) && value >= 0 +const record = (value: unknown): value is Record => + typeof value === 'object' && value !== null && !Array.isArray(value) +const hex = (value: unknown, size: number): value is Hex => + typeof value === 'string' && new RegExp(`^0x[0-9a-fA-F]{${size * 2}}$`).test(value) +export function checkExpiry(request: ProofRequest) { + const now = Math.floor(Date.now() / 1000) + if ( + request.created_at > now + 30 || + request.expires_at <= now || + request.expires_at <= request.created_at || + request.expires_at - request.created_at > 86400 + ) + throw new Error('The request is expired or its timestamp is invalid. Start a new request at the relying party.') +} +export function parsePayload(json: string): Payload { + if (json.length > 131072) throw new Error('Request payload is too large.') + const p: unknown = JSON.parse(json) + if (!record(p) || p.environment !== 'staging') throw new Error('This authenticator accepts staging requests only.') + const r = p.proof_request + if (!record(r) || r.version !== 1 || r.proof_type !== 'uniqueness' || r.session_id != null) + throw new Error('Only World ID 4.0 uniqueness requests are supported by this web authenticator.') + if ( + typeof p.app_id !== 'string' || + !/^app_[0-9a-f]{32}$/i.test(p.app_id) || + typeof p.action !== 'string' || + p.action.length > 1024 || + typeof r.id !== 'string' || + r.id.length > 128 || + !r.id || + typeof r.rp_id !== 'string' || + !/^rp_[0-9a-f]{1,16}$/i.test(r.rp_id) || + typeof r.oprf_key_id !== 'string' || + !/^0x[0-9a-f]{1,40}$/i.test(r.oprf_key_id) || + !hex(r.nonce, 32) || + !hex(r.signature, 65) || + !hex(r.action, 32) || + !uint(r.created_at) || + !uint(r.expires_at) + ) + throw new Error('Malformed World ID request metadata.') + if (BigInt(r.action) !== BigInt(keccak256(stringToHex(p.action))) >> BigInt(8)) + throw new Error('The displayed action does not match the signed action.') + if (!Array.isArray(r.proof_requests) || r.proof_requests.length < 1 || r.proof_requests.length > 32) + throw new Error('Invalid credential requirements.') + const ids = new Set() + for (const item of r.proof_requests) { + if ( + !record(item) || + typeof item.identifier !== 'string' || + !/^[a-zA-Z0-9_-]{1,80}$/.test(item.identifier) || + ids.has(item.identifier) || + !uint(item.issuer_schema_id) || + (item.signal != null && + (typeof item.signal !== 'string' || + !/^0x(?:[0-9a-f]{2})*$/i.test(item.signal) || + item.signal.length > 4098)) || + (item.genesis_issued_at_min != null && !uint(item.genesis_issued_at_min)) || + (item.expires_at_min != null && !uint(item.expires_at_min)) + ) + throw new Error('Malformed credential requirement.') + ids.add(item.identifier) + } + let count = 0 + const constraint = (node: unknown, depth = 0): void => { + if (++count > 64 || depth > 8) throw new Error('Credential constraints exceed supported limits.') + if (typeof node === 'string' && ids.has(node)) return + if (!record(node) || Object.keys(node).length !== 1) throw new Error('Invalid credential constraints.') + const children = node.any ?? node.all + if (!Array.isArray(children) || children.length < 1) throw new Error('Invalid credential constraints.') + children.forEach(child => constraint(child, depth + 1)) + } + if (r.constraints != null) constraint(r.constraints) + if (p.require_user_presence !== undefined && typeof p.require_user_presence !== 'boolean') + throw new Error('Invalid user presence requirement.') + if (p.identity_attributes != null && !Array.isArray(p.identity_attributes)) + throw new Error('Invalid identity attribute requirements.') + if (p.return_to_url !== undefined && typeof p.return_to_url !== 'string') throw new Error('Invalid return URL.') + const payload = p as unknown as Payload + checkExpiry(payload.proof_request) + return payload +} +export async function validateSignature(request: ProofRequest, signal: AbortSignal) { + checkExpiry(request) + const response = await fetch(`/api/staging-rp?id=${encodeURIComponent(request.rp_id)}`, { + signal: AbortSignal.any([signal, AbortSignal.timeout(15000)]), + cache: 'no-store', + }) + if (!response.ok) + throw new Error( + 'Could not validate this RP against the staging registry. It may be unregistered, inactive, or temporarily unavailable.' + ) + const rp = (await response.json()) as { signer: Hex; oprfKeyId: string } + if (!rp || !hex(rp.signer, 20) || typeof rp.oprfKeyId !== 'string' || !/^0x[0-9a-f]{1,40}$/i.test(rp.oprfKeyId)) throw new Error('Invalid staging RP registry response.') + if (BigInt(rp.oprfKeyId) !== BigInt(request.oprf_key_id)) + throw new Error('Request OPRF key does not match the registered RP.') + const message = new Uint8Array(81) + message[0] = 1 + message.set(hexToBytes(request.nonce), 1) + new DataView(message.buffer).setBigUint64(33, BigInt(request.created_at)) + new DataView(message.buffer).setBigUint64(41, BigInt(request.expires_at)) + message.set(hexToBytes(request.action), 49) + if (!(await verifyMessage({ address: rp.signer, message: { raw: message }, signature: request.signature }))) + throw new Error('The RP request signature is invalid.') +} +export function credentialRequirementsLabel(request: ProofRequest): string { + const names = new Map( + request.proof_requests.map(item => [ + item.identifier, + item.issuer_schema_id === 11 + ? 'Selfie Check' + : item.issuer_schema_id === 1 + ? 'Orb' + : `Schema ${item.issuer_schema_id}`, + ]) + ) + const describe = (node: Constraint): string => + typeof node === 'string' + ? (names.get(node) ?? node) + : 'any' in node + ? `(${node.any.map(describe).join(' or ')})` + : `(${node.all.map(describe).join(' and ')})` + return describe(request.constraints ?? { all: request.proof_requests.map(item => item.identifier) }) +} +export function credentialAvailability(request: ProofRequest, records: CredentialMetadata[]) { + const items = request.proof_requests.map(item => ({ + ...item, + available: records.some( + record => + record.issuerSchemaId === BigInt(item.issuer_schema_id) && + !record.isExpired && + record.expiresAt > BigInt(item.expires_at_min ?? request.created_at) && + record.genesisIssuedAt >= BigInt(item.genesis_issued_at_min ?? 0) + ), + })) + const matches = new Map(items.map(item => [item.identifier, item.available])) + const evaluate = (node: Constraint, available = matches): boolean => + typeof node === 'string' + ? available.get(node) === true + : 'any' in node + ? node.any.some(child => evaluate(child, available)) + : node.all.every(child => evaluate(child, available)) + const satisfies = (available: Map) => + request.constraints + ? evaluate(request.constraints, available) + : items.every(item => available.get(item.identifier) === true) + const satisfied = satisfies(matches) + const withSelfie = new Map(items.map(item => [item.identifier, item.available || item.issuer_schema_id === 11])) + // Possibility is not a choice: an OR branch must not silently select selfie enrollment. + const withoutSchema = (schema: number) => + satisfies(new Map(items.map(item => [item.identifier, item.issuer_schema_id !== schema]))) + const requiresSelfie = !withoutSchema(11) + const requiresOrb = !withoutSchema(1) + // An existing credential outside the RP's date bounds cannot be fixed by our demo issuer. + const canEnrollSelfie = + !satisfied && + !records.some(record => record.issuerSchemaId === BigInt(11) && !record.isExpired) && + satisfies(withSelfie) + return { + items, + satisfied, + requiresOrb, + canEnrollSelfie, + needsSelfieEnrollment: canEnrollSelfie && requiresSelfie, + } +} diff --git a/apps/authenticator/src/lib/requests/prove.ts b/apps/authenticator/src/lib/requests/prove.ts new file mode 100644 index 0000000..d1230d9 --- /dev/null +++ b/apps/authenticator/src/lib/requests/prove.ts @@ -0,0 +1,31 @@ +import { abortable } from "../async"; +import type { WalletKit } from "../walletkit"; +import { checkRequestCredentials, type IncomingRequest } from "./incoming-request"; +import { checkExpiry } from "./proof-request"; + +export async function createProof(incoming: IncomingRequest, wallet: WalletKit, signal: AbortSignal, progress: (message: string) => void): Promise { + const deadline = AbortSignal.any([signal, AbortSignal.timeout(120_000)]); + const terminate = () => wallet.terminate(); + deadline.addEventListener("abort", terminate, { once: true }); + try { + if (incoming.unsupportedReason) throw new Error(incoming.unsupportedReason); + await incoming.validate(deadline); + const available = await checkRequestCredentials(incoming, wallet, deadline); + if (!available.satisfied) throw new Error("Required credentials are missing."); + progress("Creating your proof with WalletKit…"); + // Preserve the RP's requirements, signals, dates and constraints verbatim. + const proof = await abortable(wallet.generateProof(JSON.stringify(incoming.proof)), deadline); + deadline.throwIfAborted(); + checkExpiry(incoming.proof); + const response = JSON.parse(proof) as { id?: unknown; error?: unknown; responses?: unknown }; + if (response.id !== incoming.proof.id || response.error || !Array.isArray(response.responses) || !response.responses.length) { + throw new Error("WalletKit returned an invalid proof response."); + } + return proof; + } catch (cause) { + wallet.terminate(); + throw new Error("Proof generation failed or timed out. Unlock to retry, or start a fresh request at the requesting app.", { cause }); + } finally { + deadline.removeEventListener("abort", terminate); + } +} diff --git a/apps/authenticator/src/lib/selfie-issuance.ts b/apps/authenticator/src/lib/selfie-issuance.ts new file mode 100644 index 0000000..85c7816 --- /dev/null +++ b/apps/authenticator/src/lib/selfie-issuance.ts @@ -0,0 +1,82 @@ +import { parse } from 'lossless-json' +import type { WalletKit } from './walletkit' +import { selfieResumeToken } from '../wallet/persistence' +import { readBounded } from './requests/bridge' +import { abortable } from './async' + +export class SelfieWalletTimeout extends Error {} + +export async function issueSelfieCredential( + wallet: WalletKit, + signal: AbortSignal, + progress: (message: string) => void +) { + const deadline = AbortSignal.any([signal, AbortSignal.timeout(300_000)]) + async function walletCall(promise: Promise): Promise { + const walletDeadline = AbortSignal.any([deadline, AbortSignal.timeout(90_000)]) + try { + return await abortable(promise, walletDeadline) + } catch (error) { + if (walletDeadline.aborted) { + wallet.terminate() + throw new SelfieWalletTimeout( + 'WalletKit timed out or was interrupted. Unlock again, then resume selfie issuance.' + ) + } + throw new Error('The encrypted wallet operation failed. Unlock again to resume issuance.', { cause: error }) + } + } + progress('Checking the encrypted vault for an active selfie credential…') + const existing = (await walletCall(wallet.listCredentials())).find( + record => record.issuerSchemaId === BigInt(11) && !record.isExpired + ) + if (existing) { + progress('An active selfie credential is already stored.') + return existing + } + progress('Preparing the schema-11 subject with WalletKit…') + const { sub, blindingFactor } = await walletCall(wallet.prepareCredential(BigInt(11))) + // The OPRF derives the subject/factor for this account and schema again on resume. + // Only an opaque issuer-operation capability is persisted, never the factor or seed. + const token = selfieResumeToken(sub) + progress('Preparing encrypted synthetic shares and staging identity authentication…') + for (;;) { + deadline.throwIfAborted() + const response = await fetch('/api/selfie-credential', { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ sub, token }), + signal: deadline, + }) + const text = await readBounded(response, 131_072) + if (text.length > 131_072) throw new Error('Selfie issuer response exceeded its size limit.') + const result = JSON.parse(text) + if (!response.ok) + throw new Error(typeof result.error === 'string' ? result.error : `Selfie issuer HTTP ${response.status}`) + if (result.status === 'pending') { + progress(result.stage) + await abortable(new Promise(resolve => setTimeout(resolve, 3000)), deadline) + continue + } + if (result.status !== 'issued' || typeof result.credential !== 'string') + throw new Error('Selfie issuance did not return a credential.') + progress('Staging issued the credential. Issuer signature and subject checked; storing in the vault…') + const bytes = Uint8Array.from(atob(result.credential), character => character.charCodeAt(0)) + const credential = parse(new TextDecoder().decode(bytes)) as { + sub?: unknown + issuer_schema_id?: unknown + expires_at?: unknown + } + if ( + !credential || + String(credential.sub).toLowerCase() !== sub.toLowerCase() || + String(credential.issuer_schema_id) !== '11' || + BigInt(String(credential.expires_at)) <= BigInt(Math.floor(Date.now() / 1000)) + ) + throw new Error('Issued selfie credential does not match this subject/schema or is expired.') + const stored = await walletCall(wallet.storeCredential(bytes, blindingFactor)) + if (stored.issuerSchemaId !== BigInt(11)) throw new Error('Unexpected stored credential schema.') + progress('Selfie credential stored in the encrypted vault. Synthetic staging enrollment complete.') + return stored + } +} diff --git a/apps/authenticator/src/lib/walletkit.ts b/apps/authenticator/src/lib/walletkit.ts new file mode 100644 index 0000000..66b8187 --- /dev/null +++ b/apps/authenticator/src/lib/walletkit.ts @@ -0,0 +1,169 @@ +import { + type Authenticator, + type CredentialStore, + type FieldElement, + type InitializingAuthenticator, + type InitializeOptions as WorkerOptions, + type WalletKit as PublishedWalletKit, +} from '@worldcoin/walletkit-web' +export type { RecoveryData, RegistrationStatus } from '@worldcoin/walletkit-web' +export type { CredentialRecord as CredentialMetadata } from '@worldcoin/walletkit-web' + +export interface InitializeOptions extends WorkerOptions { + databaseKey: Uint8Array + storageId: string + environment: 'staging' | 'production' + region: 'us' | 'eu' | 'ap' +} + +const nowSeconds = () => BigInt(Math.floor(Date.now() / 1000)) + +/** Owns the account session; all Rust objects remain in the published worker. */ +export class WalletKit { + private authenticator?: Authenticator + private registration?: InitializingAuthenticator + + constructor( + private readonly client: PublishedWalletKit, + private readonly store: CredentialStore, + private readonly environment: InitializeOptions['environment'], + private readonly region: InitializeOptions['region'] + ) {} + + terminate() { + this.client.terminate() + } + + async close() { + await this.client.close() + } + + recoveryDataFromSeed(seed: Uint8Array) { + return this.client.recoveryDataFromSeed(seed) + } + + async register(seed: Uint8Array) { + if (this.registration) throw new Error('Registration already started') + this.registration = await this.client.InitializingAuthenticator.registerWithDefaults( + seed, + undefined, + this.environment, + this.region, + undefined + ) + } + + pollRegistration() { + if (!this.registration) throw new Error('Start registration first') + return this.registration.pollStatus() + } + + async initializeAuthenticator(seed: Uint8Array, now = nowSeconds()) { + if (this.authenticator) throw new Error('Authenticator already initialized') + const artifacts = await this.client.EmbeddedZkArtifacts.new() + let authenticator: Authenticator | undefined + try { + authenticator = await this.client.Authenticator.initWithDefaults( + seed, + undefined, + this.environment, + this.region, + artifacts, + this.store + ) + await authenticator.initStorage(now) + this.authenticator = authenticator + } catch (error) { + authenticator?.free() + throw error + } finally { + artifacts.free() + } + } + + private currentAuthenticator() { + if (!this.authenticator) throw new Error('Initialize the authenticator first') + return this.authenticator + } + + listCredentials(now = nowSeconds()) { + this.currentAuthenticator() + return this.store.listCredentials(undefined, now) + } + + deleteCredential(id: bigint) { + this.currentAuthenticator() + return this.store.deleteCredential(id) + } + + async prepareCredential(issuerSchemaId: bigint) { + const authenticator = this.currentAuthenticator() + const factor = await authenticator.generateCredentialBlindingFactorRemote(issuerSchemaId) + let sub: FieldElement | undefined + try { + sub = await authenticator.computeCredentialSub(factor) + return { blindingFactor: await factor.toHexString(), sub: await sub.toHexString() } + } finally { + sub?.free() + factor.free() + } + } + + async storeCredential(serialized: Uint8Array, factor: string, now = nowSeconds()) { + const authenticator = this.currentAuthenticator() + const credential = await this.client.Credential.fromBytes(serialized) + let blindingFactor: FieldElement | undefined + let expectedSub: FieldElement | undefined + let actualSub: FieldElement | undefined + try { + blindingFactor = await this.client.FieldElement.tryFromHexString(factor) + expectedSub = await authenticator.computeCredentialSub(blindingFactor) + actualSub = await credential.sub() + if ((await expectedSub.toHexString()) !== (await actualSub.toHexString())) { + throw new Error('Credential subject does not match this authenticator') + } + const issuerSchemaId = await credential.issuerSchemaId() + const credentialId = await this.store.storeCredential( + credential, + blindingFactor, + await credential.expiresAt(), + undefined, + now + ) + return { credentialId, issuerSchemaId } + } finally { + actualSub?.free() + expectedSub?.free() + blindingFactor?.free() + credential.free() + } + } + + async generateProof(json: string, now = nowSeconds()) { + const authenticator = this.currentAuthenticator() + const request = await this.client.ProofRequest.fromJson(json) + try { + const response = await authenticator.generateProof(request, now) + try { + const result = JSON.parse(await response.toJson()) + for (const item of result.responses ?? []) { + if (String(item.issuer_schema_id) !== '11') continue + const credential = await this.store.fetchCredential(BigInt(11), now) + try { + const claims = await credential?.claimsHex() + if (!claims?.length) throw new Error('Selfie credential score is unavailable') + // Preserve schema-11 z-score disclosure; this does not assert user presence. + item.claims = [claims[0]] + } finally { + credential?.free() + } + } + return JSON.stringify(result) + } finally { + response.free() + } + } finally { + request.free() + } + } +} diff --git a/apps/authenticator/src/server/browser-session-service.server.ts b/apps/authenticator/src/server/browser-session-service.server.ts deleted file mode 100644 index 008eefa..0000000 --- a/apps/authenticator/src/server/browser-session-service.server.ts +++ /dev/null @@ -1,397 +0,0 @@ -import { - SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, - SIMULATOR_BROWSER_SESSION_ERROR_V0, - SIMULATOR_BROWSER_SESSION_PORT_V0, - SIMULATOR_BROWSER_SESSION_VIEW_V0, - SIMULATOR_UI_BOOTSTRAP_V0, - isBrowserIdempotentSessionFieldsV0, - isBrowserSessionFieldsV0, - isCompleteDemoAuthenticatorV0, - isCreateSimulatorBrowserSessionV0, - isSubmitSimulatorCaptureShapeV0, - type InjectedAuthenticatorResultV0, - type EnrollmentSessionStateV2, - type SimulatorBrowserDemoAuthenticatorResultV0, - type SimulatorBrowserBootstrapResultV0, - type SimulatorBrowserReturnResultV0, - type SimulatorBrowserSessionErrorCodeV0, - type SimulatorBrowserSessionOperationV0, - type SimulatorBrowserSessionPortV0, - type SimulatorBrowserSessionResultV0, - type SimulatorBrowserSessionViewV0, -} from "@clean-start/contracts"; -import { - GatewayErrorV0, - SessionGatewayV0, - sha256Text, - type CreateSessionResultV0, - type RequestContextV0, - type SessionStatusV0, - type SubmitCaptureResultV0, -} from "@clean-start/session-gateway"; -import { AUTHENTICATOR_APP_CONFIG } from "@clean-start/app-config"; -import { - STAGING_DEMO_AUTHENTICATOR_ERROR_V0, - STAGING_DEMO_AUTHENTICATOR_READY_V0, -} from "@clean-start/contracts"; -import { - StagingDemoAuthenticatorServiceV0, - makeInjectedAuthenticatorRequestV0, -} from "./demo-authenticator.server"; - -const FIXED_RP_REQUEST = Object.freeze({ - kind: "cs5_zoom_demo_request_v0", - presentationId: "zoom_demo", -}); - -const FIXED_CONTEXT: RequestContextV0 = Object.freeze({ - origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, - rpId: AUTHENTICATOR_APP_CONFIG.rpId, - authenticatedServerContext: Object.freeze({ kind: "server_selected_scenario_v0" }), -}); - -const ARTIFACT_SUMMARY = Object.freeze({ - kind: SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0, - biometricVerification: "not_performed", - uniqueness: "not_performed", - credentialClass: "not_selfie_check", - productionCredential: false, -} as const); - -const RETURN_TERMINAL_STATES = new Set([ - "simulated_reject", - "simulated_issuance_reject", - "simulated_credential_ready", - "cancelled", -] as const); - -function error( - operation: SimulatorBrowserSessionOperationV0, - reasonCode: SimulatorBrowserSessionErrorCodeV0, -): SimulatorBrowserSessionResultV0 & { readonly kind: typeof SIMULATOR_BROWSER_SESSION_ERROR_V0 } { - return Object.freeze({ - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - operation, - reasonCode, - }); -} - -function mapError( - operation: SimulatorBrowserSessionOperationV0, - value: unknown, -): ReturnType { - if (value instanceof GatewayErrorV0) return error(operation, value.code); - return error(operation, "response_invalid"); -} - -function isSafeCredentialResult( - result: SubmitCaptureResultV0, -): boolean { - return result.session.state !== "simulated_credential_ready" || - (result.credential?.claims.biometricVerification === "simulated_not_performed" && - result.credential.claims.uniqueness === "not_performed" && - result.credential.claims.credentialClass === "not_selfie_check"); -} - -export class RealSimulatorBrowserSessionServiceV0 implements SimulatorBrowserSessionPortV0 { - readonly #artifactReady = new Set(); - readonly #exitEligibleUntil = new Map(); - - constructor( - private readonly gateway: SessionGatewayV0, - private readonly demoAuthenticator: StagingDemoAuthenticatorServiceV0, - ) {} - - async bootstrap(): Promise { - const readiness = await this.gateway.readiness(); - if (!readiness.ready || !this.demoAuthenticator.readiness()) { - return error("bootstrap", "gateway_disabled"); - } - return Object.freeze({ - kind: SIMULATOR_UI_BOOTSTRAP_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - rpPresentationId: "zoom_demo", - accountPublicMaterialDigestSha256: - AUTHENTICATOR_APP_CONFIG.demoAccountPublicMaterialDigestSha256, - returnAction: "server_managed", - authenticator: Object.freeze({ - kind: "injected_demo_only", - webauthnPerformed: false, - prfEvaluated: false, - worldIdCreated: false, - }), - qualityPolicy: AUTHENTICATOR_APP_CONFIG.qualityPolicy, - }); - } - - async createSession(input: { readonly idempotencyKey: string }): Promise { - if (!isCreateSimulatorBrowserSessionV0(input)) return error("create_session", "invalid_request"); - try { - const result = await this.gateway.createSession({ - rpRequest: FIXED_RP_REQUEST, - accountId: AUTHENTICATOR_APP_CONFIG.demoAccountId, - accountPublicMaterialDigestSha256: - AUTHENTICATOR_APP_CONFIG.demoAccountPublicMaterialDigestSha256, - idempotencyKey: input.idempotencyKey, - }, FIXED_CONTEXT); - return this.project(result, result.browserHandle, result.capturePolicy); - } catch (cause) { - return mapError("create_session", cause); - } - } - - async beginDemoAuthenticator(input: { - readonly sessionId: string; - readonly browserHandle: string; - readonly idempotencyKey: string; - }): Promise { - if (!isBrowserIdempotentSessionFieldsV0(input)) { - return error("begin_demo_authenticator", "invalid_request"); - } - try { - const status = await this.gateway.getStatus({ - sessionId: input.sessionId, - browserHandle: input.browserHandle, - }, FIXED_CONTEXT); - if (status.session.state !== "created") { - return error("begin_demo_authenticator", "invalid_state"); - } - const requestId = `demo_req_${(await sha256Text(`${input.sessionId}\u0000${input.idempotencyKey}`)).slice(0, 32)}`; - const result = await this.demoAuthenticator.begin(makeInjectedAuthenticatorRequestV0({ - requestId, - sessionId: input.sessionId, - idempotencyKey: input.idempotencyKey, - accountPublicMaterialDigestSha256: status.session.accountPublicMaterialDigestSha256, - requestedAt: new Date().toISOString(), - expiresAt: status.session.expiresAt, - })); - return this.projectDemoResult(result, status.session.expiresAt); - } catch (cause) { - return mapError("begin_demo_authenticator", cause); - } - } - - async completeDemoAuthenticator(input: { - readonly sessionId: string; - readonly browserHandle: string; - readonly idempotencyKey: string; - readonly completionHandle: string; - }): Promise { - if (!isCompleteDemoAuthenticatorV0(input)) { - return error("complete_demo_authenticator", "invalid_request"); - } - try { - const current = await this.gateway.getStatus({ - sessionId: input.sessionId, - browserHandle: input.browserHandle, - }, FIXED_CONTEXT); - const ceremony = Object.freeze({ - kind: "staging_demo_completion_ceremony_v0" as const, - completionHandle: input.completionHandle, - sessionId: input.sessionId, - idempotencyKey: input.idempotencyKey, - accountPublicMaterialDigestSha256: - current.session.accountPublicMaterialDigestSha256, - }); - if (!(await this.demoAuthenticator.verifyCompletion(ceremony))) { - return error("complete_demo_authenticator", "binding_mismatch"); - } - const status = await this.gateway.completePasskey({ - sessionId: input.sessionId, - browserHandle: input.browserHandle, - idempotencyKey: input.idempotencyKey, - ceremony, - }, FIXED_CONTEXT); - return this.project(status, input.browserHandle); - } catch (cause) { - return mapError("complete_demo_authenticator", cause); - } - } - - async prepareCapture(input: { readonly sessionId: string; readonly browserHandle: string }): Promise { - if (!isBrowserSessionFieldsV0(input)) return error("prepare_capture", "invalid_request"); - try { - const result = await this.gateway.prepareCapture(input, FIXED_CONTEXT); - return this.project(result, input.browserHandle, result.capturePolicy); - } catch (cause) { - return mapError("prepare_capture", cause); - } - } - - async submitCapture(input: { - readonly sessionId: string; - readonly browserHandle: string; - readonly idempotencyKey: string; - readonly nonceBase64Url: string; - readonly frameBundle: Parameters[0]["frameBundle"]; - }): Promise { - if (!isSubmitSimulatorCaptureShapeV0(input)) { - return error("submit_capture", "invalid_request"); - } - try { - const result = await this.gateway.submitCapture(input, FIXED_CONTEXT); - if (!isSafeCredentialResult(result)) return error("submit_capture", "response_invalid"); - if (result.session.state === "simulated_credential_ready") { - this.#artifactReady.add(result.session.sessionId); - } - return this.project(result, input.browserHandle); - } catch (cause) { - return mapError("submit_capture", cause); - } - } - - async retryUnavailable(input: { - readonly sessionId: string; - readonly browserHandle: string; - readonly idempotencyKey: string; - }): Promise { - if (!isBrowserIdempotentSessionFieldsV0(input)) { - return error("retry_unavailable", "invalid_request"); - } - try { - const result = await this.gateway.retryUnavailable(input, FIXED_CONTEXT); - if (!isSafeCredentialResult(result)) return error("retry_unavailable", "response_invalid"); - if (result.session.state === "simulated_credential_ready") { - this.#artifactReady.add(result.session.sessionId); - } - return this.project(result, input.browserHandle); - } catch (cause) { - return mapError("retry_unavailable", cause); - } - } - - async getStatus(input: { readonly sessionId: string; readonly browserHandle: string }): Promise { - if (!isBrowserSessionFieldsV0(input)) return error("get_status", "invalid_request"); - try { - return this.project(await this.gateway.getStatus(input, FIXED_CONTEXT), input.browserHandle); - } catch (cause) { - return mapError("get_status", cause); - } - } - - async cancel(input: { readonly sessionId: string; readonly browserHandle: string }): Promise { - if (!isBrowserSessionFieldsV0(input)) return error("cancel", "invalid_request"); - try { - return this.project(await this.gateway.cancel(input, FIXED_CONTEXT), input.browserHandle); - } catch (cause) { - return mapError("cancel", cause); - } - } - - async returnToRp(input: { readonly sessionId: string; readonly browserHandle: string }): Promise { - if (!isBrowserSessionFieldsV0(input)) return error("return_to_rp", "invalid_request"); - try { - const status = await this.gateway.getStatus(input, FIXED_CONTEXT); - this.purgeExitEligibility(); - const serverObservedEarlyExit = status.session.state === "created" && - this.#exitEligibleUntil.get(status.session.sessionId) === status.session.expiresAt; - if ( - !RETURN_TERMINAL_STATES.has(status.session.state) && - !serverObservedEarlyExit - ) { - return error("return_to_rp", "invalid_state"); - } - return Object.freeze({ - kind: SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - action: "server_managed", - }); - } catch (cause) { - return mapError("return_to_rp", cause); - } - } - - private projectDemoResult( - result: InjectedAuthenticatorResultV0, - sessionExpiresAt: string, - ): SimulatorBrowserDemoAuthenticatorResultV0 { - if (result.kind === STAGING_DEMO_AUTHENTICATOR_READY_V0) { - return Object.freeze({ - kind: SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - sessionId: result.sessionId, - idempotencyKey: result.idempotencyKey, - completionHandle: result.completionHandle, - claims: result.claims, - expiresAt: result.expiresAt, - }); - } - const reasonCode = result.kind === STAGING_DEMO_AUTHENTICATOR_ERROR_V0 - ? result.reasonCode === "unavailable" - ? "demo_authenticator_unavailable" - : result.reasonCode === "interrupted" - ? "demo_authenticator_interrupted" - : result.reasonCode === "user_non_completion" - ? "user_non_completion" - : result.reasonCode === "transport_failure" - ? "network_unavailable" - : "response_invalid" - : "response_invalid"; - if ( - result.kind === STAGING_DEMO_AUTHENTICATOR_ERROR_V0 && - (result.reasonCode === "unavailable" || result.reasonCode === "invalid_response") - ) { - this.#exitEligibleUntil.set(result.sessionId, sessionExpiresAt); - } - return error("begin_demo_authenticator", reasonCode); - } - - private project( - result: SessionStatusV0 | CreateSessionResultV0 | SubmitCaptureResultV0, - browserHandle: string, - capturePolicy = Object.freeze({ - ...AUTHENTICATOR_APP_CONFIG.capturePolicy, - expiresAt: result.session.expiresAt, - }), - ): SimulatorBrowserSessionViewV0 { - if ( - result.session.state === "simulated_reject" || - result.session.state === "simulated_issuance_reject" || - result.session.state === "simulated_credential_ready" || - result.session.state === "cancelled" - ) { - this.#exitEligibleUntil.set(result.session.sessionId, result.session.expiresAt); - } - const artifactSummary = result.session.state === "simulated_credential_ready" && - this.#artifactReady.has(result.session.sessionId) - ? ARTIFACT_SUMMARY - : null; - return Object.freeze({ - kind: SIMULATOR_BROWSER_SESSION_VIEW_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - sessionId: result.session.sessionId, - browserHandle, - nonceBase64Url: result.session.nonceBase64Url, - state: result.session.state, - code: result.code, - retryable: result.retryable, - expiresAt: result.session.expiresAt, - capturePolicy, - artifactSummary, - }); - } - - private purgeExitEligibility(): void { - const nowMs = Date.now(); - for (const [sessionId, expiresAt] of this.#exitEligibleUntil) { - if (Date.parse(expiresAt) <= nowMs) this.#exitEligibleUntil.delete(sessionId); - } - } -} - -export { FIXED_CONTEXT as AUTHENTICATOR_GATEWAY_CONTEXT_V0, FIXED_RP_REQUEST as AUTHENTICATOR_FIXED_RP_REQUEST_V0 }; diff --git a/apps/authenticator/src/server/crypto.server.ts b/apps/authenticator/src/server/crypto.server.ts deleted file mode 100644 index eceec9d..0000000 --- a/apps/authenticator/src/server/crypto.server.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { - SIMULATION_ENVIRONMENT, - bytesToArrayBuffer, - bytesToBase64Url, - type StagingEd25519TrustRootV0, -} from "@clean-start/contracts"; - -export interface PurposeEd25519KeyV0 { - readonly keyId: string; - readonly audience: string; - readonly privateKey: CryptoKey; - readonly publicKey: CryptoKey; - readonly publicKeyRawBase64Url: string; - readonly publicKeyFingerprintHex: string; - readonly trustRoot: StagingEd25519TrustRootV0; - sign(bytes: Uint8Array): Promise; -} - -function hex(bytes: Uint8Array): string { - return Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join(""); -} - -export async function createPurposeEd25519KeyV0( - keyId: string, - audience: string, -): Promise { - const pair = await crypto.subtle.generateKey( - { name: "Ed25519" }, - true, - ["sign", "verify"], - ); - const publicBytes = new Uint8Array(await crypto.subtle.exportKey("raw", pair.publicKey)); - const publicKeyRawBase64Url = bytesToBase64Url(publicBytes); - const trustRoot: StagingEd25519TrustRootV0 = Object.freeze({ - environment: SIMULATION_ENVIRONMENT, - audience, - keyId, - publicKeyRawBase64Url, - }); - - return Object.freeze({ - keyId, - audience, - privateKey: pair.privateKey, - publicKey: pair.publicKey, - publicKeyRawBase64Url, - publicKeyFingerprintHex: hex(publicBytes), - trustRoot, - async sign(bytes: Uint8Array): Promise { - const signature = await crypto.subtle.sign( - { name: "Ed25519" }, - pair.privateKey, - bytesToArrayBuffer(bytes), - ); - return bytesToBase64Url(new Uint8Array(signature)); - }, - }); -} - -export async function createSessionHandleHmacKeyV0(): Promise { - return crypto.subtle.generateKey( - { name: "HMAC", hash: "SHA-256", length: 256 }, - false, - ["sign", "verify"], - ); -} - -export function assertPurposeKeySeparationV0( - keys: readonly PurposeEd25519KeyV0[], - handleKey: CryptoKey, -): void { - if ( - keys.length !== 5 || - new Set(keys.map((key) => key.keyId)).size !== 5 || - new Set(keys.map((key) => key.publicKeyFingerprintHex)).size !== 5 || - keys.some((key) => - key.privateKey.algorithm.name !== "Ed25519" || - !key.privateKey.usages.includes("sign") || - key.publicKey.algorithm.name !== "Ed25519" || - !key.publicKey.usages.includes("verify") - ) || - handleKey.algorithm.name !== "HMAC" || - handleKey.extractable || - !handleKey.usages.includes("sign") || - !handleKey.usages.includes("verify") - ) { - throw new TypeError("purpose_key_separation_failed"); - } -} diff --git a/apps/authenticator/src/server/demo-authenticator.server.ts b/apps/authenticator/src/server/demo-authenticator.server.ts deleted file mode 100644 index d017970..0000000 --- a/apps/authenticator/src/server/demo-authenticator.server.ts +++ /dev/null @@ -1,258 +0,0 @@ -import { - INJECTED_AUTHENTICATOR_PORT_V0, - INJECTED_AUTHENTICATOR_REQUEST_V0, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - STAGING_DEMO_AUTHENTICATOR_ERROR_V0, - STAGING_DEMO_AUTHENTICATOR_READY_V0, - base64UrlToBytes, - bytesToArrayBuffer, - bytesToBase64Url, - canonicalizeJsonV0, - isInjectedAuthenticatorRequestV0, - type InjectedAuthenticatorPortV0, - type InjectedAuthenticatorRequestV0, - type InjectedAuthenticatorResultV0, - type StagingDemoAuthenticatorReadyV0, -} from "@clean-start/contracts"; -import type { PurposeEd25519KeyV0 } from "./crypto.server"; - -const HANDLE_DOMAIN = "world-id-web-authenticator:demo-completion:v0"; - -interface CachedDemoResultV0 { - readonly sessionId: string; - readonly idempotencyKey: string; - readonly accountPublicMaterialDigestSha256: string; - readonly result: StagingDemoAuthenticatorReadyV0; -} - -export type StagingDemoAuthenticatorOutcomeV0 = - | "ready" - | "unavailable" - | "invalid_response"; - -export interface DemoCompletionCeremonyV0 { - readonly kind: "staging_demo_completion_ceremony_v0"; - readonly completionHandle: string; - readonly sessionId: string; - readonly idempotencyKey: string; - readonly accountPublicMaterialDigestSha256: string; -} - -function completionPreimage( - token: string, - fields: Omit, -): Uint8Array { - return new TextEncoder().encode(canonicalizeJsonV0({ - domain: HANDLE_DOMAIN, - kind: "staging_demo_completion_ceremony_v0", - token, - requestId: fields.requestId, - sessionId: fields.sessionId, - idempotencyKey: fields.idempotencyKey, - accountPublicMaterialDigestSha256: fields.accountPublicMaterialDigestSha256, - claims: fields.claims, - issuedAt: fields.issuedAt, - expiresAt: fields.expiresAt, - })); -} - -export class StagingDemoAuthenticatorServiceV0 implements InjectedAuthenticatorPortV0 { - readonly #byIdempotency = new Map(); - readonly #byHandle = new Map(); - - constructor( - private readonly key: PurposeEd25519KeyV0, - private readonly ttlMs: number, - private readonly now: () => Date, - private readonly forcedOutcome: StagingDemoAuthenticatorOutcomeV0 = "ready", - ) {} - - readiness(): boolean { - return this.key.privateKey.algorithm.name === "Ed25519" && - this.key.publicKey.algorithm.name === "Ed25519" && - this.key.keyId.length > 0 && - Number.isSafeInteger(this.ttlMs) && - this.ttlMs > 0; - } - - async begin(request: InjectedAuthenticatorRequestV0): Promise { - if (!isInjectedAuthenticatorRequestV0(request) || !this.readiness()) { - return Object.freeze({ - kind: STAGING_DEMO_AUTHENTICATOR_ERROR_V0, - version: INJECTED_AUTHENTICATOR_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - requestId: "invalid", - sessionId: "invalid", - idempotencyKey: "invalid", - reasonCode: "invalid_response", - }); - } - if (this.forcedOutcome !== "ready") { - return Object.freeze({ - kind: STAGING_DEMO_AUTHENTICATOR_ERROR_V0, - version: INJECTED_AUTHENTICATOR_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - requestId: request.requestId, - sessionId: request.sessionId, - idempotencyKey: request.idempotencyKey, - reasonCode: this.forcedOutcome, - }); - } - this.purgeExpired(); - const cacheKey = `${request.sessionId}\u0000${request.idempotencyKey}`; - const cached = this.#byIdempotency.get(cacheKey); - if (cached !== undefined) { - if (cached.accountPublicMaterialDigestSha256 !== request.accountPublicMaterialDigestSha256) { - return Object.freeze({ - kind: STAGING_DEMO_AUTHENTICATOR_ERROR_V0, - version: INJECTED_AUTHENTICATOR_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - requestId: request.requestId, - sessionId: request.sessionId, - idempotencyKey: request.idempotencyKey, - reasonCode: "invalid_response", - }); - } - return cached.result; - } - - const issuedAt = this.now(); - const expiresAtMs = Math.min( - Date.parse(request.expiresAt), - issuedAt.getTime() + this.ttlMs, - ); - if (expiresAtMs <= issuedAt.getTime()) { - return Object.freeze({ - kind: STAGING_DEMO_AUTHENTICATOR_ERROR_V0, - version: INJECTED_AUTHENTICATOR_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - requestId: request.requestId, - sessionId: request.sessionId, - idempotencyKey: request.idempotencyKey, - reasonCode: "interrupted", - }); - } - - const token = bytesToBase64Url(crypto.getRandomValues(new Uint8Array(24))); - const readyFields = Object.freeze({ - kind: STAGING_DEMO_AUTHENTICATOR_READY_V0, - version: INJECTED_AUTHENTICATOR_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - requestId: request.requestId, - sessionId: request.sessionId, - idempotencyKey: request.idempotencyKey, - accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, - claims: Object.freeze({ - webauthnPerformed: false, - prfEvaluated: false, - worldIdCreated: false, - }), - issuedAt: issuedAt.toISOString(), - expiresAt: new Date(expiresAtMs).toISOString(), - }); - const signature = await this.key.sign(completionPreimage(token, readyFields)); - const completionHandle = `${token}.${signature}`; - const result: StagingDemoAuthenticatorReadyV0 = Object.freeze({ - ...readyFields, - completionHandle, - }); - const entry = Object.freeze({ - sessionId: request.sessionId, - idempotencyKey: request.idempotencyKey, - accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, - result, - }); - this.#byIdempotency.set(cacheKey, entry); - this.#byHandle.set(completionHandle, entry); - return result; - } - - async verifyCompletion(input: { - readonly completionHandle: string; - readonly sessionId: string; - readonly idempotencyKey: string; - readonly accountPublicMaterialDigestSha256: string; - }): Promise { - this.purgeExpired(); - const entry = this.#byHandle.get(input.completionHandle); - if ( - entry === undefined || - entry.sessionId !== input.sessionId || - entry.idempotencyKey !== input.idempotencyKey || - entry.accountPublicMaterialDigestSha256 !== input.accountPublicMaterialDigestSha256 || - Date.parse(entry.result.expiresAt) <= this.now().getTime() - ) return false; - - const [token, signature, extra] = input.completionHandle.split("."); - if (token === undefined || signature === undefined || extra !== undefined) return false; - try { - return crypto.subtle.verify( - { name: "Ed25519" }, - this.key.publicKey, - bytesToArrayBuffer(base64UrlToBytes(signature)), - bytesToArrayBuffer(completionPreimage(token, { - kind: entry.result.kind, - version: entry.result.version, - mode: entry.result.mode, - environment: entry.result.environment, - requestId: entry.result.requestId, - sessionId: entry.result.sessionId, - idempotencyKey: entry.result.idempotencyKey, - accountPublicMaterialDigestSha256: - entry.result.accountPublicMaterialDigestSha256, - claims: entry.result.claims, - issuedAt: entry.result.issuedAt, - expiresAt: entry.result.expiresAt, - })), - ); - } catch { - return false; - } - } - - private purgeExpired(): void { - const nowMs = this.now().getTime(); - for (const [cacheKey, entry] of this.#byIdempotency) { - if (Date.parse(entry.result.expiresAt) > nowMs) continue; - this.#byIdempotency.delete(cacheKey); - this.#byHandle.delete(entry.result.completionHandle); - } - } -} - -export function isDemoCompletionCeremonyV0(value: unknown): value is DemoCompletionCeremonyV0 { - return typeof value === "object" && - value !== null && - !Array.isArray(value) && - Object.keys(value).sort().join(",") === - "accountPublicMaterialDigestSha256,completionHandle,idempotencyKey,kind,sessionId" && - (value as { readonly kind?: unknown }).kind === "staging_demo_completion_ceremony_v0" && - typeof (value as { readonly completionHandle?: unknown }).completionHandle === "string" && - typeof (value as { readonly sessionId?: unknown }).sessionId === "string" && - typeof (value as { readonly idempotencyKey?: unknown }).idempotencyKey === "string" && - typeof (value as { readonly accountPublicMaterialDigestSha256?: unknown }) - .accountPublicMaterialDigestSha256 === "string"; -} - -export function makeInjectedAuthenticatorRequestV0(input: { - readonly requestId: string; - readonly sessionId: string; - readonly idempotencyKey: string; - readonly accountPublicMaterialDigestSha256: string; - readonly requestedAt: string; - readonly expiresAt: string; -}): InjectedAuthenticatorRequestV0 { - return Object.freeze({ - kind: INJECTED_AUTHENTICATOR_REQUEST_V0, - version: INJECTED_AUTHENTICATOR_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - ...input, - }); -} diff --git a/apps/authenticator/src/server/http.server.ts b/apps/authenticator/src/server/http.server.ts index c4b91ea..8cd4cc6 100644 --- a/apps/authenticator/src/server/http.server.ts +++ b/apps/authenticator/src/server/http.server.ts @@ -1,25 +1,9 @@ import { resolve, relative, sep } from "node:path"; -import { - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - SIMULATOR_BROWSER_SESSION_ERROR_V0, - SIMULATOR_BROWSER_SESSION_PORT_V0, - isBrowserIdempotentSessionFieldsV0, - isBrowserSessionFieldsV0, - isCompleteDemoAuthenticatorV0, - isCreateSimulatorBrowserSessionV0, - isSubmitSimulatorCaptureShapeV0, - type SimulatorBrowserSessionErrorCodeV0, - type SimulatorBrowserSessionOperationV0, - type SimulatorBrowserSessionPortV0, -} from "@clean-start/contracts"; -import { - AUTHENTICATOR_APP_CONFIG, - AUTHENTICATOR_APP_SECURITY_HEADERS_V0, -} from "@clean-start/app-config"; +import { AUTHENTICATOR_APP_SECURITY_HEADERS_V0, allowsSyntheticIssuance } from "../../../../config/authenticator-app-v0"; +import { POST as issueSelfie } from "./selfie-credential.server"; +import { GET as lookupRp } from "./staging-rp.server"; -const API_PREFIX = "/api/v0/"; -const DEFAULT_STATIC_ROOT = resolve(import.meta.dir, "../../dist"); +const DEFAULT_STATIC_ROOT = resolve(process.cwd(), "apps/authenticator/dist"); const DEFAULT_MEDIAPIPE_ROOT = resolve( process.cwd(), "node_modules/@mediapipe/tasks-vision/wasm", @@ -39,148 +23,6 @@ function headers(contentType?: string): Headers { return result; } -function errorBody( - operation: SimulatorBrowserSessionOperationV0, - reasonCode: SimulatorBrowserSessionErrorCodeV0, -) { - return Object.freeze({ - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - operation, - reasonCode, - }); -} - -function json(value: unknown, status = 200): Response { - return new Response(JSON.stringify(value), { - status, - headers: headers("application/json; charset=utf-8"), - }); -} - -function statusForReason(reasonCode: SimulatorBrowserSessionErrorCodeV0): number { - if (reasonCode === "origin_forbidden") return 403; - if (reasonCode === "unauthorized") return 401; - if (reasonCode === "not_found") return 404; - if (reasonCode === "expired") return 410; - if (reasonCode === "body_too_large") return 413; - if (reasonCode === "resource_busy") return 429; - if ( - reasonCode === "invalid_state" || - reasonCode === "binding_mismatch" || - reasonCode === "replay_rejected" - ) return 409; - if (reasonCode === "gateway_disabled") return 503; - return 400; -} - -function operationForPath(pathname: string): SimulatorBrowserSessionOperationV0 { - const operations: Readonly> = { - "/api/v0/bootstrap": "bootstrap", - "/api/v0/session/create": "create_session", - "/api/v0/session/demo/begin": "begin_demo_authenticator", - "/api/v0/session/demo/complete": "complete_demo_authenticator", - "/api/v0/session/capture/prepare": "prepare_capture", - "/api/v0/session/capture/submit": "submit_capture", - "/api/v0/session/retry": "retry_unavailable", - "/api/v0/session/status": "get_status", - "/api/v0/session/cancel": "cancel", - "/api/v0/session/return": "return_to_rp", - }; - return operations[pathname] ?? "bootstrap"; -} - -function isEmptyRecord(value: unknown): boolean { - return typeof value === "object" && - value !== null && - !Array.isArray(value) && - Object.keys(value).length === 0; -} - -async function readStrictJson( - request: Request, - operation: SimulatorBrowserSessionOperationV0, -): Promise<{ readonly value: unknown } | { readonly response: Response }> { - if (request.method !== "POST") { - return { response: json(errorBody(operation, "invalid_request"), 405) }; - } - const origin = request.headers.get("origin"); - if ( - origin !== AUTHENTICATOR_APP_CONFIG.publicOrigin && - origin !== AUTHENTICATOR_APP_CONFIG.localWalkthroughOrigin - ) { - return { response: json(errorBody(operation, "origin_forbidden"), 403) }; - } - const contentType = request.headers.get("content-type")?.split(";", 1)[0]?.trim(); - if (contentType !== "application/json") { - return { response: json(errorBody(operation, "invalid_request"), 415) }; - } - const declaredLength = Number(request.headers.get("content-length")); - if ( - Number.isFinite(declaredLength) && - declaredLength > AUTHENTICATOR_APP_CONFIG.maxRequestBodyBytes - ) { - return { response: json(errorBody(operation, "body_too_large"), 413) }; - } - let bytes: ArrayBuffer; - try { - bytes = await request.arrayBuffer(); - } catch { - return { response: json(errorBody(operation, "invalid_request"), 400) }; - } - if (bytes.byteLength > AUTHENTICATOR_APP_CONFIG.maxRequestBodyBytes) { - return { response: json(errorBody(operation, "body_too_large"), 413) }; - } - try { - return { value: JSON.parse(new TextDecoder().decode(bytes)) as unknown }; - } catch { - return { response: json(errorBody(operation, "invalid_request"), 400) }; - } -} - -async function dispatchApi( - browserPort: SimulatorBrowserSessionPortV0, - request: Request, - pathname: string, -): Promise { - const operation = operationForPath(pathname); - const parsed = await readStrictJson(request, operation); - if ("response" in parsed) return parsed.response; - const value = parsed.value; - - let result; - if (pathname === "/api/v0/bootstrap" && isEmptyRecord(value)) { - result = await browserPort.bootstrap(); - } else if (pathname === "/api/v0/session/create" && isCreateSimulatorBrowserSessionV0(value)) { - result = await browserPort.createSession(value); - } else if (pathname === "/api/v0/session/demo/begin" && isBrowserIdempotentSessionFieldsV0(value)) { - result = await browserPort.beginDemoAuthenticator(value); - } else if (pathname === "/api/v0/session/demo/complete" && isCompleteDemoAuthenticatorV0(value)) { - result = await browserPort.completeDemoAuthenticator(value); - } else if (pathname === "/api/v0/session/capture/prepare" && isBrowserSessionFieldsV0(value)) { - result = await browserPort.prepareCapture(value); - } else if (pathname === "/api/v0/session/capture/submit" && isSubmitSimulatorCaptureShapeV0(value)) { - result = await browserPort.submitCapture(value); - } else if (pathname === "/api/v0/session/retry" && isBrowserIdempotentSessionFieldsV0(value)) { - result = await browserPort.retryUnavailable(value); - } else if (pathname === "/api/v0/session/status" && isBrowserSessionFieldsV0(value)) { - result = await browserPort.getStatus(value); - } else if (pathname === "/api/v0/session/cancel" && isBrowserSessionFieldsV0(value)) { - result = await browserPort.cancel(value); - } else if (pathname === "/api/v0/session/return" && isBrowserSessionFieldsV0(value)) { - result = await browserPort.returnToRp(value); - } else { - return json(errorBody(operation, "invalid_request"), 400); - } - - if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - return json(result, statusForReason(result.reasonCode)); - } - return json(result); -} - function contentType(pathname: string): string { if (pathname.endsWith(".html")) return "text/html; charset=utf-8"; if (pathname.endsWith(".js")) return "text/javascript; charset=utf-8"; @@ -223,7 +65,7 @@ async function serveStatic(pathname: string, staticRoot: string): Promise Promise { +export function createAuthenticatorHttpHandler(options: { staticRoot?: string; mediapipeRoot?: string } = {}) { const staticRoot = resolve(options.staticRoot ?? DEFAULT_STATIC_ROOT); const mediapipeRoot = resolve(options.mediapipeRoot ?? DEFAULT_MEDIAPIPE_ROOT); return async (request: Request): Promise => { const url = new URL(request.url); - if (url.pathname.startsWith(API_PREFIX)) { - const known = new Set([ - "/api/v0/bootstrap", - "/api/v0/session/create", - "/api/v0/session/demo/begin", - "/api/v0/session/demo/complete", - "/api/v0/session/capture/prepare", - "/api/v0/session/capture/submit", - "/api/v0/session/retry", - "/api/v0/session/status", - "/api/v0/session/cancel", - "/api/v0/session/return", - ]); - if (!known.has(url.pathname)) { - return json(errorBody("bootstrap", "not_found"), 404); - } - try { - return await dispatchApi(browserPort, request, url.pathname); - } catch { - return json(errorBody(operationForPath(url.pathname), "response_invalid"), 500); - } - } - if (request.method !== "GET" && request.method !== "HEAD") { - return new Response("Not found", { status: 404, headers: headers("text/plain; charset=utf-8") }); - } - if (url.pathname.startsWith("/mediapipe/")) { - return serveMediapipeRuntime(url.pathname, mediapipeRoot); + let response: Response; + if (url.pathname === "/api/capabilities" && request.method === "GET") { + const probe = new Request(request.url, { headers: { origin: url.origin } }); + response = Response.json({ environment: "staging", syntheticSelfieIssuance: allowsSyntheticIssuance(probe) }); + } else if (url.pathname === "/api/staging-rp" && request.method === "GET") { + response = await lookupRp(request); + } else if (url.pathname === "/api/selfie-credential" && request.method === "POST") { + response = allowsSyntheticIssuance(request) + ? await issueSelfie(request) + : Response.json({ error: "Synthetic staging issuance is available only on the local authenticator." }, { status: 403 }); + } else if (url.pathname.startsWith("/api/")) { + response = Response.json({ error: "Not found" }, { status: 404 }); + } else if (request.method !== "GET" && request.method !== "HEAD") { + response = new Response("Method not allowed", { status: 405 }); + } else if (url.pathname.startsWith("/mediapipe/")) { + response = await serveMediapipeRuntime(url.pathname, mediapipeRoot); + } else { + response = await serveStatic(url.pathname, staticRoot); } - return serveStatic(url.pathname, staticRoot); + for (const [name, value] of Object.entries(AUTHENTICATOR_APP_SECURITY_HEADERS_V0)) response.headers.set(name, value); + return request.method === "HEAD" ? new Response(null, { status: response.status, headers: response.headers }) : response; }; } diff --git a/apps/authenticator/src/server/main.ts b/apps/authenticator/src/server/main.ts index c87885c..fec24e1 100644 --- a/apps/authenticator/src/server/main.ts +++ b/apps/authenticator/src/server/main.ts @@ -1,3 +1,10 @@ -import { startAuthenticatorServerV0 } from "./start.server"; +import { AUTHENTICATOR_APP_CONFIG } from "../../../../config/authenticator-app-v0"; +import { createAuthenticatorHttpHandler } from "./http.server"; -await startAuthenticatorServerV0(); +Bun.serve({ + hostname: AUTHENTICATOR_APP_CONFIG.host, + port: AUTHENTICATOR_APP_CONFIG.port, + maxRequestBodySize: 1024, + idleTimeout: 180, + fetch: createAuthenticatorHttpHandler(), +}); diff --git a/apps/authenticator/src/server/runtime.server.ts b/apps/authenticator/src/server/runtime.server.ts deleted file mode 100644 index 7109ca8..0000000 --- a/apps/authenticator/src/server/runtime.server.ts +++ /dev/null @@ -1,234 +0,0 @@ -import { - BIOMETRIC_SIMULATOR_AUDIENCE_V0, - SIMULATED_STAGING_AUDIENCE_V0, - STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, - canonicalizeJsonV0, - type BiometricSimulationScenarioV0, - type IssuanceSimulationScenarioV0, -} from "@clean-start/contracts"; -import { - SessionGatewayV0, - sha256Text, - type BrowserCeremonyVerifierV0, - type RpRequestVerifierV0, - type ServerScenarioSelectorV0, -} from "@clean-start/session-gateway"; -import { SimulatedBiometricVerifierV0 } from "@clean-start/simulated-biometric-verifier"; -import { SimulatedStagingIssuerV0 } from "@clean-start/simulated-staging-issuer"; -import { AUTHENTICATOR_APP_CONFIG } from "@clean-start/app-config"; -import { RealSimulatorBrowserSessionServiceV0 } from "./browser-session-service.server"; -import { - StagingDemoAuthenticatorServiceV0, - isDemoCompletionCeremonyV0, - type StagingDemoAuthenticatorOutcomeV0, -} from "./demo-authenticator.server"; -import { - assertPurposeKeySeparationV0, - createPurposeEd25519KeyV0, - createSessionHandleHmacKeyV0, -} from "./crypto.server"; - -export const AUTHENTICATOR_SERVER_TEST_CONFIGURATION_V0 = - "authenticator_server_test_configuration_v0" as const; -export const DEMO_COMPLETION_AUDIENCE_V0 = - "world_id_web_authenticator_demo_completion_staging" as const; - -export interface AuthenticatorServerTestConfigurationV0 { - readonly kind: typeof AUTHENTICATOR_SERVER_TEST_CONFIGURATION_V0; - readonly biometricScenario: BiometricSimulationScenarioV0; - readonly issuanceScenario: IssuanceSimulationScenarioV0; - readonly demoAuthenticatorOutcome?: StagingDemoAuthenticatorOutcomeV0; -} - -export interface AuthenticatorServerRuntimeV0 { - readonly browserPort: RealSimulatorBrowserSessionServiceV0; - readonly keyReadiness: { - readonly ed25519PublicFingerprints: readonly string[]; - readonly handleKeyAlgorithm: "HMAC"; - }; -} - -function isServerTestConfigurationV0( - value: unknown, -): value is AuthenticatorServerTestConfigurationV0 { - if (typeof value !== "object" || value === null || Array.isArray(value)) return false; - const keys = Object.keys(value).sort().join(","); - return (keys === "biometricScenario,issuanceScenario,kind" || - keys === "biometricScenario,demoAuthenticatorOutcome,issuanceScenario,kind") && - (value as { readonly kind?: unknown }).kind === AUTHENTICATOR_SERVER_TEST_CONFIGURATION_V0 && - ["happy_path", "spoof_reject", "capture_retry", "dependency_unavailable"].includes( - String((value as { readonly biometricScenario?: unknown }).biometricScenario), - ) && - ["issue_success", "issue_reject", "issue_unavailable"].includes( - String((value as { readonly issuanceScenario?: unknown }).issuanceScenario), - ) && - (!("demoAuthenticatorOutcome" in value) || - ["ready", "unavailable", "invalid_response"].includes( - String((value as { readonly demoAuthenticatorOutcome?: unknown }) - .demoAuthenticatorOutcome), - )); -} - -export async function createAuthenticatorServerRuntimeV0( - options: { readonly testConfiguration?: AuthenticatorServerTestConfigurationV0 } = {}, -): Promise { - if ( - options.testConfiguration !== undefined && - !isServerTestConfigurationV0(options.testConfiguration) - ) { - throw new TypeError("invalid_server_test_configuration_v0"); - } - const biometricScenario = options.testConfiguration?.biometricScenario ?? - AUTHENTICATOR_APP_CONFIG.defaultBiometricScenario; - const issuanceScenario = options.testConfiguration?.issuanceScenario ?? - AUTHENTICATOR_APP_CONFIG.defaultIssuanceScenario; - - const [ - biometricRequestKey, - biometricReceiptKey, - issuanceRequestKey, - simulatedCredentialKey, - demoCompletionKey, - handleKey, - ] = await Promise.all([ - createPurposeEd25519KeyV0( - AUTHENTICATOR_APP_CONFIG.purposeKeyIds.biometricRequest, - BIOMETRIC_SIMULATOR_AUDIENCE_V0, - ), - createPurposeEd25519KeyV0( - AUTHENTICATOR_APP_CONFIG.purposeKeyIds.biometricReceipt, - BIOMETRIC_SIMULATOR_AUDIENCE_V0, - ), - createPurposeEd25519KeyV0( - AUTHENTICATOR_APP_CONFIG.purposeKeyIds.issuanceRequest, - STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, - ), - createPurposeEd25519KeyV0( - AUTHENTICATOR_APP_CONFIG.purposeKeyIds.simulatedCredential, - SIMULATED_STAGING_AUDIENCE_V0, - ), - createPurposeEd25519KeyV0( - AUTHENTICATOR_APP_CONFIG.purposeKeyIds.demoCompletion, - DEMO_COMPLETION_AUDIENCE_V0, - ), - createSessionHandleHmacKeyV0(), - ]); - const purposeKeys = Object.freeze([ - biometricRequestKey, - biometricReceiptKey, - issuanceRequestKey, - simulatedCredentialKey, - demoCompletionKey, - ]); - assertPurposeKeySeparationV0(purposeKeys, handleKey); - - const now = (): Date => new Date(); - const demoAuthenticator = new StagingDemoAuthenticatorServiceV0( - demoCompletionKey, - AUTHENTICATOR_APP_CONFIG.demoCompletionTtlMs, - now, - options.testConfiguration?.demoAuthenticatorOutcome ?? "ready", - ); - - const biometricVerifier = new SimulatedBiometricVerifierV0({ - runtimeEnvironment: "staging", - gatewayTrustRoot: biometricRequestKey.trustRoot, - receiptSigner: { - environment: "staging", - audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, - keyId: biometricReceiptKey.keyId, - privateKey: biometricReceiptKey.privateKey, - }, - simulatorVersion: AUTHENTICATOR_APP_CONFIG.biometricSimulatorVersion, - receiptTtlMs: AUTHENTICATOR_APP_CONFIG.biometricReceiptTtlMs, - maxCacheEntries: AUTHENTICATOR_APP_CONFIG.biometricCacheEntries, - allowedSyntheticFixtureIds: AUTHENTICATOR_APP_CONFIG.allowedSyntheticFixtureIds, - now, - }); - const stagingIssuer = new SimulatedStagingIssuerV0({ - runtimeEnvironment: "staging", - gatewayTrustRoot: issuanceRequestKey.trustRoot, - biometricReceiptTrustRoot: biometricReceiptKey.trustRoot, - credentialSigner: { - environment: "staging", - audience: SIMULATED_STAGING_AUDIENCE_V0, - keyId: simulatedCredentialKey.keyId, - privateKey: simulatedCredentialKey.privateKey, - }, - credentialTtlMs: AUTHENTICATOR_APP_CONFIG.stagingCredentialTtlMs, - maxCacheEntries: AUTHENTICATOR_APP_CONFIG.issuanceCacheEntries, - now, - }); - - const rpRequestVerifier: RpRequestVerifierV0 = { - async verify(request, context) { - if ( - context.origin !== AUTHENTICATOR_APP_CONFIG.publicOrigin || - context.rpId !== AUTHENTICATOR_APP_CONFIG.rpId || - typeof request !== "object" || - request === null || - Array.isArray(request) || - canonicalizeJsonV0(request) !== canonicalizeJsonV0({ - kind: "cs5_zoom_demo_request_v0", - presentationId: "zoom_demo", - }) - ) return null; - return Object.freeze({ - rpId: AUTHENTICATOR_APP_CONFIG.rpId, - origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, - returnTarget: "/returned", - requestDigestSha256: await sha256Text(canonicalizeJsonV0(request)), - }); - }, - }; - const ceremonyVerifier: BrowserCeremonyVerifierV0 = { - async verify(ceremony, expected) { - return isDemoCompletionCeremonyV0(ceremony) && - ceremony.sessionId === expected.sessionId && - ceremony.accountPublicMaterialDigestSha256 === - expected.accountPublicMaterialDigestSha256 && - demoAuthenticator.verifyCompletion(ceremony); - }, - }; - const scenarioSelector: ServerScenarioSelectorV0 = { - async select(_input) { - return Object.freeze({ biometric: biometricScenario, issuance: issuanceScenario }); - }, - }; - - const gateway = new SessionGatewayV0({ - runtimeEnvironment: AUTHENTICATOR_APP_CONFIG.runtimeEnvironment, - enabled: AUTHENTICATOR_APP_CONFIG.gatewayEnabled, - sessionTtlMs: AUTHENTICATOR_APP_CONFIG.sessionTtlMs, - maxRequestBodyBytes: AUTHENTICATOR_APP_CONFIG.maxRequestBodyBytes, - maxConcurrentOperations: AUTHENTICATOR_APP_CONFIG.maxConcurrentOperations, - simulatorTimeoutMs: AUTHENTICATOR_APP_CONFIG.simulatorTimeoutMs, - capturePolicy: AUTHENTICATOR_APP_CONFIG.capturePolicy, - allowedSyntheticFixtureIds: AUTHENTICATOR_APP_CONFIG.allowedSyntheticFixtureIds, - handleKey, - rpRequestVerifier, - ceremonyVerifier, - scenarioSelector, - biometricRequestSigner: biometricRequestKey, - issuanceRequestSigner: issuanceRequestKey, - biometricReceiptTrustRoot: biometricReceiptKey.trustRoot, - simulatedCredentialTrustRoot: simulatedCredentialKey.trustRoot, - biometricClient: biometricVerifier, - issuanceClient: stagingIssuer, - clock: { now }, - }); - const readiness = await gateway.readiness(); - if (!readiness.ready || !demoAuthenticator.readiness()) { - throw new TypeError("authenticator_server_not_ready"); - } - - return Object.freeze({ - browserPort: new RealSimulatorBrowserSessionServiceV0(gateway, demoAuthenticator), - keyReadiness: Object.freeze({ - ed25519PublicFingerprints: Object.freeze( - purposeKeys.map((key) => key.publicKeyFingerprintHex), - ), - handleKeyAlgorithm: "HMAC" as const, - }), - }); -} diff --git a/apps/authenticator/src/server/selfie-credential.server.ts b/apps/authenticator/src/server/selfie-credential.server.ts new file mode 100644 index 0000000..e540678 --- /dev/null +++ b/apps/authenticator/src/server/selfie-credential.server.ts @@ -0,0 +1,57 @@ +import { EnrollmentError, issueOrPollSelfie } from './selfie-issuer.server' + +export async function POST(request: Request) { + const url = new URL(request.url) + if (!['localhost', '127.0.0.1', '[::1]'].includes(url.hostname) || request.headers.get('origin') !== url.origin) + return Response.json( + { error: 'Synthetic staging issuance is available only from this localhost authenticator.' }, + { status: 403 } + ) + if (request.headers.get('content-type')?.split(';')[0].trim() !== 'application/json') + return Response.json({ error: 'Expected JSON.' }, { status: 415 }) + let body: { sub: string; token: string } + try { + const reader = request.body?.getReader() + if (!reader) throw new Error('Missing body') + let text = '' + try { + for (;;) { + const { done, value } = await reader.read() + if (done) break + text += new TextDecoder().decode(value) + if (text.length > 1024) { + await reader.cancel() + throw new Error('Body too large') + } + } + } finally { + reader.releaseLock() + } + body = JSON.parse(text) + if (!body || typeof body.sub !== 'string' || typeof body.token !== 'string' || !/^0x[0-9a-f]{64}$/.test(body.sub) || !/^[0-9a-f]{64}$/.test(body.token)) + throw new Error('Invalid input') + } catch { + return Response.json({ error: 'Expected a schema-11 subject and resume token.' }, { status: 400 }) + } + try { + const result = await issueOrPollSelfie( + body.sub, + body.token, + AbortSignal.any([request.signal, AbortSignal.timeout(170_000)]) + ) + return Response.json(result, { headers: { 'Cache-Control': 'no-store' } }) + } catch (error) { + const status = error instanceof EnrollmentError ? error.status : 502 + // eslint-disable-next-line no-console -- Operational failure; no request or identity material. + console.warn('staging_selfie_issuance_failed', { status, operation: 'issue_or_poll' }) + return Response.json( + { + error: + error instanceof EnrollmentError + ? error.message + : 'Staging enrollment could not complete. Retry resumes the saved operation without enrolling again.', + }, + { status, headers: { 'Cache-Control': 'no-store' } } + ) + } +} diff --git a/apps/authenticator/src/server/selfie-issuer.server.ts b/apps/authenticator/src/server/selfie-issuer.server.ts new file mode 100644 index 0000000..7718b77 --- /dev/null +++ b/apps/authenticator/src/server/selfie-issuer.server.ts @@ -0,0 +1,298 @@ +import { join } from 'node:path' +import { homedir } from 'node:os' +import { constants } from 'node:fs' +import { execFile } from 'node:child_process' +import { createPublicClient, http, parseAbi } from 'viem' +import { createHash, randomBytes, randomUUID } from 'node:crypto' +import { access, mkdir, readFile, rename, writeFile } from 'node:fs/promises' + +const FACE = 'https://app.stage.face.worldcoin.org' +const UA = 'WorldApp/1.0.0 Oxide/1.0.0 iOS' +const HELPER = process.env.STAGING_FACE_HELPER ?? join(process.cwd(), 'services/staging-issuance/face-enrollment-helper/target/debug/staging-face-crypto') +const ROOT = process.env.STAGING_SELFIE_STATE_DIR ?? join(homedir(), '.local/state/web-authenticator/synthetic-selfie-issuance') +const VERIFIER = '0x703a6316c975DEabF30b637c155edD53e24657DB' +const client = createPublicClient({ + transport: http('https://worldchain-mainnet.g.alchemy.com/public', { timeout: 20_000, retryCount: 0 }), +}) +const abi = parseAbi([ + 'function getCredentialSchemaIssuerRegistry() view returns (address)', + 'function issuerSchemaIdToPubkey(uint64) view returns ((uint256 x, uint256 y))', +]) + +type Operation = { + version: 1 + commitmentEncoding?: 'hex' + sub: string + tokenHash: string + seed: string + captureId: string + phase: 'prepared' | 'submitting' | 'submitted' | 'rejected' + rejection?: number +} +export class EnrollmentError extends Error { + constructor( + message: string, + public status = 502 + ) { + super(message) + } +} + +// Bound local cryptographic work. Persisted submission state also prevents a +// restarted process from re-enrolling an operation with an unknown outcome. +let busy = false +const hash = (value: string) => createHash('sha256').update(value).digest('hex') + +async function cryptoHelper(input: object, signal: AbortSignal): Promise { + signal.throwIfAborted() + return new Promise((resolve, reject) => { + const child = execFile(HELPER, [], { timeout: 90_000, maxBuffer: 262_144, signal }, (error, stdout) => { + if (error) return reject(new EnrollmentError('The local staging cryptography helper failed or timed out.')) + try { + resolve(JSON.parse(stdout) as T) + } catch { + reject(new EnrollmentError('The staging cryptography helper returned an invalid response.')) + } + }) + // Secrets travel over stdin, never process arguments or logs. + child.stdin?.on('error', () => { + /* execFile reports process/pipe failure through its callback. */ + }) + child.stdin?.end(JSON.stringify(input)) + }) +} + +async function boundedText(response: Response, limit: number): Promise { + if (!response.body) throw new EnrollmentError('Staging returned an empty response.') + const reader = response.body.getReader() + const chunks: Uint8Array[] = [] + let length = 0 + try { + for (;;) { + const { done, value } = await reader.read() + if (done) return Buffer.concat(chunks).toString('utf8') + length += value.length + if (length > limit) { + await reader.cancel() + throw new EnrollmentError('Staging response exceeded its size limit.') + } + chunks.push(value) + } + } finally { + reader.releaseLock() + } +} +async function remote(path: string, init: RequestInit, signal: AbortSignal) { + return fetch(path, { + ...init, + cache: 'no-store', + redirect: 'error', + signal: AbortSignal.any([signal, AbortSignal.timeout(20_000)]), + }) +} +async function auth(operation: Operation, kind: 'getidentity' | 'usercentricenrollment', signal: AbortSignal) { + const result = await cryptoHelper<{ identityCommitment: string; header: string }>( + { + operation: 'authenticate', + seed: operation.seed, + kind, + }, + signal + ) + if (!/^0x[0-9a-f]{64}$/.test(result.identityCommitment)) + throw new EnrollmentError( + 'The enrollment helper returned an invalid identity commitment. Rebuild it before retrying.', + 503 + ) + return result +} +async function save(path: string, operation: Operation) { + const temporary = `${path}.${randomUUID()}.tmp` + await writeFile(temporary, JSON.stringify(operation), { mode: 0o600, flag: 'wx' }) + await rename(temporary, path) +} + +export async function issueOrPollSelfie(sub: string, token: string, signal: AbortSignal) { + if (busy) throw new EnrollmentError('A staging enrollment operation is already running. Try again shortly.', 409) + busy = true + try { + try { + await access(HELPER, constants.X_OK) + } catch { + throw new EnrollmentError( + 'Build the local staging helper with bun run build:selfie-helper before issuing.', + 503 + ) + } + await mkdir(ROOT, { recursive: true, mode: 0o700 }) + const path = join(ROOT, `${hash(sub)}.json`) + let operation: Operation + try { + operation = JSON.parse(await readFile(path, 'utf8')) as Operation + if (operation.version !== 1 || operation.sub !== sub || operation.tokenHash !== hash(token)) + throw new EnrollmentError( + 'An enrollment already exists for this subject, but its resume token is unavailable. No new enrollment was submitted.', + 409 + ) + } catch (error) { + if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error + operation = { + version: 1, + commitmentEncoding: 'hex', + sub, + tokenHash: hash(token), + seed: randomBytes(32).toString('hex'), + captureId: randomUUID(), + phase: 'prepared', + } + await save(path, operation) + } + // The original helper sent decimal idComm, which the handler rejects + // before storing enrollment. Only that explicit 400 can be retried after + // this encoding fix; ambiguous submissions remain poll-only. + if (!operation.commitmentEncoding && operation.phase === 'rejected' && operation.rejection === 400) { + operation.commitmentEncoding = 'hex' + operation.phase = 'prepared' + delete operation.rejection + await save(path, operation) + } + if (operation.phase === 'rejected') + throw new EnrollmentError( + `Staging rejected this enrollment (HTTP ${operation.rejection}). It will not be resubmitted.`, + 422 + ) + if (operation.phase === 'prepared') { + operation.commitmentEncoding = 'hex' + const keys = await Promise.all( + [0, 1, 2].map(async index => { + const response = await remote( + `https://pki-face-ampc-stage.worldcoin.dev/public-key-${index}`, + {}, + signal + ) + if (!response.ok) { + await response.body?.cancel() + throw new EnrollmentError(`Staging share-key download failed (HTTP ${response.status}).`) + } + return boundedText(response, 1024) + }) + ) + const { shares } = await cryptoHelper<{ shares: string[] }>( + { operation: 'shares', public_keys: keys }, + signal + ) + if (shares.length !== 3 || shares.some(share => typeof share !== 'string' || share.length > 16_384)) + throw new EnrollmentError('Invalid encrypted shares.') + const proof = await auth(operation, 'usercentricenrollment', signal) + const body = new FormData() + const fields = { + capture_id: operation.captureId, + timestamp: Math.floor(Date.now() / 1000).toString(), + face_embedding_shares_0: shares[0], + face_embedding_shares_1: shares[1], + face_embedding_shares_2: shares[2], + face_embedding_version: '2.0.0', + face_embedding_type: 'ghostfacenet_flipped_mean', + face_embedding_inference_backend: 'face-engine', + pcp_version: '2.5', + sub, + // Orb Tools staging fixture: no recoverable PCP and no attested hash binding. + associated_data_hash: `0x${randomBytes(31).toString('hex').padStart(64, '0')}`, + } + for (const [key, value] of Object.entries(fields)) body.set(key, value) + signal.throwIfAborted() + operation.phase = 'submitting' + await save(path, operation) + const response = await remote( + `${FACE}/api/v1/identity?idComm=${encodeURIComponent(proof.identityCommitment)}`, + { + method: 'PUT', + body, + headers: { + 'user-agent': UA, + 'x-zkp-proof': proof.header, + 'integrity-token': 'staging-test-token', + 'integrity-signature': 'staging-test-token', + }, + }, + signal + ) + await response.body?.cancel() + if (!response.ok) { + if (response.status >= 400 && response.status < 500 && ![408, 409, 429].includes(response.status)) { + operation.phase = 'rejected' + operation.rejection = response.status + await save(path, operation) + } + throw new EnrollmentError( + operation.phase === 'rejected' + ? `Staging rejected the enrollment request (HTTP ${response.status}). No credential was issued; the request needs correcting before another submission.` + : `Staging enrollment returned HTTP ${response.status}. Retry checks the saved operation; it does not submit again.`, + operation.phase === 'rejected' ? 422 : 502 + ) + } + operation.phase = 'submitted' + await save(path, operation) + return { status: 'pending' as const, stage: 'Enrollment submitted. Waiting for staging issuance…' } + } + const proof = await auth(operation, 'getidentity', signal) + const response = await remote( + `${FACE}/api/v1/identity?idComm=${encodeURIComponent(proof.identityCommitment)}`, + { headers: { 'user-agent': UA, 'x-zkp-proof': proof.header } }, + signal + ) + if (!response.ok) { + await response.body?.cancel() + throw new EnrollmentError( + `Staging enrollment status failed (HTTP ${response.status}). Retry resumes the same operation.` + ) + } + const result = JSON.parse(await boundedText(response, 131_072)) + const enrollment = result.enrollment_status + if (!enrollment || enrollment.capture_id !== operation.captureId) + return { + status: 'pending' as const, + stage: 'Waiting for this capture. No duplicate enrollment will be submitted.', + } + if (['ENROLLMENT_FAILED', 'ENROLLMENT_NOT_UNIQUE'].includes(enrollment.status)) + throw new EnrollmentError( + `Staging enrollment finished with ${enrollment.status}. No credential was stored.`, + 422 + ) + if (enrollment.status === 'ENROLLMENT_IN_PROGRESS') + return { status: 'pending' as const, stage: 'Staging is processing the synthetic enrollment…' } + if ( + enrollment.status !== 'ENROLLMENT_UNIQUE_SUCCESSFUL' || + typeof enrollment.credential !== 'string' || + !/^[A-Za-z0-9+/]+={0,2}$/.test(enrollment.credential) || + enrollment.credential.length > 90_000 + ) + throw new EnrollmentError('Staging returned an invalid credential issuance response.') + if ((await client.getChainId()) !== 480) throw new EnrollmentError('Unexpected staging verifier chain.') + const registry = await client.readContract({ + address: VERIFIER, + abi, + functionName: 'getCredentialSchemaIssuerRegistry', + }) + const key = await client.readContract({ + address: registry, + abi, + functionName: 'issuerSchemaIdToPubkey', + args: [BigInt(11)], + }) + const verification = await cryptoHelper<{ verified: boolean }>( + { + operation: 'verify', + credential: enrollment.credential, + sub, + public_key: [key.x.toString(), key.y.toString()], + }, + signal + ) + if (verification.verified !== true) + throw new EnrollmentError('Staging credential signature verification failed.') + return { status: 'issued' as const, credential: enrollment.credential } + } finally { + busy = false + } +} diff --git a/apps/authenticator/src/server/staging-rp.server.ts b/apps/authenticator/src/server/staging-rp.server.ts new file mode 100644 index 0000000..f894191 --- /dev/null +++ b/apps/authenticator/src/server/staging-rp.server.ts @@ -0,0 +1,32 @@ +import { createPublicClient, http, parseAbi } from 'viem' + +// World ID protocol staging deployment on World Chain (chain 480). +const registry = '0x37d2462fE7B4a07987263AAd062C6593C4f567b9' +const client = createPublicClient({ + transport: http('https://worldchain-mainnet.g.alchemy.com/public', { timeout: 10000, retryCount: 0 }), +}) +const abi = parseAbi([ + 'function getRp(uint64 rpId) view returns ((bool initialized, bool active, address manager, address signer, uint160 oprfKeyId, string unverifiedWellKnownDomain))', +]) +export async function GET(request: Request) { + const id = new URL(request.url).searchParams.get('id') + if (!id || !/^rp_[0-9a-f]{1,16}$/i.test(id)) return Response.json({ error: 'Invalid RP ID.' }, { status: 400 }) + try { + const rp = await client.readContract({ + address: registry, + abi, + functionName: 'getRp', + args: [BigInt('0x' + id.slice(3))], + }) + if (!rp.initialized || !rp.active) + return Response.json({ error: 'This RP is not active on staging.' }, { status: 422 }) + return Response.json( + { signer: rp.signer, oprfKeyId: `0x${rp.oprfKeyId.toString(16)}` }, + { headers: { 'Cache-Control': 'no-store' } } + ) + } catch { + // eslint-disable-next-line no-console -- Operational failure; no request material. + console.warn('staging_rp_lookup_failed', { operation: 'read_rp_registry' }) + return Response.json({ error: 'Could not validate this RP against the staging registry.' }, { status: 502 }) + } +} diff --git a/apps/authenticator/src/server/start.server.ts b/apps/authenticator/src/server/start.server.ts deleted file mode 100644 index 9ac92e0..0000000 --- a/apps/authenticator/src/server/start.server.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { AUTHENTICATOR_APP_CONFIG } from "@clean-start/app-config"; -import { createAuthenticatorHttpHandlerV0 } from "./http.server"; -import { createAuthenticatorServerRuntimeV0 } from "./runtime.server"; - -export async function startAuthenticatorServerV0(): Promise> { - const runtime = await createAuthenticatorServerRuntimeV0(); - const handler = createAuthenticatorHttpHandlerV0(runtime.browserPort); - return Bun.serve({ - hostname: AUTHENTICATOR_APP_CONFIG.host, - port: AUTHENTICATOR_APP_CONFIG.port, - fetch: handler, - }); -} diff --git a/apps/authenticator/src/styles/app.css b/apps/authenticator/src/styles/app.css index 70670f2..4613993 100644 --- a/apps/authenticator/src/styles/app.css +++ b/apps/authenticator/src/styles/app.css @@ -481,177 +481,6 @@ h1:focus { border: 0; } -.walkthrough-body { - padding-inline: 0 !important; - background: #ececec; -} - -.walkthrough-shell { - display: grid; - min-height: 100svh; - min-height: 100dvh; - padding: 24px; - grid-template-columns: minmax(320px, 393px) minmax(280px, 340px); - gap: 24px; - align-items: start; - justify-content: center; -} - -.walkthrough-shell > .app-main { - min-height: calc(100svh - 48px); - min-height: calc(100dvh - 48px); - overflow: hidden; - border-radius: 28px; - box-shadow: 0 20px 60px rgb(0 0 0 / 12%); -} - -.walkthrough-panel { - position: sticky; - top: 24px; - display: flex; - padding: 24px; - border: 1px solid #d8d8d8; - border-radius: 24px; - flex-direction: column; - gap: 20px; - color: var(--foreground-primary); - background: #fff; - box-shadow: 0 20px 60px rgb(0 0 0 / 8%); -} - -.walkthrough-panel__header { - display: flex; - align-items: center; - justify-content: space-between; - gap: 16px; -} - -.walkthrough-eyebrow, -.walkthrough-step { - color: #4e4e4e; - font-size: 13px; - font-weight: 550; - line-height: 1.2; - letter-spacing: 0.01em; -} - -.walkthrough-eyebrow { - text-transform: uppercase; -} - -.walkthrough-panel h2 { - font-size: 24px; - font-weight: 500; - line-height: 1.2; -} - -.walkthrough-status-list { - display: flex; - margin: 0; - flex-direction: column; - gap: 0; -} - -.walkthrough-status-list > div { - display: grid; - padding: 12px 0; - border-bottom: 1px solid var(--stroke-secondary); - grid-template-columns: 1fr; - gap: 4px; -} - -.walkthrough-status-list dt { - color: var(--foreground-secondary); - font-size: 13px; - line-height: 1.3; -} - -.walkthrough-status-list dd { - margin: 0; - font-size: 15px; - font-weight: 550; - line-height: 1.35; -} - -.walkthrough-status-list [data-walkthrough-status="simulated"], -.walkthrough-status-list [data-walkthrough-camera="synthetic_fallback"], -.walkthrough-status-list [data-walkthrough-camera="synthetic_complete"] { - color: #8a4b00; -} - -.walkthrough-status-list [data-walkthrough-passkey="created"], -.walkthrough-status-list [data-walkthrough-camera="live"], -.walkthrough-status-list [data-walkthrough-camera="live_complete"] { - color: #087a43; -} - -.walkthrough-warning { - padding: 14px; - border-radius: 14px; - color: #4e4e4e; - background: var(--background-secondary); - font-size: 14px; - line-height: 1.45; -} - -.walkthrough-restart { - min-height: 48px; - padding: 12px 20px; - border: 1px solid var(--foreground-primary); - border-radius: 24px; - color: #fff; - background: var(--foreground-primary); - font-weight: 550; -} - -.walkthrough-production-link { - min-height: 44px; - padding: 12px; - color: var(--foreground-primary); - font-size: 14px; - font-weight: 550; - text-align: center; - text-underline-offset: 3px; -} - -@media (max-width: 839px) { - .walkthrough-shell { - display: flex; - padding: 0; - flex-direction: column; - gap: 0; - } - - .walkthrough-shell > .app-main { - min-height: 100svh; - min-height: 100dvh; - border-radius: 0; - box-shadow: none; - } - - .walkthrough-panel { - position: static; - order: -1; - width: min(100%, 393px); - margin: 0 auto; - padding: 16px 24px; - border: 0; - border-bottom: 1px solid #d8d8d8; - border-radius: 0; - box-shadow: none; - } - - .walkthrough-status-list, - .walkthrough-warning, - .walkthrough-production-link { - display: none; - } - - .walkthrough-restart { - min-height: 44px; - } -} - @media (max-height: 700px), (min-width: 500px) { .app-main { min-height: 100dvh; @@ -691,3 +520,14 @@ h1:focus { transition-duration: 0.01ms !important; } } + +.request-details { width: 100%; display: grid; gap: 16px; text-align: left; overflow-wrap: anywhere; } +.request-details strong { font-size: 14px; color: var(--foreground-secondary); } +.request-details p { line-height: 1.4; } +.progress-copy, .error-copy { width: 100%; font-size: 14px; line-height: 1.5; overflow-wrap: anywhere; } +.error-copy { color: #a32424; padding: 12px; background: #fff1f1; border-radius: 12px; } +.return-link { display: block; text-align: center; text-decoration: none; } +.camera-preview { display: grid; gap: 16px; width: 100%; font-size: 14px; text-align: center; } +.camera-oval { position: relative; aspect-ratio: 345 / 482; width: min(100%, 260px); margin: auto; } +.camera-oval video { width: 100%; height: 100%; object-fit: cover; transform: scaleX(-1); clip-path: ellipse(46% 47% at 50% 49%); } +.camera-oval img { position: absolute; inset: 0; width: 100%; height: 100%; } diff --git a/apps/authenticator/src/walkthrough/live-passkey.ts b/apps/authenticator/src/walkthrough/live-passkey.ts deleted file mode 100644 index 6bcd877..0000000 --- a/apps/authenticator/src/walkthrough/live-passkey.ts +++ /dev/null @@ -1,139 +0,0 @@ -export type LivePasskeyStatusV1 = - | "idle" - | "requesting" - | "created" - | "unsupported" - | "cancelled" - | "failed"; - -export type LivePrfCapabilityV1 = "unknown" | "available" | "unavailable"; - -export interface LivePasskeyResultV1 { - readonly status: Exclude; - readonly prfCapability: LivePrfCapabilityV1; -} - -interface PrfExtensionResultV1 { - readonly prf?: { readonly enabled?: boolean }; -} - -export interface LocalPasskeyRuntimeV1 { - readonly secureContext: boolean; - readonly hostname: string; - readonly publicKeyCredentialAvailable: boolean; - readonly createCredential?: (options: CredentialCreationOptions) => Promise; - readonly randomBytes: (length: number) => Uint8Array; - readonly nowEpochMs: () => number; -} - -function defaultRuntime(): LocalPasskeyRuntimeV1 { - return { - secureContext: window.isSecureContext, - hostname: window.location.hostname, - publicKeyCredentialAvailable: typeof PublicKeyCredential !== "undefined", - createCredential: typeof navigator.credentials?.create === "function" - ? (options) => navigator.credentials.create(options) - : undefined, - randomBytes: (length) => crypto.getRandomValues(new Uint8Array(length)), - nowEpochMs: () => Date.now(), - }; -} - -function result( - status: LivePasskeyResultV1["status"], - prfCapability: LivePrfCapabilityV1 = "unknown", -): LivePasskeyResultV1 { - return Object.freeze({ status, prfCapability }); -} - -function safeErrorName(value: unknown): string { - try { - return typeof value === "object" && value !== null - ? String((value as { readonly name?: unknown }).name ?? "") - : ""; - } catch { - return ""; - } -} - -function ownedArrayBuffer(bytes: Uint8Array): ArrayBuffer { - const result = new ArrayBuffer(bytes.byteLength); - new Uint8Array(result).set(bytes); - return result; -} - -export async function createLocalDemoPasskeyV1( - runtime: LocalPasskeyRuntimeV1 = defaultRuntime(), -): Promise { - if ( - !runtime.secureContext || - !runtime.publicKeyCredentialAvailable || - runtime.createCredential === undefined - ) { - return result("unsupported"); - } - - const challengeBytes = runtime.randomBytes(32); - const userIdBytes = runtime.randomBytes(32); - const challenge = ownedArrayBuffer(challengeBytes); - const userId = ownedArrayBuffer(userIdBytes); - const rp = runtime.hostname === "localhost" - ? { id: "localhost", name: "World ID" } - : { name: "World ID" }; - const publicKey = { - challenge, - rp, - user: { - id: userId, - name: "World ID", - displayName: "World ID", - }, - pubKeyCredParams: [ - { type: "public-key" as const, alg: -7 }, - { type: "public-key" as const, alg: -257 }, - ], - authenticatorSelection: { - residentKey: "required" as const, - requireResidentKey: true, - userVerification: "required" as const, - }, - timeout: 60_000, - attestation: "none" as const, - extensions: { prf: {} }, - } satisfies PublicKeyCredentialCreationOptions & { - readonly extensions: AuthenticationExtensionsClientInputs & { - readonly prf: Record; - }; - }; - - try { - const credential = await runtime.createCredential({ publicKey }); - if ( - credential === null || - credential.type !== "public-key" || - typeof (credential as PublicKeyCredential).getClientExtensionResults !== "function" - ) { - return result("failed"); - } - const extensions = (credential as PublicKeyCredential) - .getClientExtensionResults() as AuthenticationExtensionsClientOutputs & PrfExtensionResultV1; - return result( - "created", - extensions.prf?.enabled === true ? "available" : "unavailable", - ); - } catch (cause) { - const name = safeErrorName(cause); - if (name === "NotAllowedError" || name === "AbortError") { - return result("cancelled"); - } - if (name === "NotSupportedError" || name === "SecurityError") { - return result("unsupported"); - } - return result("failed"); - } finally { - challengeBytes.fill(0); - userIdBytes.fill(0); - new Uint8Array(challenge).fill(0); - new Uint8Array(userId).fill(0); - } -} diff --git a/apps/authenticator/src/walkthrough/production-copy.ts b/apps/authenticator/src/walkthrough/production-copy.ts deleted file mode 100644 index e0975db..0000000 --- a/apps/authenticator/src/walkthrough/production-copy.ts +++ /dev/null @@ -1,217 +0,0 @@ -import type { - AuthenticatorUiActionV1, - AuthenticatorUiDetailCodeV1, - AuthenticatorUiStateIdV1, -} from "@clean-start/contracts"; -import { FIGMA_ASSET_PATHS_V1 } from "../assets/provenance"; -import type { FlowScreenDisclosureV1, FlowScreenHeroV1 } from "../components/FlowScreen"; - -export interface WalkthroughCopyV1 { - readonly heading: string; - readonly body: string; - readonly primaryAction?: string; -} - -function copy(heading: string, body = "", primaryAction?: string): WalkthroughCopyV1 { - return Object.freeze( - primaryAction === undefined ? { heading, body } : { heading, body, primaryAction }, - ); -} - -export const WALKTHROUGH_RP_NAME_V1 = "Zoom" as const; - -// Figma 5132:134643 body. The app skips that separate intro screen: this -// sentence and its "Start selfie check" action live on the passkey-created -// screen, and the intro state auto-advances into the camera before it paints. -export const SELFIE_CHECK_INTRO_BODY_V1 = - "Use your camera to confirm that you’re a real, unique person. The check should take less than a minute." as const; - -/** Mirrors `AUTHENTICATOR_RP_PRESENTATIONS_V0.zoom_demo.returnLabel` (server-owned). */ -export const WALKTHROUGH_RETURN_LABEL_V1 = "Return to Zoom" as const; - -// Exact Figma copy is used where a frame exists: -// 5132:134352 request, 5132:134394/134441/134488/134535 passkey, -// 5132:134643 camera intro, 5132:134743/134841/134939/135141 capture, -// 5132:135038/135071 verifying, 5132:135104 success. -// Copy is used verbatim, including Figma’s "This might take few seconds". -export const WALKTHROUGH_COPY_V1: Readonly> = - Object.freeze({ - request_checking: copy("Loading"), - request_review: copy( - "Request from Zoom", - "Confirm you’re a real person with selfie check without sharing identity", - "Continue", - ), - request_invalid: copy("Request not valid", "Close this tab, then start again from Zoom."), - request_expired: copy("Request expired", "Close this tab, then start again from Zoom."), - request_return_target_invalid: copy("Cannot return safely", "The return destination was not approved."), - request_rp_identity_unavailable: copy("App details unavailable", "The requesting app could not be verified."), - admission_checking: copy("Checking browser"), - admission_safari_candidate: copy("Continue in Safari", "", "Continue"), - admission_chrome_candidate: copy("Continue in Chrome", "", "Continue"), - admission_handoff_required: copy( - "Open in Safari or Chrome", - "Continue in your browser to complete the selfie check.", - "Open browser", - ), - admission_handoff_departing: copy("Opening browser"), - admission_handoff_failed: copy("Browser could not open", "Close this tab and try again from Zoom."), - admission_update_required: copy("Update iOS to continue", "Selfie check needs iOS 18 or later in Safari or Chrome."), - admission_unsupported: copy("Device not supported", "Selfie check runs on supported iPhone browsers."), - admission_insecure: copy("Secure page required", "Open the secure link from Zoom to continue."), - admission_framed: copy("Open the page directly", "Selfie check can’t run inside another page."), - admission_private: copy("Use a normal browser tab", "Private browsing isn’t supported for selfie check."), - admission_pwa: copy("Use Safari or Chrome", "Installed web-app mode isn’t supported for selfie check."), - admission_unknown: copy("Browser not supported", "Open this link in Safari or Chrome on your iPhone."), - demo_authenticator_intro: copy( - "Secure your World ID", - "Create a passkey so you can use and recover this World ID on supported devices.", - "Create passkey", - ), - session_creating: copy("Starting"), - demo_authenticator_pending: copy("Creating passkey"), - session_completing_authenticator: copy("Creating passkey"), - demo_authenticator_ready: copy("Passkey created", SELFIE_CHECK_INTRO_BODY_V1, "Start selfie check"), - demo_authenticator_non_completion: copy( - "Passkey not created", - "Create a passkey to secure your World ID and continue the human check.", - "Try again", - ), - demo_authenticator_unavailable: copy( - "Passkeys aren’t available", - "This device or browser can’t create the passkey needed to secure your World ID.", - WALKTHROUGH_RETURN_LABEL_V1, - ), - demo_authenticator_interrupted: copy( - "Passkey not created", - "Create a passkey to secure your World ID and continue the human check.", - "Try again", - ), - demo_authenticator_transport_failure: copy( - "Unable to create a passkey", - "Check your connection and try again. Your World ID hasn’t been created.", - "Try again", - ), - demo_authenticator_invalid_response: copy( - "Unable to create a passkey", - "Something went wrong. Your World ID hasn’t been created.", - WALKTHROUGH_RETURN_LABEL_V1, - ), - session_reconciling: copy("Checking status"), - session_error: copy( - "Connection interrupted", - "Check your connection, then check the status to continue.", - "Check status", - ), - capture_policy_loading: copy("Preparing camera"), - capture_intro: copy("Complete a Selfie Check", SELFIE_CHECK_INTRO_BODY_V1, "Start selfie check"), - capture_permission_request: copy("Allow camera access"), - capture_acquiring: copy("Opening camera"), - capture_preparing: copy("Opening camera"), - capture_preview: copy("Place your face in the oval", "Position your face inside the oval, then hold steady."), - capture_guidance_adjust: copy("Adjust your position", "Follow the on-screen guidance, then try again.", "Try again"), - capture_guidance_retake: copy("Let’s try that again", "Hold your phone steady and retake your selfie.", "Retake"), - capture_guidance_unavailable: copy("Guidance unavailable", "You can continue without on-screen guidance.", "Continue"), - capture_sampling: copy("Great position, hold steady"), - capture_artifact_ready: copy("You’re all set"), - capture_cleaning: copy("You’re all set"), - capture_complete: copy("You’re all set"), - capture_error: copy("Camera unavailable", "Allow camera access, then try again.", "Try again"), - biometric_simulation_pending: copy("Verifying your selfie", "This might take few seconds"), - biometric_simulated_pass: copy("Verifying your selfie", "This might take few seconds"), - biometric_simulated_reject: copy( - "Selfie check unsuccessful", - "We couldn’t verify your selfie this time.", - WALKTHROUGH_RETURN_LABEL_V1, - ), - biometric_simulated_retry: copy("Let’s try that again", "Retake your selfie in good lighting.", "Retake"), - biometric_simulated_unavailable: copy( - "Verification unavailable", - "We couldn’t reach the verification service. Try again.", - "Try again", - ), - issuance_simulation_pending: copy("Verifying your selfie", "This might take few seconds"), - issuance_simulated_reject: copy( - "Unable to complete", - "Your selfie check couldn’t be completed.", - WALKTHROUGH_RETURN_LABEL_V1, - ), - issuance_simulated_unavailable: copy( - "Almost there", - "We couldn’t finish your selfie check. Try again.", - "Try again", - ), - simulated_credential_ready: copy("Preview complete", "Simulated result — no Selfie Check credential was issued.", WALKTHROUGH_RETURN_LABEL_V1), - return_redirecting: copy("You’re all set", "Returning to Zoom"), - return_callback_failed: copy("Couldn’t return to Zoom", "Try again to continue in Zoom.", "Try again"), - returned: copy("Returned to Zoom", "This preview did not send a proof to Zoom. You can close this tab."), - flow_cancelling: copy("Cancelling"), - flow_cancelled: copy("Cancelled", "You can start again from Zoom."), - flow_closed: copy("You can close this tab"), - flow_expired: copy("Session expired", "Start again from Zoom."), - flow_failed: copy("Something went wrong", "Start again from Zoom."), - }); - -export const WALKTHROUGH_PASSKEY_READY_COPY_V1 = Object.freeze({ - created: copy("Wallet unlocked", SELFIE_CHECK_INTRO_BODY_V1, "Start selfie check"), - notCreated: copy( - "Continue without a passkey", - `Passkey creation was not completed. ${SELFIE_CHECK_INTRO_BODY_V1}`, - "Start selfie check", - ), -}); - -// Detail lines whose frozen contract wording names the staging environment. -export const WALKTHROUGH_DETAIL_COPY_V1: Readonly>> = - Object.freeze({ - retake_limit_reached: "The retake limit was reached.", - policy_invalid: "The capture settings are not valid.", - prf_not_ready: "This step isn’t ready yet. Try again.", - unsupported_context: "This browser can’t start the camera.", - session_expired: "Your session expired.", - artifact_limit: "The capture exceeded its limits.", - gateway_disabled: "The service is unavailable right now.", - invalid_request: "The request was not valid.", - body_too_large: "The request was too large.", - unauthorized: "The request could not be authenticated.", - origin_forbidden: "This origin is not approved.", - not_found: "The session was not found.", - expired: "Your session expired.", - invalid_state: "That step isn’t available right now.", - binding_mismatch: "The operation did not match the current request.", - replay_rejected: "The operation was already completed.", - artifact_invalid: "The capture did not meet the requirements.", - resource_busy: "The service is busy. Try again.", - network_timeout: "The request timed out.", - response_invalid: "The response was not valid.", - safe_internal_error: "Something went wrong.", - }); - -export const WALKTHROUGH_ACTION_LABELS_V1 = Object.freeze({ - start_demo_authenticator: "Create passkey", - continue_to_camera: "Start selfie check", - start_camera: "Start selfie check", - collect_frame_metadata: "Continue", - return_to_rp: WALKTHROUGH_RETURN_LABEL_V1, - open_external_browser: "Open browser", - close: "Close", -}) satisfies Partial>; - -// Figma 5132:134352 "App will receive" rows: proof shared, selfie and passkey not. -export const WALKTHROUGH_DISCLOSURE_V1: FlowScreenDisclosureV1 = Object.freeze({ - partnerIcon: FIGMA_ASSET_PATHS_V1.zoom, - partnerAlt: WALKTHROUGH_RP_NAME_V1, - partnerTone: "brand", - heading: "App will receive", - rows: Object.freeze([ - Object.freeze({ icon: FIGMA_ASSET_PATHS_V1.humanEmblem, text: "Proof of selfie", included: true }), - Object.freeze({ icon: FIGMA_ASSET_PATHS_V1.personCircle, text: "Your selfie", included: false }), - Object.freeze({ icon: FIGMA_ASSET_PATHS_V1.personKey, text: "Your passkey", included: false }), - ]), -}); - -// `/demo/returned` stands in for the relying party after the return action. -export const WALKTHROUGH_RETURNED_HERO_V1: FlowScreenHeroV1 = Object.freeze({ - src: FIGMA_ASSET_PATHS_V1.zoom, - alt: WALKTHROUGH_RP_NAME_V1, -}); diff --git a/apps/authenticator/src/walkthrough/walkthrough-adapters.ts b/apps/authenticator/src/walkthrough/walkthrough-adapters.ts deleted file mode 100644 index 792da05..0000000 --- a/apps/authenticator/src/walkthrough/walkthrough-adapters.ts +++ /dev/null @@ -1,245 +0,0 @@ -import { - BROWSER_ADMISSION_V1, - type BrowserAdmissionDecisionV1, -} from "@clean-start/browser-admission"; -import { buildFrameBundle } from "@clean-start/frame-capture"; -import type { - BrowserAdmissionAdapterV1, -} from "../adapters/browser-admission"; -import { - BrowserMetadataCaptureAdapterV1, - type BrowserCaptureAdapterV1, - type BrowserCaptureCallbacksV1, - type BrowserCaptureStartV1, -} from "../adapters/browser-capture"; -import { - LiveFaceGuidanceControllerV1, - type LiveFaceGuidanceV1, -} from "./live-face-guidance"; - -export type WalkthroughCameraStatusV1 = - | "idle" - | "requesting" - | "live" - | "synthetic_fallback" - | "live_complete" - | "synthetic_complete" - | "failed"; - -function browserFamily(): "safari" | "chrome" { - return /(?:Chrome|CriOS|Chromium)\//i.test(navigator.userAgent) ? "chrome" : "safari"; -} - -export function makeLocalWalkthroughAdmissionV1( - browser: "safari" | "chrome" = browserFamily(), -): BrowserAdmissionDecisionV1 { - return Object.freeze({ - version: BROWSER_ADMISSION_V1, - outcome: "eligible_candidate", - reason: "candidate_only_ceremony_required", - mayStartSensitiveFlow: true, - browser, - iosVersionBand: "ios_18_plus", - context: "normal_tab", - engine: "unknown", - region: "unknown", - provider: "unknown", - capabilities: Object.freeze({ - webAuthnApi: typeof PublicKeyCredential === "undefined" ? "unavailable" : "available", - platformUv: "unknown", - clientCapabilitiesApi: "unknown", - conditionalMediation: "unknown", - mediaApi: typeof navigator.mediaDevices?.getUserMedia === "function" - ? "available" - : "unavailable", - visibility: "visible", - }), - }); -} - -export function createLocalWalkthroughAdmissionAdapterV1(): BrowserAdmissionAdapterV1 { - return Object.freeze({ - async evaluate() { - return makeLocalWalkthroughAdmissionV1(); - }, - async openExternalBrowser() { - throw new TypeError("walkthrough_handoff_not_available"); - }, - }); -} - -interface FallbackAttemptV1 { - readonly generation: number; - readonly input: BrowserCaptureStartV1; - readonly callbacks: BrowserCaptureCallbacksV1; - ready: boolean; - finalizing: boolean; - livePreview: boolean; -} - -async function constantFallbackFrameDigestV1(): Promise { - const digest = await crypto.subtle.digest("SHA-256", new Uint8Array(4)); - return Array.from( - new Uint8Array(digest), - (byte) => byte.toString(16).padStart(2, "0"), - ).join(""); -} - -export class LocalWalkthroughCaptureAdapterV1 implements BrowserCaptureAdapterV1 { - private readonly live: BrowserCaptureAdapterV1; - private readonly guidance?: Pick; - private readonly onGuidance?: (guidance: LiveFaceGuidanceV1) => void; - private generation = 0; - private attempt?: FallbackAttemptV1; - - constructor(options: { - readonly getVideo: () => HTMLVideoElement | null; - readonly getCanvas: () => HTMLCanvasElement | null; - readonly onStatus: (status: WalkthroughCameraStatusV1) => void; - readonly onGuidance?: (guidance: LiveFaceGuidanceV1) => void; - readonly liveAdapter?: BrowserCaptureAdapterV1; - readonly guidanceController?: Pick; - }) { - this.onStatus = options.onStatus; - this.onGuidance = options.onGuidance; - this.live = options.liveAdapter ?? new BrowserMetadataCaptureAdapterV1({ - getVideo: options.getVideo, - getCanvas: options.getCanvas, - }); - this.guidance = options.guidanceController ?? (options.onGuidance === undefined - ? undefined - : new LiveFaceGuidanceControllerV1(options.getVideo, options.onGuidance)); - } - - private readonly onStatus: (status: WalkthroughCameraStatusV1) => void; - - start(input: BrowserCaptureStartV1, callbacks: BrowserCaptureCallbacksV1): void { - const attempt: FallbackAttemptV1 = { - generation: ++this.generation, - input, - callbacks, - ready: false, - finalizing: false, - livePreview: false, - }; - this.attempt = attempt; - this.onStatus("requesting"); - try { - this.live.start(input, { - onCaptureState: async (state) => { - if (this.attempt !== attempt) return; - if (state === "preview") { - attempt.livePreview = true; - this.onStatus("live"); - } - await callbacks.onCaptureState(state); - if (state === "preview") this.guidance?.start(); - }, - onQuality: callbacks.onQuality, - onArtifactReady: callbacks.onArtifactReady, - onFailure: async (code) => { - if (this.attempt !== attempt) return; - if (attempt.livePreview) { - this.guidance?.stop(); - this.onStatus("failed"); - await callbacks.onFailure(code); - return; - } - await this.activateFallback(attempt); - }, - onComplete: async () => { - this.guidance?.stop(); - if (this.attempt === attempt) this.attempt = undefined; - this.onStatus(attempt.livePreview ? "live_complete" : "synthetic_complete"); - await callbacks.onComplete(); - }, - }); - } catch { - void this.activateFallback(attempt); - } - } - - requestMetadataCollection(): void { - const attempt = this.attempt; - if (attempt?.ready === true) { - void this.finalizeFallback(attempt); - return; - } - this.live.requestMetadataCollection(); - } - - stop(): void { - this.generation += 1; - this.attempt = undefined; - this.guidance?.stop(); - this.live.stop(); - } - - clearTransientMedia(): void { - this.guidance?.stop(); - this.live.clearTransientMedia(); - } - - unmount(): void { - this.generation += 1; - this.attempt = undefined; - this.guidance?.stop(); - this.live.unmount(); - } - - private async activateFallback(attempt: FallbackAttemptV1): Promise { - if (this.attempt !== attempt || attempt.generation !== this.generation) return; - attempt.ready = true; - this.guidance?.stop(); - this.onGuidance?.(Object.freeze({ - code: "unavailable", - text: "Camera unavailable", - })); - this.onStatus("synthetic_fallback"); - await attempt.callbacks.onCaptureState("acquiring"); - await attempt.callbacks.onCaptureState("awaiting_first_frame"); - await attempt.callbacks.onCaptureState("preview"); - } - - private async finalizeFallback(attempt: FallbackAttemptV1): Promise { - if ( - this.attempt !== attempt || - attempt.generation !== this.generation || - attempt.finalizing - ) return; - attempt.finalizing = true; - try { - await attempt.callbacks.onQuality({ - version: "client_quality_policy_v0", - policyId: attempt.input.qualityPolicy.policyId, - action: "ready", - reasonCodes: [], - }); - const artifact = await buildFrameBundle({ - sessionId: attempt.input.sessionId, - policy: attempt.input.policy, - accountPublicMaterialDigestSha256: - attempt.input.accountPublicMaterialDigestSha256, - nonceDigestSha256: attempt.input.nonceDigestSha256, - frames: [{ - transportIndex: 0, - width: 1, - height: 1, - encoding: "rgba8", - byteLength: 4, - frameDigestSha256: await constantFallbackFrameDigestV1(), - }], - }); - await attempt.callbacks.onArtifactReady(artifact); - await attempt.callbacks.onCaptureState("artifact_ready"); - await attempt.callbacks.onCaptureState("cleaning_up"); - this.onStatus("synthetic_complete"); - await attempt.callbacks.onComplete(); - } catch { - this.onStatus("failed"); - await attempt.callbacks.onFailure("unknown"); - } finally { - if (this.attempt === attempt) this.attempt = undefined; - } - } -} diff --git a/apps/authenticator/src/wallet/persistence.ts b/apps/authenticator/src/wallet/persistence.ts new file mode 100644 index 0000000..8ad29ea --- /dev/null +++ b/apps/authenticator/src/wallet/persistence.ts @@ -0,0 +1,25 @@ +export type RegistrationState = "submitting" | "finalized"; + +export function registrationState(credentialId: string): RegistrationState | null { + const value = window.localStorage.getItem(`world-id-staging-registration-v1:${credentialId}`); + if (value !== null && value !== "submitting" && value !== "finalized") { + throw new Error("Saved registration status is invalid. Do not clear site data to retry registration."); + } + return value; +} + +export function saveRegistrationState(credentialId: string, state: RegistrationState): void { + window.localStorage.setItem(`world-id-staging-registration-v1:${credentialId}`, state); +} + +/** An opaque issuer operation capability, never a passkey secret or blinding factor. */ +export function selfieResumeToken(sub: string): string { + const key = `world-id-staging-selfie-resume:${sub}`; + let token = window.localStorage.getItem(key); + if (token === null) { + token = Array.from(crypto.getRandomValues(new Uint8Array(32)), b => b.toString(16).padStart(2, "0")).join(""); + window.localStorage.setItem(key, token); + } + if (!/^[0-9a-f]{64}$/.test(token)) throw new Error("The saved selfie enrollment resume token is invalid."); + return token; +} diff --git a/apps/authenticator/src/wallet/registration.ts b/apps/authenticator/src/wallet/registration.ts new file mode 100644 index 0000000..445afbf --- /dev/null +++ b/apps/authenticator/src/wallet/registration.ts @@ -0,0 +1,43 @@ +import type { WalletKit } from "../lib/walletkit"; +import { abortable, pause } from "../lib/async"; +import { registrationState, saveRegistrationState } from "./persistence"; + +export async function activateStagingWallet( + wallet: WalletKit, + seed: Uint8Array, + credentialId: string, + signal: AbortSignal, + progress: (message: string) => void, +): Promise { + const saved = registrationState(credentialId); + let stage = "initialize the registered account"; + try { + if (saved === null) { + signal.throwIfAborted(); + // Persist before the remote mutation: an ambiguous result must never trigger a second registration. + saveRegistrationState(credentialId, "submitting"); + stage = "confirm staging registration; it may already have been submitted"; + progress("Registering your World ID account on staging…"); + await abortable(wallet.register(seed), signal); + for (;;) { + const status = await abortable(wallet.pollRegistration(), signal); + if (!["queued", "batching", "submitted", "finalized"].includes(status.state)) { + throw new Error("Registration was not finalized."); + } + progress(`Staging registration: ${status.state}.`); + if (status.state === "finalized") break; + await pause(1000, signal); + } + saveRegistrationState(credentialId, "finalized"); + } + progress(saved === "submitting" + ? "Checking the previously submitted account. No new registration will be sent…" + : "Opening the registered authenticator and encrypted vault…"); + await abortable(wallet.initializeAuthenticator(seed), signal); + signal.throwIfAborted(); + saveRegistrationState(credentialId, "finalized"); + } catch (cause) { + wallet.terminate(); + throw new Error(`Could not ${stage}. Unlock to check again. No automatic resubmission was made.`, { cause }); + } +} diff --git a/apps/authenticator/src/wallet/session.ts b/apps/authenticator/src/wallet/session.ts index 31b726d..fc7445c 100644 --- a/apps/authenticator/src/wallet/session.ts +++ b/apps/authenticator/src/wallet/session.ts @@ -1,4 +1,7 @@ import { initializeWalletKit, type CredentialStore, type WalletKit } from "@worldcoin/walletkit-web"; +import { WalletKit as AccountWallet } from "../lib/walletkit"; +import { activateStagingWallet } from "./registration"; +import { abortable } from "../lib/async"; const PROFILE_KEY = "world-id-wallet-v1"; const PRF_INPUT = new TextEncoder().encode("world-id/web-authenticator/prf/v1"); @@ -44,19 +47,39 @@ export async function deriveWalletKeys(prf: Uint8Array): Promise<{ /** Unlocks the local vault. This does not register an account or issue a credential. */ export async function openPasskeyWallet(signal: AbortSignal): Promise { + return openWithPasskey(signal); +} + +/** The seed stays inside the unlock scope and is erased after account activation. */ +export async function openAuthenticator(signal: AbortSignal, progress: (message: string) => void): Promise { + let account: AccountWallet | undefined; + await openWithPasskey(signal, async (session, seed, credentialId, deadline) => { + account = new AccountWallet(session.client, session.store, "staging", "us"); + await activateStagingWallet(account, seed, credentialId, deadline, progress); + }); + if (!account) throw new Error("The authenticator could not be opened."); + return account; +} + +type Activate = (session: WalletSession, seed: Uint8Array, credentialId: string, signal: AbortSignal) => Promise; + +async function openWithPasskey(signal: AbortSignal, activate?: Activate): Promise { if (!window.isSecureContext || typeof PublicKeyCredential === "undefined") { throw new Error("Use a secure browser with a PRF-capable passkey provider."); } + if (window.top !== window.self || document.visibilityState !== "visible") { + throw new Error("Open this authenticator in a visible top-level browser tab."); + } if (navigator.locks === undefined) { throw new Error("This browser cannot safely coordinate wallet setup across tabs."); } return navigator.locks.request("world-id-wallet-setup-v1", { ifAvailable: true }, async (lock) => { if (lock === null) throw new Error("Wallet setup is already running in another tab."); - return openWalletUnderLock(signal); + return openWalletUnderLock(signal, activate); }); } -async function openWalletUnderLock(signal: AbortSignal): Promise { +async function openWalletUnderLock(signal: AbortSignal, activate?: Activate): Promise { signal.throwIfAborted(); const saved = window.localStorage.getItem(PROFILE_KEY); let profile = saved === null ? undefined : parseWalletProfile(saved); @@ -106,7 +129,7 @@ async function openWalletUnderLock(signal: AbortSignal): Promise let client: WalletKit | undefined; const opening = new AbortController(); const abort = () => { opening.abort(); client?.terminate(); }; - const timeout = setTimeout(abort, 60_000); + const timeout = setTimeout(abort, activate ? 300_000 : 60_000); signal.addEventListener("abort", abort, { once: true }); try { signal.throwIfAborted(); @@ -126,6 +149,7 @@ async function openWalletUnderLock(signal: AbortSignal): Promise } signal.throwIfAborted(); opening.signal.throwIfAborted(); + if (activate) await abortable(activate({ client, store }, keys.seed, profile.credentialId, opening.signal), opening.signal); return { client, store }; } catch (error) { client?.terminate(); diff --git a/apps/authenticator/static-demo/index.html b/apps/authenticator/static-demo/index.html deleted file mode 100644 index f8f79af..0000000 --- a/apps/authenticator/static-demo/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - World ID - - -
    - - - diff --git a/apps/authenticator/static-demo/main.tsx b/apps/authenticator/static-demo/main.tsx deleted file mode 100644 index deaaa09..0000000 --- a/apps/authenticator/static-demo/main.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { createRoot } from "react-dom/client"; -import type { AbortableSimulatorBrowserSessionPortV0 } from "../src/adapters/http-session"; -import { AuthenticatorAppV1, makeAuthenticatorControllerFactoryV1 } from "../src/App"; -import { createAuthenticatorServerRuntimeV0 } from "../src/server/runtime.server"; -import "../src/styles/app.css"; - -// Static demo entry. The whole staging simulator (session gateway, demo -// authenticator, biometric and issuance simulators) runs inside this page, so -// `bun run build:static-demo` produces a plain static site with no server to -// host. This is a demo convenience only: keys are generated per page load and -// nothing here is a production trust boundary. The served app (`src/main.tsx`) -// keeps the simulator behind the same-origin Bun server. - -const rootElement = document.getElementById("root"); -if (rootElement === null) throw new TypeError("authenticator_root_missing"); - -const runtime = await createAuthenticatorServerRuntimeV0(); -const sessionPort: AbortableSimulatorBrowserSessionPortV0 = runtime.browserPort; - -createRoot(rootElement).render( - , -); diff --git a/apps/authenticator/test/app.test.tsx b/apps/authenticator/test/app.test.tsx new file mode 100644 index 0000000..78773ce --- /dev/null +++ b/apps/authenticator/test/app.test.tsx @@ -0,0 +1,90 @@ +import { afterAll, afterEach, beforeAll, expect, spyOn, test } from "bun:test"; +import { GlobalRegistrator } from "@happy-dom/global-registrator"; +import { cleanup, fireEvent, render, waitFor } from "@testing-library/react"; +import { CameraPreview } from "../src/components/CameraPreview"; +import { AuthenticatorAppV1 } from "../src/App"; +import { signedRequest } from "../../../tests/integration/fixtures/request"; +import type { IncomingRequest } from "../src/lib/requests/incoming-request"; +import type { WalletKit, CredentialMetadata } from "../src/lib/walletkit"; + +beforeAll(() => GlobalRegistrator.register({ url: "http://localhost:4173/" })); +afterAll(() => GlobalRegistrator.unregister()); +let restore: (() => void) | undefined; +afterEach(() => { cleanup(); restore?.(); }); +async function fixture(schema: number, available = false) { + const { payload } = await signedRequest(schema); + let records = available ? [{ issuerSchemaId: BigInt(schema), isExpired: false, expiresAt: BigInt(Math.floor(Date.now()/1000)+3600), genesisIssuedAt: 0n } as CredentialMetadata] : []; + const calls = { prove: 0, issue: 0, deliver: [] as string[], failDelivery: false }; + const incoming: IncomingRequest = { + proof: payload.proof_request, label: "rp_1", actionLabel: payload.action, + validate: async () => {}, cancel: async () => {}, + deliver: async proof => { calls.deliver.push(proof); if (calls.failDelivery) throw new Error("Transport unavailable"); }, + }; + const wallet = { listCredentials: async () => records, terminate: () => {} } as unknown as WalletKit; + const services = { + load: async () => incoming, + open: async () => wallet, + prove: async () => { calls.prove++; return JSON.stringify({ id: "test-request", responses: [{}] }); }, + issue: async () => { calls.issue++; records = [{ issuerSchemaId: 11n, isExpired: false, expiresAt: BigInt(Math.floor(Date.now()/1000)+3600), genesisIssuedAt: 0n } as CredentialMetadata]; return { credentialId: 1n, issuerSchemaId: 11n }; }, + }; + const mocked = spyOn(globalThis, "fetch").mockResolvedValue(Response.json({ environment: "staging", syntheticSelfieIssuance: true })); + restore = () => mocked.mockRestore(); + return { services, calls, incoming }; +} +test("Selfie-only requests lead to enrollment, then return for separate proof approval", async () => { + const f = await fixture(11); const view = render(); + fireEvent.click(await view.findByRole("button", { name: "Create or unlock with passkey" })); + expect(await view.findByRole("heading", { name: "Set up Selfie Check" })).toBeTruthy(); + expect(view.getByText(/real staging credential using synthetic face data/)).toBeTruthy(); + fireEvent.click(view.getByRole("button", { name: "Issue staging Selfie credential" })); + await waitFor(() => expect((view.getByRole("button", { name: "Approve and share proof" }) as HTMLButtonElement).disabled).toBe(false)); + expect(f.calls.issue).toBe(1); expect(f.calls.prove).toBe(0); +}); +test("Orb-only requests never offer Selfie enrollment", async () => { + const f = await fixture(1); const view = render(); + fireEvent.click(await view.findByRole("button", { name: "Create or unlock with passkey" })); + expect(await view.findByText(/eligible Orb credential/)).toBeTruthy(); + expect(view.queryByRole("button", { name: "Set up Selfie Check" })).toBeNull(); + expect((view.getByRole("button", { name: "Approve and share proof" }) as HTMLButtonElement).disabled).toBe(true); +}); +test("either-credential requests wait for the user's choice", async () => { + const f = await fixture(1); + f.incoming.proof.proof_requests.push({ identifier: "selfie", issuer_schema_id: 11 }); + f.incoming.proof.constraints = { any: ["credential", "selfie"] }; + const view = render(); + fireEvent.click(await view.findByRole("button", { name: "Create or unlock with passkey" })); + expect(await view.findByRole("button", { name: "Set up Selfie Check" })).toBeTruthy(); + expect(view.queryByRole("heading", { name: "Set up Selfie Check" })).toBeNull(); + expect(f.calls.issue).toBe(0); +}); +test("delivery retries reuse the proof and show success only after the bridge accepts it", async () => { + const f = await fixture(11, true); f.calls.failDelivery = true; + const view = render(); + fireEvent.click(await view.findByRole("button", { name: "Create or unlock with passkey" })); + await waitFor(() => expect((view.getByRole("button", { name: "Approve and share proof" }) as HTMLButtonElement).disabled).toBe(false)); + fireEvent.click(view.getByRole("button", { name: "Approve and share proof" })); + const retry = await view.findByRole("button", { name: "Retry sending proof" }); + expect(view.queryByRole("heading", { name: "Proof response sent" })).toBeNull(); + f.calls.failDelivery = false; fireEvent.click(retry); + expect(await view.findByRole("heading", { name: "Proof response sent" })).toBeTruthy(); + expect(f.calls.prove).toBe(1); expect(f.calls.deliver).toHaveLength(2); + expect(f.calls.deliver[0]).toBe(f.calls.deliver[1]); +}); +test("unsupported presence requirements stop before passkey setup", async () => { + const f = await fixture(11); f.incoming.unsupportedReason = "User presence is not implemented."; + const view = render(); + expect(await view.findByText("User presence is not implemented.")).toBeTruthy(); + expect(view.queryByRole("button", { name: "Create or unlock with passkey" })).toBeNull(); +}); + +test("missing camera APIs show an actionable failure without crashing the flow", async () => { + const original = Object.getOwnPropertyDescriptor(navigator, "mediaDevices"); + Object.defineProperty(navigator, "mediaDevices", { value: undefined, configurable: true }); + try { + const view = render(); + expect(await view.findByText("Camera unavailable. Allow camera access, then reopen the preview.")).toBeTruthy(); + } finally { + if (original) Object.defineProperty(navigator, "mediaDevices", original); + else Reflect.deleteProperty(navigator, "mediaDevices"); + } +}); diff --git a/apps/authenticator/test/browser-admission-adapter.test.ts b/apps/authenticator/test/browser-admission-adapter.test.ts deleted file mode 100644 index f467974..0000000 --- a/apps/authenticator/test/browser-admission-adapter.test.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - PRF_INPUT_V1_SHA256, - WEB_AUTHN_PRF_AUTHENTICATOR_V1, -} from "@clean-start/contracts"; -import type { BrowserAdmissionInputV1 } from "@clean-start/browser-admission"; -import { evaluateBrowserAdmissionFactsV1 } from "../src/adapters/browser-admission"; - -const policy = { - version: WEB_AUTHN_PRF_AUTHENTICATOR_V1, - rpId: "world.id", - allowedOrigins: ["https://world.id"], - userVerification: "required", - prfInputSha256: PRF_INPUT_V1_SHA256, - prfOutputMapping: "verbatim_32_byte_first_result_to_world_id_4_signer_seed", - secretLifecycle: "browser_memory_only", -} as const; - -function input(overrides: Partial = {}): BrowserAdmissionInputV1 { - return { - actualOrigin: "https://world.id", - isTopLevel: true, - frameOrigin: "same_origin", - permissionsPolicy: "allowed", - requestContext: { - transactionHandle: "validated", - returnTarget: "validated", - session: "approved", - unexpectedQueryFields: false, - }, - platform: { device: "iphone", iosMajor: 18, browser: "safari" }, - browserContext: "normal_tab", - embeddedEvidence: "none", - capabilities: { - secureContext: true, - webAuthnApi: "available", - platformUv: "available", - clientCapabilitiesApi: "unknown", - conditionalMediation: "unknown", - mediaApi: "available", - visibility: "visible", - }, - ...overrides, - }; -} - -describe("real W02 admission adapter", () => { - test("keeps Safari and Chrome iOS 18 candidates separate", () => { - expect(evaluateBrowserAdmissionFactsV1(policy, input()).browser).toBe("safari"); - expect(evaluateBrowserAdmissionFactsV1(policy, input({ - platform: { device: "iphone", iosMajor: 18, browser: "chrome" }, - })).browser).toBe("chrome"); - }); - - test("blocks iOS 15-17 and embedded contexts before sensitive work", () => { - const oldIos = evaluateBrowserAdmissionFactsV1(policy, input({ - platform: { device: "iphone", iosMajor: 17, browser: "safari" }, - })); - expect(oldIos.outcome).toBe("ios_update_required"); - expect(oldIos.mayStartSensitiveFlow).toBe(false); - - const embedded = evaluateBrowserAdmissionFactsV1(policy, input({ - browserContext: "embedded", - embeddedEvidence: "confirmed", - })); - expect(embedded.outcome).toBe("embedded_browser_handoff"); - expect(embedded.mayStartSensitiveFlow).toBe(false); - }); -}); diff --git a/apps/authenticator/test/capture-adapter.test.ts b/apps/authenticator/test/capture-adapter.test.ts deleted file mode 100644 index f013a04..0000000 --- a/apps/authenticator/test/capture-adapter.test.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - FRAME_BUNDLE_V0, - FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - SIMULATION_MODE, - SIMULATOR_UI_QUALITY_POLICY_V0, - type FrameBundleV0, - type SimulationCapturePolicyV0, -} from "@clean-start/contracts"; -import type { CaptureRequest, CaptureRuntimeOptions } from "@clean-start/frame-capture"; -import { BrowserMetadataCaptureAdapterV1 } from "../src/adapters/browser-capture"; - -const policy: SimulationCapturePolicyV0 = { - version: "simulation_capture_policy_v0", - mode: "simulation", - environment: "staging", - policyId: "cs5-metadata-camera-active-v0", - dataMode: "metadata_only", - encoding: "rgba8", - minFrames: 1, - maxFrames: 2, - maxWidth: 1024, - maxHeight: 1024, - maxFrameBytes: 4_194_304, - maxTotalBytes: 8_388_608, - captureOffsetsAreDiagnosticOnly: true, - arrayOrderHasBiometricMeaning: false, - qualityPolicyId: SIMULATOR_UI_QUALITY_POLICY_V0.policyId, - expiresAt: "2030-01-01T00:00:00.000Z", -}; - -describe("W04/W05 browser capture adapter", () => { - test("waits for the explicit metadata action and emits only a FrameBundle", async () => { - let captureRequest: CaptureRequest | undefined; - let runtimeOptions: CaptureRuntimeOptions | undefined; - let resolveDone!: () => void; - const done = new Promise((resolve) => { resolveDone = resolve; }); - const bundle: FrameBundleV0 = { - kind: FRAME_BUNDLE_V0, - mode: SIMULATION_MODE, - sessionId: "session", - policyId: policy.policyId, - accountPublicMaterialDigestSha256: "a".repeat(64), - nonceDigestSha256: "b".repeat(64), - dataMode: "metadata_only", - frames: [{ - transportIndex: 0, - width: 1, - height: 1, - encoding: "rgba8", - byteLength: 4, - frameDigestSha256: "c".repeat(64), - }], - totalByteLength: 4, - digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - artifactDigestSha256: "d".repeat(64), - }; - const states: string[] = []; - const quality: string[] = []; - let artifact: FrameBundleV0 | undefined; - const adapter = new BrowserMetadataCaptureAdapterV1({ - runtimeFactory(options) { - runtimeOptions = options; - return { - async capture(request) { - captureRequest = request; - options.onStateChange?.("acquiring"); - options.onStateChange?.("awaiting_first_frame"); - options.onStateChange?.("preview"); - await request.inspectTransientFrame?.({ - width: 1, - height: 1, - bytes: new Uint8ClampedArray([1, 2, 3, 4]), - }); - return bundle; - }, - cancel() {}, - unmount() {}, - }; - }, - }); - - adapter.start({ - entry: { - userActivated: true, - secureTopLevelContextApproved: true, - prfReady: true, - iosMajor: 18, - browser: "safari", - }, - policy, - qualityPolicy: SIMULATOR_UI_QUALITY_POLICY_V0, - sessionId: "session", - accountPublicMaterialDigestSha256: "a".repeat(64), - nonceDigestSha256: "b".repeat(64), - retakesUsed: 0, - }, { - onCaptureState(state) { states.push(state); }, - onQuality(result) { quality.push(result.action); }, - onArtifactReady(value) { artifact = value; }, - onFailure() {}, - onComplete() { resolveDone(); }, - }); - await Promise.resolve(); - expect(states).toEqual(["acquiring", "awaiting_first_frame", "preview"]); - expect(quality).toEqual([]); - - adapter.requestMetadataCollection(); - await done; - expect(quality).toEqual(["ready"]); - expect(artifact).toBe(bundle); - expect(captureRequest?.policy.dataMode).toBe("metadata_only"); - expect(runtimeOptions).toBeDefined(); - }); -}); diff --git a/apps/authenticator/test/controller.test.ts b/apps/authenticator/test/controller.test.ts deleted file mode 100644 index a5166f0..0000000 --- a/apps/authenticator/test/controller.test.ts +++ /dev/null @@ -1,577 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import type { BrowserAdmissionDecisionV1 } from "@clean-start/browser-admission"; -import { - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - FRAME_BUNDLE_V0, - FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0, - SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, - SIMULATOR_BROWSER_SESSION_PORT_V0, - SIMULATOR_BROWSER_SESSION_ERROR_V0, - SIMULATOR_BROWSER_SESSION_VIEW_V0, - SIMULATOR_UI_BOOTSTRAP_V0, - SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, - SIMULATOR_UI_QUALITY_POLICY_V0, - makeAuthenticatorUiSnapshotV1, - type BrowserIdempotentSessionFieldsV0, - type BrowserSessionFieldsV0, - type CompleteDemoAuthenticatorV0, - type CreateSimulatorBrowserSessionV0, - type SimulatorBrowserSessionViewV0, - type SimulatorBrowserSessionResultV0, - type SimulatorUiBootstrapV0, - type SubmitSimulatorCaptureV0, - type FrameBundleV0, -} from "@clean-start/contracts"; -import type { - BrowserCaptureAdapterV1, - BrowserCaptureCallbacksV1, - BrowserCaptureStartV1, -} from "../src/adapters/browser-capture"; -import type { BrowserAdmissionAdapterV1 } from "../src/adapters/browser-admission"; -import type { AbortableSimulatorBrowserSessionPortV0 } from "../src/adapters/http-session"; -import { AuthenticatorFlowControllerV1 } from "../src/flow/controller"; - -const expiresAt = "2030-01-01T00:00:00.000Z"; -const capturePolicy = { ...SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, expiresAt }; - -function session( - state: SimulatorBrowserSessionViewV0["state"], - code: SimulatorBrowserSessionViewV0["code"], - nonceBase64Url = "nonce", -): SimulatorBrowserSessionViewV0 { - return { - kind: SIMULATOR_BROWSER_SESSION_VIEW_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - sessionId: "session", - browserHandle: "browser-handle", - nonceBase64Url, - state, - code, - retryable: code === "simulation_retry" || code === "simulation_unavailable" || code === "issuance_unavailable", - expiresAt, - capturePolicy, - artifactSummary: state === "simulated_credential_ready" ? { - kind: SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0, - biometricVerification: "not_performed", - uniqueness: "not_performed", - credentialClass: "not_selfie_check", - productionCredential: false, - } : null, - }; -} - -class FakeSessionPort implements AbortableSimulatorBrowserSessionPortV0 { - returnCalls = 0; - createCalls = 0; - cancelCalls = 0; - - async bootstrap(): Promise { - return { - kind: SIMULATOR_UI_BOOTSTRAP_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - rpPresentationId: "zoom_demo" as const, - accountPublicMaterialDigestSha256: "0".repeat(64), - returnAction: "server_managed" as const, - authenticator: { - kind: "injected_demo_only" as const, - webauthnPerformed: false as const, - prfEvaluated: false as const, - worldIdCreated: false as const, - }, - qualityPolicy: SIMULATOR_UI_QUALITY_POLICY_V0, - }; - } - async createSession(_input: CreateSimulatorBrowserSessionV0): Promise { - this.createCalls += 1; - return session("created", "created"); - } - async beginDemoAuthenticator(input: BrowserIdempotentSessionFieldsV0) { - return { - kind: SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - sessionId: input.sessionId, - idempotencyKey: input.idempotencyKey, - completionHandle: "completion-handle", - claims: { - webauthnPerformed: false as const, - prfEvaluated: false as const, - worldIdCreated: false as const, - }, - expiresAt, - }; - } - async completeDemoAuthenticator(_input: CompleteDemoAuthenticatorV0) { - return session("passkey_complete", "passkey_complete"); - } - async prepareCapture(_input: BrowserSessionFieldsV0): Promise { - return session("capture_ready", "capture_ready"); - } - async submitCapture(_input: SubmitSimulatorCaptureV0): Promise { - return session("simulated_credential_ready", "simulated_credential_ready"); - } - async retryUnavailable(_input: BrowserIdempotentSessionFieldsV0) { - return session("simulated_credential_ready", "simulated_credential_ready"); - } - async getStatus(_input: BrowserSessionFieldsV0): Promise { - return session("capture_ready", "capture_ready"); - } - async cancel(_input: BrowserSessionFieldsV0) { - this.cancelCalls += 1; - return session("cancelled", "cancelled"); - } - async returnToRp(_input: BrowserSessionFieldsV0) { - this.returnCalls += 1; - return { - kind: SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - action: "server_managed" as const, - }; - } -} - -function admission(outcome: "eligible_candidate" | "ios_update_required" = "eligible_candidate"): BrowserAdmissionDecisionV1 { - return { - version: "browser_admission_v1", - outcome, - reason: outcome === "eligible_candidate" ? "candidate_only_ceremony_required" : "ios_version_requires_update", - mayStartSensitiveFlow: outcome === "eligible_candidate", - browser: "safari", - iosVersionBand: outcome === "eligible_candidate" ? "ios_18_plus" : "ios_15_17", - context: "normal_tab", - engine: "unknown", - region: "unknown", - provider: "unknown", - capabilities: { - webAuthnApi: "available", - platformUv: "available", - clientCapabilitiesApi: "unknown", - conditionalMediation: "unknown", - mediaApi: "available", - visibility: "visible", - }, - }; -} - -function captureAdapter(order: string[] = []): BrowserCaptureAdapterV1 { - return { - start() { order.push("start_capture"); }, - requestMetadataCollection() { order.push("collect_frame_metadata"); }, - stop() { order.push("stop_capture"); }, - clearTransientMedia() { order.push("clear_transient_media"); }, - unmount() { order.push("unmount"); }, - }; -} - -function admissionAdapter(value: BrowserAdmissionDecisionV1): BrowserAdmissionAdapterV1 { - return { - async evaluate() { return value; }, - async openExternalBrowser() {}, - }; -} - -const fakeFrameBundle: FrameBundleV0 = { - kind: FRAME_BUNDLE_V0, - mode: SIMULATION_MODE, - sessionId: "session", - policyId: capturePolicy.policyId, - accountPublicMaterialDigestSha256: "0".repeat(64), - nonceDigestSha256: "1".repeat(64), - dataMode: "metadata_only", - frames: [{ - transportIndex: 0, - width: 1, - height: 1, - encoding: "rgba8", - byteLength: 4, - frameDigestSha256: "2".repeat(64), - }], - totalByteLength: 4, - digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - artifactDigestSha256: "3".repeat(64), -}; - -function completingCaptureAdapter(): BrowserCaptureAdapterV1 { - return { - start(_input: BrowserCaptureStartV1, callbacks: BrowserCaptureCallbacksV1) { - void callbacks.onCaptureState("acquiring"); - void callbacks.onCaptureState("awaiting_first_frame"); - void callbacks.onCaptureState("preview"); - void callbacks.onQuality({ - version: "client_quality_policy_v0", - policyId: SIMULATOR_UI_QUALITY_POLICY_V0.policyId, - action: "ready", - reasonCodes: [], - }); - void callbacks.onArtifactReady(fakeFrameBundle); - void callbacks.onCaptureState("artifact_ready"); - void callbacks.onCaptureState("cleaning_up"); - void callbacks.onComplete(); - }, - requestMetadataCollection() {}, - stop() {}, - clearTransientMedia() {}, - unmount() {}, - }; -} - -async function advanceToCaptureIntro(controller: AuthenticatorFlowControllerV1): Promise { - controller.start(); - await controller.waitForIdle(); - controller.act("continue"); - await controller.waitForIdle(); - controller.act("continue"); - controller.act("start_demo_authenticator"); - await controller.waitForIdle(); - controller.act("continue_to_camera"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("capture_intro"); -} - -describe("flow controller", () => { - test("runs bootstrap, real admission, demo session, and capture preparation from frozen effects", async () => { - const port = new FakeSessionPort(); - const controller = new AuthenticatorFlowControllerV1({ - sessionPort: port, - admission: admissionAdapter(admission()), - capture: captureAdapter(), - }); - controller.start(); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("request_review"); - - controller.act("continue"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("admission_safari_candidate"); - controller.act("continue"); - expect(controller.snapshot.state).toBe("demo_authenticator_intro"); - controller.act("start_demo_authenticator"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("demo_authenticator_ready"); - expect(port.createCalls).toBe(1); - - controller.act("continue_to_camera"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("capture_intro"); - }); - - test("invokes zero session or capture work for iOS 15-17", async () => { - const port = new FakeSessionPort(); - const order: string[] = []; - const controller = new AuthenticatorFlowControllerV1({ - sessionPort: port, - admission: admissionAdapter(admission("ios_update_required")), - capture: captureAdapter(order), - }); - controller.start(); - await controller.waitForIdle(); - controller.act("continue"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("admission_update_required"); - expect(port.createCalls).toBe(0); - expect(order).toEqual([]); - }); - - test("runs abort, stop, clear, then session cancel in exact order", async () => { - const port = new FakeSessionPort(); - const order: string[] = []; - const controller = new AuthenticatorFlowControllerV1({ - sessionPort: port, - admission: admissionAdapter(admission()), - capture: captureAdapter(order), - initialSnapshot: makeAuthenticatorUiSnapshotV1({ - state: "capture_sampling", - authoritativeSessionState: "capture_ready", - rpPresentationId: "zoom_demo", - visualSource: "figma_5132_134841", - }), - initialSession: session("capture_ready", "capture_ready"), - onEffect(effect) { order.push(effect); }, - }); - controller.act("cancel"); - await controller.waitForIdle(); - expect(order.slice(0, 6)).toEqual([ - "abort_active_effects", - "stop_capture", - "stop_capture", - "clear_transient_media", - "clear_transient_media", - "cancel_session", - ]); - expect(port.cancelCalls).toBe(1); - expect(controller.snapshot.state).toBe("flow_cancelled"); - }); - - test("local Close never calls the session return port", async () => { - const port = new FakeSessionPort(); - let closed = 0; - const controller = new AuthenticatorFlowControllerV1({ - sessionPort: port, - admission: admissionAdapter(admission()), - capture: captureAdapter(), - initialSnapshot: makeAuthenticatorUiSnapshotV1({ - state: "request_invalid", - visualSource: "verified_template", - }), - closeLocally() { closed += 1; }, - }); - controller.act("close"); - await controller.waitForIdle(); - expect(closed).toBe(1); - expect(port.returnCalls).toBe(0); - expect(controller.snapshot.state).toBe("flow_closed"); - }); - - test("uses the session return port only for an explicit return action", async () => { - const port = new FakeSessionPort(); - let navigated = 0; - const controller = new AuthenticatorFlowControllerV1({ - sessionPort: port, - admission: admissionAdapter(admission()), - capture: captureAdapter(), - initialSnapshot: makeAuthenticatorUiSnapshotV1({ - state: "simulated_credential_ready", - authoritativeSessionState: "simulated_credential_ready", - rpPresentationId: "zoom_demo", - visualSource: "figma_5132_135104", - }), - initialSession: session("simulated_credential_ready", "simulated_credential_ready"), - navigateReturned() { navigated += 1; }, - }); - controller.act("return_to_rp"); - await controller.waitForIdle(); - expect(port.returnCalls).toBe(1); - expect(navigated).toBe(1); - expect(controller.snapshot.state).toBe("returned"); - }); - - test("aborts an in-flight pre-session request before local cleanup", async () => { - class PendingSessionPort extends FakeSessionPort { - aborted = false; - override async createSession( - _input: CreateSimulatorBrowserSessionV0, - signal?: AbortSignal, - ): Promise { - this.createCalls += 1; - return new Promise((_resolve, reject) => { - signal?.addEventListener("abort", () => { - this.aborted = true; - reject(new DOMException("Aborted", "AbortError")); - }, { once: true }); - }); - } - } - const port = new PendingSessionPort(); - const controller = new AuthenticatorFlowControllerV1({ - sessionPort: port, - admission: admissionAdapter(admission()), - capture: captureAdapter(), - }); - controller.start(); - await controller.waitForIdle(); - controller.act("continue"); - await controller.waitForIdle(); - controller.act("continue"); - controller.act("start_demo_authenticator"); - expect(controller.snapshot.state).toBe("session_creating"); - controller.act("cancel"); - await controller.waitForIdle(); - expect(port.aborted).toBe(true); - expect(controller.snapshot.state).toBe("flow_cancelled"); - }); - - test("does not replace active session A with a valid projection for session B", async () => { - class CrossSessionPort extends FakeSessionPort { - override async getStatus(_input: BrowserSessionFieldsV0) { - return { - ...session("capture_ready", "capture_ready"), - sessionId: "session-b", - browserHandle: "handle-b", - }; - } - } - const controller = new AuthenticatorFlowControllerV1({ - sessionPort: new CrossSessionPort(), - admission: admissionAdapter(admission()), - capture: captureAdapter(), - initialSnapshot: makeAuthenticatorUiSnapshotV1({ - state: "biometric_simulated_unavailable", - authoritativeSessionState: "simulated_unavailable", - rpPresentationId: "zoom_demo", - visualSource: "not_figma_verified", - }), - initialSession: session("simulated_unavailable", "simulation_unavailable"), - }); - controller.act("query_status"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("session_error"); - expect(controller.snapshot.detailCode).toBe("response_invalid"); - }); - - test("rejects demo-ready output whose session and idempotency do not match the request", async () => { - class CrossDemoPort extends FakeSessionPort { - override async beginDemoAuthenticator(_input: BrowserIdempotentSessionFieldsV0) { - return { - kind: SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - sessionId: "session-b", - idempotencyKey: "demo-b", - completionHandle: "completion-b", - claims: { - webauthnPerformed: false as const, - prfEvaluated: false as const, - worldIdCreated: false as const, - }, - expiresAt, - }; - } - } - const retryController = new AuthenticatorFlowControllerV1({ - sessionPort: new CrossDemoPort(), - admission: admissionAdapter(admission()), - capture: captureAdapter(), - initialSnapshot: makeAuthenticatorUiSnapshotV1({ - state: "demo_authenticator_non_completion", - authoritativeSessionState: "created", - rpPresentationId: "zoom_demo", - visualSource: "figma_5132_134488", - }), - initialSession: session("created", "created"), - }); - retryController.act("try_again"); - await retryController.waitForIdle(); - expect(retryController.snapshot.state).toBe("demo_authenticator_invalid_response"); - }); - - test("rotates capture idempotency only after an accepted retake nonce changes", async () => { - class RetakePort extends FakeSessionPort { - prepareCalls = 0; - submitKeys: string[] = []; - - override async prepareCapture(_input: BrowserSessionFieldsV0): Promise { - this.prepareCalls += 1; - return session( - "capture_ready", - "capture_ready", - this.prepareCalls === 1 ? "nonce-one" : "nonce-two", - ); - } - - override async submitCapture(input: SubmitSimulatorCaptureV0): Promise { - this.submitKeys.push(input.idempotencyKey); - return this.submitKeys.length === 1 - ? session("simulated_retry", "simulation_retry", "nonce-one") - : session("simulated_credential_ready", "simulated_credential_ready", "nonce-two"); - } - } - const port = new RetakePort(); - const controller = new AuthenticatorFlowControllerV1({ - sessionPort: port, - admission: admissionAdapter(admission()), - capture: completingCaptureAdapter(), - }); - await advanceToCaptureIntro(controller); - controller.act("start_camera"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("biometric_simulated_retry"); - controller.act("retake"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("capture_intro"); - controller.act("start_camera"); - await controller.waitForIdle(); - expect(port.submitKeys).toHaveLength(2); - expect(port.submitKeys[1]).not.toBe(port.submitKeys[0]); - }); - - test("keeps capture idempotency stable across network recovery with the same nonce", async () => { - class RecoveryPort extends FakeSessionPort { - submitKeys: string[] = []; - statusCalls = 0; - - override async prepareCapture(_input: BrowserSessionFieldsV0): Promise { - return session("capture_ready", "capture_ready", "stable-nonce"); - } - - override async submitCapture(input: SubmitSimulatorCaptureV0): Promise { - this.submitKeys.push(input.idempotencyKey); - if (this.submitKeys.length === 1) { - return { - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - operation: "submit_capture", - reasonCode: "network_unavailable", - }; - } - return session("simulated_credential_ready", "simulated_credential_ready", "stable-nonce"); - } - - override async getStatus(_input: BrowserSessionFieldsV0): Promise { - this.statusCalls += 1; - return session("capture_ready", "capture_ready", "stable-nonce"); - } - } - const port = new RecoveryPort(); - const controller = new AuthenticatorFlowControllerV1({ - sessionPort: port, - admission: admissionAdapter(admission()), - capture: completingCaptureAdapter(), - }); - await advanceToCaptureIntro(controller); - controller.act("start_camera"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("session_error"); - expect(controller.snapshot.detailCode).toBe("network_unavailable"); - controller.act("query_status"); - await controller.waitForIdle(); - expect(port.statusCalls).toBe(1); - expect(controller.snapshot.state).toBe("capture_intro"); - controller.act("start_camera"); - await controller.waitForIdle(); - expect(port.submitKeys).toHaveLength(2); - expect(port.submitKeys[1]).toBe(port.submitKeys[0]); - }); - - test("keeps create-session network failure local and terminal", async () => { - class CreateFailurePort extends FakeSessionPort { - override async createSession(_input: CreateSimulatorBrowserSessionV0): Promise { - this.createCalls += 1; - return { - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - operation: "create_session", - reasonCode: "network_unavailable", - }; - } - } - const controller = new AuthenticatorFlowControllerV1({ - sessionPort: new CreateFailurePort(), - admission: admissionAdapter(admission()), - capture: completingCaptureAdapter(), - }); - controller.start(); - await controller.waitForIdle(); - controller.act("continue"); - await controller.waitForIdle(); - controller.act("continue"); - controller.act("start_demo_authenticator"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("flow_failed"); - expect(controller.snapshot.authoritativeSessionState).toBeNull(); - }); -}); diff --git a/apps/authenticator/test/http-client.test.ts b/apps/authenticator/test/http-client.test.ts deleted file mode 100644 index 5e17d41..0000000 --- a/apps/authenticator/test/http-client.test.ts +++ /dev/null @@ -1,204 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - SIMULATOR_BROWSER_SESSION_ERROR_V0, - SIMULATOR_BROWSER_SESSION_PORT_V0, - SIMULATOR_BROWSER_SESSION_VIEW_V0, - SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - SIMULATOR_UI_BOOTSTRAP_V0, - SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, - SIMULATOR_UI_QUALITY_POLICY_V0, - type SimulatorBrowserSessionViewV0, -} from "@clean-start/contracts"; -import { HttpSimulatorBrowserSessionClientV0 } from "../src/adapters/http-session"; - -describe("same-origin browser session client", () => { - test("uses the frozen route and never adds a browser-selected scenario", async () => { - const requests: Request[] = []; - const client = new HttpSimulatorBrowserSessionClientV0(async (input, init) => { - const request = new Request(input, init); - requests.push(request.clone()); - return new Response(JSON.stringify({ - kind: SIMULATOR_UI_BOOTSTRAP_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - rpPresentationId: "zoom_demo", - accountPublicMaterialDigestSha256: "0".repeat(64), - returnAction: "server_managed", - authenticator: { - kind: "injected_demo_only", - webauthnPerformed: false, - prfEvaluated: false, - worldIdCreated: false, - }, - qualityPolicy: SIMULATOR_UI_QUALITY_POLICY_V0, - }), { headers: { "content-type": "application/json" } }); - }, "http://127.0.0.1:4173"); - - const result = await client.bootstrap(); - expect(result.kind).toBe(SIMULATOR_UI_BOOTSTRAP_V0); - expect(new URL(requests[0]!.url).pathname).toBe("/api/v0/bootstrap"); - const body = await requests[0]!.json(); - expect(body).toEqual({}); - expect(JSON.stringify(body)).not.toContain("scenario"); - }); - - test("converts malformed responses and network failures to strict stable envelopes", async () => { - const malformed = new HttpSimulatorBrowserSessionClientV0( - async () => new Response(JSON.stringify({ unsafe: "upstream detail" })), - "http://127.0.0.1:4173", - ); - expect(await malformed.bootstrap()).toEqual({ - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - operation: "bootstrap", - reasonCode: "response_invalid", - }); - - const offline = new HttpSimulatorBrowserSessionClientV0(async () => { - throw new Error("private upstream text"); - }, "http://127.0.0.1:4173"); - const result = await offline.createSession({ idempotencyKey: "create" }); - expect(result.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - expect(result.reasonCode).toBe("network_unavailable"); - expect(JSON.stringify(result)).not.toContain("private upstream text"); - } - }); - - test("rejects a valid session-B projection for active session A", async () => { - const response: SimulatorBrowserSessionViewV0 = { - kind: SIMULATOR_BROWSER_SESSION_VIEW_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - sessionId: "session-b", - browserHandle: "handle-b", - nonceBase64Url: "nonce-b", - state: "capture_ready", - code: "capture_ready", - retryable: false, - expiresAt: "2030-01-01T00:00:00.000Z", - capturePolicy: { - ...SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, - expiresAt: "2030-01-01T00:00:00.000Z", - }, - artifactSummary: null, - }; - const client = new HttpSimulatorBrowserSessionClientV0( - async () => new Response(JSON.stringify(response), { - headers: { "content-type": "application/json" }, - }), - "http://127.0.0.1:4173", - () => new Date("2029-01-01T00:00:00.000Z"), - ); - const result = await client.getStatus({ sessionId: "session-a", browserHandle: "handle-a" }); - expect(result).toEqual({ - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - operation: "get_status", - reasonCode: "response_invalid", - }); - }); - - test("rejects demo-ready responses with a changed session or idempotency binding", async () => { - const ready = { - kind: SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - sessionId: "session-b", - idempotencyKey: "demo-b", - completionHandle: "opaque", - claims: { - webauthnPerformed: false, - prfEvaluated: false, - worldIdCreated: false, - }, - expiresAt: "2030-01-01T00:00:00.000Z", - } as const; - const client = new HttpSimulatorBrowserSessionClientV0( - async () => new Response(JSON.stringify(ready), { - headers: { "content-type": "application/json" }, - }), - "http://127.0.0.1:4173", - () => new Date("2029-01-01T00:00:00.000Z"), - ); - const result = await client.beginDemoAuthenticator({ - sessionId: "session-a", - browserHandle: "handle-a", - idempotencyKey: "demo-a", - }); - expect(result.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - expect(result.operation).toBe("begin_demo_authenticator"); - expect(result.reasonCode).toBe("response_invalid"); - } - }); - - test("rejects expired projections and an error envelope for the wrong operation", async () => { - const expired: SimulatorBrowserSessionViewV0 = { - kind: SIMULATOR_BROWSER_SESSION_VIEW_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - sessionId: "session-a", - browserHandle: "handle-a", - nonceBase64Url: "nonce-a", - state: "capture_ready", - code: "capture_ready", - retryable: false, - expiresAt: "2030-01-01T00:00:00.000Z", - capturePolicy: { - ...SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, - expiresAt: "2030-01-01T00:00:00.000Z", - }, - artifactSummary: null, - }; - const expiredClient = new HttpSimulatorBrowserSessionClientV0( - async () => new Response(JSON.stringify(expired), { - headers: { "content-type": "application/json" }, - }), - "http://127.0.0.1:4173", - () => new Date("2031-01-01T00:00:00.000Z"), - ); - const expiredResult = await expiredClient.getStatus({ - sessionId: "session-a", - browserHandle: "handle-a", - }); - expect(expiredResult.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - if (expiredResult.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - expect(expiredResult.reasonCode).toBe("response_invalid"); - } - - const wrongOperationClient = new HttpSimulatorBrowserSessionClientV0( - async () => new Response(JSON.stringify({ - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - operation: "cancel", - reasonCode: "invalid_state", - }), { headers: { "content-type": "application/json" } }), - "http://127.0.0.1:4173", - ); - const wrongOperation = await wrongOperationClient.getStatus({ - sessionId: "session-a", - browserHandle: "handle-a", - }); - expect(wrongOperation).toEqual({ - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - operation: "get_status", - reasonCode: "response_invalid", - }); - }); -}); diff --git a/apps/authenticator/test/http-server.test.ts b/apps/authenticator/test/http-server.test.ts index 87c7014..5e45817 100644 --- a/apps/authenticator/test/http-server.test.ts +++ b/apps/authenticator/test/http-server.test.ts @@ -1,251 +1,32 @@ -import { describe, expect, test } from "bun:test"; -import { - FRAME_BUNDLE_V0, - FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - SIMULATION_MODE, - SIMULATOR_BROWSER_SESSION_ERROR_V0, - SIMULATOR_UI_BOOTSTRAP_V0, - computeFrameBundleDigestV0, - isSimulatorBrowserDemoAuthenticatorReadyV0, - isSimulatorBrowserSessionViewV0, - isSimulatorUiBootstrapV0, - type FrameBundleV0, - type SimulatorBrowserSessionViewV0, -} from "@clean-start/contracts"; -import { AUTHENTICATOR_APP_CONFIG } from "@clean-start/app-config"; -import { createAuthenticatorHttpHandlerV0 } from "../src/server/http.server"; -import { createAuthenticatorServerRuntimeV0 } from "../src/server/runtime.server"; - -function apiRequest(path: string, body: unknown, headers: Record = {}): Request { - return new Request(`${AUTHENTICATOR_APP_CONFIG.publicOrigin}${path}`, { - method: "POST", - headers: { - "content-type": "application/json", - origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, - ...headers, - }, - body: JSON.stringify(body), - }); -} - -async function postJson( - handle: (request: Request) => Promise, - path: string, - body: unknown, -): Promise { - const response = await handle(apiRequest(path, body)); - expect(response.status).toBe(200); - return response.json(); -} - -async function frameBundle(session: SimulatorBrowserSessionViewV0, accountDigest: string): Promise { - const nonceBytes = new TextEncoder().encode(session.nonceBase64Url); - const nonceHash = await crypto.subtle.digest("SHA-256", nonceBytes); - const nonceDigestSha256 = Array.from( - new Uint8Array(nonceHash), - (byte) => byte.toString(16).padStart(2, "0"), - ).join(""); - const pending: FrameBundleV0 = { - kind: FRAME_BUNDLE_V0, - mode: SIMULATION_MODE, - sessionId: session.sessionId, - policyId: session.capturePolicy.policyId, - accountPublicMaterialDigestSha256: accountDigest, - nonceDigestSha256, - dataMode: "metadata_only", - frames: [{ transportIndex: 0, width: 1, height: 1, encoding: "rgba8", byteLength: 4, frameDigestSha256: "e".repeat(64) }], - totalByteLength: 4, - digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - artifactDigestSha256: "0".repeat(64), - }; - return { ...pending, artifactDigestSha256: await computeFrameBundleDigestV0(pending) }; -} - -describe("authenticator HTTP boundary", () => { - test("returns only the strict bootstrap projection with security headers", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const response = await createAuthenticatorHttpHandlerV0(runtime.browserPort)( - apiRequest("/api/v0/bootstrap", {}), - ); - expect(response.status).toBe(200); - expect(response.headers.get("cache-control")).toBe("no-store"); - expect(response.headers.get("content-security-policy")).toContain("frame-ancestors 'none'"); - const body = await response.json(); - expect(body.kind).toBe(SIMULATOR_UI_BOOTSTRAP_V0); - expect(Object.keys(body)).not.toContain("scenario"); - expect(JSON.stringify(body)).not.toContain("signature"); - }); - - test("rejects cross-origin, wrong media type, extra fields, and oversized bodies before dispatch", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort); - - const wrongOrigin = await handle(apiRequest("/api/v0/bootstrap", {}, { origin: "https://attacker.invalid" })); - expect(wrongOrigin.status).toBe(403); - expect((await wrongOrigin.json()).kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - - const wrongType = await handle(new Request(`${AUTHENTICATOR_APP_CONFIG.publicOrigin}/api/v0/bootstrap`, { - method: "POST", - headers: { origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, "content-type": "text/plain" }, - body: "{}", - })); - expect(wrongType.status).toBe(415); - - const extra = await handle(apiRequest("/api/v0/session/create", { - idempotencyKey: "create", - biometricScenario: "happy_path", - })); - expect(extra.status).toBe(400); - - const oversized = await handle(new Request(`${AUTHENTICATOR_APP_CONFIG.publicOrigin}/api/v0/bootstrap`, { - method: "POST", - headers: { - origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, - "content-type": "application/json", - "content-length": String(AUTHENTICATOR_APP_CONFIG.maxRequestBodyBytes + 1), - }, - body: "{}", - })); - expect(oversized.status).toBe(413); - }); - - test("accepts the exact loopback walkthrough origin without opening CORS", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort); - const response = await handle(new Request( - `${AUTHENTICATOR_APP_CONFIG.localWalkthroughOrigin}/api/v0/bootstrap`, - { - method: "POST", - headers: { - origin: AUTHENTICATOR_APP_CONFIG.localWalkthroughOrigin, - "content-type": "application/json", - }, - body: "{}", - }, - )); - expect(response.status).toBe(200); - expect(response.headers.get("access-control-allow-origin")).toBeNull(); - }); - - test("rejects unknown API routes and traversal with the same security headers", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort); - const unknown = await handle(apiRequest("/api/v0/not-real", {})); - expect(unknown.status).toBe(404); - expect(unknown.headers.get("x-content-type-options")).toBe("nosniff"); - - const traversal = await handle(new Request( - `${AUTHENTICATOR_APP_CONFIG.publicOrigin}/assets/%2e%2e%2fserver/main.ts`, - )); - expect(traversal.status).toBe(404); - expect(traversal.headers.get("cache-control")).toBe("no-store"); - }); - - test("serves the complete safe route matrix without scenarios or simulator bodies", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort); - const bootstrap = await postJson(handle, "/api/v0/bootstrap", {}); - if (!isSimulatorUiBootstrapV0(bootstrap)) { - throw new Error("bootstrap failed"); - } - const accountDigest = bootstrap.accountPublicMaterialDigestSha256; - const created = await postJson(handle, "/api/v0/session/create", { idempotencyKey: "http-create" }); - if (!isSimulatorBrowserSessionViewV0(created)) { - throw new Error("create failed"); - } - const createdView = created; - const demo = await postJson(handle, "/api/v0/session/demo/begin", { - sessionId: createdView.sessionId, - browserHandle: createdView.browserHandle, - idempotencyKey: "http-demo", - }); - if (!isSimulatorBrowserDemoAuthenticatorReadyV0(demo)) { - throw new Error("demo failed"); - } - const completed = await postJson(handle, "/api/v0/session/demo/complete", { - sessionId: createdView.sessionId, - browserHandle: createdView.browserHandle, - idempotencyKey: demo.idempotencyKey, - completionHandle: demo.completionHandle, - }) as SimulatorBrowserSessionViewV0; - const prepared = await postJson(handle, "/api/v0/session/capture/prepare", { - sessionId: completed.sessionId, - browserHandle: completed.browserHandle, - }) as SimulatorBrowserSessionViewV0; - const submitted = await postJson(handle, "/api/v0/session/capture/submit", { - sessionId: prepared.sessionId, - browserHandle: prepared.browserHandle, - idempotencyKey: "http-capture", - nonceBase64Url: prepared.nonceBase64Url, - frameBundle: await frameBundle(prepared, accountDigest), - }); - expect(JSON.stringify(submitted)).not.toContain("signatureBase64Url"); - expect(JSON.stringify(submitted)).not.toContain("scenario"); - expect(JSON.stringify(submitted)).not.toContain("receiptId"); - const status = await postJson(handle, "/api/v0/session/status", { - sessionId: prepared.sessionId, - browserHandle: prepared.browserHandle, - }); - expect((status as { readonly state: string }).state).toBe("simulated_credential_ready"); - const returned = await postJson(handle, "/api/v0/session/return", { - sessionId: prepared.sessionId, - browserHandle: prepared.browserHandle, - }); - expect(returned).toEqual({ - kind: "simulator_browser_return_accepted_v0", - version: "simulator_browser_session_port_v0", - mode: "simulation", - environment: "staging", - action: "server_managed", - }); - }); - - test("return route rejects a newly created live session", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort); - const created = await postJson(handle, "/api/v0/session/create", { - idempotencyKey: "http-live-return", - }); - if (!isSimulatorBrowserSessionViewV0(created)) throw new Error("create failed"); - const response = await handle(apiRequest("/api/v0/session/return", { - sessionId: created.sessionId, - browserHandle: created.browserHandle, - })); - expect(response.status).toBe(409); - const body = await response.json(); - expect(body.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - expect(body.operation).toBe("return_to_rp"); - expect(body.reasonCode).toBe("invalid_state"); - }); - - test("serves the walkthrough entry and returned paths from the same app shell", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort, { - staticRoot: new URL("../dist", import.meta.url).pathname, - }); - for (const path of ["/demo", "/demo/returned"]) { - const response = await handle(new Request(`${AUTHENTICATOR_APP_CONFIG.publicOrigin}${path}`)); - expect(response.status).toBe(200); - expect(response.headers.get("content-type")).toContain("text/html"); - } - }); - - test("serves only the allowlisted self-hosted MediaPipe runtime files", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort); - const loader = await handle(new Request( - `${AUTHENTICATOR_APP_CONFIG.publicOrigin}/mediapipe/vision_wasm_internal.js`, - )); - expect(loader.status).toBe(200); - expect(loader.headers.get("content-type")).toContain("javascript"); - const wasm = await handle(new Request( - `${AUTHENTICATOR_APP_CONFIG.publicOrigin}/mediapipe/vision_wasm_internal.wasm`, - )); - expect(wasm.status).toBe(200); - expect(wasm.headers.get("content-type")).toBe("application/wasm"); - const unknown = await handle(new Request( - `${AUTHENTICATOR_APP_CONFIG.publicOrigin}/mediapipe/../package.json`, - )); - expect(unknown.status).toBe(404); - }); +import { expect, test } from "bun:test"; +import { createAuthenticatorHttpHandler } from "../src/server/http.server"; +import { AUTHENTICATOR_APP_CONFIG, AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "../../../config/authenticator-app-v0"; +const handler = createAuthenticatorHttpHandler(); +const origin = AUTHENTICATOR_APP_CONFIG.localOrigin; +const post = (body: unknown, headerOrigin = origin, pathOrigin = origin) => handler(new Request(`${pathOrigin}/api/selfie-credential`, { + method: "POST", headers: { origin: headerOrigin, "content-type": "application/json" }, body: JSON.stringify(body), +})); +test("embedded demo routes and simulated endpoints are gone", async () => { + for (const path of ["/demo", "/returned", "/api/v0/bootstrap", "/api/v0/session/create"]) { + expect((await handler(new Request(origin + path))).status).toBe(404); + } +}); +test("synthetic issuance rejects other origins and non-loopback hosts before issuing", async () => { + const body = { sub: "0x" + "a".repeat(64), token: "b".repeat(64) }; + expect((await post(body, "https://other.example")).status).toBe(403); + expect((await post(body, "https://auth.example", "https://auth.example")).status).toBe(403); +}); +test("issuance rejects malformed subjects, tokens, types and oversized bodies", async () => { + for (const body of [null, {}, { sub: ["0x" + "a".repeat(64)], token: "b".repeat(64) }, { sub: "0x01", token: "abc" }, { excess: "x".repeat(2000) }]) { + expect((await post(body)).status).toBe(400); + } +}); +test("RP lookup rejects malformed identifiers without a remote call", async () => { + expect((await handler(new Request(origin + "/api/staging-rp?id=bad"))).status).toBe(400); +}); +test("all responses include no-referrer/no-store and bounded CSP destinations", async () => { + const response = await handler(new Request(origin + "/api/missing")); + for (const [name, value] of Object.entries(AUTHENTICATOR_APP_SECURITY_HEADERS_V0)) expect(response.headers.get(name)).toBe(value); + expect(response.headers.get("content-security-policy")).toContain("https://staging-bridge.worldcoin.org"); + expect(response.headers.get("content-security-policy")).not.toContain("connect-src *"); }); diff --git a/apps/authenticator/test/privacy.test.ts b/apps/authenticator/test/privacy.test.ts deleted file mode 100644 index e0aafdd..0000000 --- a/apps/authenticator/test/privacy.test.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { describe, expect, test } from "bun:test"; - -async function sourceFiles(): Promise { - const files: string[] = []; - const glob = new Bun.Glob("**/*.{ts,tsx,css,html}"); - for await (const path of glob.scan({ - cwd: new URL("../", import.meta.url).pathname, - absolute: true, - })) files.push(path); - return files; -} - -describe("application privacy and isolation sentinels", () => { - test("client modules import no server, gateway, simulator, or signing implementation", async () => { - const files = (await sourceFiles()).filter((path) => - path.includes("/src/") && !path.includes("/src/server/"), - ); - const forbidden = [ - "@clean-start/session-gateway", - "@clean-start/simulated-biometric-verifier", - "@clean-start/simulated-staging-issuer", - "../server/", - "/server/", - ]; - for (const path of files) { - const text = await Bun.file(path).text(); - for (const value of forbidden) { - if (value === "localStorage" && path.endsWith("/src/wallet/session.ts")) continue; - expect(text).not.toContain(value); - } - } - }); - - test("client modules contain no persistence, beacon, media serialization, or logging APIs", async () => { - const files = (await sourceFiles()).filter((path) => - path.includes("/src/") && !path.includes("/src/server/"), - ); - const forbidden = [ - "localStorage", - "sessionStorage", - "indexedDB", - "sendBeacon", - "serviceWorker", - "MediaRecorder", - "toDataURL", - "convertToBlob", - "createObjectURL", - "FileReader", - "FormData", - "console.", - ]; - for (const path of files) { - const text = await Bun.file(path).text(); - for (const value of forbidden) { - if (value === "localStorage" && path.endsWith("/src/wallet/session.ts")) continue; - expect(text).not.toContain(value); - } - } - }); - - test("does not ship the Figma face photo or prohibited positive assurance copy", async () => { - // The /demo walkthrough intentionally mirrors the production Figma copy - // (owner decision, 2026-09-11) and is guarded separately in - // production-presentation.test.tsx. The gated route and the frozen contract - // copy stay covered here. - const files = (await sourceFiles()).filter((path) => - (path.includes("/src/") || path.endsWith("/index.html")) && - !path.endsWith("/src/walkthrough/production-copy.ts"), - ); - const prohibited = [ - "Proof of selfie", - "prove your liveness", - "you’re a real, unique person", - "Verifying your selfie", - "This might take few seconds", - "verified human", - "spoof detected", - ]; - for (const path of files) { - const text = await Bun.file(path).text(); - for (const value of prohibited) expect(text).not.toContain(value); - } - const assets = [...new Bun.Glob("public/assets/figma/*").scanSync({ - cwd: new URL("../", import.meta.url).pathname, - })]; - expect(assets.some((path) => /face|selfie-photo|image-1/i.test(path))).toBe(false); - }); - - test("keeps safe-area, dynamic viewport, narrow-width, and reduced-motion rules", async () => { - const css = await Bun.file(new URL("../src/styles/app.css", import.meta.url)).text(); - expect(css).toContain("100svh"); - expect(css).toContain("100dvh"); - expect(css).toContain("env(safe-area-inset-top)"); - expect(css).toContain("prefers-reduced-motion"); - expect(css).not.toContain("min-width: 320px"); - expect(css).toContain(".app-main--has-top-close .staging-banner"); - expect(css).toContain("max-width: calc(100% - 72px)"); - }); -}); diff --git a/apps/authenticator/test/production-presentation.test.tsx b/apps/authenticator/test/production-presentation.test.tsx deleted file mode 100644 index 4cc6ebb..0000000 --- a/apps/authenticator/test/production-presentation.test.tsx +++ /dev/null @@ -1,194 +0,0 @@ -import { afterAll, afterEach, beforeAll, describe, expect, test } from "bun:test"; -import { GlobalRegistrator } from "@happy-dom/global-registrator"; -import { cleanup, render } from "@testing-library/react"; -import axe from "axe-core"; -import { - AUTHENTICATOR_UI_COPY_V1, - AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, - AUTHENTICATOR_UI_DETAIL_CODES_V1, - AUTHENTICATOR_UI_DETAIL_COPY_V1, - AUTHENTICATOR_UI_STATES_V1, - ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1, - ENROLLMENT_SESSION_STATES_V2, - makeAuthenticatorUiSnapshotV1, - type AuthenticatorUiDetailCodeV1, - type AuthenticatorUiStateIdV1, - type EnrollmentSessionStateV2, -} from "@clean-start/contracts"; -import { FlowScreenV1 } from "../src/components/FlowScreen"; -import { - WALKTHROUGH_ACTION_LABELS_V1, - WALKTHROUGH_COPY_V1, - WALKTHROUGH_DETAIL_COPY_V1, - WALKTHROUGH_DISCLOSURE_V1, - WALKTHROUGH_PASSKEY_READY_COPY_V1, - WALKTHROUGH_RETURNED_HERO_V1, -} from "../src/walkthrough/production-copy"; - -const STAGING_WORDS = /template|not figma|injected|workflow artifact/i; - -beforeAll(() => GlobalRegistrator.register()); -afterEach(() => cleanup()); -afterAll(() => GlobalRegistrator.unregister()); - -function detailFor(state: AuthenticatorUiStateIdV1): AuthenticatorUiDetailCodeV1 | null { - if (state === "capture_guidance_adjust") return "move_closer"; - if (state === "capture_guidance_retake") return "image_blurry"; - if (state === "capture_guidance_unavailable") return "framing_guidance_unavailable"; - if (state === "capture_error") return "permission_denied"; - if (state === "session_error") return "network_timeout"; - if (state === "return_callback_failed") return "navigation_failed"; - if (state === "flow_failed") return "safe_internal_error"; - return null; -} - -function authoritativeFor(state: AuthenticatorUiStateIdV1): EnrollmentSessionStateV2 | null { - for (const serverState of ENROLLMENT_SESSION_STATES_V2) { - if (ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1[serverState].includes(state)) return serverState; - } - return null; -} - -function renderWalkthrough(state: AuthenticatorUiStateIdV1) { - return render( undefined} - bannerText={null} - copyOverride={WALKTHROUGH_COPY_V1[state]} - detailCopyOverrides={WALKTHROUGH_DETAIL_COPY_V1} - actionLabelOverrides={WALKTHROUGH_ACTION_LABELS_V1} - disclosure={WALKTHROUGH_DISCLOSURE_V1} - heroOverride={state === "returned" ? WALKTHROUGH_RETURNED_HERO_V1 : undefined} - showTemplateNotice={false} - />); -} - -describe("walkthrough production presentation", () => { - test("provides complete preview copy for every frozen state and detail code", () => { - for (const state of AUTHENTICATOR_UI_STATES_V1) { - const merged = { ...AUTHENTICATOR_UI_COPY_V1[state], ...WALKTHROUGH_COPY_V1[state] }; - const text = `${merged.heading} ${merged.body} ${merged.primaryAction ?? ""}`; - expect(text, state).not.toMatch(STAGING_WORDS); - expect(merged.heading.length, state).toBeGreaterThan(0); - } - for (const variant of Object.values(WALKTHROUGH_PASSKEY_READY_COPY_V1)) { - expect(`${variant.heading} ${variant.body}`).not.toMatch(STAGING_WORDS); - } - for (const code of AUTHENTICATOR_UI_DETAIL_CODES_V1) { - const detail = WALKTHROUGH_DETAIL_COPY_V1[code] ?? AUTHENTICATOR_UI_DETAIL_COPY_V1[code]; - expect(detail, code).not.toMatch(STAGING_WORDS); - } - expect(WALKTHROUGH_ACTION_LABELS_V1.return_to_rp).toBe("Return to Zoom"); - }); - - test("renders every frozen state without internal placeholder wording and with one heading", () => { - for (const state of AUTHENTICATOR_UI_STATES_V1) { - const view = renderWalkthrough(state); - expect(view.container.textContent, state).not.toMatch(STAGING_WORDS); - expect(view.container.querySelectorAll("main")).toHaveLength(1); - expect(view.container.querySelectorAll("h1")).toHaveLength(1); - expect(view.container.querySelector(".template-notice")).toBeNull(); - expect(view.container.querySelector(".staging-banner")).toBeNull(); - view.unmount(); - } - }); - - test("keeps the Figma assets while identifying simulated success", () => { - const pending = renderWalkthrough("biometric_simulation_pending"); - expect(pending.getByRole("heading", { name: "Verifying your selfie" })).toBeDefined(); - expect(pending.getByText("This might take few seconds")).toBeDefined(); - expect(pending.container.querySelector(".hero-icon--progress")?.getAttribute("src")) - .toBe("/assets/figma/simulation-progress.svg"); - pending.unmount(); - - for (const state of ["biometric_simulated_pass", "issuance_simulation_pending"] as const) { - const view = renderWalkthrough(state); - expect(view.getByRole("main").dataset.visualSource).toBe("figma_5132_135071"); - expect(view.getByRole("heading", { name: "Verifying your selfie" })).toBeDefined(); - expect(view.container.querySelector(".hero-icon--progress")?.getAttribute("src")) - .toBe("/assets/figma/verification-complete.svg"); - expect(view.container.querySelector('.top-close[data-action="cancel"]')).not.toBeNull(); - view.unmount(); - } - - const success = renderWalkthrough("simulated_credential_ready"); - expect(success.getByRole("main").dataset.visualSource).toBe("figma_5132_135104"); - expect(success.getByRole("heading", { name: "Preview complete" })).toBeDefined(); - expect(success.getByText("Simulated result — no Selfie Check credential was issued.")).toBeDefined(); - expect(success.container.querySelector(".hero-icon--progress")?.getAttribute("src")) - .toBe("/assets/figma/success-emblem.svg"); - expect(success.getByRole("button", { name: "Return to Zoom" }).dataset.action).toBe("return_to_rp"); - expect(success.queryByRole("alert")).toBeNull(); - success.unmount(); - - const redirecting = renderWalkthrough("return_redirecting"); - expect(redirecting.getByRole("heading", { name: "You’re all set" })).toBeDefined(); - expect(redirecting.getByText("Returning to Zoom")).toBeDefined(); - redirecting.unmount(); - - const returned = renderWalkthrough("returned"); - expect(returned.getByRole("heading", { name: "Returned to Zoom" })).toBeDefined(); - expect(returned.container.querySelector(".partner-icon img")?.getAttribute("alt")).toBe("Zoom"); - expect(returned.container.querySelector(".hero-icon")).toBeNull(); - returned.unmount(); - }); - - test("opens with the Figma request disclosure for Zoom", () => { - const view = renderWalkthrough("request_review"); - expect(view.getByRole("heading", { name: "Request from Zoom" })).toBeDefined(); - expect(view.getByRole("heading", { name: "App will receive" })).toBeDefined(); - expect(view.container.querySelector(".partner-icon img")?.getAttribute("src")) - .toBe("/assets/figma/zoom-app-icon.png"); - const rows = [...view.container.querySelectorAll(".disclosure-row")].map((row) => ({ - text: row.querySelector("span")?.textContent, - marker: row.querySelectorAll("img")[1]?.getAttribute("alt"), - })); - expect(rows).toEqual([ - { text: "Proof of selfie", marker: "Included" }, - { text: "Your selfie", marker: "Not included" }, - { text: "Your passkey", marker: "Not included" }, - ]); - expect(view.getByRole("button", { name: "Continue" })).toBeDefined(); - view.unmount(); - }); - - test("keeps the gated route on the frozen staging presentation", () => { - const view = render( undefined} - />); - expect(view.getByRole("heading", { name: "Staging demo complete" })).toBeDefined(); - expect(view.container.textContent).toContain("Staging demo"); - expect(view.container.textContent).toContain("not a Selfie Check credential"); - expect(view.getByRole("button", { name: "Return to app" })).toBeDefined(); - view.unmount(); - }); - - test("has no automated accessibility violations on the walkthrough ending", async () => { - for (const state of [ - "request_review", - "biometric_simulation_pending", - "biometric_simulated_pass", - "simulated_credential_ready", - "returned", - ] as const) { - const view = renderWalkthrough(state); - const result = await axe.run(view.container, { - rules: { "color-contrast": { enabled: false } }, - }); - expect(result.violations, state).toEqual([]); - view.unmount(); - } - }); -}); diff --git a/apps/authenticator/test/registration.test.ts b/apps/authenticator/test/registration.test.ts new file mode 100644 index 0000000..d8439cc --- /dev/null +++ b/apps/authenticator/test/registration.test.ts @@ -0,0 +1,41 @@ +import { afterAll, beforeAll, beforeEach, expect, test } from "bun:test"; +import { GlobalRegistrator } from "@happy-dom/global-registrator"; +import { activateStagingWallet } from "../src/wallet/registration"; +import { registrationState, saveRegistrationState } from "../src/wallet/persistence"; +import type { WalletKit } from "../src/lib/walletkit"; + +beforeAll(() => GlobalRegistrator.register()); +afterAll(() => GlobalRegistrator.unregister()); +beforeEach(() => window.localStorage.clear()); +function fixture() { + const calls: string[] = []; + let fail = false; + const wallet = { + register: async () => { expect(registrationState("ab")).toBe("submitting"); calls.push("register"); if (fail) throw new Error("network"); }, + pollRegistration: async () => ({ state: "finalized" }), + initializeAuthenticator: async () => { calls.push("init"); }, + terminate: () => calls.push("terminate"), + } as unknown as WalletKit; + return { wallet, calls, fail: () => { fail = true; } }; +} +const activate = (wallet: WalletKit) => activateStagingWallet(wallet, new Uint8Array(32), "ab", new AbortController().signal, () => {}); +test("registers once and initializes the encrypted wallet", async () => { + const f = fixture(); await activate(f.wallet); + expect(f.calls).toEqual(["register", "init"]); + expect(registrationState("ab")).toBe("finalized"); +}); +test("ambiguous registration is persisted; retry checks the account without submitting again", async () => { + const f = fixture(); f.fail(); await expect(activate(f.wallet)).rejects.toThrow("may already have been submitted"); + expect(registrationState("ab")).toBe("submitting"); + const retry = fixture(); await activate(retry.wallet); + expect(retry.calls).toEqual(["init"]); +}); +test("finalized registration never submits again", async () => { + saveRegistrationState("ab", "finalized"); const f = fixture(); await activate(f.wallet); + expect(f.calls).toEqual(["init"]); +}); +test("malformed registration metadata fails closed", async () => { + window.localStorage.setItem("world-id-staging-registration-v1:ab", "unknown"); + const f = fixture(); await expect(activate(f.wallet)).rejects.toThrow("Saved registration"); + expect(f.calls).toEqual([]); +}); diff --git a/apps/authenticator/test/render-registry.test.ts b/apps/authenticator/test/render-registry.test.ts deleted file mode 100644 index f9f180e..0000000 --- a/apps/authenticator/test/render-registry.test.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - AUTHENTICATOR_UI_COPY_V1, - AUTHENTICATOR_UI_STATES_V1, -} from "@clean-start/contracts"; -import { - FIGMA_SCREEN_MATRIX_V1, - SCREEN_RENDER_REGISTRY_V1, -} from "../src/flow/render-registry"; -import { FIGMA_ASSET_PROVENANCE_V1 } from "../src/assets/provenance"; - -describe("authenticator render registry", () => { - test("has one renderer and frozen copy for every Main-owned UI state", () => { - expect(Object.keys(SCREEN_RENDER_REGISTRY_V1).sort()).toEqual( - [...AUTHENTICATOR_UI_STATES_V1].sort(), - ); - for (const state of AUTHENTICATOR_UI_STATES_V1) { - expect(SCREEN_RENDER_REGISTRY_V1[state]).toBeDefined(); - expect(AUTHENTICATOR_UI_COPY_V1[state].heading.length).toBeGreaterThan(0); - } - }); - - test("records exact design context for all fifteen nodes and the one unrendered variant", () => { - expect(FIGMA_SCREEN_MATRIX_V1.verified).toEqual([ - "5132:134352", - "5132:134394", - "5132:134441", - "5132:134488", - "5132:134535", - "5132:134582", - "5132:134643", - "5132:134692", - "5132:134743", - "5132:134841", - "5132:134939", - "5132:135038", - "5132:135071", - "5132:135104", - "5132:135141", - ]); - expect(FIGMA_SCREEN_MATRIX_V1.notFigmaVerified).toEqual([]); - expect(FIGMA_SCREEN_MATRIX_V1.verifiedNotRendered).toEqual(["5132:135141"]); - }); - - test("records exact source URLs and checksums for every committed Figma asset", () => { - expect(FIGMA_ASSET_PROVENANCE_V1).toHaveLength(17); - for (const asset of FIGMA_ASSET_PROVENANCE_V1) { - expect(asset.sourceUrl).toMatch(/^https:\/\/www\.figma\.com\/api\/mcp\/asset\//); - expect(asset.sha256).toMatch(/^[0-9a-f]{64}$/); - expect(asset.localPath).toMatch(/^\/assets\/figma\//); - } - expect(FIGMA_ASSET_PROVENANCE_V1.some((asset) => asset.nodeId === "5132:135038")).toBe(true); - expect(FIGMA_ASSET_PROVENANCE_V1.some((asset) => asset.nodeId === "5132:135071")).toBe(true); - expect(FIGMA_ASSET_PROVENANCE_V1.some((asset) => asset.nodeId === "5132:135104")).toBe(true); - }); - - test("matches every provenance checksum to the committed exact bytes", async () => { - const appRoot = new URL("../", import.meta.url); - for (const asset of FIGMA_ASSET_PROVENANCE_V1) { - const bytes = await Bun.file(new URL(`public${asset.localPath}`, appRoot)).arrayBuffer(); - const digest = await crypto.subtle.digest("SHA-256", bytes); - const actual = Array.from( - new Uint8Array(digest), - (byte) => byte.toString(16).padStart(2, "0"), - ).join(""); - expect(actual).toBe(asset.sha256); - } - }); -}); diff --git a/apps/authenticator/test/requests.test.ts b/apps/authenticator/test/requests.test.ts new file mode 100644 index 0000000..f111b9f --- /dev/null +++ b/apps/authenticator/test/requests.test.ts @@ -0,0 +1,84 @@ +import { afterEach, expect, spyOn, test } from "bun:test"; +import { signedRequest, encryptedRequest } from "../../../tests/integration/fixtures/request"; +import { loadIncomingRequest } from "../src/lib/requests/incoming-request"; +import { parseConnector, returnUrl } from "../src/lib/requests/connector"; +import { parsePayload } from "../src/lib/requests/proof-request"; +import { createProof } from "../src/lib/requests/prove"; +import type { WalletKit } from "../src/lib/walletkit"; + +let restore: (() => void) | undefined; +afterEach(() => { restore?.(); }); +const signal = () => new AbortController().signal; +async function fixture() { + const { payload, registry } = await signedRequest(); + const encrypted = await encryptedRequest(payload); + const sent: unknown[] = []; + const requests: string[] = []; + const mock = spyOn(globalThis, "fetch").mockImplementation((async (input: RequestInfo | URL, init?: RequestInit) => { + const url = String(input); requests.push(url); + if (url.startsWith("/api/staging-rp")) return Response.json(registry); + if (url.includes("/request/")) return Response.json(encrypted.body); + if (url.includes("/response/")) { + const wrapper = JSON.parse(String(init?.body)); + const decrypted = await crypto.subtle.decrypt({ name: "AES-GCM", iv: Buffer.from(wrapper.iv, "base64") }, encrypted.key, Buffer.from(wrapper.payload, "base64")); + sent.push(JSON.parse(new TextDecoder().decode(decrypted))); + return new Response(null, { status: 204 }); + } + throw new Error("Unexpected request"); + }) as typeof fetch); + restore = () => mock.mockRestore(); + return { payload, registry, encrypted, sent, requests }; +} +test("fetches, decrypts and validates a real-format RP request; encrypts the matching proof response", async () => { + const f = await fixture(); + const incoming = await loadIncomingRequest("http://localhost" + f.encrypted.query, signal(), () => {}); + expect(incoming?.proof).toEqual(f.payload.proof_request); + const response = { id: "test-request", responses: [{ issuer_schema_id: 11, proof: "test-proof" }] }; + await incoming!.deliver(JSON.stringify(response), signal()); + expect(f.sent).toEqual([{ proof_response: response }]); + await incoming!.cancel(signal()); + expect(f.sent[1]).toEqual({ error_code: "verification_rejected" }); + await expect(incoming!.deliver(JSON.stringify({ ...response, id: "wrong" }), signal())).rejects.toThrow("mismatched"); +}); +test("invalid signer and OPRF binding stop a request before wallet access", async () => { + const f = await fixture(); f.registry.oprfKeyId = "0x2"; + await expect(loadIncomingRequest("http://localhost" + f.encrypted.query, signal(), () => {})).rejects.toThrow("OPRF key"); + f.registry.oprfKeyId = "0x1"; f.registry.signer = `0x${"2".repeat(40)}`; + await expect(loadIncomingRequest("http://localhost" + f.encrypted.query, signal(), () => {})).rejects.toThrow("signature"); +}); +test("proof generation revalidates the request and passes its constraints unchanged", async () => { + const f = await fixture(); + const incoming = (await loadIncomingRequest("http://localhost" + f.encrypted.query, signal(), () => {}))!; + let serialized = ""; + const wallet = { + listCredentials: async () => [{ issuerSchemaId: 11n, isExpired: false, expiresAt: BigInt(Math.floor(Date.now()/1000)+3600), genesisIssuedAt: 0n }], + generateProof: async (json: string) => { serialized = json; return JSON.stringify({ id: incoming.proof.id, responses: [{}] }); }, + terminate: () => {}, + } as unknown as WalletKit; + await createProof(incoming, wallet, signal(), () => {}); + expect(JSON.parse(serialized)).toEqual(incoming.proof); + expect(f.requests.filter(url => url.startsWith("/api/staging-rp"))).toHaveLength(2); + incoming.unsupportedReason = "User presence required"; + serialized = ""; + await expect(createProof(incoming, wallet, signal(), () => {})).rejects.toThrow("Proof generation failed"); + expect(serialized).toBe(""); +}); +test("connector rejects unofficial bridges, duplicates, malformed keys and unsafe callbacks", async () => { + const { payload } = await signedRequest(); const f = await encryptedRequest(payload); + for (const suffix of ["&i=other", "&b=https://evil.example", "&return_to=javascript:alert(1)"]) { + expect(() => parseConnector("http://localhost" + f.query + suffix)).toThrow(); + } + expect(() => parseConnector("http://localhost/?i=bad&k=bad")).toThrow(); + expect(() => returnUrl("https://user:pass@example.com")).toThrow(); + expect(returnUrl("http://localhost:3000/done")).toBe("http://localhost:3000/done"); +}); +test("payload validation rejects expiry, misleading action and malformed nested requirements", async () => { + const { payload } = await signedRequest(); + expect(() => parsePayload(JSON.stringify(payload))).not.toThrow(); + expect(() => parsePayload(JSON.stringify({ ...payload, environment: "production" }))).toThrow(); + expect(() => parsePayload(JSON.stringify({ ...payload, action: "another-action" }))).toThrow(); + expect(() => parsePayload(JSON.stringify({ ...payload, return_to_url: 4 }))).toThrow(); + for (const overrides of [{ expires_at: 1 }, { constraints: "unknown" }, { constraints: { any: [] } }, { constraints: { all: ["credential"], extra: true } }]) { + expect(() => parsePayload(JSON.stringify({ ...payload, proof_request: { ...payload.proof_request, ...overrides } }))).toThrow(); + } +}); diff --git a/apps/authenticator/test/screens.test.tsx b/apps/authenticator/test/screens.test.tsx deleted file mode 100644 index 2d48991..0000000 --- a/apps/authenticator/test/screens.test.tsx +++ /dev/null @@ -1,249 +0,0 @@ -import { afterAll, beforeAll, describe, expect, test } from "bun:test"; -import { GlobalRegistrator } from "@happy-dom/global-registrator"; -import { cleanup, fireEvent, render } from "@testing-library/react"; -import axe from "axe-core"; -import { - AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, - AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, - AUTHENTICATOR_UI_STATES_V1, - ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1, - ENROLLMENT_SESSION_STATES_V2, - makeAuthenticatorUiSnapshotV1, - type AuthenticatorUiDetailCodeV1, - type AuthenticatorUiStateIdV1, - type EnrollmentSessionStateV2, -} from "@clean-start/contracts"; -import { FlowScreenV1 } from "../src/components/FlowScreen"; -import { - CAPTURE_OVAL_CLIP_PATH_V1, - CAPTURE_OVAL_DOT_COUNT_V1, - CAPTURE_OVAL_VIDEO_INSET_PX_V1, -} from "../src/assets/capture-oval-geometry"; - -beforeAll(() => GlobalRegistrator.register()); -afterAll(() => { - cleanup(); - GlobalRegistrator.unregister(); -}); - -function detailFor(state: AuthenticatorUiStateIdV1): AuthenticatorUiDetailCodeV1 | null { - if (state === "capture_guidance_adjust") return "move_closer"; - if (state === "capture_guidance_retake") return "image_blurry"; - if (state === "capture_guidance_unavailable") return "framing_guidance_unavailable"; - if (state === "capture_error") return "permission_denied"; - if (state === "session_error") return "network_timeout"; - if (state === "return_callback_failed") return "navigation_failed"; - if (state === "flow_failed") return "safe_internal_error"; - return null; -} - -function authoritativeFor(state: AuthenticatorUiStateIdV1): EnrollmentSessionStateV2 | null { - for (const serverState of ENROLLMENT_SESSION_STATES_V2) { - if (ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1[serverState].includes(state)) return serverState; - } - return null; -} - -function snapshot(state: AuthenticatorUiStateIdV1) { - return makeAuthenticatorUiSnapshotV1({ - state, - detailCode: detailFor(state), - authoritativeSessionState: authoritativeFor(state), - rpPresentationId: state === "request_checking" ? null : "zoom_demo", - visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[state], - }); -} - -describe("complete UI render registry", () => { - test("renders one main and one h1 for every frozen state", () => { - for (const state of AUTHENTICATOR_UI_STATES_V1) { - const view = render( undefined} />); - expect(view.container.querySelectorAll("main")).toHaveLength(1); - expect(view.container.querySelectorAll("h1")).toHaveLength(1); - expect(view.container.textContent).toContain("Staging demo"); - expect(view.container.querySelector("main")?.dataset.state).toBe(state); - expect(view.container.querySelectorAll("button").length).toBeGreaterThanOrEqual( - AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state].length, - ); - view.unmount(); - } - }); - - test("renders the safe RP disclosure and no native browser chrome", () => { - const view = render( undefined} />); - expect(view.getByRole("heading", { name: "Camera-flow demo for Zoom" })).toBeDefined(); - expect(view.getByText("Staging workflow result")).toBeDefined(); - expect(view.getByText("Camera images stay on this device")).toBeDefined(); - expect(document.body.textContent).not.toContain("Proof of selfie"); - expect(document.body.textContent).not.toContain("9:41"); - expect(document.body.textContent).not.toContain("world.id"); - }); - - test("labels quota-blocked outcome families as not Figma verified", () => { - const view = render( undefined} />); - expect(view.getByRole("main").dataset.visualSource).toBe("not_figma_verified"); - expect(view.getByText("Template view · Not Figma verified")).toBeDefined(); - }); - - test("uses the exact pending asset with security-safe copy and no face fixture", () => { - const pending = render( undefined} />); - expect(pending.getByRole("heading", { name: "Running staging scenario" })).toBeDefined(); - expect(pending.container.querySelector(".hero-icon--progress")?.src) - .toEndWith("/assets/figma/simulation-progress.svg"); - expect(pending.container.textContent).not.toContain("Verifying your selfie"); - pending.unmount(); - - const capture = render( undefined} />); - const imageSources = [...capture.container.querySelectorAll("img")] - .map((image) => image.getAttribute("src")); - expect(imageSources.some((source) => source?.endsWith(".png"))).toBe(false); - const mediaHost = capture.container.querySelector(".media-host--visible"); - expect(mediaHost?.getAttribute("aria-hidden")).toBeNull(); - expect(mediaHost?.querySelector(".media-clip video")).not.toBeNull(); - expect(mediaHost?.querySelector(".capture-ring")).not.toBeNull(); - expect(mediaHost?.querySelector(".media-clip")?.style.clipPath) - .toBe(CAPTURE_OVAL_CLIP_PATH_V1); - expect(CAPTURE_OVAL_CLIP_PATH_V1.match(/\d+\.\d+% \d+\.\d+%/g)) - .toHaveLength(CAPTURE_OVAL_DOT_COUNT_V1); - expect(CAPTURE_OVAL_VIDEO_INSET_PX_V1).toBe(8); - expect(CAPTURE_OVAL_VIDEO_INSET_PX_V1).toBeGreaterThan(2.94866); - }); - - test("renders allowlisted live guidance inside the capture status pill", () => { - const view = render( undefined} - liveCaptureGuidance={{ code: "move_closer", text: "Move closer" }} - />); - const status = view.getByRole("status"); - expect(status.getAttribute("data-live-guidance")).toBe("move_closer"); - expect(view.getByRole("heading", { name: "Move closer" })).toBeDefined(); - view.rerender( undefined} - liveCaptureGuidance={{ code: "move_closer", text: "Move closer" }} - />); - expect(view.getByRole("heading", { name: "Capture complete" })).toBeDefined(); - }); - - test("reveals the exact blue Figma ring one dot at a time and shows completion", () => { - const view = render( undefined} - liveCaptureGuidance={{ - code: "hold_steady", - text: "Great position, hold steady", - }} - captureProgress={0.5} - hiddenActions={["collect_frame_metadata"]} - />); - const progress = view.container.querySelector(".capture-visual"); - const blueRing = view.container.querySelector(".capture-ring--progress"); - expect(progress?.dataset.captureProgressDots).toBe("32"); - expect(blueRing?.getAttribute("src")).toBe("/assets/figma/capture-ring-complete.svg"); - expect(blueRing?.style.getPropertyValue("--capture-progress-angle")).toBe("180deg"); - expect(view.queryByRole("button", { name: "Collect frame metadata" })).toBeNull(); - - view.rerender( undefined} - liveCaptureGuidance={{ - code: "hold_steady", - text: "Great position, hold steady", - }} - captureProgress={1} - hiddenActions={["collect_frame_metadata"]} - />); - expect(view.getByRole("heading", { name: "You’re all set" })).toBeDefined(); - expect(view.container.querySelector(".capture-ring--progress-complete")).not.toBeNull(); - expect(view.container.querySelector(".capture-message img")?.getAttribute("src")) - .toBe("/assets/figma/capture-check.svg"); - }); - - test("exposes every frozen action and sends its exact action id", () => { - const actions: string[] = []; - const view = render( actions.push(action)} - />); - fireEvent.click(view.getByRole("button", { name: "Retry" })); - fireEvent.click(view.getByRole("button", { name: "Check status" })); - fireEvent.click(view.getAllByRole("button", { name: "Cancel" }).at(-1)!); - expect(actions).toEqual(["retry_same_operation", "query_status", "cancel"]); - }); - - test("moves focus to the new heading and keeps visible cancel controls semantic", () => { - const view = render( undefined} />); - expect(document.activeElement).toBe(view.getByRole("heading", { name: "Try the authenticator step" })); - expect(view.getByRole("button", { name: "Cancel" }).querySelector("img")?.getAttribute("src")) - .toBe("/assets/figma/close.svg"); - view.rerender( undefined} />); - expect(document.activeElement).toBe(view.getByRole("heading", { name: "Try the camera step" })); - }); - - test("renders Cancel exactly once and reserves the top close for verified layouts", () => { - for (const state of AUTHENTICATOR_UI_STATES_V1) { - if (!AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state].includes("cancel")) continue; - const view = render( undefined} />); - expect(view.container.querySelectorAll('[data-action="cancel"]')).toHaveLength(1); - view.unmount(); - } - - const verified = render( undefined} />); - expect(verified.container.querySelector('.top-close[data-action="cancel"]')).not.toBeNull(); - expect(verified.container.querySelector('.actions [data-action="cancel"]')).toBeNull(); - verified.unmount(); - - const generic = render( undefined} />); - expect(generic.container.querySelector(".top-close")).toBeNull(); - expect(generic.container.querySelector('.actions [data-action="cancel"]')).not.toBeNull(); - }); - - test("announces every admission-block terminal as an assertive alert", () => { - for (const state of [ - "admission_update_required", - "admission_insecure", - "admission_framed", - "admission_private", - "admission_pwa", - "admission_unknown", - ] as const) { - const view = render( undefined} />); - const alert = view.getByRole("alert"); - expect(alert.getAttribute("aria-live")).toBe("assertive"); - expect(alert.textContent).toContain(view.getByRole("heading").textContent); - view.unmount(); - } - }); - - test("does not announce success, cancellation, closure, or returned terminals as alerts", () => { - for (const state of [ - "simulated_credential_ready", - "flow_cancelled", - "flow_closed", - "returned", - ] as const) { - const view = render( undefined} />); - expect(view.queryByRole("alert")).toBeNull(); - view.unmount(); - } - }); - - test("has no automated accessibility violations in each visual family", async () => { - for (const state of [ - "request_review", - "demo_authenticator_intro", - "capture_intro", - "capture_preview", - "biometric_simulation_pending", - "biometric_simulated_reject", - ] as const) { - const view = render( undefined} />); - const result = await axe.run(view.container, { - rules: { "color-contrast": { enabled: false } }, - }); - expect(result.violations).toEqual([]); - view.unmount(); - } - }); -}); diff --git a/apps/authenticator/test/selfie-routing.test.ts b/apps/authenticator/test/selfie-routing.test.ts new file mode 100644 index 0000000..fdb98ee --- /dev/null +++ b/apps/authenticator/test/selfie-routing.test.ts @@ -0,0 +1,121 @@ +import { test } from 'bun:test' +import assert from 'node:assert/strict' +import type { CredentialMetadata } from '../src/lib/walletkit' +import { + credentialAvailability, + credentialRequirementsLabel, + type ProofRequest, + type Constraint, +} from '../src/lib/requests/proof-request' + +const request = (constraints?: Constraint): ProofRequest => ({ + id: 'test', + version: 1, + proof_type: 'uniqueness', + rp_id: 'rp_1', + oprf_key_id: '0x1', + nonce: '0x00', + signature: '0x00', + created_at: 100, + expires_at: 200, + action: '0x00', + session_id: null, + proof_requests: [ + { identifier: 'selfie', issuer_schema_id: 11 }, + { identifier: 'orb', issuer_schema_id: 1 }, + ], + constraints, +}) +const credential = (schema: number, overrides: Partial = {}): CredentialMetadata => + ({ + credentialId: BigInt(schema), + issuerSchemaId: BigInt(schema), + genesisIssuedAt: BigInt(100), + expiresAt: BigInt(300), + isExpired: false, + ...overrides, + }) as CredentialMetadata + +test('a missing selfie credential starts enrollment; an available one continues to proof', () => { + const selfie = request('selfie') + assert.equal(credentialAvailability(selfie, []).needsSelfieEnrollment, true) + const available = credentialAvailability(selfie, [credential(11)]) + assert.equal(available.satisfied, true) + assert.equal(available.needsSelfieEnrollment, false) +}) + +test('an expired selfie credential can enroll but an active credential outside date bounds does not loop', () => { + const selfie = request('selfie') + assert.equal(credentialAvailability(selfie, [credential(11, { isExpired: true })]).needsSelfieEnrollment, true) + selfie.proof_requests[0].genesis_issued_at_min = 150 + const unavailable = credentialAvailability(selfie, [credential(11)]) + assert.equal(unavailable.satisfied, false) + assert.equal(unavailable.needsSelfieEnrollment, false) +}) + +test('an available alternative skips selfie enrollment, including nested constraints', () => { + const alternative = request({ any: [{ all: ['selfie'] }, 'orb'] }) + for (const schema of [1, 11]) { + const available = credentialAvailability(alternative, [credential(schema)]) + assert.equal(available.satisfied, true) + assert.equal(available.canEnrollSelfie, false) + assert.equal(available.needsSelfieEnrollment, false) + } + const missing = credentialAvailability(alternative, []) + assert.equal(missing.satisfied, false) + assert.equal(missing.canEnrollSelfie, true) + assert.equal(missing.needsSelfieEnrollment, false) + assert.equal(missing.requiresOrb, false) +}) + +test('enrollment is offered only when adding selfie can satisfy the complete request', () => { + for (const all of [request(), request({ all: ['selfie', 'orb'] })]) { + assert.equal(credentialAvailability(all, []).needsSelfieEnrollment, false) + assert.equal(credentialAvailability(all, [credential(1)]).needsSelfieEnrollment, true) + } + assert.equal(credentialAvailability(request('orb'), []).needsSelfieEnrollment, false) +}) + +test('Orb-only requests use an eligible Orb credential and never substitute Selfie', () => { + const orb = request('orb') + for (const records of [[], [credential(11)], [credential(1, { isExpired: true })]]) { + const result = credentialAvailability(orb, records) + assert.equal(result.satisfied, false) + assert.equal(result.requiresOrb, true) + assert.equal(result.canEnrollSelfie, false) + assert.equal(result.needsSelfieEnrollment, false) + } + assert.equal(credentialAvailability(orb, [credential(1)]).satisfied, true) + orb.proof_requests[1].expires_at_min = 400 + assert.equal(credentialAvailability(orb, [credential(1)]).satisfied, false) +}) + +test('unknown issuers and nested alternatives do not become an automatic Selfie choice', () => { + const mixed = request({ any: ['selfie', { all: ['orb', 'other'] }] }) + mixed.proof_requests.push({ identifier: 'other', issuer_schema_id: 128 }) + const result = credentialAvailability(mixed, []) + assert.equal(result.canEnrollSelfie, true) + assert.equal(result.needsSelfieEnrollment, false) + mixed.constraints = 'other' + assert.equal(credentialAvailability(mixed, []).canEnrollSelfie, false) + assert.equal(credentialAvailability(mixed, [credential(128)]).satisfied, true) +}) + +test('Selfie required in every alternative only enrolls when it can complete the request', () => { + const mixed = request({ any: [{ all: ['selfie', 'orb'] }, { all: ['selfie', 'other'] }] }) + mixed.proof_requests.push({ identifier: 'other', issuer_schema_id: 128 }) + assert.equal(credentialAvailability(mixed, []).canEnrollSelfie, false) + assert.equal(credentialAvailability(mixed, [credential(128)]).needsSelfieEnrollment, true) +}) + +test('request summary preserves AND/OR groups and identifies credentials by schema', () => { + assert.equal(credentialRequirementsLabel(request('orb')), 'Orb') + assert.equal(credentialRequirementsLabel(request('selfie')), 'Selfie Check') + assert.equal(credentialRequirementsLabel(request()), '(Selfie Check and Orb)') + assert.equal(credentialRequirementsLabel(request({ any: ['selfie', 'orb'] })), '(Selfie Check or Orb)') + const nested = request({ any: ['selfie', { all: ['orb', 'other'] }] }) + nested.proof_requests.push({ identifier: 'other', issuer_schema_id: 128 }) + assert.equal(credentialRequirementsLabel(nested), '(Selfie Check or (Orb and Schema 128))') + nested.proof_requests[0].issuer_schema_id = 1 + assert.equal(credentialRequirementsLabel({ ...nested, constraints: 'selfie' }), 'Orb') +}) diff --git a/apps/authenticator/test/server-composition.test.ts b/apps/authenticator/test/server-composition.test.ts deleted file mode 100644 index 3086ed1..0000000 --- a/apps/authenticator/test/server-composition.test.ts +++ /dev/null @@ -1,252 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - FRAME_BUNDLE_V0, - FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - SIMULATION_MODE, - SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, - SIMULATOR_BROWSER_SESSION_ERROR_V0, - SIMULATOR_BROWSER_SESSION_VIEW_V0, - SIMULATOR_UI_BOOTSTRAP_V0, - computeFrameBundleDigestV0, - type BiometricSimulationScenarioV0, - type FrameBundleV0, - type IssuanceSimulationScenarioV0, - type SimulatorBrowserSessionViewV0, -} from "@clean-start/contracts"; -import { createAuthenticatorServerRuntimeV0 } from "../src/server/runtime.server"; - -async function sha256Text(value: string): Promise { - const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value)); - return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join(""); -} - -async function metadataBundle( - session: SimulatorBrowserSessionViewV0, - accountDigest: string, -): Promise { - const pending: FrameBundleV0 = { - kind: FRAME_BUNDLE_V0, - mode: SIMULATION_MODE, - sessionId: session.sessionId, - policyId: session.capturePolicy.policyId, - accountPublicMaterialDigestSha256: accountDigest, - nonceDigestSha256: await sha256Text(session.nonceBase64Url), - dataMode: "metadata_only", - frames: [{ - transportIndex: 0, - width: 1, - height: 1, - encoding: "rgba8", - byteLength: 4, - frameDigestSha256: "a".repeat(64), - }], - totalByteLength: 4, - digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - artifactDigestSha256: "0".repeat(64), - }; - return { ...pending, artifactDigestSha256: await computeFrameBundleDigestV0(pending) }; -} - -async function runScenario( - biometricScenario: BiometricSimulationScenarioV0, - issuanceScenario: IssuanceSimulationScenarioV0, -) { - const runtime = await createAuthenticatorServerRuntimeV0({ - testConfiguration: { - kind: "authenticator_server_test_configuration_v0", - biometricScenario, - issuanceScenario, - }, - }); - const bootstrap = await runtime.browserPort.bootstrap(); - expect(bootstrap.kind).toBe(SIMULATOR_UI_BOOTSTRAP_V0); - if (bootstrap.kind !== SIMULATOR_UI_BOOTSTRAP_V0) throw new Error("bootstrap failed"); - - const created = await runtime.browserPort.createSession({ idempotencyKey: `create-${biometricScenario}-${issuanceScenario}` }); - expect(created.kind).toBe(SIMULATOR_BROWSER_SESSION_VIEW_V0); - if (created.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create failed"); - - const demo = await runtime.browserPort.beginDemoAuthenticator({ - sessionId: created.sessionId, - browserHandle: created.browserHandle, - idempotencyKey: `demo-${biometricScenario}-${issuanceScenario}`, - }); - expect(demo.kind).toBe(SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0); - if (demo.kind !== SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0) throw new Error("demo failed"); - - const completed = await runtime.browserPort.completeDemoAuthenticator({ - sessionId: created.sessionId, - browserHandle: created.browserHandle, - idempotencyKey: demo.idempotencyKey, - completionHandle: demo.completionHandle, - }); - if (completed.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("complete failed"); - const captureReady = await runtime.browserPort.prepareCapture({ - sessionId: completed.sessionId, - browserHandle: completed.browserHandle, - }); - if (captureReady.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("prepare failed"); - const result = await runtime.browserPort.submitCapture({ - sessionId: captureReady.sessionId, - browserHandle: captureReady.browserHandle, - idempotencyKey: `capture-${biometricScenario}-${issuanceScenario}`, - nonceBase64Url: captureReady.nonceBase64Url, - frameBundle: await metadataBundle(captureReady, bootstrap.accountPublicMaterialDigestSha256), - }); - return { runtime, result }; -} - -describe("server-only real W06/W10 composition", () => { - test("uses five distinct Ed25519 public keys plus a separate HMAC handle key", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - expect(runtime.keyReadiness.ed25519PublicFingerprints).toHaveLength(5); - expect(new Set(runtime.keyReadiness.ed25519PublicFingerprints).size).toBe(5); - expect(runtime.keyReadiness.handleKeyAlgorithm).toBe("HMAC"); - }); - - test.each([ - ["happy_path", "issue_success", "simulated_credential_ready"], - ["happy_path", "issue_reject", "simulated_issuance_reject"], - ["happy_path", "issue_unavailable", "simulated_issuance_unavailable"], - ["spoof_reject", "issue_success", "simulated_reject"], - ["spoof_reject", "issue_reject", "simulated_reject"], - ["spoof_reject", "issue_unavailable", "simulated_reject"], - ["capture_retry", "issue_success", "simulated_retry"], - ["capture_retry", "issue_reject", "simulated_retry"], - ["capture_retry", "issue_unavailable", "simulated_retry"], - ["dependency_unavailable", "issue_success", "simulated_unavailable"], - ["dependency_unavailable", "issue_reject", "simulated_unavailable"], - ["dependency_unavailable", "issue_unavailable", "simulated_unavailable"], - ] as const)("maps %s / %s to %s without exposing an artifact body", async (biometric, issuance, expectedState) => { - const { result } = await runScenario(biometric, issuance); - expect(result.kind).toBe(SIMULATOR_BROWSER_SESSION_VIEW_V0); - if (result.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("submit failed"); - expect(result.state).toBe(expectedState); - expect(Object.keys(result)).not.toContain("credential"); - expect(Object.keys(result)).not.toContain("receipt"); - }); - - test("replays one opaque demo completion result exactly until expiry", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const created = await runtime.browserPort.createSession({ idempotencyKey: "create-replay" }); - if (created.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create failed"); - const input = { - sessionId: created.sessionId, - browserHandle: created.browserHandle, - idempotencyKey: "demo-replay", - }; - const first = await runtime.browserPort.beginDemoAuthenticator(input); - const second = await runtime.browserPort.beginDemoAuthenticator(input); - expect(first).toEqual(second); - expect(first.kind).toBe(SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0); - if (first.kind === SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0) { - expect(first.completionHandle).not.toContain(created.sessionId); - expect(first.claims).toEqual({ - webauthnPerformed: false, - prfEvaluated: false, - worldIdCreated: false, - }); - } - }); - - test("rejects a completion handle replayed with a changed issuing idempotency key", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const created = await runtime.browserPort.createSession({ idempotencyKey: "create-binding" }); - if (created.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create failed"); - const ready = await runtime.browserPort.beginDemoAuthenticator({ - sessionId: created.sessionId, - browserHandle: created.browserHandle, - idempotencyKey: "demo-original", - }); - if (ready.kind !== SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0) throw new Error("demo failed"); - const changed = await runtime.browserPort.completeDemoAuthenticator({ - sessionId: created.sessionId, - browserHandle: created.browserHandle, - idempotencyKey: "demo-changed", - completionHandle: ready.completionHandle, - }); - expect(changed.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - if (changed.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - expect(changed.reasonCode).toBe("binding_mismatch"); - } - const tampered = await runtime.browserPort.completeDemoAuthenticator({ - sessionId: created.sessionId, - browserHandle: created.browserHandle, - idempotencyKey: ready.idempotencyKey, - completionHandle: `${ready.completionHandle.slice(0, -1)}x`, - }); - expect(tampered.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - if (tampered.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - expect(tampered.reasonCode).toBe("binding_mismatch"); - } - const status = await runtime.browserPort.getStatus({ - sessionId: created.sessionId, - browserHandle: created.browserHandle, - }); - expect(status.kind).toBe(SIMULATOR_BROWSER_SESSION_VIEW_V0); - if (status.kind === SIMULATOR_BROWSER_SESSION_VIEW_V0) expect(status.state).toBe("created"); - }); - - test("rejects return for a fresh live session but accepts explicit terminal outcomes", async () => { - const freshRuntime = await createAuthenticatorServerRuntimeV0(); - const fresh = await freshRuntime.browserPort.createSession({ idempotencyKey: "fresh-return" }); - if (fresh.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create failed"); - const early = await freshRuntime.browserPort.returnToRp({ - sessionId: fresh.sessionId, - browserHandle: fresh.browserHandle, - }); - expect(early.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - if (early.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - expect(early.reasonCode).toBe("invalid_state"); - } - - const { runtime, result } = await runScenario("spoof_reject", "issue_success"); - if (result.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("scenario failed"); - const accepted = await runtime.browserPort.returnToRp({ - sessionId: result.sessionId, - browserHandle: result.browserHandle, - }); - expect(accepted.kind).toBe(SIMULATOR_BROWSER_RETURN_ACCEPTED_V0); - - const cancelledRuntime = await createAuthenticatorServerRuntimeV0(); - const cancellable = await cancelledRuntime.browserPort.createSession({ - idempotencyKey: "cancelled-return", - }); - if (cancellable.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create failed"); - const cancelled = await cancelledRuntime.browserPort.cancel({ - sessionId: cancellable.sessionId, - browserHandle: cancellable.browserHandle, - }); - if (cancelled.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("cancel failed"); - const cancelledReturn = await cancelledRuntime.browserPort.returnToRp({ - sessionId: cancelled.sessionId, - browserHandle: cancelled.browserHandle, - }); - expect(cancelledReturn.kind).toBe(SIMULATOR_BROWSER_RETURN_ACCEPTED_V0); - }); - - test("accepts return after a server-observed terminal demo error", async () => { - const runtime = await createAuthenticatorServerRuntimeV0({ - testConfiguration: { - kind: "authenticator_server_test_configuration_v0", - biometricScenario: "happy_path", - issuanceScenario: "issue_success", - demoAuthenticatorOutcome: "unavailable", - }, - }); - const created = await runtime.browserPort.createSession({ idempotencyKey: "demo-exit-create" }); - if (created.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create failed"); - const unavailable = await runtime.browserPort.beginDemoAuthenticator({ - sessionId: created.sessionId, - browserHandle: created.browserHandle, - idempotencyKey: "demo-exit", - }); - expect(unavailable.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - const accepted = await runtime.browserPort.returnToRp({ - sessionId: created.sessionId, - browserHandle: created.browserHandle, - }); - expect(accepted.kind).toBe(SIMULATOR_BROWSER_RETURN_ACCEPTED_V0); - }); -}); diff --git a/apps/authenticator/test/staging-compatibility.test.ts b/apps/authenticator/test/staging-compatibility.test.ts deleted file mode 100644 index eec63a8..0000000 --- a/apps/authenticator/test/staging-compatibility.test.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import type { BrowserAdmissionDecisionV1 } from "@clean-start/browser-admission"; -import { - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - SIMULATOR_BROWSER_SESSION_PORT_V0, - type SimulatorBrowserDemoAuthenticatorReadyV0, -} from "@clean-start/contracts"; -import { makeExplicitStagingCaptureEntryV0 } from "../src/adapters/staging-compatibility"; - -const admission: BrowserAdmissionDecisionV1 = { - version: "browser_admission_v1", - outcome: "eligible_candidate", - reason: "candidate_only_ceremony_required", - mayStartSensitiveFlow: true, - browser: "safari", - iosVersionBand: "ios_18_plus", - context: "normal_tab", - engine: "unknown", - region: "unknown", - provider: "unknown", - capabilities: { - webAuthnApi: "available", - platformUv: "available", - clientCapabilitiesApi: "unknown", - conditionalMediation: "unknown", - mediaApi: "available", - visibility: "visible", - }, -}; - -const ready: SimulatorBrowserDemoAuthenticatorReadyV0 = { - kind: SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - sessionId: "session", - idempotencyKey: "demo-idempotency", - completionHandle: "opaque-completion", - claims: { - webauthnPerformed: false, - prfEvaluated: false, - worldIdCreated: false, - }, - expiresAt: "2030-01-01T00:00:00.000Z", -}; - -describe("explicit staging compatibility", () => { - test("isolates the legacy W04 prfReady translation behind negative demo claims", () => { - expect(makeExplicitStagingCaptureEntryV0({ admission, ready, userActivated: true })).toEqual({ - userActivated: true, - secureTopLevelContextApproved: true, - prfReady: true, - iosMajor: 18, - browser: "safari", - }); - expect(ready.claims).toEqual({ - webauthnPerformed: false, - prfEvaluated: false, - worldIdCreated: false, - }); - }); - - test("rejects every noneligible admission decision", () => { - expect(() => makeExplicitStagingCaptureEntryV0({ - admission: { ...admission, outcome: "unsupported", mayStartSensitiveFlow: false }, - ready, - userActivated: true, - })).toThrow("staging_capture_gate_not_satisfied"); - }); -}); diff --git a/apps/authenticator/test/static-demo.test.ts b/apps/authenticator/test/static-demo.test.ts deleted file mode 100644 index bf4305e..0000000 --- a/apps/authenticator/test/static-demo.test.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { afterAll, beforeAll, describe, expect, test } from "bun:test"; -import { GlobalRegistrator } from "@happy-dom/global-registrator"; -import { - AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, - makeAuthenticatorUiSnapshotV1, -} from "@clean-start/contracts"; -import { createAuthenticatorServerRuntimeV0 } from "../src/server/runtime.server"; - -beforeAll(() => GlobalRegistrator.register()); -afterAll(() => GlobalRegistrator.unregister()); - -describe("static demo entry", () => { - test("drives the in-page simulator through the passkey step with no HTTP at all", async () => { - const { makeAuthenticatorControllerFactoryV1 } = await import("../src/App"); - const runtime = await createAuthenticatorServerRuntimeV0(); - const originalFetch = globalThis.fetch; - let fetchCalls = 0; - globalThis.fetch = (() => { - fetchCalls += 1; - throw new TypeError("static demo must not use HTTP"); - }) as unknown as typeof fetch; - try { - const controller = makeAuthenticatorControllerFactoryV1(runtime.browserPort)( - { getVideo: () => null, getCanvas: () => null }, - makeAuthenticatorUiSnapshotV1({ - state: "request_checking", - visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1.request_checking, - }), - ); - controller.start(); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("request_review"); - controller.act("continue"); - await controller.waitForIdle(); - expect(["admission_safari_candidate", "admission_chrome_candidate"]) - .toContain(controller.snapshot.state); - controller.act("continue"); - expect(controller.snapshot.state).toBe("demo_authenticator_intro"); - controller.act("start_demo_authenticator"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("demo_authenticator_ready"); - expect(controller.snapshot.authoritativeSessionState).toBe("passkey_complete"); - controller.dispose(); - } finally { - globalThis.fetch = originalFetch; - } - expect(fetchCalls).toBe(0); - }); - - test("keeps the in-page simulator out of the served app entry", async () => { - const served = await Bun.file(new URL("../src/main.tsx", import.meta.url)).text(); - expect(served).not.toContain("runtime.server"); - expect(served).not.toContain("static-demo"); - const staticEntry = await Bun.file(new URL("../static-demo/main.tsx", import.meta.url)).text(); - expect(staticEntry).toContain("createAuthenticatorServerRuntimeV0"); - expect(staticEntry).toContain("makeAuthenticatorControllerFactoryV1"); - }); -}); diff --git a/apps/authenticator/test/walkthrough.test.ts b/apps/authenticator/test/walkthrough.test.ts deleted file mode 100644 index ba2dc87..0000000 --- a/apps/authenticator/test/walkthrough.test.ts +++ /dev/null @@ -1,219 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, - SIMULATOR_UI_QUALITY_POLICY_V0, - validateFrameBundleV0, - type FrameBundleV0, -} from "@clean-start/contracts"; -import type { - BrowserCaptureAdapterV1, - BrowserCaptureCallbacksV1, - BrowserCaptureStartV1, -} from "../src/adapters/browser-capture"; -import { createLocalDemoPasskeyV1 } from "../src/walkthrough/live-passkey"; -import { LIVE_GUIDANCE_MODEL_V1 } from "../src/walkthrough/model-provenance"; -import { - LocalWalkthroughCaptureAdapterV1, - makeLocalWalkthroughAdmissionV1, -} from "../src/walkthrough/walkthrough-adapters"; - -const expiresAt = "2030-01-01T00:00:00.000Z"; - -function randomBytes(length: number): Uint8Array { - return Uint8Array.from({ length }, (_value, index) => index + 1); -} - -describe("local walkthrough live boundaries", () => { - test("pins the self-hosted face guidance model to its official checksum", async () => { - const model = await Bun.file(new URL( - `../public${LIVE_GUIDANCE_MODEL_V1.modelPath}`, - import.meta.url, - )).arrayBuffer(); - const digest = await crypto.subtle.digest("SHA-256", model); - const actual = Array.from( - new Uint8Array(digest), - (byte) => byte.toString(16).padStart(2, "0"), - ).join(""); - expect(actual).toBe(LIVE_GUIDANCE_MODEL_V1.modelSha256); - expect(LIVE_GUIDANCE_MODEL_V1.securityDecision).toBe(false); - expect(LIVE_GUIDANCE_MODEL_V1.sendsMeasurementsToServer).toBe(false); - }); - - test("creates a real browser credential request but retains only status and PRF capability", async () => { - let observed: CredentialCreationOptions | undefined; - const result = await createLocalDemoPasskeyV1({ - secureContext: true, - hostname: "localhost", - publicKeyCredentialAvailable: true, - randomBytes, - nowEpochMs: () => 1_234, - createCredential: async (options) => { - observed = options; - return { - type: "public-key", - getClientExtensionResults: () => ({ prf: { enabled: true } }), - } as unknown as Credential; - }, - }); - - expect(result).toEqual({ status: "created", prfCapability: "available" }); - expect(Object.keys(result).sort()).toEqual(["prfCapability", "status"]); - expect(observed?.publicKey?.rp).toEqual({ - id: "localhost", - name: "World ID", - }); - expect(observed?.publicKey?.authenticatorSelection).toMatchObject({ - residentKey: "required", - userVerification: "required", - }); - expect(observed?.publicKey?.extensions).toEqual({ prf: {} }); - expect(JSON.stringify(result)).not.toMatch(/credential|private|secret|provider/i); - }); - - test("classifies unavailable and cancelled passkey prompts without leaking errors", async () => { - const unavailable = await createLocalDemoPasskeyV1({ - secureContext: false, - hostname: "localhost", - publicKeyCredentialAvailable: false, - randomBytes, - nowEpochMs: () => 1, - }); - expect(unavailable).toEqual({ status: "unsupported", prfCapability: "unknown" }); - - const cancelled = await createLocalDemoPasskeyV1({ - secureContext: true, - hostname: "localhost", - publicKeyCredentialAvailable: true, - randomBytes, - nowEpochMs: () => 2, - createCredential: () => Promise.reject({ - name: "NotAllowedError", - message: "must-not-be-retained", - }), - }); - expect(cancelled).toEqual({ status: "cancelled", prfCapability: "unknown" }); - expect(JSON.stringify(cancelled)).not.toContain("must-not-be-retained"); - }); - - test("marks localhost admission as an explicit walkthrough bypass", () => { - const decision = makeLocalWalkthroughAdmissionV1("chrome"); - expect(decision.outcome).toBe("eligible_candidate"); - expect(decision.browser).toBe("chrome"); - expect(decision.iosVersionBand).toBe("ios_18_plus"); - expect(decision.engine).toBe("unknown"); - expect(decision.provider).toBe("unknown"); - }); - - test("falls back to a valid constant metadata descriptor after camera denial", async () => { - const statuses: string[] = []; - const states: string[] = []; - let artifact: FrameBundleV0 | undefined; - let completed = 0; - const deniedLiveAdapter: BrowserCaptureAdapterV1 = { - start(_input: BrowserCaptureStartV1, callbacks: BrowserCaptureCallbacksV1) { - void callbacks.onFailure("permission_denied"); - }, - requestMetadataCollection() {}, - stop() {}, - clearTransientMedia() {}, - unmount() {}, - }; - const adapter = new LocalWalkthroughCaptureAdapterV1({ - getVideo: () => null, - getCanvas: () => null, - onStatus: (status) => statuses.push(status), - liveAdapter: deniedLiveAdapter, - }); - const input: BrowserCaptureStartV1 = { - entry: { - userActivated: true, - secureTopLevelContextApproved: true, - prfReady: true, - iosMajor: 18, - browser: "chrome", - }, - policy: { ...SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, expiresAt }, - qualityPolicy: SIMULATOR_UI_QUALITY_POLICY_V0, - sessionId: "walkthrough-session", - accountPublicMaterialDigestSha256: "a".repeat(64), - nonceDigestSha256: "b".repeat(64), - retakesUsed: 0, - }; - adapter.start(input, { - onCaptureState: (state) => { states.push(state); }, - onQuality: (quality) => { expect(quality.action).toBe("ready"); }, - onArtifactReady: (value) => { artifact = value; }, - onFailure: (code) => { throw new Error(`unexpected_${code}`); }, - onComplete: () => { completed += 1; }, - }); - await new Promise((resolve) => setTimeout(resolve, 0)); - expect(statuses).toEqual(["requesting", "synthetic_fallback"]); - expect(states).toEqual(["acquiring", "awaiting_first_frame", "preview"]); - - adapter.requestMetadataCollection(); - for (let attempt = 0; artifact === undefined && attempt < 20; attempt += 1) { - await new Promise((resolve) => setTimeout(resolve, 0)); - } - expect(artifact?.dataMode).toBe("metadata_only"); - expect(artifact?.frames).toHaveLength(1); - expect(Object.keys(artifact?.frames[0] ?? {})).not.toContain("pixels"); - expect(await validateFrameBundleV0(artifact, input.policy)).toEqual([]); - expect(states.slice(-2)).toEqual(["artifact_ready", "cleaning_up"]); - expect(statuses.at(-1)).toBe("synthetic_complete"); - expect(completed).toBe(1); - expect(JSON.stringify(artifact)).not.toMatch(/pixels|data:image|blob:/i); - }); - - test("starts live guidance at preview and stops it with capture cleanup", async () => { - let starts = 0; - let stops = 0; - const liveAdapter: BrowserCaptureAdapterV1 = { - start(_input, callbacks) { - void (async () => { - await callbacks.onCaptureState("preview"); - await callbacks.onComplete(); - })(); - }, - requestMetadataCollection() {}, - stop() {}, - clearTransientMedia() {}, - unmount() {}, - }; - const adapter = new LocalWalkthroughCaptureAdapterV1({ - getVideo: () => null, - getCanvas: () => null, - onStatus: () => undefined, - onGuidance: () => undefined, - liveAdapter, - guidanceController: { - start: () => { starts += 1; }, - stop: () => { stops += 1; }, - }, - }); - adapter.start({ - entry: { - userActivated: true, - secureTopLevelContextApproved: true, - prfReady: true, - iosMajor: 18, - browser: "chrome", - }, - policy: { ...SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, expiresAt }, - qualityPolicy: SIMULATOR_UI_QUALITY_POLICY_V0, - sessionId: "guidance-session", - accountPublicMaterialDigestSha256: "a".repeat(64), - nonceDigestSha256: "b".repeat(64), - retakesUsed: 0, - }, { - onCaptureState: () => undefined, - onQuality: () => undefined, - onArtifactReady: () => undefined, - onFailure: () => undefined, - onComplete: () => undefined, - }); - await Promise.resolve(); - await Promise.resolve(); - expect(starts).toBe(1); - expect(stops).toBeGreaterThanOrEqual(1); - }); -}); diff --git a/apps/authenticator/test/walletkit.test.ts b/apps/authenticator/test/walletkit.test.ts new file mode 100644 index 0000000..2648038 --- /dev/null +++ b/apps/authenticator/test/walletkit.test.ts @@ -0,0 +1,105 @@ +import { test } from 'bun:test' +import assert from 'node:assert/strict' +import { WalletKit } from '../src/lib/walletkit' +import type { WalletKit as PublishedWalletKit, CredentialStore } from '@worldcoin/walletkit-web' + +function fixture(actualSubject = '0x01') { + const freed: string[] = [] + const field = (name: string, hex: string) => ({ + toHexString: async () => hex, + free: () => freed.push(name), + }) + let writes = 0 + let failInit = false + let failSub = false + const credential = { + sub: async () => field('actual', actualSubject), + expiresAt: async () => BigInt(1000), + issuerSchemaId: async () => BigInt(11), + claimsHex: async () => ['score', 'matches', 'size'], + free: () => freed.push('credential'), + } + const response = { + toJson: async () => JSON.stringify({ responses: [{ issuer_schema_id: '11' }, { issuer_schema_id: '128' }] }), + free: () => freed.push('response'), + } + const authenticator = { + initStorage: async () => { + if (failInit) throw new Error('storage unavailable') + }, + computeCredentialSub: async () => { + if (failSub) throw new Error('subject unavailable') + return field('expected', '0x01') + }, + generateCredentialBlindingFactorRemote: async () => field('factor', '0x02'), + generateProof: async () => response, + free: () => freed.push('authenticator'), + } + const client = { + EmbeddedZkArtifacts: { new: async () => ({ free: () => freed.push('artifacts') }) }, + Authenticator: { initWithDefaults: async () => authenticator }, + Credential: { fromBytes: async () => credential }, + FieldElement: { tryFromHexString: async () => field('factor', '0x02') }, + ProofRequest: { fromJson: async () => ({ free: () => freed.push('request') }) }, + } as unknown as PublishedWalletKit + const store = { + storeCredential: async () => { + writes++ + return BigInt(7) + }, + fetchCredential: async () => credential, + } as unknown as CredentialStore + return { + wallet: new WalletKit(client, store, 'staging', 'us'), + freed, + writes: () => writes, + failInit: () => { + failInit = true + }, + failSub: () => { + failSub = true + }, + } +} + +test('published adapter refuses a different credential subject before writing and releases handles', async () => { + const f = fixture('0x03') + await f.wallet.initializeAuthenticator(new Uint8Array(32)) + await assert.rejects(f.wallet.storeCredential(new Uint8Array(), '0x02'), /subject does not match/) + assert.equal(f.writes(), 0) + for (const name of ['actual', 'expected', 'factor', 'credential']) assert.ok(f.freed.includes(name)) +}) + +test('published adapter stores a matching credential and returns its schema/id', async () => { + const f = fixture() + await f.wallet.initializeAuthenticator(new Uint8Array(32)) + assert.deepEqual(await f.wallet.storeCredential(new Uint8Array(), '0x02'), { + credentialId: BigInt(7), + issuerSchemaId: BigInt(11), + }) + assert.equal(f.writes(), 1) +}) + +test('failed vault initialization releases the authenticator and never marks the session ready', async () => { + const f = fixture() + f.failInit() + await assert.rejects(f.wallet.initializeAuthenticator(new Uint8Array(32)), /storage unavailable/) + assert.throws(() => f.wallet.listCredentials(), /Initialize the authenticator first/) + assert.deepEqual(f.freed, ['authenticator', 'artifacts']) +}) + +test('subject preparation releases the blinding factor when computation fails', async () => { + const f = fixture() + await f.wallet.initializeAuthenticator(new Uint8Array(32)) + f.failSub() + await assert.rejects(f.wallet.prepareCredential(BigInt(11)), /subject unavailable/) + assert.ok(f.freed.includes('factor')) +}) + +test('proof disclosure preserves only the selfie score and frees response/request/credential handles', async () => { + const f = fixture() + await f.wallet.initializeAuthenticator(new Uint8Array(32)) + const proof = JSON.parse(await f.wallet.generateProof('{}')) + assert.deepEqual(proof.responses, [{ issuer_schema_id: '11', claims: ['score'] }, { issuer_schema_id: '128' }]) + for (const name of ['response', 'request', 'credential']) assert.ok(f.freed.includes(name)) +}) diff --git a/bun.lock b/bun.lock index e81617b..5adb7cb 100644 --- a/bun.lock +++ b/bun.lock @@ -7,8 +7,10 @@ "dependencies": { "@mediapipe/tasks-vision": "1.0.1", "@worldcoin/walletkit-web": "0.27.1", + "lossless-json": "4.3.1", "react": "19.2.8", "react-dom": "19.2.8", + "viem": "2.56.0", }, "devDependencies": { "@eslint/js": "9.39.4", @@ -33,40 +35,18 @@ "vite": "8.2.2", }, }, - "packages/biometric-verification-port": { - "name": "@world-id/web-authenticator-biometric-verification-port", - "version": "0.0.0", - }, "packages/browser-admission": { "name": "@world-id/web-authenticator-browser-admission", "version": "0.0.0", }, - "packages/client-quality": { - "name": "@world-id/web-authenticator-client-quality", - "version": "0.0.0", - }, "packages/contracts": { "name": "@world-id/web-authenticator-contracts", "version": "0.0.0", }, - "packages/staging-issuance-port": { - "name": "@world-id/web-authenticator-staging-issuance-port", - "version": "0.0.0", - }, - "services/session-gateway": { - "name": "@world-id/web-authenticator-session-gateway", - "version": "0.0.0", - }, - "services/simulated-biometric-verifier": { - "name": "@world-id/web-authenticator-simulated-biometric-verifier", - "version": "0.0.0", - }, - "services/simulated-staging-issuer": { - "name": "@world-id/web-authenticator-simulated-staging-issuer", - "version": "0.0.0", - }, }, "packages": { + "@adraffy/ens-normalize": ["@adraffy/ens-normalize@1.11.1", "", {}, "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ=="], + "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], "@babel/compat-data": ["@babel/compat-data@7.29.7", "", {}, "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg=="], @@ -143,6 +123,12 @@ "@mediapipe/tasks-vision": ["@mediapipe/tasks-vision@1.0.1", "", {}, "sha512-rvRE2FmAZ6ZxKSw7wq+e+jQDpN3t1B/tD2mJz9SmAzb1msoDkd4dMoE4wAh8Z30Um0PQwLiHr9QtomhmXk3aUQ=="], + "@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], + + "@noble/curves": ["@noble/curves@1.9.1", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA=="], + + "@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], + "@oxc-project/types": ["@oxc-project/types@0.148.0", "", {}, "sha512-Nm4s/jB+4FpFsPhWGEC4h7rzksesmtnMXomo6rCMcg/b8zLQuOziRgkCS1fxDCXOlJB/6Q8oABOZ/OP6RIPj9A=="], "@playwright/test": ["@playwright/test@1.62.1", "", { "dependencies": { "playwright": "1.62.1" }, "bin": { "playwright": "cli.js" } }, "sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ=="], @@ -179,6 +165,12 @@ "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], + "@scure/base": ["@scure/base@1.2.6", "", {}, "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg=="], + + "@scure/bip32": ["@scure/bip32@1.7.0", "", { "dependencies": { "@noble/curves": "~1.9.0", "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5" } }, "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw=="], + + "@scure/bip39": ["@scure/bip39@1.6.0", "", { "dependencies": { "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5" } }, "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A=="], + "@testing-library/dom": ["@testing-library/dom@10.4.1", "", { "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "picocolors": "1.1.1", "pretty-format": "^27.0.2" } }, "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg=="], "@testing-library/react": ["@testing-library/react@16.3.3", "", { "dependencies": { "@babel/runtime": "^7.12.5" }, "peerDependencies": { "@testing-library/dom": "^10.0.0", "@types/react": "^18.0.0 || ^19.0.0", "@types/react-dom": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Uo193NgQbPMz6lrrhtRQQFcMC6Re/ELLFbbuVL30WDlZxlpZf9/lMHTAVxPRLw1q1iu9OJmR1c2BLiENRstdBg=="], @@ -225,24 +217,14 @@ "@vitejs/plugin-react": ["@vitejs/plugin-react@6.1.1", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "oxc-transform-react": "^0.145.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler", "oxc-transform-react"] }, "sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw=="], - "@world-id/web-authenticator-biometric-verification-port": ["@world-id/web-authenticator-biometric-verification-port@workspace:packages/biometric-verification-port"], - "@world-id/web-authenticator-browser-admission": ["@world-id/web-authenticator-browser-admission@workspace:packages/browser-admission"], - "@world-id/web-authenticator-client-quality": ["@world-id/web-authenticator-client-quality@workspace:packages/client-quality"], - "@world-id/web-authenticator-contracts": ["@world-id/web-authenticator-contracts@workspace:packages/contracts"], - "@world-id/web-authenticator-session-gateway": ["@world-id/web-authenticator-session-gateway@workspace:services/session-gateway"], - - "@world-id/web-authenticator-simulated-biometric-verifier": ["@world-id/web-authenticator-simulated-biometric-verifier@workspace:services/simulated-biometric-verifier"], - - "@world-id/web-authenticator-simulated-staging-issuer": ["@world-id/web-authenticator-simulated-staging-issuer@workspace:services/simulated-staging-issuer"], - - "@world-id/web-authenticator-staging-issuance-port": ["@world-id/web-authenticator-staging-issuance-port@workspace:packages/staging-issuance-port"], - "@worldcoin/walletkit-web": ["@worldcoin/walletkit-web@0.27.1", "", {}, "sha512-8zcJ8a+YkZJYqSsBA/5I336E0t7kyIZppk2XZuAqkx6ixMYQPFznoNJRhY9gTfMEtI/jSCHWeP5cgdlPtyK2SA=="], + "abitype": ["abitype@1.2.3", "", { "peerDependencies": { "typescript": ">=5.0.4", "zod": "^3.22.0 || ^4.0.0" }, "optionalPeers": ["typescript", "zod"] }, "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg=="], + "acorn": ["acorn@8.18.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ=="], "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], @@ -387,6 +369,8 @@ "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], + "eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], @@ -515,6 +499,8 @@ "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + "isows": ["isows@1.0.7", "", { "peerDependencies": { "ws": "*" } }, "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg=="], + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], "js-yaml": ["js-yaml@4.3.2", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA=="], @@ -567,6 +553,8 @@ "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], + "lossless-json": ["lossless-json@4.3.1", "", {}, "sha512-SqD/Bg3ZfltBJ2Z14hJ/BihnvtV553WO4g9/ePtlp4lrnl9jF3AdIJt53A/Wkg/0Li+LMfxaBqgx1MiFZdQlpQ=="], + "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], "lz-string": ["lz-string@1.5.0", "", { "bin": { "lz-string": "bin/bin.js" } }, "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ=="], @@ -597,6 +585,8 @@ "own-keys": ["own-keys@1.0.2", "", { "dependencies": { "call-bound": "^1.0.4", "get-intrinsic": "^1.3.0", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg=="], + "ox": ["ox@0.14.34", "", { "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", "@noble/curves": "1.9.1", "@noble/hashes": "^1.8.0", "@scure/bip32": "^1.7.0", "@scure/bip39": "^1.6.0", "abitype": "^1.2.3", "eventemitter3": "5.0.1" }, "peerDependencies": { "typescript": ">=5.4.0" }, "optionalPeers": ["typescript"] }, "sha512-12seOIk7dv8eAoGQhcWaeKZxNz304IVcDvb9U5Y7JZAEVe21Nm1YMxLjhWah+su5BD4Omx4Zz0z5x3ij9M4GYQ=="], + "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], @@ -723,6 +713,8 @@ "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], + "viem": ["viem@2.56.0", "", { "dependencies": { "@noble/curves": "1.9.1", "@noble/hashes": "1.8.0", "@scure/bip32": "1.7.0", "@scure/bip39": "1.6.0", "abitype": "1.2.3", "isows": "1.0.7", "ox": "0.14.34", "ws": "8.21.0" }, "peerDependencies": { "typescript": ">=5.0.4" }, "optionalPeers": ["typescript"] }, "sha512-JmkgIk4jN+im4oguLxwPv19pwSaGH9kcGSq25Ilm55106ULBBMNR3eWKKA0wZoeyLPSHIiOwZ4sGceEYEIq7LA=="], + "vite": ["vite@8.2.2", "", { "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.5", "postcss": "^8.5.26", "rolldown": "~1.2.4", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.4.0 || ^0.5.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q=="], "whatwg-mimetype": ["whatwg-mimetype@3.0.0", "", {}, "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q=="], @@ -741,7 +733,7 @@ "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - "ws": ["ws@8.21.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw=="], + "ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="], "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], @@ -775,6 +767,8 @@ "eslint-plugin-jsx-a11y/aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], + "happy-dom/ws": ["ws@8.21.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw=="], + "playwright/fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="], "string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], diff --git a/config/README.md b/config/README.md index 52bbdf9..714d5e1 100644 --- a/config/README.md +++ b/config/README.md @@ -1,9 +1,15 @@ -# Main-owned application configuration +# Authenticator server configuration -This directory contains non-secret, staging-only values frozen by Main for cs5. W01 may import these values but may not edit them. +`AUTHENTICATOR_HOST` defaults to `127.0.0.1`; `PORT`/`AUTHENTICATOR_PORT` defaults +to 4173. `AUTHENTICATOR_PUBLIC_ORIGIN` defaults to `http://127.0.0.1:` and +`AUTHENTICATOR_LOCAL_ORIGIN` to `http://localhost:`. Origins must be bare +HTTP(S) origins; invalid configuration fails startup. -- The browser cannot select simulator scenarios. -- Signing keys and completion-handle keys are generated or injected at server startup and never appear here. -- The local origin is a development/evidence surface, not deployment or physical-iPhone evidence. -- Security headers apply to the app-owned Bun server and keep camera permission limited to the same origin. -- Server binding and the two exact allowed browser origins come from the environment: `AUTHENTICATOR_HOST` (default `127.0.0.1`; `0.0.0.0` in containers), `PORT`/`AUTHENTICATOR_PORT` (default `4173`), `AUTHENTICATOR_PUBLIC_ORIGIN` (default `http://127.0.0.1:`), and `AUTHENTICATOR_LOCAL_ORIGIN` (default `http://localhost:`). Origins must be bare `http(s)://host[:port]` values; anything else fails startup. The RP identifier is the public origin's hostname. +Security headers apply to all responses. The browser CSP permits only this origin, +the two official World ID bridges and WalletKit's US staging gateway/indexer/OPRF +endpoints. Staging addresses and the WalletKit version are pinned together; review +that allowlist when upgrading the SDK. + +Synthetic issuance additionally requires a loopback listener, a loopback request +host and a matching allowed Origin. Binding a container to `0.0.0.0` disables it. +There are no selectable demo scenarios or RP identities in configuration. diff --git a/config/authenticator-app-v0.test.ts b/config/authenticator-app-v0.test.ts deleted file mode 100644 index 0a9c5df..0000000 --- a/config/authenticator-app-v0.test.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, - SIMULATOR_UI_QUALITY_POLICY_V0, -} from "../packages/contracts/src"; -import { - AUTHENTICATOR_APP_CONFIG, - AUTHENTICATOR_APP_SECURITY_HEADERS_V0, - AUTHENTICATOR_RP_PRESENTATIONS_V0, -} from "./authenticator-app-v0"; - -describe("Main-owned authenticator app configuration", () => { - test("is staging-only, server-scenario-owned, metadata-only, and runtime frozen", () => { - expect(AUTHENTICATOR_APP_CONFIG.runtimeEnvironment).toBe("staging"); - expect(AUTHENTICATOR_APP_CONFIG.gatewayEnabled).toBe(true); - expect(AUTHENTICATOR_APP_CONFIG.localWalkthroughOrigin).toBe( - "http://localhost:4173", - ); - expect(AUTHENTICATOR_APP_CONFIG.defaultBiometricScenario).toBe("happy_path"); - expect(AUTHENTICATOR_APP_CONFIG.defaultIssuanceScenario).toBe("issue_success"); - expect(AUTHENTICATOR_APP_CONFIG.capturePolicy).toBe( - SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, - ); - expect(AUTHENTICATOR_APP_CONFIG.qualityPolicy).toBe( - SIMULATOR_UI_QUALITY_POLICY_V0, - ); - expect(AUTHENTICATOR_APP_CONFIG.capturePolicy.dataMode).toBe("metadata_only"); - expect(AUTHENTICATOR_APP_CONFIG.qualityPolicy.checks).toEqual([ - { kind: "camera_active" }, - ]); - expect(AUTHENTICATOR_APP_CONFIG.biometricSimulatorVersion).toBe( - "cs5-simulated-biometric-v0", - ); - expect(AUTHENTICATOR_APP_CONFIG.biometricReceiptTtlMs).toBe(60_000); - expect(AUTHENTICATOR_APP_CONFIG.stagingCredentialTtlMs).toBe(60_000); - expect(AUTHENTICATOR_APP_CONFIG.demoCompletionTtlMs).toBe(60_000); - expect(AUTHENTICATOR_APP_CONFIG.biometricCacheEntries).toBe(1_024); - expect(AUTHENTICATOR_APP_CONFIG.issuanceCacheEntries).toBe(1_024); - expect(new Set(Object.values(AUTHENTICATOR_APP_CONFIG.purposeKeyIds)).size).toBe(5); - expect(Object.isFrozen(AUTHENTICATOR_APP_CONFIG.purposeKeyIds)).toBe(true); - expect(Object.isFrozen(AUTHENTICATOR_APP_CONFIG)).toBe(true); - expect(Object.isFrozen(AUTHENTICATOR_APP_CONFIG.allowedSyntheticFixtureIds)).toBe(true); - }); - - test("binds to loopback 4173 by default and derives rpId from the public origin", () => { - expect(AUTHENTICATOR_APP_CONFIG.host).toBe("127.0.0.1"); - expect(AUTHENTICATOR_APP_CONFIG.port).toBe(4173); - expect(AUTHENTICATOR_APP_CONFIG.publicOrigin).toBe("http://127.0.0.1:4173"); - expect(AUTHENTICATOR_APP_CONFIG.rpId).toBe("127.0.0.1"); - }); - - test("takes binding and exact origins from the environment and rejects non-origins", () => { - const configPath = new URL("./authenticator-app-v0.ts", import.meta.url).pathname; - const script = `import { AUTHENTICATOR_APP_CONFIG as c } from ${JSON.stringify(configPath)};` + - "process.stdout.write(JSON.stringify({ host: c.host, port: c.port, publicOrigin: c.publicOrigin, " + - "localWalkthroughOrigin: c.localWalkthroughOrigin, rpId: c.rpId }));"; - const ok = Bun.spawnSync(["bun", "-e", script], { - env: { - ...process.env, - AUTHENTICATOR_HOST: "0.0.0.0", - PORT: "8080", - AUTHENTICATOR_PUBLIC_ORIGIN: "https://verify.example.com/", - AUTHENTICATOR_LOCAL_ORIGIN: "", - }, - }); - expect(ok.exitCode).toBe(0); - expect(JSON.parse(ok.stdout.toString())).toEqual({ - host: "0.0.0.0", - port: 8080, - publicOrigin: "https://verify.example.com", - localWalkthroughOrigin: "http://localhost:8080", - rpId: "verify.example.com", - }); - - for (const bad of ["https://verify.example.com/path", "verify.example.com", "ftp://x.example"]) { - const rejected = Bun.spawnSync(["bun", "-e", script], { - env: { ...process.env, AUTHENTICATOR_PUBLIC_ORIGIN: bad }, - }); - expect(rejected.exitCode, bad).not.toBe(0); - expect(rejected.stderr.toString(), bad).toContain("AUTHENTICATOR_PUBLIC_ORIGIN"); - } - const badPort = Bun.spawnSync(["bun", "-e", script], { env: { ...process.env, PORT: "99999" } }); - expect(badPort.exitCode).not.toBe(0); - }); - - test("uses allowlisted RP presentation and a same-origin server-managed return", () => { - expect(Object.keys(AUTHENTICATOR_RP_PRESENTATIONS_V0)).toEqual(["zoom_demo"]); - expect(AUTHENTICATOR_RP_PRESENTATIONS_V0.zoom_demo).toEqual({ - displayName: "Zoom", - iconAssetId: "zoom", - returnLabel: "Return to Zoom", - returnPath: "/returned", - }); - expect(Object.isFrozen(AUTHENTICATOR_RP_PRESENTATIONS_V0)).toBe(true); - expect(Object.isFrozen(AUTHENTICATOR_RP_PRESENTATIONS_V0.zoom_demo)).toBe(true); - }); - - test("freezes restrictive browser security headers", () => { - expect(AUTHENTICATOR_APP_SECURITY_HEADERS_V0["Content-Security-Policy"]).toContain( - "frame-ancestors 'none'", - ); - expect(AUTHENTICATOR_APP_SECURITY_HEADERS_V0["Content-Security-Policy"]).toContain( - "connect-src 'self'", - ); - expect(AUTHENTICATOR_APP_SECURITY_HEADERS_V0["Content-Security-Policy"]).toContain( - "script-src 'self' 'wasm-unsafe-eval'", - ); - expect(AUTHENTICATOR_APP_SECURITY_HEADERS_V0["Content-Security-Policy"]) - .not.toContain("'unsafe-eval'"); - expect(AUTHENTICATOR_APP_SECURITY_HEADERS_V0["Permissions-Policy"]).toBe( - "camera=(self), microphone=(), geolocation=()", - ); - expect(AUTHENTICATOR_APP_SECURITY_HEADERS_V0["Cache-Control"]).toBe("no-store"); - expect(Object.isFrozen(AUTHENTICATOR_APP_SECURITY_HEADERS_V0)).toBe(true); - }); -}); diff --git a/config/authenticator-app-v0.ts b/config/authenticator-app-v0.ts index b6a39a7..22ea9aa 100644 --- a/config/authenticator-app-v0.ts +++ b/config/authenticator-app-v0.ts @@ -1,18 +1,9 @@ -import { - SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, - SIMULATOR_UI_QUALITY_POLICY_V0, - type BiometricSimulationScenarioV0, - type IssuanceSimulationScenarioV0, -} from "../packages/contracts/src"; - -export const AUTHENTICATOR_APP_CONFIG_V0 = "authenticator_app_config_v0" as const; - export const AUTHENTICATOR_APP_SECURITY_HEADERS_V0 = Object.freeze({ "Cache-Control": "no-store", "Content-Security-Policy": [ "default-src 'self'", "base-uri 'none'", - "connect-src 'self'", + "connect-src 'self' https://bridge.worldcoin.org https://staging-bridge.worldcoin.org https://gateway.id-infra.worldcoin.dev https://indexer.us.id-infra.worldcoin.dev https://node0.us.staging.world.oprf.taceo.network wss://node0.us.staging.world.oprf.taceo.network https://node1.us.staging.world.oprf.taceo.network wss://node1.us.staging.world.oprf.taceo.network https://node2.us.staging.world.oprf.taceo.network wss://node2.us.staging.world.oprf.taceo.network https://node3.us.staging.world.oprf.taceo.network wss://node3.us.staging.world.oprf.taceo.network https://node4.us.staging.world.oprf.taceo.network wss://node4.us.staging.world.oprf.taceo.network", "font-src 'self'", "form-action 'none'", "frame-ancestors 'none'", @@ -29,69 +20,8 @@ export const AUTHENTICATOR_APP_SECURITY_HEADERS_V0 = Object.freeze({ "X-Content-Type-Options": "nosniff", }); -export interface AuthenticatorRpPresentationV0 { - readonly displayName: "Zoom"; - readonly iconAssetId: "zoom"; - readonly returnLabel: "Return to Zoom"; - readonly returnPath: "/returned"; -} - -export const AUTHENTICATOR_RP_PRESENTATIONS_V0 = Object.freeze({ - zoom_demo: Object.freeze({ - displayName: "Zoom", - iconAssetId: "zoom", - returnLabel: "Return to Zoom", - returnPath: "/returned", - }), -}); - -export interface AuthenticatorAppConfigV0 { - readonly version: typeof AUTHENTICATOR_APP_CONFIG_V0; - readonly runtimeEnvironment: "staging"; - /** Bind address. `AUTHENTICATOR_HOST`; default `127.0.0.1`. Containers use `0.0.0.0`. */ - readonly host: string; - /** Listening port. `PORT` or `AUTHENTICATOR_PORT`; default `4173`. */ - readonly port: number; - /** Exact browser origin allowed to call the API. `AUTHENTICATOR_PUBLIC_ORIGIN`; default `http://127.0.0.1:`. */ - readonly publicOrigin: string; - /** Second exact origin for the local walkthrough. `AUTHENTICATOR_LOCAL_ORIGIN`; default `http://localhost:`. */ - readonly localWalkthroughOrigin: string; - /** Relying-party identifier bound into sessions: the public origin's hostname. */ - readonly rpId: string; - readonly gatewayEnabled: true; - readonly sessionTtlMs: 300_000; - readonly simulatorTimeoutMs: 5_000; - readonly maxRequestBodyBytes: 65_536; - readonly maxConcurrentOperations: 8; - readonly biometricSimulatorVersion: "cs5-simulated-biometric-v0"; - readonly biometricReceiptTtlMs: 60_000; - readonly biometricCacheEntries: 1_024; - readonly stagingCredentialTtlMs: 60_000; - readonly issuanceCacheEntries: 1_024; - readonly demoCompletionTtlMs: 60_000; - readonly purposeKeyIds: { - readonly biometricRequest: "cs5-biometric-request"; - readonly biometricReceipt: "cs5-biometric-receipt"; - readonly issuanceRequest: "cs5-issuance-request"; - readonly simulatedCredential: "cs5-simulated-credential"; - readonly demoCompletion: "cs5-demo-completion"; - }; - readonly allowedSyntheticFixtureIds: readonly ["fixture-neutral-v0"]; - readonly demoAccountId: "simulated-account-cs5"; - readonly demoAccountPublicMaterialDigestSha256: string; - readonly defaultBiometricScenario: BiometricSimulationScenarioV0; - readonly defaultIssuanceScenario: IssuanceSimulationScenarioV0; - readonly capturePolicy: typeof SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0; - readonly qualityPolicy: typeof SIMULATOR_UI_QUALITY_POLICY_V0; -} - -// Server binding and allowed origins come from the environment so the same -// build runs on loopback and behind an HTTPS host. Invalid values fail at -// startup instead of silently falling back. -// Read through globalThis so this module also loads in the browser-hosted -// static demo, where there is no `process`; there, every value falls back. const ENV: Readonly> = - (globalThis as { process?: { env?: Record } }).process?.env ?? {}; + process.env; function envValue(name: string): string | undefined { const value = ENV[name]?.trim(); @@ -127,52 +57,18 @@ function envOrigin(name: string, fallback: string): string { return url.origin; } -const BINDING = (() => { - const port = envPort(); - const publicOrigin = envOrigin("AUTHENTICATOR_PUBLIC_ORIGIN", `http://127.0.0.1:${port}`); - return Object.freeze({ - host: envValue("AUTHENTICATOR_HOST") ?? "127.0.0.1", - port, - publicOrigin, - localWalkthroughOrigin: envOrigin("AUTHENTICATOR_LOCAL_ORIGIN", `http://localhost:${port}`), - rpId: new URL(publicOrigin).hostname, - }); -})(); - -export const AUTHENTICATOR_APP_CONFIG: AuthenticatorAppConfigV0 = Object.freeze({ - version: AUTHENTICATOR_APP_CONFIG_V0, - runtimeEnvironment: "staging", - host: BINDING.host, - port: BINDING.port, - publicOrigin: BINDING.publicOrigin, - localWalkthroughOrigin: BINDING.localWalkthroughOrigin, - rpId: BINDING.rpId, - gatewayEnabled: true, - sessionTtlMs: 300_000, - simulatorTimeoutMs: 5_000, - maxRequestBodyBytes: 65_536, - maxConcurrentOperations: 8, - biometricSimulatorVersion: "cs5-simulated-biometric-v0", - biometricReceiptTtlMs: 60_000, - biometricCacheEntries: 1_024, - stagingCredentialTtlMs: 60_000, - issuanceCacheEntries: 1_024, - demoCompletionTtlMs: 60_000, - purposeKeyIds: Object.freeze({ - biometricRequest: "cs5-biometric-request", - biometricReceipt: "cs5-biometric-receipt", - issuanceRequest: "cs5-issuance-request", - simulatedCredential: "cs5-simulated-credential", - demoCompletion: "cs5-demo-completion", - }), - allowedSyntheticFixtureIds: Object.freeze(["fixture-neutral-v0"] as const), - demoAccountId: "simulated-account-cs5", - demoAccountPublicMaterialDigestSha256: "0".repeat(64), - defaultBiometricScenario: "happy_path", - defaultIssuanceScenario: "issue_success", - capturePolicy: SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, - qualityPolicy: SIMULATOR_UI_QUALITY_POLICY_V0, +const port = envPort(); +export const AUTHENTICATOR_APP_CONFIG = Object.freeze({ + host: envValue("AUTHENTICATOR_HOST") ?? "127.0.0.1", + port, + publicOrigin: envOrigin("AUTHENTICATOR_PUBLIC_ORIGIN", `http://127.0.0.1:${port}`), + localOrigin: envOrigin("AUTHENTICATOR_LOCAL_ORIGIN", `http://localhost:${port}`), }); -// The default scenarios are server-owned staging configuration. Browser input, -// query parameters, and client-quality results cannot change them. +export function allowsSyntheticIssuance(request: Request): boolean { + const url = new URL(request.url); + const origins = [AUTHENTICATOR_APP_CONFIG.publicOrigin, AUTHENTICATOR_APP_CONFIG.localOrigin]; + return ["127.0.0.1", "::1", "localhost"].includes(AUTHENTICATOR_APP_CONFIG.host) && + ["127.0.0.1", "[::1]", "localhost"].includes(url.hostname) && origins.includes(url.origin) && + request.headers.get("origin") === url.origin; +} diff --git a/docs/review/README.md b/docs/review/README.md new file mode 100644 index 0000000..fd354db --- /dev/null +++ b/docs/review/README.md @@ -0,0 +1,5 @@ +# Request review screenshots + +Chromium at 393×852 and 1280×900. Captured from the built authenticator using +a test-only signed Orb request and mocked registry/bridge endpoints. These images +show responsive UI validation, not a live staging enrollment or RP verification. diff --git a/docs/review/request-desktop.png b/docs/review/request-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..26643b647e1dde2c36ecce6aca1d70b746d50503 GIT binary patch literal 53695 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%0DHb@)U1 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

    h&MolKvgtSDSIAaH=${ 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

    tkf^MvoD{LA9?$kg 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 literal 0 HcmV?d00001 diff --git a/docs/review/request-mobile.png b/docs/review/request-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..4a2e88b749d25b1f6134d7e63769d82a42736aa4 GIT binary patch literal 41265 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 aUsgdi+#u5;%d_S11V!8DMZM{Kl=BZ8_?vwI literal 0 HcmV?d00001 diff --git a/eslint.config.mjs b/eslint.config.mjs index 5ef7f5a..9a5005e 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -83,7 +83,7 @@ export default tseslint.config( }, }, { - files: ["apps/authenticator/src/wallet/session.ts"], + files: ["apps/authenticator/src/wallet/session.ts", "apps/authenticator/src/wallet/persistence.ts"], rules: { "no-restricted-properties": ["error", { object: "document", property: "cookie" }, diff --git a/package.json b/package.json index 14e749a..8a5271f 100644 --- a/package.json +++ b/package.json @@ -12,26 +12,26 @@ "build": "bun run build:authenticator && bun run build:authenticator-server", "build:authenticator": "vite build --config vite.config.ts", "build:authenticator-server": "bun build apps/authenticator/src/server/main.ts --target=bun --outdir apps/authenticator/dist-server", - "build:static-demo": "vite build --config vite.static-demo.config.ts", "dev:authenticator": "concurrently -k -n client,server \"vite build --watch --config vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", "lint": "eslint -c eslint.config.mjs . --max-warnings=0", - "preview:static-demo": "vite preview --config vite.static-demo.config.ts", "start:authenticator": "bun apps/authenticator/src/server/main.ts", "start:authenticator:tunnel": "bun --env-file=.env.tunnel apps/authenticator/src/server/main.ts", "test": "bun test .", "test:authenticator": "bun test apps/authenticator/test", "test:browser": "bun run build:authenticator && playwright test -c playwright.integration.config.ts", - "test:contracts": "bun test packages/contracts/test", "test:integration": "bun test tests/integration", "typecheck": "tsc -p tsconfig.client.json --noEmit && tsc -p tsconfig.server.json --noEmit && tsc -p tsconfig.test.json --noEmit && tsc -p tsconfig.tools.json --noEmit", "dev": "concurrently -k -n client,server \"vite build --watch --config vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", - "start": "bun apps/authenticator/src/server/main.ts" + "start": "bun apps/authenticator/src/server/main.ts", + "build:selfie-helper": "cargo build --locked --config services/staging-issuance/face-enrollment-helper/build-config.toml --manifest-path services/staging-issuance/face-enrollment-helper/Cargo.toml" }, "dependencies": { "@mediapipe/tasks-vision": "1.0.1", "react": "19.2.8", "react-dom": "19.2.8", - "@worldcoin/walletkit-web": "0.27.1" + "@worldcoin/walletkit-web": "0.27.1", + "viem": "2.56.0", + "lossless-json": "4.3.1" }, "devDependencies": { "@eslint/js": "9.39.4", diff --git a/packages/biometric-verification-port/README.md b/packages/biometric-verification-port/README.md deleted file mode 100644 index 023c244..0000000 --- a/packages/biometric-verification-port/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Biometric verification port - -This package exposes the application port for the explicit staging simulator. The invocation keeps the untrusted wire request separate from server-owned expected bindings, including the scenario. Results are either a signed `SimulationReceiptV0` or a stable, detail-free error code. - -The port cannot carry camera bytes, browser spoof scores, secret key material, or a future real-service result. diff --git a/packages/biometric-verification-port/package.json b/packages/biometric-verification-port/package.json deleted file mode 100644 index 792a90d..0000000 --- a/packages/biometric-verification-port/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "@world-id/web-authenticator-biometric-verification-port", - "private": true, - "version": "0.0.0", - "type": "module", - "exports": { - ".": "./src/index.ts" - }, - "scripts": { - "test": "bun test test", - "lint": "eslint ." - } -} diff --git a/packages/biometric-verification-port/src/index.ts b/packages/biometric-verification-port/src/index.ts deleted file mode 100644 index 07bb7b7..0000000 --- a/packages/biometric-verification-port/src/index.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type { - BiometricSimulationRequestV0, - ExpectedBiometricSimulationRequestV0, - SimulationCapturePolicyV0, - SimulationReceiptV0, -} from "../../contracts/src"; - -export const BIOMETRIC_SIMULATION_ERROR_V0 = "biometric_simulation_error_v0" as const; -export const SIMULATION_RECEIPT_READY_V0 = "simulation_receipt_ready_v0" as const; - -export type BiometricSimulationErrorReasonV0 = - | "invalid_request" - | "idempotency_conflict" - | "request_replay" - | "service_not_ready"; - -export type BiometricVerificationResultV0 = - | { - readonly kind: typeof SIMULATION_RECEIPT_READY_V0; - readonly receipt: SimulationReceiptV0; - } - | { - readonly kind: typeof BIOMETRIC_SIMULATION_ERROR_V0; - readonly reasonCode: BiometricSimulationErrorReasonV0; - }; - -export interface BiometricVerificationInvocationV0 { - readonly request: unknown; - readonly expected: ExpectedBiometricSimulationRequestV0; - readonly capturePolicy: SimulationCapturePolicyV0; -} - -export interface BiometricVerificationPortV0 { - verify(invocation: BiometricVerificationInvocationV0): Promise; - readiness(): Readonly<{ ready: boolean; reasonCode?: "service_not_ready" }>; -} - -// The server supplies `expected`, including the scenario. A browser request is never authoritative. -export type { BiometricSimulationRequestV0 }; diff --git a/packages/client-quality/README.md b/packages/client-quality/README.md deleted file mode 100644 index 2a80442..0000000 --- a/packages/client-quality/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# Client quality - -W05-owned after explicit `GO`. Provides provisional capture UX only and emits no spoof, liveness, or verification result. - -`evaluateClientQualityV0` consumes synchronous, ephemeral measurements and returns only the frozen policy version, policy identifier, one of `ready`/`adjust`/`retake`/`unavailable`, and allowlisted reason codes. It evaluates camera activity first and then only the checks explicitly present in the policy. Missing or unusable enabled measurements return `unavailable`; reaching `maxRetakes` cannot become `ready`. - -This package loads no model or asset, makes no network or storage call, and does not serialize source measurements. Measurements such as face count, framing ratios, luma, and sharpness remain caller-owned transient values. - -| Enabled check | Condition | Action / reason | -|---|---|---| -| `camera_active` | inactive or unreadable | `unavailable` / `camera_inactive` or `camera_unavailable` | -| `single_face` | none, multiple, or unreadable | `adjust` / `face_not_found` or `multiple_faces`; otherwise `unavailable` | -| `framing` | below/above area or outside center threshold | `adjust` / `move_closer`, `move_farther`, or `center_face` | -| `lighting` | below/above luma threshold | `adjust` / `improve_lighting` or `reduce_lighting` | -| `sharpness` | below threshold | `retake` / `image_blurry`; at the policy limit, `unavailable` / `retake_limit_reached` | - -An unreadable enabled check returns its allowlisted `*_guidance_unavailable` reason. A valid policy with all enabled checks satisfied returns `ready` with no reason code. - -## Proof - -```bash -bun test clean-start/packages/client-quality/test -./node_modules/.bin/tsc -p clean-start/tsconfig.json --noEmit -``` diff --git a/packages/client-quality/package.json b/packages/client-quality/package.json deleted file mode 100644 index d0cc920..0000000 --- a/packages/client-quality/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "@world-id/web-authenticator-client-quality", - "private": true, - "version": "0.0.0", - "type": "module", - "exports": { - ".": "./src/index.ts" - }, - "scripts": { - "test": "bun test test" - } -} diff --git a/packages/client-quality/src/index.ts b/packages/client-quality/src/index.ts deleted file mode 100644 index 6e8629a..0000000 --- a/packages/client-quality/src/index.ts +++ /dev/null @@ -1,364 +0,0 @@ -import { - CLIENT_QUALITY_POLICY_V0, - validateClientQualityPolicyV0, - type ClientQualityActionV0, - type ClientQualityCheckV0, - type ClientQualityPolicyV0, - type ClientQualityResultV0, -} from "../../contracts/src"; - -export const CLIENT_QUALITY_REASON_CODES_V0 = [ - "camera_inactive", - "camera_unavailable", - "face_not_found", - "multiple_faces", - "face_guidance_unavailable", - "move_closer", - "move_farther", - "center_face", - "framing_guidance_unavailable", - "improve_lighting", - "reduce_lighting", - "lighting_guidance_unavailable", - "image_blurry", - "sharpness_guidance_unavailable", - "retake_limit_reached", - "policy_invalid", - "quality_input_invalid", -] as const; - -export type ClientQualityReasonCodeV0 = - (typeof CLIENT_QUALITY_REASON_CODES_V0)[number]; - -export type FaceCountMeasurementV0 = 0 | 1 | "multiple"; - -export interface FramingMeasurementV0 { - readonly faceAreaRatio: number; - readonly centerOffsetRatio: number; -} - -/** - * Reads ephemeral measurements owned by the caller. Measurements are consumed - * synchronously and are never included in the returned result. - */ -export interface ClientQualityMeasurementSourceV0 { - readonly readCameraActive: () => boolean | null; - readonly readFaceCount?: () => FaceCountMeasurementV0 | null; - readonly readFraming?: () => FramingMeasurementV0 | null; - readonly readMeanLuma?: () => number | null; - readonly readSharpnessScore?: () => number | null; -} - -export interface ClientQualityEvaluationOptionsV0 { - readonly retakesUsed: number; -} - -export interface EvaluatedClientQualityResultV0 extends ClientQualityResultV0 { - readonly reasonCodes: readonly ClientQualityReasonCodeV0[]; -} - -const REASON_CODE_SET = new Set(CLIENT_QUALITY_REASON_CODES_V0); - -const ADJUST_REASONS = new Set([ - "face_not_found", - "multiple_faces", - "move_closer", - "move_farther", - "center_face", - "improve_lighting", - "reduce_lighting", -]); - -const UNAVAILABLE_REASONS = new Set([ - "camera_inactive", - "camera_unavailable", - "face_guidance_unavailable", - "framing_guidance_unavailable", - "lighting_guidance_unavailable", - "sharpness_guidance_unavailable", - "retake_limit_reached", - "policy_invalid", - "quality_input_invalid", -]); - -function result( - policyId: string, - action: ClientQualityActionV0, - reasonCode?: ClientQualityReasonCodeV0, -): EvaluatedClientQualityResultV0 { - const reasonCodes = Object.freeze(reasonCode === undefined ? [] : [reasonCode]); - return Object.freeze({ - version: CLIENT_QUALITY_POLICY_V0, - policyId, - action, - reasonCodes, - }); -} - -function hasExactKeys(value: object, keys: readonly string[]): boolean { - const actual = Object.keys(value).sort(); - const expected = [...keys].sort(); - return actual.length === expected.length && actual.every((key, index) => key === expected[index]); -} - -function hasFiniteThresholds(check: ClientQualityCheckV0): boolean { - if (check.kind === "framing") { - return ( - Number.isFinite(check.minFaceAreaRatio) && - Number.isFinite(check.maxFaceAreaRatio) && - Number.isFinite(check.maxCenterOffsetRatio) && - hasExactKeys(check, [ - "kind", - "minFaceAreaRatio", - "maxFaceAreaRatio", - "maxCenterOffsetRatio", - ]) - ); - } - if (check.kind === "lighting") { - return ( - Number.isFinite(check.minMeanLuma) && - Number.isFinite(check.maxMeanLuma) && - hasExactKeys(check, ["kind", "minMeanLuma", "maxMeanLuma"]) - ); - } - if (check.kind === "sharpness") { - return Number.isFinite(check.minScore) && hasExactKeys(check, ["kind", "minScore"]); - } - if (check.kind === "camera_active" || check.kind === "single_face") { - return hasExactKeys(check, ["kind"]); - } - return false; -} - -function containsAccessor(value: unknown, seen = new WeakSet()): boolean { - if (typeof value !== "object" || value === null || seen.has(value)) return false; - seen.add(value); - - const descriptors = Object.getOwnPropertyDescriptors(value); - for (const descriptor of Object.values(descriptors)) { - if (descriptor.get !== undefined || descriptor.set !== undefined) return true; - if ("value" in descriptor && containsAccessor(descriptor.value, seen)) return true; - } - return false; -} - -function snapshotUsablePolicy( - policy: ClientQualityPolicyV0, -): ClientQualityPolicyV0 | null { - try { - if (typeof policy !== "object" || policy === null || Array.isArray(policy)) return null; - if (containsAccessor(policy)) return null; - - const snapshot = structuredClone(policy) as ClientQualityPolicyV0; - if ( - !hasExactKeys(snapshot, [ - "version", - "mode", - "environment", - "policyId", - "purpose", - "checks", - "maxRetakes", - ]) || - typeof snapshot.policyId !== "string" || - snapshot.policyId.length === 0 || - !Number.isSafeInteger(snapshot.maxRetakes) || - !Array.isArray(snapshot.checks) || - !snapshot.checks.every( - (check) => - typeof check === "object" && check !== null && hasFiniteThresholds(check), - ) || - validateClientQualityPolicyV0(snapshot).length !== 0 - ) { - return null; - } - - for (const check of snapshot.checks) Object.freeze(check); - Object.freeze(snapshot.checks); - return Object.freeze(snapshot); - } catch { - return null; - } -} - -function safelyRead(reader: (() => T | null) | undefined): T | null { - if (reader === undefined) return null; - try { - const value = reader(); - return value === undefined ? null : value; - } catch { - return null; - } -} - -function safelyReadFromSource( - source: ClientQualityMeasurementSourceV0, - selectReader: ( - candidate: ClientQualityMeasurementSourceV0, - ) => (() => T | null) | undefined, -): T | null { - return safelyRead(() => { - const reader = selectReader(source); - return typeof reader === "function" ? reader() : null; - }); -} - -function isUnitRatio(value: number): boolean { - return Number.isFinite(value) && value >= 0 && value <= 1; -} - -function evaluateFaceCount( - policyId: string, - source: ClientQualityMeasurementSourceV0, -): EvaluatedClientQualityResultV0 | null { - const count = safelyReadFromSource(source, (candidate) => candidate.readFaceCount); - if (count === null || (count !== 0 && count !== 1 && count !== "multiple")) { - return result(policyId, "unavailable", "face_guidance_unavailable"); - } - if (count === 0) return result(policyId, "adjust", "face_not_found"); - if (count === "multiple") return result(policyId, "adjust", "multiple_faces"); - return null; -} - -function evaluateFraming( - policyId: string, - check: Extract, - source: ClientQualityMeasurementSourceV0, -): EvaluatedClientQualityResultV0 | null { - const measurement = safelyReadFromSource(source, (candidate) => candidate.readFraming); - const ratios = safelyRead(() => - measurement === null - ? null - : { - faceAreaRatio: measurement.faceAreaRatio, - centerOffsetRatio: measurement.centerOffsetRatio, - }, - ); - if ( - ratios === null || - !isUnitRatio(ratios.faceAreaRatio) || - !isUnitRatio(ratios.centerOffsetRatio) - ) { - return result(policyId, "unavailable", "framing_guidance_unavailable"); - } - if (ratios.faceAreaRatio < check.minFaceAreaRatio) { - return result(policyId, "adjust", "move_closer"); - } - if (ratios.faceAreaRatio > check.maxFaceAreaRatio) { - return result(policyId, "adjust", "move_farther"); - } - if (ratios.centerOffsetRatio > check.maxCenterOffsetRatio) { - return result(policyId, "adjust", "center_face"); - } - return null; -} - -function evaluateLighting( - policyId: string, - check: Extract, - source: ClientQualityMeasurementSourceV0, -): EvaluatedClientQualityResultV0 | null { - const meanLuma = safelyReadFromSource(source, (candidate) => candidate.readMeanLuma); - if (meanLuma === null || !Number.isFinite(meanLuma) || meanLuma < 0 || meanLuma > 255) { - return result(policyId, "unavailable", "lighting_guidance_unavailable"); - } - if (meanLuma < check.minMeanLuma) { - return result(policyId, "adjust", "improve_lighting"); - } - if (meanLuma > check.maxMeanLuma) { - return result(policyId, "adjust", "reduce_lighting"); - } - return null; -} - -function evaluateSharpness( - policyId: string, - check: Extract, - source: ClientQualityMeasurementSourceV0, - options: ClientQualityEvaluationOptionsV0, - maxRetakes: number, -): EvaluatedClientQualityResultV0 | null { - const score = safelyReadFromSource(source, (candidate) => candidate.readSharpnessScore); - if (score === null || !Number.isFinite(score) || score < 0) { - return result(policyId, "unavailable", "sharpness_guidance_unavailable"); - } - if (score >= check.minScore) return null; - if (options.retakesUsed >= maxRetakes) { - return result(policyId, "unavailable", "retake_limit_reached"); - } - return result(policyId, "retake", "image_blurry"); -} - -export function evaluateClientQualityV0( - policy: ClientQualityPolicyV0, - source: ClientQualityMeasurementSourceV0, - options: ClientQualityEvaluationOptionsV0, -): EvaluatedClientQualityResultV0 { - const policySnapshot = snapshotUsablePolicy(policy); - if (policySnapshot === null) { - return result("invalid-policy", "unavailable", "policy_invalid"); - } - const policyId = policySnapshot.policyId; - if (!Number.isSafeInteger(options?.retakesUsed) || options.retakesUsed < 0) { - return result(policyId, "unavailable", "quality_input_invalid"); - } - - const cameraActive = safelyReadFromSource( - source, - (candidate) => candidate.readCameraActive, - ); - if (cameraActive === null || typeof cameraActive !== "boolean") { - return result(policyId, "unavailable", "camera_unavailable"); - } - if (!cameraActive) return result(policyId, "unavailable", "camera_inactive"); - - for (const check of policySnapshot.checks) { - let checkResult: EvaluatedClientQualityResultV0 | null = null; - if (check.kind === "camera_active") continue; - if (check.kind === "single_face") checkResult = evaluateFaceCount(policyId, source); - if (check.kind === "framing") checkResult = evaluateFraming(policyId, check, source); - if (check.kind === "lighting") checkResult = evaluateLighting(policyId, check, source); - if (check.kind === "sharpness") { - checkResult = evaluateSharpness( - policyId, - check, - source, - options, - policySnapshot.maxRetakes, - ); - } - if (checkResult !== null) return checkResult; - } - - return result(policyId, "ready"); -} - -export function isClientQualityResultV0(value: unknown): value is EvaluatedClientQualityResultV0 { - try { - if (typeof value !== "object" || value === null || Array.isArray(value)) return false; - if (!hasExactKeys(value, ["version", "policyId", "action", "reasonCodes"])) return false; - - const candidate = value as Record; - if ( - candidate.version !== CLIENT_QUALITY_POLICY_V0 || - typeof candidate.policyId !== "string" || - !["ready", "adjust", "retake", "unavailable"].includes(candidate.action as string) || - !Array.isArray(candidate.reasonCodes) || - !candidate.reasonCodes.every( - (code) => typeof code === "string" && REASON_CODE_SET.has(code), - ) - ) { - return false; - } - - if (candidate.action === "ready") return candidate.reasonCodes.length === 0; - if (candidate.reasonCodes.length !== 1) return false; - const reason = candidate.reasonCodes[0] as ClientQualityReasonCodeV0; - if (candidate.action === "adjust") return ADJUST_REASONS.has(reason); - if (candidate.action === "retake") return reason === "image_blurry"; - return UNAVAILABLE_REASONS.has(reason); - } catch { - return false; - } -} diff --git a/packages/client-quality/test/client-quality.test.ts b/packages/client-quality/test/client-quality.test.ts deleted file mode 100644 index 65d4a68..0000000 --- a/packages/client-quality/test/client-quality.test.ts +++ /dev/null @@ -1,343 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - CLIENT_QUALITY_POLICY_V0, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - type ClientQualityPolicyV0, -} from "../../contracts/src"; -import { - CLIENT_QUALITY_REASON_CODES_V0, - evaluateClientQualityV0, - isClientQualityResultV0, - type ClientQualityMeasurementSourceV0, -} from "../src"; - -const completePolicy: ClientQualityPolicyV0 = { - version: CLIENT_QUALITY_POLICY_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - policyId: "quality-policy-fixture", - purpose: "capture_ux_only", - checks: [ - { kind: "camera_active" }, - { kind: "single_face" }, - { - kind: "framing", - minFaceAreaRatio: 0.2, - maxFaceAreaRatio: 0.6, - maxCenterOffsetRatio: 0.15, - }, - { kind: "lighting", minMeanLuma: 60, maxMeanLuma: 210 }, - { kind: "sharpness", minScore: 12 }, - ], - maxRetakes: 2, -}; - -function source( - overrides: Partial = {}, -): ClientQualityMeasurementSourceV0 { - return { - readCameraActive: () => true, - readFaceCount: () => 1, - readFraming: () => ({ faceAreaRatio: 0.4, centerOffsetRatio: 0.05 }), - readMeanLuma: () => 128, - readSharpnessScore: () => 20, - ...overrides, - }; -} - -function evaluate( - policy: ClientQualityPolicyV0 = completePolicy, - measurements: ClientQualityMeasurementSourceV0 = source(), - retakesUsed = 0, -) { - return evaluateClientQualityV0(policy, measurements, { retakesUsed }); -} - -describe("ClientQualityPolicyV0 selection", () => { - test("returns ready when every explicitly enabled check is satisfied", () => { - expect(evaluate()).toEqual({ - version: CLIENT_QUALITY_POLICY_V0, - policyId: completePolicy.policyId, - action: "ready", - reasonCodes: [], - }); - }); - - test("never reads a check omitted by policy", () => { - const cameraOnly: ClientQualityPolicyV0 = { - ...completePolicy, - checks: [{ kind: "camera_active" }], - }; - const unused = () => { - throw new Error("disabled check was read"); - }; - const result = evaluate(cameraOnly, { - readCameraActive: () => true, - readFaceCount: unused, - readFraming: unused, - readMeanLuma: unused, - readSharpnessScore: unused, - }); - expect(result.action).toBe("ready"); - }); - - test("requires a valid explicit camera-active check and finite thresholds", () => { - const withoutCamera = { ...completePolicy, checks: [{ kind: "single_face" }] }; - const nonFinite = { - ...completePolicy, - checks: [{ kind: "camera_active" }, { kind: "sharpness", minScore: Number.NaN }], - }; - const unknownCheck = { - ...completePolicy, - checks: [{ kind: "camera_active" }, { kind: "unexpected_check" }], - }; - expect(evaluate(withoutCamera as ClientQualityPolicyV0).reasonCodes).toEqual([ - "policy_invalid", - ]); - expect(evaluate(nonFinite as ClientQualityPolicyV0).reasonCodes).toEqual([ - "policy_invalid", - ]); - expect(evaluate(unknownCheck as ClientQualityPolicyV0).reasonCodes).toEqual([ - "policy_invalid", - ]); - }); - - test("rejects time-varying policy getters and proxies before evaluation", () => { - let getterReads = 0; - const getterPolicy = { ...completePolicy }; - Object.defineProperty(getterPolicy, "checks", { - enumerable: true, - get() { - getterReads += 1; - return getterReads === 1 - ? completePolicy.checks - : [{ kind: "camera_active" }, { kind: "unexpected_check" }]; - }, - }); - expect(evaluate(getterPolicy)).toMatchObject({ - action: "unavailable", - reasonCodes: ["policy_invalid"], - }); - expect(getterReads).toBe(0); - - let proxyReads = 0; - const proxyPolicy = new Proxy(completePolicy, { - get(target, property, receiver) { - if (property === "checks") { - proxyReads += 1; - return proxyReads === 1 - ? target.checks - : [{ kind: "camera_active" }, { kind: "unexpected_check" }]; - } - return Reflect.get(target, property, receiver); - }, - }); - expect(evaluate(proxyPolicy)).toMatchObject({ - action: "unavailable", - reasonCodes: ["policy_invalid"], - }); - }); -}); - -describe("threshold and action matrix", () => { - test("maps camera states only to unavailable or continued evaluation", () => { - expect(evaluate(completePolicy, source({ readCameraActive: () => false }))).toMatchObject({ - action: "unavailable", - reasonCodes: ["camera_inactive"], - }); - expect(evaluate(completePolicy, source({ readCameraActive: () => null }))).toMatchObject({ - action: "unavailable", - reasonCodes: ["camera_unavailable"], - }); - }); - - test("maps face count to one specific adjustment", () => { - expect(evaluate(completePolicy, source({ readFaceCount: () => 0 }))).toMatchObject({ - action: "adjust", - reasonCodes: ["face_not_found"], - }); - expect(evaluate(completePolicy, source({ readFaceCount: () => "multiple" }))).toMatchObject({ - action: "adjust", - reasonCodes: ["multiple_faces"], - }); - }); - - test("treats framing boundaries as ready and values outside them as adjustments", () => { - expect( - evaluate( - { ...completePolicy, checks: completePolicy.checks.slice(0, 3) }, - source({ readFraming: () => ({ faceAreaRatio: 0.2, centerOffsetRatio: 0.15 }) }), - ).action, - ).toBe("ready"); - expect( - evaluate(completePolicy, source({ readFraming: () => ({ faceAreaRatio: 0.19, centerOffsetRatio: 0 }) })), - ).toMatchObject({ action: "adjust", reasonCodes: ["move_closer"] }); - expect( - evaluate(completePolicy, source({ readFraming: () => ({ faceAreaRatio: 0.61, centerOffsetRatio: 0 }) })), - ).toMatchObject({ action: "adjust", reasonCodes: ["move_farther"] }); - expect( - evaluate(completePolicy, source({ readFraming: () => ({ faceAreaRatio: 0.4, centerOffsetRatio: 0.16 }) })), - ).toMatchObject({ action: "adjust", reasonCodes: ["center_face"] }); - }); - - test("treats lighting boundaries as ready and values outside them as adjustments", () => { - const throughLighting = { ...completePolicy, checks: completePolicy.checks.slice(0, 4) }; - expect(evaluate(throughLighting, source({ readMeanLuma: () => 60 })).action).toBe("ready"); - expect(evaluate(throughLighting, source({ readMeanLuma: () => 210 })).action).toBe("ready"); - expect(evaluate(completePolicy, source({ readMeanLuma: () => 59 }))).toMatchObject({ - action: "adjust", - reasonCodes: ["improve_lighting"], - }); - expect(evaluate(completePolicy, source({ readMeanLuma: () => 211 }))).toMatchObject({ - action: "adjust", - reasonCodes: ["reduce_lighting"], - }); - }); - - test("bounds retakes using the explicit policy limit", () => { - expect(evaluate(completePolicy, source({ readSharpnessScore: () => 11 }), 1)).toMatchObject({ - action: "retake", - reasonCodes: ["image_blurry"], - }); - expect(evaluate(completePolicy, source({ readSharpnessScore: () => 11 }), 2)).toMatchObject({ - action: "unavailable", - reasonCodes: ["retake_limit_reached"], - }); - expect(evaluate(completePolicy, source({ readSharpnessScore: () => 12 }), 2).action).toBe( - "ready", - ); - }); -}); - -describe("unavailable and privacy boundaries", () => { - test("contains no network, persistence, cache, or logging API", async () => { - const implementation = await Bun.file(new URL("../src/index.ts", import.meta.url)).text(); - expect(implementation).not.toMatch( - /\b(?:fetch|XMLHttpRequest|WebSocket|sendBeacon|localStorage|sessionStorage|indexedDB|CacheStorage|caches|logger|logging)\b|\bconsole\s*\./, - ); - }); - - test("missing, invalid, and throwing enabled measurements never create ready", () => { - const cases: ClientQualityMeasurementSourceV0[] = [ - { readCameraActive: () => true }, - source({ readFaceCount: () => null }), - source({ readFraming: () => ({ faceAreaRatio: Number.NaN, centerOffsetRatio: 0 }) }), - source({ readMeanLuma: () => 256 }), - source({ - readSharpnessScore: () => { - throw new Error("measurement unavailable"); - }, - }), - source({ readFraming: () => undefined as never }), - ]; - for (const measurements of cases) { - expect(evaluate(completePolicy, measurements).action).toBe("unavailable"); - } - expect(evaluate(completePolicy, source(), -1)).toMatchObject({ - action: "unavailable", - reasonCodes: ["quality_input_invalid"], - }); - expect( - evaluateClientQualityV0(completePolicy, undefined as never, { retakesUsed: 0 }), - ).toMatchObject({ action: "unavailable", reasonCodes: ["camera_unavailable"] }); - expect( - evaluateClientQualityV0(completePolicy, source(), undefined as never), - ).toMatchObject({ action: "unavailable", reasonCodes: ["quality_input_invalid"] }); - }); - - test("turns throwing framing properties and reader access into unavailable", () => { - const throwingMeasurement = Object.defineProperty( - { centerOffsetRatio: 0 }, - "faceAreaRatio", - { - enumerable: true, - get() { - throw new Error("measurement property unavailable"); - }, - }, - ); - expect( - evaluate( - completePolicy, - source({ readFraming: () => throwingMeasurement as never }), - ), - ).toMatchObject({ - action: "unavailable", - reasonCodes: ["framing_guidance_unavailable"], - }); - - const throwingReader = source(); - Object.defineProperty(throwingReader, "readFraming", { - enumerable: true, - get() { - throw new Error("reader unavailable"); - }, - }); - expect(evaluate(completePolicy, throwingReader)).toMatchObject({ - action: "unavailable", - reasonCodes: ["framing_guidance_unavailable"], - }); - }); - - test("emits an exact allowlisted result with no transient measurement data", () => { - const privateData = { - pixels: new Uint8Array([1, 2, 3]), - landmarks: [{ x: 0.1, y: 0.2 }], - bounds: { x: 10, y: 20, width: 40, height: 50 }, - detailedScore: 11.123456, - }; - const result = evaluate( - completePolicy, - source({ - readSharpnessScore: () => privateData.detailedScore, - ...privateData, - } as Partial), - ); - expect(Object.keys(result).sort()).toEqual([ - "action", - "policyId", - "reasonCodes", - "version", - ]); - expect(result.reasonCodes.every((code) => CLIENT_QUALITY_REASON_CODES_V0.includes(code as never))).toBe( - true, - ); - expect(JSON.stringify(result)).not.toMatch( - /pixels|landmarks|bounds|detailedScore|11\.123456|identity|provenance|attestation|simulation|spoof|liveness|verification|tee|simulated_/i, - ); - expect(isClientQualityResultV0(result)).toBe(true); - }); - - test("rejects extra fields, unknown reasons, and action/reason mismatches", () => { - const ready = evaluate(); - expect(isClientQualityResultV0({ ...ready, score: 1 })).toBe(false); - expect(isClientQualityResultV0({ ...ready, reasonCodes: ["unknown"] })).toBe(false); - expect(isClientQualityResultV0({ ...ready, action: "adjust", reasonCodes: [] })).toBe(false); - expect( - isClientQualityResultV0({ ...ready, action: "unavailable", reasonCodes: ["image_blurry"] }), - ).toBe(false); - }); - - test("returns false for throwing parsed-result properties and proxies", () => { - const throwingAction = Object.defineProperty( - { - version: CLIENT_QUALITY_POLICY_V0, - policyId: completePolicy.policyId, - reasonCodes: [], - }, - "action", - { - enumerable: true, - get() { - throw new Error("parsed action unavailable"); - }, - }, - ); - expect(isClientQualityResultV0(throwingAction)).toBe(false); - - const revocable = Proxy.revocable(evaluate(), {}); - revocable.revoke(); - expect(isClientQualityResultV0(revocable.proxy)).toBe(false); - }); -}); diff --git a/packages/contracts/README.md b/packages/contracts/README.md deleted file mode 100644 index 34b4f94..0000000 --- a/packages/contracts/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# Shared contract freeze - -The first eight Main-owned interfaces were approved at Gate 2 for the simulator-backed foundation. cs5 adds three versioned, staging-only UI/composition interfaces without changing or pretending to implement the blocked real contracts. These files define types and invariants, not an implementation. - -## Frozen interfaces - -1. `WebAuthnPrfAuthenticatorV1` -2. `EnrollmentSessionV2` (`V1` is retained as a superseded audit artifact and must not be implemented) -3. `SimulationCapturePolicyV0` -4. `FrameBundleV0` -5. `ClientQualityPolicyV0` -6. `BiometricVerificationPortV0` and `SimulationReceiptV0` -7. `StagingIssuancePortV0` and `SimulatedStagingCredentialV0` -8. `WorldIdRegistrationAdapterV1` - -cs5 staging UI/composition interfaces: - -9. `InjectedAuthenticatorPortV0` and `StagingDemoAuthenticatorReadyV0` -10. `SimulatorBrowserSessionPortV0` and its safe browser projections -11. `AuthenticatorUiFlowV1`, its categorical progress/error model, and frozen staging copy - -The interface shape for item 8 is frozen, but W03 implementation remains blocked: no pinned browser-capable SDK revision, full deterministic World ID public-output/registration/returning-signature vectors, or real staging gateway/chain configuration has been supplied. Gate 2 records that gap instead of inventing values. - -`EnrollmentSessionV2` supersedes V1 after the pre-implementation test plan exposed a missing issuance-result distinction. V2 separates biometric pending/reject/retry/unavailable from issuance pending/reject/unavailable and records both server-selected scenarios. Consumers must not map issuance rejection onto a biometric outcome. - -## cs5 demo boundary - -- `InjectedAuthenticatorPortV0` is a production-invalid staging compatibility seam. Its success result states that WebAuthn, PRF evaluation, and World ID creation were all **not** performed. -- The adapter may satisfy W06’s internal `passkey_complete` and W04’s internal `prfReady` gates only inside the named staging composition layer. Those inherited internal names are not factual claims about the demo. -- `SimulatorBrowserSessionPortV0` has no browser-controlled scenario input and omits simulator receipts, signatures, credential bodies, account identifiers, and raw return URLs. Every input has a strict runtime validator; every operation returns either a strict safe projection or a stable typed error envelope. -- The browser receives a fixed negative workflow-artifact summary only after `simulated_credential_ready`. -- `AuthenticatorUiFlowV1` freezes states, user actions, dependency events, legal transitions, ordered effects, server-state projection, error mapping, visual-source labels, and categorical progress. It has no percentage, ETA, arbitrary message, raw upstream error, secret, media, or credential field. -- Pre-session and explicit Close actions use `close_locally`; they never fabricate session fields or invoke the session-bound RP return port. -- User cancellation, page hide/unload, orientation invalidation, component unmount, and operation interruption use the frozen order: abort active effects, stop camera ownership, clear transient media, then request session cancellation only when an authenticated session exists. -- The frozen live policy is metadata-only capture with one or two frames and a camera-active-only UX check. Camera activity does not establish face position, so the safe UI copy says “Camera ready,” not “Great position.” - -## V0 data decision - -- Real camera bytes remain in browser memory and never cross the simulator boundary. -- `metadata_only` carries frame descriptors and digests. -- `synthetic_fixture` carries a named fixture reference, never user media. -- Array order is transport structure only and has no biometric meaning. -- Simulator outcomes are selected by an authenticated server-side staging scenario, never by pixels or browser scores. - -## Change control - -- Main is the sole writer. -- Any field, invariant, state, outcome, canonicalization, or trust-boundary change requires Main review and a version increment. -- Additive changes are not automatically compatible; a consumer must explicitly admit the new version. -- V0 simulation types can never be renamed or promoted into real TEE/issuer types. -- Future real TEE and issuer contracts start as new versions from owner-supplied interfaces; V0 does not promise wire compatibility. -- Workers stop and request a Main contract change instead of editing this package. - -## Canonical digest - -`FrameBundleV0.artifactDigestSha256` is lowercase hex SHA-256 over UTF-8 RFC 8785 JSON Canonicalization Scheme serialization of the bundle with `artifactDigestSha256` omitted. Frame digests use the same lowercase hex representation. The current contract defines the digest preimage; worker implementations must add deterministic vectors before integration. - -## Staging signatures - -Gateway-to-simulator requests, `SimulationReceiptV0`, and `SimulatedStagingCredentialV0` use Ed25519 with purpose-specific staging-only allowlisted keys and audiences. The signing preimage is UTF-8 RFC 8785 JSON Canonicalization Scheme serialization of every object field, including `authentication.scheme` and `authentication.keyId`, with only `authentication.signatureBase64Url` omitted. Consumers reject unknown keys, algorithms, environments, audiences, versions, expiries, scenario/outcome mismatches, nonce/idempotency/policy mismatches, and other binding failures. Production rejects the simulation discriminator before signature or outcome processing. diff --git a/packages/contracts/src/authenticator-ui-copy-v1.ts b/packages/contracts/src/authenticator-ui-copy-v1.ts deleted file mode 100644 index 221682c..0000000 --- a/packages/contracts/src/authenticator-ui-copy-v1.ts +++ /dev/null @@ -1,170 +0,0 @@ -import type { - AuthenticatorUiDetailCodeV1, - AuthenticatorUiStateIdV1, -} from "./authenticator-ui-flow-v1"; - -export interface AuthenticatorUiCopyV1 { - readonly heading: string; - readonly body: string; - readonly primaryAction: string | null; - readonly secondaryAction: string | null; -} - -const copy = ( - heading: string, - body: string, - primaryAction: string | null = null, - secondaryAction: string | null = null, -): AuthenticatorUiCopyV1 => Object.freeze({ heading, body, primaryAction, secondaryAction }); - -export const AUTHENTICATOR_UI_STAGING_BANNER_V1 = - "Staging demo · No biometric verification" as const; - -export const AUTHENTICATOR_UI_COPY_V1: Readonly< - Record -> = Object.freeze({ - request_checking: copy("Checking request", "Please wait while this staging request is checked."), - request_review: copy( - "Camera-flow demo for Zoom", - "This staging demo does not verify a person or issue a Selfie Check credential. Camera images stay on this device.", - "Continue", - "Cancel", - ), - request_invalid: copy("Request not valid", "Close this tab, then start a new staging request from the app.", "Close"), - request_expired: copy("Request expired", "Close this tab, then start a new staging request from the app.", "Close"), - request_return_target_invalid: copy("Cannot return safely", "The staging return destination was not approved.", "Close"), - request_rp_identity_unavailable: copy("App details unavailable", "The requesting app could not be matched to an approved presentation.", "Close"), - admission_checking: copy("Checking this browser", "No camera or authenticator operation has started."), - admission_safari_candidate: copy("Safari can try this demo", "Continue to the staging authenticator step.", "Continue"), - admission_chrome_candidate: copy("Chrome can try this demo", "Continue to the staging authenticator step.", "Continue"), - admission_handoff_required: copy("Open in Safari or Chrome", "Continue in a normal browser tab before any sensitive operation starts.", "Open browser", "Cancel"), - admission_handoff_departing: copy("Opening browser", "A fresh staging challenge will be created after navigation."), - admission_handoff_failed: copy("Browser could not open", "Close this tab and try the handoff again from the app.", "Close"), - admission_update_required: copy("Update iOS to continue", "This first demo supports iOS 18 or later in a normal Safari or Chrome tab.", "Close"), - admission_unsupported: copy("Device not supported", "This first staging demo runs only on supported iPhone browsers.", "Close"), - admission_insecure: copy("Secure page required", "Open the approved secure staging page to continue.", "Close"), - admission_framed: copy("Open the page directly", "This staging flow cannot run inside another page.", "Close"), - admission_private: copy("Use a normal browser tab", "Private or unknown browsing contexts are not admitted in this first demo.", "Close"), - admission_pwa: copy("Use Safari or Chrome", "Installed web-app mode is not admitted in this first demo.", "Close"), - admission_unknown: copy("Browser support unknown", "This context cannot safely enter the staging flow.", "Close"), - demo_authenticator_intro: copy( - "Try the authenticator step", - "This staging demo uses an injected authenticator. It does not create a passkey, evaluate PRF, or create a World ID.", - "Continue with demo authenticator", - "Cancel", - ), - session_creating: copy("Starting staging session", "The server is creating an expiring simulator session."), - demo_authenticator_pending: copy("Starting demo authenticator", "No WebAuthn or PRF operation is running."), - session_completing_authenticator: copy("Completing demo step", "The server is checking the staging-only completion handle."), - demo_authenticator_ready: copy("Demo authenticator ready", "No passkey, PRF result, or World ID was created.", "Continue to camera"), - demo_authenticator_non_completion: copy("Demo authenticator not completed", "Try again to continue the staging workflow.", "Try again", "Cancel"), - demo_authenticator_unavailable: copy("Demo authenticator unavailable", "This staging demo cannot continue in this context.", "Return to app"), - demo_authenticator_interrupted: copy("Demo authenticator interrupted", "Try the staging step again.", "Try again", "Cancel"), - demo_authenticator_transport_failure: copy("Connection interrupted", "Check the authoritative staging status before retrying.", "Check status", "Cancel"), - demo_authenticator_invalid_response: copy("Demo response not valid", "The staging flow stopped safely.", "Return to app"), - session_reconciling: copy("Checking staging status", "The server is resolving the last operation without repeating it."), - session_error: copy("Staging status unknown", "The last operation may have completed. Check the server status before continuing.", "Check status", "Cancel"), - capture_policy_loading: copy("Preparing camera step", "Loading the provisional staging capture policy."), - capture_intro: copy( - "Try the camera step", - "Use your camera to collect local frame metadata for this staging workflow. No biometric or uniqueness check is performed.", - "Start camera demo", - "Cancel", - ), - capture_permission_request: copy("Allow camera access", "The browser will ask for camera access. Camera images stay on this device."), - capture_acquiring: copy("Starting camera", "Waiting for the user-facing camera."), - capture_preparing: copy("Preparing preview", "Waiting for the first local frame."), - capture_preview: copy("Camera ready", "Place your face in the oval, then hold steady.", "Collect frame metadata", "Cancel"), - capture_guidance_adjust: copy("Adjust the camera view", "Follow the local capture guidance, then try again.", "Try again", "Cancel"), - capture_guidance_retake: copy("Retake the capture", "The local image was not clear enough for this capture attempt.", "Retake", "Cancel"), - capture_guidance_unavailable: copy("Visual guidance unavailable", "You can continue only through the approved guidance-free staging path.", "Continue without guidance", "Cancel"), - capture_sampling: copy("Camera ready, hold steady", "Collecting local frame metadata. This is not biometric verification."), - capture_artifact_ready: copy("Frame metadata ready", "Camera pixels will be cleared before only metadata and digests are submitted."), - capture_cleaning: copy("Closing camera", "Stopping camera tracks and clearing transient frame buffers."), - capture_complete: copy("Capture complete", "Only the approved metadata and digests are ready for the staging simulator."), - capture_error: copy("Camera step stopped", "The capture ended safely. Review the reason and try an allowed next step.", "Try again", "Cancel"), - biometric_simulation_pending: copy("Running staging scenario", "The server-selected simulator is processing workflow metadata. No biometric model is running."), - biometric_simulated_pass: copy("Pass scenario returned", "This is a server-selected simulator result. No biometric check ran."), - biometric_simulated_reject: copy("Reject scenario returned", "This staging result does not mean a spoof or person was detected.", "Return to app"), - biometric_simulated_retry: copy("Retry scenario returned", "Start a new local capture attempt in the same unexpired staging session.", "Retake", "Cancel"), - biometric_simulated_unavailable: copy("Simulator unavailable", "Check status or retry the same staging operation without assuming success.", "Retry", "Cancel"), - issuance_simulation_pending: copy("Creating staging artifact", "The issuance simulator is creating a non-production workflow artifact."), - issuance_simulated_reject: copy("Issuance scenario rejected", "No credential or proof was issued.", "Return to app"), - issuance_simulated_unavailable: copy("Issuance simulator unavailable", "Check status or retry the same staging operation without assuming success.", "Retry", "Cancel"), - simulated_credential_ready: copy( - "Staging demo complete", - "A non-production workflow artifact was created. No biometric verification or uniqueness check was performed. It is not a Selfie Check credential.", - "Return to app", - ), - return_redirecting: copy("Returning to app", "The server-approved return action is in progress."), - return_callback_failed: copy("Could not return", "The staging result remains unchanged. Try the server-approved return action again.", "Try again", "Close"), - returned: copy("Returned", "The staging flow is complete."), - flow_cancelling: copy("Cancelling", "Stopping active work and clearing transient data."), - flow_cancelled: copy("Demo cancelled", "Camera tracks and transient data were cleared.", "Close"), - flow_closed: copy("You can close this tab", "No session-bound return action was used."), - flow_expired: copy("Session expired", "Close this tab and start a new staging session from the app.", "Close"), - flow_failed: copy("Demo stopped safely", "No success was assumed. Close this tab and start again from the app.", "Close"), -}); - -export const AUTHENTICATOR_UI_DETAIL_COPY_V1: Readonly< - Record -> = Object.freeze({ - face_not_found: "Move into the camera view.", - multiple_faces: "Keep only one face in the camera view.", - move_closer: "Move closer to the camera.", - move_farther: "Move farther from the camera.", - center_face: "Center your face in the oval.", - improve_lighting: "Move to brighter, even lighting.", - reduce_lighting: "Move away from very bright light.", - image_blurry: "Hold the device steady and retake the capture.", - camera_inactive: "The camera is not active.", - camera_unavailable: "The camera is unavailable.", - face_guidance_unavailable: "Face-count guidance is unavailable.", - framing_guidance_unavailable: "Framing guidance is unavailable.", - lighting_guidance_unavailable: "Lighting guidance is unavailable.", - sharpness_guidance_unavailable: "Sharpness guidance is unavailable.", - retake_limit_reached: "The staging retake limit was reached.", - policy_invalid: "The staging quality policy is not valid.", - quality_input_invalid: "The local quality input is not valid.", - unsupported_context: "This browser context cannot start the camera step.", - prf_not_ready: "The staging compatibility gate is not ready.", - user_activation_required: "Tap the camera button to start.", - permission_denied: "Camera permission was not granted.", - camera_busy: "Another app or page may be using the camera.", - camera_restricted: "Camera access is restricted on this device.", - camera_unsupported: "This browser does not expose the required camera API.", - non_user_facing_camera: "A user-facing camera was not available.", - constraints_unsatisfied: "The requested camera settings were unavailable.", - acquisition_aborted: "Camera startup was interrupted.", - permission_timeout: "The camera permission request timed out.", - preview_timeout: "The first camera frame did not arrive in time.", - preview_invalid_frame: "The camera returned an invalid frame.", - interrupted: "The active step was interrupted.", - session_expired: "The staging session expired.", - capture_in_progress: "A capture attempt is already running.", - artifact_limit: "The capture exceeded the provisional staging limits.", - quality_callback_failed: "Local capture guidance failed safely.", - unknown: "An unknown local capture error occurred.", - gateway_disabled: "The staging gateway is disabled.", - invalid_request: "The staging request was not valid.", - body_too_large: "The staging request exceeded its size limit.", - unauthorized: "The staging request could not be authenticated.", - origin_forbidden: "This origin is not approved for the staging flow.", - not_found: "The staging session was not found.", - expired: "The staging session expired.", - invalid_state: "The staging operation is not allowed in the current state.", - binding_mismatch: "The operation did not match the existing staging request.", - replay_rejected: "The staging operation was already consumed.", - artifact_invalid: "The frame metadata did not match the staging policy.", - resource_busy: "The staging service is busy.", - network_unavailable: "The network is unavailable.", - network_timeout: "The staging request timed out.", - response_invalid: "The staging response was not valid.", - return_target_invalid: "The return destination was not approved.", - navigation_blocked: "The browser blocked the return action.", - navigation_failed: "The return action failed.", - safe_internal_error: "The staging demo stopped safely.", -}); - -// Copy is intentionally explicit about negative assurance. Figma text that says -// real person, liveness, or real passkey/Selfie Check success is not used here. diff --git a/packages/contracts/src/authenticator-ui-flow-v1.ts b/packages/contracts/src/authenticator-ui-flow-v1.ts deleted file mode 100644 index 8fbf6b5..0000000 --- a/packages/contracts/src/authenticator-ui-flow-v1.ts +++ /dev/null @@ -1,1444 +0,0 @@ -import type { EnrollmentSessionStateV2 } from "./enrollment-session-v2"; -import { ENROLLMENT_SESSION_STATES_V2 } from "./enrollment-session-v2"; -import type { RuntimeEnvironment } from "./common"; -import { - assertSimulationArtifactAllowed, - hasExactKeys, - isRecord, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, -} from "./common"; -import { - RP_PRESENTATION_IDS_V0, - isSimulatorBrowserSessionErrorV0, - type RpPresentationIdV0, - type SimulatorBrowserSessionErrorV0, -} from "./simulator-browser-session-port-v0"; - -export const AUTHENTICATOR_UI_FLOW_V1 = "authenticator_ui_flow_v1" as const; -export const AUTHENTICATOR_UI_SNAPSHOT_V1 = "authenticator_ui_snapshot_v1" as const; - -export const AUTHENTICATOR_UI_STATES_V1 = Object.freeze([ - "request_checking", - "request_review", - "request_invalid", - "request_expired", - "request_return_target_invalid", - "request_rp_identity_unavailable", - "admission_checking", - "admission_safari_candidate", - "admission_chrome_candidate", - "admission_handoff_required", - "admission_handoff_departing", - "admission_handoff_failed", - "admission_update_required", - "admission_unsupported", - "admission_insecure", - "admission_framed", - "admission_private", - "admission_pwa", - "admission_unknown", - "demo_authenticator_intro", - "session_creating", - "demo_authenticator_pending", - "session_completing_authenticator", - "demo_authenticator_ready", - "demo_authenticator_non_completion", - "demo_authenticator_unavailable", - "demo_authenticator_interrupted", - "demo_authenticator_transport_failure", - "demo_authenticator_invalid_response", - "session_reconciling", - "session_error", - "capture_policy_loading", - "capture_intro", - "capture_permission_request", - "capture_acquiring", - "capture_preparing", - "capture_preview", - "capture_guidance_adjust", - "capture_guidance_retake", - "capture_guidance_unavailable", - "capture_sampling", - "capture_artifact_ready", - "capture_cleaning", - "capture_complete", - "capture_error", - "biometric_simulation_pending", - "biometric_simulated_pass", - "biometric_simulated_reject", - "biometric_simulated_retry", - "biometric_simulated_unavailable", - "issuance_simulation_pending", - "issuance_simulated_reject", - "issuance_simulated_unavailable", - "simulated_credential_ready", - "return_redirecting", - "return_callback_failed", - "returned", - "flow_cancelling", - "flow_cancelled", - "flow_closed", - "flow_expired", - "flow_failed", -] as const); - -export type AuthenticatorUiStateIdV1 = (typeof AUTHENTICATOR_UI_STATES_V1)[number]; - -export const AUTHENTICATOR_UI_PROGRESS_STAGES_V1 = Object.freeze([ - "request_validation", - "admission", - "demo_authenticator", - "session_create", - "camera_permission", - "camera_prepare", - "frame_collection", - "biometric_simulation", - "issuance_simulation", - "status_recovery", - "callback", - "cancellation", -] as const); - -export type AuthenticatorUiProgressStageV1 = - (typeof AUTHENTICATOR_UI_PROGRESS_STAGES_V1)[number]; -export type AuthenticatorUiProgressStatusV1 = "idle" | "pending" | "complete"; - -export interface AuthenticatorUiProgressV1 { - readonly stage: AuthenticatorUiProgressStageV1; - readonly status: AuthenticatorUiProgressStatusV1; -} - -export const AUTHENTICATOR_UI_DETAIL_CODES_V1 = Object.freeze([ - "face_not_found", - "multiple_faces", - "move_closer", - "move_farther", - "center_face", - "improve_lighting", - "reduce_lighting", - "image_blurry", - "camera_inactive", - "camera_unavailable", - "face_guidance_unavailable", - "framing_guidance_unavailable", - "lighting_guidance_unavailable", - "sharpness_guidance_unavailable", - "retake_limit_reached", - "policy_invalid", - "quality_input_invalid", - "unsupported_context", - "prf_not_ready", - "user_activation_required", - "permission_denied", - "camera_busy", - "camera_restricted", - "camera_unsupported", - "non_user_facing_camera", - "constraints_unsatisfied", - "acquisition_aborted", - "permission_timeout", - "preview_timeout", - "preview_invalid_frame", - "interrupted", - "session_expired", - "capture_in_progress", - "artifact_limit", - "quality_callback_failed", - "unknown", - "gateway_disabled", - "invalid_request", - "body_too_large", - "unauthorized", - "origin_forbidden", - "not_found", - "expired", - "invalid_state", - "binding_mismatch", - "replay_rejected", - "artifact_invalid", - "resource_busy", - "network_unavailable", - "network_timeout", - "response_invalid", - "return_target_invalid", - "navigation_blocked", - "navigation_failed", - "safe_internal_error", -] as const); - -export type AuthenticatorUiDetailCodeV1 = - (typeof AUTHENTICATOR_UI_DETAIL_CODES_V1)[number]; - -export const AUTHENTICATOR_UI_VISUAL_SOURCES_V1 = Object.freeze([ - "figma_5132_134352", - "figma_5132_134394", - "figma_5132_134441", - "figma_5132_134488", - "figma_5132_134535", - "figma_5132_134582_external", - "figma_5132_134643", - "figma_5132_134692_external", - "figma_5132_134743", - "figma_5132_134841", - "figma_5132_134939", - "figma_5132_135038", - "figma_5132_135071", - "figma_5132_135104", - "verified_template", - "not_figma_verified", - "none", -] as const); - -export type AuthenticatorUiVisualSourceV1 = - (typeof AUTHENTICATOR_UI_VISUAL_SOURCES_V1)[number]; - -export interface AuthenticatorUiSnapshotV1 { - readonly kind: typeof AUTHENTICATOR_UI_SNAPSHOT_V1; - readonly version: typeof AUTHENTICATOR_UI_FLOW_V1; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly state: AuthenticatorUiStateIdV1; - readonly progress: AuthenticatorUiProgressV1; - readonly detailCode: AuthenticatorUiDetailCodeV1 | null; - readonly authoritativeSessionState: EnrollmentSessionStateV2 | null; - readonly rpPresentationId: RpPresentationIdV0 | null; - readonly visualSource: AuthenticatorUiVisualSourceV1; -} - -export const AUTHENTICATOR_UI_STATE_PROGRESS_V1: Readonly< - Record -> = { - request_checking: { stage: "request_validation", status: "pending" }, - request_review: { stage: "request_validation", status: "complete" }, - request_invalid: { stage: "request_validation", status: "complete" }, - request_expired: { stage: "request_validation", status: "complete" }, - request_return_target_invalid: { stage: "request_validation", status: "complete" }, - request_rp_identity_unavailable: { stage: "request_validation", status: "complete" }, - admission_checking: { stage: "admission", status: "pending" }, - admission_safari_candidate: { stage: "admission", status: "complete" }, - admission_chrome_candidate: { stage: "admission", status: "complete" }, - admission_handoff_required: { stage: "admission", status: "complete" }, - admission_handoff_departing: { stage: "admission", status: "pending" }, - admission_handoff_failed: { stage: "admission", status: "complete" }, - admission_update_required: { stage: "admission", status: "complete" }, - admission_unsupported: { stage: "admission", status: "complete" }, - admission_insecure: { stage: "admission", status: "complete" }, - admission_framed: { stage: "admission", status: "complete" }, - admission_private: { stage: "admission", status: "complete" }, - admission_pwa: { stage: "admission", status: "complete" }, - admission_unknown: { stage: "admission", status: "complete" }, - demo_authenticator_intro: { stage: "demo_authenticator", status: "idle" }, - session_creating: { stage: "session_create", status: "pending" }, - demo_authenticator_pending: { stage: "demo_authenticator", status: "pending" }, - session_completing_authenticator: { stage: "demo_authenticator", status: "pending" }, - demo_authenticator_ready: { stage: "demo_authenticator", status: "complete" }, - demo_authenticator_non_completion: { stage: "demo_authenticator", status: "complete" }, - demo_authenticator_unavailable: { stage: "demo_authenticator", status: "complete" }, - demo_authenticator_interrupted: { stage: "demo_authenticator", status: "complete" }, - demo_authenticator_transport_failure: { stage: "demo_authenticator", status: "complete" }, - demo_authenticator_invalid_response: { stage: "demo_authenticator", status: "complete" }, - session_reconciling: { stage: "status_recovery", status: "pending" }, - session_error: { stage: "status_recovery", status: "complete" }, - capture_policy_loading: { stage: "camera_prepare", status: "pending" }, - capture_intro: { stage: "camera_prepare", status: "complete" }, - capture_permission_request: { stage: "camera_permission", status: "pending" }, - capture_acquiring: { stage: "camera_prepare", status: "pending" }, - capture_preparing: { stage: "camera_prepare", status: "pending" }, - capture_preview: { stage: "camera_prepare", status: "complete" }, - capture_guidance_adjust: { stage: "camera_prepare", status: "complete" }, - capture_guidance_retake: { stage: "frame_collection", status: "complete" }, - capture_guidance_unavailable: { stage: "camera_prepare", status: "complete" }, - capture_sampling: { stage: "frame_collection", status: "pending" }, - capture_artifact_ready: { stage: "frame_collection", status: "complete" }, - capture_cleaning: { stage: "frame_collection", status: "pending" }, - capture_complete: { stage: "frame_collection", status: "complete" }, - capture_error: { stage: "frame_collection", status: "complete" }, - biometric_simulation_pending: { stage: "biometric_simulation", status: "pending" }, - biometric_simulated_pass: { stage: "biometric_simulation", status: "complete" }, - biometric_simulated_reject: { stage: "biometric_simulation", status: "complete" }, - biometric_simulated_retry: { stage: "biometric_simulation", status: "complete" }, - biometric_simulated_unavailable: { stage: "biometric_simulation", status: "complete" }, - issuance_simulation_pending: { stage: "issuance_simulation", status: "pending" }, - issuance_simulated_reject: { stage: "issuance_simulation", status: "complete" }, - issuance_simulated_unavailable: { stage: "issuance_simulation", status: "complete" }, - simulated_credential_ready: { stage: "issuance_simulation", status: "complete" }, - return_redirecting: { stage: "callback", status: "pending" }, - return_callback_failed: { stage: "callback", status: "complete" }, - returned: { stage: "callback", status: "complete" }, - flow_cancelling: { stage: "cancellation", status: "pending" }, - flow_cancelled: { stage: "cancellation", status: "complete" }, - flow_closed: { stage: "cancellation", status: "complete" }, - flow_expired: { stage: "cancellation", status: "complete" }, - flow_failed: { stage: "cancellation", status: "complete" }, -}; - -for (const progress of Object.values(AUTHENTICATOR_UI_STATE_PROGRESS_V1)) { - Object.freeze(progress); -} -Object.freeze(AUTHENTICATOR_UI_STATE_PROGRESS_V1); - -const ADJUST_CODES = new Set([ - "face_not_found", - "multiple_faces", - "move_closer", - "move_farther", - "center_face", - "improve_lighting", - "reduce_lighting", -]); - -const UNAVAILABLE_GUIDANCE_CODES = new Set([ - "camera_inactive", - "camera_unavailable", - "face_guidance_unavailable", - "framing_guidance_unavailable", - "lighting_guidance_unavailable", - "sharpness_guidance_unavailable", - "retake_limit_reached", - "policy_invalid", - "quality_input_invalid", -]); - -const CAPTURE_ERROR_CODES = new Set([ - "unsupported_context", - "prf_not_ready", - "user_activation_required", - "permission_denied", - "camera_unavailable", - "camera_busy", - "camera_restricted", - "camera_unsupported", - "non_user_facing_camera", - "constraints_unsatisfied", - "acquisition_aborted", - "permission_timeout", - "preview_timeout", - "preview_invalid_frame", - "interrupted", - "session_expired", - "capture_in_progress", - "artifact_limit", - "quality_callback_failed", - "unknown", -]); - -const SESSION_ERROR_CODES = new Set([ - "gateway_disabled", - "invalid_request", - "body_too_large", - "unauthorized", - "origin_forbidden", - "not_found", - "expired", - "invalid_state", - "binding_mismatch", - "replay_rejected", - "artifact_invalid", - "resource_busy", - "network_unavailable", - "network_timeout", - "response_invalid", -]); - -const CALLBACK_ERROR_CODES = new Set([ - "return_target_invalid", - "navigation_blocked", - "navigation_failed", -]); - -function detailMatchesState( - state: AuthenticatorUiStateIdV1, - detailCode: AuthenticatorUiDetailCodeV1 | null, -): boolean { - if (state === "capture_guidance_adjust") return detailCode !== null && ADJUST_CODES.has(detailCode); - if (state === "capture_guidance_retake") return detailCode === "image_blurry"; - if (state === "capture_guidance_unavailable") { - return detailCode !== null && UNAVAILABLE_GUIDANCE_CODES.has(detailCode); - } - if (state === "capture_error") return detailCode !== null && CAPTURE_ERROR_CODES.has(detailCode); - if (state === "session_error") return detailCode !== null && SESSION_ERROR_CODES.has(detailCode); - if (state === "return_callback_failed") { - return detailCode !== null && CALLBACK_ERROR_CODES.has(detailCode); - } - if (state === "flow_failed") return detailCode === "safe_internal_error"; - return detailCode === null; -} - -export const ENROLLMENT_SESSION_TO_UI_STATE_V1: Readonly< - Record -> = Object.freeze({ - created: "demo_authenticator_pending", - passkey_complete: "demo_authenticator_ready", - capture_ready: "capture_intro", - biometric_simulation_pending: "biometric_simulation_pending", - simulated_pass: "biometric_simulated_pass", - simulated_reject: "biometric_simulated_reject", - simulated_retry: "biometric_simulated_retry", - simulated_unavailable: "biometric_simulated_unavailable", - issuance_simulation_pending: "issuance_simulation_pending", - simulated_issuance_reject: "issuance_simulated_reject", - simulated_issuance_unavailable: "issuance_simulated_unavailable", - simulated_credential_ready: "simulated_credential_ready", - cancelled: "flow_cancelled", - expired: "flow_expired", -}); - -const frozenUiStates = ( - ...states: readonly AuthenticatorUiStateIdV1[] -): readonly AuthenticatorUiStateIdV1[] => Object.freeze([...states]); - -export const ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1: Readonly< - Record -> = Object.freeze({ - created: frozenUiStates( - "demo_authenticator_pending", - "session_completing_authenticator", - "demo_authenticator_non_completion", - "demo_authenticator_unavailable", - "demo_authenticator_interrupted", - "demo_authenticator_transport_failure", - "demo_authenticator_invalid_response", - "session_reconciling", - "session_error", - "flow_cancelling", - ), - passkey_complete: frozenUiStates( - "demo_authenticator_ready", - "capture_policy_loading", - "session_reconciling", - "session_error", - "flow_cancelling", - ), - capture_ready: frozenUiStates( - "capture_intro", - "capture_permission_request", - "capture_acquiring", - "capture_preparing", - "capture_preview", - "capture_guidance_adjust", - "capture_guidance_retake", - "capture_guidance_unavailable", - "capture_sampling", - "capture_artifact_ready", - "capture_cleaning", - "capture_complete", - "capture_error", - "session_reconciling", - "session_error", - "flow_cancelling", - ), - biometric_simulation_pending: frozenUiStates( - "biometric_simulation_pending", - "session_reconciling", - "session_error", - "flow_cancelling", - ), - simulated_pass: frozenUiStates( - "biometric_simulated_pass", - "issuance_simulation_pending", - "session_reconciling", - "session_error", - "flow_cancelling", - ), - simulated_reject: frozenUiStates( - "biometric_simulated_reject", - ), - simulated_retry: frozenUiStates( - "biometric_simulated_retry", - "capture_policy_loading", - "session_reconciling", - "session_error", - "flow_cancelling", - ), - simulated_unavailable: frozenUiStates( - "biometric_simulated_unavailable", - "session_reconciling", - "session_error", - "flow_cancelling", - ), - issuance_simulation_pending: frozenUiStates( - "issuance_simulation_pending", - "session_reconciling", - "session_error", - "flow_cancelling", - ), - simulated_issuance_reject: frozenUiStates( - "issuance_simulated_reject", - ), - simulated_issuance_unavailable: frozenUiStates( - "issuance_simulated_unavailable", - "session_reconciling", - "session_error", - "flow_cancelling", - ), - simulated_credential_ready: frozenUiStates( - "simulated_credential_ready", - ), - cancelled: frozenUiStates("flow_cancelled"), - expired: frozenUiStates("flow_expired"), -}); - -const SERVER_STATE_REQUIRED_UI_STATES = new Set([ - "demo_authenticator_pending", - "session_completing_authenticator", - "demo_authenticator_ready", - "demo_authenticator_non_completion", - "demo_authenticator_unavailable", - "demo_authenticator_interrupted", - "demo_authenticator_transport_failure", - "demo_authenticator_invalid_response", - "capture_policy_loading", - "capture_intro", - "capture_permission_request", - "capture_acquiring", - "capture_preparing", - "capture_preview", - "capture_guidance_adjust", - "capture_guidance_retake", - "capture_guidance_unavailable", - "capture_sampling", - "capture_artifact_ready", - "capture_cleaning", - "capture_complete", - "capture_error", - "biometric_simulation_pending", - "biometric_simulated_pass", - "biometric_simulated_reject", - "biometric_simulated_retry", - "biometric_simulated_unavailable", - "issuance_simulation_pending", - "issuance_simulated_reject", - "issuance_simulated_unavailable", - "simulated_credential_ready", - "session_error", -]); - -function authoritativeStateMatchesUi( - state: AuthenticatorUiStateIdV1, - authoritativeSessionState: EnrollmentSessionStateV2 | null, -): boolean { - if (authoritativeSessionState === null) return !SERVER_STATE_REQUIRED_UI_STATES.has(state); - return ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1[authoritativeSessionState].includes(state); -} - -export const AUTHENTICATOR_UI_TERMINAL_STATES_V1 = Object.freeze([ - "request_invalid", - "request_expired", - "request_return_target_invalid", - "request_rp_identity_unavailable", - "admission_update_required", - "admission_unsupported", - "admission_insecure", - "admission_framed", - "admission_private", - "admission_pwa", - "admission_unknown", - "biometric_simulated_reject", - "issuance_simulated_reject", - "simulated_credential_ready", - "returned", - "flow_cancelled", - "flow_closed", - "flow_expired", - "flow_failed", -] as const satisfies readonly AuthenticatorUiStateIdV1[]); - -const TERMINAL_STATE_SET = new Set( - AUTHENTICATOR_UI_TERMINAL_STATES_V1, -); - -export const AUTHENTICATOR_UI_ACTIONS_V1 = Object.freeze([ - "continue", - "cancel", - "open_external_browser", - "start_demo_authenticator", - "continue_to_camera", - "start_camera", - "collect_frame_metadata", - "try_again", - "continue_without_guidance", - "retake", - "retry_same_operation", - "query_status", - "return_to_rp", - "close", -] as const); - -export type AuthenticatorUiActionV1 = (typeof AUTHENTICATOR_UI_ACTIONS_V1)[number]; - -export const AUTHENTICATOR_UI_EFFECTS_V1 = Object.freeze([ - "validate_request", - "evaluate_admission", - "open_external_browser", - "create_session", - "begin_demo_authenticator", - "complete_demo_authenticator", - "prepare_capture", - "start_capture", - "evaluate_quality", - "collect_frame_metadata", - "stop_capture", - "clear_transient_media", - "abort_active_effects", - "submit_capture", - "retry_unavailable", - "query_status", - "cancel_session", - "return_to_rp", - "close_locally", -] as const); - -export type AuthenticatorUiEffectV1 = (typeof AUTHENTICATOR_UI_EFFECTS_V1)[number]; - -export const AUTHENTICATOR_UI_INITIAL_EFFECTS_V1 = Object.freeze([ - "validate_request", -] as const satisfies readonly AuthenticatorUiEffectV1[]); - -export const AUTHENTICATOR_UI_EVENTS_V1 = Object.freeze([ - "request_accepted", - "request_invalid", - "request_expired", - "request_return_target_invalid", - "request_rp_identity_unavailable", - "continue", - "admission_safari_candidate", - "admission_chrome_candidate", - "admission_handoff_required", - "admission_update_required", - "admission_unsupported", - "admission_insecure", - "admission_framed", - "admission_private", - "admission_pwa", - "admission_unknown", - "handoff_started", - "handoff_failed", - "start_demo_authenticator", - "demo_authenticator_ready", - "demo_authenticator_non_completion", - "demo_authenticator_unavailable", - "demo_authenticator_interrupted", - "demo_authenticator_transport_failure", - "demo_authenticator_invalid_response", - "continue_to_camera", - "start_camera", - "capture_permission_requested", - "capture_acquiring", - "capture_preparing", - "capture_preview", - "quality_ready", - "quality_adjust", - "quality_retake", - "quality_unavailable", - "capture_sampling", - "capture_artifact_ready", - "cleanup_started", - "cleanup_complete", - "capture_failed", - "authoritative_session", - "session_failed", - "try_again", - "continue_without_guidance", - "retake", - "retry_requested", - "status_requested", - "cancel_requested", - "local_cancel_complete", - "local_close_requested", - "page_hidden", - "page_unloaded", - "orientation_invalidated", - "component_unmounted", - "operation_interrupted", - "session_expired", - "return_requested", - "return_failed", - "return_completed", - "fatal_error", -] as const); - -export type AuthenticatorUiEventTypeV1 = (typeof AUTHENTICATOR_UI_EVENTS_V1)[number]; -export const AUTHENTICATOR_UI_EVENT_V1 = "authenticator_ui_event_v1" as const; - -export interface AuthenticatorUiEventV1 { - readonly kind: typeof AUTHENTICATOR_UI_EVENT_V1; - readonly version: typeof AUTHENTICATOR_UI_FLOW_V1; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly event: AuthenticatorUiEventTypeV1; - readonly detailCode: AuthenticatorUiDetailCodeV1 | null; - readonly authoritativeSessionState: EnrollmentSessionStateV2 | null; - readonly rpPresentationId: RpPresentationIdV0 | null; -} - -export interface AuthenticatorUiTransitionV1 { - readonly snapshot: AuthenticatorUiSnapshotV1; - readonly effects: readonly AuthenticatorUiEffectV1[]; -} - -function frozenList(...values: readonly T[]): readonly T[] { - return Object.freeze([...values]); -} - -const EMPTY_ACTIONS = frozenList(); -const actionMap = Object.fromEntries( - AUTHENTICATOR_UI_STATES_V1.map((state) => [state, EMPTY_ACTIONS]), -) as Record; - -actionMap.request_review = frozenList("continue", "cancel"); -actionMap.admission_safari_candidate = frozenList("continue", "cancel"); -actionMap.admission_chrome_candidate = frozenList("continue", "cancel"); -actionMap.admission_handoff_required = frozenList("open_external_browser", "cancel"); -actionMap.demo_authenticator_intro = frozenList("start_demo_authenticator", "cancel"); -actionMap.demo_authenticator_ready = frozenList("continue_to_camera", "cancel"); -actionMap.demo_authenticator_non_completion = frozenList("try_again", "cancel"); -actionMap.demo_authenticator_interrupted = frozenList("try_again", "cancel"); -actionMap.demo_authenticator_transport_failure = frozenList("query_status", "cancel"); -actionMap.capture_intro = frozenList("start_camera", "cancel"); -actionMap.capture_preview = frozenList("collect_frame_metadata", "cancel"); -actionMap.capture_guidance_adjust = frozenList("try_again", "cancel"); -actionMap.capture_guidance_retake = frozenList("retake", "cancel"); -actionMap.capture_guidance_unavailable = frozenList("continue_without_guidance", "cancel"); -actionMap.capture_error = frozenList("try_again", "cancel"); -actionMap.biometric_simulated_retry = frozenList("retake", "cancel"); -actionMap.biometric_simulated_unavailable = frozenList( - "retry_same_operation", - "query_status", - "cancel", -); -actionMap.issuance_simulated_unavailable = frozenList( - "retry_same_operation", - "query_status", - "cancel", -); -actionMap.session_error = frozenList("query_status", "cancel"); -actionMap.return_callback_failed = frozenList("return_to_rp", "close"); - -for (const state of [ - "request_invalid", - "request_expired", - "request_return_target_invalid", - "request_rp_identity_unavailable", - "admission_handoff_failed", - "admission_update_required", - "admission_unsupported", - "admission_insecure", - "admission_framed", - "admission_private", - "admission_pwa", - "admission_unknown", - "flow_cancelled", - "flow_expired", - "flow_failed", -] as const) { - actionMap[state] = frozenList("close"); -} - -for (const state of [ - "demo_authenticator_unavailable", - "demo_authenticator_invalid_response", - "biometric_simulated_reject", - "issuance_simulated_reject", - "simulated_credential_ready", -] as const) { - actionMap[state] = frozenList("return_to_rp"); -} - -for (const state of [ - "request_checking", - "admission_checking", - "admission_handoff_departing", - "session_creating", - "demo_authenticator_pending", - "session_completing_authenticator", - "session_reconciling", - "capture_policy_loading", - "capture_permission_request", - "capture_acquiring", - "capture_preparing", - "capture_sampling", - "capture_artifact_ready", - "capture_cleaning", - "capture_complete", - "biometric_simulation_pending", - "biometric_simulated_pass", - "issuance_simulation_pending", - "return_redirecting", -] as const) { - actionMap[state] = frozenList(...actionMap[state], "cancel"); -} - -export const AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1: Readonly< - Record -> = Object.freeze(actionMap); - -function visualForState(state: AuthenticatorUiStateIdV1): AuthenticatorUiVisualSourceV1 { - if (state === "request_review") return "figma_5132_134352"; - if ( - state === "demo_authenticator_intro" || - state === "session_creating" || - state === "demo_authenticator_pending" || - state === "session_completing_authenticator" || - state === "demo_authenticator_ready" - ) { - return "figma_5132_134394"; - } - if (state === "demo_authenticator_unavailable") return "figma_5132_134441"; - if (state === "demo_authenticator_non_completion") return "figma_5132_134488"; - if ( - state === "demo_authenticator_transport_failure" || - state === "demo_authenticator_invalid_response" - ) { - return "figma_5132_134535"; - } - if (state === "capture_intro" || state === "capture_permission_request") { - return "figma_5132_134643"; - } - if ( - state === "capture_acquiring" || - state === "capture_preparing" || - state === "capture_preview" || - state === "capture_guidance_adjust" || - state === "capture_guidance_retake" || - state === "capture_guidance_unavailable" - ) { - return "figma_5132_134743"; - } - if (state === "capture_sampling") return "figma_5132_134841"; - if ( - state === "capture_artifact_ready" || - state === "capture_cleaning" || - state === "capture_complete" - ) { - return "figma_5132_134939"; - } - if (state === "biometric_simulation_pending") return "figma_5132_135038"; - if (state === "biometric_simulated_pass" || state === "issuance_simulation_pending") { - return "figma_5132_135071"; - } - if (state === "simulated_credential_ready" || state === "return_redirecting") { - return "figma_5132_135104"; - } - if (state.startsWith("biometric_") || state.startsWith("issuance_")) { - return "not_figma_verified"; - } - return "verified_template"; -} - -export const AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1: Readonly< - Record -> = Object.freeze(Object.fromEntries( - AUTHENTICATOR_UI_STATES_V1.map((state) => [state, visualForState(state)]), -) as Record); - -function eventPayloadIsValid(value: AuthenticatorUiEventV1): boolean { - if (value.event === "request_accepted") { - return value.rpPresentationId !== null && - value.detailCode === null && - value.authoritativeSessionState === null; - } - if (value.event === "authoritative_session") { - return value.authoritativeSessionState !== null && - value.detailCode === null && - value.rpPresentationId === null; - } - if (value.event === "quality_adjust") { - return value.detailCode !== null && ADJUST_CODES.has(value.detailCode) && - value.authoritativeSessionState === null && value.rpPresentationId === null; - } - if (value.event === "quality_retake") { - return value.detailCode === "image_blurry" && - value.authoritativeSessionState === null && value.rpPresentationId === null; - } - if (value.event === "quality_unavailable") { - return value.detailCode !== null && UNAVAILABLE_GUIDANCE_CODES.has(value.detailCode) && - value.authoritativeSessionState === null && value.rpPresentationId === null; - } - if (value.event === "capture_failed") { - return value.detailCode !== null && CAPTURE_ERROR_CODES.has(value.detailCode) && - value.authoritativeSessionState === null && value.rpPresentationId === null; - } - if (value.event === "session_failed") { - return value.detailCode !== null && SESSION_ERROR_CODES.has(value.detailCode) && - value.authoritativeSessionState === null && value.rpPresentationId === null; - } - if (value.event === "return_failed") { - return value.detailCode !== null && CALLBACK_ERROR_CODES.has(value.detailCode) && - value.authoritativeSessionState === null && value.rpPresentationId === null; - } - if (value.event === "fatal_error") { - return value.detailCode === "safe_internal_error" && - value.authoritativeSessionState === null && value.rpPresentationId === null; - } - return value.detailCode === null && - value.authoritativeSessionState === null && - value.rpPresentationId === null; -} - -export function isAuthenticatorUiEventV1(value: unknown): value is AuthenticatorUiEventV1 { - try { - if ( - !isRecord(value) || - !hasExactKeys(value, [ - "kind", - "version", - "mode", - "environment", - "event", - "detailCode", - "authoritativeSessionState", - "rpPresentationId", - ]) || - value.kind !== AUTHENTICATOR_UI_EVENT_V1 || - value.version !== AUTHENTICATOR_UI_FLOW_V1 || - value.mode !== SIMULATION_MODE || - value.environment !== SIMULATION_ENVIRONMENT || - typeof value.event !== "string" || - !AUTHENTICATOR_UI_EVENTS_V1.includes(value.event as AuthenticatorUiEventTypeV1) || - (value.detailCode !== null && - (typeof value.detailCode !== "string" || - !AUTHENTICATOR_UI_DETAIL_CODES_V1.includes( - value.detailCode as AuthenticatorUiDetailCodeV1, - ))) || - (value.authoritativeSessionState !== null && - (typeof value.authoritativeSessionState !== "string" || - !ENROLLMENT_SESSION_STATES_V2.includes( - value.authoritativeSessionState as EnrollmentSessionStateV2, - ))) || - (value.rpPresentationId !== null && - (typeof value.rpPresentationId !== "string" || - !RP_PRESENTATION_IDS_V0.includes(value.rpPresentationId as RpPresentationIdV0))) - ) { - return false; - } - return eventPayloadIsValid(value as unknown as AuthenticatorUiEventV1); - } catch { - return false; - } -} - -interface StaticTransitionV1 { - readonly state: AuthenticatorUiStateIdV1; - readonly effects: readonly AuthenticatorUiEffectV1[]; -} - -const staticTransition = ( - state: AuthenticatorUiStateIdV1, - ...effects: readonly AuthenticatorUiEffectV1[] -): StaticTransitionV1 => Object.freeze({ state, effects: frozenList(...effects) }); - -const STATIC_TRANSITIONS_V1: Readonly> = Object.freeze({ - "request_checking|request_accepted": staticTransition("request_review"), - "request_checking|request_invalid": staticTransition("request_invalid"), - "request_checking|request_expired": staticTransition("request_expired"), - "request_checking|request_return_target_invalid": staticTransition("request_return_target_invalid"), - "request_checking|request_rp_identity_unavailable": staticTransition("request_rp_identity_unavailable"), - "request_review|continue": staticTransition("admission_checking", "evaluate_admission"), - "admission_checking|admission_safari_candidate": staticTransition("admission_safari_candidate"), - "admission_checking|admission_chrome_candidate": staticTransition("admission_chrome_candidate"), - "admission_checking|admission_handoff_required": staticTransition("admission_handoff_required"), - "admission_checking|admission_update_required": staticTransition("admission_update_required"), - "admission_checking|admission_unsupported": staticTransition("admission_unsupported"), - "admission_checking|admission_insecure": staticTransition("admission_insecure"), - "admission_checking|admission_framed": staticTransition("admission_framed"), - "admission_checking|admission_private": staticTransition("admission_private"), - "admission_checking|admission_pwa": staticTransition("admission_pwa"), - "admission_checking|admission_unknown": staticTransition("admission_unknown"), - "admission_safari_candidate|continue": staticTransition("demo_authenticator_intro"), - "admission_chrome_candidate|continue": staticTransition("demo_authenticator_intro"), - "admission_handoff_required|handoff_started": staticTransition( - "admission_handoff_departing", - "open_external_browser", - ), - "admission_handoff_departing|handoff_failed": staticTransition("admission_handoff_failed"), - "demo_authenticator_intro|start_demo_authenticator": staticTransition( - "session_creating", - "create_session", - ), - "demo_authenticator_pending|demo_authenticator_ready": staticTransition( - "session_completing_authenticator", - "complete_demo_authenticator", - ), - "demo_authenticator_pending|demo_authenticator_non_completion": staticTransition( - "demo_authenticator_non_completion", - ), - "demo_authenticator_pending|demo_authenticator_unavailable": staticTransition( - "demo_authenticator_unavailable", - ), - "demo_authenticator_pending|demo_authenticator_interrupted": staticTransition( - "demo_authenticator_interrupted", - ), - "demo_authenticator_pending|demo_authenticator_transport_failure": staticTransition( - "demo_authenticator_transport_failure", - ), - "demo_authenticator_pending|demo_authenticator_invalid_response": staticTransition( - "demo_authenticator_invalid_response", - ), - "demo_authenticator_non_completion|try_again": staticTransition( - "demo_authenticator_pending", - "begin_demo_authenticator", - ), - "demo_authenticator_interrupted|try_again": staticTransition( - "demo_authenticator_pending", - "begin_demo_authenticator", - ), - "demo_authenticator_transport_failure|status_requested": staticTransition( - "session_reconciling", - "query_status", - ), - "demo_authenticator_ready|continue_to_camera": staticTransition( - "capture_policy_loading", - "prepare_capture", - ), - "capture_intro|start_camera": staticTransition("capture_permission_request", "start_capture"), - "capture_intro|capture_permission_requested": staticTransition("capture_permission_request"), - "capture_permission_request|capture_acquiring": staticTransition("capture_acquiring"), - "capture_acquiring|capture_preparing": staticTransition("capture_preparing"), - "capture_preparing|capture_preview": staticTransition("capture_preview"), - "capture_preview|quality_ready": staticTransition("capture_sampling", "collect_frame_metadata"), - "capture_sampling|capture_sampling": staticTransition("capture_sampling"), - "capture_preview|quality_adjust": staticTransition( - "capture_guidance_adjust", - "stop_capture", - "clear_transient_media", - ), - "capture_preview|quality_retake": staticTransition( - "capture_guidance_retake", - "stop_capture", - "clear_transient_media", - ), - "capture_preview|quality_unavailable": staticTransition( - "capture_guidance_unavailable", - "stop_capture", - "clear_transient_media", - ), - "capture_guidance_adjust|try_again": staticTransition("capture_permission_request", "start_capture"), - "capture_guidance_retake|retake": staticTransition("capture_permission_request", "start_capture"), - "capture_guidance_unavailable|continue_without_guidance": staticTransition( - "capture_sampling", - "start_capture", - "collect_frame_metadata", - ), - "capture_sampling|capture_artifact_ready": staticTransition( - "capture_artifact_ready", - "stop_capture", - "clear_transient_media", - ), - "capture_artifact_ready|cleanup_started": staticTransition("capture_cleaning"), - "capture_artifact_ready|cleanup_complete": staticTransition("capture_complete", "submit_capture"), - "capture_cleaning|cleanup_complete": staticTransition("capture_complete", "submit_capture"), - "capture_error|try_again": staticTransition("capture_permission_request", "start_capture"), - "biometric_simulated_retry|retake": staticTransition("capture_policy_loading", "prepare_capture"), - "biometric_simulated_unavailable|retry_requested": staticTransition( - "session_reconciling", - "retry_unavailable", - ), - "biometric_simulated_unavailable|status_requested": staticTransition( - "session_reconciling", - "query_status", - ), - "issuance_simulated_unavailable|retry_requested": staticTransition( - "session_reconciling", - "retry_unavailable", - ), - "issuance_simulated_unavailable|status_requested": staticTransition( - "session_reconciling", - "query_status", - ), - "session_error|status_requested": staticTransition( - "session_reconciling", - "query_status", - ), - "return_callback_failed|return_requested": staticTransition("return_redirecting", "return_to_rp"), - "return_redirecting|return_failed": staticTransition("return_callback_failed"), - "return_redirecting|return_completed": staticTransition("returned"), -}); - -const AUTHORITATIVE_STATUS_STATES = new Set([ - "session_creating", - "demo_authenticator_pending", - "session_completing_authenticator", - "capture_policy_loading", - "capture_complete", - "biometric_simulation_pending", - "biometric_simulated_pass", - "biometric_simulated_unavailable", - "issuance_simulation_pending", - "issuance_simulated_unavailable", - "session_reconciling", - "flow_cancelling", -]); - -const LIFECYCLE_ABORT_EVENTS = new Set([ - "page_hidden", - "page_unloaded", - "orientation_invalidated", - "component_unmounted", - "operation_interrupted", -]); - -function isProgress(value: unknown, state: AuthenticatorUiStateIdV1): boolean { - if (!isRecord(value) || !hasExactKeys(value, ["stage", "status"])) return false; - const expected = AUTHENTICATOR_UI_STATE_PROGRESS_V1[state]; - return value.stage === expected.stage && value.status === expected.status; -} - -export function isAuthenticatorUiSnapshotV1(value: unknown): value is AuthenticatorUiSnapshotV1 { - try { - if (!isRecord(value)) return false; - if ( - !hasExactKeys(value, [ - "kind", - "version", - "mode", - "environment", - "state", - "progress", - "detailCode", - "authoritativeSessionState", - "rpPresentationId", - "visualSource", - ]) || - value.kind !== AUTHENTICATOR_UI_SNAPSHOT_V1 || - value.version !== AUTHENTICATOR_UI_FLOW_V1 || - value.mode !== SIMULATION_MODE || - value.environment !== SIMULATION_ENVIRONMENT || - typeof value.state !== "string" || - !AUTHENTICATOR_UI_STATES_V1.includes(value.state as AuthenticatorUiStateIdV1) || - (value.detailCode !== null && - (typeof value.detailCode !== "string" || - !AUTHENTICATOR_UI_DETAIL_CODES_V1.includes(value.detailCode as AuthenticatorUiDetailCodeV1))) || - (value.authoritativeSessionState !== null && - (typeof value.authoritativeSessionState !== "string" || - !ENROLLMENT_SESSION_STATES_V2.includes(value.authoritativeSessionState as EnrollmentSessionStateV2))) || - (value.rpPresentationId !== null && - (typeof value.rpPresentationId !== "string" || - !RP_PRESENTATION_IDS_V0.includes(value.rpPresentationId as RpPresentationIdV0))) || - typeof value.visualSource !== "string" || - !AUTHENTICATOR_UI_VISUAL_SOURCES_V1.includes(value.visualSource as AuthenticatorUiVisualSourceV1) - ) { - return false; - } - const state = value.state as AuthenticatorUiStateIdV1; - const authoritativeSessionState = - value.authoritativeSessionState as EnrollmentSessionStateV2 | null; - return ( - isProgress(value.progress, state) && - detailMatchesState(state, value.detailCode as AuthenticatorUiDetailCodeV1 | null) && - authoritativeStateMatchesUi(state, authoritativeSessionState) - ); - } catch { - return false; - } -} - -export function makeAuthenticatorUiSnapshotV1(input: { - readonly state: AuthenticatorUiStateIdV1; - readonly detailCode?: AuthenticatorUiDetailCodeV1 | null; - readonly authoritativeSessionState?: EnrollmentSessionStateV2 | null; - readonly rpPresentationId?: RpPresentationIdV0 | null; - readonly visualSource?: AuthenticatorUiVisualSourceV1; -}): AuthenticatorUiSnapshotV1 { - const snapshot: AuthenticatorUiSnapshotV1 = Object.freeze({ - kind: AUTHENTICATOR_UI_SNAPSHOT_V1, - version: AUTHENTICATOR_UI_FLOW_V1, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - state: input.state, - progress: Object.freeze({ ...AUTHENTICATOR_UI_STATE_PROGRESS_V1[input.state] }), - detailCode: input.detailCode ?? null, - authoritativeSessionState: input.authoritativeSessionState ?? null, - rpPresentationId: input.rpPresentationId ?? null, - visualSource: input.visualSource ?? "none", - }); - if (!isAuthenticatorUiSnapshotV1(snapshot)) { - throw new TypeError("invalid_authenticator_ui_snapshot_v1"); - } - return snapshot; -} - -export function makeAuthenticatorUiEventV1(input: { - readonly event: AuthenticatorUiEventTypeV1; - readonly detailCode?: AuthenticatorUiDetailCodeV1 | null; - readonly authoritativeSessionState?: EnrollmentSessionStateV2 | null; - readonly rpPresentationId?: RpPresentationIdV0 | null; -}): AuthenticatorUiEventV1 { - const event: AuthenticatorUiEventV1 = Object.freeze({ - kind: AUTHENTICATOR_UI_EVENT_V1, - version: AUTHENTICATOR_UI_FLOW_V1, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - event: input.event, - detailCode: input.detailCode ?? null, - authoritativeSessionState: input.authoritativeSessionState ?? null, - rpPresentationId: input.rpPresentationId ?? null, - }); - if (!isAuthenticatorUiEventV1(event)) { - throw new TypeError("invalid_authenticator_ui_event_v1"); - } - return event; -} - -export function projectSimulatorBrowserErrorToUiEventV1( - value: unknown, -): AuthenticatorUiEventV1 | null { - if (!isSimulatorBrowserSessionErrorV0(value)) return null; - const error = value as SimulatorBrowserSessionErrorV0; - if (error.operation === "begin_demo_authenticator") { - if (error.reasonCode === "user_non_completion") { - return makeAuthenticatorUiEventV1({ event: "demo_authenticator_non_completion" }); - } - if (error.reasonCode === "demo_authenticator_unavailable") { - return makeAuthenticatorUiEventV1({ event: "demo_authenticator_unavailable" }); - } - if (error.reasonCode === "demo_authenticator_interrupted") { - return makeAuthenticatorUiEventV1({ event: "demo_authenticator_interrupted" }); - } - if ( - error.reasonCode === "network_unavailable" || - error.reasonCode === "network_timeout" - ) { - return makeAuthenticatorUiEventV1({ event: "demo_authenticator_transport_failure" }); - } - return makeAuthenticatorUiEventV1({ event: "demo_authenticator_invalid_response" }); - } - if (error.operation === "return_to_rp") { - return makeAuthenticatorUiEventV1({ - event: "return_failed", - detailCode: "navigation_failed", - }); - } - if (error.operation === "bootstrap") { - return makeAuthenticatorUiEventV1({ - event: "fatal_error", - detailCode: "safe_internal_error", - }); - } - if (error.operation === "create_session") { - return makeAuthenticatorUiEventV1({ - event: "fatal_error", - detailCode: "safe_internal_error", - }); - } - const detailCode = SESSION_ERROR_CODES.has( - error.reasonCode as AuthenticatorUiDetailCodeV1, - ) - ? error.reasonCode as AuthenticatorUiDetailCodeV1 - : "response_invalid"; - return makeAuthenticatorUiEventV1({ event: "session_failed", detailCode }); -} - -export function transitionAuthenticatorUiV1( - current: AuthenticatorUiSnapshotV1, - event: AuthenticatorUiEventV1, -): AuthenticatorUiTransitionV1 | null { - if (!isAuthenticatorUiSnapshotV1(current) || !isAuthenticatorUiEventV1(event)) { - return null; - } - if (TERMINAL_STATE_SET.has(current.state)) { - if ( - (event.event !== "return_requested" && event.event !== "local_close_requested") || - (event.event === "return_requested" && - !AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[current.state].includes("return_to_rp")) || - (event.event === "local_close_requested" && - !AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[current.state].includes("close")) - ) { - return null; - } - } - - let nextState: AuthenticatorUiStateIdV1; - let effects: readonly AuthenticatorUiEffectV1[] = frozenList(); - let detailCode: AuthenticatorUiDetailCodeV1 | null = event.detailCode; - let authoritativeSessionState = current.authoritativeSessionState; - let rpPresentationId = current.rpPresentationId; - - if (event.event === "authoritative_session") { - if (!AUTHORITATIVE_STATUS_STATES.has(current.state)) return null; - const serverState = event.authoritativeSessionState; - if (serverState === null) return null; - nextState = ENROLLMENT_SESSION_TO_UI_STATE_V1[serverState]; - authoritativeSessionState = serverState; - detailCode = null; - if (serverState === "created") effects = frozenList("begin_demo_authenticator"); - } else if (event.event === "cancel_requested") { - if (!AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[current.state].includes("cancel")) return null; - nextState = "flow_cancelling"; - effects = current.authoritativeSessionState === null - ? frozenList("abort_active_effects", "stop_capture", "clear_transient_media") - : frozenList( - "abort_active_effects", - "stop_capture", - "clear_transient_media", - "cancel_session", - ); - detailCode = null; - } else if (LIFECYCLE_ABORT_EVENTS.has(event.event)) { - if (TERMINAL_STATE_SET.has(current.state) || current.state === "flow_cancelling") { - return null; - } - nextState = "flow_cancelling"; - effects = current.authoritativeSessionState === null - ? frozenList("abort_active_effects", "stop_capture", "clear_transient_media") - : frozenList( - "abort_active_effects", - "stop_capture", - "clear_transient_media", - "cancel_session", - ); - detailCode = null; - } else if (event.event === "local_cancel_complete") { - if (current.state !== "flow_cancelling" || current.authoritativeSessionState !== null) { - return null; - } - nextState = "flow_cancelled"; - detailCode = null; - } else if (event.event === "session_expired") { - if (TERMINAL_STATE_SET.has(current.state)) return null; - nextState = "flow_expired"; - effects = frozenList("abort_active_effects", "stop_capture", "clear_transient_media"); - detailCode = null; - authoritativeSessionState = null; - } else if (event.event === "fatal_error") { - nextState = "flow_failed"; - effects = frozenList("abort_active_effects", "stop_capture", "clear_transient_media"); - authoritativeSessionState = null; - } else if (event.event === "session_failed") { - if (current.state === "session_creating" && current.authoritativeSessionState === null) { - nextState = "flow_failed"; - effects = frozenList("abort_active_effects", "stop_capture", "clear_transient_media"); - detailCode = "safe_internal_error"; - authoritativeSessionState = null; - } else if (!AUTHORITATIVE_STATUS_STATES.has(current.state)) { - return null; - } else { - nextState = "session_error"; - } - } else if (event.event === "capture_failed") { - if (!current.state.startsWith("capture_")) return null; - nextState = "capture_error"; - effects = frozenList("abort_active_effects", "stop_capture", "clear_transient_media"); - } else if (event.event === "local_close_requested") { - if (!AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[current.state].includes("close")) { - return null; - } - nextState = "flow_closed"; - effects = frozenList( - "abort_active_effects", - "stop_capture", - "clear_transient_media", - "close_locally", - ); - detailCode = null; - authoritativeSessionState = null; - } else if (event.event === "return_requested") { - const allowedActions = AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[current.state]; - if (!allowedActions.includes("return_to_rp")) return null; - nextState = "return_redirecting"; - effects = frozenList( - "abort_active_effects", - "stop_capture", - "clear_transient_media", - "return_to_rp", - ); - detailCode = null; - authoritativeSessionState = null; - } else { - const transition = STATIC_TRANSITIONS_V1[`${current.state}|${event.event}`]; - if (transition === undefined) return null; - nextState = transition.state; - effects = transition.effects; - if (event.event === "request_accepted") { - rpPresentationId = event.rpPresentationId; - } - } - - try { - const snapshot = makeAuthenticatorUiSnapshotV1({ - state: nextState, - detailCode, - authoritativeSessionState, - rpPresentationId, - visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[nextState], - }); - return Object.freeze({ snapshot, effects }); - } catch { - return null; - } -} - -export function dispatchAuthenticatorUiActionV1( - current: AuthenticatorUiSnapshotV1, - action: AuthenticatorUiActionV1, -): AuthenticatorUiTransitionV1 | null { - if ( - !isAuthenticatorUiSnapshotV1(current) || - !AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[current.state].includes(action) - ) { - return null; - } - if (action === "collect_frame_metadata") { - return Object.freeze({ - snapshot: current, - effects: frozenList("evaluate_quality"), - }); - } - const eventType: AuthenticatorUiEventTypeV1 = - action === "cancel" - ? "cancel_requested" - : action === "open_external_browser" - ? "handoff_started" - : action === "start_demo_authenticator" - ? "start_demo_authenticator" - : action === "continue_to_camera" - ? "continue_to_camera" - : action === "start_camera" - ? "start_camera" - : action === "try_again" - ? "try_again" - : action === "continue_without_guidance" - ? "continue_without_guidance" - : action === "retake" - ? "retake" - : action === "retry_same_operation" - ? "retry_requested" - : action === "query_status" - ? "status_requested" - : action === "return_to_rp" - ? "return_requested" - : action === "close" - ? "local_close_requested" - : "continue"; - return transitionAuthenticatorUiV1(current, makeAuthenticatorUiEventV1({ - event: eventType, - })); -} - -export function projectEnrollmentSessionStateToUiV1( - state: EnrollmentSessionStateV2, - input: Omit[0], "state" | "authoritativeSessionState"> = {}, -): AuthenticatorUiSnapshotV1 { - return makeAuthenticatorUiSnapshotV1({ - ...input, - state: ENROLLMENT_SESSION_TO_UI_STATE_V1[state], - authoritativeSessionState: state, - }); -} - -export function assertAuthenticatorUiSnapshotAllowed( - runtimeEnvironment: RuntimeEnvironment, - value: unknown, -): void { - assertSimulationArtifactAllowed(runtimeEnvironment, value); -} - -export function assertAuthenticatorUiEventAllowed( - runtimeEnvironment: RuntimeEnvironment, - value: unknown, -): void { - assertSimulationArtifactAllowed(runtimeEnvironment, value); -} - -// UI snapshots are categorical presentation state only. They are not telemetry, -// security evidence, biometric results, or proof that any external operation ran. diff --git a/packages/contracts/src/biometric-verification-port-v0.ts b/packages/contracts/src/biometric-verification-port-v0.ts deleted file mode 100644 index 213122a..0000000 --- a/packages/contracts/src/biometric-verification-port-v0.ts +++ /dev/null @@ -1,298 +0,0 @@ -import type { - BiometricSimulationOutcomeV0, - BiometricSimulationScenarioV0, - HexSha256, - Identifier, - IsoDateTime, - RuntimeEnvironment, - StagingAuthenticationV0, - StagingEd25519TrustRootV0, -} from "./common"; -import { - assertSimulationArtifactAllowed, - BIOMETRIC_SIMULATION_OUTCOMES_V0, - BIOMETRIC_SIMULATION_SCENARIOS_V0, - hasExactKeys, - isHexSha256, - isIsoDateTime, - isRecord, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - verifyStagingEd25519V0, -} from "./common"; -import type { FrameBundleV0 } from "./frame-bundle-v0"; -import { validateFrameBundleV0 } from "./frame-bundle-v0"; -import type { SimulationCapturePolicyV0 } from "./simulation-capture-policy-v0"; - -export const BIOMETRIC_VERIFICATION_PORT_V0 = "biometric_verification_port_v0" as const; -export const BIOMETRIC_SIMULATION_REQUEST_V0 = "biometric_simulation_request_v0" as const; -export const SIMULATION_RECEIPT_V0 = "simulation_receipt_v0" as const; -export const BIOMETRIC_SIMULATOR_AUDIENCE_V0 = - "world_id_web_authenticator_biometric_simulator_staging" as const; - -export const BIOMETRIC_SCENARIO_OUTCOME_V0: Readonly< - Record -> = { - happy_path: "simulated_pass", - spoof_reject: "simulated_reject", - capture_retry: "simulated_retry", - dependency_unavailable: "simulated_unavailable", -}; - -export const BIOMETRIC_SCENARIO_REASON_V0 = { - happy_path: "scenario_happy_path", - spoof_reject: "scenario_spoof_reject", - capture_retry: "scenario_capture_retry", - dependency_unavailable: "scenario_dependency_unavailable", -} as const; - -export type BiometricSimulationReasonV0 = - (typeof BIOMETRIC_SCENARIO_REASON_V0)[BiometricSimulationScenarioV0]; - -export interface BiometricSimulationRequestV0 { - readonly kind: typeof BIOMETRIC_SIMULATION_REQUEST_V0; - readonly version: typeof BIOMETRIC_VERIFICATION_PORT_V0; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly audience: typeof BIOMETRIC_SIMULATOR_AUDIENCE_V0; - readonly requestId: Identifier; - readonly sessionId: Identifier; - readonly nonceDigestSha256: HexSha256; - readonly idempotencyKey: Identifier; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly capturePolicyId: Identifier; - readonly scenario: BiometricSimulationScenarioV0; - readonly frameBundle: FrameBundleV0; - readonly requestedAt: IsoDateTime; - readonly expiresAt: IsoDateTime; - readonly authentication: StagingAuthenticationV0; -} - -export interface SimulationReceiptV0 { - readonly kind: typeof SIMULATION_RECEIPT_V0; - readonly version: typeof BIOMETRIC_VERIFICATION_PORT_V0; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly audience: typeof BIOMETRIC_SIMULATOR_AUDIENCE_V0; - readonly receiptId: Identifier; - readonly requestId: Identifier; - readonly simulatorVersion: string; - readonly scenario: BiometricSimulationScenarioV0; - readonly sessionId: Identifier; - readonly nonceDigestSha256: HexSha256; - readonly idempotencyKey: Identifier; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly capturePolicyId: Identifier; - readonly artifactDigestSha256: HexSha256; - readonly outcome: BiometricSimulationOutcomeV0; - readonly reasonCode: BiometricSimulationReasonV0; - readonly issuedAt: IsoDateTime; - readonly expiresAt: IsoDateTime; - readonly authentication: StagingAuthenticationV0; -} - -function isNonEmptyString(value: unknown): value is string { - return typeof value === "string" && value.length > 0; -} - -function isStagingAuthenticationV0(value: unknown): value is StagingAuthenticationV0 { - return ( - isRecord(value) && - hasExactKeys(value, ["scheme", "keyId", "signatureBase64Url"]) && - value.scheme === "staging-ed25519" && - isNonEmptyString(value.keyId) && - isNonEmptyString(value.signatureBase64Url) - ); -} - -function isBiometricScenarioV0(value: unknown): value is BiometricSimulationScenarioV0 { - return ( - typeof value === "string" && - BIOMETRIC_SIMULATION_SCENARIOS_V0.includes(value as BiometricSimulationScenarioV0) - ); -} - -function hasValidTimeWindow(issuedAt: unknown, expiresAt: unknown): boolean { - return ( - isIsoDateTime(issuedAt) && - isIsoDateTime(expiresAt) && - Date.parse(expiresAt) > Date.parse(issuedAt) - ); -} - -export function isBiometricSimulationRequestV0( - value: unknown, -): value is BiometricSimulationRequestV0 { - if (!isRecord(value)) return false; - if ( - !hasExactKeys(value, [ - "kind", - "version", - "mode", - "environment", - "audience", - "requestId", - "sessionId", - "nonceDigestSha256", - "idempotencyKey", - "accountPublicMaterialDigestSha256", - "capturePolicyId", - "scenario", - "frameBundle", - "requestedAt", - "expiresAt", - "authentication", - ]) - ) { - return false; - } - return ( - value.kind === BIOMETRIC_SIMULATION_REQUEST_V0 && - value.version === BIOMETRIC_VERIFICATION_PORT_V0 && - value.mode === SIMULATION_MODE && - value.environment === SIMULATION_ENVIRONMENT && - value.audience === BIOMETRIC_SIMULATOR_AUDIENCE_V0 && - isNonEmptyString(value.requestId) && - isNonEmptyString(value.sessionId) && - isHexSha256(value.nonceDigestSha256) && - isNonEmptyString(value.idempotencyKey) && - isHexSha256(value.accountPublicMaterialDigestSha256) && - isNonEmptyString(value.capturePolicyId) && - isBiometricScenarioV0(value.scenario) && - isRecord(value.frameBundle) && - hasValidTimeWindow(value.requestedAt, value.expiresAt) && - isStagingAuthenticationV0(value.authentication) - ); -} - -export function isSimulationReceiptV0(value: unknown): value is SimulationReceiptV0 { - if (!isRecord(value)) return false; - if ( - !hasExactKeys(value, [ - "kind", - "version", - "mode", - "environment", - "audience", - "receiptId", - "requestId", - "simulatorVersion", - "scenario", - "sessionId", - "nonceDigestSha256", - "idempotencyKey", - "accountPublicMaterialDigestSha256", - "capturePolicyId", - "artifactDigestSha256", - "outcome", - "reasonCode", - "issuedAt", - "expiresAt", - "authentication", - ]) - ) { - return false; - } - if (!isBiometricScenarioV0(value.scenario)) return false; - return ( - value.kind === SIMULATION_RECEIPT_V0 && - value.version === BIOMETRIC_VERIFICATION_PORT_V0 && - value.mode === SIMULATION_MODE && - value.environment === SIMULATION_ENVIRONMENT && - value.audience === BIOMETRIC_SIMULATOR_AUDIENCE_V0 && - isNonEmptyString(value.receiptId) && - isNonEmptyString(value.requestId) && - isNonEmptyString(value.simulatorVersion) && - isNonEmptyString(value.sessionId) && - isHexSha256(value.nonceDigestSha256) && - isNonEmptyString(value.idempotencyKey) && - isHexSha256(value.accountPublicMaterialDigestSha256) && - isNonEmptyString(value.capturePolicyId) && - isHexSha256(value.artifactDigestSha256) && - typeof value.outcome === "string" && - BIOMETRIC_SIMULATION_OUTCOMES_V0.includes( - value.outcome as BiometricSimulationOutcomeV0, - ) && - value.outcome === BIOMETRIC_SCENARIO_OUTCOME_V0[value.scenario] && - value.reasonCode === BIOMETRIC_SCENARIO_REASON_V0[value.scenario] && - hasValidTimeWindow(value.issuedAt, value.expiresAt) && - isStagingAuthenticationV0(value.authentication) - ); -} - -export interface ExpectedBiometricSimulationRequestV0 { - readonly runtimeEnvironment: RuntimeEnvironment; - readonly requestId: Identifier; - readonly sessionId: Identifier; - readonly nonceDigestSha256: HexSha256; - readonly idempotencyKey: Identifier; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly capturePolicyId: Identifier; - readonly scenario: BiometricSimulationScenarioV0; - readonly now: IsoDateTime; -} - -export async function verifyBiometricSimulationRequestV0( - value: unknown, - expected: ExpectedBiometricSimulationRequestV0, - capturePolicy: SimulationCapturePolicyV0, - trustRoot: StagingEd25519TrustRootV0, -): Promise { - assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); - if (!isBiometricSimulationRequestV0(value)) return false; - if ( - value.requestId !== expected.requestId || - value.sessionId !== expected.sessionId || - value.nonceDigestSha256 !== expected.nonceDigestSha256 || - value.idempotencyKey !== expected.idempotencyKey || - value.accountPublicMaterialDigestSha256 !== expected.accountPublicMaterialDigestSha256 || - value.capturePolicyId !== expected.capturePolicyId || - value.scenario !== expected.scenario || - value.frameBundle.sessionId !== expected.sessionId || - value.frameBundle.nonceDigestSha256 !== expected.nonceDigestSha256 || - value.frameBundle.accountPublicMaterialDigestSha256 !== - expected.accountPublicMaterialDigestSha256 || - value.frameBundle.policyId !== expected.capturePolicyId || - Date.parse(value.requestedAt) > Date.parse(expected.now) || - Date.parse(value.expiresAt) <= Date.parse(expected.now) - ) { - return false; - } - if ((await validateFrameBundleV0(value.frameBundle, capturePolicy)).length > 0) return false; - return verifyStagingEd25519V0(value as unknown as Record, trustRoot); -} - -export interface ExpectedSimulationReceiptV0 - extends Omit { - readonly runtimeEnvironment: RuntimeEnvironment; - readonly receiptId: Identifier; - readonly artifactDigestSha256: HexSha256; - readonly now: IsoDateTime; -} - -export async function verifySimulationReceiptV0( - value: unknown, - expected: ExpectedSimulationReceiptV0, - trustRoot: StagingEd25519TrustRootV0, -): Promise { - assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); - if (!isSimulationReceiptV0(value)) return false; - if ( - value.receiptId !== expected.receiptId || - value.requestId !== expected.requestId || - value.sessionId !== expected.sessionId || - value.nonceDigestSha256 !== expected.nonceDigestSha256 || - value.idempotencyKey !== expected.idempotencyKey || - value.accountPublicMaterialDigestSha256 !== expected.accountPublicMaterialDigestSha256 || - value.capturePolicyId !== expected.capturePolicyId || - value.artifactDigestSha256 !== expected.artifactDigestSha256 || - value.scenario !== expected.scenario || - Date.parse(value.issuedAt) > Date.parse(expected.now) || - Date.parse(value.expiresAt) <= Date.parse(expected.now) - ) { - return false; - } - return verifyStagingEd25519V0(value as unknown as Record, trustRoot); -} - -// The simulator uses authenticated scenario mapping, never pixels or a browser spoof score. diff --git a/packages/contracts/src/client-quality-policy-v0.ts b/packages/contracts/src/client-quality-policy-v0.ts deleted file mode 100644 index 58e0cd0..0000000 --- a/packages/contracts/src/client-quality-policy-v0.ts +++ /dev/null @@ -1,83 +0,0 @@ -import type { Identifier } from "./common"; -import { SIMULATION_ENVIRONMENT, SIMULATION_MODE } from "./common"; - -export const CLIENT_QUALITY_POLICY_V0 = "client_quality_policy_v0" as const; - -export type ClientQualityCheckV0 = - | { readonly kind: "camera_active" } - | { readonly kind: "single_face" } - | { - readonly kind: "framing"; - readonly minFaceAreaRatio: number; - readonly maxFaceAreaRatio: number; - readonly maxCenterOffsetRatio: number; - } - | { - readonly kind: "lighting"; - readonly minMeanLuma: number; - readonly maxMeanLuma: number; - } - | { readonly kind: "sharpness"; readonly minScore: number }; - -export type ClientQualityActionV0 = "ready" | "adjust" | "retake" | "unavailable"; - -export interface ClientQualityPolicyV0 { - readonly version: typeof CLIENT_QUALITY_POLICY_V0; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly policyId: Identifier; - readonly purpose: "capture_ux_only"; - readonly checks: readonly ClientQualityCheckV0[]; - readonly maxRetakes: number; -} - -export interface ClientQualityResultV0 { - readonly version: typeof CLIENT_QUALITY_POLICY_V0; - readonly policyId: Identifier; - readonly action: ClientQualityActionV0; - readonly reasonCodes: readonly string[]; -} - -export function validateClientQualityPolicyV0( - policy: ClientQualityPolicyV0, -): readonly string[] { - const errors: string[] = []; - if (policy.version !== CLIENT_QUALITY_POLICY_V0) errors.push("version"); - if (policy.mode !== SIMULATION_MODE) errors.push("mode"); - if (policy.environment !== SIMULATION_ENVIRONMENT) errors.push("environment"); - if (policy.purpose !== "capture_ux_only") errors.push("purpose"); - if (policy.maxRetakes < 0) errors.push("maxRetakes"); - - const kinds = policy.checks.map((check) => check.kind); - if (new Set(kinds).size !== kinds.length) errors.push("duplicateChecks"); - if (!kinds.includes("camera_active")) errors.push("cameraActiveRequired"); - - for (const check of policy.checks) { - if (check.kind === "framing") { - if ( - check.minFaceAreaRatio < 0 || - check.maxFaceAreaRatio > 1 || - check.minFaceAreaRatio >= check.maxFaceAreaRatio || - check.maxCenterOffsetRatio < 0 || - check.maxCenterOffsetRatio > 1 - ) { - errors.push("framingThresholds"); - } - } - if (check.kind === "lighting") { - if ( - check.minMeanLuma < 0 || - check.maxMeanLuma > 255 || - check.minMeanLuma >= check.maxMeanLuma - ) { - errors.push("lightingThresholds"); - } - } - if (check.kind === "sharpness" && check.minScore < 0) { - errors.push("sharpnessThreshold"); - } - } - return errors; -} - -// Results contain actions and reason codes only: no frames, landmarks, bounds, or spoof score. diff --git a/packages/contracts/src/enrollment-session-v1.ts b/packages/contracts/src/enrollment-session-v1.ts deleted file mode 100644 index 2142cc7..0000000 --- a/packages/contracts/src/enrollment-session-v1.ts +++ /dev/null @@ -1,71 +0,0 @@ -import type { - BiometricSimulationScenarioV0, - HexSha256, - Identifier, - IsoDateTime, -} from "./common"; -import { SIMULATION_ENVIRONMENT, SIMULATION_MODE } from "./common"; - -export const ENROLLMENT_SESSION_V1 = "enrollment_session_v1" as const; - -export const ENROLLMENT_SESSION_STATES_V1 = [ - "created", - "passkey_complete", - "capture_ready", - "simulation_pending", - "simulated_pass", - "simulated_reject", - "simulated_retry", - "simulated_unavailable", - "issuance_pending", - "simulated_credential_ready", - "cancelled", - "expired", -] as const; - -export type EnrollmentSessionStateV1 = (typeof ENROLLMENT_SESSION_STATES_V1)[number]; - -export interface EnrollmentSessionV1 { - readonly version: typeof ENROLLMENT_SESSION_V1; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly sessionId: Identifier; - readonly rpRequestDigestSha256: HexSha256; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly nonceBase64Url: string; - readonly idempotencyKey: Identifier; - readonly biometricScenario: BiometricSimulationScenarioV0; - readonly state: EnrollmentSessionStateV1; - readonly createdAt: IsoDateTime; - readonly expiresAt: IsoDateTime; -} - -export const ENROLLMENT_SESSION_TRANSITIONS_V1: Readonly< - Record -> = { - created: ["passkey_complete", "cancelled", "expired"], - passkey_complete: ["capture_ready", "cancelled", "expired"], - capture_ready: ["simulation_pending", "cancelled", "expired"], - simulation_pending: [ - "simulated_pass", - "simulated_reject", - "simulated_retry", - "simulated_unavailable", - "expired", - ], - simulated_pass: ["issuance_pending", "expired"], - simulated_reject: [], - simulated_retry: ["capture_ready", "cancelled", "expired"], - simulated_unavailable: ["simulation_pending", "cancelled", "expired"], - issuance_pending: ["simulated_credential_ready", "simulated_unavailable", "expired"], - simulated_credential_ready: [], - cancelled: [], - expired: [], -}; - -export function isEnrollmentTransitionAllowedV1( - from: EnrollmentSessionStateV1, - to: EnrollmentSessionStateV1, -): boolean { - return ENROLLMENT_SESSION_TRANSITIONS_V1[from].includes(to); -} diff --git a/packages/contracts/src/enrollment-session-v2.ts b/packages/contracts/src/enrollment-session-v2.ts deleted file mode 100644 index bcde1cc..0000000 --- a/packages/contracts/src/enrollment-session-v2.ts +++ /dev/null @@ -1,84 +0,0 @@ -import type { - BiometricSimulationScenarioV0, - HexSha256, - Identifier, - IsoDateTime, -} from "./common"; -import { SIMULATION_ENVIRONMENT, SIMULATION_MODE } from "./common"; -import type { IssuanceSimulationScenarioV0 } from "./staging-issuance-port-v0"; - -export const ENROLLMENT_SESSION_V2 = "enrollment_session_v2" as const; - -export const ENROLLMENT_SESSION_STATES_V2 = [ - "created", - "passkey_complete", - "capture_ready", - "biometric_simulation_pending", - "simulated_pass", - "simulated_reject", - "simulated_retry", - "simulated_unavailable", - "issuance_simulation_pending", - "simulated_issuance_reject", - "simulated_issuance_unavailable", - "simulated_credential_ready", - "cancelled", - "expired", -] as const; - -export type EnrollmentSessionStateV2 = (typeof ENROLLMENT_SESSION_STATES_V2)[number]; - -export interface EnrollmentSessionV2 { - readonly version: typeof ENROLLMENT_SESSION_V2; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly sessionId: Identifier; - readonly rpRequestDigestSha256: HexSha256; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly nonceBase64Url: string; - readonly idempotencyKey: Identifier; - readonly biometricScenario: BiometricSimulationScenarioV0; - readonly issuanceScenario: IssuanceSimulationScenarioV0; - readonly state: EnrollmentSessionStateV2; - readonly createdAt: IsoDateTime; - readonly expiresAt: IsoDateTime; -} - -export const ENROLLMENT_SESSION_TRANSITIONS_V2: Readonly< - Record -> = { - created: ["passkey_complete", "cancelled", "expired"], - passkey_complete: ["capture_ready", "cancelled", "expired"], - capture_ready: ["biometric_simulation_pending", "cancelled", "expired"], - biometric_simulation_pending: [ - "simulated_pass", - "simulated_reject", - "simulated_retry", - "simulated_unavailable", - "expired", - ], - simulated_pass: ["issuance_simulation_pending", "expired"], - simulated_reject: [], - simulated_retry: ["capture_ready", "cancelled", "expired"], - simulated_unavailable: ["biometric_simulation_pending", "cancelled", "expired"], - issuance_simulation_pending: [ - "simulated_credential_ready", - "simulated_issuance_reject", - "simulated_issuance_unavailable", - "expired", - ], - simulated_issuance_reject: [], - simulated_issuance_unavailable: ["issuance_simulation_pending", "cancelled", "expired"], - simulated_credential_ready: [], - cancelled: [], - expired: [], -}; - -export function isEnrollmentTransitionAllowedV2( - from: EnrollmentSessionStateV2, - to: EnrollmentSessionStateV2, -): boolean { - return ENROLLMENT_SESSION_TRANSITIONS_V2[from].includes(to); -} - -// V2 supersedes V1 for implementation because V1 collapsed issuance failures into biometric states. diff --git a/packages/contracts/src/frame-bundle-v0.ts b/packages/contracts/src/frame-bundle-v0.ts deleted file mode 100644 index 0c14754..0000000 --- a/packages/contracts/src/frame-bundle-v0.ts +++ /dev/null @@ -1,147 +0,0 @@ -import type { HexSha256, Identifier } from "./common"; -import { canonicalizeJsonV0, isHexSha256, isRecord, SIMULATION_MODE } from "./common"; -import type { - FrameArtifactDataModeV0, - SimulationCapturePolicyV0, -} from "./simulation-capture-policy-v0"; - -export const FRAME_BUNDLE_V0 = "frame_bundle_v0" as const; -export const FRAME_BUNDLE_V0_DIGEST_ALGORITHM = "sha256_rfc8785_jcs" as const; - -export interface FrameDescriptorV0 { - readonly transportIndex: number; - readonly width: number; - readonly height: number; - readonly encoding: "rgba8"; - readonly byteLength: number; - readonly frameDigestSha256: HexSha256; - readonly captureOffsetMs?: number; -} - -export interface FrameBundleV0 { - readonly kind: typeof FRAME_BUNDLE_V0; - readonly mode: typeof SIMULATION_MODE; - readonly sessionId: Identifier; - readonly policyId: Identifier; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly nonceDigestSha256: HexSha256; - readonly dataMode: FrameArtifactDataModeV0; - readonly frames: readonly FrameDescriptorV0[]; - readonly syntheticFixtureId?: Identifier; - readonly totalByteLength: number; - readonly digestAlgorithm: typeof FRAME_BUNDLE_V0_DIGEST_ALGORITHM; - readonly artifactDigestSha256: HexSha256; -} - -export async function validateFrameBundleV0( - value: unknown, - policy: SimulationCapturePolicyV0, -): Promise { - const errors: string[] = []; - if (!isRecord(value)) return ["bundleType"]; - const bundle = value as unknown as FrameBundleV0; - const allowedBundleKeys = new Set([ - "kind", - "mode", - "sessionId", - "policyId", - "accountPublicMaterialDigestSha256", - "nonceDigestSha256", - "dataMode", - "frames", - "syntheticFixtureId", - "totalByteLength", - "digestAlgorithm", - "artifactDigestSha256", - ]); - for (const key of Object.keys(bundle)) { - if (!allowedBundleKeys.has(key)) errors.push(`unknown.${key}`); - } - if (bundle.kind !== FRAME_BUNDLE_V0) errors.push("kind"); - if (bundle.mode !== SIMULATION_MODE) errors.push("mode"); - if (typeof bundle.sessionId !== "string" || !bundle.sessionId) errors.push("sessionId"); - if (bundle.policyId !== policy.policyId) errors.push("policyId"); - if (bundle.dataMode !== policy.dataMode) errors.push("dataMode"); - if (bundle.digestAlgorithm !== FRAME_BUNDLE_V0_DIGEST_ALGORITHM) { - errors.push("digestAlgorithm"); - } - if (!isHexSha256(bundle.accountPublicMaterialDigestSha256)) errors.push("accountDigest"); - if (!isHexSha256(bundle.nonceDigestSha256)) errors.push("nonceDigest"); - if (!isHexSha256(bundle.artifactDigestSha256)) errors.push("artifactDigest"); - if (!Array.isArray(bundle.frames)) return [...errors, "framesType"]; - if (bundle.frames.length < policy.minFrames || bundle.frames.length > policy.maxFrames) { - errors.push("frameCount"); - } - if (bundle.totalByteLength > policy.maxTotalBytes || bundle.totalByteLength < 0) { - errors.push("totalByteLength"); - } - if (!Number.isSafeInteger(bundle.totalByteLength)) errors.push("totalByteLengthType"); - if (bundle.dataMode === "synthetic_fixture" && !bundle.syntheticFixtureId) { - errors.push("syntheticFixtureId"); - } - if (bundle.dataMode === "metadata_only" && bundle.syntheticFixtureId !== undefined) { - errors.push("unexpectedSyntheticFixtureId"); - } - - let computedByteLength = 0; - bundle.frames.forEach((candidate, index) => { - if (!isRecord(candidate)) { - errors.push(`frames[${index}].type`); - return; - } - const frame = candidate as unknown as FrameDescriptorV0; - const allowedFrameKeys = new Set([ - "transportIndex", - "width", - "height", - "encoding", - "byteLength", - "frameDigestSha256", - "captureOffsetMs", - ]); - for (const key of Object.keys(frame)) { - if (!allowedFrameKeys.has(key)) errors.push(`frames[${index}].unknown.${key}`); - } - if (frame.transportIndex !== index) errors.push(`frames[${index}].transportIndex`); - if (!Number.isSafeInteger(frame.transportIndex)) errors.push(`frames[${index}].indexType`); - if (frame.encoding !== policy.encoding) errors.push(`frames[${index}].encoding`); - if (frame.width <= 0 || frame.width > policy.maxWidth) errors.push(`frames[${index}].width`); - if (!Number.isSafeInteger(frame.width)) errors.push(`frames[${index}].widthType`); - if (frame.height <= 0 || frame.height > policy.maxHeight) { - errors.push(`frames[${index}].height`); - } - if (!Number.isSafeInteger(frame.height)) errors.push(`frames[${index}].heightType`); - if (frame.byteLength < 0 || frame.byteLength > policy.maxFrameBytes) { - errors.push(`frames[${index}].byteLength`); - } - if (!Number.isSafeInteger(frame.byteLength)) errors.push(`frames[${index}].byteLengthType`); - if (frame.captureOffsetMs !== undefined && !Number.isSafeInteger(frame.captureOffsetMs)) { - errors.push(`frames[${index}].captureOffsetType`); - } - if (!isHexSha256(frame.frameDigestSha256)) errors.push(`frames[${index}].digest`); - computedByteLength += frame.byteLength; - }); - - if (computedByteLength !== bundle.totalByteLength) errors.push("byteLengthSum"); - try { - if (await computeFrameBundleDigestV0(bundle) !== bundle.artifactDigestSha256) { - errors.push("artifactDigestMismatch"); - } - } catch { - errors.push("artifactCanonicalization"); - } - return errors; -} - -export function canonicalFrameBundlePreimageV0(bundle: FrameBundleV0): string { - const { artifactDigestSha256: _omitted, ...preimage } = bundle; - return canonicalizeJsonV0(preimage); -} - -export async function computeFrameBundleDigestV0(bundle: FrameBundleV0): Promise { - const bytes = new TextEncoder().encode(canonicalFrameBundlePreimageV0(bundle)); - const digest = await crypto.subtle.digest("SHA-256", bytes); - return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join(""); -} - -// FrameBundleV0 contains descriptors and digests only. It has no camera-byte field. diff --git a/packages/contracts/src/index.ts b/packages/contracts/src/index.ts index 2028697..75c5e93 100644 --- a/packages/contracts/src/index.ts +++ b/packages/contracts/src/index.ts @@ -1,14 +1,2 @@ -export * from "./biometric-verification-port-v0"; -export * from "./authenticator-ui-flow-v1"; -export * from "./authenticator-ui-copy-v1"; -export * from "./client-quality-policy-v0"; export * from "./common"; -export * from "./enrollment-session-v1"; -export * from "./enrollment-session-v2"; -export * from "./frame-bundle-v0"; -export * from "./injected-authenticator-port-v0"; -export * from "./simulation-capture-policy-v0"; -export * from "./simulator-browser-session-port-v0"; -export * from "./staging-issuance-port-v0"; export * from "./webauthn-prf-authenticator-v1"; -export * from "./world-id-registration-adapter-v1"; diff --git a/packages/contracts/src/injected-authenticator-port-v0.ts b/packages/contracts/src/injected-authenticator-port-v0.ts deleted file mode 100644 index f1c66fa..0000000 --- a/packages/contracts/src/injected-authenticator-port-v0.ts +++ /dev/null @@ -1,256 +0,0 @@ -import type { HexSha256, Identifier, IsoDateTime, RuntimeEnvironment } from "./common"; -import { - assertSimulationArtifactAllowed, - hasExactKeys, - isHexSha256, - isIsoDateTime, - isRecord, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, -} from "./common"; - -export const INJECTED_AUTHENTICATOR_PORT_V0 = "injected_authenticator_port_v0" as const; -export const INJECTED_AUTHENTICATOR_REQUEST_V0 = "injected_authenticator_request_v0" as const; -export const STAGING_DEMO_AUTHENTICATOR_READY_V0 = "staging_demo_authenticator_ready_v0" as const; -export const STAGING_DEMO_AUTHENTICATOR_ERROR_V0 = "staging_demo_authenticator_error_v0" as const; - -export const STAGING_DEMO_AUTHENTICATOR_ERROR_REASONS_V0 = Object.freeze([ - "user_non_completion", - "unavailable", - "interrupted", - "transport_failure", - "invalid_response", -] as const); - -export type StagingDemoAuthenticatorErrorReasonV0 = - (typeof STAGING_DEMO_AUTHENTICATOR_ERROR_REASONS_V0)[number]; - -export interface InjectedAuthenticatorRequestV0 { - readonly kind: typeof INJECTED_AUTHENTICATOR_REQUEST_V0; - readonly version: typeof INJECTED_AUTHENTICATOR_PORT_V0; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly requestId: Identifier; - readonly sessionId: Identifier; - readonly idempotencyKey: Identifier; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly requestedAt: IsoDateTime; - readonly expiresAt: IsoDateTime; -} - -export interface StagingDemoAuthenticatorReadyV0 { - readonly kind: typeof STAGING_DEMO_AUTHENTICATOR_READY_V0; - readonly version: typeof INJECTED_AUTHENTICATOR_PORT_V0; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly requestId: Identifier; - readonly sessionId: Identifier; - readonly idempotencyKey: Identifier; - readonly completionHandle: Identifier; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly claims: { - readonly webauthnPerformed: false; - readonly prfEvaluated: false; - readonly worldIdCreated: false; - }; - readonly issuedAt: IsoDateTime; - readonly expiresAt: IsoDateTime; -} - -export interface StagingDemoAuthenticatorErrorV0 { - readonly kind: typeof STAGING_DEMO_AUTHENTICATOR_ERROR_V0; - readonly version: typeof INJECTED_AUTHENTICATOR_PORT_V0; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly requestId: Identifier; - readonly sessionId: Identifier; - readonly idempotencyKey: Identifier; - readonly reasonCode: StagingDemoAuthenticatorErrorReasonV0; -} - -export type InjectedAuthenticatorResultV0 = - | StagingDemoAuthenticatorReadyV0 - | StagingDemoAuthenticatorErrorV0; - -export interface ExpectedStagingDemoAuthenticatorReadyV0 { - readonly runtimeEnvironment: RuntimeEnvironment; - readonly requestId: Identifier; - readonly sessionId: Identifier; - readonly idempotencyKey: Identifier; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly requestRequestedAt: IsoDateTime; - readonly requestExpiresAt: IsoDateTime; - readonly now: IsoDateTime; -} - -export interface ExpectedStagingDemoAuthenticatorErrorV0 { - readonly runtimeEnvironment: RuntimeEnvironment; - readonly requestId: Identifier; - readonly sessionId: Identifier; - readonly idempotencyKey: Identifier; -} - -function nonEmpty(value: unknown): value is string { - return typeof value === "string" && value.length > 0; -} - -function validWindow(start: unknown, end: unknown): boolean { - return isIsoDateTime(start) && isIsoDateTime(end) && Date.parse(end) > Date.parse(start); -} - -export function isInjectedAuthenticatorRequestV0( - value: unknown, -): value is InjectedAuthenticatorRequestV0 { - try { - if (!isRecord(value)) return false; - return ( - hasExactKeys(value, [ - "kind", - "version", - "mode", - "environment", - "requestId", - "sessionId", - "idempotencyKey", - "accountPublicMaterialDigestSha256", - "requestedAt", - "expiresAt", - ]) && - value.kind === INJECTED_AUTHENTICATOR_REQUEST_V0 && - value.version === INJECTED_AUTHENTICATOR_PORT_V0 && - value.mode === SIMULATION_MODE && - value.environment === SIMULATION_ENVIRONMENT && - nonEmpty(value.requestId) && - nonEmpty(value.sessionId) && - nonEmpty(value.idempotencyKey) && - isHexSha256(value.accountPublicMaterialDigestSha256) && - validWindow(value.requestedAt, value.expiresAt) - ); - } catch { - return false; - } -} - -export function isStagingDemoAuthenticatorReadyV0( - value: unknown, -): value is StagingDemoAuthenticatorReadyV0 { - try { - if (!isRecord(value)) return false; - const claims = value.claims; - return ( - hasExactKeys(value, [ - "kind", - "version", - "mode", - "environment", - "requestId", - "sessionId", - "idempotencyKey", - "completionHandle", - "accountPublicMaterialDigestSha256", - "claims", - "issuedAt", - "expiresAt", - ]) && - value.kind === STAGING_DEMO_AUTHENTICATOR_READY_V0 && - value.version === INJECTED_AUTHENTICATOR_PORT_V0 && - value.mode === SIMULATION_MODE && - value.environment === SIMULATION_ENVIRONMENT && - nonEmpty(value.requestId) && - nonEmpty(value.sessionId) && - nonEmpty(value.idempotencyKey) && - nonEmpty(value.completionHandle) && - isHexSha256(value.accountPublicMaterialDigestSha256) && - isRecord(claims) && - hasExactKeys(claims, ["webauthnPerformed", "prfEvaluated", "worldIdCreated"]) && - claims.webauthnPerformed === false && - claims.prfEvaluated === false && - claims.worldIdCreated === false && - validWindow(value.issuedAt, value.expiresAt) - ); - } catch { - return false; - } -} - -export function isStagingDemoAuthenticatorErrorV0( - value: unknown, -): value is StagingDemoAuthenticatorErrorV0 { - try { - if (!isRecord(value)) return false; - return ( - hasExactKeys(value, [ - "kind", - "version", - "mode", - "environment", - "requestId", - "sessionId", - "idempotencyKey", - "reasonCode", - ]) && - value.kind === STAGING_DEMO_AUTHENTICATOR_ERROR_V0 && - value.version === INJECTED_AUTHENTICATOR_PORT_V0 && - value.mode === SIMULATION_MODE && - value.environment === SIMULATION_ENVIRONMENT && - nonEmpty(value.requestId) && - nonEmpty(value.sessionId) && - nonEmpty(value.idempotencyKey) && - typeof value.reasonCode === "string" && - STAGING_DEMO_AUTHENTICATOR_ERROR_REASONS_V0.includes( - value.reasonCode as StagingDemoAuthenticatorErrorReasonV0, - ) - ); - } catch { - return false; - } -} - -export function matchesExpectedStagingDemoAuthenticatorReadyV0( - value: unknown, - expected: ExpectedStagingDemoAuthenticatorReadyV0, -): value is StagingDemoAuthenticatorReadyV0 { - assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); - try { - return ( - isIsoDateTime(expected.now) && - isIsoDateTime(expected.requestRequestedAt) && - isIsoDateTime(expected.requestExpiresAt) && - isStagingDemoAuthenticatorReadyV0(value) && - value.requestId === expected.requestId && - value.sessionId === expected.sessionId && - value.idempotencyKey === expected.idempotencyKey && - value.accountPublicMaterialDigestSha256 === expected.accountPublicMaterialDigestSha256 && - Date.parse(value.issuedAt) >= Date.parse(expected.requestRequestedAt) && - Date.parse(value.expiresAt) <= Date.parse(expected.requestExpiresAt) && - Date.parse(value.issuedAt) <= Date.parse(expected.now) && - Date.parse(value.expiresAt) > Date.parse(expected.now) - ); - } catch { - return false; - } -} - -export function matchesExpectedStagingDemoAuthenticatorErrorV0( - value: unknown, - expected: ExpectedStagingDemoAuthenticatorErrorV0, -): value is StagingDemoAuthenticatorErrorV0 { - assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); - try { - return ( - isStagingDemoAuthenticatorErrorV0(value) && - value.requestId === expected.requestId && - value.sessionId === expected.sessionId && - value.idempotencyKey === expected.idempotencyKey - ); - } catch { - return false; - } -} - -export interface InjectedAuthenticatorPortV0 { - begin(request: InjectedAuthenticatorRequestV0): Promise; -} - -// This port is an explicit staging compatibility seam. It performs no WebAuthn, -// PRF evaluation, World ID key derivation, registration, or returning authentication. diff --git a/packages/contracts/src/simulation-capture-policy-v0.ts b/packages/contracts/src/simulation-capture-policy-v0.ts deleted file mode 100644 index 6da6a07..0000000 --- a/packages/contracts/src/simulation-capture-policy-v0.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { Identifier, IsoDateTime } from "./common"; -import { SIMULATION_ENVIRONMENT, SIMULATION_MODE } from "./common"; - -export const SIMULATION_CAPTURE_POLICY_V0 = "simulation_capture_policy_v0" as const; -export const FRAME_BUNDLE_V0_MIN_FRAMES = 1 as const; -export const FRAME_BUNDLE_V0_MAX_FRAMES = 4 as const; - -export type FrameArtifactDataModeV0 = "metadata_only" | "synthetic_fixture"; - -export interface SimulationCapturePolicyV0 { - readonly version: typeof SIMULATION_CAPTURE_POLICY_V0; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly policyId: Identifier; - readonly dataMode: FrameArtifactDataModeV0; - readonly encoding: "rgba8"; - readonly minFrames: number; - readonly maxFrames: number; - readonly maxWidth: number; - readonly maxHeight: number; - readonly maxFrameBytes: number; - readonly maxTotalBytes: number; - readonly captureOffsetsAreDiagnosticOnly: true; - readonly arrayOrderHasBiometricMeaning: false; - readonly qualityPolicyId: Identifier; - readonly expiresAt: IsoDateTime; -} - -export function validateSimulationCapturePolicyV0( - policy: SimulationCapturePolicyV0, -): readonly string[] { - const errors: string[] = []; - if (policy.version !== SIMULATION_CAPTURE_POLICY_V0) errors.push("version"); - if (policy.mode !== SIMULATION_MODE) errors.push("mode"); - if (policy.environment !== SIMULATION_ENVIRONMENT) errors.push("environment"); - if (policy.minFrames < FRAME_BUNDLE_V0_MIN_FRAMES) errors.push("minFrames"); - if (policy.maxFrames > FRAME_BUNDLE_V0_MAX_FRAMES) errors.push("maxFrames"); - if (policy.minFrames > policy.maxFrames) errors.push("frameRange"); - if (policy.maxWidth <= 0 || policy.maxHeight <= 0) errors.push("dimensions"); - if (policy.maxFrameBytes <= 0 || policy.maxTotalBytes <= 0) errors.push("byteLimits"); - return errors; -} diff --git a/packages/contracts/src/simulator-browser-session-port-v0.ts b/packages/contracts/src/simulator-browser-session-port-v0.ts deleted file mode 100644 index 7205ab7..0000000 --- a/packages/contracts/src/simulator-browser-session-port-v0.ts +++ /dev/null @@ -1,748 +0,0 @@ -import type { - HexSha256, - Identifier, - IsoDateTime, - RuntimeEnvironment, -} from "./common"; -import { - assertSimulationArtifactAllowed, - hasExactKeys, - isHexSha256, - isIsoDateTime, - isRecord, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, -} from "./common"; -import type { ClientQualityPolicyV0 } from "./client-quality-policy-v0"; -import { validateClientQualityPolicyV0 } from "./client-quality-policy-v0"; -import type { EnrollmentSessionStateV2 } from "./enrollment-session-v2"; -import { ENROLLMENT_SESSION_STATES_V2 } from "./enrollment-session-v2"; -import type { FrameBundleV0 } from "./frame-bundle-v0"; -import { validateFrameBundleV0 } from "./frame-bundle-v0"; -import type { SimulationCapturePolicyV0 } from "./simulation-capture-policy-v0"; -import { validateSimulationCapturePolicyV0 } from "./simulation-capture-policy-v0"; - -export const SIMULATOR_BROWSER_SESSION_PORT_V0 = "simulator_browser_session_port_v0" as const; -export const SIMULATOR_UI_BOOTSTRAP_V0 = "simulator_ui_bootstrap_v0" as const; -export const SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0 = - "simulator_browser_demo_authenticator_ready_v0" as const; -export const SIMULATOR_BROWSER_SESSION_VIEW_V0 = "simulator_browser_session_view_v0" as const; -export const SIMULATOR_BROWSER_SESSION_ERROR_V0 = "simulator_browser_session_error_v0" as const; -export const SIMULATOR_BROWSER_RETURN_ACCEPTED_V0 = - "simulator_browser_return_accepted_v0" as const; -export const SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0 = - "simulated_workflow_artifact_summary_v0" as const; - -export const RP_PRESENTATION_IDS_V0 = Object.freeze(["zoom_demo"] as const); -export type RpPresentationIdV0 = (typeof RP_PRESENTATION_IDS_V0)[number]; - -export const SIMULATOR_UI_QUALITY_POLICY_V0: ClientQualityPolicyV0 = Object.freeze({ - version: "client_quality_policy_v0", - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - policyId: "cs5-camera-active-only-v0", - purpose: "capture_ux_only", - checks: Object.freeze([Object.freeze({ kind: "camera_active" as const })]), - maxRetakes: 2, -}); - -export const SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0: Omit< - SimulationCapturePolicyV0, - "expiresAt" -> = Object.freeze({ - version: "simulation_capture_policy_v0", - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - policyId: "cs5-metadata-camera-active-v0", - dataMode: "metadata_only", - encoding: "rgba8", - minFrames: 1, - maxFrames: 2, - maxWidth: 1024, - maxHeight: 1024, - maxFrameBytes: 4_194_304, - maxTotalBytes: 8_388_608, - captureOffsetsAreDiagnosticOnly: true, - arrayOrderHasBiometricMeaning: false, - qualityPolicyId: SIMULATOR_UI_QUALITY_POLICY_V0.policyId, -}); - -export const SIMULATOR_SESSION_STATUS_CODES_V0 = Object.freeze([ - "created", - "passkey_complete", - "capture_ready", - "simulation_pass", - "simulation_reject", - "simulation_retry", - "simulation_unavailable", - "issuance_rejected", - "issuance_unavailable", - "simulated_credential_ready", - "cancelled", - "expired", -] as const); - -export type SimulatorSessionStatusCodeV0 = - (typeof SIMULATOR_SESSION_STATUS_CODES_V0)[number]; - -export const SIMULATOR_BROWSER_SESSION_OPERATIONS_V0 = Object.freeze([ - "bootstrap", - "create_session", - "begin_demo_authenticator", - "complete_demo_authenticator", - "prepare_capture", - "submit_capture", - "retry_unavailable", - "get_status", - "cancel", - "return_to_rp", -] as const); - -export type SimulatorBrowserSessionOperationV0 = - (typeof SIMULATOR_BROWSER_SESSION_OPERATIONS_V0)[number]; - -export const SIMULATOR_BROWSER_SESSION_ERROR_CODES_V0 = Object.freeze([ - "gateway_disabled", - "invalid_request", - "body_too_large", - "unauthorized", - "origin_forbidden", - "not_found", - "expired", - "invalid_state", - "binding_mismatch", - "replay_rejected", - "artifact_invalid", - "resource_busy", - "network_unavailable", - "network_timeout", - "response_invalid", - "navigation_failed", - "user_non_completion", - "demo_authenticator_unavailable", - "demo_authenticator_interrupted", -] as const); - -export type SimulatorBrowserSessionErrorCodeV0 = - (typeof SIMULATOR_BROWSER_SESSION_ERROR_CODES_V0)[number]; - -export interface SimulatorUiBootstrapV0 { - readonly kind: typeof SIMULATOR_UI_BOOTSTRAP_V0; - readonly version: typeof SIMULATOR_BROWSER_SESSION_PORT_V0; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly rpPresentationId: RpPresentationIdV0; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly returnAction: "server_managed"; - readonly authenticator: { - readonly kind: "injected_demo_only"; - readonly webauthnPerformed: false; - readonly prfEvaluated: false; - readonly worldIdCreated: false; - }; - readonly qualityPolicy: ClientQualityPolicyV0; -} - -export interface SimulatorBrowserDemoAuthenticatorReadyV0 { - readonly kind: typeof SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0; - readonly version: typeof SIMULATOR_BROWSER_SESSION_PORT_V0; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly sessionId: Identifier; - readonly idempotencyKey: Identifier; - readonly completionHandle: Identifier; - readonly claims: { - readonly webauthnPerformed: false; - readonly prfEvaluated: false; - readonly worldIdCreated: false; - }; - readonly expiresAt: IsoDateTime; -} - -export interface SimulatedWorkflowArtifactSummaryV0 { - readonly kind: typeof SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0; - readonly biometricVerification: "not_performed"; - readonly uniqueness: "not_performed"; - readonly credentialClass: "not_selfie_check"; - readonly productionCredential: false; -} - -export interface SimulatorBrowserSessionViewV0 { - readonly kind: typeof SIMULATOR_BROWSER_SESSION_VIEW_V0; - readonly version: typeof SIMULATOR_BROWSER_SESSION_PORT_V0; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly sessionId: Identifier; - readonly browserHandle: Identifier; - readonly nonceBase64Url: string; - readonly state: EnrollmentSessionStateV2; - readonly code: SimulatorSessionStatusCodeV0; - readonly retryable: boolean; - readonly expiresAt: IsoDateTime; - readonly capturePolicy: SimulationCapturePolicyV0; - readonly artifactSummary: SimulatedWorkflowArtifactSummaryV0 | null; -} - -export interface SimulatorBrowserSessionErrorV0 { - readonly kind: typeof SIMULATOR_BROWSER_SESSION_ERROR_V0; - readonly version: typeof SIMULATOR_BROWSER_SESSION_PORT_V0; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly operation: SimulatorBrowserSessionOperationV0; - readonly reasonCode: SimulatorBrowserSessionErrorCodeV0; -} - -export interface SimulatorBrowserReturnAcceptedV0 { - readonly kind: typeof SIMULATOR_BROWSER_RETURN_ACCEPTED_V0; - readonly version: typeof SIMULATOR_BROWSER_SESSION_PORT_V0; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly action: "server_managed"; -} - -export interface BrowserSessionFieldsV0 { - readonly sessionId: Identifier; - readonly browserHandle: Identifier; -} - -export interface BrowserIdempotentSessionFieldsV0 extends BrowserSessionFieldsV0 { - readonly idempotencyKey: Identifier; -} - -export interface CreateSimulatorBrowserSessionV0 { - readonly idempotencyKey: Identifier; -} - -export interface CompleteDemoAuthenticatorV0 extends BrowserIdempotentSessionFieldsV0 { - readonly completionHandle: Identifier; -} - -export interface SubmitSimulatorCaptureV0 extends BrowserIdempotentSessionFieldsV0 { - readonly nonceBase64Url: string; - readonly frameBundle: FrameBundleV0; -} - -export type SimulatorBrowserBootstrapResultV0 = - | SimulatorUiBootstrapV0 - | SimulatorBrowserSessionErrorV0; -export type SimulatorBrowserDemoAuthenticatorResultV0 = - | SimulatorBrowserDemoAuthenticatorReadyV0 - | SimulatorBrowserSessionErrorV0; -export type SimulatorBrowserSessionResultV0 = - | SimulatorBrowserSessionViewV0 - | SimulatorBrowserSessionErrorV0; -export type SimulatorBrowserReturnResultV0 = - | SimulatorBrowserReturnAcceptedV0 - | SimulatorBrowserSessionErrorV0; - -export interface SimulatorBrowserSessionPortV0 { - bootstrap(): Promise; - createSession(input: CreateSimulatorBrowserSessionV0): Promise; - beginDemoAuthenticator(input: BrowserIdempotentSessionFieldsV0): Promise; - completeDemoAuthenticator(input: CompleteDemoAuthenticatorV0): Promise; - prepareCapture(input: BrowserSessionFieldsV0): Promise; - submitCapture(input: SubmitSimulatorCaptureV0): Promise; - retryUnavailable(input: BrowserIdempotentSessionFieldsV0): Promise; - getStatus(input: BrowserSessionFieldsV0): Promise; - cancel(input: BrowserSessionFieldsV0): Promise; - returnToRp(input: BrowserSessionFieldsV0): Promise; -} - -export interface ExpectedSimulatorBrowserSessionViewV0 { - readonly runtimeEnvironment: RuntimeEnvironment; - readonly sessionId: Identifier; - readonly browserHandle: Identifier; - readonly now: IsoDateTime; -} - -export interface ExpectedSimulatorBrowserDemoAuthenticatorReadyV0 { - readonly runtimeEnvironment: RuntimeEnvironment; - readonly sessionId: Identifier; - readonly idempotencyKey: Identifier; - readonly now: IsoDateTime; -} - -export interface ExpectedSubmitSimulatorCaptureV0 { - readonly sessionId: Identifier; - readonly browserHandle: Identifier; - readonly idempotencyKey: Identifier; - readonly nonceBase64Url: string; - readonly nonceDigestSha256: HexSha256; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly capturePolicy: SimulationCapturePolicyV0; -} - -const frozenStatusCodes = ( - ...codes: readonly SimulatorSessionStatusCodeV0[] -): readonly SimulatorSessionStatusCodeV0[] => Object.freeze([...codes]); - -const STATE_CODES: Readonly< - Record -> = Object.freeze({ - created: frozenStatusCodes("created"), - passkey_complete: frozenStatusCodes("passkey_complete"), - capture_ready: frozenStatusCodes("capture_ready"), - biometric_simulation_pending: frozenStatusCodes("capture_ready"), - simulated_pass: frozenStatusCodes("simulation_pass"), - simulated_reject: frozenStatusCodes("simulation_reject"), - simulated_retry: frozenStatusCodes("simulation_retry"), - simulated_unavailable: frozenStatusCodes("simulation_unavailable"), - issuance_simulation_pending: frozenStatusCodes("simulation_pass"), - simulated_issuance_reject: frozenStatusCodes("issuance_rejected"), - simulated_issuance_unavailable: frozenStatusCodes("issuance_unavailable"), - simulated_credential_ready: frozenStatusCodes("simulated_credential_ready"), - cancelled: frozenStatusCodes("cancelled"), - expired: frozenStatusCodes("expired"), -}); - -const RETRYABLE_CODES = new Set([ - "simulation_retry", - "simulation_unavailable", - "issuance_unavailable", -]); - -function nonEmpty(value: unknown): value is string { - return typeof value === "string" && value.length > 0; -} - -function isAuthenticatorDisclosure(value: unknown): boolean { - return ( - isRecord(value) && - hasExactKeys(value, ["kind", "webauthnPerformed", "prfEvaluated", "worldIdCreated"]) && - value.kind === "injected_demo_only" && - value.webauthnPerformed === false && - value.prfEvaluated === false && - value.worldIdCreated === false - ); -} - -function isNegativeAuthenticatorClaims(value: unknown): boolean { - return ( - isRecord(value) && - hasExactKeys(value, ["webauthnPerformed", "prfEvaluated", "worldIdCreated"]) && - value.webauthnPerformed === false && - value.prfEvaluated === false && - value.worldIdCreated === false - ); -} - -function isExactUiQualityPolicy(value: unknown): value is ClientQualityPolicyV0 { - try { - return ( - isRecord(value) && - hasExactKeys(value, [ - "version", - "mode", - "environment", - "policyId", - "purpose", - "checks", - "maxRetakes", - ]) && - value.version === SIMULATOR_UI_QUALITY_POLICY_V0.version && - value.mode === SIMULATOR_UI_QUALITY_POLICY_V0.mode && - value.environment === SIMULATOR_UI_QUALITY_POLICY_V0.environment && - value.policyId === SIMULATOR_UI_QUALITY_POLICY_V0.policyId && - value.purpose === SIMULATOR_UI_QUALITY_POLICY_V0.purpose && - value.maxRetakes === SIMULATOR_UI_QUALITY_POLICY_V0.maxRetakes && - Array.isArray(value.checks) && - value.checks.length === 1 && - isRecord(value.checks[0]) && - hasExactKeys(value.checks[0], ["kind"]) && - value.checks[0].kind === "camera_active" && - validateClientQualityPolicyV0( - value as unknown as ClientQualityPolicyV0, - ).length === 0 - ); - } catch { - return false; - } -} - -function isExactUiCapturePolicy(value: unknown): value is SimulationCapturePolicyV0 { - try { - return ( - isRecord(value) && - hasExactKeys(value, [ - "version", - "mode", - "environment", - "policyId", - "dataMode", - "encoding", - "minFrames", - "maxFrames", - "maxWidth", - "maxHeight", - "maxFrameBytes", - "maxTotalBytes", - "captureOffsetsAreDiagnosticOnly", - "arrayOrderHasBiometricMeaning", - "qualityPolicyId", - "expiresAt", - ]) && - value.version === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.version && - value.mode === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.mode && - value.environment === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.environment && - value.policyId === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.policyId && - value.dataMode === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.dataMode && - value.encoding === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.encoding && - value.minFrames === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.minFrames && - value.maxFrames === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.maxFrames && - value.maxWidth === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.maxWidth && - value.maxHeight === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.maxHeight && - value.maxFrameBytes === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.maxFrameBytes && - value.maxTotalBytes === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.maxTotalBytes && - value.captureOffsetsAreDiagnosticOnly === true && - value.arrayOrderHasBiometricMeaning === false && - value.qualityPolicyId === SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.qualityPolicyId && - isIsoDateTime(value.expiresAt) && - validateSimulationCapturePolicyV0( - value as unknown as SimulationCapturePolicyV0, - ).length === 0 - ); - } catch { - return false; - } -} - -export function isCreateSimulatorBrowserSessionV0( - value: unknown, -): value is CreateSimulatorBrowserSessionV0 { - try { - return isRecord(value) && hasExactKeys(value, ["idempotencyKey"]) && nonEmpty(value.idempotencyKey); - } catch { - return false; - } -} - -export function isBrowserSessionFieldsV0(value: unknown): value is BrowserSessionFieldsV0 { - try { - return ( - isRecord(value) && - hasExactKeys(value, ["sessionId", "browserHandle"]) && - nonEmpty(value.sessionId) && - nonEmpty(value.browserHandle) - ); - } catch { - return false; - } -} - -export function isBrowserIdempotentSessionFieldsV0( - value: unknown, -): value is BrowserIdempotentSessionFieldsV0 { - try { - return ( - isRecord(value) && - hasExactKeys(value, ["sessionId", "browserHandle", "idempotencyKey"]) && - nonEmpty(value.sessionId) && - nonEmpty(value.browserHandle) && - nonEmpty(value.idempotencyKey) - ); - } catch { - return false; - } -} - -export function isCompleteDemoAuthenticatorV0( - value: unknown, -): value is CompleteDemoAuthenticatorV0 { - try { - return ( - isRecord(value) && - hasExactKeys(value, ["sessionId", "browserHandle", "idempotencyKey", "completionHandle"]) && - nonEmpty(value.sessionId) && - nonEmpty(value.browserHandle) && - nonEmpty(value.idempotencyKey) && - nonEmpty(value.completionHandle) - ); - } catch { - return false; - } -} - -export function isSubmitSimulatorCaptureShapeV0( - value: unknown, -): value is SubmitSimulatorCaptureV0 { - try { - return ( - isRecord(value) && - hasExactKeys(value, [ - "sessionId", - "browserHandle", - "idempotencyKey", - "nonceBase64Url", - "frameBundle", - ]) && - nonEmpty(value.sessionId) && - nonEmpty(value.browserHandle) && - nonEmpty(value.idempotencyKey) && - nonEmpty(value.nonceBase64Url) && - isRecord(value.frameBundle) - ); - } catch { - return false; - } -} - -export async function matchesExpectedSubmitSimulatorCaptureV0( - value: unknown, - expected: ExpectedSubmitSimulatorCaptureV0, -): Promise { - try { - if ( - !isSubmitSimulatorCaptureShapeV0(value) || - !isExactUiCapturePolicy(expected.capturePolicy) - ) { - return false; - } - const bundle = value.frameBundle; - return ( - value.sessionId === expected.sessionId && - value.browserHandle === expected.browserHandle && - value.idempotencyKey === expected.idempotencyKey && - value.nonceBase64Url === expected.nonceBase64Url && - bundle.sessionId === expected.sessionId && - bundle.nonceDigestSha256 === expected.nonceDigestSha256 && - bundle.accountPublicMaterialDigestSha256 === expected.accountPublicMaterialDigestSha256 && - (await validateFrameBundleV0(bundle, expected.capturePolicy)).length === 0 - ); - } catch { - return false; - } -} - -export function isSimulatorUiBootstrapV0(value: unknown): value is SimulatorUiBootstrapV0 { - try { - return ( - isRecord(value) && - hasExactKeys(value, [ - "kind", - "version", - "mode", - "environment", - "rpPresentationId", - "accountPublicMaterialDigestSha256", - "returnAction", - "authenticator", - "qualityPolicy", - ]) && - value.kind === SIMULATOR_UI_BOOTSTRAP_V0 && - value.version === SIMULATOR_BROWSER_SESSION_PORT_V0 && - value.mode === SIMULATION_MODE && - value.environment === SIMULATION_ENVIRONMENT && - typeof value.rpPresentationId === "string" && - RP_PRESENTATION_IDS_V0.includes(value.rpPresentationId as RpPresentationIdV0) && - isHexSha256(value.accountPublicMaterialDigestSha256) && - value.returnAction === "server_managed" && - isAuthenticatorDisclosure(value.authenticator) && - isExactUiQualityPolicy(value.qualityPolicy) - ); - } catch { - return false; - } -} - -export function isSimulatorBrowserDemoAuthenticatorReadyV0( - value: unknown, -): value is SimulatorBrowserDemoAuthenticatorReadyV0 { - try { - return ( - isRecord(value) && - hasExactKeys(value, [ - "kind", - "version", - "mode", - "environment", - "sessionId", - "idempotencyKey", - "completionHandle", - "claims", - "expiresAt", - ]) && - value.kind === SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0 && - value.version === SIMULATOR_BROWSER_SESSION_PORT_V0 && - value.mode === SIMULATION_MODE && - value.environment === SIMULATION_ENVIRONMENT && - nonEmpty(value.sessionId) && - nonEmpty(value.idempotencyKey) && - nonEmpty(value.completionHandle) && - isNegativeAuthenticatorClaims(value.claims) && - isIsoDateTime(value.expiresAt) - ); - } catch { - return false; - } -} - -export function matchesExpectedSimulatorBrowserDemoAuthenticatorReadyV0( - value: unknown, - expected: ExpectedSimulatorBrowserDemoAuthenticatorReadyV0, -): value is SimulatorBrowserDemoAuthenticatorReadyV0 { - assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); - try { - return ( - isIsoDateTime(expected.now) && - isSimulatorBrowserDemoAuthenticatorReadyV0(value) && - value.sessionId === expected.sessionId && - value.idempotencyKey === expected.idempotencyKey && - Date.parse(value.expiresAt) > Date.parse(expected.now) - ); - } catch { - return false; - } -} - -export function isSimulatedWorkflowArtifactSummaryV0( - value: unknown, -): value is SimulatedWorkflowArtifactSummaryV0 { - try { - return ( - isRecord(value) && - hasExactKeys(value, [ - "kind", - "biometricVerification", - "uniqueness", - "credentialClass", - "productionCredential", - ]) && - value.kind === SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0 && - value.biometricVerification === "not_performed" && - value.uniqueness === "not_performed" && - value.credentialClass === "not_selfie_check" && - value.productionCredential === false - ); - } catch { - return false; - } -} - -export function isSimulatorBrowserSessionErrorV0( - value: unknown, -): value is SimulatorBrowserSessionErrorV0 { - try { - return ( - isRecord(value) && - hasExactKeys(value, ["kind", "version", "mode", "environment", "operation", "reasonCode"]) && - value.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0 && - value.version === SIMULATOR_BROWSER_SESSION_PORT_V0 && - value.mode === SIMULATION_MODE && - value.environment === SIMULATION_ENVIRONMENT && - typeof value.operation === "string" && - SIMULATOR_BROWSER_SESSION_OPERATIONS_V0.includes( - value.operation as SimulatorBrowserSessionOperationV0, - ) && - typeof value.reasonCode === "string" && - SIMULATOR_BROWSER_SESSION_ERROR_CODES_V0.includes( - value.reasonCode as SimulatorBrowserSessionErrorCodeV0, - ) - ); - } catch { - return false; - } -} - -export function isSimulatorBrowserReturnAcceptedV0( - value: unknown, -): value is SimulatorBrowserReturnAcceptedV0 { - try { - return ( - isRecord(value) && - hasExactKeys(value, ["kind", "version", "mode", "environment", "action"]) && - value.kind === SIMULATOR_BROWSER_RETURN_ACCEPTED_V0 && - value.version === SIMULATOR_BROWSER_SESSION_PORT_V0 && - value.mode === SIMULATION_MODE && - value.environment === SIMULATION_ENVIRONMENT && - value.action === "server_managed" - ); - } catch { - return false; - } -} - -export function isSimulatorBrowserSessionViewV0( - value: unknown, -): value is SimulatorBrowserSessionViewV0 { - try { - if ( - !isRecord(value) || - !hasExactKeys(value, [ - "kind", - "version", - "mode", - "environment", - "sessionId", - "browserHandle", - "nonceBase64Url", - "state", - "code", - "retryable", - "expiresAt", - "capturePolicy", - "artifactSummary", - ]) || - value.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0 || - value.version !== SIMULATOR_BROWSER_SESSION_PORT_V0 || - value.mode !== SIMULATION_MODE || - value.environment !== SIMULATION_ENVIRONMENT || - !nonEmpty(value.sessionId) || - !nonEmpty(value.browserHandle) || - !nonEmpty(value.nonceBase64Url) || - typeof value.state !== "string" || - !ENROLLMENT_SESSION_STATES_V2.includes(value.state as EnrollmentSessionStateV2) || - typeof value.code !== "string" || - !SIMULATOR_SESSION_STATUS_CODES_V0.includes(value.code as SimulatorSessionStatusCodeV0) || - typeof value.retryable !== "boolean" || - !isIsoDateTime(value.expiresAt) || - !isExactUiCapturePolicy(value.capturePolicy) || - value.capturePolicy.expiresAt !== value.expiresAt - ) { - return false; - } - const state = value.state as EnrollmentSessionStateV2; - const code = value.code as SimulatorSessionStatusCodeV0; - const summaryValid = - value.artifactSummary === null || - isSimulatedWorkflowArtifactSummaryV0(value.artifactSummary); - return ( - STATE_CODES[state].includes(code) && - value.retryable === RETRYABLE_CODES.has(code) && - summaryValid && - (state === "simulated_credential_ready" - ? value.artifactSummary !== null - : value.artifactSummary === null) - ); - } catch { - return false; - } -} - -export function matchesExpectedSimulatorBrowserSessionViewV0( - value: unknown, - expected: ExpectedSimulatorBrowserSessionViewV0, -): value is SimulatorBrowserSessionViewV0 { - assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); - try { - return ( - isIsoDateTime(expected.now) && - isSimulatorBrowserSessionViewV0(value) && - value.sessionId === expected.sessionId && - value.browserHandle === expected.browserHandle && - Date.parse(value.expiresAt) > Date.parse(expected.now) - ); - } catch { - return false; - } -} - -export function assertSimulatorBrowserArtifactAllowed( - runtimeEnvironment: RuntimeEnvironment, - value: unknown, -): void { - assertSimulationArtifactAllowed(runtimeEnvironment, value); -} - -// The browser projection intentionally omits simulator scenarios, receipts, -// signatures, credential bodies, account identifiers, and return URLs. The -// opaque browser/completion handles remain transient effect-runner state only. diff --git a/packages/contracts/src/staging-issuance-port-v0.ts b/packages/contracts/src/staging-issuance-port-v0.ts deleted file mode 100644 index b4f1bea..0000000 --- a/packages/contracts/src/staging-issuance-port-v0.ts +++ /dev/null @@ -1,314 +0,0 @@ -import type { - HexSha256, - Identifier, - IsoDateTime, - RuntimeEnvironment, - StagingAuthenticationV0, - StagingEd25519TrustRootV0, -} from "./common"; -import { - assertSimulationArtifactAllowed, - hasExactKeys, - isHexSha256, - isIsoDateTime, - isRecord, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - verifyStagingEd25519V0, -} from "./common"; -import type { - ExpectedSimulationReceiptV0, - SimulationReceiptV0, -} from "./biometric-verification-port-v0"; -import { - isSimulationReceiptV0, - verifySimulationReceiptV0, -} from "./biometric-verification-port-v0"; - -export const STAGING_ISSUANCE_PORT_V0 = "staging_issuance_port_v0" as const; -export const STAGING_ISSUANCE_SIMULATION_REQUEST_V0 = - "staging_issuance_simulation_request_v0" as const; -export const STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0 = - "world_id_web_authenticator_issuance_simulator_staging" as const; -export const SIMULATED_STAGING_CREDENTIAL_V0 = "simulated_staging_credential_v0" as const; -export const SIMULATED_STAGING_ISSUER_V0 = "world_id_web_authenticator_simulator" as const; -export const SIMULATED_STAGING_AUDIENCE_V0 = - "world_id_web_authenticator_staging" as const; - -export const ISSUANCE_SIMULATION_SCENARIOS_V0 = [ - "issue_success", - "issue_reject", - "issue_unavailable", -] as const; - -export type IssuanceSimulationScenarioV0 = - (typeof ISSUANCE_SIMULATION_SCENARIOS_V0)[number]; - -export interface StagingIssuanceSimulationRequestV0 { - readonly kind: typeof STAGING_ISSUANCE_SIMULATION_REQUEST_V0; - readonly version: typeof STAGING_ISSUANCE_PORT_V0; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly audience: typeof STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0; - readonly requestId: Identifier; - readonly sessionId: Identifier; - readonly nonceDigestSha256: HexSha256; - readonly idempotencyKey: Identifier; - readonly accountId: Identifier; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly biometricReceipt: SimulationReceiptV0 & { readonly outcome: "simulated_pass" }; - readonly scenario: IssuanceSimulationScenarioV0; - readonly requestedAt: IsoDateTime; - readonly expiresAt: IsoDateTime; - readonly authentication: StagingAuthenticationV0; -} - -export interface SimulatedStagingCredentialV0 { - readonly kind: typeof SIMULATED_STAGING_CREDENTIAL_V0; - readonly version: typeof STAGING_ISSUANCE_PORT_V0; - readonly mode: typeof SIMULATION_MODE; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly credentialId: Identifier; - readonly issuer: typeof SIMULATED_STAGING_ISSUER_V0; - readonly audience: typeof SIMULATED_STAGING_AUDIENCE_V0; - readonly issuanceRequestId: Identifier; - readonly idempotencyKey: Identifier; - readonly nonceDigestSha256: HexSha256; - readonly subjectAccountId: Identifier; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly simulationReceiptId: Identifier; - readonly claims: { - readonly biometricVerification: "simulated_not_performed"; - readonly uniqueness: "not_performed"; - readonly credentialClass: "not_selfie_check"; - }; - readonly issuedAt: IsoDateTime; - readonly expiresAt: IsoDateTime; - readonly authentication: StagingAuthenticationV0; -} - -export type StagingIssuanceSimulationResultV0 = - | { - readonly kind: "simulated_credential_ready_v0"; - readonly credential: SimulatedStagingCredentialV0; - } - | { - readonly kind: "simulated_issuance_rejected_v0"; - readonly reasonCode: "scenario_issue_reject"; - } - | { - readonly kind: "simulated_issuance_unavailable_v0"; - readonly reasonCode: "scenario_issue_unavailable"; - }; - -function isNonEmptyString(value: unknown): value is string { - return typeof value === "string" && value.length > 0; -} - -function isStagingAuthenticationV0(value: unknown): value is StagingAuthenticationV0 { - return ( - isRecord(value) && - hasExactKeys(value, ["scheme", "keyId", "signatureBase64Url"]) && - value.scheme === "staging-ed25519" && - isNonEmptyString(value.keyId) && - isNonEmptyString(value.signatureBase64Url) - ); -} - -function hasValidTimeWindow(issuedAt: unknown, expiresAt: unknown): boolean { - return ( - isIsoDateTime(issuedAt) && - isIsoDateTime(expiresAt) && - Date.parse(expiresAt) > Date.parse(issuedAt) - ); -} - -export function isStagingIssuanceSimulationRequestV0( - value: unknown, -): value is StagingIssuanceSimulationRequestV0 { - if (!isRecord(value)) return false; - if ( - !hasExactKeys(value, [ - "kind", - "version", - "mode", - "environment", - "audience", - "requestId", - "sessionId", - "nonceDigestSha256", - "idempotencyKey", - "accountId", - "accountPublicMaterialDigestSha256", - "biometricReceipt", - "scenario", - "requestedAt", - "expiresAt", - "authentication", - ]) - ) { - return false; - } - return ( - value.kind === STAGING_ISSUANCE_SIMULATION_REQUEST_V0 && - value.version === STAGING_ISSUANCE_PORT_V0 && - value.mode === SIMULATION_MODE && - value.environment === SIMULATION_ENVIRONMENT && - value.audience === STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0 && - isNonEmptyString(value.requestId) && - isNonEmptyString(value.sessionId) && - isHexSha256(value.nonceDigestSha256) && - isNonEmptyString(value.idempotencyKey) && - isNonEmptyString(value.accountId) && - isHexSha256(value.accountPublicMaterialDigestSha256) && - isSimulationReceiptV0(value.biometricReceipt) && - value.biometricReceipt.outcome === "simulated_pass" && - typeof value.scenario === "string" && - ISSUANCE_SIMULATION_SCENARIOS_V0.includes( - value.scenario as IssuanceSimulationScenarioV0, - ) && - hasValidTimeWindow(value.requestedAt, value.expiresAt) && - isStagingAuthenticationV0(value.authentication) - ); -} - -export function isSimulatedStagingCredentialV0( - value: unknown, -): value is SimulatedStagingCredentialV0 { - if (!isRecord(value)) return false; - if ( - !hasExactKeys(value, [ - "kind", - "version", - "mode", - "environment", - "credentialId", - "issuer", - "audience", - "issuanceRequestId", - "idempotencyKey", - "nonceDigestSha256", - "subjectAccountId", - "accountPublicMaterialDigestSha256", - "simulationReceiptId", - "claims", - "issuedAt", - "expiresAt", - "authentication", - ]) - ) { - return false; - } - const claims = value.claims; - return ( - value.kind === SIMULATED_STAGING_CREDENTIAL_V0 && - value.version === STAGING_ISSUANCE_PORT_V0 && - value.mode === SIMULATION_MODE && - value.environment === SIMULATION_ENVIRONMENT && - value.issuer === SIMULATED_STAGING_ISSUER_V0 && - value.audience === SIMULATED_STAGING_AUDIENCE_V0 && - isNonEmptyString(value.credentialId) && - isNonEmptyString(value.issuanceRequestId) && - isNonEmptyString(value.idempotencyKey) && - isHexSha256(value.nonceDigestSha256) && - isNonEmptyString(value.subjectAccountId) && - isHexSha256(value.accountPublicMaterialDigestSha256) && - isNonEmptyString(value.simulationReceiptId) && - isRecord(claims) && - hasExactKeys(claims, ["biometricVerification", "uniqueness", "credentialClass"]) && - claims.biometricVerification === "simulated_not_performed" && - claims.uniqueness === "not_performed" && - claims.credentialClass === "not_selfie_check" && - hasValidTimeWindow(value.issuedAt, value.expiresAt) && - isStagingAuthenticationV0(value.authentication) - ); -} - -export interface ExpectedStagingIssuanceRequestV0 { - readonly runtimeEnvironment: RuntimeEnvironment; - readonly requestId: Identifier; - readonly sessionId: Identifier; - readonly nonceDigestSha256: HexSha256; - readonly idempotencyKey: Identifier; - readonly accountId: Identifier; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly biometricReceipt: ExpectedSimulationReceiptV0; - readonly scenario: IssuanceSimulationScenarioV0; - readonly now: IsoDateTime; -} - -export async function verifyStagingIssuanceSimulationRequestV0( - value: unknown, - expected: ExpectedStagingIssuanceRequestV0, - gatewayTrustRoot: StagingEd25519TrustRootV0, - biometricReceiptTrustRoot: StagingEd25519TrustRootV0, -): Promise { - assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); - if (!isStagingIssuanceSimulationRequestV0(value)) return false; - if ( - value.requestId !== expected.requestId || - value.sessionId !== expected.sessionId || - value.nonceDigestSha256 !== expected.nonceDigestSha256 || - value.idempotencyKey !== expected.idempotencyKey || - value.accountId !== expected.accountId || - value.accountPublicMaterialDigestSha256 !== expected.accountPublicMaterialDigestSha256 || - value.biometricReceipt.receiptId !== expected.biometricReceipt.receiptId || - value.biometricReceipt.sessionId !== expected.sessionId || - value.biometricReceipt.nonceDigestSha256 !== expected.nonceDigestSha256 || - value.biometricReceipt.accountPublicMaterialDigestSha256 !== - expected.accountPublicMaterialDigestSha256 || - value.scenario !== expected.scenario || - Date.parse(value.requestedAt) > Date.parse(expected.now) || - Date.parse(value.expiresAt) <= Date.parse(expected.now) - ) { - return false; - } - if ( - !(await verifySimulationReceiptV0( - value.biometricReceipt, - expected.biometricReceipt, - biometricReceiptTrustRoot, - )) - ) { - return false; - } - return verifyStagingEd25519V0( - value as unknown as Record, - gatewayTrustRoot, - ); -} - -export interface ExpectedSimulatedStagingCredentialV0 { - readonly runtimeEnvironment: RuntimeEnvironment; - readonly issuanceRequestId: Identifier; - readonly idempotencyKey: Identifier; - readonly nonceDigestSha256: HexSha256; - readonly subjectAccountId: Identifier; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly simulationReceiptId: Identifier; - readonly now: IsoDateTime; -} - -export async function verifySimulatedStagingCredentialV0( - value: unknown, - expected: ExpectedSimulatedStagingCredentialV0, - trustRoot: StagingEd25519TrustRootV0, -): Promise { - assertSimulationArtifactAllowed(expected.runtimeEnvironment, value); - if (!isSimulatedStagingCredentialV0(value)) return false; - if ( - value.issuanceRequestId !== expected.issuanceRequestId || - value.idempotencyKey !== expected.idempotencyKey || - value.nonceDigestSha256 !== expected.nonceDigestSha256 || - value.subjectAccountId !== expected.subjectAccountId || - value.accountPublicMaterialDigestSha256 !== expected.accountPublicMaterialDigestSha256 || - value.simulationReceiptId !== expected.simulationReceiptId || - Date.parse(value.issuedAt) > Date.parse(expected.now) || - Date.parse(value.expiresAt) <= Date.parse(expected.now) - ) { - return false; - } - return verifyStagingEd25519V0(value as unknown as Record, trustRoot); -} - -// This type is intentionally incompatible with a real Selfie Check credential. diff --git a/packages/contracts/src/world-id-registration-adapter-v1.ts b/packages/contracts/src/world-id-registration-adapter-v1.ts deleted file mode 100644 index ee9c2e2..0000000 --- a/packages/contracts/src/world-id-registration-adapter-v1.ts +++ /dev/null @@ -1,63 +0,0 @@ -import type { HexSha256, Identifier, IsoDateTime } from "./common"; -import { SIMULATION_ENVIRONMENT } from "./common"; -import type { WorldIdPublicAuthenticatorMaterialV1 } from "./webauthn-prf-authenticator-v1"; - -export const WORLD_ID_REGISTRATION_ADAPTER_V1 = "world_id_registration_adapter_v1" as const; - -export interface WorldIdRegistrationAdapterPolicyV1 { - readonly version: typeof WORLD_ID_REGISTRATION_ADAPTER_V1; - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly sdkRevision: string; - readonly gatewayBaseUrl: string; - readonly chainId: number; - readonly gatewayRecomputesOrRejectsCommitmentMismatch: true; - readonly endpointConfigurationHasNoDefault: true; -} - -export interface WorldIdRegistrationRequestV1 { - readonly version: typeof WORLD_ID_REGISTRATION_ADAPTER_V1; - readonly registrationId: Identifier; - readonly idempotencyKey: Identifier; - readonly recoveryAddress: `0x${string}`; - readonly publicAuthenticator: WorldIdPublicAuthenticatorMaterialV1; - readonly publicMaterialDigestSha256: HexSha256; - readonly requestedAt: IsoDateTime; -} - -export type WorldIdRegistrationResultV1 = - | { - readonly status: "registered"; - readonly accountId: Identifier; - readonly leafIndex: string; - readonly publicMaterialDigestSha256: HexSha256; - } - | { readonly status: "pending"; readonly registrationId: Identifier } - | { - readonly status: "rejected" | "unavailable"; - readonly reasonCode: string; - }; - -export function validateWorldIdRegistrationAdapterPolicyV1( - policy: WorldIdRegistrationAdapterPolicyV1, -): readonly string[] { - const errors: string[] = []; - if (policy.version !== WORLD_ID_REGISTRATION_ADAPTER_V1) errors.push("version"); - if (policy.environment !== SIMULATION_ENVIRONMENT) errors.push("environment"); - if (!policy.sdkRevision || policy.sdkRevision === "required-at-runtime") { - errors.push("sdkRevision"); - } - try { - const gatewayUrl = new URL(policy.gatewayBaseUrl); - if (gatewayUrl.protocol !== "https:") errors.push("gatewayBaseUrl"); - } catch { - errors.push("gatewayBaseUrl"); - } - if (!Number.isSafeInteger(policy.chainId) || policy.chainId <= 0) errors.push("chainId"); - if (!policy.gatewayRecomputesOrRejectsCommitmentMismatch) { - errors.push("commitmentMismatchEnforcement"); - } - if (!policy.endpointConfigurationHasNoDefault) errors.push("endpointDefault"); - return errors; -} - -// The staging endpoint, chain, and SDK revision are required configuration; this contract invents none. diff --git a/packages/contracts/test/contracts.test.ts b/packages/contracts/test/contracts.test.ts deleted file mode 100644 index ffe0fdb..0000000 --- a/packages/contracts/test/contracts.test.ts +++ /dev/null @@ -1,768 +0,0 @@ -import { beforeAll, describe, expect, test } from "bun:test"; -import { - assertSimulationArtifactAllowed, - BIOMETRIC_SCENARIO_OUTCOME_V0, - BIOMETRIC_SIMULATION_REQUEST_V0, - BIOMETRIC_SIMULATOR_AUDIENCE_V0, - BIOMETRIC_VERIFICATION_PORT_V0, - bytesToBase64Url, - bytesToArrayBuffer, - CLIENT_QUALITY_POLICY_V0, - computeFrameBundleDigestV0, - ENROLLMENT_SESSION_V2, - FRAME_BUNDLE_V0, - FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - isEnrollmentTransitionAllowedV2, - isSimulatedStagingCredentialV0, - isSimulationReceiptV0, - PRF_INPUT_V1_SHA256, - SIMULATED_STAGING_AUDIENCE_V0, - SIMULATED_STAGING_CREDENTIAL_V0, - SIMULATED_STAGING_ISSUER_V0, - SIMULATION_CAPTURE_POLICY_V0, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - SimulationArtifactInProductionError, - stagingSignaturePreimageV0, - STAGING_ISSUANCE_PORT_V0, - STAGING_ISSUANCE_SIMULATION_REQUEST_V0, - STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, - validateClientQualityPolicyV0, - validateFrameBundleV0, - validateSimulationCapturePolicyV0, - validateWorldIdRegistrationAdapterPolicyV1, - verifyBiometricSimulationRequestV0, - verifySimulatedStagingCredentialV0, - verifySimulationReceiptV0, - verifyStagingIssuanceSimulationRequestV0, - WEB_AUTHN_PRF_AUTHENTICATOR_V1, - WORLD_ID_REGISTRATION_ADAPTER_V1, - type BiometricSimulationRequestV0, - type ClientQualityPolicyV0, - type EnrollmentSessionV2, - type FrameBundleV0, - type HexSha256, - type SimulatedStagingCredentialV0, - type SimulationCapturePolicyV0, - type SimulationReceiptV0, - type StagingAuthenticationV0, - type StagingEd25519TrustRootV0, - type StagingIssuanceSimulationRequestV0, - type WebAuthnPrfAuthenticatorPolicyV1, - type WorldIdRegistrationAdapterPolicyV1, -} from "../src"; - -const ZERO_HASH = "0".repeat(64) as HexSha256; -const ONE_HASH = "1".repeat(64) as HexSha256; -const NOW = "2026-09-02T18:30:00Z"; - -interface TestSigner { - readonly privateKey: CryptoKey; - readonly trustRoot: StagingEd25519TrustRootV0; -} - -let gatewayBiometricSigner: TestSigner; -let biometricReceiptSigner: TestSigner; -let gatewayIssuanceSigner: TestSigner; -let issuanceCredentialSigner: TestSigner; - -async function createSigner(audience: string, keyId: string): Promise { - const pair = (await crypto.subtle.generateKey( - { name: "Ed25519" }, - true, - ["sign", "verify"], - )) as CryptoKeyPair; - const publicKey = new Uint8Array(await crypto.subtle.exportKey("raw", pair.publicKey)); - return { - privateKey: pair.privateKey, - trustRoot: { - environment: SIMULATION_ENVIRONMENT, - audience, - keyId, - publicKeyRawBase64Url: bytesToBase64Url(publicKey), - }, - }; -} - -async function signArtifact( - value: T, - signer: TestSigner, -): Promise { - const unsigned = { - ...value, - authentication: { - scheme: "staging-ed25519" as const, - keyId: signer.trustRoot.keyId, - signatureBase64Url: "pending", - }, - }; - const signature = await crypto.subtle.sign( - { name: "Ed25519" }, - signer.privateKey, - bytesToArrayBuffer( - stagingSignaturePreimageV0(unsigned as unknown as Record), - ), - ); - return { - ...unsigned, - authentication: { - ...unsigned.authentication, - signatureBase64Url: bytesToBase64Url(new Uint8Array(signature)), - }, - } as T; -} - -beforeAll(async () => { - [gatewayBiometricSigner, biometricReceiptSigner, gatewayIssuanceSigner, issuanceCredentialSigner] = - await Promise.all([ - createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "gateway-biometric-key"), - createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "biometric-receipt-key"), - createSigner(STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, "gateway-issuance-key"), - createSigner(SIMULATED_STAGING_AUDIENCE_V0, "issuance-credential-key"), - ]); -}); - -const capturePolicy: SimulationCapturePolicyV0 = { - version: SIMULATION_CAPTURE_POLICY_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - policyId: "capture-policy-fixture", - dataMode: "metadata_only", - encoding: "rgba8", - minFrames: 1, - maxFrames: 4, - maxWidth: 4096, - maxHeight: 4096, - maxFrameBytes: 67_108_864, - maxTotalBytes: 268_435_456, - captureOffsetsAreDiagnosticOnly: true, - arrayOrderHasBiometricMeaning: false, - qualityPolicyId: "quality-policy-fixture", - expiresAt: "2026-09-02T19:00:00Z", -}; - -async function makeFrameBundle(): Promise { - const pending: FrameBundleV0 = { - kind: FRAME_BUNDLE_V0, - mode: SIMULATION_MODE, - sessionId: "session-fixture", - policyId: capturePolicy.policyId, - accountPublicMaterialDigestSha256: ZERO_HASH, - nonceDigestSha256: ONE_HASH, - dataMode: "metadata_only", - frames: [ - { - transportIndex: 0, - width: 640, - height: 480, - encoding: "rgba8", - byteLength: 1_228_800, - frameDigestSha256: ZERO_HASH, - captureOffsetMs: 0, - }, - ], - totalByteLength: 1_228_800, - digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - artifactDigestSha256: ZERO_HASH, - }; - return { ...pending, artifactDigestSha256: await computeFrameBundleDigestV0(pending) }; -} - -async function makeBiometricRequest( - frameBundle: FrameBundleV0, -): Promise { - return signArtifact( - { - kind: BIOMETRIC_SIMULATION_REQUEST_V0, - version: BIOMETRIC_VERIFICATION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, - requestId: "biometric-request-fixture", - sessionId: frameBundle.sessionId, - nonceDigestSha256: frameBundle.nonceDigestSha256, - idempotencyKey: "biometric-idempotency-fixture", - accountPublicMaterialDigestSha256: frameBundle.accountPublicMaterialDigestSha256, - capturePolicyId: frameBundle.policyId, - scenario: "happy_path", - frameBundle, - requestedAt: "2026-09-02T18:00:00Z", - expiresAt: "2026-09-02T19:00:00Z", - authentication: { - scheme: "staging-ed25519", - keyId: "pending", - signatureBase64Url: "pending", - }, - }, - gatewayBiometricSigner, - ); -} - -async function makeReceipt(frameBundle: FrameBundleV0): Promise { - return signArtifact( - { - kind: "simulation_receipt_v0", - version: BIOMETRIC_VERIFICATION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, - receiptId: "receipt-fixture", - requestId: "biometric-request-fixture", - simulatorVersion: "simulator-fixture-v0", - scenario: "happy_path", - sessionId: frameBundle.sessionId, - nonceDigestSha256: frameBundle.nonceDigestSha256, - idempotencyKey: "biometric-idempotency-fixture", - accountPublicMaterialDigestSha256: frameBundle.accountPublicMaterialDigestSha256, - capturePolicyId: frameBundle.policyId, - artifactDigestSha256: frameBundle.artifactDigestSha256, - outcome: "simulated_pass", - reasonCode: "scenario_happy_path", - issuedAt: "2026-09-02T18:00:00Z", - expiresAt: "2026-09-02T19:00:00Z", - authentication: { - scheme: "staging-ed25519", - keyId: "pending", - signatureBase64Url: "pending", - }, - }, - biometricReceiptSigner, - ); -} - -async function makeIssuanceRequest( - receipt: SimulationReceiptV0, -): Promise { - return signArtifact( - { - kind: STAGING_ISSUANCE_SIMULATION_REQUEST_V0, - version: STAGING_ISSUANCE_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - audience: STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, - requestId: "issuance-request-fixture", - sessionId: receipt.sessionId, - nonceDigestSha256: receipt.nonceDigestSha256, - idempotencyKey: "issuance-idempotency-fixture", - accountId: "account-fixture", - accountPublicMaterialDigestSha256: receipt.accountPublicMaterialDigestSha256, - biometricReceipt: receipt as SimulationReceiptV0 & { readonly outcome: "simulated_pass" }, - scenario: "issue_success", - requestedAt: "2026-09-02T18:00:00Z", - expiresAt: "2026-09-02T19:00:00Z", - authentication: { - scheme: "staging-ed25519", - keyId: "pending", - signatureBase64Url: "pending", - }, - }, - gatewayIssuanceSigner, - ); -} - -async function makeCredential( - receipt: SimulationReceiptV0, -): Promise { - return signArtifact( - { - kind: SIMULATED_STAGING_CREDENTIAL_V0, - version: STAGING_ISSUANCE_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - credentialId: "credential-fixture", - issuer: SIMULATED_STAGING_ISSUER_V0, - audience: SIMULATED_STAGING_AUDIENCE_V0, - issuanceRequestId: "issuance-request-fixture", - idempotencyKey: "issuance-idempotency-fixture", - nonceDigestSha256: receipt.nonceDigestSha256, - subjectAccountId: "account-fixture", - accountPublicMaterialDigestSha256: receipt.accountPublicMaterialDigestSha256, - simulationReceiptId: receipt.receiptId, - claims: { - biometricVerification: "simulated_not_performed", - uniqueness: "not_performed", - credentialClass: "not_selfie_check", - }, - issuedAt: "2026-09-02T18:00:00Z", - expiresAt: "2026-09-02T19:00:00Z", - authentication: { - scheme: "staging-ed25519", - keyId: "pending", - signatureBase64Url: "pending", - }, - }, - issuanceCredentialSigner, - ); -} - -describe("the eight frozen interfaces", () => { - test("pins the approved PRF mapping without a secret wire field", () => { - const policy: WebAuthnPrfAuthenticatorPolicyV1 = { - version: WEB_AUTHN_PRF_AUTHENTICATOR_V1, - rpId: "auth.example.test", - allowedOrigins: ["https://auth.example.test"], - userVerification: "required", - prfInputSha256: PRF_INPUT_V1_SHA256, - prfOutputMapping: "verbatim_32_byte_first_result_to_world_id_4_signer_seed", - secretLifecycle: "browser_memory_only", - }; - expect(policy.prfInputSha256).toBe( - "0b2ba181b397d6ac08ef7139cd2410c31fd416120d35f075420a4af38f3609e6", - ); - expect(Object.keys(policy)).not.toContain("prfOutput"); - expect(Object.keys(policy)).not.toContain("privateKey"); - expect(Object.keys(policy)).not.toContain("seed32"); - }); - - test("separates biometric and issuance simulation transitions in V2", () => { - const session: EnrollmentSessionV2 = { - version: ENROLLMENT_SESSION_V2, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - sessionId: "session-fixture", - rpRequestDigestSha256: ZERO_HASH, - accountPublicMaterialDigestSha256: ONE_HASH, - nonceBase64Url: "nonce-fixture", - idempotencyKey: "idempotency-fixture", - biometricScenario: "happy_path", - issuanceScenario: "issue_success", - state: "created", - createdAt: "2026-09-02T18:00:00Z", - expiresAt: "2026-09-02T19:00:00Z", - }; - expect(session.mode).toBe("simulation"); - expect( - isEnrollmentTransitionAllowedV2("biometric_simulation_pending", "simulated_pass"), - ).toBe(true); - expect( - isEnrollmentTransitionAllowedV2( - "issuance_simulation_pending", - "simulated_issuance_reject", - ), - ).toBe(true); - expect( - isEnrollmentTransitionAllowedV2( - "issuance_simulation_pending", - "simulated_issuance_unavailable", - ), - ).toBe(true); - expect(isEnrollmentTransitionAllowedV2("simulated_pass", "simulated_credential_ready")).toBe( - false, - ); - expect( - isEnrollmentTransitionAllowedV2("simulated_issuance_reject", "simulated_reject"), - ).toBe(false); - }); - - test("recomputes the artifact digest and rejects unknown media fields", async () => { - const bundle = await makeFrameBundle(); - expect(validateSimulationCapturePolicyV0(capturePolicy)).toEqual([]); - expect(await validateFrameBundleV0(bundle, capturePolicy)).toEqual([]); - expect(bundle.artifactDigestSha256).toBe( - "4f3b997f844b8551e27bc311e987d45d7bf5315a3d29fc6576af3079caf4e153", - ); - const wrongDigest = { ...bundle, artifactDigestSha256: ZERO_HASH }; - expect(await validateFrameBundleV0(wrongDigest, capturePolicy)).toContain( - "artifactDigestMismatch", - ); - const withPixels = { ...bundle, pixels: "forbidden" }; - expect(await validateFrameBundleV0(withPixels, capturePolicy)).toContain("unknown.pixels"); - const nonCanonicalUnknown = { ...bundle, pixels: 1n }; - expect(await validateFrameBundleV0(nonCanonicalUnknown, capturePolicy)).toEqual( - expect.arrayContaining(["unknown.pixels", "artifactCanonicalization"]), - ); - }); - - test("detects one-field mutations across the artifact binding", async () => { - const bundle = await makeFrameBundle(); - const mutations: unknown[] = [ - { ...bundle, sessionId: "session-other" }, - { ...bundle, policyId: "policy-other" }, - { ...bundle, accountPublicMaterialDigestSha256: ONE_HASH }, - { ...bundle, nonceDigestSha256: ZERO_HASH }, - { ...bundle, dataMode: "synthetic_fixture", syntheticFixtureId: "fixture" }, - { ...bundle, frames: [{ ...bundle.frames[0], width: 641 }] }, - { ...bundle, frames: [{ ...bundle.frames[0], frameDigestSha256: ONE_HASH }] }, - ]; - for (const mutation of mutations) { - expect(await validateFrameBundleV0(mutation, capturePolicy)).toContain( - "artifactDigestMismatch", - ); - } - }); - - test("keeps client quality explicitly UX-only", () => { - const policy: ClientQualityPolicyV0 = { - version: CLIENT_QUALITY_POLICY_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - policyId: "quality-policy-fixture", - purpose: "capture_ux_only", - checks: [ - { kind: "camera_active" }, - { kind: "single_face" }, - { - kind: "framing", - minFaceAreaRatio: 0.15, - maxFaceAreaRatio: 0.7, - maxCenterOffsetRatio: 0.2, - }, - ], - maxRetakes: 2, - }; - expect(validateClientQualityPolicyV0(policy)).toEqual([]); - expect(JSON.stringify(policy)).not.toMatch(/spoof|verified|liveness/i); - }); - - test("authenticates the server-selected biometric scenario and all bindings", async () => { - const bundle = await makeFrameBundle(); - const request = await makeBiometricRequest(bundle); - const expected = { - runtimeEnvironment: "staging" as const, - requestId: request.requestId, - sessionId: request.sessionId, - nonceDigestSha256: request.nonceDigestSha256, - idempotencyKey: request.idempotencyKey, - accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, - capturePolicyId: request.capturePolicyId, - scenario: request.scenario, - now: NOW, - }; - expect( - await verifyBiometricSimulationRequestV0( - request, - expected, - capturePolicy, - gatewayBiometricSigner.trustRoot, - ), - ).toBe(true); - expect( - await verifyBiometricSimulationRequestV0( - { ...request, scenario: "spoof_reject" }, - expected, - capturePolicy, - gatewayBiometricSigner.trustRoot, - ), - ).toBe(false); - expect( - await verifyBiometricSimulationRequestV0( - request, - { ...expected, capturePolicyId: "policy-other" }, - capturePolicy, - gatewayBiometricSigner.trustRoot, - ), - ).toBe(false); - expect( - await verifyBiometricSimulationRequestV0( - { ...request, audience: "wrong-audience" }, - expected, - capturePolicy, - gatewayBiometricSigner.trustRoot, - ), - ).toBe(false); - expect( - await verifyBiometricSimulationRequestV0( - request, - { ...expected, now: "2026-09-02T19:00:00Z" }, - capturePolicy, - gatewayBiometricSigner.trustRoot, - ), - ).toBe(false); - expect( - await verifyBiometricSimulationRequestV0( - request, - { ...expected, nonceDigestSha256: ZERO_HASH }, - capturePolicy, - gatewayBiometricSigner.trustRoot, - ), - ).toBe(false); - expect( - await verifyBiometricSimulationRequestV0( - request, - expected, - capturePolicy, - biometricReceiptSigner.trustRoot, - ), - ).toBe(false); - }); - - test("strictly parses and verifies simulation receipts", async () => { - const bundle = await makeFrameBundle(); - const receipt = await makeReceipt(bundle); - const expected = { - runtimeEnvironment: "staging" as const, - receiptId: receipt.receiptId, - requestId: receipt.requestId, - sessionId: receipt.sessionId, - nonceDigestSha256: receipt.nonceDigestSha256, - idempotencyKey: receipt.idempotencyKey, - accountPublicMaterialDigestSha256: receipt.accountPublicMaterialDigestSha256, - capturePolicyId: receipt.capturePolicyId, - scenario: receipt.scenario, - artifactDigestSha256: receipt.artifactDigestSha256, - now: NOW, - }; - expect(isSimulationReceiptV0(receipt)).toBe(true); - expect( - await verifySimulationReceiptV0(receipt, expected, biometricReceiptSigner.trustRoot), - ).toBe(true); - const { authentication: _authentication, ...withoutAuthentication } = receipt; - expect(isSimulationReceiptV0(withoutAuthentication)).toBe(false); - expect( - isSimulationReceiptV0({ - ...receipt, - scenario: "spoof_reject", - outcome: "simulated_pass", - }), - ).toBe(false); - expect( - await verifySimulationReceiptV0( - { ...receipt, idempotencyKey: "tampered" }, - expected, - biometricReceiptSigner.trustRoot, - ), - ).toBe(false); - expect( - await verifySimulationReceiptV0( - receipt, - { ...expected, capturePolicyId: "policy-other" }, - biometricReceiptSigner.trustRoot, - ), - ).toBe(false); - expect(isSimulationReceiptV0({ ...receipt, audience: "wrong-audience" })).toBe(false); - expect(isSimulationReceiptV0({ ...receipt, unexpected: true })).toBe(false); - }); - - test("authenticates issuance scenarios and requires a simulated pass", async () => { - const bundle = await makeFrameBundle(); - const receipt = await makeReceipt(bundle); - const request = await makeIssuanceRequest(receipt); - const expected = { - runtimeEnvironment: "staging" as const, - requestId: request.requestId, - sessionId: request.sessionId, - nonceDigestSha256: request.nonceDigestSha256, - idempotencyKey: request.idempotencyKey, - accountId: request.accountId, - accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, - biometricReceipt: { - runtimeEnvironment: "staging" as const, - receiptId: receipt.receiptId, - requestId: receipt.requestId, - sessionId: receipt.sessionId, - nonceDigestSha256: receipt.nonceDigestSha256, - idempotencyKey: receipt.idempotencyKey, - accountPublicMaterialDigestSha256: receipt.accountPublicMaterialDigestSha256, - capturePolicyId: receipt.capturePolicyId, - scenario: receipt.scenario, - artifactDigestSha256: receipt.artifactDigestSha256, - now: NOW, - }, - scenario: request.scenario, - now: NOW, - }; - expect( - await verifyStagingIssuanceSimulationRequestV0( - request, - expected, - gatewayIssuanceSigner.trustRoot, - biometricReceiptSigner.trustRoot, - ), - ).toBe(true); - expect( - await verifyStagingIssuanceSimulationRequestV0( - { ...request, scenario: "issue_reject" }, - expected, - gatewayIssuanceSigner.trustRoot, - biometricReceiptSigner.trustRoot, - ), - ).toBe(false); - expect( - await verifyStagingIssuanceSimulationRequestV0( - request, - { ...expected, idempotencyKey: "idempotency-other" }, - gatewayIssuanceSigner.trustRoot, - biometricReceiptSigner.trustRoot, - ), - ).toBe(false); - expect( - await verifyStagingIssuanceSimulationRequestV0( - { ...request, audience: "wrong-audience" }, - expected, - gatewayIssuanceSigner.trustRoot, - biometricReceiptSigner.trustRoot, - ), - ).toBe(false); - expect( - await verifyStagingIssuanceSimulationRequestV0( - { - ...request, - biometricReceipt: { - ...receipt, - scenario: "spoof_reject", - outcome: "simulated_reject", - reasonCode: "scenario_spoof_reject", - }, - }, - expected, - gatewayIssuanceSigner.trustRoot, - biometricReceiptSigner.trustRoot, - ), - ).toBe(false); - - const invalidlySignedReceipt = { - ...receipt, - authentication: { ...receipt.authentication, signatureBase64Url: "not-a-signature" }, - } as SimulationReceiptV0 & { readonly outcome: "simulated_pass" }; - const requestWithInvalidReceipt = await signArtifact( - { ...request, biometricReceipt: invalidlySignedReceipt }, - gatewayIssuanceSigner, - ); - expect( - await verifyStagingIssuanceSimulationRequestV0( - requestWithInvalidReceipt, - expected, - gatewayIssuanceSigner.trustRoot, - biometricReceiptSigner.trustRoot, - ), - ).toBe(false); - - const expiredReceipt = await signArtifact( - { - ...receipt, - issuedAt: "2026-09-02T16:00:00Z", - expiresAt: "2026-09-02T17:00:00Z", - }, - biometricReceiptSigner, - ); - const requestWithExpiredReceipt = await signArtifact( - { - ...request, - biometricReceipt: expiredReceipt as SimulationReceiptV0 & { - readonly outcome: "simulated_pass"; - }, - }, - gatewayIssuanceSigner, - ); - expect( - await verifyStagingIssuanceSimulationRequestV0( - requestWithExpiredReceipt, - expected, - gatewayIssuanceSigner.trustRoot, - biometricReceiptSigner.trustRoot, - ), - ).toBe(false); - expect( - await verifyStagingIssuanceSimulationRequestV0( - request, - expected, - gatewayIssuanceSigner.trustRoot, - gatewayBiometricSigner.trustRoot, - ), - ).toBe(false); - }); - - test("strictly verifies the simulated credential and exact non-claims", async () => { - const bundle = await makeFrameBundle(); - const receipt = await makeReceipt(bundle); - const credential = await makeCredential(receipt); - const expected = { - runtimeEnvironment: "staging" as const, - issuanceRequestId: credential.issuanceRequestId, - idempotencyKey: credential.idempotencyKey, - nonceDigestSha256: credential.nonceDigestSha256, - subjectAccountId: credential.subjectAccountId, - accountPublicMaterialDigestSha256: credential.accountPublicMaterialDigestSha256, - simulationReceiptId: credential.simulationReceiptId, - now: NOW, - }; - expect(isSimulatedStagingCredentialV0(credential)).toBe(true); - expect( - await verifySimulatedStagingCredentialV0( - credential, - expected, - issuanceCredentialSigner.trustRoot, - ), - ).toBe(true); - expect( - isSimulatedStagingCredentialV0({ - ...credential, - claims: { - biometricVerification: "verified", - uniqueness: "not_performed", - credentialClass: "selfie_check", - }, - }), - ).toBe(false); - const { authentication: _authentication, ...withoutAuthentication } = credential; - expect(isSimulatedStagingCredentialV0(withoutAuthentication)).toBe(false); - expect(isSimulatedStagingCredentialV0({ ...credential, audience: "wrong-audience" })).toBe( - false, - ); - expect(isSimulatedStagingCredentialV0({ ...credential, unexpected: true })).toBe(false); - expect( - await verifySimulatedStagingCredentialV0( - credential, - { ...expected, now: "2026-09-02T19:00:00Z" }, - issuanceCredentialSigner.trustRoot, - ), - ).toBe(false); - }); - - test("requires World ID staging configuration without inventing an endpoint", () => { - const unresolvedPolicy: WorldIdRegistrationAdapterPolicyV1 = { - version: WORLD_ID_REGISTRATION_ADAPTER_V1, - environment: SIMULATION_ENVIRONMENT, - sdkRevision: "required-at-runtime", - gatewayBaseUrl: "required-at-runtime", - chainId: 0, - gatewayRecomputesOrRejectsCommitmentMismatch: true, - endpointConfigurationHasNoDefault: true, - }; - expect(validateWorldIdRegistrationAdapterPolicyV1(unresolvedPolicy)).toEqual([ - "sdkRevision", - "gatewayBaseUrl", - "chainId", - ]); - }); -}); - -describe("production isolation", () => { - test("rejects a simulation receipt before reading outcome or authentication", () => { - let outcomeWasRead = false; - let authenticationWasRead = false; - const value: Record = { - kind: "simulation_receipt_v0", - mode: "simulation", - environment: "staging", - }; - Object.defineProperty(value, "outcome", { - enumerable: true, - get() { - outcomeWasRead = true; - return "simulated_pass"; - }, - }); - Object.defineProperty(value, "authentication", { - enumerable: true, - get() { - authenticationWasRead = true; - return {}; - }, - }); - - expect(() => assertSimulationArtifactAllowed("production", value)).toThrow( - SimulationArtifactInProductionError, - ); - expect(outcomeWasRead).toBe(false); - expect(authenticationWasRead).toBe(false); - }); - - test("rejects a simulated credential and permits it only outside production", async () => { - const credential = await makeCredential(await makeReceipt(await makeFrameBundle())); - expect(() => assertSimulationArtifactAllowed("production", credential)).toThrow( - SimulationArtifactInProductionError, - ); - expect(() => assertSimulationArtifactAllowed("staging", credential)).not.toThrow(); - }); -}); diff --git a/packages/contracts/test/ui-contracts.test.ts b/packages/contracts/test/ui-contracts.test.ts deleted file mode 100644 index 84939cc..0000000 --- a/packages/contracts/test/ui-contracts.test.ts +++ /dev/null @@ -1,996 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, - AUTHENTICATOR_UI_ACTIONS_V1, - AUTHENTICATOR_UI_COPY_V1, - AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, - AUTHENTICATOR_UI_DETAIL_CODES_V1, - AUTHENTICATOR_UI_DETAIL_COPY_V1, - AUTHENTICATOR_UI_EFFECTS_V1, - AUTHENTICATOR_UI_EVENTS_V1, - AUTHENTICATOR_UI_EVENT_V1, - AUTHENTICATOR_UI_FLOW_V1, - AUTHENTICATOR_UI_INITIAL_EFFECTS_V1, - AUTHENTICATOR_UI_SNAPSHOT_V1, - AUTHENTICATOR_UI_STAGING_BANNER_V1, - AUTHENTICATOR_UI_STATES_V1, - AUTHENTICATOR_UI_STATE_PROGRESS_V1, - AUTHENTICATOR_UI_TERMINAL_STATES_V1, - AUTHENTICATOR_UI_VISUAL_SOURCES_V1, - ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1, - ENROLLMENT_SESSION_STATES_V2, - ENROLLMENT_SESSION_TO_UI_STATE_V1, - FRAME_BUNDLE_V0, - FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - INJECTED_AUTHENTICATOR_PORT_V0, - INJECTED_AUTHENTICATOR_REQUEST_V0, - RP_PRESENTATION_IDS_V0, - SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, - SIMULATOR_BROWSER_SESSION_ERROR_CODES_V0, - SIMULATOR_BROWSER_SESSION_ERROR_V0, - SIMULATOR_BROWSER_SESSION_OPERATIONS_V0, - SIMULATOR_BROWSER_SESSION_PORT_V0, - SIMULATOR_BROWSER_SESSION_VIEW_V0, - SIMULATOR_SESSION_STATUS_CODES_V0, - SIMULATOR_UI_BOOTSTRAP_V0, - SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, - SIMULATOR_UI_QUALITY_POLICY_V0, - STAGING_DEMO_AUTHENTICATOR_ERROR_REASONS_V0, - STAGING_DEMO_AUTHENTICATOR_ERROR_V0, - STAGING_DEMO_AUTHENTICATOR_READY_V0, - SimulationArtifactInProductionError, - assertAuthenticatorUiEventAllowed, - assertAuthenticatorUiSnapshotAllowed, - assertSimulationArtifactAllowed, - assertSimulatorBrowserArtifactAllowed, - computeFrameBundleDigestV0, - dispatchAuthenticatorUiActionV1, - isAuthenticatorUiEventV1, - isAuthenticatorUiSnapshotV1, - isBrowserIdempotentSessionFieldsV0, - isBrowserSessionFieldsV0, - isCompleteDemoAuthenticatorV0, - isCreateSimulatorBrowserSessionV0, - isInjectedAuthenticatorRequestV0, - isSimulatorBrowserDemoAuthenticatorReadyV0, - isSimulatorBrowserReturnAcceptedV0, - isSimulatorBrowserSessionErrorV0, - isSimulatorBrowserSessionViewV0, - isSimulatorUiBootstrapV0, - isStagingDemoAuthenticatorErrorV0, - isStagingDemoAuthenticatorReadyV0, - isSubmitSimulatorCaptureShapeV0, - makeAuthenticatorUiEventV1, - makeAuthenticatorUiSnapshotV1, - matchesExpectedSimulatorBrowserDemoAuthenticatorReadyV0, - matchesExpectedSimulatorBrowserSessionViewV0, - matchesExpectedStagingDemoAuthenticatorErrorV0, - matchesExpectedStagingDemoAuthenticatorReadyV0, - matchesExpectedSubmitSimulatorCaptureV0, - projectEnrollmentSessionStateToUiV1, - projectSimulatorBrowserErrorToUiEventV1, - transitionAuthenticatorUiV1, - type AuthenticatorUiDetailCodeV1, - type AuthenticatorUiEventTypeV1, - type AuthenticatorUiSnapshotV1, - type AuthenticatorUiStateIdV1, - type EnrollmentSessionStateV2, - type FrameBundleV0, - type SimulatorBrowserSessionViewV0, -} from "../src"; - -const REQUEST_STARTED = "2026-09-02T21:59:59.000Z"; -const NOW = "2026-09-02T22:00:00.000Z"; -const LATER = "2026-09-02T22:05:00.000Z"; -const ACCOUNT_DIGEST = "a".repeat(64); -const NONCE_DIGEST = "b".repeat(64); -const FRAME_DIGEST = "c".repeat(64); - -const injectedRequest = { - kind: INJECTED_AUTHENTICATOR_REQUEST_V0, - version: INJECTED_AUTHENTICATOR_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - requestId: "demo-auth-request", - sessionId: "session-v0", - idempotencyKey: "demo-auth-idempotency", - accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, - requestedAt: REQUEST_STARTED, - expiresAt: LATER, -} as const; - -const injectedReady = { - kind: STAGING_DEMO_AUTHENTICATOR_READY_V0, - version: INJECTED_AUTHENTICATOR_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - requestId: injectedRequest.requestId, - sessionId: injectedRequest.sessionId, - idempotencyKey: injectedRequest.idempotencyKey, - completionHandle: "opaque-completion-handle", - accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, - claims: { - webauthnPerformed: false, - prfEvaluated: false, - worldIdCreated: false, - }, - issuedAt: NOW, - expiresAt: LATER, -} as const; - -const expectedInjectedReady = { - runtimeEnvironment: "staging" as const, - requestId: injectedRequest.requestId, - sessionId: injectedRequest.sessionId, - idempotencyKey: injectedRequest.idempotencyKey, - accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, - requestRequestedAt: injectedRequest.requestedAt, - requestExpiresAt: injectedRequest.expiresAt, - now: NOW, -}; - -function capturePolicy(expiresAt = LATER) { - return { ...SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, expiresAt }; -} - -const artifactSummary = { - kind: SIMULATED_WORKFLOW_ARTIFACT_SUMMARY_V0, - biometricVerification: "not_performed", - uniqueness: "not_performed", - credentialClass: "not_selfie_check", - productionCredential: false, -} as const; - -function sessionView( - state: EnrollmentSessionStateV2 = "capture_ready", - code: SimulatorBrowserSessionViewV0["code"] = "capture_ready", -): SimulatorBrowserSessionViewV0 { - return { - kind: SIMULATOR_BROWSER_SESSION_VIEW_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - sessionId: "session-v0", - browserHandle: "opaque-browser-handle", - nonceBase64Url: "opaque-nonce", - state, - code, - retryable: - code === "simulation_retry" || - code === "simulation_unavailable" || - code === "issuance_unavailable", - expiresAt: LATER, - capturePolicy: capturePolicy(), - artifactSummary: state === "simulated_credential_ready" ? artifactSummary : null, - }; -} - -async function frameBundle(): Promise { - const pending: FrameBundleV0 = { - kind: FRAME_BUNDLE_V0, - mode: SIMULATION_MODE, - sessionId: "session-v0", - policyId: SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.policyId, - accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, - nonceDigestSha256: NONCE_DIGEST, - dataMode: "metadata_only", - frames: [ - { - transportIndex: 0, - width: 1, - height: 1, - encoding: "rgba8", - byteLength: 4, - frameDigestSha256: FRAME_DIGEST, - }, - ], - totalByteLength: 4, - digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - artifactDigestSha256: "0".repeat(64), - }; - return { ...pending, artifactDigestSha256: await computeFrameBundleDigestV0(pending) }; -} - -function detailFor(state: AuthenticatorUiStateIdV1): AuthenticatorUiDetailCodeV1 | null { - if (state === "capture_guidance_adjust") return "move_closer"; - if (state === "capture_guidance_retake") return "image_blurry"; - if (state === "capture_guidance_unavailable") return "framing_guidance_unavailable"; - if (state === "capture_error") return "permission_denied"; - if (state === "session_error") return "network_timeout"; - if (state === "return_callback_failed") return "navigation_failed"; - if (state === "flow_failed") return "safe_internal_error"; - return null; -} - -function authoritativeFor( - state: AuthenticatorUiStateIdV1, -): EnrollmentSessionStateV2 | null { - for (const serverState of ENROLLMENT_SESSION_STATES_V2) { - if (ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1[serverState].includes(state)) { - return serverState; - } - } - return null; -} - -function event( - eventType: AuthenticatorUiEventTypeV1, - fields: Partial<{ - detailCode: AuthenticatorUiDetailCodeV1 | null; - authoritativeSessionState: EnrollmentSessionStateV2 | null; - rpPresentationId: "zoom_demo" | null; - }> = {}, -) { - return makeAuthenticatorUiEventV1({ event: eventType, ...fields }); -} - -function advance( - current: AuthenticatorUiSnapshotV1, - nextEvent: ReturnType, -) { - const transition = transitionAuthenticatorUiV1(current, nextEvent); - expect(transition).not.toBeNull(); - return transition!; -} - -describe("InjectedAuthenticatorPortV0", () => { - test("is type-distinct, strict, staging-only, and explicitly performs no real authenticator work", () => { - expect(isInjectedAuthenticatorRequestV0(injectedRequest)).toBe(true); - expect(isStagingDemoAuthenticatorReadyV0(injectedReady)).toBe(true); - expect(matchesExpectedStagingDemoAuthenticatorReadyV0( - injectedReady, - expectedInjectedReady, - )).toBe(true); - expect(injectedReady.claims).toEqual({ - webauthnPerformed: false, - prfEvaluated: false, - worldIdCreated: false, - }); - - for (const extra of [ - { syntheticAccountHandle: "unneeded" }, - { prfResult: "forbidden" }, - { privateKey: "forbidden" }, - { passkeyCredential: "forbidden" }, - { worldIdSignature: "forbidden" }, - ]) { - expect(isStagingDemoAuthenticatorReadyV0({ ...injectedReady, ...extra })).toBe(false); - } - expect(isStagingDemoAuthenticatorReadyV0({ - ...injectedReady, - claims: { ...injectedReady.claims, prfEvaluated: true }, - })).toBe(false); - }); - - test("binds a ready result to the initiating request time window", () => { - for (const [candidate, expected] of [ - [injectedReady, { ...expectedInjectedReady, requestId: "wrong" }], - [injectedReady, { ...expectedInjectedReady, sessionId: "wrong" }], - [injectedReady, { ...expectedInjectedReady, idempotencyKey: "wrong" }], - [injectedReady, { ...expectedInjectedReady, accountPublicMaterialDigestSha256: "d".repeat(64) }], - [injectedReady, { ...expectedInjectedReady, now: LATER }], - [{ ...injectedReady, issuedAt: "2020-01-01T00:00:00.000Z", expiresAt: "2030-01-01T00:00:00.000Z" }, expectedInjectedReady], - [{ ...injectedReady, expiresAt: "2026-09-02T22:06:00.000Z" }, expectedInjectedReady], - ] as const) { - expect(matchesExpectedStagingDemoAuthenticatorReadyV0(candidate, expected)).toBe(false); - } - expect(matchesExpectedStagingDemoAuthenticatorReadyV0(injectedReady, { - ...expectedInjectedReady, - now: "not-a-date", - })).toBe(false); - }); - - test("strictly matches stable demo errors to the initiating operation", () => { - const error = { - kind: STAGING_DEMO_AUTHENTICATOR_ERROR_V0, - version: INJECTED_AUTHENTICATOR_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - requestId: injectedRequest.requestId, - sessionId: injectedRequest.sessionId, - idempotencyKey: injectedRequest.idempotencyKey, - reasonCode: "interrupted", - } as const; - expect(isStagingDemoAuthenticatorErrorV0(error)).toBe(true); - expect(matchesExpectedStagingDemoAuthenticatorErrorV0(error, { - runtimeEnvironment: "staging", - requestId: injectedRequest.requestId, - sessionId: injectedRequest.sessionId, - idempotencyKey: injectedRequest.idempotencyKey, - })).toBe(true); - expect(matchesExpectedStagingDemoAuthenticatorErrorV0(error, { - runtimeEnvironment: "staging", - requestId: "wrong", - sessionId: injectedRequest.sessionId, - idempotencyKey: injectedRequest.idempotencyKey, - })).toBe(false); - expect(isStagingDemoAuthenticatorErrorV0({ ...error, reasonCode: "raw upstream error" })).toBe(false); - expect(isStagingDemoAuthenticatorErrorV0({ ...error, message: "forbidden" })).toBe(false); - }); - - test("rejects production before nested demo claims are read", () => { - let claimsReads = 0; - const hostile = { ...injectedReady } as Record; - Object.defineProperty(hostile, "claims", { - enumerable: true, - get() { - claimsReads += 1; - throw new Error("nested claims read"); - }, - }); - expect(() => matchesExpectedStagingDemoAuthenticatorReadyV0(hostile, { - ...expectedInjectedReady, - runtimeEnvironment: "production", - })).toThrow(SimulationArtifactInProductionError); - expect(claimsReads).toBe(0); - }); - - test("fails closed for hostile request and result objects", () => { - const hostile = new Proxy({}, { ownKeys() { throw new Error("hostile keys"); } }); - expect(isInjectedAuthenticatorRequestV0(hostile)).toBe(false); - expect(isStagingDemoAuthenticatorReadyV0(hostile)).toBe(false); - expect(isStagingDemoAuthenticatorErrorV0(hostile)).toBe(false); - }); -}); - -describe("SimulatorBrowserSessionPortV0", () => { - const bootstrap = { - kind: SIMULATOR_UI_BOOTSTRAP_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - rpPresentationId: "zoom_demo", - accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, - returnAction: "server_managed", - authenticator: { - kind: "injected_demo_only", - webauthnPerformed: false, - prfEvaluated: false, - worldIdCreated: false, - }, - qualityPolicy: SIMULATOR_UI_QUALITY_POLICY_V0, - } as const; - - test("enforces the exact camera-active-only bootstrap policy", () => { - expect(isSimulatorUiBootstrapV0(bootstrap)).toBe(true); - expect(SIMULATOR_UI_QUALITY_POLICY_V0.checks).toEqual([{ kind: "camera_active" }]); - expect(SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0.qualityPolicyId).toBe( - SIMULATOR_UI_QUALITY_POLICY_V0.policyId, - ); - expect(isSimulatorUiBootstrapV0({ ...bootstrap, scenario: "happy_path" })).toBe(false); - expect(isSimulatorUiBootstrapV0({ - ...bootstrap, - authenticator: { ...bootstrap.authenticator, worldIdCreated: true }, - })).toBe(false); - expect(isSimulatorUiBootstrapV0({ - ...bootstrap, - qualityPolicy: { - ...SIMULATOR_UI_QUALITY_POLICY_V0, - checks: [ - { kind: "camera_active" }, - { - kind: "framing", - minFaceAreaRatio: 0.2, - maxFaceAreaRatio: 0.8, - maxCenterOffsetRatio: 0.2, - }, - ], - }, - })).toBe(false); - }); - - test("strictly validates every browser request shape", async () => { - const basic = { sessionId: "session-v0", browserHandle: "opaque-browser-handle" }; - const idempotent = { ...basic, idempotencyKey: "operation-key" }; - const complete = { ...idempotent, completionHandle: "opaque-completion" }; - const bundle = await frameBundle(); - const submit = { ...idempotent, nonceBase64Url: "opaque-nonce", frameBundle: bundle }; - - expect(isCreateSimulatorBrowserSessionV0({ idempotencyKey: "create-key" })).toBe(true); - expect(isBrowserSessionFieldsV0(basic)).toBe(true); - expect(isBrowserIdempotentSessionFieldsV0(idempotent)).toBe(true); - expect(isCompleteDemoAuthenticatorV0(complete)).toBe(true); - expect(isSubmitSimulatorCaptureShapeV0(submit)).toBe(true); - expect(await matchesExpectedSubmitSimulatorCaptureV0(submit, { - ...idempotent, - nonceBase64Url: "opaque-nonce", - nonceDigestSha256: NONCE_DIGEST, - accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, - capturePolicy: capturePolicy(), - })).toBe(true); - - for (const invalid of [ - { ...basic, extra: true }, - { ...idempotent, idempotencyKey: "" }, - { ...complete, completionHandle: "", extra: true }, - { ...submit, pixels: "forbidden" }, - ]) { - expect( - isBrowserSessionFieldsV0(invalid) || - isBrowserIdempotentSessionFieldsV0(invalid) || - isCompleteDemoAuthenticatorV0(invalid) || - isSubmitSimulatorCaptureShapeV0(invalid), - ).toBe(false); - } - expect(await matchesExpectedSubmitSimulatorCaptureV0(submit, { - ...idempotent, - sessionId: "wrong", - nonceBase64Url: "opaque-nonce", - nonceDigestSha256: NONCE_DIGEST, - accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, - capturePolicy: capturePolicy(), - })).toBe(false); - }); - - test("narrows demo results and errors to strict browser envelopes", () => { - const ready = { - kind: SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - sessionId: "session-v0", - idempotencyKey: "demo-auth-idempotency", - completionHandle: "opaque-completion", - claims: { - webauthnPerformed: false, - prfEvaluated: false, - worldIdCreated: false, - }, - expiresAt: LATER, - } as const; - expect(isSimulatorBrowserDemoAuthenticatorReadyV0(ready)).toBe(true); - expect(matchesExpectedSimulatorBrowserDemoAuthenticatorReadyV0(ready, { - runtimeEnvironment: "staging", - sessionId: "session-v0", - idempotencyKey: "demo-auth-idempotency", - now: NOW, - })).toBe(true); - expect(isSimulatorBrowserDemoAuthenticatorReadyV0({ - ...ready, - syntheticAccountHandle: "forbidden", - })).toBe(false); - expect(isSimulatorBrowserDemoAuthenticatorReadyV0({ - ...ready, - accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, - })).toBe(false); - - const error = { - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - operation: "begin_demo_authenticator", - reasonCode: "user_non_completion", - } as const; - expect(isSimulatorBrowserSessionErrorV0(error)).toBe(true); - expect(projectSimulatorBrowserErrorToUiEventV1(error)?.event).toBe( - "demo_authenticator_non_completion", - ); - expect(isSimulatorBrowserSessionErrorV0({ ...error, message: "raw" })).toBe(false); - expect(isSimulatorBrowserSessionErrorV0({ ...error, operation: "unknown" })).toBe(false); - - const returned = { - kind: SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - action: "server_managed", - } as const; - expect(isSimulatorBrowserReturnAcceptedV0(returned)).toBe(true); - expect(isSimulatorBrowserReturnAcceptedV0({ ...returned, returnUrl: "https://evil.test" })).toBe(false); - }); - - test("maps each strict browser error class to one frozen UI event", () => { - const base = { - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - } as const; - expect(projectSimulatorBrowserErrorToUiEventV1({ - ...base, - operation: "submit_capture", - reasonCode: "artifact_invalid", - })).toMatchObject({ event: "session_failed", detailCode: "artifact_invalid" }); - expect(projectSimulatorBrowserErrorToUiEventV1({ - ...base, - operation: "return_to_rp", - reasonCode: "navigation_failed", - })).toMatchObject({ event: "return_failed", detailCode: "navigation_failed" }); - expect(projectSimulatorBrowserErrorToUiEventV1({ - ...base, - operation: "bootstrap", - reasonCode: "response_invalid", - })).toMatchObject({ event: "fatal_error", detailCode: "safe_internal_error" }); - expect(projectSimulatorBrowserErrorToUiEventV1({ - ...base, - operation: "create_session", - reasonCode: "network_unavailable", - })).toMatchObject({ event: "fatal_error", detailCode: "safe_internal_error" }); - expect(projectSimulatorBrowserErrorToUiEventV1({ ...base, message: "raw" })).toBeNull(); - }); - - test("enforces exact state/code/retryability and expected session bindings", () => { - expect(isSimulatorBrowserSessionViewV0(sessionView())).toBe(true); - const ready = sessionView("simulated_credential_ready", "simulated_credential_ready"); - expect(isSimulatorBrowserSessionViewV0(ready)).toBe(true); - expect(isSimulatorBrowserSessionViewV0({ ...ready, retryable: true })).toBe(false); - expect(isSimulatorBrowserSessionViewV0(sessionView("simulated_reject", "simulation_pass"))).toBe(false); - expect(isSimulatorBrowserSessionViewV0({ - ...sessionView(), - capturePolicy: capturePolicy("2026-09-02T22:04:00.000Z"), - })).toBe(false); - expect(matchesExpectedSimulatorBrowserSessionViewV0(sessionView(), { - runtimeEnvironment: "staging", - sessionId: "session-v0", - browserHandle: "opaque-browser-handle", - now: NOW, - })).toBe(true); - expect(matchesExpectedSimulatorBrowserSessionViewV0(sessionView(), { - runtimeEnvironment: "staging", - sessionId: "wrong", - browserHandle: "opaque-browser-handle", - now: NOW, - })).toBe(false); - - for (const extra of [ - { biometricScenario: "happy_path" }, - { issuanceScenario: "issue_success" }, - { receipt: {} }, - { credential: {} }, - { signatureBase64Url: "forbidden" }, - { pixels: "forbidden" }, - { returnUrl: "https://example.test" }, - ]) { - expect(isSimulatorBrowserSessionViewV0({ ...sessionView(), ...extra })).toBe(false); - } - }); - - test("requires the negative artifact summary only at simulated credential ready", () => { - expect(isSimulatorBrowserSessionViewV0({ - ...sessionView("simulated_credential_ready", "simulated_credential_ready"), - artifactSummary: null, - })).toBe(false); - expect(isSimulatorBrowserSessionViewV0({ ...sessionView(), artifactSummary })).toBe(false); - expect(isSimulatorBrowserSessionViewV0({ - ...sessionView("simulated_credential_ready", "simulated_credential_ready"), - artifactSummary: { ...artifactSummary, biometricVerification: "performed" }, - })).toBe(false); - }); - - test("rejects production before a projected artifact body is read", () => { - let summaryReads = 0; - const hostile = { ...sessionView() } as Record; - Object.defineProperty(hostile, "artifactSummary", { - enumerable: true, - get() { - summaryReads += 1; - throw new Error("summary read"); - }, - }); - expect(() => assertSimulatorBrowserArtifactAllowed("production", hostile)).toThrow( - SimulationArtifactInProductionError, - ); - expect(summaryReads).toBe(0); - }); - - test("fails closed for hostile request, policy, and result objects", () => { - const hostile = new Proxy({}, { ownKeys() { throw new Error("hostile keys"); } }); - expect(isCreateSimulatorBrowserSessionV0(hostile)).toBe(false); - expect(isBrowserSessionFieldsV0(hostile)).toBe(false); - expect(isBrowserIdempotentSessionFieldsV0(hostile)).toBe(false); - expect(isCompleteDemoAuthenticatorV0(hostile)).toBe(false); - expect(isSubmitSimulatorCaptureShapeV0(hostile)).toBe(false); - expect(isSimulatorUiBootstrapV0({ ...bootstrap, qualityPolicy: hostile })).toBe(false); - expect(isSimulatorBrowserSessionViewV0({ ...sessionView(), capturePolicy: hostile })).toBe(false); - expect(isSimulatorBrowserSessionErrorV0(hostile)).toBe(false); - }); -}); - -describe("AuthenticatorUiFlowV1", () => { - test("covers every frozen state with exact categorical progress, actions, visuals, and copy", () => { - expect(new Set(AUTHENTICATOR_UI_STATES_V1).size).toBe(AUTHENTICATOR_UI_STATES_V1.length); - for (const registry of [ - AUTHENTICATOR_UI_STATE_PROGRESS_V1, - AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, - AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, - AUTHENTICATOR_UI_COPY_V1, - ]) { - expect(Object.keys(registry).sort()).toEqual([...AUTHENTICATOR_UI_STATES_V1].sort()); - } - for (const state of AUTHENTICATOR_UI_STATES_V1) { - const snapshot = makeAuthenticatorUiSnapshotV1({ - state, - detailCode: detailFor(state), - authoritativeSessionState: authoritativeFor(state), - rpPresentationId: "zoom_demo", - visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[state], - }); - expect(isAuthenticatorUiSnapshotV1(snapshot)).toBe(true); - expect(snapshot.progress).toEqual(AUTHENTICATOR_UI_STATE_PROGRESS_V1[state]); - expect(AUTHENTICATOR_UI_COPY_V1[state].heading.length).toBeGreaterThan(0); - expect(AUTHENTICATOR_UI_COPY_V1[state].body.length).toBeGreaterThan(0); - } - expect(AUTHENTICATOR_UI_STAGING_BANNER_V1).toContain("No biometric verification"); - expect(AUTHENTICATOR_UI_TERMINAL_STATES_V1).toContain("simulated_credential_ready"); - expect(AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1.biometric_simulation_pending).toBe( - "figma_5132_135038", - ); - }); - - test("contains no fabricated percentage, ETA, or positive assurance copy", () => { - const text = JSON.stringify(AUTHENTICATOR_UI_COPY_V1).toLowerCase(); - expect(text).not.toContain("%"); - expect(text).not.toMatch(/\beta\b/); - for (const forbidden of [ - "verified human", - "biometric verification complete", - "selfie check credential issued", - "prove your liveness", - "real, unique person", - "passkey created successfully", - "world id created successfully", - "great position", - ]) { - expect(text).not.toContain(forbidden); - } - }); - - test("rejects impossible UI/server combinations and projects every V2 state", () => { - expect(Object.keys(ENROLLMENT_SESSION_TO_UI_STATE_V1).sort()).toEqual( - [...ENROLLMENT_SESSION_STATES_V2].sort(), - ); - for (const state of ENROLLMENT_SESSION_STATES_V2) { - const projected = projectEnrollmentSessionStateToUiV1(state, { - rpPresentationId: "zoom_demo", - visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[ - ENROLLMENT_SESSION_TO_UI_STATE_V1[state] - ], - }); - expect(projected.state).toBe(ENROLLMENT_SESSION_TO_UI_STATE_V1[state]); - expect(projected.authoritativeSessionState).toBe(state); - } - const valid = projectEnrollmentSessionStateToUiV1("simulated_credential_ready"); - expect(isAuthenticatorUiSnapshotV1({ - ...valid, - authoritativeSessionState: "created", - })).toBe(false); - expect(isAuthenticatorUiSnapshotV1({ - ...makeAuthenticatorUiSnapshotV1({ state: "request_review" }), - authoritativeSessionState: "simulated_credential_ready", - })).toBe(false); - for (const authoritativeSessionState of [ - "simulated_reject", - "simulated_issuance_reject", - "simulated_credential_ready", - "cancelled", - "expired", - ] as const) { - expect(isAuthenticatorUiSnapshotV1({ - ...makeAuthenticatorUiSnapshotV1({ state: "return_redirecting" }), - authoritativeSessionState, - })).toBe(false); - } - }); - - test("freezes legal actions, effects, events, and a complete happy transition path", () => { - expect(AUTHENTICATOR_UI_INITIAL_EFFECTS_V1).toEqual(["validate_request"]); - let current = makeAuthenticatorUiSnapshotV1({ - state: "request_checking", - visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1.request_checking, - }); - current = advance(current, event("request_accepted", { rpPresentationId: "zoom_demo" })).snapshot; - current = advance(current, event("continue")).snapshot; - current = advance(current, event("admission_safari_candidate")).snapshot; - current = advance(current, event("continue")).snapshot; - let result = advance(current, event("start_demo_authenticator")); - expect(result.effects).toEqual(["create_session"]); - current = result.snapshot; - result = advance(current, event("authoritative_session", { - authoritativeSessionState: "created", - })); - expect(result.effects).toEqual(["begin_demo_authenticator"]); - current = result.snapshot; - result = advance(current, event("demo_authenticator_ready")); - expect(result.effects).toEqual(["complete_demo_authenticator"]); - current = result.snapshot; - current = advance(current, event("authoritative_session", { - authoritativeSessionState: "passkey_complete", - })).snapshot; - result = advance(current, event("continue_to_camera")); - expect(result.effects).toEqual(["prepare_capture"]); - current = result.snapshot; - current = advance(current, event("authoritative_session", { - authoritativeSessionState: "capture_ready", - })).snapshot; - result = advance(current, event("start_camera")); - expect(result.effects).toEqual(["start_capture"]); - current = result.snapshot; - current = advance(current, event("capture_acquiring")).snapshot; - current = advance(current, event("capture_preparing")).snapshot; - current = advance(current, event("capture_preview")).snapshot; - result = advance(current, event("quality_ready")); - expect(result.effects).toEqual(["collect_frame_metadata"]); - current = result.snapshot; - result = advance(current, event("capture_artifact_ready")); - expect(result.effects).toEqual(["stop_capture", "clear_transient_media"]); - current = result.snapshot; - result = advance(current, event("cleanup_complete")); - expect(result.effects).toEqual(["submit_capture"]); - current = result.snapshot; - current = advance(current, event("authoritative_session", { - authoritativeSessionState: "simulated_credential_ready", - })).snapshot; - expect(current.state).toBe("simulated_credential_ready"); - result = advance(current, event("return_requested")); - expect(result.effects).toEqual([ - "abort_active_effects", - "stop_capture", - "clear_transient_media", - "return_to_rp", - ]); - current = result.snapshot; - current = advance(current, event("return_completed")).snapshot; - expect(current.state).toBe("returned"); - expect(transitionAuthenticatorUiV1(current, event("start_camera"))).toBeNull(); - }); - - test("orders cancellation cleanup before server cancel and rejects illegal transitions", () => { - const preview = makeAuthenticatorUiSnapshotV1({ - state: "capture_preview", - authoritativeSessionState: "capture_ready", - rpPresentationId: "zoom_demo", - visualSource: "figma_5132_134743", - }); - const cancelling = advance(preview, event("cancel_requested")); - expect(cancelling.effects).toEqual([ - "abort_active_effects", - "stop_capture", - "clear_transient_media", - "cancel_session", - ]); - expect(cancelling.snapshot.state).toBe("flow_cancelling"); - const cancelled = advance(cancelling.snapshot, event("authoritative_session", { - authoritativeSessionState: "cancelled", - })); - expect(cancelled.snapshot.state).toBe("flow_cancelled"); - expect(transitionAuthenticatorUiV1(preview, event("return_completed"))).toBeNull(); - const quality = dispatchAuthenticatorUiActionV1(preview, "collect_frame_metadata"); - expect(quality?.snapshot).toBe(preview); - expect(quality?.effects).toEqual(["evaluate_quality"]); - expect(dispatchAuthenticatorUiActionV1(preview, "return_to_rp")).toBeNull(); - }); - - test("keeps pre-session failures local and makes ambiguous post-session status recoverable", () => { - const creating = makeAuthenticatorUiSnapshotV1({ state: "session_creating" }); - const preSessionFailure = advance(creating, event("session_failed", { - detailCode: "network_unavailable", - })); - expect(preSessionFailure.snapshot.state).toBe("flow_failed"); - expect(preSessionFailure.snapshot.authoritativeSessionState).toBeNull(); - expect(preSessionFailure.effects).toEqual([ - "abort_active_effects", - "stop_capture", - "clear_transient_media", - ]); - - const captureComplete = makeAuthenticatorUiSnapshotV1({ - state: "capture_complete", - authoritativeSessionState: "capture_ready", - }); - const ambiguous = advance(captureComplete, event("session_failed", { - detailCode: "network_unavailable", - })); - expect(ambiguous.snapshot.state).toBe("session_error"); - expect(ambiguous.snapshot.authoritativeSessionState).toBe("capture_ready"); - expect(AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1.session_error).toEqual([ - "query_status", - "cancel", - ]); - const recovery = dispatchAuthenticatorUiActionV1(ambiguous.snapshot, "query_status"); - expect(recovery?.snapshot.state).toBe("session_reconciling"); - expect(recovery?.effects).toEqual(["query_status"]); - expect(() => makeAuthenticatorUiSnapshotV1({ - state: "session_error", - detailCode: "network_unavailable", - })).toThrow("invalid_authenticator_ui_snapshot_v1"); - }); - - test("keeps pre-session close separate from session-bound RP return", () => { - const invalidReturn = makeAuthenticatorUiSnapshotV1({ - state: "request_return_target_invalid", - visualSource: "verified_template", - }); - expect(AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[invalidReturn.state]).toEqual(["close"]); - expect(dispatchAuthenticatorUiActionV1(invalidReturn, "return_to_rp")).toBeNull(); - const closed = dispatchAuthenticatorUiActionV1(invalidReturn, "close"); - expect(closed?.snapshot.state).toBe("flow_closed"); - expect(closed?.effects).toEqual([ - "abort_active_effects", - "stop_capture", - "clear_transient_media", - "close_locally", - ]); - expect(closed?.effects).not.toContain("return_to_rp"); - - const callbackFailure = makeAuthenticatorUiSnapshotV1({ - state: "return_callback_failed", - detailCode: "navigation_failed", - }); - expect(callbackFailure.authoritativeSessionState).toBeNull(); - const callbackClosed = dispatchAuthenticatorUiActionV1(callbackFailure, "close"); - expect(callbackClosed?.snapshot.state).toBe("flow_closed"); - expect(callbackClosed?.effects).not.toContain("return_to_rp"); - }); - - test("freezes abort and cleanup behavior for every in-flight state", () => { - const inFlight: readonly [AuthenticatorUiStateIdV1, EnrollmentSessionStateV2 | null][] = [ - ["request_checking", null], - ["admission_checking", null], - ["admission_handoff_departing", null], - ["session_creating", null], - ["demo_authenticator_pending", "created"], - ["session_completing_authenticator", "created"], - ["session_reconciling", "created"], - ["capture_policy_loading", "passkey_complete"], - ["capture_permission_request", "capture_ready"], - ["capture_acquiring", "capture_ready"], - ["capture_preparing", "capture_ready"], - ["capture_sampling", "capture_ready"], - ["capture_artifact_ready", "capture_ready"], - ["capture_cleaning", "capture_ready"], - ["capture_complete", "capture_ready"], - ["biometric_simulation_pending", "biometric_simulation_pending"], - ["biometric_simulated_pass", "simulated_pass"], - ["issuance_simulation_pending", "issuance_simulation_pending"], - ["return_redirecting", null], - ]; - const lifecycleEvents = [ - "page_hidden", - "page_unloaded", - "orientation_invalidated", - "component_unmounted", - "operation_interrupted", - ] as const; - - for (const [state, authoritativeSessionState] of inFlight) { - const snapshot = makeAuthenticatorUiSnapshotV1({ - state, - authoritativeSessionState, - visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[state], - }); - for (const lifecycleEvent of lifecycleEvents) { - const aborted = transitionAuthenticatorUiV1(snapshot, event(lifecycleEvent)); - expect(aborted).not.toBeNull(); - expect(aborted?.snapshot.state).toBe("flow_cancelling"); - expect(aborted?.effects.slice(0, 3)).toEqual([ - "abort_active_effects", - "stop_capture", - "clear_transient_media", - ]); - expect(aborted?.effects.includes("cancel_session")).toBe( - authoritativeSessionState !== null, - ); - } - } - - for (const [state] of inFlight) { - expect(AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state]).toContain("cancel"); - } - }); - - test("strictly validates event payloads and state-specific error details", () => { - const accepted = event("request_accepted", { rpPresentationId: "zoom_demo" }); - expect(isAuthenticatorUiEventV1(accepted)).toBe(true); - expect(isAuthenticatorUiEventV1({ ...accepted, message: "free text" })).toBe(false); - expect(() => event("quality_adjust", { detailCode: "network_timeout" })).toThrow( - "invalid_authenticator_ui_event_v1", - ); - expect(() => event("authoritative_session")).toThrow( - "invalid_authenticator_ui_event_v1", - ); - - const captureError = makeAuthenticatorUiSnapshotV1({ - state: "capture_error", - detailCode: "permission_denied", - authoritativeSessionState: "capture_ready", - }); - expect(isAuthenticatorUiSnapshotV1({ ...captureError, detailCode: "navigation_failed" })).toBe(false); - expect(isAuthenticatorUiSnapshotV1({ - ...captureError, - progress: { stage: "biometric_simulation", status: "pending" }, - })).toBe(false); - expect(isAuthenticatorUiSnapshotV1({ ...captureError, message: "free text" })).toBe(false); - }); - - test("runtime-freezes every exported registry used for policy or presentation", () => { - for (const values of [ - AUTHENTICATOR_UI_ACTIONS_V1, - AUTHENTICATOR_UI_EFFECTS_V1, - AUTHENTICATOR_UI_EVENTS_V1, - AUTHENTICATOR_UI_DETAIL_CODES_V1, - AUTHENTICATOR_UI_VISUAL_SOURCES_V1, - SIMULATOR_SESSION_STATUS_CODES_V0, - SIMULATOR_BROWSER_SESSION_OPERATIONS_V0, - SIMULATOR_BROWSER_SESSION_ERROR_CODES_V0, - ]) { - expect(new Set(values).size).toBe(values.length); - } - for (const registry of [ - AUTHENTICATOR_UI_STATES_V1, - AUTHENTICATOR_UI_ACTIONS_V1, - AUTHENTICATOR_UI_EFFECTS_V1, - AUTHENTICATOR_UI_INITIAL_EFFECTS_V1, - AUTHENTICATOR_UI_EVENTS_V1, - AUTHENTICATOR_UI_DETAIL_CODES_V1, - AUTHENTICATOR_UI_VISUAL_SOURCES_V1, - AUTHENTICATOR_UI_TERMINAL_STATES_V1, - AUTHENTICATOR_UI_STATE_PROGRESS_V1, - AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, - AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, - ENROLLMENT_SESSION_TO_UI_STATE_V1, - ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1, - AUTHENTICATOR_UI_COPY_V1, - AUTHENTICATOR_UI_DETAIL_COPY_V1, - RP_PRESENTATION_IDS_V0, - SIMULATOR_SESSION_STATUS_CODES_V0, - SIMULATOR_BROWSER_SESSION_OPERATIONS_V0, - SIMULATOR_BROWSER_SESSION_ERROR_CODES_V0, - STAGING_DEMO_AUTHENTICATOR_ERROR_REASONS_V0, - SIMULATOR_UI_QUALITY_POLICY_V0, - SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, - ]) { - expect(Object.isFrozen(registry)).toBe(true); - } - for (const state of AUTHENTICATOR_UI_STATES_V1) { - expect(Object.isFrozen(AUTHENTICATOR_UI_STATE_PROGRESS_V1[state])).toBe(true); - expect(Object.isFrozen(AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state])).toBe(true); - expect(Object.isFrozen(AUTHENTICATOR_UI_COPY_V1[state])).toBe(true); - } - for (const state of ENROLLMENT_SESSION_STATES_V2) { - expect(Object.isFrozen(ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1[state])).toBe(true); - } - }); - - test("production rejects snapshots/events and revoked proxies with stable isolation errors", () => { - let progressReads = 0; - const hostile = { - kind: AUTHENTICATOR_UI_SNAPSHOT_V1, - version: AUTHENTICATOR_UI_FLOW_V1, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - } as Record; - Object.defineProperty(hostile, "progress", { - enumerable: true, - get() { - progressReads += 1; - throw new Error("progress read"); - }, - }); - expect(() => assertAuthenticatorUiSnapshotAllowed("production", hostile)).toThrow( - SimulationArtifactInProductionError, - ); - expect(progressReads).toBe(0); - expect(() => assertAuthenticatorUiEventAllowed("production", { - kind: AUTHENTICATOR_UI_EVENT_V1, - mode: SIMULATION_MODE, - })).toThrow(SimulationArtifactInProductionError); - - const target = {}; - const revoked = Proxy.revocable(target, {}); - revoked.revoke(); - expect(() => assertSimulationArtifactAllowed("production", revoked.proxy)).toThrow( - SimulationArtifactInProductionError, - ); - }); - - test("fails closed for hostile snapshot and event objects", () => { - const hostile = new Proxy({}, { ownKeys() { throw new Error("hostile keys"); } }); - expect(isAuthenticatorUiSnapshotV1(hostile)).toBe(false); - expect(isAuthenticatorUiEventV1(hostile)).toBe(false); - }); -}); diff --git a/packages/frame-capture/README.md b/packages/frame-capture/README.md deleted file mode 100644 index 43e05b6..0000000 --- a/packages/frame-capture/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# Frame capture - -Metadata-only iPhone camera capture for the simulator-backed milestone. The runtime starts only -after a user action plus an approved iOS 18+ Safari/Chrome top-level context and successful PRF -setup. It requests video with a soft front-camera preference and never records audio. - -## Boundary - -- Camera pixels are transient RGBA8 application buffers. Each buffer is locally hashed, exposed - to an optional local capture-guidance callback, cleared, and released. -- The only returned wire artifact is Main-owned `FrameBundleV0`: one to four descriptors, exact - byte lengths, diagnostic offsets, per-frame SHA-256 digests, and the canonical artifact digest. -- Preview mirroring is CSS-only. Canvas sampling uses unmirrored source coordinates. -- No recording, video/JPEG encoding, media blob, upload, persistence, logging, analytics, object - URL, service worker, or snapshot artifact exists in this package. -- Synthetic fixtures are descriptor-only and require both `testMode: true` and a - `synthetic_fixture` policy. That path never opens a camera. - -## Lifecycle - -Every attempt owns its stream, tracks, canvas sampler, listeners, timers, and transient buffers. -Cancel, hidden/pagehide, unload, orientation or intrinsic-size change, track mute/end, expiry, -watchdog failure, acquisition error, local inspection error, and success all converge on cleanup. -Cleanup detaches preview, clears the canvas and buffers, stops every owned track, and requires a -fresh user-initiated attempt. A cancelled unresolved `getUserMedia()` request is tombstoned; if it -later resolves, every late track is immediately stopped and the stream is never attached. - -## Evidence status - -Unit tests cover lifecycle, exact digest vectors, bounds, interruption cleanup, late permission, -and network/storage/log sentinels. Safari and Chrome on iPhone remain separate unverified device -cells. Browser-process suspension can prevent page cleanup handlers, and application-level buffer -clearing is best effort rather than a claim of OS/browser/GPU zeroization or app-switcher snapshot -absence. diff --git a/packages/frame-capture/src/artifact.ts b/packages/frame-capture/src/artifact.ts deleted file mode 100644 index 3034984..0000000 --- a/packages/frame-capture/src/artifact.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { - computeFrameBundleDigestV0, - FRAME_BUNDLE_V0, - FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - SIMULATION_MODE, - validateFrameBundleV0, - type FrameBundleV0, - type FrameDescriptorV0, - type HexSha256, - type SimulationCapturePolicyV0, -} from "../../contracts/src"; -import type { SyntheticFixtureRequest, TransientRgba8Frame } from "./types"; - -export async function sha256Rgba8(frame: TransientRgba8Frame): Promise { - const digest = await crypto.subtle.digest( - "SHA-256", - frame.bytes.buffer.slice( - frame.bytes.byteOffset, - frame.bytes.byteOffset + frame.bytes.byteLength, - ) as ArrayBuffer, - ); - return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join( - "", - ); -} - -export function assertFrameWithinPolicy( - frame: TransientRgba8Frame, - policy: SimulationCapturePolicyV0, -): void { - if ( - !Number.isSafeInteger(frame.width) || - !Number.isSafeInteger(frame.height) || - frame.width <= 0 || - frame.height <= 0 || - frame.width > policy.maxWidth || - frame.height > policy.maxHeight - ) { - throw new RangeError("Frame dimensions exceed the capture policy"); - } - const expectedByteLength = frame.width * frame.height * 4; - if ( - !Number.isSafeInteger(expectedByteLength) || - frame.bytes.byteLength !== expectedByteLength || - expectedByteLength > policy.maxFrameBytes - ) { - throw new RangeError("RGBA8 frame byte length exceeds the capture policy"); - } -} - -export async function buildFrameBundle( - fields: { - readonly sessionId: string; - readonly policy: SimulationCapturePolicyV0; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly nonceDigestSha256: HexSha256; - readonly frames: readonly FrameDescriptorV0[]; - readonly syntheticFixtureId?: string; - }, -): Promise { - const totalByteLength = fields.frames.reduce((sum, frame) => sum + frame.byteLength, 0); - const pending: FrameBundleV0 = { - kind: FRAME_BUNDLE_V0, - mode: SIMULATION_MODE, - sessionId: fields.sessionId, - policyId: fields.policy.policyId, - accountPublicMaterialDigestSha256: fields.accountPublicMaterialDigestSha256, - nonceDigestSha256: fields.nonceDigestSha256, - dataMode: fields.policy.dataMode, - frames: fields.frames, - ...(fields.syntheticFixtureId === undefined - ? {} - : { syntheticFixtureId: fields.syntheticFixtureId }), - totalByteLength, - digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - artifactDigestSha256: "0".repeat(64), - }; - const bundle = { - ...pending, - artifactDigestSha256: await computeFrameBundleDigestV0(pending), - }; - const errors = await validateFrameBundleV0(bundle, fields.policy); - if (errors.length > 0) throw new RangeError(`Invalid frame bundle: ${errors.join(",")}`); - return bundle; -} - -export async function createSyntheticFixtureBundle( - request: SyntheticFixtureRequest, -): Promise { - if (request.testMode !== true || request.policy.dataMode !== "synthetic_fixture") { - throw new TypeError("Synthetic fixtures require explicit test mode and synthetic policy"); - } - return buildFrameBundle({ - sessionId: request.sessionId, - policy: request.policy, - accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, - nonceDigestSha256: request.nonceDigestSha256, - syntheticFixtureId: request.fixtureId, - frames: request.frames.map((frame, transportIndex) => ({ - transportIndex, - width: frame.width, - height: frame.height, - encoding: "rgba8", - byteLength: frame.byteLength, - frameDigestSha256: frame.frameDigestSha256, - ...(frame.captureOffsetMs === undefined - ? {} - : { captureOffsetMs: frame.captureOffsetMs }), - })), - }); -} diff --git a/packages/frame-capture/src/browser-platform.ts b/packages/frame-capture/src/browser-platform.ts deleted file mode 100644 index b975c49..0000000 --- a/packages/frame-capture/src/browser-platform.ts +++ /dev/null @@ -1,199 +0,0 @@ -import type { - CaptureInterruptionReason, - CapturePlatform, - FrameSampler, - OwnedMediaStream, - TransientRgba8Frame, -} from "./types"; -import type { SimulationCapturePolicyV0 } from "../../contracts/src"; - -function nextPresentedFrame(video: HTMLVideoElement): Promise { - return new Promise((resolve) => { - if (typeof video.requestVideoFrameCallback === "function") { - video.requestVideoFrameCallback(() => resolve()); - return; - } - requestAnimationFrame(() => resolve()); - }); -} - -function waitForMetadata(video: HTMLVideoElement): Promise { - if (video.readyState >= HTMLMediaElement.HAVE_METADATA && video.videoWidth > 0) { - return Promise.resolve(); - } - return new Promise((resolve, reject) => { - const loaded = () => { - cleanup(); - resolve(); - }; - const failed = () => { - cleanup(); - reject(new Error("preview metadata unavailable")); - }; - const cleanup = () => { - video.removeEventListener("loadedmetadata", loaded); - video.removeEventListener("error", failed); - }; - video.addEventListener("loadedmetadata", loaded, { once: true }); - video.addEventListener("error", failed, { once: true }); - }); -} - -export function boundedRgbaDimensions( - sourceWidth: number, - sourceHeight: number, - policy: SimulationCapturePolicyV0, -): { readonly width: number; readonly height: number } { - if (sourceWidth <= 0 || sourceHeight <= 0) throw new RangeError("Invalid source dimensions"); - const maxPixels = Math.floor(policy.maxFrameBytes / 4); - const scale = Math.min( - 1, - policy.maxWidth / sourceWidth, - policy.maxHeight / sourceHeight, - Math.sqrt(maxPixels / (sourceWidth * sourceHeight)), - ); - const width = Math.max(1, Math.floor(sourceWidth * scale)); - const height = Math.max(1, Math.floor(sourceHeight * scale)); - return { width, height }; -} - -class CanvasFrameSampler implements FrameSampler { - private readonly context: CanvasRenderingContext2D; - private preparedWidth = 0; - private preparedHeight = 0; - private originalTransform: string; - private interruptionListener?: (reason: CaptureInterruptionReason) => void; - private listeningForResize = false; - private disposed = false; - - constructor( - private readonly video: HTMLVideoElement, - private readonly canvas: HTMLCanvasElement, - stream: OwnedMediaStream, - ) { - const context = canvas.getContext("2d", { willReadFrequently: true }); - if (context === null) throw new Error("Canvas 2D unavailable"); - this.context = context; - this.originalTransform = video.style.transform; - video.style.transform = "scaleX(-1)"; - video.srcObject = stream as MediaStream; - } - - setInterruptionListener(listener: (reason: CaptureInterruptionReason) => void): void { - this.interruptionListener = listener; - } - - async prepare(policy: SimulationCapturePolicyV0): Promise { - await waitForMetadata(this.video); - if (this.disposed) throw new Error("Capture sampler disposed"); - await this.video.play(); - if (this.disposed) throw new Error("Capture sampler disposed"); - await nextPresentedFrame(this.video); - if (this.disposed) throw new Error("Capture sampler disposed"); - this.preparedWidth = this.video.videoWidth; - this.preparedHeight = this.video.videoHeight; - const firstFrame = await this.sample(policy); - firstFrame.bytes.fill(0); - this.clear(); - if (this.disposed) throw new Error("Capture sampler disposed"); - this.video.addEventListener("resize", this.handleResize); - this.listeningForResize = true; - } - - async sample(policy: SimulationCapturePolicyV0): Promise { - await nextPresentedFrame(this.video); - if (this.disposed) throw new Error("Capture sampler disposed"); - const { width, height } = boundedRgbaDimensions( - this.video.videoWidth, - this.video.videoHeight, - policy, - ); - this.canvas.width = width; - this.canvas.height = height; - // Analysis coordinates are source-oriented. Mirroring is CSS preview-only. - this.context.setTransform(1, 0, 0, 1, 0, 0); - this.context.drawImage(this.video, 0, 0, width, height); - const image = this.context.getImageData(0, 0, width, height); - this.context.clearRect(0, 0, width, height); - return { width, height, bytes: image.data }; - } - - clear(): void { - this.context.setTransform(1, 0, 0, 1, 0, 0); - this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); - } - - dispose(): void { - if (this.disposed) return; - this.disposed = true; - try { - this.clear(); - this.canvas.width = 1; - this.canvas.height = 1; - } catch { - // Continue detaching preview even if canvas release fails. - } - try { - this.video.pause(); - } catch { - // Continue detaching preview. - } - this.video.srcObject = null; - this.video.removeAttribute("src"); - try { - this.video.load(); - } catch { - // The media source is already detached. - } - this.video.style.transform = this.originalTransform; - if (this.listeningForResize) this.video.removeEventListener("resize", this.handleResize); - this.interruptionListener = undefined; - } - - private readonly handleResize = (): void => { - if ( - this.video.videoWidth !== this.preparedWidth || - this.video.videoHeight !== this.preparedHeight - ) { - this.interruptionListener?.("orientation_change"); - } - }; -} - -export function createBrowserCapturePlatform( - video: HTMLVideoElement, - canvas: HTMLCanvasElement, -): CapturePlatform { - return { - requestCamera: (constraints) => { - if (typeof navigator.mediaDevices?.getUserMedia !== "function") { - return Promise.reject({ name: "NotSupportedError" }); - } - return navigator.mediaDevices.getUserMedia(constraints); - }, - createSampler: (stream) => new CanvasFrameSampler(video, canvas, stream), - subscribeInterruptions: (listener) => { - const visibility = () => { - if (document.visibilityState !== "visible") listener("visibility_hidden"); - }; - const pagehide = () => listener("pagehide"); - const beforeunload = () => listener("beforeunload"); - const orientation = () => listener("orientation_change"); - document.addEventListener("visibilitychange", visibility); - window.addEventListener("pagehide", pagehide); - window.addEventListener("beforeunload", beforeunload); - window.addEventListener("orientationchange", orientation); - visibility(); - return () => { - document.removeEventListener("visibilitychange", visibility); - window.removeEventListener("pagehide", pagehide); - window.removeEventListener("beforeunload", beforeunload); - window.removeEventListener("orientationchange", orientation); - }; - }, - nowMonotonicMs: () => performance.now(), - nowEpochMs: () => Date.now(), - setTimer: (callback, delayMs) => globalThis.setTimeout(callback, delayMs), - clearTimer: (handle) => globalThis.clearTimeout(handle as ReturnType), - }; -} diff --git a/packages/frame-capture/src/index.ts b/packages/frame-capture/src/index.ts deleted file mode 100644 index cf539bf..0000000 --- a/packages/frame-capture/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from "./artifact"; -export * from "./browser-platform"; -export * from "./runtime"; -export * from "./state"; -export * from "./types"; diff --git a/packages/frame-capture/src/runtime.ts b/packages/frame-capture/src/runtime.ts deleted file mode 100644 index 1ceab55..0000000 --- a/packages/frame-capture/src/runtime.ts +++ /dev/null @@ -1,476 +0,0 @@ -import { - isHexSha256, - validateSimulationCapturePolicyV0, - type FrameDescriptorV0, -} from "../../contracts/src"; -import { assertFrameWithinPolicy, buildFrameBundle, sha256Rgba8 } from "./artifact"; -import { reduceCaptureState } from "./state"; -import type { - CaptureFailureCode, - CaptureInterruptionReason, - CapturePlatform, - CaptureRequest, - CaptureRuntimeOptions, - CaptureState, - FrameSampler, - OwnedMediaStream, - TransientRgba8Frame, -} from "./types"; - -const CAMERA_CONSTRAINTS: MediaStreamConstraints = { - audio: false, - video: { facingMode: { ideal: "user" } }, -}; - -const SAFE_MESSAGES: Readonly> = { - unsupported_context: "Camera capture is not supported in this context", - prf_not_ready: "Authentication setup must complete before camera capture", - user_activation_required: "Camera capture requires a user action", - permission_denied: "Camera permission was denied or revoked", - camera_unavailable: "No usable camera is available", - camera_busy: "The camera is busy or unavailable to this tab", - camera_restricted: "Camera access is restricted", - camera_unsupported: "Camera capture is unavailable in this browser", - non_user_facing_camera: "The selected camera is not user-facing", - constraints_unsatisfied: "The requested camera constraints are unavailable", - acquisition_aborted: "Camera acquisition was aborted", - permission_timeout: "Camera permission did not resolve in time", - preview_timeout: "The camera did not produce a frame in time", - preview_invalid_frame: "The camera produced an invalid frame", - interrupted: "Camera capture was interrupted", - session_expired: "The capture session expired", - capture_in_progress: "A camera capture is already in progress", - artifact_limit: "The captured frame exceeds the metadata policy", - quality_callback_failed: "The local capture guidance could not inspect the frame", - unknown: "Camera capture failed", -}; - -export class CaptureRuntimeError extends Error { - readonly code: CaptureFailureCode; - - constructor(code: CaptureFailureCode) { - super(SAFE_MESSAGES[code]); - this.name = "CaptureRuntimeError"; - this.code = code; - } -} - -interface ActiveAttempt { - readonly generation: number; - readonly interrupted: Promise; - rejectInterruption(error: CaptureRuntimeError): void; - stream?: OwnedMediaStream; - sampler?: FrameSampler; - readonly buffers: Set; - readonly cleanupCallbacks: Array<() => void>; - expiryTimer?: unknown; - terminalError?: CaptureRuntimeError; - cleaned: boolean; -} - -function terminalStateFor(code: CaptureFailureCode): CaptureState { - switch (code) { - case "permission_denied": - return "permission_denied"; - case "camera_unavailable": - case "camera_unsupported": - case "non_user_facing_camera": - case "constraints_unsatisfied": - return "camera_unavailable"; - case "camera_busy": - return "camera_busy"; - case "camera_restricted": - return "camera_restricted"; - case "session_expired": - return "expired"; - case "interrupted": - case "acquisition_aborted": - return "interrupted"; - default: - return "failed"; - } -} - -function classifyCameraError(value: unknown): CaptureRuntimeError { - let name = ""; - try { - if (typeof value === "object" && value !== null) { - name = String((value as { readonly name?: unknown }).name ?? ""); - } - } catch { - return new CaptureRuntimeError("unknown"); - } - switch (name) { - case "NotAllowedError": - return new CaptureRuntimeError("permission_denied"); - case "NotFoundError": - return new CaptureRuntimeError("camera_unavailable"); - case "NotReadableError": - return new CaptureRuntimeError("camera_busy"); - case "SecurityError": - return new CaptureRuntimeError("camera_restricted"); - case "OverconstrainedError": - return new CaptureRuntimeError("constraints_unsatisfied"); - case "AbortError": - return new CaptureRuntimeError("acquisition_aborted"); - case "NotSupportedError": - return new CaptureRuntimeError("camera_unsupported"); - default: - return new CaptureRuntimeError("unknown"); - } -} - -function stopStream(stream: OwnedMediaStream): void { - for (const track of stream.getTracks()) { - try { - track.stop(); - } catch { - // Resource cleanup is best effort and errors never include media data. - } - } -} - -function assertUserFacingWhenKnown(stream: OwnedMediaStream): void { - for (const track of stream.getTracks()) { - let facingMode: string | undefined; - try { - facingMode = track.getSettings?.().facingMode; - } catch { - // Missing or unreadable settings are unknown observations, not trust signals. - } - if (facingMode === "environment" || facingMode === "left" || facingMode === "right") { - throw new CaptureRuntimeError("non_user_facing_camera"); - } - } -} - -export class MetadataOnlyCaptureRuntime { - private stateValue: CaptureState = "idle"; - private generation = 0; - private active?: ActiveAttempt; - private readonly permissionTimeoutMs: number; - private readonly firstFrameTimeoutMs: number; - - constructor( - private readonly platform: CapturePlatform, - private readonly options: CaptureRuntimeOptions = {}, - ) { - this.permissionTimeoutMs = options.permissionTimeoutMs ?? 20_000; - this.firstFrameTimeoutMs = options.firstFrameTimeoutMs ?? 8_000; - } - - get state(): CaptureState { - return this.stateValue; - } - - async capture(request: CaptureRequest) { - if (this.active !== undefined) throw new CaptureRuntimeError("capture_in_progress"); - const admissionError = this.validateRequest(request); - if (admissionError !== undefined) { - this.transition(terminalStateFor(admissionError.code)); - this.transition("cleaning_up"); - this.transition("complete"); - throw admissionError; - } - - let rejectInterruption!: (error: CaptureRuntimeError) => void; - const interrupted = new Promise((_resolve, reject) => { - rejectInterruption = reject; - }); - // A handler is attached immediately so a synchronous cancel cannot create an unhandled rejection. - void interrupted.catch(() => undefined); - const attempt: ActiveAttempt = { - generation: ++this.generation, - interrupted, - rejectInterruption, - buffers: new Set(), - cleanupCallbacks: [], - cleaned: false, - }; - this.active = attempt; - - try { - this.transition("permission_request"); - const unsubscribe = this.platform.subscribeInterruptions((reason) => - this.interruptAttempt(attempt, reason), - ); - if (attempt.cleaned) unsubscribe(); - else attempt.cleanupCallbacks.push(unsubscribe); - if (attempt.terminalError !== undefined) throw attempt.terminalError; - const expiresInMs = Date.parse(request.policy.expiresAt) - this.platform.nowEpochMs(); - attempt.expiryTimer = this.platform.setTimer( - () => this.interruptAttempt(attempt, "session_expired"), - Math.max(0, expiresInMs), - ); - - const pendingStream = this.platform.requestCamera(CAMERA_CONSTRAINTS); - // getUserMedia has no abort signal. A stale late stream is disposed before use. - const guardedStream = pendingStream.then( - (stream) => { - if (this.active !== attempt || attempt.terminalError !== undefined || attempt.cleaned) { - stopStream(stream); - throw attempt.terminalError ?? new CaptureRuntimeError("interrupted"); - } - return stream; - }, - (error: unknown) => { - throw classifyCameraError(error); - }, - ); - attempt.stream = await this.raceAttempt( - attempt, - this.withTimeout(guardedStream, this.permissionTimeoutMs, "permission_timeout"), - ); - this.bindTrackInterruptions(attempt); - this.transition("acquiring"); - assertUserFacingWhenKnown(attempt.stream); - - attempt.sampler = this.platform.createSampler(attempt.stream); - attempt.sampler.setInterruptionListener?.((reason) => - this.interruptAttempt(attempt, reason), - ); - this.transition("awaiting_first_frame"); - await this.raceAttempt( - attempt, - this.withTimeout( - attempt.sampler.prepare(request.policy), - this.firstFrameTimeoutMs, - "preview_timeout", - "preview_invalid_frame", - ), - ); - this.transition("preview"); - this.transition("sampling"); - - const captureStartedAt = this.platform.nowMonotonicMs(); - const targetCount = request.frameCount ?? request.policy.minFrames; - const descriptors: FrameDescriptorV0[] = []; - let totalByteLength = 0; - for (let transportIndex = 0; transportIndex < targetCount; transportIndex += 1) { - const pendingFrame = attempt.sampler.sample(request.policy).then((frame) => { - if (this.active !== attempt || attempt.terminalError !== undefined || attempt.cleaned) { - frame.bytes.fill(0); - attempt.sampler?.clear(); - throw attempt.terminalError ?? new CaptureRuntimeError("interrupted"); - } - return frame; - }); - const frame = await this.raceAttempt(attempt, pendingFrame); - attempt.buffers.add(frame.bytes); - try { - assertFrameWithinPolicy(frame, request.policy); - totalByteLength += frame.bytes.byteLength; - if (totalByteLength > request.policy.maxTotalBytes) { - throw new CaptureRuntimeError("artifact_limit"); - } - const frameDigestSha256 = await this.raceAttempt(attempt, sha256Rgba8(frame)); - if (request.inspectTransientFrame !== undefined) { - try { - await this.raceAttempt(attempt, Promise.resolve(request.inspectTransientFrame(frame))); - } catch { - if (attempt.terminalError !== undefined) throw attempt.terminalError; - throw new CaptureRuntimeError("quality_callback_failed"); - } - } - const offset = Math.trunc(this.platform.nowMonotonicMs() - captureStartedAt); - if (!Number.isSafeInteger(offset)) throw new CaptureRuntimeError("artifact_limit"); - descriptors.push({ - transportIndex, - width: frame.width, - height: frame.height, - encoding: "rgba8", - byteLength: frame.bytes.byteLength, - frameDigestSha256, - captureOffsetMs: Math.max(0, offset), - }); - } catch (error) { - if (error instanceof CaptureRuntimeError) throw error; - if (error instanceof RangeError) throw new CaptureRuntimeError("artifact_limit"); - throw new CaptureRuntimeError("preview_invalid_frame"); - } finally { - frame.bytes.fill(0); - attempt.buffers.delete(frame.bytes); - attempt.sampler.clear(); - } - } - - const bundle = await this.raceAttempt( - attempt, - buildFrameBundle({ - sessionId: request.sessionId, - policy: request.policy, - accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, - nonceDigestSha256: request.nonceDigestSha256, - frames: descriptors, - }), - ); - this.transition("artifact_ready"); - this.finishAttempt(attempt); - return bundle; - } catch (error) { - const safeError = - attempt.terminalError ?? - (error instanceof CaptureRuntimeError ? error : classifyCameraError(error)); - if (!attempt.cleaned) { - this.transition(terminalStateFor(safeError.code)); - this.finishAttempt(attempt); - } - throw safeError; - } - } - - cancel(): void { - if (this.active !== undefined) this.interruptAttempt(this.active, "cancel"); - } - - unmount(): void { - if (this.active !== undefined) this.interruptAttempt(this.active, "unmount"); - } - - private validateRequest(request: CaptureRequest): CaptureRuntimeError | undefined { - if (!request.entry.userActivated) return new CaptureRuntimeError("user_activation_required"); - if ( - !request.entry.secureTopLevelContextApproved || - !Number.isSafeInteger(request.entry.iosMajor) || - request.entry.iosMajor < 18 || - (request.entry.browser !== "safari" && request.entry.browser !== "chrome") - ) { - return new CaptureRuntimeError("unsupported_context"); - } - if (!request.entry.prfReady) return new CaptureRuntimeError("prf_not_ready"); - if ( - request.policy.dataMode !== "metadata_only" || - validateSimulationCapturePolicyV0(request.policy).length > 0 - ) { - return new CaptureRuntimeError("artifact_limit"); - } - const expiresAt = Date.parse(request.policy.expiresAt); - if (!Number.isFinite(expiresAt) || expiresAt <= this.platform.nowEpochMs()) { - return new CaptureRuntimeError("session_expired"); - } - const integerLimits = [ - request.policy.minFrames, - request.policy.maxFrames, - request.policy.maxWidth, - request.policy.maxHeight, - request.policy.maxFrameBytes, - request.policy.maxTotalBytes, - ]; - if ( - integerLimits.some((value) => !Number.isSafeInteger(value)) || - request.policy.maxFrameBytes < 4 || - request.policy.maxTotalBytes < request.policy.minFrames * 4 - ) { - return new CaptureRuntimeError("artifact_limit"); - } - if ( - !request.sessionId || - !isHexSha256(request.accountPublicMaterialDigestSha256) || - !isHexSha256(request.nonceDigestSha256) - ) { - return new CaptureRuntimeError("artifact_limit"); - } - const frameCount = request.frameCount ?? request.policy.minFrames; - if ( - !Number.isSafeInteger(frameCount) || - frameCount < request.policy.minFrames || - frameCount > request.policy.maxFrames - ) { - return new CaptureRuntimeError("artifact_limit"); - } - return undefined; - } - - private raceAttempt(attempt: ActiveAttempt, operation: Promise): Promise { - return Promise.race([operation, attempt.interrupted]); - } - - private withTimeout( - operation: Promise, - delayMs: number, - timeoutCode: CaptureFailureCode, - rejectionCode?: CaptureFailureCode, - ): Promise { - return new Promise((resolve, reject) => { - const timer = this.platform.setTimer( - () => reject(new CaptureRuntimeError(timeoutCode)), - delayMs, - ); - operation.then( - (value) => { - this.platform.clearTimer(timer); - resolve(value); - }, - (error: unknown) => { - this.platform.clearTimer(timer); - if (rejectionCode !== undefined) reject(new CaptureRuntimeError(rejectionCode)); - else if (error instanceof CaptureRuntimeError) reject(error); - else reject(new CaptureRuntimeError("unknown")); - }, - ); - }); - } - - private bindTrackInterruptions(attempt: ActiveAttempt): void { - if (attempt.stream === undefined) return; - for (const track of attempt.stream.getTracks()) { - const muted = () => this.interruptAttempt(attempt, "track_muted"); - const ended = () => this.interruptAttempt(attempt, "track_ended"); - track.addEventListener?.("mute", muted); - track.addEventListener?.("ended", ended); - attempt.cleanupCallbacks.push(() => { - track.removeEventListener?.("mute", muted); - track.removeEventListener?.("ended", ended); - }); - } - } - - private interruptAttempt(attempt: ActiveAttempt, reason: CaptureInterruptionReason): void { - if (this.active !== attempt || attempt.cleaned) return; - const error = new CaptureRuntimeError( - reason === "session_expired" ? "session_expired" : "interrupted", - ); - attempt.terminalError = error; - this.transition(reason === "session_expired" ? "expired" : "interrupted"); - this.finishAttempt(attempt); - attempt.rejectInterruption(error); - } - - private finishAttempt(attempt: ActiveAttempt): void { - if (attempt.cleaned) return; - attempt.cleaned = true; - this.transition("cleaning_up"); - if (attempt.expiryTimer !== undefined) this.platform.clearTimer(attempt.expiryTimer); - for (const callback of attempt.cleanupCallbacks.splice(0)) { - try { - callback(); - } catch { - // Cleanup remains best effort and emits no underlying object. - } - } - for (const buffer of attempt.buffers) buffer.fill(0); - attempt.buffers.clear(); - try { - attempt.sampler?.clear(); - } catch { - // Canvas clearing remains best effort. - } - try { - attempt.sampler?.dispose(); - } catch { - // Preview detachment remains best effort. - } - if (attempt.stream !== undefined) stopStream(attempt.stream); - if (this.active === attempt) this.active = undefined; - this.transition("complete"); - } - - private transition(next: CaptureState): void { - this.stateValue = reduceCaptureState(this.stateValue, next); - try { - this.options.onStateChange?.(next); - } catch { - // Observers are metadata-only and cannot prevent resource cleanup. - } - } -} diff --git a/packages/frame-capture/src/state.ts b/packages/frame-capture/src/state.ts deleted file mode 100644 index 3f3a88d..0000000 --- a/packages/frame-capture/src/state.ts +++ /dev/null @@ -1,46 +0,0 @@ -import type { CaptureState } from "./types"; - -const TRANSITIONS: Readonly> = { - idle: ["permission_request", "sampling", "failed", "expired"], - permission_request: [ - "permission_denied", - "camera_unavailable", - "camera_busy", - "camera_restricted", - "acquiring", - "interrupted", - "expired", - "failed", - ], - permission_denied: ["cleaning_up"], - camera_unavailable: ["cleaning_up"], - camera_busy: ["cleaning_up"], - camera_restricted: ["cleaning_up"], - acquiring: [ - "camera_unavailable", - "awaiting_first_frame", - "interrupted", - "expired", - "failed", - ], - awaiting_first_frame: ["preview", "interrupted", "expired", "failed"], - preview: ["sampling", "interrupted", "expired", "failed"], - sampling: ["artifact_ready", "interrupted", "expired", "failed"], - artifact_ready: ["cleaning_up"], - interrupted: ["cleaning_up"], - expired: ["cleaning_up"], - failed: ["cleaning_up"], - cleaning_up: ["complete"], - complete: ["permission_request", "sampling", "failed", "expired"], -}; - -export function isCaptureTransitionAllowed(from: CaptureState, to: CaptureState): boolean { - return TRANSITIONS[from].includes(to); -} - -export function reduceCaptureState(from: CaptureState, to: CaptureState): CaptureState { - if (!isCaptureTransitionAllowed(from, to)) { - throw new Error(`Invalid capture state transition: ${from} -> ${to}`); - } - return to; -} diff --git a/packages/frame-capture/src/types.ts b/packages/frame-capture/src/types.ts deleted file mode 100644 index bc64b90..0000000 --- a/packages/frame-capture/src/types.ts +++ /dev/null @@ -1,142 +0,0 @@ -import type { - FrameBundleV0, - HexSha256, - SimulationCapturePolicyV0, -} from "../../contracts/src"; - -export const CAPTURE_STATES = [ - "idle", - "permission_request", - "permission_denied", - "camera_unavailable", - "camera_busy", - "camera_restricted", - "acquiring", - "awaiting_first_frame", - "preview", - "sampling", - "artifact_ready", - "interrupted", - "expired", - "failed", - "cleaning_up", - "complete", -] as const; - -export type CaptureState = (typeof CAPTURE_STATES)[number]; - -export type CaptureFailureCode = - | "unsupported_context" - | "prf_not_ready" - | "user_activation_required" - | "permission_denied" - | "camera_unavailable" - | "camera_busy" - | "camera_restricted" - | "camera_unsupported" - | "non_user_facing_camera" - | "constraints_unsatisfied" - | "acquisition_aborted" - | "permission_timeout" - | "preview_timeout" - | "preview_invalid_frame" - | "interrupted" - | "session_expired" - | "capture_in_progress" - | "artifact_limit" - | "quality_callback_failed" - | "unknown"; - -export type CaptureInterruptionReason = - | "cancel" - | "visibility_hidden" - | "pagehide" - | "beforeunload" - | "orientation_change" - | "track_muted" - | "track_ended" - | "session_expired" - | "unmount"; - -/** W02/W03-owned results must be supplied, not recomputed from the user agent here. */ -export interface ApprovedCaptureEntry { - readonly userActivated: boolean; - readonly secureTopLevelContextApproved: boolean; - readonly prfReady: boolean; - readonly iosMajor: number; - readonly browser: "safari" | "chrome"; -} - -export interface CaptureRequest { - readonly entry: ApprovedCaptureEntry; - readonly policy: SimulationCapturePolicyV0; - readonly sessionId: string; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly nonceDigestSha256: HexSha256; - readonly frameCount?: number; - /** Runs synchronously in the capture lifecycle. The bytes are cleared after it returns. */ - readonly inspectTransientFrame?: TransientFrameInspector; -} - -export interface TransientRgba8Frame { - readonly width: number; - readonly height: number; - readonly bytes: Uint8ClampedArray; -} - -export type TransientFrameInspector = ( - frame: Readonly, -) => void | Promise; - -export interface OwnedMediaTrack { - stop(): void; - getSettings?(): { readonly facingMode?: string }; - addEventListener?(type: "mute" | "ended", listener: () => void): void; - removeEventListener?(type: "mute" | "ended", listener: () => void): void; -} - -export interface OwnedMediaStream { - getTracks(): readonly OwnedMediaTrack[]; -} - -export interface FrameSampler { - prepare(policy: SimulationCapturePolicyV0): Promise; - sample(policy: SimulationCapturePolicyV0): Promise; - setInterruptionListener?(listener: (reason: CaptureInterruptionReason) => void): void; - clear(): void; - dispose(): void; -} - -export interface CapturePlatform { - requestCamera(constraints: MediaStreamConstraints): Promise; - createSampler(stream: OwnedMediaStream): FrameSampler; - subscribeInterruptions(listener: (reason: CaptureInterruptionReason) => void): () => void; - nowMonotonicMs(): number; - nowEpochMs(): number; - setTimer(callback: () => void, delayMs: number): unknown; - clearTimer(handle: unknown): void; -} - -export interface CaptureRuntimeOptions { - readonly permissionTimeoutMs?: number; - readonly firstFrameTimeoutMs?: number; - readonly onStateChange?: (state: CaptureState) => void; -} - -export interface SyntheticFixtureRequest { - readonly testMode: true; - readonly fixtureId: string; - readonly policy: SimulationCapturePolicyV0; - readonly sessionId: string; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly nonceDigestSha256: HexSha256; - readonly frames: readonly { - readonly width: number; - readonly height: number; - readonly byteLength: number; - readonly frameDigestSha256: HexSha256; - readonly captureOffsetMs?: number; - }[]; -} - -export type CaptureArtifact = FrameBundleV0; diff --git a/packages/frame-capture/test/artifact.test.ts b/packages/frame-capture/test/artifact.test.ts deleted file mode 100644 index 95d569f..0000000 --- a/packages/frame-capture/test/artifact.test.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - SIMULATION_CAPTURE_POLICY_V0, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - validateFrameBundleV0, -} from "../../contracts/src"; -import { - buildFrameBundle, - createSyntheticFixtureBundle, - sha256Rgba8, -} from "../src"; -import { metadataPolicy, ONE_HASH, testFrame, ZERO_HASH } from "./helpers"; - -describe("deterministic metadata artifact", () => { - test("hashes exact RGBA8 bytes with a fixed vector", async () => { - expect(await sha256Rgba8(testFrame())).toBe( - "054edec1d0211f624fed0cbca9d4f9400b0e491c43742af2c5b0abebf0c990d8", - ); - }); - - test("builds a validator-clean canonical bundle with a fixed digest", async () => { - const bundle = await buildFrameBundle({ - sessionId: "session-test", - policy: metadataPolicy, - accountPublicMaterialDigestSha256: ZERO_HASH, - nonceDigestSha256: ONE_HASH, - frames: [ - { - transportIndex: 0, - width: 1, - height: 1, - encoding: "rgba8", - byteLength: 4, - frameDigestSha256: - "054edec1d0211f624fed0cbca9d4f9400b0e491c43742af2c5b0abebf0c990d8", - captureOffsetMs: 0, - }, - ], - }); - expect(await validateFrameBundleV0(bundle, metadataPolicy)).toEqual([]); - expect(bundle.artifactDigestSha256).toBe( - "d696da0c10a6849c031511df738927d6a77fe3dd85103448407c953d0b02516f", - ); - }); - - test("synthetic fixture mode is explicit and consumes descriptors only", async () => { - const policy = { - ...metadataPolicy, - version: SIMULATION_CAPTURE_POLICY_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - dataMode: "synthetic_fixture" as const, - }; - const bundle = await createSyntheticFixtureBundle({ - testMode: true, - fixtureId: "fixture-checkerboard-v1", - policy, - sessionId: "session-synthetic", - accountPublicMaterialDigestSha256: ZERO_HASH, - nonceDigestSha256: ONE_HASH, - frames: [ - { - width: 1, - height: 1, - byteLength: 4, - frameDigestSha256: ZERO_HASH, - }, - ], - }); - expect(bundle.dataMode).toBe("synthetic_fixture"); - expect(bundle.syntheticFixtureId).toBe("fixture-checkerboard-v1"); - expect(Object.keys(bundle.frames[0] ?? {})).not.toContain("bytes"); - }); -}); diff --git a/packages/frame-capture/test/browser-platform.test.ts b/packages/frame-capture/test/browser-platform.test.ts deleted file mode 100644 index 2f251fa..0000000 --- a/packages/frame-capture/test/browser-platform.test.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { boundedRgbaDimensions } from "../src"; -import { metadataPolicy } from "./helpers"; - -describe("browser frame geometry", () => { - test("deterministically preserves aspect ratio within dimensions and RGBA8 bytes", () => { - const dimensions = boundedRgbaDimensions(1920, 1080, { - ...metadataPolicy, - maxWidth: 640, - maxHeight: 640, - maxFrameBytes: 640 * 360 * 4, - }); - expect(dimensions).toEqual({ width: 640, height: 360 }); - expect(dimensions.width * dimensions.height * 4).toBeLessThanOrEqual(640 * 360 * 4); - }); - - test("uses sampled source geometry and rejects missing intrinsic dimensions", () => { - expect(() => boundedRgbaDimensions(0, 1080, metadataPolicy)).toThrow(RangeError); - expect( - boundedRgbaDimensions(4, 4, { ...metadataPolicy, maxFrameBytes: 16 }), - ).toEqual({ width: 2, height: 2 }); - }); -}); diff --git a/packages/frame-capture/test/helpers.ts b/packages/frame-capture/test/helpers.ts deleted file mode 100644 index aedfd1b..0000000 --- a/packages/frame-capture/test/helpers.ts +++ /dev/null @@ -1,224 +0,0 @@ -import { - SIMULATION_CAPTURE_POLICY_V0, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - type SimulationCapturePolicyV0, -} from "../../contracts/src"; -import type { - CaptureInterruptionReason, - CapturePlatform, - CaptureRequest, - FrameSampler, - OwnedMediaStream, - OwnedMediaTrack, - TransientRgba8Frame, -} from "../src"; - -export const ZERO_HASH = "0".repeat(64); -export const ONE_HASH = "1".repeat(64); - -export const metadataPolicy: SimulationCapturePolicyV0 = { - version: SIMULATION_CAPTURE_POLICY_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - policyId: "capture-policy-test", - dataMode: "metadata_only", - encoding: "rgba8", - minFrames: 1, - maxFrames: 4, - maxWidth: 4, - maxHeight: 4, - maxFrameBytes: 64, - maxTotalBytes: 256, - captureOffsetsAreDiagnosticOnly: true, - arrayOrderHasBiometricMeaning: false, - qualityPolicyId: "quality-policy-test", - expiresAt: "2030-01-01T00:00:00.000Z", -}; - -export class FakeTrack implements OwnedMediaTrack { - stopCount = 0; - facingMode?: string; - settingsError?: unknown; - private readonly listeners = new Map void>>(); - - stop(): void { - this.stopCount += 1; - } - - getSettings(): { readonly facingMode?: string } { - if (this.settingsError !== undefined) throw this.settingsError; - return this.facingMode === undefined ? {} : { facingMode: this.facingMode }; - } - - addEventListener(type: "mute" | "ended", listener: () => void): void { - const current = this.listeners.get(type) ?? new Set(); - current.add(listener); - this.listeners.set(type, current); - } - - removeEventListener(type: "mute" | "ended", listener: () => void): void { - this.listeners.get(type)?.delete(listener); - } - - emit(type: "mute" | "ended"): void { - for (const listener of this.listeners.get(type) ?? []) listener(); - } -} - -export class FakeStream implements OwnedMediaStream { - readonly tracks = [new FakeTrack(), new FakeTrack()]; - - getTracks(): readonly FakeTrack[] { - return this.tracks; - } -} - -export class FakeSampler implements FrameSampler { - prepareResult: Promise = Promise.resolve(); - frames: TransientRgba8Frame[] = []; - sampleOverride?: () => Promise; - sampleCount = 0; - clearCount = 0; - disposeCount = 0; - interruptionListener?: (reason: CaptureInterruptionReason) => void; - - prepare(): Promise { - return this.prepareResult; - } - - sample(): Promise { - this.sampleCount += 1; - if (this.sampleOverride !== undefined) return this.sampleOverride(); - const frame = this.frames.shift(); - if (frame === undefined) return Promise.reject(new Error("no synthetic test frame")); - return Promise.resolve(frame); - } - - setInterruptionListener(listener: (reason: CaptureInterruptionReason) => void): void { - this.interruptionListener = listener; - } - - clear(): void { - this.clearCount += 1; - } - - dispose(): void { - this.disposeCount += 1; - } -} - -export interface Deferred { - readonly promise: Promise; - resolve(value: T): void; - reject(error: unknown): void; -} - -export function deferred(): Deferred { - let resolve!: (value: T) => void; - let reject!: (error: unknown) => void; - const promise = new Promise((yes, no) => { - resolve = yes; - reject = no; - }); - return { promise, resolve, reject }; -} - -export class FakePlatform implements CapturePlatform { - readonly stream = new FakeStream(); - readonly sampler = new FakeSampler(); - requestResult: Promise = Promise.resolve(this.stream); - requestCount = 0; - constraints?: MediaStreamConstraints; - interruptionListener?: (reason: CaptureInterruptionReason) => void; - monotonic = 100; - epoch = Date.parse("2026-09-02T12:00:00.000Z"); - private nextTimer = 0; - readonly timers = new Map void; readonly delay: number }>(); - - requestCamera(constraints: MediaStreamConstraints): Promise { - this.requestCount += 1; - this.constraints = constraints; - return this.requestResult; - } - - createSampler(): FrameSampler { - return this.sampler; - } - - subscribeInterruptions(listener: (reason: CaptureInterruptionReason) => void): () => void { - this.interruptionListener = listener; - return () => { - if (this.interruptionListener === listener) this.interruptionListener = undefined; - }; - } - - nowMonotonicMs(): number { - return this.monotonic++; - } - - nowEpochMs(): number { - return this.epoch; - } - - setTimer(callback: () => void, delay: number): number { - const handle = ++this.nextTimer; - this.timers.set(handle, { callback, delay }); - return handle; - } - - clearTimer(handle: unknown): void { - this.timers.delete(handle as number); - } - - emit(reason: CaptureInterruptionReason): void { - this.interruptionListener?.(reason); - } - - fireShortestTimer(): void { - const entry = [...this.timers.entries()].sort((left, right) => left[1].delay - right[1].delay)[0]; - if (entry !== undefined) { - this.timers.delete(entry[0]); - entry[1].callback(); - } - } - - fireLongestTimer(): void { - const entry = [...this.timers.entries()].sort((left, right) => right[1].delay - left[1].delay)[0]; - if (entry !== undefined) { - this.timers.delete(entry[0]); - entry[1].callback(); - } - } -} - -export function makeRequest(overrides: Partial = {}): CaptureRequest { - return { - entry: { - userActivated: true, - secureTopLevelContextApproved: true, - prfReady: true, - iosMajor: 18, - browser: "safari" as const, - }, - policy: metadataPolicy, - sessionId: "session-test", - accountPublicMaterialDigestSha256: ZERO_HASH, - nonceDigestSha256: ONE_HASH, - ...overrides, - }; -} - -export function testFrame(bytes = [0, 1, 2, 3]): TransientRgba8Frame { - return { width: 1, height: 1, bytes: new Uint8ClampedArray(bytes) }; -} - -export async function nextTask(): Promise { - await Promise.resolve(); - await Promise.resolve(); -} - -export async function waitUntil(predicate: () => boolean): Promise { - for (let index = 0; index < 20 && !predicate(); index += 1) await nextTask(); - if (!predicate()) throw new Error("Synthetic lifecycle did not reach the expected state"); -} diff --git a/packages/frame-capture/test/privacy.test.ts b/packages/frame-capture/test/privacy.test.ts deleted file mode 100644 index b916ad5..0000000 --- a/packages/frame-capture/test/privacy.test.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { afterEach, describe, expect, test } from "bun:test"; -import { readdir, readFile } from "node:fs/promises"; -import { join } from "node:path"; -import { MetadataOnlyCaptureRuntime } from "../src"; -import { FakePlatform, makeRequest, testFrame } from "./helpers"; - -const replacedDescriptors = new Map(); - -function installSentinel(name: string, value: unknown): void { - replacedDescriptors.set(name, Object.getOwnPropertyDescriptor(globalThis, name)); - Object.defineProperty(globalThis, name, { configurable: true, writable: true, value }); -} - -afterEach(() => { - for (const [name, descriptor] of replacedDescriptors) { - if (descriptor === undefined) Reflect.deleteProperty(globalThis, name); - else Object.defineProperty(globalThis, name, descriptor); - } - replacedDescriptors.clear(); -}); - -describe("camera-byte privacy boundary", () => { - test("touches no network or persistent-storage API during capture", async () => { - const touched: string[] = []; - installSentinel("fetch", () => touched.push("fetch")); - installSentinel("XMLHttpRequest", class { - constructor() { - touched.push("XMLHttpRequest"); - } - }); - installSentinel("WebSocket", class { - constructor() { - touched.push("WebSocket"); - } - }); - installSentinel("navigator", { - ...navigator, - sendBeacon: () => { - touched.push("sendBeacon"); - return true; - }, - }); - installSentinel("caches", { - open: () => { - touched.push("caches.open"); - return Promise.resolve(undefined); - }, - }); - for (const name of ["localStorage", "sessionStorage", "indexedDB"]) { - replacedDescriptors.set(name, Object.getOwnPropertyDescriptor(globalThis, name)); - Object.defineProperty(globalThis, name, { - configurable: true, - get: () => { - touched.push(name); - return undefined; - }, - }); - } - - const platform = new FakePlatform(); - const frame = testFrame([211, 173, 199, 241]); - platform.sampler.frames.push(frame); - const artifact = await new MetadataOnlyCaptureRuntime(platform).capture(makeRequest()); - - expect(touched).toEqual([]); - expect(frame.bytes).toEqual(new Uint8ClampedArray(4)); - expect(JSON.stringify(artifact)).not.toContain("211,173,199,241"); - expect(Object.values(artifact.frames[0] ?? {}).some(ArrayBuffer.isView)).toBe(false); - }); - - test("runtime source contains no media recorder, upload, storage, URL, or logging path", async () => { - const sourceDirectory = join(import.meta.dir, "../src"); - const files = (await readdir(sourceDirectory)).filter((name) => name.endsWith(".ts")); - const source = ( - await Promise.all(files.map((name) => readFile(join(sourceDirectory, name), "utf8"))) - ).join("\n"); - const forbidden = [ - "MediaRecorder", - "Blob", - "FileReader", - "XMLHttpRequest", - "WebSocket", - "sendBeacon", - "localStorage", - "sessionStorage", - "indexedDB", - "caches.open", - "toDataURL", - "toBlob", - "createObjectURL", - "console.", - ]; - for (const token of forbidden) expect(source).not.toContain(token); - expect(source).not.toMatch(/\bfetch\s*\(/); - }); - - test("safe errors do not copy arbitrary camera error fields", async () => { - const platform = new FakePlatform(); - platform.requestResult = Promise.reject({ - name: "NotReadableError", - pixels: [211, 173, 199, 241], - dataUrl: "data:image/private", - }); - try { - await new MetadataOnlyCaptureRuntime(platform).capture(makeRequest()); - throw new Error("expected rejection"); - } catch (error) { - expect(JSON.stringify(error)).not.toContain("211"); - expect(String(error)).not.toContain("data:image"); - } - }); -}); diff --git a/packages/frame-capture/test/runtime.test.ts b/packages/frame-capture/test/runtime.test.ts deleted file mode 100644 index 224233f..0000000 --- a/packages/frame-capture/test/runtime.test.ts +++ /dev/null @@ -1,338 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - CaptureRuntimeError, - MetadataOnlyCaptureRuntime, - type CaptureFailureCode, -} from "../src"; -import { - deferred, - FakePlatform, - FakeStream, - makeRequest, - metadataPolicy, - nextTask, - testFrame, - waitUntil, -} from "./helpers"; - -describe("metadata-only capture runtime", () => { - test("requires iOS 18+, approved top-level context, user action, and PRF before camera", async () => { - const rejectedEntries = [ - { userActivated: false }, - { secureTopLevelContextApproved: false }, - { prfReady: false }, - { iosMajor: 17 }, - ]; - for (const override of rejectedEntries) { - const platform = new FakePlatform(); - const runtime = new MetadataOnlyCaptureRuntime(platform); - await expect( - runtime.capture( - makeRequest({ entry: { ...makeRequest().entry, ...override } }), - ), - ).rejects.toBeInstanceOf(CaptureRuntimeError); - expect(platform.requestCount).toBe(0); - expect(runtime.state).toBe("complete"); - } - }); - - test("uses W02's frozen Chrome product-cell name", async () => { - const platform = new FakePlatform(); - platform.sampler.frames.push(testFrame()); - const runtime = new MetadataOnlyCaptureRuntime(platform); - await expect( - runtime.capture( - makeRequest({ entry: { ...makeRequest().entry, browser: "chrome" } }), - ), - ).resolves.toMatchObject({ dataMode: "metadata_only" }); - expect(platform.requestCount).toBe(1); - }); - - test("rejects an explicitly non-user-facing camera and leaves unknown settings non-assertive", async () => { - const rearPlatform = new FakePlatform(); - const rearTrack = rearPlatform.stream.tracks[0]; - if (rearTrack !== undefined) rearTrack.facingMode = "environment"; - const rearRuntime = new MetadataOnlyCaptureRuntime(rearPlatform); - await expect(rearRuntime.capture(makeRequest())).rejects.toMatchObject({ - code: "non_user_facing_camera", - }); - expect(rearPlatform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); - expect(rearPlatform.sampler.disposeCount).toBe(0); - - const unknownPlatform = new FakePlatform(); - const unknownTrack = unknownPlatform.stream.tracks[0]; - if (unknownTrack !== undefined) unknownTrack.facingMode = "vendor-unknown"; - const unreadableTrack = unknownPlatform.stream.tracks[1]; - if (unreadableTrack !== undefined) unreadableTrack.settingsError = new Error("unreadable"); - unknownPlatform.sampler.frames.push(testFrame()); - await expect( - new MetadataOnlyCaptureRuntime(unknownPlatform).capture(makeRequest()), - ).resolves.toMatchObject({ dataMode: "metadata_only" }); - }); - - test("acquires once, samples one-to-four frames, emits only descriptors, and cleans up", async () => { - const platform = new FakePlatform(); - const first = testFrame([0, 1, 2, 3]); - const second = testFrame([4, 5, 6, 7]); - platform.sampler.frames.push(first, second); - const states: string[] = []; - const inspected: Uint8ClampedArray[] = []; - const runtime = new MetadataOnlyCaptureRuntime(platform, { - onStateChange: (state) => states.push(state), - }); - const bundle = await runtime.capture( - makeRequest({ - frameCount: 2, - inspectTransientFrame: (frame) => { - inspected.push(frame.bytes); - }, - }), - ); - - expect(platform.requestCount).toBe(1); - expect(platform.constraints).toEqual({ - audio: false, - video: { facingMode: { ideal: "user" } }, - }); - expect(bundle.frames).toHaveLength(2); - expect(bundle.frames.map((frame) => frame.transportIndex)).toEqual([0, 1]); - expect(bundle.frames.map((frame) => frame.captureOffsetMs)).toEqual([1, 2]); - expect(bundle.frames.every((frame) => frame.encoding === "rgba8")).toBe(true); - expect(JSON.stringify(bundle)).not.toContain("bytes"); - expect(first.bytes.every((byte) => byte === 0)).toBe(true); - expect(second.bytes.every((byte) => byte === 0)).toBe(true); - expect(inspected.every((bytes) => bytes.every((byte) => byte === 0))).toBe(true); - expect(platform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); - expect(platform.sampler.disposeCount).toBe(1); - expect(states).toEqual([ - "permission_request", - "acquiring", - "awaiting_first_frame", - "preview", - "sampling", - "artifact_ready", - "cleaning_up", - "complete", - ]); - }); - - test("tombstones a cancelled permission request and stops its late stream", async () => { - const platform = new FakePlatform(); - const camera = deferred(); - platform.requestResult = camera.promise; - const runtime = new MetadataOnlyCaptureRuntime(platform); - const capture = runtime.capture(makeRequest()); - await nextTask(); - runtime.cancel(); - await expect(capture).rejects.toMatchObject({ code: "interrupted" }); - const lateStream = new FakeStream(); - camera.resolve(lateStream); - await nextTask(); - expect(lateStream.tracks.every((track) => track.stopCount === 1)).toBe(true); - expect(platform.sampler.disposeCount).toBe(0); - expect(runtime.state).toBe("complete"); - }); - - test("classifies acquisition errors without retaining underlying details", async () => { - const cases: readonly [string, CaptureFailureCode][] = [ - ["NotAllowedError", "permission_denied"], - ["NotFoundError", "camera_unavailable"], - ["NotReadableError", "camera_busy"], - ["SecurityError", "camera_restricted"], - ["OverconstrainedError", "constraints_unsatisfied"], - ["AbortError", "acquisition_aborted"], - ["NotSupportedError", "camera_unsupported"], - ["UnexpectedPrivateError", "unknown"], - ]; - for (const [name, code] of cases) { - const platform = new FakePlatform(); - platform.requestResult = Promise.reject({ name, secret: "raw-camera-secret" }); - const runtime = new MetadataOnlyCaptureRuntime(platform); - try { - await runtime.capture(makeRequest()); - throw new Error("expected capture rejection"); - } catch (error) { - expect(error).toBeInstanceOf(CaptureRuntimeError); - expect((error as CaptureRuntimeError).code).toBe(code); - expect(String(error)).not.toContain("raw-camera-secret"); - } - expect(runtime.state).toBe("complete"); - } - }); - - test("classifies a hostile throwing error-name getter as unknown", async () => { - const platform = new FakePlatform(); - const hostile = Object.defineProperty({}, "name", { - get(): never { - throw new Error("hostile getter detail"); - }, - }); - platform.requestResult = Promise.reject(hostile); - await expect( - new MetadataOnlyCaptureRuntime(platform).capture(makeRequest()), - ).rejects.toMatchObject({ code: "unknown" }); - expect(platform.requestCount).toBe(1); - }); - - test("first-frame watchdog stops all tracks and clears the sampler", async () => { - const platform = new FakePlatform(); - platform.sampler.prepareResult = new Promise(() => undefined); - const runtime = new MetadataOnlyCaptureRuntime(platform, { firstFrameTimeoutMs: 50 }); - const capture = runtime.capture(makeRequest()); - await waitUntil(() => runtime.state === "awaiting_first_frame"); - platform.fireShortestTimer(); - await expect(capture).rejects.toMatchObject({ code: "preview_timeout" }); - expect(platform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); - expect(platform.sampler.clearCount).toBeGreaterThan(0); - expect(platform.sampler.disposeCount).toBe(1); - }); - - test("permission timeout tombstones and clears a late stream", async () => { - const platform = new FakePlatform(); - const camera = deferred(); - platform.requestResult = camera.promise; - const runtime = new MetadataOnlyCaptureRuntime(platform, { permissionTimeoutMs: 50 }); - const capture = runtime.capture(makeRequest()); - await waitUntil(() => platform.requestCount === 1); - platform.fireShortestTimer(); - await expect(capture).rejects.toMatchObject({ code: "permission_timeout" }); - const lateStream = new FakeStream(); - camera.resolve(lateStream); - await nextTask(); - expect(lateStream.tracks.every((track) => track.stopCount === 1)).toBe(true); - }); - - test("state observers cannot prevent cleanup", async () => { - const platform = new FakePlatform(); - platform.sampler.frames.push(testFrame()); - const runtime = new MetadataOnlyCaptureRuntime(platform, { - onStateChange: () => { - throw new Error("observer failure"); - }, - }); - await expect(runtime.capture(makeRequest())).resolves.toMatchObject({ - dataMode: "metadata_only", - }); - expect(platform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); - expect(platform.sampler.disposeCount).toBe(1); - }); - - test("every observable interruption invalidates the attempt and releases resources", async () => { - const reasons = [ - "visibility_hidden", - "pagehide", - "beforeunload", - "orientation_change", - "unmount", - ] as const; - for (const reason of reasons) { - const platform = new FakePlatform(); - const pendingFrame = deferred>(); - platform.sampler.sampleOverride = () => pendingFrame.promise; - const runtime = new MetadataOnlyCaptureRuntime(platform); - const capture = runtime.capture(makeRequest()); - await waitUntil(() => platform.sampler.sampleCount === 1); - if (reason === "unmount") runtime.unmount(); - else platform.emit(reason); - await expect(capture).rejects.toMatchObject({ code: "interrupted" }); - expect(platform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); - expect(platform.sampler.disposeCount).toBe(1); - } - }); - - test("clears a sampled frame that resolves after interruption", async () => { - const platform = new FakePlatform(); - const pendingFrame = deferred>(); - platform.sampler.sampleOverride = () => pendingFrame.promise; - const runtime = new MetadataOnlyCaptureRuntime(platform); - const capture = runtime.capture(makeRequest()); - await waitUntil(() => platform.sampler.sampleCount === 1); - platform.emit("pagehide"); - await expect(capture).rejects.toMatchObject({ code: "interrupted" }); - const lateFrame = testFrame([20, 21, 22, 23]); - pendingFrame.resolve(lateFrame); - await nextTask(); - expect(lateFrame.bytes).toEqual(new Uint8ClampedArray(4)); - }); - - test("track mute/end and session expiry are terminal and require a fresh attempt", async () => { - for (const terminal of ["mute", "ended", "expiry"] as const) { - const platform = new FakePlatform(); - platform.sampler.sampleOverride = () => new Promise(() => undefined); - const runtime = new MetadataOnlyCaptureRuntime(platform); - const capture = runtime.capture(makeRequest()); - await waitUntil(() => platform.sampler.sampleCount === 1); - if (terminal === "expiry") platform.fireLongestTimer(); - else platform.stream.tracks[0]?.emit(terminal); - await expect(capture).rejects.toMatchObject({ - code: terminal === "expiry" ? "session_expired" : "interrupted", - }); - expect(platform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); - expect(runtime.state).toBe("complete"); - } - }); - - test("zeros an owned frame when local inspection fails", async () => { - const platform = new FakePlatform(); - const frame = testFrame([99, 98, 97, 96]); - platform.sampler.frames.push(frame); - const runtime = new MetadataOnlyCaptureRuntime(platform); - await expect( - runtime.capture( - makeRequest({ inspectTransientFrame: () => Promise.reject(new Error("private")) }), - ), - ).rejects.toMatchObject({ code: "quality_callback_failed" }); - expect(frame.bytes).toEqual(new Uint8ClampedArray(4)); - expect(platform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); - }); - - test("sanitizes decorated CaptureRuntimeError values thrown by frame inspection", async () => { - const platform = new FakePlatform(); - const frame = testFrame([211, 173, 199, 241]); - platform.sampler.frames.push(frame); - const decorated = Object.assign(new CaptureRuntimeError("unknown"), { - pixels: [211, 173, 199, 241], - copiedFrame: new Uint8ClampedArray([211, 173, 199, 241]), - }); - decorated.message = "copied pixels: 211,173,199,241"; - - try { - await new MetadataOnlyCaptureRuntime(platform).capture( - makeRequest({ - inspectTransientFrame: () => { - throw decorated; - }, - }), - ); - throw new Error("expected sanitized callback rejection"); - } catch (error) { - expect(error).toBeInstanceOf(CaptureRuntimeError); - const safeError = error as CaptureRuntimeError; - expect(safeError).not.toBe(decorated); - expect(safeError.code).toBe("quality_callback_failed"); - expect(safeError.message).toBe("The local capture guidance could not inspect the frame"); - expect(Object.keys(safeError).sort()).toEqual(["code", "name"]); - expect("pixels" in safeError).toBe(false); - expect("copiedFrame" in safeError).toBe(false); - expect(JSON.stringify(safeError)).not.toContain("211"); - expect(String(safeError)).not.toContain("211"); - } - expect(frame.bytes).toEqual(new Uint8ClampedArray(4)); - expect(platform.stream.tracks.every((track) => track.stopCount === 1)).toBe(true); - }); - - test("enforces frame count, dimensions, byte length, and total-byte bounds", async () => { - const invalidRequests = [ - makeRequest({ frameCount: 0 }), - makeRequest({ frameCount: 5 }), - makeRequest({ policy: { ...metadataPolicy, maxTotalBytes: 3 } }), - ]; - for (const request of invalidRequests) { - const platform = new FakePlatform(); - platform.sampler.frames.push(testFrame()); - const runtime = new MetadataOnlyCaptureRuntime(platform); - await expect(runtime.capture(request)).rejects.toMatchObject({ code: "artifact_limit" }); - expect(runtime.state).toBe("complete"); - } - }); -}); diff --git a/packages/frame-capture/test/state.test.ts b/packages/frame-capture/test/state.test.ts deleted file mode 100644 index 9c75ead..0000000 --- a/packages/frame-capture/test/state.test.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - CAPTURE_STATES, - isCaptureTransitionAllowed, - reduceCaptureState, - type CaptureState, -} from "../src"; - -describe("capture lifecycle reducer", () => { - test("contains every frozen runtime state", () => { - expect(CAPTURE_STATES).toEqual([ - "idle", - "permission_request", - "permission_denied", - "camera_unavailable", - "camera_busy", - "camera_restricted", - "acquiring", - "awaiting_first_frame", - "preview", - "sampling", - "artifact_ready", - "interrupted", - "expired", - "failed", - "cleaning_up", - "complete", - ]); - }); - - test("allows a successful metadata-only lifecycle", () => { - const path = [ - "permission_request", - "acquiring", - "awaiting_first_frame", - "preview", - "sampling", - "artifact_ready", - "cleaning_up", - "complete", - ] as const; - let state: CaptureState = "idle"; - for (const next of path) state = reduceCaptureState(state, next); - expect(state).toBe("complete"); - }); - - test("requires cleanup between terminal state and restart", () => { - expect(isCaptureTransitionAllowed("sampling", "interrupted")).toBe(true); - expect(isCaptureTransitionAllowed("interrupted", "permission_request")).toBe(false); - expect(() => reduceCaptureState("interrupted", "permission_request")).toThrow(); - expect(isCaptureTransitionAllowed("complete", "permission_request")).toBe(true); - }); -}); diff --git a/packages/staging-issuance-port/README.md b/packages/staging-issuance-port/README.md deleted file mode 100644 index 047888f..0000000 --- a/packages/staging-issuance-port/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Staging issuance port - -This package exposes the application port for simulated staging issuance. The caller supplies independently trusted request and embedded-receipt bindings. Results preserve the frozen staging-only result shapes plus stable, detail-free validation errors. - -The port cannot return a production credential or proof. diff --git a/packages/staging-issuance-port/package.json b/packages/staging-issuance-port/package.json deleted file mode 100644 index 31fabcc..0000000 --- a/packages/staging-issuance-port/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "@world-id/web-authenticator-staging-issuance-port", - "private": true, - "version": "0.0.0", - "type": "module", - "exports": { - ".": "./src/index.ts" - }, - "scripts": { - "test": "bun test test", - "lint": "eslint ." - } -} diff --git a/packages/staging-issuance-port/src/index.ts b/packages/staging-issuance-port/src/index.ts deleted file mode 100644 index c709b09..0000000 --- a/packages/staging-issuance-port/src/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { - ExpectedStagingIssuanceRequestV0, - StagingIssuanceSimulationRequestV0, - StagingIssuanceSimulationResultV0, -} from "../../contracts/src"; - -export const STAGING_ISSUANCE_ERROR_V0 = "staging_issuance_error_v0" as const; - -export type StagingIssuanceErrorReasonV0 = - | "invalid_request" - | "non_pass_receipt" - | "idempotency_conflict" - | "request_replay" - | "service_not_ready"; - -export type StagingIssuancePortResultV0 = - | StagingIssuanceSimulationResultV0 - | { - readonly kind: typeof STAGING_ISSUANCE_ERROR_V0; - readonly reasonCode: StagingIssuanceErrorReasonV0; - }; - -export interface StagingIssuanceInvocationV0 { - readonly request: unknown; - readonly expected: ExpectedStagingIssuanceRequestV0; -} - -export interface StagingIssuancePortV0 { - issue(invocation: StagingIssuanceInvocationV0): Promise; - readiness(): Readonly<{ ready: boolean; reasonCode?: "service_not_ready" }>; -} - -export type { StagingIssuanceSimulationRequestV0 }; diff --git a/packages/world-id-authenticator/README.md b/packages/world-id-authenticator/README.md deleted file mode 100644 index ff54559..0000000 --- a/packages/world-id-authenticator/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# World ID authenticator - -W03-owned after explicit `GO`. Derives the current-protocol authenticator in browser memory and exports public material only. Real staging registration remains blocked until endpoint configuration is supplied. diff --git a/playwright.integration.config.ts b/playwright.integration.config.ts index 069ae76..14b91c0 100644 --- a/playwright.integration.config.ts +++ b/playwright.integration.config.ts @@ -8,7 +8,7 @@ export default defineConfig({ retries: 0, reporter: [["list"], ["html", { outputFolder: "./playwright-report", open: "never" }]], use: { - baseURL: "http://127.0.0.1:4173", + baseURL: "http://127.0.0.1:4194", trace: "off", video: "off", screenshot: "only-on-failure", @@ -19,17 +19,17 @@ export default defineConfig({ env: { ...process.env, AUTHENTICATOR_HOST: "127.0.0.1", - PORT: "4173", - AUTHENTICATOR_PUBLIC_ORIGIN: "http://127.0.0.1:4173", - AUTHENTICATOR_LOCAL_ORIGIN: "http://localhost:4173", + PORT: "4194", + AUTHENTICATOR_PUBLIC_ORIGIN: "http://127.0.0.1:4194", + AUTHENTICATOR_LOCAL_ORIGIN: "http://localhost:4194", }, - port: 4173, + port: 4194, reuseExistingServer: false, timeout: 120_000, }, projects: [ { - name: "desktop-chromium-synthetic", + name: "desktop-chromium", use: { browserName: "chromium", viewport: { width: 393, height: 852 }, @@ -44,7 +44,7 @@ export default defineConfig({ }, }, { - name: "desktop-webkit-synthetic", + name: "desktop-webkit", use: { browserName: "webkit", viewport: { width: 393, height: 852 } }, }, ], diff --git a/services/session-gateway/README.md b/services/session-gateway/README.md deleted file mode 100644 index ac05ba8..0000000 --- a/services/session-gateway/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Staging session gateway - -This package owns the short-lived `EnrollmentSessionV2` state machine and the staging-only orchestration boundary. It accepts only `FrameBundleV0` descriptors/digests or allowlisted synthetic fixture names, selects simulator scenarios from authenticated server context, and invokes the typed `BiometricVerificationPortV0` and `StagingIssuancePortV0` interfaces with server-owned expected bindings. - -The browser handle is an HMAC-authenticated opaque capability returned in a response body. The HMAC key, Ed25519 signers, trust roots, RP request verifier, ceremony verifier, and simulator clients are required runtime dependencies; this package contains no private key material or network endpoint defaults. - -The in-memory repository retains only reviewed transaction bindings with session TTL. It never retains ceremonies, simulator signatures, or simulated credential bodies. Stable request timestamps let deterministic downstream operations be reconstructed after response loss without storing signed requests. A separate process-local, TTL-bound response cache preserves the exact immutable result for lost-response idempotent retries without writing credential bodies through the repository. Creation and per-session singleflight serialize all state mutations. Readiness requires distinct public-key material for all four staging purposes. Production mode makes every route unavailable and the exported production-boundary guard rejects simulation artifacts before outcome or authentication fields are inspected. - -Run focused proof with: - -```bash -bun test clean-start/services/session-gateway/test -bun run --cwd clean-start/services/session-gateway lint -``` diff --git a/services/session-gateway/package.json b/services/session-gateway/package.json deleted file mode 100644 index ac88c51..0000000 --- a/services/session-gateway/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "@world-id/web-authenticator-session-gateway", - "private": true, - "version": "0.0.0", - "type": "module", - "exports": { - ".": "./src/index.ts" - }, - "scripts": { - "test": "bun test test", - "lint": "tsc -p ../../tsconfig.json --noEmit" - } -} diff --git a/services/session-gateway/src/crypto.ts b/services/session-gateway/src/crypto.ts deleted file mode 100644 index 03180bd..0000000 --- a/services/session-gateway/src/crypto.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { - base64UrlToBytes, - bytesToBase64Url, - canonicalizeJsonV0, - type HexSha256, -} from "../../../packages/contracts/src"; - -export function randomOpaqueId(prefix: string, byteLength = 24): string { - const bytes = crypto.getRandomValues(new Uint8Array(byteLength)); - return `${prefix}_${bytesToBase64Url(bytes)}`; -} - -export function randomNonce(): string { - return bytesToBase64Url(crypto.getRandomValues(new Uint8Array(32))); -} - -export async function sha256Text(value: string): Promise { - const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value)); - return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join(""); -} - -interface HandlePayloadV0 { - readonly v: 1; - readonly sessionId: string; - readonly rpId: string; - readonly origin: string; - readonly expiresAt: string; -} - -function timingSafeEqual(left: Uint8Array, right: Uint8Array): boolean { - let difference = left.byteLength ^ right.byteLength; - const length = Math.max(left.byteLength, right.byteLength); - for (let index = 0; index < length; index += 1) { - difference |= (left[index] ?? 0) ^ (right[index] ?? 0); - } - return difference === 0; -} - -export class OpaqueBrowserHandleCodecV0 { - constructor(private readonly key: CryptoKey) {} - - async seal(payload: Omit): Promise { - const encodedPayload = bytesToBase64Url( - new TextEncoder().encode(canonicalizeJsonV0({ v: 1, ...payload })), - ); - const signature = await crypto.subtle.sign( - "HMAC", - this.key, - new TextEncoder().encode(encodedPayload), - ); - return `${encodedPayload}.${bytesToBase64Url(new Uint8Array(signature))}`; - } - - async open(handle: string): Promise { - const parts = handle.split("."); - if (parts.length !== 2) return null; - try { - const [encodedPayload, encodedSignature] = parts as [string, string]; - const expected = new Uint8Array( - await crypto.subtle.sign("HMAC", this.key, new TextEncoder().encode(encodedPayload)), - ); - const actual = base64UrlToBytes(encodedSignature); - if (!timingSafeEqual(expected, actual)) return null; - const parsed: unknown = JSON.parse( - new TextDecoder().decode(base64UrlToBytes(encodedPayload)), - ); - if ( - typeof parsed !== "object" || - parsed === null || - Array.isArray(parsed) || - Object.keys(parsed).sort().join(",") !== "expiresAt,origin,rpId,sessionId,v" || - (parsed as Record).v !== 1 || - typeof (parsed as Record).sessionId !== "string" || - typeof (parsed as Record).rpId !== "string" || - typeof (parsed as Record).origin !== "string" || - typeof (parsed as Record).expiresAt !== "string" - ) { - return null; - } - return parsed as HandlePayloadV0; - } catch { - return null; - } - } -} - -export async function signStagingArtifactV0( - artifact: T, - signer: { readonly trustRoot: { readonly keyId: string }; sign(preimage: Uint8Array): Promise }, - preimage: (value: Record) => Uint8Array, -): Promise { - const unsigned = { - ...artifact, - authentication: { - scheme: "staging-ed25519" as const, - keyId: signer.trustRoot.keyId, - signatureBase64Url: "pending", - }, - }; - const signatureBase64Url = await signer.sign(preimage(unsigned as unknown as Record)); - return { - ...unsigned, - authentication: { ...unsigned.authentication, signatureBase64Url }, - } as T; -} - -export function bytesForBodyLimit(value: unknown): number { - try { - return new TextEncoder().encode(JSON.stringify(value)).byteLength; - } catch { - return Number.POSITIVE_INFINITY; - } -} diff --git a/services/session-gateway/src/errors.ts b/services/session-gateway/src/errors.ts deleted file mode 100644 index c26b960..0000000 --- a/services/session-gateway/src/errors.ts +++ /dev/null @@ -1,32 +0,0 @@ -export const GATEWAY_ERROR_CODES_V0 = [ - "gateway_disabled", - "invalid_request", - "body_too_large", - "unauthorized", - "origin_forbidden", - "not_found", - "expired", - "invalid_state", - "binding_mismatch", - "replay_rejected", - "artifact_invalid", - "resource_busy", -] as const; - -export type GatewayErrorCodeV0 = (typeof GATEWAY_ERROR_CODES_V0)[number]; - -export class GatewayErrorV0 extends Error { - readonly code: GatewayErrorCodeV0; - readonly httpStatus: number; - - constructor(code: GatewayErrorCodeV0, httpStatus: number) { - super(code); - this.name = "GatewayErrorV0"; - this.code = code; - this.httpStatus = httpStatus; - } - - toResponse(): { readonly code: GatewayErrorCodeV0 } { - return { code: this.code }; - } -} diff --git a/services/session-gateway/src/gateway.ts b/services/session-gateway/src/gateway.ts deleted file mode 100644 index 7569a9c..0000000 --- a/services/session-gateway/src/gateway.ts +++ /dev/null @@ -1,1037 +0,0 @@ -import { - assertSimulationArtifactAllowed, - base64UrlToBytes, - BIOMETRIC_SIMULATION_REQUEST_V0, - BIOMETRIC_SIMULATION_SCENARIOS_V0, - BIOMETRIC_SIMULATOR_AUDIENCE_V0, - BIOMETRIC_VERIFICATION_PORT_V0, - ENROLLMENT_SESSION_V2, - isEnrollmentTransitionAllowedV2, - isSimulationReceiptV0, - ISSUANCE_SIMULATION_SCENARIOS_V0, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - stagingSignaturePreimageV0, - STAGING_ISSUANCE_PORT_V0, - STAGING_ISSUANCE_SIMULATION_REQUEST_V0, - STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, - validateFrameBundleV0, - validateSimulationCapturePolicyV0, - verifyBiometricSimulationRequestV0, - verifySimulatedStagingCredentialV0, - verifySimulationReceiptV0, - verifyStagingIssuanceSimulationRequestV0, - type BiometricSimulationRequestV0, - type EnrollmentSessionStateV2, - type EnrollmentSessionV2, - type FrameBundleV0, - type HexSha256, - type SimulatedStagingCredentialV0, - type SimulationCapturePolicyV0, - type SimulationReceiptV0, - type StagingIssuanceSimulationRequestV0, -} from "../../../packages/contracts/src"; -import { SIMULATION_RECEIPT_READY_V0 } from "../../../packages/biometric-verification-port/src"; -import { STAGING_ISSUANCE_ERROR_V0 } from "../../../packages/staging-issuance-port/src"; -import { bytesForBodyLimit, OpaqueBrowserHandleCodecV0, randomNonce, randomOpaqueId, sha256Text, signStagingArtifactV0 } from "./crypto"; -import { GatewayErrorV0 } from "./errors"; -import { InMemorySessionRepositoryV0 } from "./repository"; -import type { - CreateSessionResultV0, - GatewayStatusCodeV0, - RequestContextV0, - SessionGatewayConfigV0, - SessionRepositoryV0, - SessionStatusV0, - StoredSessionV0, - SubmitCaptureResultV0, -} from "./types"; - -const TERMINAL_STATES = new Set([ - "simulated_reject", - "simulated_issuance_reject", - "simulated_credential_ready", - "cancelled", - "expired", -]); - -const RETRYABLE_CODES = new Set([ - "simulation_retry", - "simulation_unavailable", - "issuance_unavailable", -]); - -function isRecord(value: unknown): value is Record { - return typeof value === "object" && value !== null && !Array.isArray(value); -} - -function exactKeys(value: Record, expected: readonly string[]): boolean { - const actual = Object.keys(value).sort(); - const sortedExpected = [...expected].sort(); - return actual.length === sortedExpected.length && actual.every((key, index) => key === sortedExpected[index]); -} - -function nonEmpty(value: unknown): value is string { - return typeof value === "string" && value.length > 0; -} - -function hexSha256(value: unknown): value is HexSha256 { - return typeof value === "string" && /^[0-9a-f]{64}$/.test(value); -} - -interface BrowserAuthFieldsV0 { - readonly sessionId: string; - readonly browserHandle: string; -} - -export class SessionGatewayV0 { - private readonly repository: SessionRepositoryV0; - private readonly handles: OpaqueBrowserHandleCodecV0; - private readonly clock: { now(): Date }; - private readonly mutationInFlight = new Map< - string, - { - readonly kind: "passkey" | "prepare" | "capture" | "retry" | "cancel"; - readonly digest: HexSha256; - readonly result: Promise; - } - >(); - private readonly creationInFlight = new Map< - string, - { - readonly bindingDigest: HexSha256; - readonly result: Promise; - } - >(); - private readonly responseCache = new Map< - string, - { - readonly digest: HexSha256; - readonly expiresAt: string; - readonly result: SubmitCaptureResultV0; - } - >(); - private activeOperations = 0; - - constructor( - private readonly config: SessionGatewayConfigV0, - repository: SessionRepositoryV0 = new InMemorySessionRepositoryV0(), - ) { - this.repository = repository; - this.handles = new OpaqueBrowserHandleCodecV0(config.handleKey); - this.clock = config.clock ?? { now: () => new Date() }; - if ( - !Number.isSafeInteger(config.sessionTtlMs) || - config.sessionTtlMs <= 0 || - !Number.isSafeInteger(config.maxRequestBodyBytes) || - config.maxRequestBodyBytes <= 0 || - !Number.isSafeInteger(config.maxConcurrentOperations) || - config.maxConcurrentOperations <= 0 || - !Number.isSafeInteger(config.simulatorTimeoutMs) || - config.simulatorTimeoutMs <= 0 || - validateSimulationCapturePolicyV0({ - ...config.capturePolicy, - expiresAt: new Date(this.clock.now().getTime() + config.sessionTtlMs).toISOString(), - }).length > 0 - ) { - throw new GatewayErrorV0("invalid_request", 500); - } - } - - async createSession(body: unknown, context: RequestContextV0): Promise { - this.assertAvailable(); - this.assertBody(body); - if ( - !isRecord(body) || - !exactKeys(body, ["rpRequest", "accountId", "accountPublicMaterialDigestSha256", "idempotencyKey"]) || - !nonEmpty(body.accountId) || - !hexSha256(body.accountPublicMaterialDigestSha256) || - !nonEmpty(body.idempotencyKey) - ) { - throw new GatewayErrorV0("invalid_request", 400); - } - const now = this.now(); - let verified; - try { - verified = await this.config.rpRequestVerifier.verify(body.rpRequest, context, now); - } catch { - throw new GatewayErrorV0("unauthorized", 401); - } - if (verified === null) throw new GatewayErrorV0("unauthorized", 401); - if (verified.origin !== context.origin || verified.rpId !== context.rpId) { - throw new GatewayErrorV0("origin_forbidden", 403); - } - const accountId = body.accountId; - const accountPublicMaterialDigestSha256 = body.accountPublicMaterialDigestSha256; - const idempotencyKey = body.idempotencyKey; - - const prior = this.repository.findByCreationIdempotency(verified.rpId, idempotencyKey); - if (prior !== undefined) { - if ( - prior.origin !== verified.origin || - prior.returnTarget !== verified.returnTarget || - prior.session.rpRequestDigestSha256 !== verified.requestDigestSha256 || - prior.accountId !== accountId || - prior.session.accountPublicMaterialDigestSha256 !== accountPublicMaterialDigestSha256 - ) { - throw new GatewayErrorV0("binding_mismatch", 409); - } - this.expireIfNeeded(prior); - return this.createResult(prior); - } - const creationKey = `${verified.rpId}\u0000${idempotencyKey}`; - const bindingDigest = await sha256Text(JSON.stringify({ - rpId: verified.rpId, - origin: verified.origin, - returnTarget: verified.returnTarget, - rpRequestDigestSha256: verified.requestDigestSha256, - accountId, - accountPublicMaterialDigestSha256, - idempotencyKey, - })); - const active = this.creationInFlight.get(creationKey); - if (active !== undefined) { - if (active.bindingDigest !== bindingDigest) { - throw new GatewayErrorV0("binding_mismatch", 409); - } - return active.result; - } - const operation = Promise.resolve().then(async () => { - let scenarios; - try { - scenarios = await this.config.scenarioSelector.select({ - verifiedRpRequest: verified, - authenticatedServerContext: context.authenticatedServerContext, - }); - } catch { - throw new GatewayErrorV0("unauthorized", 401); - } - if ( - !BIOMETRIC_SIMULATION_SCENARIOS_V0.includes(scenarios.biometric) || - !ISSUANCE_SIMULATION_SCENARIOS_V0.includes(scenarios.issuance) - ) { - throw new GatewayErrorV0("invalid_request", 500); - } - const createdAt = now; - const expiresAt = new Date(Date.parse(now) + this.config.sessionTtlMs).toISOString(); - const session: EnrollmentSessionV2 = Object.freeze({ - version: ENROLLMENT_SESSION_V2, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - sessionId: randomOpaqueId("ses"), - rpRequestDigestSha256: verified.requestDigestSha256, - accountPublicMaterialDigestSha256, - nonceBase64Url: randomNonce(), - idempotencyKey, - biometricScenario: scenarios.biometric, - issuanceScenario: scenarios.issuance, - state: "created", - createdAt, - expiresAt, - }); - const record: StoredSessionV0 = { - session, - rpId: verified.rpId, - origin: verified.origin, - returnTarget: verified.returnTarget, - accountId, - nonceConsumed: false, - captureAttempt: 0, - statusCode: "created", - operationResults: new Map(), - operationRequestDigests: new Map(), - }; - this.repository.put(record); - this.audit(record, "session_created"); - return this.createResult(record); - }); - this.creationInFlight.set(creationKey, { bindingDigest, result: operation }); - try { - return await operation; - } finally { - this.creationInFlight.delete(creationKey); - } - } - - async completePasskey(body: unknown, context: RequestContextV0): Promise { - this.assertAvailable(); - this.assertBody(body); - if ( - !isRecord(body) || - !exactKeys(body, ["sessionId", "browserHandle", "idempotencyKey", "ceremony"]) || - !nonEmpty(body.sessionId) || - !nonEmpty(body.browserHandle) || - !nonEmpty(body.idempotencyKey) - ) { - throw new GatewayErrorV0("invalid_request", 400); - } - const record = await this.authenticate(body as unknown as BrowserAuthFieldsV0, context); - const resultKey = `passkey:${body.idempotencyKey}`; - const requestDigest = await sha256Text(JSON.stringify(body)); - const prior = record.operationResults.get(resultKey); - if (prior !== undefined) { - if (record.operationRequestDigests.get(resultKey) !== requestDigest) { - throw new GatewayErrorV0("binding_mismatch", 409); - } - return prior; - } - const boundDigest = record.operationRequestDigests.get(resultKey); - if (boundDigest !== undefined && boundDigest !== requestDigest) { - throw new GatewayErrorV0("binding_mismatch", 409); - } - return this.runSessionMutation(record, "passkey", requestDigest, async () => { - if (record.session.state !== "created") { - throw new GatewayErrorV0("invalid_state", 409); - } - let valid = false; - try { - valid = await this.config.ceremonyVerifier.verify(body.ceremony, { - sessionId: record.session.sessionId, - rpId: record.rpId, - origin: record.origin, - accountPublicMaterialDigestSha256: record.session.accountPublicMaterialDigestSha256, - now: this.now(), - }); - } catch { - valid = false; - } - if (!valid) throw new GatewayErrorV0("unauthorized", 401); - record.operationRequestDigests.set(resultKey, requestDigest); - this.transition(record, "passkey_complete", "passkey_complete"); - const result = this.status(record); - record.operationResults.set(resultKey, result); - this.audit(record, "passkey_complete"); - return result; - }); - } - - async prepareCapture(body: unknown, context: RequestContextV0): Promise { - this.assertAvailable(); - this.assertBody(body); - const fields = this.parseAuthOnly(body); - const record = await this.authenticate(fields, context); - const requestDigest = await sha256Text(JSON.stringify(body)); - return this.runSessionMutation(record, "prepare", requestDigest, async () => { - if (record.session.state !== "passkey_complete" && record.session.state !== "simulated_retry") { - throw new GatewayErrorV0("invalid_state", 409); - } - if (record.session.state === "simulated_retry") { - record.session = Object.freeze({ ...record.session, nonceBase64Url: randomNonce() }); - record.nonceConsumed = false; - record.frameBundle = undefined; - record.artifactDigestSha256 = undefined; - record.biometricRequestId = undefined; - record.biometricIdempotencyKey = undefined; - record.biometricRequestedAt = undefined; - record.receiptId = undefined; - record.issuanceRequestId = undefined; - record.issuanceIdempotencyKey = undefined; - record.issuanceRequestedAt = undefined; - } - record.captureAttempt += 1; - this.transition(record, "capture_ready", "capture_ready"); - this.audit(record, "capture_ready"); - return this.createResult(record); - }); - } - - async submitCapture(body: unknown, context: RequestContextV0): Promise { - this.assertAvailable(); - this.assertBody(body); - if ( - !isRecord(body) || - !exactKeys(body, ["sessionId", "browserHandle", "idempotencyKey", "nonceBase64Url", "frameBundle"]) || - !nonEmpty(body.sessionId) || - !nonEmpty(body.browserHandle) || - !nonEmpty(body.idempotencyKey) || - !nonEmpty(body.nonceBase64Url) - ) { - throw new GatewayErrorV0("invalid_request", 400); - } - const record = await this.authenticate(body as unknown as BrowserAuthFieldsV0, context); - const resultKey = `capture:${body.idempotencyKey}`; - const cacheKey = `${record.session.sessionId}:${resultKey}`; - const requestDigest = await sha256Text(JSON.stringify(body)); - const cached = this.cachedResponse(cacheKey, requestDigest); - if (cached !== undefined) return cached; - const prior = record.operationResults.get(resultKey); - if (prior !== undefined) { - if (record.operationRequestDigests.get(resultKey) !== requestDigest) { - throw new GatewayErrorV0("binding_mismatch", 409); - } - return prior; - } - const boundCaptureDigest = record.operationRequestDigests.get(resultKey); - if (boundCaptureDigest !== undefined && boundCaptureDigest !== requestDigest) { - throw new GatewayErrorV0("binding_mismatch", 409); - } - return this.runSessionMutation(record, "capture", requestDigest, () => this.withOperation(async () => { - if (record.nonceConsumed || body.nonceBase64Url !== record.session.nonceBase64Url) { - throw new GatewayErrorV0("replay_rejected", 409); - } - if (record.session.state !== "capture_ready") { - throw new GatewayErrorV0("invalid_state", 409); - } - record.operationRequestDigests.set(resultKey, requestDigest); - const frameBundle = body.frameBundle; - const policy = this.policyFor(record); - const validationErrors = await validateFrameBundleV0(frameBundle, policy); - if ( - validationErrors.length > 0 || - !isRecord(frameBundle) || - frameBundle.sessionId !== record.session.sessionId || - frameBundle.accountPublicMaterialDigestSha256 !== record.session.accountPublicMaterialDigestSha256 || - frameBundle.nonceDigestSha256 !== (await sha256Text(record.session.nonceBase64Url)) || - (frameBundle.dataMode === "synthetic_fixture" && - (!nonEmpty(frameBundle.syntheticFixtureId) || - !this.config.allowedSyntheticFixtureIds.includes(frameBundle.syntheticFixtureId))) - ) { - throw new GatewayErrorV0("artifact_invalid", 400); - } - record.nonceConsumed = true; - record.frameBundle = frameBundle as unknown as FrameBundleV0; - record.artifactDigestSha256 = record.frameBundle.artifactDigestSha256; - this.transition(record, "biometric_simulation_pending", "capture_ready"); - const result = await this.orchestrate(record); - record.operationResults.set(resultKey, this.status(record)); - return this.cacheResponse(cacheKey, requestDigest, record.session.expiresAt, result); - })); - } - - async retryUnavailable(body: unknown, context: RequestContextV0): Promise { - this.assertAvailable(); - this.assertBody(body); - if ( - !isRecord(body) || - !exactKeys(body, ["sessionId", "browserHandle", "idempotencyKey"]) || - !nonEmpty(body.sessionId) || - !nonEmpty(body.browserHandle) || - !nonEmpty(body.idempotencyKey) - ) { - throw new GatewayErrorV0("invalid_request", 400); - } - const record = await this.authenticate(body as unknown as BrowserAuthFieldsV0, context); - const resultKey = `retry:${body.idempotencyKey}`; - const cacheKey = `${record.session.sessionId}:${resultKey}`; - const requestDigest = await sha256Text(JSON.stringify(body)); - const cached = this.cachedResponse(cacheKey, requestDigest); - if (cached !== undefined) return cached; - const prior = record.operationResults.get(resultKey); - if (prior !== undefined) { - if (record.operationRequestDigests.get(resultKey) !== requestDigest) { - throw new GatewayErrorV0("binding_mismatch", 409); - } - return prior; - } - const boundRetryDigest = record.operationRequestDigests.get(resultKey); - if (boundRetryDigest !== undefined && boundRetryDigest !== requestDigest) { - throw new GatewayErrorV0("binding_mismatch", 409); - } - return this.runSessionMutation(record, "retry", requestDigest, () => this.withOperation(async () => { - if ( - (record.session.state !== "simulated_unavailable" && - record.session.state !== "simulated_issuance_unavailable") || - record.frameBundle === undefined - ) { - throw new GatewayErrorV0("invalid_state", 409); - } - record.operationRequestDigests.set(resultKey, requestDigest); - let retryResult: SubmitCaptureResultV0; - if (record.session.state === "simulated_unavailable") { - this.transition(record, "biometric_simulation_pending", "simulation_unavailable"); - retryResult = await this.orchestrate(record); - } else { - const receipt = await this.runBiometric(record, record.frameBundle!); - if (receipt === null || receipt.outcome !== "simulated_pass") { - retryResult = this.status(record); - } else { - this.transition(record, "issuance_simulation_pending", "issuance_unavailable"); - retryResult = await this.runIssuance( - record, - receipt as SimulationReceiptV0 & { readonly outcome: "simulated_pass" }, - ); - } - } - record.operationResults.set(resultKey, this.status(record)); - return this.cacheResponse( - cacheKey, - requestDigest, - record.session.expiresAt, - retryResult, - ); - })); - } - - async cancel(body: unknown, context: RequestContextV0): Promise { - this.assertAvailable(); - this.assertBody(body); - const fields = this.parseAuthOnly(body); - const record = await this.authenticate(fields, context); - const requestDigest = await sha256Text(JSON.stringify(body)); - return this.runSessionMutation(record, "cancel", requestDigest, async () => { - if (TERMINAL_STATES.has(record.session.state)) return this.status(record); - this.transition(record, "cancelled", "cancelled"); - record.frameBundle = undefined; - this.audit(record, "session_cancelled"); - return this.status(record); - }); - } - - async getStatus(body: unknown, context: RequestContextV0): Promise { - this.assertAvailable(); - this.assertBody(body); - return this.status(await this.authenticate(this.parseAuthOnly(body), context)); - } - - async readiness(): Promise<{ readonly ready: boolean; readonly code: "ready" | "disabled" | "dependency_unavailable" }> { - if (!this.isAvailable()) return { ready: false, code: "disabled" }; - if (!this.purposeKeyMaterialsAreDistinct()) { - return { ready: false, code: "dependency_unavailable" }; - } - const [biometric, issuance] = await Promise.all([ - this.safeReady(() => this.config.biometricClient.readiness().ready), - this.safeReady(() => this.config.issuanceClient.readiness().ready), - ]); - return biometric && issuance - ? { ready: true, code: "ready" } - : { ready: false, code: "dependency_unavailable" }; - } - - purgeExpired(): number { - const nowMs = this.clock.now().getTime(); - this.purgeResponseCache(nowMs); - return this.repository.purgeExpired(nowMs); - } - - private async orchestrate(record: StoredSessionV0): Promise { - const frameBundle = record.frameBundle; - if (frameBundle === undefined) throw new GatewayErrorV0("invalid_state", 409); - const receipt = await this.runBiometric(record, frameBundle); - if (receipt === null) { - if (this.expireDuringOperation(record)) return this.status(record); - return this.unavailable(record, "simulation_unavailable"); - } - this.audit(record, "simulation_finished", this.codeForOutcome(receipt.outcome)); - if (receipt.outcome === "simulated_reject") { - this.transition(record, "simulated_reject", "simulation_reject"); - record.frameBundle = undefined; - return this.status(record); - } - if (receipt.outcome === "simulated_retry") { - this.transition(record, "simulated_retry", "simulation_retry"); - record.frameBundle = undefined; - return this.status(record); - } - if (receipt.outcome === "simulated_unavailable") { - return this.unavailable(record, "simulation_unavailable"); - } - this.transition(record, "simulated_pass", "simulation_pass"); - this.transition(record, "issuance_simulation_pending", "simulation_pass"); - return this.runIssuance( - record, - receipt as SimulationReceiptV0 & { readonly outcome: "simulated_pass" }, - ); - } - - private async runBiometric(record: StoredSessionV0, frameBundle: FrameBundleV0): Promise { - const verificationNow = this.now(); - const nonceDigestSha256 = await sha256Text(record.session.nonceBase64Url); - record.biometricRequestId ??= randomOpaqueId("bio_req"); - record.biometricIdempotencyKey ??= `bio-${record.session.sessionId}-${record.captureAttempt}`; - record.biometricRequestedAt ??= verificationNow; - const pending: BiometricSimulationRequestV0 = { - kind: BIOMETRIC_SIMULATION_REQUEST_V0, - version: BIOMETRIC_VERIFICATION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, - requestId: record.biometricRequestId, - sessionId: record.session.sessionId, - nonceDigestSha256, - idempotencyKey: record.biometricIdempotencyKey, - accountPublicMaterialDigestSha256: record.session.accountPublicMaterialDigestSha256, - capturePolicyId: this.config.capturePolicy.policyId, - scenario: record.session.biometricScenario, - frameBundle, - requestedAt: record.biometricRequestedAt, - expiresAt: record.session.expiresAt, - authentication: { scheme: "staging-ed25519", keyId: "pending", signatureBase64Url: "pending" }, - }; - let request: BiometricSimulationRequestV0; - try { - request = await signStagingArtifactV0(pending, this.config.biometricRequestSigner, stagingSignaturePreimageV0); - } catch { - return null; - } - const expectedRequest = { - runtimeEnvironment: this.config.runtimeEnvironment, - requestId: request.requestId, - sessionId: request.sessionId, - nonceDigestSha256: request.nonceDigestSha256, - idempotencyKey: request.idempotencyKey, - accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, - capturePolicyId: request.capturePolicyId, - scenario: request.scenario, - now: verificationNow, - } as const; - if (!(await verifyBiometricSimulationRequestV0(request, expectedRequest, this.policyFor(record), this.config.biometricRequestSigner.trustRoot))) { - return null; - } - let response: unknown; - try { - response = await this.withTimeout(this.config.biometricClient.verify({ - request, - expected: expectedRequest, - capturePolicy: this.policyFor(record), - })); - } catch { - return null; - } - try { - assertSimulationArtifactAllowed(this.config.runtimeEnvironment, response); - if ( - !isRecord(response) || - !exactKeys(response, ["kind", "receipt"]) || - response.kind !== SIMULATION_RECEIPT_READY_V0 || - !isSimulationReceiptV0(response.receipt) - ) { - return null; - } - const receipt = response.receipt; - if ( - Date.parse(receipt.issuedAt) < Date.parse(request.requestedAt) || - Date.parse(receipt.expiresAt) > Date.parse(record.session.expiresAt) - ) { - return null; - } - const valid = await verifySimulationReceiptV0(receipt, { - ...expectedRequest, - receiptId: receipt.receiptId, - artifactDigestSha256: frameBundle.artifactDigestSha256, - now: this.now(), - }, this.config.biometricReceiptTrustRoot); - if (!valid) return null; - record.receiptId = receipt.receiptId; - return receipt; - } catch { - return null; - } - } - - private async runIssuance(record: StoredSessionV0, receipt: SimulationReceiptV0 & { outcome: "simulated_pass" }): Promise { - if (this.expireDuringOperation(record)) return this.status(record); - const verificationNow = this.now(); - record.issuanceRequestId ??= randomOpaqueId("iss_req"); - record.issuanceIdempotencyKey ??= `iss-${record.session.sessionId}-${record.captureAttempt}`; - record.issuanceRequestedAt ??= verificationNow; - const pending: StagingIssuanceSimulationRequestV0 = { - kind: STAGING_ISSUANCE_SIMULATION_REQUEST_V0, - version: STAGING_ISSUANCE_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - audience: STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, - requestId: record.issuanceRequestId, - sessionId: record.session.sessionId, - nonceDigestSha256: receipt.nonceDigestSha256, - idempotencyKey: record.issuanceIdempotencyKey, - accountId: record.accountId, - accountPublicMaterialDigestSha256: record.session.accountPublicMaterialDigestSha256, - biometricReceipt: receipt, - scenario: record.session.issuanceScenario, - requestedAt: record.issuanceRequestedAt, - expiresAt: record.session.expiresAt, - authentication: { scheme: "staging-ed25519", keyId: "pending", signatureBase64Url: "pending" }, - }; - let request: StagingIssuanceSimulationRequestV0; - try { - request = await signStagingArtifactV0(pending, this.config.issuanceRequestSigner, stagingSignaturePreimageV0); - } catch { - return this.issuanceUnavailable(record); - } - const expectedReceipt = { - runtimeEnvironment: this.config.runtimeEnvironment, - receiptId: receipt.receiptId, - requestId: receipt.requestId, - sessionId: receipt.sessionId, - nonceDigestSha256: receipt.nonceDigestSha256, - idempotencyKey: receipt.idempotencyKey, - accountPublicMaterialDigestSha256: receipt.accountPublicMaterialDigestSha256, - capturePolicyId: receipt.capturePolicyId, - scenario: receipt.scenario, - artifactDigestSha256: receipt.artifactDigestSha256, - now: verificationNow, - } as const; - const expectedRequest = { - runtimeEnvironment: this.config.runtimeEnvironment, - requestId: request.requestId, - sessionId: request.sessionId, - nonceDigestSha256: request.nonceDigestSha256, - idempotencyKey: request.idempotencyKey, - accountId: request.accountId, - accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, - biometricReceipt: expectedReceipt, - scenario: request.scenario, - now: verificationNow, - } as const; - if (!(await verifyStagingIssuanceSimulationRequestV0(request, expectedRequest, this.config.issuanceRequestSigner.trustRoot, this.config.biometricReceiptTrustRoot))) { - return this.issuanceUnavailable(record); - } - let response: unknown; - try { - response = await this.withTimeout(this.config.issuanceClient.issue({ - request, - expected: expectedRequest, - })); - } catch { - return this.issuanceUnavailable(record); - } - if (this.expireDuringOperation(record)) return this.status(record); - try { - assertSimulationArtifactAllowed(this.config.runtimeEnvironment, response); - if (!isRecord(response) || !nonEmpty(response.kind)) { - return this.issuanceUnavailable(record); - } - if (response.kind === STAGING_ISSUANCE_ERROR_V0) { - return this.issuanceUnavailable(record); - } - const expectedKind = record.session.issuanceScenario === "issue_success" - ? "simulated_credential_ready_v0" - : record.session.issuanceScenario === "issue_reject" - ? "simulated_issuance_rejected_v0" - : "simulated_issuance_unavailable_v0"; - if (response.kind !== expectedKind) return this.issuanceUnavailable(record); - if (response.kind === "simulated_issuance_rejected_v0") { - if ( - !exactKeys(response, ["kind", "reasonCode"]) || - response.reasonCode !== "scenario_issue_reject" - ) { - return this.issuanceUnavailable(record); - } - this.transition(record, "simulated_issuance_reject", "issuance_rejected"); - record.frameBundle = undefined; - this.audit(record, "issuance_finished", "issuance_rejected"); - return this.status(record); - } - if (response.kind === "simulated_issuance_unavailable_v0") { - if ( - !exactKeys(response, ["kind", "reasonCode"]) || - response.reasonCode !== "scenario_issue_unavailable" - ) { - return this.issuanceUnavailable(record); - } - return this.issuanceUnavailable(record); - } - if ( - response.kind !== "simulated_credential_ready_v0" || - !exactKeys(response, ["kind", "credential"]) - ) { - return this.issuanceUnavailable(record); - } - const credential = response.credential; - if ( - !isRecord(credential) || - typeof credential.issuedAt !== "string" || - typeof credential.expiresAt !== "string" || - Date.parse(credential.issuedAt) < Date.parse(request.requestedAt) || - Date.parse(credential.expiresAt) > Date.parse(record.session.expiresAt) - ) { - return this.issuanceUnavailable(record); - } - const valid = await verifySimulatedStagingCredentialV0(credential, { - runtimeEnvironment: this.config.runtimeEnvironment, - issuanceRequestId: request.requestId, - idempotencyKey: request.idempotencyKey, - nonceDigestSha256: request.nonceDigestSha256, - subjectAccountId: record.accountId, - accountPublicMaterialDigestSha256: record.session.accountPublicMaterialDigestSha256, - simulationReceiptId: receipt.receiptId, - now: this.now(), - }, this.config.simulatedCredentialTrustRoot); - if (!valid) return this.issuanceUnavailable(record); - this.transition(record, "simulated_credential_ready", "simulated_credential_ready"); - record.frameBundle = undefined; - this.audit(record, "issuance_finished", "simulated_credential_ready"); - return { - ...this.status(record), - credential: credential as unknown as SimulatedStagingCredentialV0, - }; - } catch { - return this.issuanceUnavailable(record); - } - } - - private unavailable(record: StoredSessionV0, code: "simulation_unavailable"): SubmitCaptureResultV0 { - this.transition(record, "simulated_unavailable", code); - this.audit(record, "simulation_finished", code); - return this.status(record); - } - - private issuanceUnavailable(record: StoredSessionV0): SubmitCaptureResultV0 { - this.transition(record, "simulated_issuance_unavailable", "issuance_unavailable"); - this.audit(record, "issuance_finished", "issuance_unavailable"); - return this.status(record); - } - - private expireDuringOperation(record: StoredSessionV0): boolean { - if (Date.parse(record.session.expiresAt) > this.clock.now().getTime()) return false; - this.transition(record, "expired", "expired"); - record.frameBundle = undefined; - this.purgeSessionResponses(record.session.sessionId); - this.audit(record, "session_expired"); - return true; - } - - private parseAuthOnly(body: unknown): BrowserAuthFieldsV0 { - if ( - !isRecord(body) || - !exactKeys(body, ["sessionId", "browserHandle"]) || - !nonEmpty(body.sessionId) || - !nonEmpty(body.browserHandle) - ) { - throw new GatewayErrorV0("invalid_request", 400); - } - return body as unknown as BrowserAuthFieldsV0; - } - - private async authenticate(fields: BrowserAuthFieldsV0, context: RequestContextV0): Promise { - const record = this.repository.get(fields.sessionId); - if (record === undefined) throw new GatewayErrorV0("not_found", 404); - if (context.origin !== record.origin || context.rpId !== record.rpId) { - throw new GatewayErrorV0("origin_forbidden", 403); - } - const payload = await this.handles.open(fields.browserHandle); - if ( - payload === null || - payload.sessionId !== record.session.sessionId || - payload.origin !== record.origin || - payload.rpId !== record.rpId || - payload.expiresAt !== record.session.expiresAt - ) { - throw new GatewayErrorV0("unauthorized", 401); - } - this.expireIfNeeded(record); - return record; - } - - private expireIfNeeded(record: StoredSessionV0): void { - if (Date.parse(record.session.expiresAt) > this.clock.now().getTime()) return; - if (!TERMINAL_STATES.has(record.session.state)) { - this.transition(record, "expired", "expired"); - record.frameBundle = undefined; - this.audit(record, "session_expired"); - } - this.purgeSessionResponses(record.session.sessionId); - throw new GatewayErrorV0("expired", 410); - } - - private transition(record: StoredSessionV0, next: EnrollmentSessionStateV2, code: GatewayStatusCodeV0): void { - if (!isEnrollmentTransitionAllowedV2(record.session.state, next)) { - throw new GatewayErrorV0("invalid_state", 409); - } - record.session = Object.freeze({ ...record.session, state: next }); - record.statusCode = code; - } - - private status(record: StoredSessionV0): SessionStatusV0 { - return Object.freeze({ - session: record.session, - code: record.statusCode, - retryable: RETRYABLE_CODES.has(record.statusCode), - }); - } - - private runSessionMutation( - record: StoredSessionV0, - kind: "passkey" | "prepare" | "capture" | "retry" | "cancel", - requestDigest: HexSha256, - operation: () => Promise, - ): Promise { - const sessionId = record.session.sessionId; - const active = this.mutationInFlight.get(sessionId); - if (active !== undefined) { - if (active.kind !== kind || active.digest !== requestDigest) { - throw new GatewayErrorV0("binding_mismatch", 409); - } - return active.result as Promise; - } - const result = Promise.resolve().then(operation); - this.mutationInFlight.set(sessionId, { - kind, - digest: requestDigest, - result, - }); - return result.finally(() => { - if (this.mutationInFlight.get(sessionId)?.result === result) { - this.mutationInFlight.delete(sessionId); - } - }); - } - - private cachedResponse( - cacheKey: string, - requestDigest: HexSha256, - ): SubmitCaptureResultV0 | undefined { - const cached = this.responseCache.get(cacheKey); - if (cached === undefined) return undefined; - if (Date.parse(cached.expiresAt) <= this.clock.now().getTime()) { - this.responseCache.delete(cacheKey); - return undefined; - } - if (cached.digest !== requestDigest) { - throw new GatewayErrorV0("binding_mismatch", 409); - } - return cached.result; - } - - private cacheResponse( - cacheKey: string, - requestDigest: HexSha256, - expiresAt: string, - result: SubmitCaptureResultV0, - ): SubmitCaptureResultV0 { - const immutableResult = result.credential === undefined - ? Object.freeze({ ...result }) - : Object.freeze({ - ...result, - credential: Object.freeze({ - ...result.credential, - claims: Object.freeze({ ...result.credential.claims }), - authentication: Object.freeze({ ...result.credential.authentication }), - }), - }); - if (Date.parse(expiresAt) > this.clock.now().getTime()) { - this.responseCache.set(cacheKey, { - digest: requestDigest, - expiresAt, - result: immutableResult, - }); - } - return immutableResult; - } - - private purgeResponseCache(nowMs: number): void { - for (const [cacheKey, cached] of this.responseCache) { - if (Date.parse(cached.expiresAt) <= nowMs) this.responseCache.delete(cacheKey); - } - } - - private purgeSessionResponses(sessionId: string): void { - const prefix = `${sessionId}:`; - for (const cacheKey of this.responseCache.keys()) { - if (cacheKey.startsWith(prefix)) this.responseCache.delete(cacheKey); - } - } - - private async createResult(record: StoredSessionV0): Promise { - const browserHandle = await this.handles.seal({ - sessionId: record.session.sessionId, - rpId: record.rpId, - origin: record.origin, - expiresAt: record.session.expiresAt, - }); - return Object.freeze({ - ...this.status(record), - browserHandle, - capturePolicy: this.policyFor(record), - }); - } - - private policyFor(record: StoredSessionV0): SimulationCapturePolicyV0 { - return Object.freeze({ ...this.config.capturePolicy, expiresAt: record.session.expiresAt }); - } - - private assertAvailable(): void { - if (!this.isAvailable()) throw new GatewayErrorV0("gateway_disabled", 404); - } - - private isAvailable(): boolean { - return this.config.enabled && this.config.runtimeEnvironment === "staging"; - } - - private assertBody(body: unknown): void { - if (bytesForBodyLimit(body) > this.config.maxRequestBodyBytes) { - throw new GatewayErrorV0("body_too_large", 413); - } - } - - private now(): string { - return this.clock.now().toISOString(); - } - - private async withOperation(operation: () => Promise): Promise { - if (this.activeOperations >= this.config.maxConcurrentOperations) { - throw new GatewayErrorV0("resource_busy", 429); - } - this.activeOperations += 1; - try { - return await operation(); - } finally { - this.activeOperations -= 1; - } - } - - private async withTimeout(operation: Promise): Promise { - let timer: ReturnType | undefined; - const timeout = new Promise((_resolve, reject) => { - timer = setTimeout(() => reject(new GatewayErrorV0("resource_busy", 503)), this.config.simulatorTimeoutMs); - }); - try { - return await Promise.race([operation, timeout]); - } finally { - if (timer !== undefined) clearTimeout(timer); - } - } - - private async safeReady(check: () => boolean | Promise): Promise { - try { - return await this.withTimeout(Promise.resolve(check())); - } catch { - return false; - } - } - - private purposeKeyMaterialsAreDistinct(): boolean { - try { - const fingerprints = [ - this.config.biometricRequestSigner.trustRoot, - this.config.biometricReceiptTrustRoot, - this.config.issuanceRequestSigner.trustRoot, - this.config.simulatedCredentialTrustRoot, - ].map((trustRoot) => { - const bytes = base64UrlToBytes(trustRoot.publicKeyRawBase64Url); - if (bytes.byteLength !== 32) throw new TypeError("invalid_staging_public_key"); - return Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join(""); - }); - return new Set(fingerprints).size === fingerprints.length; - } catch { - return false; - } - } - - private codeForOutcome(outcome: SimulationReceiptV0["outcome"]): GatewayStatusCodeV0 { - return outcome === "simulated_pass" - ? "simulation_pass" - : outcome === "simulated_reject" - ? "simulation_reject" - : outcome === "simulated_retry" - ? "simulation_retry" - : "simulation_unavailable"; - } - - private audit(record: StoredSessionV0, event: Parameters["record"]>[0]["event"], code?: GatewayStatusCodeV0): void { - try { - this.config.auditSink?.record(Object.freeze({ - event, - sessionId: record.session.sessionId, - state: record.session.state, - ...(code === undefined ? {} : { code }), - })); - } catch { - // Audit transport failures cannot alter the authoritative session outcome. - } - } -} - -export function rejectSimulationArtifactAtProductionBoundary(runtimeEnvironment: "development" | "test" | "staging" | "production", artifact: unknown): void { - assertSimulationArtifactAllowed(runtimeEnvironment, artifact); -} diff --git a/services/session-gateway/src/index.ts b/services/session-gateway/src/index.ts deleted file mode 100644 index c841597..0000000 --- a/services/session-gateway/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from "./crypto"; -export * from "./errors"; -export * from "./gateway"; -export * from "./repository"; -export * from "./types"; diff --git a/services/session-gateway/src/repository.ts b/services/session-gateway/src/repository.ts deleted file mode 100644 index cb9ee67..0000000 --- a/services/session-gateway/src/repository.ts +++ /dev/null @@ -1,34 +0,0 @@ -import type { SessionRepositoryV0, StoredSessionV0 } from "./types"; - -export class InMemorySessionRepositoryV0 implements SessionRepositoryV0 { - private readonly records = new Map(); - private readonly creationKeys = new Map(); - - get(sessionId: string): StoredSessionV0 | undefined { - return this.records.get(sessionId); - } - - put(record: StoredSessionV0): void { - this.records.set(record.session.sessionId, record); - this.creationKeys.set( - `${record.rpId}\u0000${record.session.idempotencyKey}`, - record.session.sessionId, - ); - } - - findByCreationIdempotency(rpId: string, idempotencyKey: string): StoredSessionV0 | undefined { - const sessionId = this.creationKeys.get(`${rpId}\u0000${idempotencyKey}`); - return sessionId === undefined ? undefined : this.records.get(sessionId); - } - - purgeExpired(nowMs: number): number { - let purged = 0; - for (const [sessionId, record] of this.records) { - if (Date.parse(record.session.expiresAt) > nowMs) continue; - this.records.delete(sessionId); - this.creationKeys.delete(`${record.rpId}\u0000${record.session.idempotencyKey}`); - purged += 1; - } - return purged; - } -} diff --git a/services/session-gateway/src/types.ts b/services/session-gateway/src/types.ts deleted file mode 100644 index f0f7cfe..0000000 --- a/services/session-gateway/src/types.ts +++ /dev/null @@ -1,171 +0,0 @@ -import type { - BiometricSimulationScenarioV0, - EnrollmentSessionV2, - FrameBundleV0, - HexSha256, - IssuanceSimulationScenarioV0, - RuntimeEnvironment, - SimulatedStagingCredentialV0, - SimulationCapturePolicyV0, - SimulationReceiptV0, - StagingEd25519TrustRootV0, -} from "../../../packages/contracts/src"; -import type { BiometricVerificationPortV0 } from "../../../packages/biometric-verification-port/src"; -import type { StagingIssuancePortV0 } from "../../../packages/staging-issuance-port/src"; - -export interface RequestContextV0 { - readonly origin: string; - readonly rpId: string; - readonly authenticatedServerContext?: unknown; -} - -export interface VerifiedRpRequestV0 { - readonly rpId: string; - readonly origin: string; - readonly returnTarget: string; - readonly requestDigestSha256: HexSha256; -} - -export interface RpRequestVerifierV0 { - verify(request: unknown, context: RequestContextV0, now: string): Promise; -} - -export interface BrowserCeremonyVerifierV0 { - verify( - ceremony: unknown, - expected: { - readonly sessionId: string; - readonly rpId: string; - readonly origin: string; - readonly accountPublicMaterialDigestSha256: HexSha256; - readonly now: string; - }, - ): Promise; -} - -export interface ServerScenarioSelectionV0 { - readonly biometric: BiometricSimulationScenarioV0; - readonly issuance: IssuanceSimulationScenarioV0; -} - -export interface ServerScenarioSelectorV0 { - select(input: { - readonly verifiedRpRequest: VerifiedRpRequestV0; - readonly authenticatedServerContext: unknown; - }): Promise; -} - -export interface GatewayRequestSignerV0 { - readonly trustRoot: StagingEd25519TrustRootV0; - sign(preimage: Uint8Array): Promise; -} - -export interface GatewayAuditEventV0 { - readonly event: - | "session_created" - | "passkey_complete" - | "capture_ready" - | "simulation_finished" - | "issuance_finished" - | "session_expired" - | "session_cancelled"; - readonly sessionId: string; - readonly state: EnrollmentSessionV2["state"]; - readonly code?: GatewayStatusCodeV0; -} - -export interface GatewayAuditSinkV0 { - record(event: GatewayAuditEventV0): void; -} - -export interface GatewayClockV0 { - now(): Date; -} - -export type CapturePolicyTemplateV0 = Omit; - -export interface SessionGatewayConfigV0 { - readonly runtimeEnvironment: RuntimeEnvironment; - readonly enabled: boolean; - readonly sessionTtlMs: number; - readonly maxRequestBodyBytes: number; - readonly maxConcurrentOperations: number; - readonly simulatorTimeoutMs: number; - readonly capturePolicy: CapturePolicyTemplateV0; - readonly allowedSyntheticFixtureIds: readonly string[]; - readonly handleKey: CryptoKey; - readonly rpRequestVerifier: RpRequestVerifierV0; - readonly ceremonyVerifier: BrowserCeremonyVerifierV0; - readonly scenarioSelector: ServerScenarioSelectorV0; - readonly biometricRequestSigner: GatewayRequestSignerV0; - readonly issuanceRequestSigner: GatewayRequestSignerV0; - readonly biometricReceiptTrustRoot: StagingEd25519TrustRootV0; - readonly simulatedCredentialTrustRoot: StagingEd25519TrustRootV0; - readonly biometricClient: BiometricVerificationPortV0; - readonly issuanceClient: StagingIssuancePortV0; - readonly auditSink?: GatewayAuditSinkV0; - readonly clock?: GatewayClockV0; -} - -export type GatewayStatusCodeV0 = - | "created" - | "passkey_complete" - | "capture_ready" - | "simulation_pass" - | "simulation_reject" - | "simulation_retry" - | "simulation_unavailable" - | "issuance_rejected" - | "issuance_unavailable" - | "simulated_credential_ready" - | "cancelled" - | "expired"; - -export interface SessionStatusV0 { - readonly session: EnrollmentSessionV2; - readonly code: GatewayStatusCodeV0; - readonly retryable: boolean; -} - -export interface CreateSessionResultV0 extends SessionStatusV0 { - readonly browserHandle: string; - readonly capturePolicy: SimulationCapturePolicyV0; -} - -export interface SubmitCaptureResultV0 extends SessionStatusV0 { - readonly credential?: SimulatedStagingCredentialV0; -} - -export interface StoredSessionV0 { - session: EnrollmentSessionV2; - readonly rpId: string; - readonly origin: string; - readonly returnTarget: string; - readonly accountId: string; - nonceConsumed: boolean; - captureAttempt: number; - frameBundle?: FrameBundleV0; - artifactDigestSha256?: HexSha256; - biometricRequestId?: string; - biometricIdempotencyKey?: string; - biometricRequestedAt?: string; - receiptId?: string; - issuanceRequestId?: string; - issuanceIdempotencyKey?: string; - issuanceRequestedAt?: string; - statusCode: GatewayStatusCodeV0; - readonly operationResults: Map; - readonly operationRequestDigests: Map; -} - -export interface SessionRepositoryV0 { - get(sessionId: string): StoredSessionV0 | undefined; - put(record: StoredSessionV0): void; - findByCreationIdempotency(rpId: string, idempotencyKey: string): StoredSessionV0 | undefined; - purgeExpired(nowMs: number): number; -} - -export interface ExpectedReceiptContextV0 { - readonly receipt: SimulationReceiptV0; - readonly frameBundle: FrameBundleV0; -} diff --git a/services/session-gateway/test/helpers.ts b/services/session-gateway/test/helpers.ts deleted file mode 100644 index e7bcd1f..0000000 --- a/services/session-gateway/test/helpers.ts +++ /dev/null @@ -1,313 +0,0 @@ -import { - BIOMETRIC_SCENARIO_OUTCOME_V0, - BIOMETRIC_SCENARIO_REASON_V0, - BIOMETRIC_SIMULATOR_AUDIENCE_V0, - BIOMETRIC_VERIFICATION_PORT_V0, - bytesToArrayBuffer, - bytesToBase64Url, - computeFrameBundleDigestV0, - FRAME_BUNDLE_V0, - FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - SIMULATED_STAGING_AUDIENCE_V0, - SIMULATED_STAGING_CREDENTIAL_V0, - SIMULATED_STAGING_ISSUER_V0, - SIMULATION_CAPTURE_POLICY_V0, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - SIMULATION_RECEIPT_V0, - stagingSignaturePreimageV0, - STAGING_ISSUANCE_PORT_V0, - type BiometricSimulationRequestV0, - type FrameBundleV0, - type HexSha256, - type SimulatedStagingCredentialV0, - type SimulationReceiptV0, - type StagingAuthenticationV0, - type StagingEd25519TrustRootV0, - type StagingIssuanceSimulationRequestV0, -} from "../../../packages/contracts/src"; -import { - BIOMETRIC_SIMULATION_ERROR_V0, - SIMULATION_RECEIPT_READY_V0, - type BiometricVerificationInvocationV0, - type BiometricVerificationResultV0, -} from "../../../packages/biometric-verification-port/src"; -import { - STAGING_ISSUANCE_ERROR_V0, - type StagingIssuanceInvocationV0, - type StagingIssuancePortResultV0, -} from "../../../packages/staging-issuance-port/src"; -import { - SessionGatewayV0, - sha256Text, - type GatewayAuditEventV0, - type GatewayRequestSignerV0, - type SessionGatewayConfigV0, - type SessionRepositoryV0, -} from "../src"; - -export const ACCOUNT_DIGEST = "a".repeat(64) as HexSha256; -export const RP_DIGEST = "b".repeat(64) as HexSha256; -export const FRAME_DIGEST = "c".repeat(64) as HexSha256; -export const CONTEXT = Object.freeze({ - origin: "https://auth.example.test", - rpId: "auth.example.test", - authenticatedServerContext: "server-authenticated", -}); - -export class MutableClock { - constructor(private timestamp = Date.parse("2026-09-02T18:00:00.000Z")) {} - now(): Date { return new Date(this.timestamp); } - advance(milliseconds: number): void { this.timestamp += milliseconds; } -} - -export interface TestSigner extends GatewayRequestSignerV0 { - readonly privateKey: CryptoKey; -} - -export async function createSigner(audience: string, keyId: string): Promise { - const pair = (await crypto.subtle.generateKey({ name: "Ed25519" }, true, ["sign", "verify"])) as CryptoKeyPair; - const publicKey = new Uint8Array(await crypto.subtle.exportKey("raw", pair.publicKey)); - return { - privateKey: pair.privateKey, - trustRoot: { - environment: SIMULATION_ENVIRONMENT, - audience, - keyId, - publicKeyRawBase64Url: bytesToBase64Url(publicKey), - }, - async sign(preimage: Uint8Array): Promise { - const signature = await crypto.subtle.sign({ name: "Ed25519" }, pair.privateKey, bytesToArrayBuffer(preimage)); - return bytesToBase64Url(new Uint8Array(signature)); - }, - }; -} - -async function sign(value: T, signer: TestSigner): Promise { - const unsigned = { - ...value, - authentication: { - scheme: "staging-ed25519" as const, - keyId: signer.trustRoot.keyId, - signatureBase64Url: "pending", - }, - }; - return { - ...unsigned, - authentication: { - ...unsigned.authentication, - signatureBase64Url: await signer.sign(stagingSignaturePreimageV0(unsigned as unknown as Record)), - }, - } as T; -} - -export interface Harness { - readonly gateway: SessionGatewayV0; - readonly config: SessionGatewayConfigV0; - readonly clock: MutableClock; - readonly events: GatewayAuditEventV0[]; - readonly calls: { - biometric: number; - issuance: number; - biometricRequests: BiometricSimulationRequestV0[]; - issuanceRequests: StagingIssuanceSimulationRequestV0[]; - }; - biometricMode: "normal" | "throw" | "malformed" | "tampered" | "port_error"; - issuanceMode: "normal" | "throw" | "malformed" | "tampered" | "wrong_outcome" | "port_error"; - biometricBarrier?: { - readonly started: () => void; - readonly release: Promise; - }; -} - -export async function makeHarness(overrides: Partial = {}, scenarios: { biometric: "happy_path" | "spoof_reject" | "capture_retry" | "dependency_unavailable"; issuance: "issue_success" | "issue_reject" | "issue_unavailable" } = { biometric: "happy_path", issuance: "issue_success" }, repository?: SessionRepositoryV0): Promise { - const clock = new MutableClock(); - const [gatewayBiometric, receiptSigner, gatewayIssuance, credentialSigner] = await Promise.all([ - createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "gateway-biometric"), - createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "receipt-signer"), - createSigner("world_id_web_authenticator_issuance_simulator_staging", "gateway-issuance"), - createSigner(SIMULATED_STAGING_AUDIENCE_V0, "credential-signer"), - ]); - const handleKey = await crypto.subtle.generateKey({ name: "HMAC", hash: "SHA-256", length: 256 }, false, ["sign"]); - const events: GatewayAuditEventV0[] = []; - const calls = { biometric: 0, issuance: 0, biometricRequests: [] as BiometricSimulationRequestV0[], issuanceRequests: [] as StagingIssuanceSimulationRequestV0[] }; - const harness = { biometricMode: "normal", issuanceMode: "normal" } as Harness; - const config: SessionGatewayConfigV0 = { - runtimeEnvironment: "staging", - enabled: true, - sessionTtlMs: 60_000, - maxRequestBodyBytes: 16_384, - maxConcurrentOperations: 2, - simulatorTimeoutMs: 1_000, - capturePolicy: { - version: SIMULATION_CAPTURE_POLICY_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - policyId: "policy-v0", - dataMode: "metadata_only", - encoding: "rgba8", - minFrames: 1, - maxFrames: 2, - maxWidth: 1024, - maxHeight: 1024, - maxFrameBytes: 4_194_304, - maxTotalBytes: 8_388_608, - captureOffsetsAreDiagnosticOnly: true, - arrayOrderHasBiometricMeaning: false, - qualityPolicyId: "quality-v0", - }, - allowedSyntheticFixtureIds: ["fixture-neutral-v0"], - handleKey, - rpRequestVerifier: { - async verify(request, context) { - if (request !== "signed-rp-request" || context.origin !== CONTEXT.origin || context.rpId !== CONTEXT.rpId) return null; - return { rpId: CONTEXT.rpId, origin: CONTEXT.origin, returnTarget: "https://rp.example.test/return", requestDigestSha256: RP_DIGEST }; - }, - }, - ceremonyVerifier: { async verify(ceremony) { return ceremony === "valid-ceremony"; } }, - scenarioSelector: { - async select(input) { - if (input.authenticatedServerContext !== "server-authenticated") throw new Error("unauthenticated selector context"); - return scenarios; - }, - }, - biometricRequestSigner: gatewayBiometric, - issuanceRequestSigner: gatewayIssuance, - biometricReceiptTrustRoot: receiptSigner.trustRoot, - simulatedCredentialTrustRoot: credentialSigner.trustRoot, - biometricClient: { - readiness() { return { ready: true }; }, - async verify(invocation: BiometricVerificationInvocationV0): Promise { - const request = invocation.request as BiometricSimulationRequestV0; - calls.biometric += 1; - calls.biometricRequests.push(request); - harness.biometricBarrier?.started(); - if (harness.biometricBarrier !== undefined) { - await harness.biometricBarrier.release; - } - if (harness.biometricMode === "throw") throw new Error("untrusted upstream details"); - if (harness.biometricMode === "port_error") { - return { kind: BIOMETRIC_SIMULATION_ERROR_V0, reasonCode: "service_not_ready" }; - } - if (harness.biometricMode === "malformed") { - return { outcome: "simulated_pass" } as unknown as BiometricVerificationResultV0; - } - const receipt: SimulationReceiptV0 = await sign({ - kind: SIMULATION_RECEIPT_V0, - version: BIOMETRIC_VERIFICATION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, - receiptId: `receipt-${request.requestId}`, - requestId: request.requestId, - simulatorVersion: "test-simulator-v0", - scenario: request.scenario, - sessionId: request.sessionId, - nonceDigestSha256: request.nonceDigestSha256, - idempotencyKey: request.idempotencyKey, - accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, - capturePolicyId: request.capturePolicyId, - artifactDigestSha256: request.frameBundle.artifactDigestSha256, - outcome: BIOMETRIC_SCENARIO_OUTCOME_V0[request.scenario], - reasonCode: BIOMETRIC_SCENARIO_REASON_V0[request.scenario], - issuedAt: clock.now().toISOString(), - expiresAt: request.expiresAt, - authentication: { scheme: "staging-ed25519", keyId: "pending", signatureBase64Url: "pending" }, - }, receiptSigner); - return { - kind: SIMULATION_RECEIPT_READY_V0, - receipt: harness.biometricMode === "tampered" - ? { ...receipt, sessionId: "tampered" } - : receipt, - } as BiometricVerificationResultV0; - }, - }, - issuanceClient: { - readiness() { return { ready: true }; }, - async issue(invocation: StagingIssuanceInvocationV0): Promise { - const request = invocation.request as StagingIssuanceSimulationRequestV0; - calls.issuance += 1; - calls.issuanceRequests.push(request); - if (harness.issuanceMode === "throw") throw new Error("untrusted issuer details"); - if (harness.issuanceMode === "port_error") { - return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "service_not_ready" }; - } - if (harness.issuanceMode === "malformed") { - return { kind: "simulated_credential_ready_v0", credential: { claims: {} } } as unknown as StagingIssuancePortResultV0; - } - if (harness.issuanceMode === "wrong_outcome") return { kind: "simulated_issuance_rejected_v0", reasonCode: "scenario_issue_reject" }; - if (request.scenario === "issue_reject") return { kind: "simulated_issuance_rejected_v0", reasonCode: "scenario_issue_reject" }; - if (request.scenario === "issue_unavailable") return { kind: "simulated_issuance_unavailable_v0", reasonCode: "scenario_issue_unavailable" }; - const credential: SimulatedStagingCredentialV0 = await sign({ - kind: SIMULATED_STAGING_CREDENTIAL_V0, - version: STAGING_ISSUANCE_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - credentialId: `credential-${request.requestId}`, - issuer: SIMULATED_STAGING_ISSUER_V0, - audience: SIMULATED_STAGING_AUDIENCE_V0, - issuanceRequestId: request.requestId, - idempotencyKey: request.idempotencyKey, - nonceDigestSha256: request.nonceDigestSha256, - subjectAccountId: request.accountId, - accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, - simulationReceiptId: request.biometricReceipt.receiptId, - claims: { biometricVerification: "simulated_not_performed", uniqueness: "not_performed", credentialClass: "not_selfie_check" }, - issuedAt: clock.now().toISOString(), - expiresAt: request.expiresAt, - authentication: { scheme: "staging-ed25519", keyId: "pending", signatureBase64Url: "pending" }, - }, credentialSigner); - return { - kind: "simulated_credential_ready_v0", - credential: harness.issuanceMode === "tampered" - ? { ...credential, subjectAccountId: "tampered" } - : credential, - } as StagingIssuancePortResultV0; - }, - }, - auditSink: { record(event) { events.push(event); } }, - clock, - ...overrides, - }; - Object.assign(harness, { - gateway: new SessionGatewayV0(config, repository), - config, - clock, - events, - calls, - }); - return harness; -} - -export function createBody(idempotencyKey = "create-key") { - return { rpRequest: "signed-rp-request", accountId: "account-v0", accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, idempotencyKey }; -} - -export async function reachCaptureReady(harness: Harness) { - const created = await harness.gateway.createSession(createBody(), CONTEXT); - await harness.gateway.completePasskey({ sessionId: created.session.sessionId, browserHandle: created.browserHandle, idempotencyKey: "passkey-key", ceremony: "valid-ceremony" }, CONTEXT); - const ready = await harness.gateway.prepareCapture({ sessionId: created.session.sessionId, browserHandle: created.browserHandle }, CONTEXT); - return { created, ready }; -} - -export async function makeBundle(sessionId: string, nonce: string, dataMode: "metadata_only" | "synthetic_fixture" = "metadata_only"): Promise { - const pending: FrameBundleV0 = { - kind: FRAME_BUNDLE_V0, - mode: SIMULATION_MODE, - sessionId, - policyId: "policy-v0", - accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, - nonceDigestSha256: await sha256Text(nonce), - dataMode, - frames: [{ transportIndex: 0, width: 640, height: 480, encoding: "rgba8", byteLength: 1_228_800, frameDigestSha256: FRAME_DIGEST, captureOffsetMs: 0 }], - ...(dataMode === "synthetic_fixture" ? { syntheticFixtureId: "fixture-neutral-v0" } : {}), - totalByteLength: 1_228_800, - digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - artifactDigestSha256: "0".repeat(64), - }; - return { ...pending, artifactDigestSha256: await computeFrameBundleDigestV0(pending) }; -} - -export async function submitReady(harness: Harness, ready: Awaited>["ready"], idempotencyKey = "capture-key") { - return harness.gateway.submitCapture({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey, nonceBase64Url: ready.session.nonceBase64Url, frameBundle: await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url) }, CONTEXT); -} diff --git a/services/session-gateway/test/privacy.test.ts b/services/session-gateway/test/privacy.test.ts deleted file mode 100644 index 5ba74ff..0000000 --- a/services/session-gateway/test/privacy.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { readdir, readFile } from "node:fs/promises"; -import { join } from "node:path"; -import { GatewayErrorV0 } from "../src"; -import { CONTEXT, makeHarness, reachCaptureReady } from "./helpers"; - -describe("privacy and redaction sentinels", () => { - test("source has no network, persistent-storage, private-key literal, or raw logging path", async () => { - const sourceDirectory = join(import.meta.dir, "../src"); - const source = (await Promise.all((await readdir(sourceDirectory)).filter((name) => name.endsWith(".ts")).map((name) => readFile(join(sourceDirectory, name), "utf8")))).join("\n"); - for (const token of ["console.", "fetch(", "XMLHttpRequest", "WebSocket", "localStorage", "sessionStorage", "indexedDB", ["BEGIN", "PRIVATE", "KEY"].join(" "), ["PRIVATE", "KEY-----"].join(" "), "data:image", "createObjectURL"]) { - expect(source).not.toContain(token); - } - }); - - test("upstream errors collapse to stable codes without copied text", async () => { - const harness = await makeHarness(); - harness.biometricMode = "throw"; - const { ready } = await reachCaptureReady(harness); - const bundle = await (await import("./helpers")).makeBundle(ready.session.sessionId, ready.session.nonceBase64Url); - const result = await harness.gateway.submitCapture({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "capture", nonceBase64Url: ready.session.nonceBase64Url, frameBundle: bundle }, CONTEXT); - expect(result.code).toBe("simulation_unavailable"); - expect(JSON.stringify(result)).not.toContain("untrusted upstream details"); - }); - - test("public errors expose only stable codes", () => { - const error = new GatewayErrorV0("artifact_invalid", 400); - expect(error.toResponse()).toEqual({ code: "artifact_invalid" }); - expect(Object.keys(error.toResponse())).toEqual(["code"]); - }); -}); diff --git a/services/session-gateway/test/production-isolation.test.ts b/services/session-gateway/test/production-isolation.test.ts deleted file mode 100644 index c683795..0000000 --- a/services/session-gateway/test/production-isolation.test.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { SimulationArtifactInProductionError } from "../../../packages/contracts/src"; -import { GatewayErrorV0, rejectSimulationArtifactAtProductionBoundary } from "../src"; -import { CONTEXT, createBody, makeHarness } from "./helpers"; - -describe("production isolation", () => { - test("makes every gateway route unavailable in production", async () => { - const harness = await makeHarness({ runtimeEnvironment: "production" }); - try { - await harness.gateway.createSession(createBody(), CONTEXT); - throw new Error("expected rejection"); - } catch (error) { - expect(error).toBeInstanceOf(GatewayErrorV0); - expect((error as GatewayErrorV0).code).toBe("gateway_disabled"); - } - expect(await harness.gateway.readiness()).toEqual({ ready: false, code: "disabled" }); - }); - - test("rejects a production route before inspecting its body", async () => { - const harness = await makeHarness({ runtimeEnvironment: "production" }); - const body = new Proxy({}, { ownKeys() { throw new Error("body inspected"); } }); - try { - await harness.gateway.createSession(body, CONTEXT); - throw new Error("expected rejection"); - } catch (error) { - expect(error).toBeInstanceOf(GatewayErrorV0); - expect((error as GatewayErrorV0).code).toBe("gateway_disabled"); - } - }); - - test.each([ - ["receipt", { kind: "simulation_receipt_v0" }], - ["credential", { kind: "simulated_staging_credential_v0" }], - ["mode", { mode: "simulation" }], - ["environment", { environment: "staging" }], - ] as const)("rejects simulation by %s discriminator before sensitive getters", (_label, discriminator) => { - const touched: string[] = []; - const artifact = Object.defineProperties({ ...discriminator }, { - outcome: { enumerable: false, get() { touched.push("outcome"); throw new Error("outcome read"); } }, - authentication: { enumerable: false, get() { touched.push("authentication"); throw new Error("authentication read"); } }, - }); - expect(() => rejectSimulationArtifactAtProductionBoundary("production", artifact)).toThrow(SimulationArtifactInProductionError); - expect(touched).toEqual([]); - }); -}); diff --git a/services/session-gateway/test/real-simulators.integration.test.ts b/services/session-gateway/test/real-simulators.integration.test.ts deleted file mode 100644 index 253b0c1..0000000 --- a/services/session-gateway/test/real-simulators.integration.test.ts +++ /dev/null @@ -1,302 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - BIOMETRIC_SCENARIO_OUTCOME_V0, - BIOMETRIC_SIMULATOR_AUDIENCE_V0, - SIMULATED_STAGING_AUDIENCE_V0, - SIMULATION_ENVIRONMENT, - STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, - verifySimulatedStagingCredentialV0, - type BiometricSimulationScenarioV0, - type IssuanceSimulationScenarioV0, -} from "../../../packages/contracts/src"; -import { - SIMULATION_RECEIPT_READY_V0, - type BiometricVerificationResultV0, - type BiometricVerificationPortV0, -} from "../../../packages/biometric-verification-port/src"; -import type { StagingIssuancePortV0 } from "../../../packages/staging-issuance-port/src"; -import type { StagingIssuancePortResultV0 } from "../../../packages/staging-issuance-port/src"; -import { SimulatedBiometricVerifierV0 } from "../../simulated-biometric-verifier/src"; -import { SimulatedStagingIssuerV0 } from "../../simulated-staging-issuer/src"; -import { - ACCOUNT_DIGEST, - CONTEXT, - createSigner, - makeBundle, - makeHarness, - MutableClock, - reachCaptureReady, -} from "./helpers"; - -interface RealHarness { - readonly harness: Awaited>; - readonly biometric: SimulatedBiometricVerifierV0; - readonly issuer: SimulatedStagingIssuerV0; - readonly credentialTrustRoot: Awaited>["trustRoot"]; - readonly clock: MutableClock; - readonly issuerCalls: { count: number }; - readonly biometricResults: BiometricVerificationResultV0[]; - readonly issuanceResults: StagingIssuancePortResultV0[]; -} - -interface RealHarnessOptions { - readonly tamperReceipt?: boolean; - readonly dropReceiptOnce?: boolean; - readonly dropCredentialOnce?: boolean; -} - -async function makeRealHarness( - biometricScenario: BiometricSimulationScenarioV0, - issuanceScenario: IssuanceSimulationScenarioV0, - options: RealHarnessOptions = {}, -): Promise { - const clock = new MutableClock(); - const [gatewayBiometric, receiptSigner, gatewayIssuance, credentialSigner] = await Promise.all([ - createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "integration-gateway-biometric"), - createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "integration-receipt"), - createSigner(STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, "integration-gateway-issuance"), - createSigner(SIMULATED_STAGING_AUDIENCE_V0, "integration-credential"), - ]); - const biometric = new SimulatedBiometricVerifierV0({ - runtimeEnvironment: "staging", - gatewayTrustRoot: gatewayBiometric.trustRoot, - receiptSigner: { - environment: SIMULATION_ENVIRONMENT, - audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, - keyId: receiptSigner.trustRoot.keyId, - privateKey: receiptSigner.privateKey, - }, - simulatorVersion: "gateway-integration-biometric-v0", - receiptTtlMs: 30_000, - maxCacheEntries: 100, - allowedSyntheticFixtureIds: ["fixture-neutral-v0"], - now: () => clock.now(), - }); - const issuer = new SimulatedStagingIssuerV0({ - runtimeEnvironment: "staging", - gatewayTrustRoot: gatewayIssuance.trustRoot, - biometricReceiptTrustRoot: receiptSigner.trustRoot, - credentialSigner: { - environment: SIMULATION_ENVIRONMENT, - audience: SIMULATED_STAGING_AUDIENCE_V0, - keyId: credentialSigner.trustRoot.keyId, - privateKey: credentialSigner.privateKey, - }, - credentialTtlMs: 30_000, - maxCacheEntries: 100, - now: () => clock.now(), - }); - const biometricResults: BiometricVerificationResultV0[] = []; - const biometricPort: BiometricVerificationPortV0 = { - readiness: () => biometric.readiness(), - async verify(invocation) { - const result = await biometric.verify(invocation); - biometricResults.push(result); - if (options.dropReceiptOnce && biometricResults.length === 1) { - throw new Error("simulated_lost_receipt_response"); - } - if (!options.tamperReceipt || result.kind !== SIMULATION_RECEIPT_READY_V0) { - return result; - } - return { - ...result, - receipt: { - ...result.receipt, - authentication: { - ...result.receipt.authentication, - signatureBase64Url: `${result.receipt.authentication.signatureBase64Url}x`, - }, - }, - }; - }, - }; - const issuerCalls = { count: 0 }; - const issuanceResults: StagingIssuancePortResultV0[] = []; - const issuancePort: StagingIssuancePortV0 = { - readiness: () => issuer.readiness(), - async issue(invocation) { - issuerCalls.count += 1; - const result = await issuer.issue(invocation); - issuanceResults.push(result); - if ( - options.dropCredentialOnce && - issuanceResults.length === 1 && - result.kind === "simulated_credential_ready_v0" - ) { - throw new Error("simulated_lost_credential_response"); - } - return result; - }, - }; - const harness = await makeHarness({ - clock, - biometricRequestSigner: gatewayBiometric, - issuanceRequestSigner: gatewayIssuance, - biometricReceiptTrustRoot: receiptSigner.trustRoot, - simulatedCredentialTrustRoot: credentialSigner.trustRoot, - biometricClient: biometricPort, - issuanceClient: issuancePort, - }, { biometric: biometricScenario, issuance: issuanceScenario }); - return { - harness, - biometric, - issuer, - credentialTrustRoot: credentialSigner.trustRoot, - clock, - issuerCalls, - biometricResults, - issuanceResults, - }; -} - -async function submit(real: RealHarness, idempotencyKey = "real-capture") { - const { ready } = await reachCaptureReady(real.harness); - const frameBundle = await makeBundle( - ready.session.sessionId, - ready.session.nonceBase64Url, - ); - const request = { - sessionId: ready.session.sessionId, - browserHandle: ready.browserHandle, - idempotencyKey, - nonceBase64Url: ready.session.nonceBase64Url, - frameBundle, - }; - return { - request, - result: await real.harness.gateway.submitCapture(request, CONTEXT), - }; -} - -describe("gateway with real deterministic simulator ports", () => { - for (const [scenario, state, code] of [ - ["happy_path", "simulated_credential_ready", "simulated_credential_ready"], - ["spoof_reject", "simulated_reject", "simulation_reject"], - ["capture_retry", "simulated_retry", "simulation_retry"], - ["dependency_unavailable", "simulated_unavailable", "simulation_unavailable"], - ] as const) { - test(`runs biometric scenario ${scenario} through the typed W10 port`, async () => { - const real = await makeRealHarness(scenario, "issue_success"); - const { result } = await submit(real); - expect(result.session.biometricScenario).toBe(scenario); - expect(result.session.state).toBe(state); - expect(result.code).toBe(code); - expect(real.issuerCalls.count).toBe(scenario === "happy_path" ? 1 : 0); - if (scenario === "happy_path") expect(result.credential).toBeDefined(); - else expect(result.credential).toBeUndefined(); - }); - } - - for (const [scenario, state, code] of [ - ["issue_success", "simulated_credential_ready", "simulated_credential_ready"], - ["issue_reject", "simulated_issuance_reject", "issuance_rejected"], - ["issue_unavailable", "simulated_issuance_unavailable", "issuance_unavailable"], - ] as const) { - test(`runs issuance scenario ${scenario} through the typed W10 port`, async () => { - const real = await makeRealHarness("happy_path", scenario); - const { result } = await submit(real); - expect(result.session.issuanceScenario).toBe(scenario); - expect(result.session.state).toBe(state); - expect(result.code).toBe(code); - expect(real.issuerCalls.count).toBe(1); - }); - } - - test("returns the exact signed credential on an idempotent lost-response retry", async () => { - const real = await makeRealHarness("happy_path", "issue_success"); - const { request, result } = await submit(real); - const retry = await real.harness.gateway.submitCapture(request, CONTEXT); - expect(retry).toBe(result); - expect(retry.credential).toBeDefined(); - expect(retry.credential?.claims).toEqual({ - biometricVerification: "simulated_not_performed", - uniqueness: "not_performed", - credentialClass: "not_selfie_check", - }); - expect(await verifySimulatedStagingCredentialV0(retry.credential, { - runtimeEnvironment: "staging", - issuanceRequestId: retry.credential!.issuanceRequestId, - idempotencyKey: retry.credential!.idempotencyKey, - nonceDigestSha256: retry.credential!.nonceDigestSha256, - subjectAccountId: "account-v0", - accountPublicMaterialDigestSha256: ACCOUNT_DIGEST, - simulationReceiptId: retry.credential!.simulationReceiptId, - now: real.clock.now().toISOString(), - }, real.credentialTrustRoot)).toBe(true); - expect(real.issuerCalls.count).toBe(1); - }); - - test("rejects a tampered nested receipt before invoking the real issuer", async () => { - const real = await makeRealHarness("happy_path", "issue_success", { - tamperReceipt: true, - }); - const { result } = await submit(real); - expect(result.session.state).toBe("simulated_unavailable"); - expect(result.code).toBe("simulation_unavailable"); - expect(result.credential).toBeUndefined(); - expect(real.issuerCalls.count).toBe(0); - }); - - test("recovers the exact W10 receipt after processing, response loss, and clock advance", async () => { - const real = await makeRealHarness("happy_path", "issue_success", { - dropReceiptOnce: true, - }); - const first = await submit(real); - expect(first.result.session.state).toBe("simulated_unavailable"); - expect(real.biometricResults).toHaveLength(1); - real.clock.advance(1_000); - const recovered = await real.harness.gateway.retryUnavailable({ - sessionId: first.result.session.sessionId, - browserHandle: first.request.browserHandle, - idempotencyKey: "recover-receipt", - }, CONTEXT); - expect(recovered.session.state).toBe("simulated_credential_ready"); - expect(real.biometricResults).toHaveLength(2); - expect(real.biometricResults[1]).toBe(real.biometricResults[0]); - if ( - real.biometricResults[0]?.kind === SIMULATION_RECEIPT_READY_V0 && - real.biometricResults[1]?.kind === SIMULATION_RECEIPT_READY_V0 - ) { - expect(real.biometricResults[1].receipt).toBe(real.biometricResults[0].receipt); - expect(real.biometricResults[1].receipt.authentication.signatureBase64Url).toBe( - real.biometricResults[0].receipt.authentication.signatureBase64Url, - ); - } - }); - - test("recovers the exact W10 credential after processing, response loss, and clock advance", async () => { - const real = await makeRealHarness("happy_path", "issue_success", { - dropCredentialOnce: true, - }); - const first = await submit(real); - expect(first.result.session.state).toBe("simulated_issuance_unavailable"); - expect(real.issuanceResults).toHaveLength(1); - real.clock.advance(1_000); - const recovered = await real.harness.gateway.retryUnavailable({ - sessionId: first.result.session.sessionId, - browserHandle: first.request.browserHandle, - idempotencyKey: "recover-credential", - }, CONTEXT); - expect(recovered.session.state).toBe("simulated_credential_ready"); - expect(real.biometricResults[1]).toBe(real.biometricResults[0]); - expect(real.issuanceResults).toHaveLength(2); - expect(real.issuanceResults[1]).toBe(real.issuanceResults[0]); - if ( - real.issuanceResults[0]?.kind === "simulated_credential_ready_v0" && - real.issuanceResults[1]?.kind === "simulated_credential_ready_v0" - ) { - expect(recovered.credential).toEqual(real.issuanceResults[0].credential); - expect(real.issuanceResults[1].credential.authentication.signatureBase64Url).toBe( - real.issuanceResults[0].credential.authentication.signatureBase64Url, - ); - } - }); - - test("reports ready only when both real W10 ports are ready", async () => { - const real = await makeRealHarness("happy_path", "issue_success"); - expect(real.biometric.readiness()).toEqual({ ready: true }); - expect(real.issuer.readiness()).toEqual({ ready: true }); - expect(await real.harness.gateway.readiness()).toEqual({ ready: true, code: "ready" }); - expect(BIOMETRIC_SCENARIO_OUTCOME_V0.happy_path).toBe("simulated_pass"); - }); -}); diff --git a/services/session-gateway/test/session-gateway.test.ts b/services/session-gateway/test/session-gateway.test.ts deleted file mode 100644 index a2a4e25..0000000 --- a/services/session-gateway/test/session-gateway.test.ts +++ /dev/null @@ -1,508 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { SIMULATION_CAPTURE_POLICY_V0, SIMULATION_ENVIRONMENT, SIMULATION_MODE, validateFrameBundleV0 } from "../../../packages/contracts/src"; -import { GatewayErrorV0, type GatewayErrorCodeV0 } from "../src"; -import { ACCOUNT_DIGEST, CONTEXT, createBody, makeBundle, makeHarness, MutableClock, reachCaptureReady, submitReady } from "./helpers"; - -async function expectCode(operation: Promise, code: GatewayErrorCodeV0): Promise { - try { - await operation; - throw new Error("expected gateway rejection"); - } catch (error) { - expect(error).toBeInstanceOf(GatewayErrorV0); - expect((error as GatewayErrorV0).code).toBe(code); - expect((error as GatewayErrorV0).message).toBe(code); - } -} - -describe("session lifecycle and authenticated browser handle", () => { - test("creates a short-lived staging session with random identifiers and server-owned scenarios", async () => { - const firstHarness = await makeHarness(); - const secondHarness = await makeHarness(); - const first = await firstHarness.gateway.createSession(createBody(), CONTEXT); - const second = await secondHarness.gateway.createSession(createBody(), CONTEXT); - - expect(first.session.state).toBe("created"); - expect(first.session.mode).toBe("simulation"); - expect(first.session.environment).toBe("staging"); - expect(first.session.biometricScenario).toBe("happy_path"); - expect(first.session.sessionId).not.toBe(second.session.sessionId); - expect(first.session.nonceBase64Url).not.toBe(second.session.nonceBase64Url); - expect(first.browserHandle).not.toContain(first.session.sessionId); - expect(Date.parse(first.session.expiresAt) - Date.parse(first.session.createdAt)).toBe(60_000); - }); - - test("replays creation idempotently but rejects reuse against different account binding", async () => { - const { gateway } = await makeHarness(); - const first = await gateway.createSession(createBody(), CONTEXT); - const replay = await gateway.createSession(createBody(), CONTEXT); - expect(replay.session).toEqual(first.session); - expect(replay.browserHandle).toBe(first.browserHandle); - await expectCode(gateway.createSession({ ...createBody(), accountId: "other-account" }, CONTEXT), "binding_mismatch"); - }); - - test("singleflights concurrent creation by RP, idempotency key, and binding digest", async () => { - let announceStarted: (() => void) | undefined; - let release: (() => void) | undefined; - let selections = 0; - const started = new Promise((resolve) => { announceStarted = resolve; }); - const held = new Promise((resolve) => { release = resolve; }); - const harness = await makeHarness({ - scenarioSelector: { - async select() { - selections += 1; - announceStarted?.(); - await held; - return { biometric: "happy_path", issuance: "issue_success" }; - }, - }, - }); - const first = harness.gateway.createSession(createBody(), CONTEXT); - await started; - const duplicate = harness.gateway.createSession(createBody(), CONTEXT); - await expectCode(harness.gateway.createSession({ ...createBody(), accountId: "other-account" }, CONTEXT), "binding_mismatch"); - expect(selections).toBe(1); - release?.(); - const [firstResult, duplicateResult] = await Promise.all([first, duplicate]); - expect(duplicateResult).toBe(firstResult); - expect(duplicateResult.session.sessionId).toBe(firstResult.session.sessionId); - expect(selections).toBe(1); - }); - - test("enforces exact origin, RP, handle authentication, and expiry", async () => { - const harness = await makeHarness(); - const created = await harness.gateway.createSession(createBody(), CONTEXT); - await expectCode(harness.gateway.getStatus({ sessionId: created.session.sessionId, browserHandle: created.browserHandle }, { ...CONTEXT, origin: "https://evil.example" }), "origin_forbidden"); - await expectCode(harness.gateway.getStatus({ sessionId: created.session.sessionId, browserHandle: `${created.browserHandle}x` }, CONTEXT), "unauthorized"); - harness.clock.advance(60_000); - await expectCode(harness.gateway.getStatus({ sessionId: created.session.sessionId, browserHandle: created.browserHandle }, CONTEXT), "expired"); - expect(harness.events.at(-1)?.state).toBe("expired"); - }); - - test("requires a valid ceremony and preserves passkey idempotency", async () => { - const harness = await makeHarness(); - const created = await harness.gateway.createSession(createBody(), CONTEXT); - const request = { sessionId: created.session.sessionId, browserHandle: created.browserHandle, idempotencyKey: "passkey-key", ceremony: "valid-ceremony" }; - await expectCode(harness.gateway.completePasskey({ ...request, ceremony: "bad" }, CONTEXT), "unauthorized"); - const first = await harness.gateway.completePasskey(request, CONTEXT); - const replay = await harness.gateway.completePasskey(request, CONTEXT); - expect(first.session.state).toBe("passkey_complete"); - expect(replay).toEqual(first); - await expectCode(harness.gateway.completePasskey({ ...request, ceremony: "different-valid-shape" }, CONTEXT), "binding_mismatch"); - }); - - test("singleflights passkey completion and rejects conflicting session mutations", async () => { - let announceStarted: (() => void) | undefined; - let release: (() => void) | undefined; - let verifications = 0; - const started = new Promise((resolve) => { announceStarted = resolve; }); - const held = new Promise((resolve) => { release = resolve; }); - const harness = await makeHarness({ - ceremonyVerifier: { - async verify(ceremony) { - verifications += 1; - announceStarted?.(); - await held; - return ceremony === "valid-ceremony"; - }, - }, - }); - const created = await harness.gateway.createSession(createBody(), CONTEXT); - const request = { sessionId: created.session.sessionId, browserHandle: created.browserHandle, idempotencyKey: "passkey", ceremony: "valid-ceremony" }; - const first = harness.gateway.completePasskey(request, CONTEXT); - await started; - const duplicate = harness.gateway.completePasskey(request, CONTEXT); - await expectCode(harness.gateway.completePasskey({ ...request, ceremony: "conflict" }, CONTEXT), "binding_mismatch"); - await expectCode(harness.gateway.cancel({ sessionId: created.session.sessionId, browserHandle: created.browserHandle }, CONTEXT), "binding_mismatch"); - expect(verifications).toBe(1); - release?.(); - const [firstResult, duplicateResult] = await Promise.all([first, duplicate]); - expect(duplicateResult).toBe(firstResult); - expect(firstResult.session.state).toBe("passkey_complete"); - expect(verifications).toBe(1); - }); - - test("requires authenticated server context for scenario selection", async () => { - const harness = await makeHarness(); - await expectCode(harness.gateway.createSession(createBody(), { ...CONTEXT, authenticatedServerContext: undefined }), "unauthorized"); - }); - - test("allows only frozen transitions and rotates the nonce for an approved retake", async () => { - const harness = await makeHarness({}, { biometric: "capture_retry", issuance: "issue_success" }); - const { ready } = await reachCaptureReady(harness); - const result = await submitReady(harness, ready); - expect(result.session.state).toBe("simulated_retry"); - expect(result.retryable).toBe(true); - const retake = await harness.gateway.prepareCapture({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle }, CONTEXT); - expect(retake.session.state).toBe("capture_ready"); - expect(retake.session.nonceBase64Url).not.toBe(ready.session.nonceBase64Url); - await expectCode(harness.gateway.prepareCapture({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle }, CONTEXT), "invalid_state"); - const secondBundle = await makeBundle(retake.session.sessionId, retake.session.nonceBase64Url); - await harness.gateway.submitCapture({ sessionId: retake.session.sessionId, browserHandle: retake.browserHandle, idempotencyKey: "capture-two", nonceBase64Url: retake.session.nonceBase64Url, frameBundle: secondBundle }, CONTEXT); - expect(harness.calls.biometricRequests[1]?.requestId).not.toBe(harness.calls.biometricRequests[0]?.requestId); - expect(harness.calls.biometricRequests[1]?.idempotencyKey).not.toBe(harness.calls.biometricRequests[0]?.idempotencyKey); - }); -}); - -describe("strict metadata-only capture boundary", () => { - test("accepts a canonical metadata bundle and authenticates every downstream binding", async () => { - const harness = await makeHarness(); - const { ready } = await reachCaptureReady(harness); - const result = await submitReady(harness, ready); - expect(result.session.state).toBe("simulated_credential_ready"); - expect(result.credential?.claims.credentialClass).toBe("not_selfie_check"); - expect(harness.calls.biometric).toBe(1); - expect(harness.calls.issuance).toBe(1); - const biometric = harness.calls.biometricRequests[0]!; - const issuance = harness.calls.issuanceRequests[0]!; - expect(biometric.scenario).toBe("happy_path"); - expect(biometric.sessionId).toBe(ready.session.sessionId); - expect(biometric.accountPublicMaterialDigestSha256).toBe(ACCOUNT_DIGEST); - expect(issuance.biometricReceipt.outcome).toBe("simulated_pass"); - expect(issuance.biometricReceipt.authentication.signatureBase64Url.length).toBeGreaterThan(20); - }); - - test("rejects unknown fields, browser scenario override, media values, and arbitrary fixture names", async () => { - const harness = await makeHarness(); - const { ready } = await reachCaptureReady(harness); - const bundle = await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url); - const base = { sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "capture", nonceBase64Url: ready.session.nonceBase64Url, frameBundle: bundle }; - await expectCode(harness.gateway.submitCapture({ ...base, scenario: "spoof_reject" }, CONTEXT), "invalid_request"); - await expectCode(harness.gateway.submitCapture({ ...base, frameBundle: { ...bundle, pixels: "data:image/private;base64,AAAA" } }, CONTEXT), "artifact_invalid"); - const fixture = await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url, "synthetic_fixture"); - const arbitrary = { ...fixture, syntheticFixtureId: "https://example.test/private.mov" }; - arbitrary.artifactDigestSha256 = await (await import("../../../packages/contracts/src")).computeFrameBundleDigestV0(arbitrary); - await expectCode(harness.gateway.submitCapture({ ...base, idempotencyKey: "capture-fixture", frameBundle: arbitrary }, CONTEXT), "artifact_invalid"); - expect(harness.calls.biometric).toBe(0); - }); - - test("enforces session, account, nonce, policy, digest, dimensions, counts, and byte bindings", async () => { - const cases: Array<(bundle: Awaited>) => unknown> = [ - (bundle) => ({ ...bundle, sessionId: "wrong" }), - (bundle) => ({ ...bundle, accountPublicMaterialDigestSha256: "d".repeat(64) }), - (bundle) => ({ ...bundle, nonceDigestSha256: "d".repeat(64) }), - (bundle) => ({ ...bundle, policyId: "wrong" }), - (bundle) => ({ ...bundle, artifactDigestSha256: "d".repeat(64) }), - (bundle) => ({ ...bundle, frames: [] }), - (bundle) => ({ ...bundle, frames: [{ ...bundle.frames[0], width: 2048 }] }), - (bundle) => ({ ...bundle, totalByteLength: 8_388_609 }), - ]; - for (const mutate of cases) { - const harness = await makeHarness(); - const { ready } = await reachCaptureReady(harness); - const bundle = await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url); - await expectCode(harness.gateway.submitCapture({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "capture", nonceBase64Url: ready.session.nonceBase64Url, frameBundle: mutate(bundle) }, CONTEXT), "artifact_invalid"); - } - }); - - test("rejects oversized bodies before inspecting nested fields", async () => { - const harness = await makeHarness({ maxRequestBodyBytes: 128 }); - const sentinel = new Proxy({}, { ownKeys() { throw new Error("nested body inspected"); } }); - await expectCode(harness.gateway.createSession({ ...createBody(), padding: "x".repeat(1000) }, CONTEXT), "body_too_large"); - await expectCode(harness.gateway.createSession(sentinel, CONTEXT), "body_too_large"); - }); - - test("accepts only an allowlisted named synthetic fixture under synthetic policy", async () => { - const harness = await makeHarness({ - capturePolicy: { - version: SIMULATION_CAPTURE_POLICY_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - policyId: "policy-v0", - dataMode: "synthetic_fixture", - encoding: "rgba8", - minFrames: 1, - maxFrames: 2, - maxWidth: 1024, - maxHeight: 1024, - maxFrameBytes: 4_194_304, - maxTotalBytes: 8_388_608, - captureOffsetsAreDiagnosticOnly: true, - arrayOrderHasBiometricMeaning: false, - qualityPolicyId: "quality-v0", - }, - }); - const { ready } = await reachCaptureReady(harness); - const frameBundle = await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url, "synthetic_fixture"); - const result = await harness.gateway.submitCapture({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "capture", nonceBase64Url: ready.session.nonceBase64Url, frameBundle }, CONTEXT); - expect(result.session.state).toBe("simulated_credential_ready"); - }); - - test("consumes each nonce once while returning the same authoritative idempotent status", async () => { - const harness = await makeHarness(); - const { ready } = await reachCaptureReady(harness); - const bundle = await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url); - const request = { sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "capture", nonceBase64Url: ready.session.nonceBase64Url, frameBundle: bundle }; - const first = await harness.gateway.submitCapture(request, CONTEXT); - const replay = await harness.gateway.submitCapture(request, CONTEXT); - expect(replay.session).toEqual(first.session); - expect(replay.code).toBe("simulated_credential_ready"); - expect(replay).toBe(first); - expect(replay.credential).toEqual(first.credential); - expect(replay.credential?.authentication.signatureBase64Url).toBe( - first.credential?.authentication.signatureBase64Url, - ); - expect(Object.isFrozen(replay)).toBe(true); - expect(Object.isFrozen(replay.credential)).toBe(true); - expect(Object.isFrozen(replay.credential?.claims)).toBe(true); - expect(Object.isFrozen(replay.credential?.authentication)).toBe(true); - expect(harness.calls.biometric).toBe(1); - await expectCode(harness.gateway.submitCapture({ ...request, idempotencyKey: "different" }, CONTEXT), "replay_rejected"); - await expectCode(harness.gateway.submitCapture({ ...request, frameBundle: { ...bundle, artifactDigestSha256: "d".repeat(64) } }, CONTEXT), "binding_mismatch"); - }); - - test("singleflights identical capture and rejects a concurrent key or artifact mismatch", async () => { - const harness = await makeHarness(); - let announceStarted: (() => void) | undefined; - let release: (() => void) | undefined; - const started = new Promise((resolve) => { announceStarted = resolve; }); - const held = new Promise((resolve) => { release = resolve; }); - harness.biometricBarrier = { started: () => announceStarted?.(), release: held }; - const { ready } = await reachCaptureReady(harness); - const frameBundle = await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url); - const request = { sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "capture", nonceBase64Url: ready.session.nonceBase64Url, frameBundle }; - const first = harness.gateway.submitCapture(request, CONTEXT); - await started; - const duplicate = harness.gateway.submitCapture(request, CONTEXT); - await expectCode(harness.gateway.submitCapture({ ...request, idempotencyKey: "capture-other" }, CONTEXT), "binding_mismatch"); - await expectCode(harness.gateway.submitCapture({ ...request, frameBundle: { ...frameBundle, artifactDigestSha256: "d".repeat(64) } }, CONTEXT), "binding_mismatch"); - await expectCode(harness.gateway.cancel({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle }, CONTEXT), "binding_mismatch"); - expect(harness.calls.biometric).toBe(1); - release?.(); - const [firstResult, duplicateResult] = await Promise.all([first, duplicate]); - expect(duplicateResult).toBe(firstResult); - expect(firstResult.credential).toBeDefined(); - expect(harness.calls.biometric).toBe(1); - expect(harness.calls.issuance).toBe(1); - }); -}); - -describe("simulator failure safety and issuance gate", () => { - test.each([ - ["spoof_reject", "simulated_reject", "simulation_reject", false], - ["capture_retry", "simulated_retry", "simulation_retry", false], - ["dependency_unavailable", "simulated_unavailable", "simulation_unavailable", false], - ] as const)("maps %s deterministically without entering issuance", async (scenario, state, code, expectedIssuance) => { - const harness = await makeHarness({}, { biometric: scenario, issuance: "issue_success" }); - const { ready } = await reachCaptureReady(harness); - const result = await submitReady(harness, ready); - expect(result.session.state).toBe(state); - expect(result.code).toBe(code); - expect(harness.calls.issuance > 0).toBe(expectedIssuance); - }); - - test.each(["throw", "malformed", "tampered", "port_error"] as const)("fails closed on %s biometric response", async (mode) => { - const harness = await makeHarness(); - harness.biometricMode = mode; - const { ready } = await reachCaptureReady(harness); - const result = await submitReady(harness, ready); - expect(result.session.state).toBe("simulated_unavailable"); - expect(result.code).toBe("simulation_unavailable"); - expect(harness.calls.issuance).toBe(0); - }); - - test.each(["throw", "malformed", "tampered", "wrong_outcome", "port_error"] as const)("fails closed on %s issuance response", async (mode) => { - const harness = await makeHarness(); - harness.issuanceMode = mode; - const { ready } = await reachCaptureReady(harness); - const result = await submitReady(harness, ready); - expect(result.session.state).toBe("simulated_issuance_unavailable"); - expect(result.code).toBe("issuance_unavailable"); - expect(result.credential).toBeUndefined(); - }); - - test.each([ - ["issue_reject", "simulated_issuance_reject", "issuance_rejected", false], - ["issue_unavailable", "simulated_issuance_unavailable", "issuance_unavailable", true], - ] as const)("maps %s to its distinct V2 issuance state", async (scenario, state, code, retryable) => { - const harness = await makeHarness({}, { biometric: "happy_path", issuance: scenario }); - const { ready } = await reachCaptureReady(harness); - const result = await submitReady(harness, ready); - expect(result.session.state).toBe(state); - expect(result.code).toBe(code); - expect(result.retryable).toBe(retryable); - }); - - test("retries an unavailable call with stable downstream idempotency and authoritative status", async () => { - const harness = await makeHarness(); - harness.biometricMode = "throw"; - const { ready } = await reachCaptureReady(harness); - const first = await submitReady(harness, ready); - expect(first.retryable).toBe(true); - harness.biometricMode = "normal"; - const retry = await harness.gateway.retryUnavailable({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "retry-1" }, CONTEXT); - expect(retry.session.state).toBe("simulated_credential_ready"); - expect(harness.calls.biometricRequests[0]?.idempotencyKey).toBe(harness.calls.biometricRequests[1]?.idempotencyKey); - }); - - test("retries issuance unavailability without retaining a receipt or changing issuance idempotency", async () => { - const harness = await makeHarness(); - harness.issuanceMode = "throw"; - const { ready } = await reachCaptureReady(harness); - const first = await submitReady(harness, ready); - expect(first.session.state).toBe("simulated_issuance_unavailable"); - harness.issuanceMode = "normal"; - const retry = await harness.gateway.retryUnavailable({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "issue-retry" }, CONTEXT); - expect(retry.session.state).toBe("simulated_credential_ready"); - expect(harness.calls.issuanceRequests[0]?.idempotencyKey).toBe(harness.calls.issuanceRequests[1]?.idempotencyKey); - expect(harness.calls.biometric).toBe(2); - }); - - test("singleflights unavailable retry and rejects a concurrent retry key", async () => { - const harness = await makeHarness(); - harness.biometricMode = "throw"; - const { ready } = await reachCaptureReady(harness); - await submitReady(harness, ready); - - harness.biometricMode = "normal"; - let announceStarted: (() => void) | undefined; - let release: (() => void) | undefined; - const started = new Promise((resolve) => { announceStarted = resolve; }); - const held = new Promise((resolve) => { release = resolve; }); - harness.biometricBarrier = { started: () => announceStarted?.(), release: held }; - const retryRequest = { sessionId: ready.session.sessionId, browserHandle: ready.browserHandle, idempotencyKey: "retry" }; - const first = harness.gateway.retryUnavailable(retryRequest, CONTEXT); - await started; - const duplicate = harness.gateway.retryUnavailable(retryRequest, CONTEXT); - await expectCode(harness.gateway.retryUnavailable({ ...retryRequest, idempotencyKey: "retry-other" }, CONTEXT), "binding_mismatch"); - await expectCode(harness.gateway.cancel({ sessionId: ready.session.sessionId, browserHandle: ready.browserHandle }, CONTEXT), "binding_mismatch"); - expect(harness.calls.biometric).toBe(2); - release?.(); - const [firstResult, duplicateResult] = await Promise.all([first, duplicate]); - expect(duplicateResult).toBe(firstResult); - expect(firstResult.session.state).toBe("simulated_credential_ready"); - expect(harness.calls.biometric).toBe(2); - expect(harness.calls.issuance).toBe(1); - }); - - test("bounds simulator time and global operation concurrency", async () => { - let announceStarted: (() => void) | undefined; - let releaseCall: ((value: unknown) => void) | undefined; - const started = new Promise((resolve) => { announceStarted = resolve; }); - const held = new Promise((resolve) => { releaseCall = resolve; }); - const harness = await makeHarness({ - maxConcurrentOperations: 1, - simulatorTimeoutMs: 1_000, - biometricClient: { - readiness() { return { ready: true }; }, - async verify() { announceStarted?.(); return await held as never; }, - }, - }); - const first = await reachCaptureReady(harness); - const secondCreated = await harness.gateway.createSession(createBody("create-two"), CONTEXT); - await harness.gateway.completePasskey({ sessionId: secondCreated.session.sessionId, browserHandle: secondCreated.browserHandle, idempotencyKey: "passkey-two", ceremony: "valid-ceremony" }, CONTEXT); - const second = await harness.gateway.prepareCapture({ sessionId: secondCreated.session.sessionId, browserHandle: secondCreated.browserHandle }, CONTEXT); - const firstBundle = await makeBundle(first.ready.session.sessionId, first.ready.session.nonceBase64Url); - const firstOperation = harness.gateway.submitCapture({ sessionId: first.ready.session.sessionId, browserHandle: first.ready.browserHandle, idempotencyKey: "capture-one", nonceBase64Url: first.ready.session.nonceBase64Url, frameBundle: firstBundle }, CONTEXT); - await started; - const secondBundle = await makeBundle(second.session.sessionId, second.session.nonceBase64Url); - await expectCode(harness.gateway.submitCapture({ sessionId: second.session.sessionId, browserHandle: second.browserHandle, idempotencyKey: "capture-two", nonceBase64Url: second.session.nonceBase64Url, frameBundle: secondBundle }, CONTEXT), "resource_busy"); - releaseCall?.({}); - expect((await firstOperation).code).toBe("simulation_unavailable"); - - const timeoutHarness = await makeHarness({ - simulatorTimeoutMs: 5, - biometricClient: { readiness() { return { ready: true }; }, async verify() { return new Promise(() => undefined); } }, - }); - const timeoutReady = await reachCaptureReady(timeoutHarness); - expect((await submitReady(timeoutHarness, timeoutReady.ready)).code).toBe("simulation_unavailable"); - }); - - test("expires an in-flight session instead of converting timeout into retryable success", async () => { - const clock = new MutableClock(); - const harness = await makeHarness({ - clock, - biometricClient: { - readiness() { return { ready: true }; }, - async verify() { clock.advance(60_000); throw new Error("late response"); }, - }, - }); - const { ready } = await reachCaptureReady(harness); - const result = await submitReady(harness, ready); - expect(result.session.state).toBe("expired"); - expect(result.code).toBe("expired"); - expect(result.retryable).toBe(false); - }); - - test("exposes readiness and immediate kill-switch behavior", async () => { - const enabled = await makeHarness(); - expect(await enabled.gateway.readiness()).toEqual({ ready: true, code: "ready" }); - const disabled = await makeHarness({ enabled: false }); - expect(await disabled.gateway.readiness()).toEqual({ ready: false, code: "disabled" }); - await expectCode(disabled.gateway.createSession(createBody(), CONTEXT), "gateway_disabled"); - }); - - test("readiness rejects reused public-key material regardless of key ID", async () => { - const baseline = await makeHarness(); - const requestRoot = baseline.config.biometricRequestSigner.trustRoot; - const sameId = await makeHarness({ - biometricRequestSigner: baseline.config.biometricRequestSigner, - biometricReceiptTrustRoot: requestRoot, - }); - expect(await sameId.gateway.readiness()).toEqual({ - ready: false, - code: "dependency_unavailable", - }); - const differentId = await makeHarness({ - biometricRequestSigner: baseline.config.biometricRequestSigner, - biometricReceiptTrustRoot: { ...requestRoot, keyId: "different-purpose-id" }, - }); - expect(await differentId.gateway.readiness()).toEqual({ - ready: false, - code: "dependency_unavailable", - }); - }); -}); - -describe("storage and redaction", () => { - test("audit records contain only allowlisted transaction fields", async () => { - const harness = await makeHarness(); - const { ready } = await reachCaptureReady(harness); - await submitReady(harness, ready); - for (const event of harness.events) { - expect(Object.keys(event).every((key) => ["event", "sessionId", "state", "code"].includes(key))).toBe(true); - } - const serialized = JSON.stringify(harness.events); - expect(serialized).not.toContain("signatureBase64Url"); - expect(serialized).not.toContain("credential-"); - expect(serialized).not.toContain("frameDigestSha256"); - expect(serialized).not.toContain("valid-ceremony"); - }); - - test("purges expired records by TTL", async () => { - const harness = await makeHarness(); - await harness.gateway.createSession(createBody(), CONTEXT); - harness.clock.advance(60_000); - expect(harness.gateway.purgeExpired()).toBe(1); - expect(harness.gateway.purgeExpired()).toBe(0); - }); - - test("persisted records omit handles, ceremonies, signatures, and credential bodies", async () => { - const records: unknown[] = []; - const byId = new Map(); - const repository = { - get(sessionId: string) { return byId.get(sessionId); }, - put(record: any) { byId.set(record.session.sessionId, record); records.push(record); }, - findByCreationIdempotency() { return undefined; }, - purgeExpired() { return 0; }, - }; - const harness = await makeHarness({}, { biometric: "happy_path", issuance: "issue_success" }, repository); - const { ready } = await reachCaptureReady(harness); - await submitReady(harness, ready); - const serialized = JSON.stringify(records); - expect(serialized).not.toContain(ready.browserHandle); - expect(serialized).not.toContain("valid-ceremony"); - expect(serialized).not.toContain("signatureBase64Url"); - expect(serialized).not.toContain("credential-"); - expect(serialized).not.toContain("authentication"); - expect(serialized).toContain("biometricRequestedAt"); - expect(serialized).toContain("issuanceRequestedAt"); - }); - - test("contract validator independently rejects media and unknown descriptor fields", async () => { - const harness = await makeHarness(); - const { ready } = await reachCaptureReady(harness); - const bundle = await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url); - expect(await validateFrameBundleV0({ ...bundle, mediaUrl: "https://example.test/face" }, ready.capturePolicy)).toContain("unknown.mediaUrl"); - expect(await validateFrameBundleV0({ ...bundle, frames: [{ ...bundle.frames[0], bytesBase64: "AAAA" }] }, ready.capturePolicy)).toContain("frames[0].unknown.bytesBase64"); - }); -}); diff --git a/services/simulated-biometric-verifier/README.md b/services/simulated-biometric-verifier/README.md deleted file mode 100644 index cc757bc..0000000 --- a/services/simulated-biometric-verifier/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Simulated biometric verifier - -This staging-only service authenticates a gateway request, validates all server-owned bindings and the metadata-only or allowlisted synthetic artifact, then maps the authenticated scenario to one deterministic `SimulationReceiptV0` outcome. - -Configuration injects the gateway trust root, a distinct Ed25519 receipt-signing key, clock, TTL, fixture allowlist, and bounded idempotency-cache capacity. Audit events contain only an event name and optional stable reason code. Production runtime configuration rejects before reading the request. - -It does not inspect pixels and makes no camera-provenance, model, liveness, spoof-detection, or trusted-execution claim. diff --git a/services/simulated-biometric-verifier/package.json b/services/simulated-biometric-verifier/package.json deleted file mode 100644 index 7e424c6..0000000 --- a/services/simulated-biometric-verifier/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "@world-id/web-authenticator-simulated-biometric-verifier", - "private": true, - "version": "0.0.0", - "type": "module", - "exports": { - ".": "./src/index.ts" - }, - "scripts": { - "test": "bun test test", - "lint": "eslint ." - } -} diff --git a/services/simulated-biometric-verifier/src/index.ts b/services/simulated-biometric-verifier/src/index.ts deleted file mode 100644 index 44852ba..0000000 --- a/services/simulated-biometric-verifier/src/index.ts +++ /dev/null @@ -1,263 +0,0 @@ -import { - BIOMETRIC_SCENARIO_OUTCOME_V0, - BIOMETRIC_SCENARIO_REASON_V0, - BIOMETRIC_SIMULATOR_AUDIENCE_V0, - BIOMETRIC_VERIFICATION_PORT_V0, - base64UrlToBytes, - bytesToArrayBuffer, - bytesToBase64Url, - canonicalizeJsonV0, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - SIMULATION_RECEIPT_V0, - SimulationArtifactInProductionError, - stagingSignaturePreimageV0, - verifyBiometricSimulationRequestV0, - type BiometricSimulationRequestV0, - type HexSha256, - type RuntimeEnvironment, - type SimulationReceiptV0, - type StagingAuthenticationV0, - type StagingEd25519TrustRootV0, -} from "../../../packages/contracts/src"; -import { - BIOMETRIC_SIMULATION_ERROR_V0, - SIMULATION_RECEIPT_READY_V0, - type BiometricVerificationInvocationV0, - type BiometricVerificationPortV0, - type BiometricVerificationResultV0, -} from "../../../packages/biometric-verification-port/src"; - -export interface StagingEd25519SignerV0 { - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly audience: typeof BIOMETRIC_SIMULATOR_AUDIENCE_V0; - readonly keyId: string; - readonly privateKey: CryptoKey; -} - -export interface SimulatorAuditEventV0 { - readonly event: "request_rejected" | "receipt_created" | "idempotent_replay"; - readonly reasonCode?: string; -} - -export interface SimulatedBiometricVerifierConfigV0 { - readonly runtimeEnvironment: RuntimeEnvironment; - readonly gatewayTrustRoot: StagingEd25519TrustRootV0; - readonly receiptSigner: StagingEd25519SignerV0; - readonly simulatorVersion: string; - readonly receiptTtlMs: number; - readonly maxCacheEntries: number; - readonly allowedSyntheticFixtureIds: readonly string[]; - readonly now: () => Date; - readonly audit?: (event: SimulatorAuditEventV0) => void; -} - -interface CachedResult { - readonly fingerprint: string; - readonly requestId: string; - readonly result: BiometricVerificationResultV0; - readonly expiresAtMs: number; -} - -const invalidRequest = (): BiometricVerificationResultV0 => ({ - kind: BIOMETRIC_SIMULATION_ERROR_V0, - reasonCode: "invalid_request", -}); - -async function sha256Hex(value: string): Promise { - const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value)); - return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join(""); -} - -function signerIsReady(signer: StagingEd25519SignerV0): boolean { - return ( - signer.environment === SIMULATION_ENVIRONMENT && - signer.audience === BIOMETRIC_SIMULATOR_AUDIENCE_V0 && - signer.keyId.length > 0 && - signer.privateKey.type === "private" && - signer.privateKey.algorithm.name === "Ed25519" && - signer.privateKey.usages.includes("sign") - ); -} - -function trustRootIsReady(trustRoot: StagingEd25519TrustRootV0): boolean { - try { - return ( - trustRoot.environment === SIMULATION_ENVIRONMENT && - trustRoot.audience === BIOMETRIC_SIMULATOR_AUDIENCE_V0 && - trustRoot.keyId.length > 0 && - base64UrlToBytes(trustRoot.publicKeyRawBase64Url).byteLength === 32 - ); - } catch { - return false; - } -} - -function emitAudit( - audit: SimulatedBiometricVerifierConfigV0["audit"], - event: SimulatorAuditEventV0, -): void { - try { - audit?.(Object.freeze(event)); - } catch { - // Audit transport failures never change a simulator result or expose their free-text error. - } -} - -async function signReceipt( - receipt: SimulationReceiptV0, - signer: StagingEd25519SignerV0, -): Promise { - const signature = await crypto.subtle.sign( - { name: "Ed25519" }, - signer.privateKey, - bytesToArrayBuffer(stagingSignaturePreimageV0(receipt as unknown as Record)), - ); - return { - ...receipt, - authentication: { - ...receipt.authentication, - signatureBase64Url: bytesToBase64Url(new Uint8Array(signature)), - }, - }; -} - -export class SimulatedBiometricVerifierV0 implements BiometricVerificationPortV0 { - readonly #config: SimulatedBiometricVerifierConfigV0; - readonly #byIdempotencyKey = new Map(); - readonly #requestIds = new Map(); - - constructor(config: SimulatedBiometricVerifierConfigV0) { - this.#config = config; - } - - readiness(): Readonly<{ ready: boolean; reasonCode?: "service_not_ready" }> { - const ready = - this.#config.runtimeEnvironment === "staging" && - trustRootIsReady(this.#config.gatewayTrustRoot) && - signerIsReady(this.#config.receiptSigner) && - this.#config.receiptSigner.keyId !== this.#config.gatewayTrustRoot.keyId && - this.#config.simulatorVersion.length > 0 && - this.#config.allowedSyntheticFixtureIds.every( - (fixtureId) => fixtureId.length > 0 && !fixtureId.includes("://"), - ) && - new Set(this.#config.allowedSyntheticFixtureIds).size === - this.#config.allowedSyntheticFixtureIds.length && - Number.isSafeInteger(this.#config.receiptTtlMs) && - this.#config.receiptTtlMs > 0 && - Number.isSafeInteger(this.#config.maxCacheEntries) && - this.#config.maxCacheEntries > 0; - return Object.freeze(ready ? { ready: true } : { ready: false, reasonCode: "service_not_ready" }); - } - - async verify(invocation: BiometricVerificationInvocationV0): Promise { - // Production isolation must precede every request getter, including outcome/authentication sentinels. - if (this.#config.runtimeEnvironment === "production") { - throw new SimulationArtifactInProductionError(); - } - if (!this.readiness().ready) return { kind: BIOMETRIC_SIMULATION_ERROR_V0, reasonCode: "service_not_ready" }; - - try { - const now = this.#config.now(); - const expected = { ...invocation.expected, runtimeEnvironment: "staging" as const, now: now.toISOString() }; - if (!(await verifyBiometricSimulationRequestV0( - invocation.request, - expected, - invocation.capturePolicy, - this.#config.gatewayTrustRoot, - ))) { - emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "invalid_request" }); - return invalidRequest(); - } - - const request = invocation.request as BiometricSimulationRequestV0; - if ( - request.frameBundle.dataMode === "synthetic_fixture" && - (request.frameBundle.syntheticFixtureId === undefined || - !this.#config.allowedSyntheticFixtureIds.includes(request.frameBundle.syntheticFixtureId)) - ) { - emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "invalid_request" }); - return invalidRequest(); - } - const fingerprint = await sha256Hex(canonicalizeJsonV0(request)); - for (const [key, entry] of this.#byIdempotencyKey) { - if (entry.expiresAtMs <= now.getTime()) { - this.#byIdempotencyKey.delete(key); - this.#requestIds.delete(entry.requestId); - } - } - const cached = this.#byIdempotencyKey.get(request.idempotencyKey); - if (cached) { - if (cached.fingerprint !== fingerprint || cached.requestId !== request.requestId) { - emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "idempotency_conflict" }); - return { kind: BIOMETRIC_SIMULATION_ERROR_V0, reasonCode: "idempotency_conflict" }; - } - emitAudit(this.#config.audit, { event: "idempotent_replay" }); - return cached.result; - } - const knownIdempotencyKey = this.#requestIds.get(request.requestId); - if (knownIdempotencyKey !== undefined && knownIdempotencyKey !== request.idempotencyKey) { - emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "request_replay" }); - return { kind: BIOMETRIC_SIMULATION_ERROR_V0, reasonCode: "request_replay" }; - } - if (this.#byIdempotencyKey.size >= this.#config.maxCacheEntries) { - emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "service_not_ready" }); - return { kind: BIOMETRIC_SIMULATION_ERROR_V0, reasonCode: "service_not_ready" }; - } - - const issuedAt = now.toISOString(); - const expiresAt = new Date( - Math.min(Date.parse(request.expiresAt), now.getTime() + this.#config.receiptTtlMs), - ).toISOString(); - if (Date.parse(expiresAt) <= now.getTime()) return invalidRequest(); - const receiptId = `sim-receipt-${(await sha256Hex(`biometric-receipt-v0:${fingerprint}`)).slice(0, 32)}`; - const unsigned: SimulationReceiptV0 = { - kind: SIMULATION_RECEIPT_V0, - version: BIOMETRIC_VERIFICATION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, - receiptId, - requestId: request.requestId, - simulatorVersion: this.#config.simulatorVersion, - scenario: request.scenario, - sessionId: request.sessionId, - nonceDigestSha256: request.nonceDigestSha256, - idempotencyKey: request.idempotencyKey, - accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, - capturePolicyId: request.capturePolicyId, - artifactDigestSha256: request.frameBundle.artifactDigestSha256, - outcome: BIOMETRIC_SCENARIO_OUTCOME_V0[request.scenario], - reasonCode: BIOMETRIC_SCENARIO_REASON_V0[request.scenario], - issuedAt, - expiresAt, - authentication: { - scheme: "staging-ed25519", - keyId: this.#config.receiptSigner.keyId, - signatureBase64Url: "pending", - } satisfies StagingAuthenticationV0, - }; - const signedReceipt = await signReceipt(unsigned, this.#config.receiptSigner); - const receipt = Object.freeze({ - ...signedReceipt, - authentication: Object.freeze({ ...signedReceipt.authentication }), - }); - const result: BiometricVerificationResultV0 = Object.freeze({ - kind: SIMULATION_RECEIPT_READY_V0, - receipt, - }); - this.#byIdempotencyKey.set(request.idempotencyKey, { - fingerprint, - requestId: request.requestId, - result, - expiresAtMs: Date.parse(expiresAt), - }); - this.#requestIds.set(request.requestId, request.idempotencyKey); - emitAudit(this.#config.audit, { event: "receipt_created" }); - return result; - } catch { - emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "invalid_request" }); - return invalidRequest(); - } - } -} diff --git a/services/simulated-biometric-verifier/test/simulated-biometric-verifier.test.ts b/services/simulated-biometric-verifier/test/simulated-biometric-verifier.test.ts deleted file mode 100644 index 3eba26b..0000000 --- a/services/simulated-biometric-verifier/test/simulated-biometric-verifier.test.ts +++ /dev/null @@ -1,426 +0,0 @@ -import { beforeAll, describe, expect, test } from "bun:test"; -import { - BIOMETRIC_SCENARIO_OUTCOME_V0, - BIOMETRIC_SCENARIO_REASON_V0, - BIOMETRIC_SIMULATION_REQUEST_V0, - BIOMETRIC_SIMULATOR_AUDIENCE_V0, - BIOMETRIC_VERIFICATION_PORT_V0, - bytesToArrayBuffer, - bytesToBase64Url, - computeFrameBundleDigestV0, - FRAME_BUNDLE_V0, - FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - SIMULATION_CAPTURE_POLICY_V0, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - stagingSignaturePreimageV0, - verifySimulationReceiptV0, - type BiometricSimulationRequestV0, - type BiometricSimulationScenarioV0, - type ExpectedBiometricSimulationRequestV0, - type FrameBundleV0, - type HexSha256, - type SimulationCapturePolicyV0, - type StagingAuthenticationV0, - type StagingEd25519TrustRootV0, -} from "../../../packages/contracts/src"; -import { SimulatedBiometricVerifierV0, type SimulatorAuditEventV0 } from "../src"; - -const ZERO_HASH = "0".repeat(64) as HexSha256; -const ONE_HASH = "1".repeat(64) as HexSha256; -const TWO_HASH = "2".repeat(64) as HexSha256; -const NOW = new Date("2026-09-02T18:30:00.000Z"); - -interface TestSigner { - readonly privateKey: CryptoKey; - readonly trustRoot: StagingEd25519TrustRootV0; -} - -let gatewaySigner: TestSigner; -let receiptSigner: TestSigner; -let wrongSigner: TestSigner; - -async function createSigner(audience: string, keyId: string): Promise { - const pair = (await crypto.subtle.generateKey( - { name: "Ed25519" }, - true, - ["sign", "verify"], - )) as CryptoKeyPair; - const raw = new Uint8Array(await crypto.subtle.exportKey("raw", pair.publicKey)); - return { - privateKey: pair.privateKey, - trustRoot: { - environment: SIMULATION_ENVIRONMENT, - audience, - keyId, - publicKeyRawBase64Url: bytesToBase64Url(raw), - }, - }; -} - -async function sign( - artifact: T, - signer: TestSigner, -): Promise { - const unsigned = { - ...artifact, - authentication: { - scheme: "staging-ed25519" as const, - keyId: signer.trustRoot.keyId, - signatureBase64Url: "pending", - }, - }; - const signature = await crypto.subtle.sign( - { name: "Ed25519" }, - signer.privateKey, - bytesToArrayBuffer(stagingSignaturePreimageV0(unsigned as unknown as Record)), - ); - return { - ...unsigned, - authentication: { - ...unsigned.authentication, - signatureBase64Url: bytesToBase64Url(new Uint8Array(signature)), - }, - } as T; -} - -beforeAll(async () => { - [gatewaySigner, receiptSigner, wrongSigner] = await Promise.all([ - createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "gateway-biometric-key"), - createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "receipt-biometric-key"), - createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "wrong-key"), - ]); -}); - -function policy(dataMode: "metadata_only" | "synthetic_fixture" = "metadata_only"): SimulationCapturePolicyV0 { - return { - version: SIMULATION_CAPTURE_POLICY_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - policyId: `capture-policy-${dataMode}`, - dataMode, - encoding: "rgba8", - minFrames: 1, - maxFrames: 2, - maxWidth: 1024, - maxHeight: 1024, - maxFrameBytes: 4_194_304, - maxTotalBytes: 8_388_608, - captureOffsetsAreDiagnosticOnly: true, - arrayOrderHasBiometricMeaning: false, - qualityPolicyId: "quality-policy-v0", - expiresAt: "2026-09-02T19:00:00.000Z", - }; -} - -async function bundle( - selectedPolicy: SimulationCapturePolicyV0 = policy(), - frameDigest: HexSha256 = ZERO_HASH, -): Promise { - const pending: FrameBundleV0 = { - kind: FRAME_BUNDLE_V0, - mode: SIMULATION_MODE, - sessionId: "session-1", - policyId: selectedPolicy.policyId, - accountPublicMaterialDigestSha256: ONE_HASH, - nonceDigestSha256: TWO_HASH, - dataMode: selectedPolicy.dataMode, - frames: [{ - transportIndex: 0, - width: 640, - height: 480, - encoding: "rgba8", - byteLength: 1_228_800, - frameDigestSha256: frameDigest, - captureOffsetMs: 0, - }], - ...(selectedPolicy.dataMode === "synthetic_fixture" ? { syntheticFixtureId: "fixture-neutral-v1" } : {}), - totalByteLength: 1_228_800, - digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - artifactDigestSha256: ZERO_HASH, - }; - return { ...pending, artifactDigestSha256: await computeFrameBundleDigestV0(pending) }; -} - -async function request( - scenario: BiometricSimulationScenarioV0 = "happy_path", - selectedBundle?: FrameBundleV0, - overrides: Partial = {}, - signer: TestSigner = gatewaySigner, -): Promise { - const frameBundle = selectedBundle ?? await bundle(); - return sign({ - kind: BIOMETRIC_SIMULATION_REQUEST_V0, - version: BIOMETRIC_VERIFICATION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, - requestId: "biometric-request-1", - sessionId: frameBundle.sessionId, - nonceDigestSha256: frameBundle.nonceDigestSha256, - idempotencyKey: "biometric-idempotency-1", - accountPublicMaterialDigestSha256: frameBundle.accountPublicMaterialDigestSha256, - capturePolicyId: frameBundle.policyId, - scenario, - frameBundle, - requestedAt: "2026-09-02T18:00:00.000Z", - expiresAt: "2026-09-02T19:00:00.000Z", - authentication: { scheme: "staging-ed25519", keyId: "pending", signatureBase64Url: "pending" }, - ...overrides, - }, signer); -} - -function expected( - value: BiometricSimulationRequestV0, -): ExpectedBiometricSimulationRequestV0 { - return { - runtimeEnvironment: "staging", - requestId: value.requestId, - sessionId: value.sessionId, - nonceDigestSha256: value.nonceDigestSha256, - idempotencyKey: value.idempotencyKey, - accountPublicMaterialDigestSha256: value.accountPublicMaterialDigestSha256, - capturePolicyId: value.capturePolicyId, - scenario: value.scenario, - now: NOW.toISOString(), - }; -} - -function service( - audit?: (event: SimulatorAuditEventV0) => void, - maxCacheEntries = 100, -): SimulatedBiometricVerifierV0 { - return new SimulatedBiometricVerifierV0({ - runtimeEnvironment: "staging", - gatewayTrustRoot: gatewaySigner.trustRoot, - receiptSigner: { - environment: SIMULATION_ENVIRONMENT, - audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, - keyId: receiptSigner.trustRoot.keyId, - privateKey: receiptSigner.privateKey, - }, - simulatorVersion: "deterministic-biometric-simulator-v0", - receiptTtlMs: 600_000, - maxCacheEntries, - allowedSyntheticFixtureIds: ["fixture-neutral-v1"], - now: () => NOW, - audit, - }); -} - -describe("deterministic scenario mapping", () => { - for (const scenario of ["happy_path", "spoof_reject", "capture_retry", "dependency_unavailable"] as const) { - test(`${scenario} maps to its one frozen outcome`, async () => { - const value = await request(scenario); - const result = await service().verify({ request: value, expected: expected(value), capturePolicy: policy() }); - expect(result.kind).toBe("simulation_receipt_ready_v0"); - if (result.kind !== "simulation_receipt_ready_v0") return; - expect(result.receipt.outcome).toBe(BIOMETRIC_SCENARIO_OUTCOME_V0[scenario]); - expect(result.receipt.reasonCode).toBe(BIOMETRIC_SCENARIO_REASON_V0[scenario]); - expect(result.receipt.scenario).toBe(scenario); - expect(Object.isFrozen(result)).toBe(true); - expect(Object.isFrozen(result.receipt)).toBe(true); - expect(Object.isFrozen(result.receipt.authentication)).toBe(true); - expect(await verifySimulationReceiptV0(result.receipt, { - ...expected(value), - receiptId: result.receipt.receiptId, - artifactDigestSha256: value.frameBundle.artifactDigestSha256, - now: NOW.toISOString(), - }, receiptSigner.trustRoot)).toBe(true); - }); - } - - test("metadata and named fixtures are accepted without affecting the selected outcome", async () => { - const metadataRequest = await request("spoof_reject", await bundle(policy(), ZERO_HASH)); - const fixturePolicy = policy("synthetic_fixture"); - const fixtureRequest = await request("spoof_reject", await bundle(fixturePolicy, TWO_HASH), { - requestId: "biometric-request-fixture", - idempotencyKey: "biometric-idempotency-fixture", - }); - const verifier = service(); - const metadata = await verifier.verify({ request: metadataRequest, expected: expected(metadataRequest), capturePolicy: policy() }); - const fixture = await verifier.verify({ request: fixtureRequest, expected: expected(fixtureRequest), capturePolicy: fixturePolicy }); - expect(metadata.kind).toBe("simulation_receipt_ready_v0"); - expect(fixture.kind).toBe("simulation_receipt_ready_v0"); - if (metadata.kind === "simulation_receipt_ready_v0" && fixture.kind === "simulation_receipt_ready_v0") { - expect(metadata.receipt.outcome).toBe("simulated_reject"); - expect(fixture.receipt.outcome).toBe("simulated_reject"); - expect(metadata.receipt.artifactDigestSha256).not.toBe(fixture.receipt.artifactDigestSha256); - } - }); -}); - -describe("strict authentication and bindings", () => { - test("rejects wrong signer, audience, expiry, and server-owned scenario mismatch", async () => { - const base = await request(); - const wrongKey = await request("happy_path", base.frameBundle, {}, wrongSigner); - const wrongAudience = await request("happy_path", base.frameBundle, { - audience: "wrong-audience" as typeof BIOMETRIC_SIMULATOR_AUDIENCE_V0, - }); - const expired = await request("happy_path", base.frameBundle, { expiresAt: "2026-09-02T18:29:59.000Z" }); - const wrongMode = await request("happy_path", base.frameBundle, { mode: "production" as typeof SIMULATION_MODE }); - const wrongEnvironment = await request("happy_path", base.frameBundle, { environment: "production" as typeof SIMULATION_ENVIRONMENT }); - const verifier = service(); - for (const candidate of [wrongKey, wrongAudience, expired, wrongMode, wrongEnvironment]) { - expect(await verifier.verify({ request: candidate, expected: expected(candidate), capturePolicy: policy() })).toEqual({ - kind: "biometric_simulation_error_v0", - reasonCode: "invalid_request", - }); - } - expect(await verifier.verify({ request: base, expected: { ...expected(base), scenario: "spoof_reject" }, capturePolicy: policy() })).toEqual({ - kind: "biometric_simulation_error_v0", - reasonCode: "invalid_request", - }); - }); - - test("rejects nonce, account, policy, artifact, and unknown-field mutations", async () => { - const valid = await request(); - const mutatedBundle = { ...valid.frameBundle, artifactDigestSha256: ZERO_HASH }; - const cases: Array<[unknown, ExpectedBiometricSimulationRequestV0]> = [ - [valid, { ...expected(valid), nonceDigestSha256: ZERO_HASH }], - [valid, { ...expected(valid), idempotencyKey: "wrong-idempotency" }], - [valid, { ...expected(valid), accountPublicMaterialDigestSha256: ZERO_HASH }], - [valid, { ...expected(valid), capturePolicyId: "wrong-policy" }], - [await request("happy_path", mutatedBundle), expected(await request("happy_path", mutatedBundle))], - [{ ...valid, browserSpoofScore: 0 }, expected(valid)], - [{ ...valid, pixelsBase64: "forbidden" }, expected(valid)], - [{ ...valid, privateKey: "forbidden" }, expected(valid)], - ]; - for (const [candidate, candidateExpected] of cases) { - expect(await service().verify({ request: candidate, expected: candidateExpected, capturePolicy: policy() })).toMatchObject({ - kind: "biometric_simulation_error_v0", - reasonCode: "invalid_request", - }); - } - }); - - test("rejects arbitrary synthetic fixture identifiers and URLs", async () => { - const fixturePolicy = policy("synthetic_fixture"); - for (const fixtureId of ["unregistered-fixture", "https://example.test/camera.png"]) { - const original = await bundle(fixturePolicy); - const pending = { ...original, syntheticFixtureId: fixtureId, artifactDigestSha256: ZERO_HASH }; - const changed = { ...pending, artifactDigestSha256: await computeFrameBundleDigestV0(pending) }; - const value = await request("happy_path", changed); - expect(await service().verify({ request: value, expected: expected(value), capturePolicy: fixturePolicy })).toEqual({ - kind: "biometric_simulation_error_v0", - reasonCode: "invalid_request", - }); - } - }); -}); - -describe("idempotency, isolation, readiness, and redaction", () => { - test("returns the exact cached receipt after a lost response and detects conflicts/replay", async () => { - const verifier = service(); - const firstRequest = await request(); - const first = await verifier.verify({ request: firstRequest, expected: expected(firstRequest), capturePolicy: policy() }); - const retry = await verifier.verify({ request: firstRequest, expected: expected(firstRequest), capturePolicy: policy() }); - expect(retry).toEqual(first); - - const conflict = await request("happy_path", firstRequest.frameBundle, { requestId: "biometric-request-conflict" }); - expect(await verifier.verify({ request: conflict, expected: expected(conflict), capturePolicy: policy() })).toMatchObject({ reasonCode: "idempotency_conflict" }); - const replay = await request("happy_path", firstRequest.frameBundle, { idempotencyKey: "biometric-idempotency-replay" }); - expect(await verifier.verify({ request: replay, expected: expected(replay), capturePolicy: policy() })).toMatchObject({ reasonCode: "request_replay" }); - }); - - test("bounds retained idempotency records", async () => { - const verifier = service(undefined, 1); - const first = await request(); - expect((await verifier.verify({ request: first, expected: expected(first), capturePolicy: policy() })).kind).toBe("simulation_receipt_ready_v0"); - const second = await request("happy_path", first.frameBundle, { - requestId: "biometric-request-2", - idempotencyKey: "biometric-idempotency-2", - }); - expect(await verifier.verify({ request: second, expected: expected(second), capturePolicy: policy() })).toEqual({ - kind: "biometric_simulation_error_v0", - reasonCode: "service_not_ready", - }); - }); - - test("rejects production before reading request outcome or authentication", async () => { - let reads = 0; - const sentinel = new Proxy({}, { get(_target, property) { - if (property === "outcome" || property === "authentication" || property === "scenario") reads += 1; - throw new Error("sensitive getter read"); - } }); - const production = new SimulatedBiometricVerifierV0({ - runtimeEnvironment: "production", - gatewayTrustRoot: gatewaySigner.trustRoot, - receiptSigner: { - environment: SIMULATION_ENVIRONMENT, - audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, - keyId: receiptSigner.trustRoot.keyId, - privateKey: receiptSigner.privateKey, - }, - simulatorVersion: "disabled", - receiptTtlMs: 1, - maxCacheEntries: 1, - allowedSyntheticFixtureIds: [], - now: () => NOW, - }); - await expect(production.verify({ request: sentinel, expected: sentinel as ExpectedBiometricSimulationRequestV0, capturePolicy: sentinel as SimulationCapturePolicyV0 })).rejects.toThrow("forbidden in production"); - expect(reads).toBe(0); - }); - - test("reports readiness failure without echoing key material", () => { - const unavailable = new SimulatedBiometricVerifierV0({ - runtimeEnvironment: "staging", - gatewayTrustRoot: { ...gatewaySigner.trustRoot, audience: "wrong" }, - receiptSigner: { - environment: SIMULATION_ENVIRONMENT, - audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, - keyId: receiptSigner.trustRoot.keyId, - privateKey: receiptSigner.privateKey, - }, - simulatorVersion: "v0", - receiptTtlMs: 1, - maxCacheEntries: 1, - allowedSyntheticFixtureIds: [], - now: () => NOW, - }); - expect(unavailable.readiness()).toEqual({ ready: false, reasonCode: "service_not_ready" }); - expect(JSON.stringify(unavailable.readiness())).not.toContain(gatewaySigner.trustRoot.publicKeyRawBase64Url); - }); - - test("requires purpose-distinct signer key IDs", () => { - const confused = new SimulatedBiometricVerifierV0({ - runtimeEnvironment: "staging", - gatewayTrustRoot: gatewaySigner.trustRoot, - receiptSigner: { - environment: SIMULATION_ENVIRONMENT, - audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, - keyId: gatewaySigner.trustRoot.keyId, - privateKey: receiptSigner.privateKey, - }, - simulatorVersion: "v0", - receiptTtlMs: 1, - maxCacheEntries: 1, - allowedSyntheticFixtureIds: [], - now: () => NOW, - }); - expect(confused.readiness()).toEqual({ ready: false, reasonCode: "service_not_ready" }); - }); - - test("audit output contains only allowlisted event and reason fields", async () => { - const events: SimulatorAuditEventV0[] = []; - const value = await request(); - const result = await service((event) => events.push(event)).verify({ request: value, expected: expected(value), capturePolicy: policy() }); - expect(result.kind).toBe("simulation_receipt_ready_v0"); - expect(events).toEqual([{ event: "receipt_created" }]); - const serialized = JSON.stringify(events); - for (const forbidden of [value.requestId, value.sessionId, value.accountPublicMaterialDigestSha256, value.authentication.signatureBase64Url, "privateKey", "pixels"]) { - expect(serialized).not.toContain(forbidden); - } - }); - - test("swallows free-text audit transport failures", async () => { - const value = await request(); - const result = await service(() => { throw new Error("secret upstream audit failure"); }).verify({ - request: value, - expected: expected(value), - capturePolicy: policy(), - }); - expect(result.kind).toBe("simulation_receipt_ready_v0"); - expect(JSON.stringify(result)).not.toContain("secret upstream audit failure"); - }); -}); diff --git a/services/simulated-staging-issuer/README.md b/services/simulated-staging-issuer/README.md deleted file mode 100644 index be42fa0..0000000 --- a/services/simulated-staging-issuer/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Simulated staging issuer - -This staging-only service verifies the gateway signature and independently verifies the embedded `SimulationReceiptV0` against its own trust root, time, and bindings. Only a current authenticated `simulated_pass` can enter the three deterministic issuance scenarios. Success returns exactly `SimulatedStagingCredentialV0` with the frozen non-claims. - -Configuration injects purpose-distinct gateway, receipt, and credential keys, a clock, TTL, and bounded idempotency-cache capacity. Audit events contain no request, receipt, signature, credential body, identifier, or free-text error. Production runtime configuration rejects before reading receipt outcome or authentication. diff --git a/services/simulated-staging-issuer/package.json b/services/simulated-staging-issuer/package.json deleted file mode 100644 index d8b0db5..0000000 --- a/services/simulated-staging-issuer/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "@world-id/web-authenticator-simulated-staging-issuer", - "private": true, - "version": "0.0.0", - "type": "module", - "exports": { - ".": "./src/index.ts" - }, - "scripts": { - "test": "bun test test", - "lint": "eslint ." - } -} diff --git a/services/simulated-staging-issuer/src/index.ts b/services/simulated-staging-issuer/src/index.ts deleted file mode 100644 index 58710e0..0000000 --- a/services/simulated-staging-issuer/src/index.ts +++ /dev/null @@ -1,311 +0,0 @@ -import { - BIOMETRIC_SIMULATOR_AUDIENCE_V0, - base64UrlToBytes, - bytesToArrayBuffer, - bytesToBase64Url, - canonicalizeJsonV0, - SIMULATED_STAGING_AUDIENCE_V0, - SIMULATED_STAGING_CREDENTIAL_V0, - SIMULATED_STAGING_ISSUER_V0, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - SimulationArtifactInProductionError, - stagingSignaturePreimageV0, - STAGING_ISSUANCE_PORT_V0, - STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, - verifySimulationReceiptV0, - verifyStagingIssuanceSimulationRequestV0, - verifyStagingEd25519V0, - isRecord, - type HexSha256, - type RuntimeEnvironment, - type SimulatedStagingCredentialV0, - type StagingAuthenticationV0, - type StagingEd25519TrustRootV0, - type StagingIssuanceSimulationRequestV0, -} from "../../../packages/contracts/src"; -import { - STAGING_ISSUANCE_ERROR_V0, - type StagingIssuanceInvocationV0, - type StagingIssuancePortResultV0, - type StagingIssuancePortV0, -} from "../../../packages/staging-issuance-port/src"; - -export interface StagingCredentialSignerV0 { - readonly environment: typeof SIMULATION_ENVIRONMENT; - readonly audience: typeof SIMULATED_STAGING_AUDIENCE_V0; - readonly keyId: string; - readonly privateKey: CryptoKey; -} - -export interface IssuerAuditEventV0 { - readonly event: "request_rejected" | "credential_created" | "scenario_result" | "idempotent_replay"; - readonly reasonCode?: string; -} - -export interface SimulatedStagingIssuerConfigV0 { - readonly runtimeEnvironment: RuntimeEnvironment; - readonly gatewayTrustRoot: StagingEd25519TrustRootV0; - readonly biometricReceiptTrustRoot: StagingEd25519TrustRootV0; - readonly credentialSigner: StagingCredentialSignerV0; - readonly credentialTtlMs: number; - readonly maxCacheEntries: number; - readonly now: () => Date; - readonly audit?: (event: IssuerAuditEventV0) => void; -} - -interface CachedResult { - readonly fingerprint: string; - readonly requestId: string; - readonly result: StagingIssuancePortResultV0; - readonly expiresAtMs: number; -} - -async function sha256Hex(value: string): Promise { - const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value)); - return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join(""); -} - -function signerIsReady(signer: StagingCredentialSignerV0): boolean { - return ( - signer.environment === SIMULATION_ENVIRONMENT && - signer.audience === SIMULATED_STAGING_AUDIENCE_V0 && - signer.keyId.length > 0 && - signer.privateKey.type === "private" && - signer.privateKey.algorithm.name === "Ed25519" && - signer.privateKey.usages.includes("sign") - ); -} - -function trustRootIsReady( - trustRoot: StagingEd25519TrustRootV0, - audience: string, -): boolean { - try { - return ( - trustRoot.environment === SIMULATION_ENVIRONMENT && - trustRoot.audience === audience && - trustRoot.keyId.length > 0 && - base64UrlToBytes(trustRoot.publicKeyRawBase64Url).byteLength === 32 - ); - } catch { - return false; - } -} - -function emitAudit( - audit: SimulatedStagingIssuerConfigV0["audit"], - event: IssuerAuditEventV0, -): void { - try { - audit?.(Object.freeze(event)); - } catch { - // Audit transport failures never change a simulator result or expose their free-text error. - } -} - -async function signCredential( - credential: SimulatedStagingCredentialV0, - signer: StagingCredentialSignerV0, -): Promise { - const signature = await crypto.subtle.sign( - { name: "Ed25519" }, - signer.privateKey, - bytesToArrayBuffer(stagingSignaturePreimageV0(credential as unknown as Record)), - ); - return { - ...credential, - authentication: { - ...credential.authentication, - signatureBase64Url: bytesToBase64Url(new Uint8Array(signature)), - }, - }; -} - -export class SimulatedStagingIssuerV0 implements StagingIssuancePortV0 { - readonly #config: SimulatedStagingIssuerConfigV0; - readonly #byIdempotencyKey = new Map(); - readonly #requestIds = new Map(); - - constructor(config: SimulatedStagingIssuerConfigV0) { - this.#config = config; - } - - readiness(): Readonly<{ ready: boolean; reasonCode?: "service_not_ready" }> { - const ready = - this.#config.runtimeEnvironment === "staging" && - trustRootIsReady( - this.#config.gatewayTrustRoot, - STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, - ) && - trustRootIsReady( - this.#config.biometricReceiptTrustRoot, - BIOMETRIC_SIMULATOR_AUDIENCE_V0, - ) && - signerIsReady(this.#config.credentialSigner) && - new Set([ - this.#config.gatewayTrustRoot.keyId, - this.#config.biometricReceiptTrustRoot.keyId, - this.#config.credentialSigner.keyId, - ]).size === 3 && - Number.isSafeInteger(this.#config.credentialTtlMs) && - this.#config.credentialTtlMs > 0 && - Number.isSafeInteger(this.#config.maxCacheEntries) && - this.#config.maxCacheEntries > 0; - return Object.freeze(ready ? { ready: true } : { ready: false, reasonCode: "service_not_ready" }); - } - - async issue(invocation: StagingIssuanceInvocationV0): Promise { - // This branch intentionally executes before any property read from an untrusted request. - if (this.#config.runtimeEnvironment === "production") { - throw new SimulationArtifactInProductionError(); - } - if (!this.readiness().ready) return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "service_not_ready" }; - - try { - if ( - !isRecord(invocation.request) || - !(await verifyStagingEd25519V0(invocation.request, this.#config.gatewayTrustRoot)) - ) { - emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "invalid_request" }); - return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "invalid_request" }; - } - const now = this.#config.now(); - const embeddedReceipt = invocation.request.biometricReceipt; - const expectedBiometricReceipt = { - ...invocation.expected.biometricReceipt, - runtimeEnvironment: "staging" as const, - now: now.toISOString(), - }; - // Authenticate the nested artifact, its current time, and every expected binding before - // classifying the outcome. An outer gateway signature cannot substitute for this check. - if ( - !(await verifySimulationReceiptV0( - embeddedReceipt, - expectedBiometricReceipt, - this.#config.biometricReceiptTrustRoot, - )) - ) { - emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "invalid_request" }); - return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "invalid_request" }; - } - if ((embeddedReceipt as { readonly outcome: unknown }).outcome !== "simulated_pass") { - emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "non_pass_receipt" }); - return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "non_pass_receipt" }; - } - const expected = { - ...invocation.expected, - runtimeEnvironment: "staging" as const, - biometricReceipt: expectedBiometricReceipt, - now: now.toISOString(), - }; - if (!(await verifyStagingIssuanceSimulationRequestV0( - invocation.request, - expected, - this.#config.gatewayTrustRoot, - this.#config.biometricReceiptTrustRoot, - ))) { - emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "invalid_request" }); - return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "invalid_request" }; - } - - const request = invocation.request as unknown as StagingIssuanceSimulationRequestV0; - const fingerprint = await sha256Hex(canonicalizeJsonV0(request)); - for (const [key, entry] of this.#byIdempotencyKey) { - if (entry.expiresAtMs <= now.getTime()) { - this.#byIdempotencyKey.delete(key); - this.#requestIds.delete(entry.requestId); - } - } - const cached = this.#byIdempotencyKey.get(request.idempotencyKey); - if (cached) { - if (cached.fingerprint !== fingerprint || cached.requestId !== request.requestId) { - emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "idempotency_conflict" }); - return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "idempotency_conflict" }; - } - emitAudit(this.#config.audit, { event: "idempotent_replay" }); - return cached.result; - } - const knownIdempotencyKey = this.#requestIds.get(request.requestId); - if (knownIdempotencyKey !== undefined && knownIdempotencyKey !== request.idempotencyKey) { - emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "request_replay" }); - return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "request_replay" }; - } - if (this.#byIdempotencyKey.size >= this.#config.maxCacheEntries) { - emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "service_not_ready" }); - return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "service_not_ready" }; - } - - let result: StagingIssuancePortResultV0; - if (request.scenario === "issue_reject") { - result = Object.freeze({ kind: "simulated_issuance_rejected_v0", reasonCode: "scenario_issue_reject" }); - } else if (request.scenario === "issue_unavailable") { - result = Object.freeze({ kind: "simulated_issuance_unavailable_v0", reasonCode: "scenario_issue_unavailable" }); - } else { - const issuedAt = now.toISOString(); - const expiresAt = new Date( - Math.min(Date.parse(request.expiresAt), Date.parse(request.biometricReceipt.expiresAt), now.getTime() + this.#config.credentialTtlMs), - ).toISOString(); - if (Date.parse(expiresAt) <= now.getTime()) { - return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "invalid_request" }; - } - const credentialId = `sim-credential-${(await sha256Hex(`staging-credential-v0:${fingerprint}`)).slice(0, 32)}`; - const unsigned: SimulatedStagingCredentialV0 = { - kind: SIMULATED_STAGING_CREDENTIAL_V0, - version: STAGING_ISSUANCE_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - credentialId, - issuer: SIMULATED_STAGING_ISSUER_V0, - audience: SIMULATED_STAGING_AUDIENCE_V0, - issuanceRequestId: request.requestId, - idempotencyKey: request.idempotencyKey, - nonceDigestSha256: request.nonceDigestSha256, - subjectAccountId: request.accountId, - accountPublicMaterialDigestSha256: request.accountPublicMaterialDigestSha256, - simulationReceiptId: request.biometricReceipt.receiptId, - claims: { - biometricVerification: "simulated_not_performed", - uniqueness: "not_performed", - credentialClass: "not_selfie_check", - }, - issuedAt, - expiresAt, - authentication: { - scheme: "staging-ed25519", - keyId: this.#config.credentialSigner.keyId, - signatureBase64Url: "pending", - } satisfies StagingAuthenticationV0, - }; - const signedCredential = await signCredential(unsigned, this.#config.credentialSigner); - const credential = Object.freeze({ - ...signedCredential, - claims: Object.freeze({ ...signedCredential.claims }), - authentication: Object.freeze({ ...signedCredential.authentication }), - }); - result = Object.freeze({ kind: "simulated_credential_ready_v0", credential }); - } - - this.#byIdempotencyKey.set(request.idempotencyKey, { - fingerprint, - requestId: request.requestId, - result, - expiresAtMs: Math.min( - Date.parse(request.expiresAt), - Date.parse(request.biometricReceipt.expiresAt), - ), - }); - this.#requestIds.set(request.requestId, request.idempotencyKey); - emitAudit( - this.#config.audit, - result.kind === "simulated_credential_ready_v0" - ? { event: "credential_created" } - : { event: "scenario_result", reasonCode: result.reasonCode }, - ); - return result; - } catch { - emitAudit(this.#config.audit, { event: "request_rejected", reasonCode: "invalid_request" }); - return { kind: STAGING_ISSUANCE_ERROR_V0, reasonCode: "invalid_request" }; - } - } -} diff --git a/services/simulated-staging-issuer/test/simulated-staging-issuer.test.ts b/services/simulated-staging-issuer/test/simulated-staging-issuer.test.ts deleted file mode 100644 index 601c2e2..0000000 --- a/services/simulated-staging-issuer/test/simulated-staging-issuer.test.ts +++ /dev/null @@ -1,504 +0,0 @@ -import { beforeAll, describe, expect, test } from "bun:test"; -import { - BIOMETRIC_SIMULATOR_AUDIENCE_V0, - BIOMETRIC_VERIFICATION_PORT_V0, - bytesToArrayBuffer, - bytesToBase64Url, - SIMULATED_STAGING_AUDIENCE_V0, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - SIMULATION_RECEIPT_V0, - stagingSignaturePreimageV0, - STAGING_ISSUANCE_PORT_V0, - STAGING_ISSUANCE_SIMULATION_REQUEST_V0, - STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, - verifySimulatedStagingCredentialV0, - type ExpectedSimulationReceiptV0, - type ExpectedStagingIssuanceRequestV0, - type HexSha256, - type IssuanceSimulationScenarioV0, - type SimulationReceiptV0, - type StagingAuthenticationV0, - type StagingEd25519TrustRootV0, - type StagingIssuanceSimulationRequestV0, -} from "../../../packages/contracts/src"; -import { SimulatedStagingIssuerV0, type IssuerAuditEventV0 } from "../src"; - -const ZERO_HASH = "0".repeat(64) as HexSha256; -const ONE_HASH = "1".repeat(64) as HexSha256; -const TWO_HASH = "2".repeat(64) as HexSha256; -const NOW = new Date("2026-09-02T18:30:00.000Z"); - -interface TestSigner { - readonly privateKey: CryptoKey; - readonly trustRoot: StagingEd25519TrustRootV0; -} - -let biometricSigner: TestSigner; -let gatewaySigner: TestSigner; -let credentialSigner: TestSigner; -let wrongSigner: TestSigner; - -async function createSigner(audience: string, keyId: string): Promise { - const pair = (await crypto.subtle.generateKey( - { name: "Ed25519" }, - true, - ["sign", "verify"], - )) as CryptoKeyPair; - const raw = new Uint8Array(await crypto.subtle.exportKey("raw", pair.publicKey)); - return { - privateKey: pair.privateKey, - trustRoot: { - environment: SIMULATION_ENVIRONMENT, - audience, - keyId, - publicKeyRawBase64Url: bytesToBase64Url(raw), - }, - }; -} - -async function sign( - artifact: T, - signer: TestSigner, -): Promise { - const unsigned = { - ...artifact, - authentication: { - scheme: "staging-ed25519" as const, - keyId: signer.trustRoot.keyId, - signatureBase64Url: "pending", - }, - }; - const signature = await crypto.subtle.sign( - { name: "Ed25519" }, - signer.privateKey, - bytesToArrayBuffer(stagingSignaturePreimageV0(unsigned as unknown as Record)), - ); - return { - ...unsigned, - authentication: { - ...unsigned.authentication, - signatureBase64Url: bytesToBase64Url(new Uint8Array(signature)), - }, - } as T; -} - -beforeAll(async () => { - [biometricSigner, gatewaySigner, credentialSigner, wrongSigner] = await Promise.all([ - createSigner(BIOMETRIC_SIMULATOR_AUDIENCE_V0, "biometric-receipt-key"), - createSigner(STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, "gateway-issuance-key"), - createSigner(SIMULATED_STAGING_AUDIENCE_V0, "credential-key"), - createSigner(STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, "wrong-key"), - ]); -}); - -async function receipt( - overrides: Partial = {}, - signer: TestSigner = biometricSigner, -): Promise { - return sign({ - kind: SIMULATION_RECEIPT_V0, - version: BIOMETRIC_VERIFICATION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - audience: BIOMETRIC_SIMULATOR_AUDIENCE_V0, - receiptId: "receipt-1", - requestId: "biometric-request-1", - simulatorVersion: "deterministic-biometric-simulator-v0", - scenario: "happy_path", - sessionId: "session-1", - nonceDigestSha256: ONE_HASH, - idempotencyKey: "biometric-idempotency-1", - accountPublicMaterialDigestSha256: TWO_HASH, - capturePolicyId: "capture-policy-1", - artifactDigestSha256: ZERO_HASH, - outcome: "simulated_pass", - reasonCode: "scenario_happy_path", - issuedAt: "2026-09-02T18:00:00.000Z", - expiresAt: "2026-09-02T19:00:00.000Z", - authentication: { scheme: "staging-ed25519", keyId: "pending", signatureBase64Url: "pending" }, - ...overrides, - }, signer); -} - -async function request( - biometricReceipt: SimulationReceiptV0, - scenario: IssuanceSimulationScenarioV0 = "issue_success", - overrides: Partial = {}, - signer: TestSigner = gatewaySigner, -): Promise { - return sign({ - kind: STAGING_ISSUANCE_SIMULATION_REQUEST_V0, - version: STAGING_ISSUANCE_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - audience: STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0, - requestId: "issuance-request-1", - sessionId: biometricReceipt.sessionId, - nonceDigestSha256: biometricReceipt.nonceDigestSha256, - idempotencyKey: "issuance-idempotency-1", - accountId: "account-1", - accountPublicMaterialDigestSha256: biometricReceipt.accountPublicMaterialDigestSha256, - biometricReceipt: biometricReceipt as SimulationReceiptV0 & { readonly outcome: "simulated_pass" }, - scenario, - requestedAt: "2026-09-02T18:10:00.000Z", - expiresAt: "2026-09-02T19:00:00.000Z", - authentication: { scheme: "staging-ed25519", keyId: "pending", signatureBase64Url: "pending" }, - ...overrides, - }, signer); -} - -function expectedReceipt(value: SimulationReceiptV0): ExpectedSimulationReceiptV0 { - return { - runtimeEnvironment: "staging", - receiptId: value.receiptId, - requestId: value.requestId, - sessionId: value.sessionId, - nonceDigestSha256: value.nonceDigestSha256, - idempotencyKey: value.idempotencyKey, - accountPublicMaterialDigestSha256: value.accountPublicMaterialDigestSha256, - capturePolicyId: value.capturePolicyId, - scenario: value.scenario, - artifactDigestSha256: value.artifactDigestSha256, - now: NOW.toISOString(), - }; -} - -function expected(value: StagingIssuanceSimulationRequestV0): ExpectedStagingIssuanceRequestV0 { - return { - runtimeEnvironment: "staging", - requestId: value.requestId, - sessionId: value.sessionId, - nonceDigestSha256: value.nonceDigestSha256, - idempotencyKey: value.idempotencyKey, - accountId: value.accountId, - accountPublicMaterialDigestSha256: value.accountPublicMaterialDigestSha256, - biometricReceipt: expectedReceipt(value.biometricReceipt), - scenario: value.scenario, - now: NOW.toISOString(), - }; -} - -function service( - audit?: (event: IssuerAuditEventV0) => void, - maxCacheEntries = 100, -): SimulatedStagingIssuerV0 { - return new SimulatedStagingIssuerV0({ - runtimeEnvironment: "staging", - gatewayTrustRoot: gatewaySigner.trustRoot, - biometricReceiptTrustRoot: biometricSigner.trustRoot, - credentialSigner: { - environment: SIMULATION_ENVIRONMENT, - audience: SIMULATED_STAGING_AUDIENCE_V0, - keyId: credentialSigner.trustRoot.keyId, - privateKey: credentialSigner.privateKey, - }, - credentialTtlMs: 600_000, - maxCacheEntries, - now: () => NOW, - audit, - }); -} - -describe("issuance scenarios and credential shape", () => { - test("issues the exact staging-only non-credential after a valid pass", async () => { - const pass = await receipt(); - const value = await request(pass); - const result = await service().issue({ request: value, expected: expected(value) }); - expect(result.kind).toBe("simulated_credential_ready_v0"); - if (result.kind !== "simulated_credential_ready_v0") return; - expect(result.credential).toMatchObject({ - kind: "simulated_staging_credential_v0", - mode: "simulation", - environment: "staging", - issuer: "world_id_web_authenticator_simulator", - audience: "world_id_web_authenticator_staging", - subjectAccountId: value.accountId, - simulationReceiptId: pass.receiptId, - claims: { - biometricVerification: "simulated_not_performed", - uniqueness: "not_performed", - credentialClass: "not_selfie_check", - }, - }); - expect(Object.keys(result.credential.claims).sort()).toEqual(["biometricVerification", "credentialClass", "uniqueness"]); - expect(Object.isFrozen(result)).toBe(true); - expect(Object.isFrozen(result.credential)).toBe(true); - expect(Object.isFrozen(result.credential.claims)).toBe(true); - expect(Object.isFrozen(result.credential.authentication)).toBe(true); - expect(await verifySimulatedStagingCredentialV0(result.credential, { - runtimeEnvironment: "staging", - issuanceRequestId: value.requestId, - idempotencyKey: value.idempotencyKey, - nonceDigestSha256: value.nonceDigestSha256, - subjectAccountId: value.accountId, - accountPublicMaterialDigestSha256: value.accountPublicMaterialDigestSha256, - simulationReceiptId: pass.receiptId, - now: NOW.toISOString(), - }, credentialSigner.trustRoot)).toBe(true); - for (const forbidden of ["selfie_check", "proof", "attestation", "embedding", "shares", "biometric_passed"]) { - expect(Object.keys(result.credential).join(",")).not.toContain(forbidden); - } - }); - - for (const [scenario, kind, reasonCode] of [ - ["issue_reject", "simulated_issuance_rejected_v0", "scenario_issue_reject"], - ["issue_unavailable", "simulated_issuance_unavailable_v0", "scenario_issue_unavailable"], - ] as const) { - test(`${scenario} returns its exact frozen result`, async () => { - const pass = await receipt(); - const value = await request(pass, scenario); - const result = await service().issue({ request: value, expected: expected(value) }); - expect(result.kind).toBe(kind); - expect("reasonCode" in result ? result.reasonCode : undefined).toBe(reasonCode); - }); - } - - test("rejects every non-pass receipt before issuance", async () => { - for (const [scenario, outcome, reasonCode] of [ - ["spoof_reject", "simulated_reject", "scenario_spoof_reject"], - ["capture_retry", "simulated_retry", "scenario_capture_retry"], - ["dependency_unavailable", "simulated_unavailable", "scenario_dependency_unavailable"], - ] as const) { - const nonPass = await receipt({ scenario, outcome, reasonCode }); - const value = await request(nonPass); - expect(await service().issue({ request: value, expected: expected(value) })).toEqual({ - kind: "staging_issuance_error_v0", - reasonCode: "non_pass_receipt", - }); - } - }); - - test("classifies only authenticated current non-pass receipts as non-pass", async () => { - const validReject = await receipt({ - scenario: "spoof_reject", - outcome: "simulated_reject", - reasonCode: "scenario_spoof_reject", - }); - const value = await request(validReject); - expect(await service().issue({ request: value, expected: expected(value) })).toEqual({ - kind: "staging_issuance_error_v0", - reasonCode: "non_pass_receipt", - }); - }); -}); - -describe("independent outer request and embedded receipt verification", () => { - test("rejects wrong outer key, audience, expiry, and server scenario", async () => { - const pass = await receipt(); - const wrongKey = await request(pass, "issue_success", {}, wrongSigner); - const wrongAudience = await request(pass, "issue_success", { audience: "wrong" as typeof STAGING_ISSUANCE_SIMULATOR_AUDIENCE_V0 }); - const expired = await request(pass, "issue_success", { expiresAt: "2026-09-02T18:29:59.000Z" }); - const wrongMode = await request(pass, "issue_success", { mode: "production" as typeof SIMULATION_MODE }); - const wrongEnvironment = await request(pass, "issue_success", { environment: "production" as typeof SIMULATION_ENVIRONMENT }); - for (const value of [wrongKey, wrongAudience, expired, wrongMode, wrongEnvironment]) { - expect(await service().issue({ request: value, expected: expected(value) })).toMatchObject({ reasonCode: "invalid_request" }); - } - const valid = await request(pass); - expect(await service().issue({ request: valid, expected: { ...expected(valid), scenario: "issue_reject" } })).toMatchObject({ reasonCode: "invalid_request" }); - }); - - test("rejects an invalid, wrong-root, or expired embedded receipt even when the outer request is re-signed", async () => { - const valid = await receipt(); - const invalidSignature = { ...valid, authentication: { ...valid.authentication, signatureBase64Url: `${valid.authentication.signatureBase64Url}x` } }; - const wrongRoot = await receipt({}, wrongSigner); - const expired = await receipt({ issuedAt: "2026-09-02T17:00:00.000Z", expiresAt: "2026-09-02T18:29:59.000Z" }); - for (const embedded of [invalidSignature, wrongRoot, expired]) { - const value = await request(embedded); - expect(await service().issue({ request: value, expected: expected(value) })).toEqual({ - kind: "staging_issuance_error_v0", - reasonCode: "invalid_request", - }); - } - }); - - test("does not classify forged, wrong-root, expired, or binding-mismatched non-pass receipts", async () => { - const validReject = await receipt({ - scenario: "spoof_reject", - outcome: "simulated_reject", - reasonCode: "scenario_spoof_reject", - }); - const forged = { - ...validReject, - authentication: { - ...validReject.authentication, - signatureBase64Url: `${validReject.authentication.signatureBase64Url}x`, - }, - }; - const wrongRoot = await receipt({ - scenario: "spoof_reject", - outcome: "simulated_reject", - reasonCode: "scenario_spoof_reject", - }, wrongSigner); - const expired = await receipt({ - scenario: "spoof_reject", - outcome: "simulated_reject", - reasonCode: "scenario_spoof_reject", - issuedAt: "2026-09-02T17:00:00.000Z", - expiresAt: "2026-09-02T18:29:59.000Z", - }); - - for (const embedded of [forged, wrongRoot, expired]) { - const value = await request(embedded); - expect(await service().issue({ request: value, expected: expected(value) })).toEqual({ - kind: "staging_issuance_error_v0", - reasonCode: "invalid_request", - }); - } - - const boundValue = await request(validReject); - const bindingMismatch = { - ...expected(boundValue), - biometricReceipt: { - ...expectedReceipt(validReject), - artifactDigestSha256: ONE_HASH, - }, - }; - expect(await service().issue({ request: boundValue, expected: bindingMismatch })).toEqual({ - kind: "staging_issuance_error_v0", - reasonCode: "invalid_request", - }); - }); - - test("fails closed when receipt outcome changes after valid outer authentication", async () => { - const validReject = await receipt({ - scenario: "spoof_reject", - outcome: "simulated_reject", - reasonCode: "scenario_spoof_reject", - }); - const signedOuter = await request(validReject); - let outcomeReads = 0; - const hostileReceipt = { ...validReject } as SimulationReceiptV0; - Object.defineProperty(hostileReceipt, "outcome", { - enumerable: true, - configurable: true, - get: () => { - outcomeReads += 1; - if (outcomeReads === 1) return validReject.outcome; - throw new Error("hostile outcome getter detail"); - }, - }); - const hostileOuter = { ...signedOuter, biometricReceipt: hostileReceipt }; - const result = await service().issue({ request: hostileOuter, expected: expected(signedOuter) }); - expect(result).toEqual({ - kind: "staging_issuance_error_v0", - reasonCode: "invalid_request", - }); - expect(outcomeReads).toBe(2); - expect(JSON.stringify(result)).not.toContain("hostile outcome getter detail"); - }); - - test("rejects session, nonce, account, artifact, receipt-id, and unknown-field mismatches", async () => { - const pass = await receipt(); - const value = await request(pass); - const mismatches: ExpectedStagingIssuanceRequestV0[] = [ - { ...expected(value), sessionId: "wrong-session" }, - { ...expected(value), nonceDigestSha256: ZERO_HASH }, - { ...expected(value), idempotencyKey: "wrong-idempotency" }, - { ...expected(value), accountId: "wrong-account" }, - { ...expected(value), accountPublicMaterialDigestSha256: ZERO_HASH }, - { ...expected(value), biometricReceipt: { ...expectedReceipt(pass), artifactDigestSha256: ONE_HASH } }, - { ...expected(value), biometricReceipt: { ...expectedReceipt(pass), receiptId: "wrong-receipt" } }, - ]; - for (const mismatch of mismatches) { - expect(await service().issue({ request: value, expected: mismatch })).toMatchObject({ reasonCode: "invalid_request" }); - } - expect(await service().issue({ request: { ...value, rawBody: "forbidden" }, expected: expected(value) })).toMatchObject({ reasonCode: "invalid_request" }); - }); -}); - -describe("idempotency, isolation, readiness, and redaction", () => { - test("returns the cached lost response and detects idempotency conflict/request replay", async () => { - const issuer = service(); - const pass = await receipt(); - const firstRequest = await request(pass); - const first = await issuer.issue({ request: firstRequest, expected: expected(firstRequest) }); - expect(await issuer.issue({ request: firstRequest, expected: expected(firstRequest) })).toEqual(first); - - const conflict = await request(pass, "issue_success", { requestId: "issuance-request-conflict" }); - expect(await issuer.issue({ request: conflict, expected: expected(conflict) })).toMatchObject({ reasonCode: "idempotency_conflict" }); - const replay = await request(pass, "issue_success", { idempotencyKey: "issuance-idempotency-replay" }); - expect(await issuer.issue({ request: replay, expected: expected(replay) })).toMatchObject({ reasonCode: "request_replay" }); - }); - - test("bounds retained idempotency records", async () => { - const issuer = service(undefined, 1); - const pass = await receipt(); - const first = await request(pass); - expect((await issuer.issue({ request: first, expected: expected(first) })).kind).toBe("simulated_credential_ready_v0"); - const second = await request(pass, "issue_success", { - requestId: "issuance-request-2", - idempotencyKey: "issuance-idempotency-2", - }); - expect(await issuer.issue({ request: second, expected: expected(second) })).toEqual({ - kind: "staging_issuance_error_v0", - reasonCode: "service_not_ready", - }); - }); - - test("rejects production before reading receipt outcome or authentication", async () => { - let reads = 0; - const sentinel = new Proxy({}, { get(_target, property) { - if (property === "biometricReceipt" || property === "outcome" || property === "authentication") reads += 1; - throw new Error("sensitive getter read"); - } }); - const production = new SimulatedStagingIssuerV0({ - runtimeEnvironment: "production", - gatewayTrustRoot: gatewaySigner.trustRoot, - biometricReceiptTrustRoot: biometricSigner.trustRoot, - credentialSigner: { - environment: SIMULATION_ENVIRONMENT, - audience: SIMULATED_STAGING_AUDIENCE_V0, - keyId: credentialSigner.trustRoot.keyId, - privateKey: credentialSigner.privateKey, - }, - credentialTtlMs: 1, - maxCacheEntries: 1, - now: () => NOW, - }); - await expect(production.issue({ request: sentinel, expected: sentinel as ExpectedStagingIssuanceRequestV0 })).rejects.toThrow("forbidden in production"); - expect(reads).toBe(0); - }); - - test("readiness fails closed for purpose-confused trust roots", () => { - const unavailable = new SimulatedStagingIssuerV0({ - runtimeEnvironment: "staging", - gatewayTrustRoot: biometricSigner.trustRoot, - biometricReceiptTrustRoot: biometricSigner.trustRoot, - credentialSigner: { - environment: SIMULATION_ENVIRONMENT, - audience: SIMULATED_STAGING_AUDIENCE_V0, - keyId: credentialSigner.trustRoot.keyId, - privateKey: credentialSigner.privateKey, - }, - credentialTtlMs: 1, - maxCacheEntries: 1, - now: () => NOW, - }); - expect(unavailable.readiness()).toEqual({ ready: false, reasonCode: "service_not_ready" }); - }); - - test("audit output never contains request, receipt, credential, signature, or upstream error text", async () => { - const events: IssuerAuditEventV0[] = []; - const pass = await receipt(); - const value = await request(pass); - const result = await service((event) => events.push(event)).issue({ request: value, expected: expected(value) }); - expect(result.kind).toBe("simulated_credential_ready_v0"); - expect(events).toEqual([{ event: "credential_created" }]); - const serialized = JSON.stringify(events); - for (const forbidden of [value.requestId, value.sessionId, value.accountId, pass.receiptId, pass.authentication.signatureBase64Url, value.authentication.signatureBase64Url, "credentialId", "upstream stack"] ) { - expect(serialized).not.toContain(forbidden); - } - }); - - test("swallows free-text audit transport failures", async () => { - const pass = await receipt(); - const value = await request(pass); - const result = await service(() => { throw new Error("secret upstream audit failure"); }).issue({ - request: value, - expected: expected(value), - }); - expect(result.kind).toBe("simulated_credential_ready_v0"); - expect(JSON.stringify(result)).not.toContain("secret upstream audit failure"); - }); -}); diff --git a/services/staging-issuance/face-enrollment-helper/Cargo.lock b/services/staging-issuance/face-enrollment-helper/Cargo.lock new file mode 100644 index 0000000..c9bbe93 --- /dev/null +++ b/services/staging-issuance/face-enrollment-helper/Cargo.lock @@ -0,0 +1,9727 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ab_glyph" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" + +[[package]] +name = "acir_field" +version = "1.0.0-beta.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "750990cd3514b93fbeacaa3e9e34cf1f61f02b340e3688d61a65992c64d8ee47" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "cfg-if", + "hex", + "num-bigint", + "serde", +] + +[[package]] +name = "addr2line" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common 0.1.7", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures 0.2.17", +] + +[[package]] +name = "aes-prng" +version = "0.2.1" +source = "git+https://github.com/tf-encrypted/aes-prng.git?branch=dragos%2Fdisplay#ebe79b1173ab6698c69d18dc464294f1893b44bb" +dependencies = [ + "aes", + "byteorder", + "rand 0.8.8", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685" +dependencies = [ + "as-slice", +] + +[[package]] +name = "aligned-vec" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" +dependencies = [ + "equator", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5a08ebfa51fdc243e0c6a662f5cf3428f04d1ad858e3fe77238cc78063eb86d" +dependencies = [ + "alloy-core", + "alloy-signer", + "alloy-signer-local", +] + +[[package]] +name = "alloy-consensus" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727016fed834c2392d014dd697ea473f3e47bcec31ba31ccffa9c1d18ed904e5" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-trie", + "alloy-tx-macros", + "auto_impl", + "borsh", + "c-kzg", + "derive_more", + "either", + "k256 0.13.4", + "once_cell", + "rand 0.8.8", + "secp256k1 0.30.0", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-consensus-any" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea5ae60bbb3ce9dc52685a70a3755ad4432045fd38079b763cfe5127c706134" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-core" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6a70852055d66af821d28497e690c95950020ed1ee4c7a0ab9b02a01ac75ee3" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", +] + +[[package]] +name = "alloy-eip2124" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "crc", + "serde", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-eip2930" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64579d931b3f8eacc7c9ab0b220e87e9c4816e5c724ede1947b55c2f8e92ae5" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "borsh", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "borsh", + "serde", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-eip7928" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a12e1dc70236cfb8e79b96dd8544aed47c39e2f45dc6b51c3703e969e052faa" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "borsh", + "once_cell", + "serde", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-eip8141" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36422c14bd57dcd638e276c8c9d7ac09eb16598e3a9dbd34e4b55267d4565b5e" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "borsh", + "serde", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-eips" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01905444bd2fc330673f11d2466c0f54e8488f7ce3132b6a5e6497916fca765" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-eip7928", + "alloy-eip8141", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "auto_impl", + "borsh", + "c-kzg", + "derive_more", + "either", + "serde", + "serde_with", + "sha2 0.10.9", +] + +[[package]] +name = "alloy-json-abi" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "858acd7fdad1e4a7057fd9c1b39c1f2cd6bcd57ebf3c56e2853c02ead049e816" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-json-rpc" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff9cb760601d352d1e59aab5803c3fb6dc99824b6883f5c7a781aacd4b54c66" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "http", + "serde", + "serde_json", + "thiserror 2.0.21", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e11dfba13dac9e54576bf41e1b7461491367e0bce6a2a4293b9e40ffa3ebd5e9" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-json-rpc", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-any", + "alloy-rpc-types-eth", + "alloy-serde", + "alloy-signer", + "alloy-sol-types", + "async-trait", + "auto_impl", + "derive_more", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-network-primitives" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3819bf6794d25f679d42c3f2b168e12cae08c56bb41d393cb6249b55e6d5933e" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-primitives" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5e9dbd49258ac3ab893a481d46be29b58be7f734dcac46cd80b6b13ee36566c" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "fixed-cache", + "foldhash 0.2.0", + "hashbrown 0.17.1", + "indexmap 2.14.2", + "itoa", + "k256 0.13.4", + "keccak-asm", + "paste", + "proptest", + "rand 0.9.5", + "rapidhash", + "ruint", + "rustc-hash", + "secp256k1 0.31.1", + "serde", + "sha3 0.11.0", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24671b1f62edcf0f9b62994c7bf72cd621a04a4b99f5020ece1a647b40e2f103" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d4311c03125e8a18296504560b9de3d75ecbd0dcda7f71e6cf2a196d57e6fba" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c5d320312e4a9481b18185429e57fa161dbf9468414ba5667aff4ebe7bd37e7" +dependencies = [ + "alloy-consensus-any", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32c475e21fe8a8caa02166b326ed22207a1a0597fc9b0dcdfb46e2fe6f80dadf" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-sol-types", + "alloy-trie", + "itertools 0.14.0", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-serde" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f44f297d3b9e3ca2c3039e3c0ed69acde9b35edda15381cf78f725b7263fbe2" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7de6fd34b5ba1789d482fa800dd97219b34765d6b07633a989a24d2dace770e" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "either", + "elliptic-curve 0.13.8", + "k256 0.13.4", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-signer-local" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6909c09d586c7b55eced688754d57dde8a6bcbae2b83e69a9b9250e74cfd79e" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "k256 0.13.4", + "rand 0.8.8", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-sol-macro" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60dd79f578c3912f1fc2a150dbeb8110b8cfb976c60f98ebf6de9d5da5965a2b" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error3", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edb8520f2f94275e1caa73c85207dcc78ec402a9a4c429240f9a0783a8f16c0" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap 2.14.2", + "proc-macro-error3", + "proc-macro2", + "quote", + "sha3 0.11.0", + "syn 2.0.119", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66af2d9344882172993be5f5cbfd349fdfa52cb548f7af8715b446fb35ef6001" +dependencies = [ + "const-hex", + "dunce", + "heck", + "macro-string", + "proc-macro2", + "quote", + "syn 2.0.119", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c2a8abc3334044013b23d5e438cc5dc802e5544cc42b713d0840d5185967cc" +dependencies = [ + "serde", + "winnow 1.0.4", +] + +[[package]] +name = "alloy-sol-types" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e6f87cf007caa54e95455875fbd25879b008d0d9c7c340a2c258b3a3400a28c" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "serde", +] + +[[package]] +name = "alloy-trie" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b94e3e0a88f8db47250ac8a95fb825d020719f833eb1dc661bd3609c3bbece7d" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "derive_more", + "nybbles", + "serde", + "smallvec 1.16.2", + "thiserror 2.0.21", + "tracing", +] + +[[package]] +name = "alloy-tx-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60fa90c57738ace5b38106c9f743f3d6d47de09a82e82ecfc42702c1acf116ee" +dependencies = [ + "darling 0.23.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ampc-secret-sharing" +version = "0.1.0" +source = "git+https://github.com/worldcoin/ampc-common.git?rev=3062538f0307471ed0dd2be8258952c807747141#3062538f0307471ed0dd2be8258952c807747141" +dependencies = [ + "aes-prng", + "bytemuck", + "eyre", + "itertools 0.13.0", + "num-traits", + "rand 0.8.8", + "rand_distr", + "serde", +] + +[[package]] +name = "android_system_properties" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + +[[package]] +name = "anyhow" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" + +[[package]] +name = "anymap2" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" + +[[package]] +name = "anymap3" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5dfbc6d8d2675589ccbe4d0fd61df2419075625f8c1a62325e718e2b0049f9" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "aquamarine" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "arg_enum_proc_macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-bn254" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bc66f96ebe2a17a499475b4f94791d379817592ef494171586967ffdc6f95db" +dependencies = [ + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-r1cs-std", + "ark-std 0.6.0", +] + +[[package]] +name = "ark-crypto-primitives" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0c292754729c8a190e50414fd1a37093c786c709899f29c9f7daccecfa855e" +dependencies = [ + "ahash", + "ark-crypto-primitives-macros", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-relations 0.5.1", + "ark-serialize 0.5.0", + "ark-snark 0.5.1", + "ark-std 0.5.0", + "blake2 0.10.6", + "derivative", + "digest 0.10.7", + "fnv", + "merlin", + "sha2 0.10.9", +] + +[[package]] +name = "ark-crypto-primitives" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31b3409b1846fe459d19c95df039481575ac6d5842ae63858ad75cc31219bfc1" +dependencies = [ + "ahash", + "ark-crypto-primitives-macros", + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-r1cs-std", + "ark-relations 0.6.0", + "ark-serialize 0.6.0", + "ark-snark 0.6.0", + "ark-std 0.6.0", + "blake2 0.10.6", + "blake3", + "derivative", + "digest 0.10.7", + "fnv", + "merlin", + "num-bigint", + "rayon", + "sha2 0.10.9", +] + +[[package]] +name = "ark-crypto-primitives-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8352a2b2aedf6ba2cc38f7520fc51191d518dde96175c729af19f2d059f191c4" +dependencies = [ + "ahash", + "ark-ff 0.6.0", + "ark-poly 0.6.0", + "ark-serialize 0.6.0", + "ark-std 0.6.0", + "educe", + "fnv", + "hashbrown 0.17.1", + "itertools 0.14.0", + "num-bigint", + "num-integer", + "num-traits", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7a806ac6c8307b929df4645776290a50ee2aac754ad09d8bdf73391309e43af" +dependencies = [ + "ark-ff-asm 0.6.0", + "ark-ff-macros 0.6.0", + "ark-serialize 0.6.0", + "ark-std 0.6.0", + "digest 0.10.7", + "educe", + "num-bigint", + "num-traits", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-ff-asm" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1479009684adc073dff49a1025d3a7065b317a9ead25aaaca38cdc70058ba8a2" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-ff-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0691ed21ef00ef89c1e9bda832eba493dda3ec2f8d892fb25b705f73f06bb8" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-groth16" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88f1d0f3a534bb54188b8dcc104307db6c56cdae574ddc3212aec0625740fc7e" +dependencies = [ + "ark-crypto-primitives 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-relations 0.5.1", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-groth16" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a293328aa422e65527e285614ce5d1dceb0bd7b8b18d18b1b63191ee1f74cb41" +dependencies = [ + "ark-crypto-primitives 0.6.0", + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-poly 0.6.0", + "ark-relations 0.6.0", + "ark-serialize 0.6.0", + "ark-snark 0.6.0", + "ark-std 0.6.0", + "rayon", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", +] + +[[package]] +name = "ark-poly" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f55af10b672002b8d953e230282c51206842e20e5791a94432219b4201de5c" +dependencies = [ + "ahash", + "ark-ff 0.6.0", + "ark-serialize 0.6.0", + "ark-std 0.6.0", + "educe", + "fnv", + "hashbrown 0.17.1", + "rayon", +] + +[[package]] +name = "ark-r1cs-std" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291f1c6628bfcac79b0dc2adbe401aa9100e2e96daa971645e0b18fc94de9a98" +dependencies = [ + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-relations 0.6.0", + "ark-std 0.6.0", + "educe", + "itertools 0.14.0", + "num-bigint", + "num-integer", + "num-traits", + "tracing", +] + +[[package]] +name = "ark-relations" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" +dependencies = [ + "ark-ff 0.5.0", + "ark-std 0.5.0", + "tracing", +] + +[[package]] +name = "ark-relations" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe4c11c797a64b8a23e22bf4e77bf582ac27bb21395e3183a9a506ba2561e9f9" +dependencies = [ + "ark-ff 0.6.0", + "ark-poly 0.6.0", + "ark-serialize 0.6.0", + "ark-std 0.6.0", + "foldhash 0.1.5", + "indexmap 2.14.2", + "rayon", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a74dd304fd536fb95d0a328e72be759209cc496a9da094c5bc56e5fea4f9e86b" +dependencies = [ + "ark-serialize-derive 0.6.0", + "ark-std 0.6.0", + "digest 0.10.7", + "num-bigint", + "rayon", + "serde_with", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f153690697a2b91e5e1251ff98411ee5371500a111a0fd317a70e588eb300f9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-snark" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d368e2848c2d4c129ce7679a7d0d2d612b6a274d3ea6a13bad4445d61b381b88" +dependencies = [ + "ark-ff 0.5.0", + "ark-relations 0.5.1", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-snark" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bdb461d2be9b2bd6f303c79fffc89f5858790a7b4d33257bca3178e2c071fb9" +dependencies = [ + "ark-ff 0.6.0", + "ark-relations 0.6.0", + "ark-serialize 0.6.0", + "ark-std 0.6.0", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand 0.8.8", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.8", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.8", +] + +[[package]] +name = "ark-std" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "367c9c827ed431bff6868b7aa926e05b16eb46603cc8b6e768e4a5553fa1d155" +dependencies = [ + "num-traits", + "rand 0.8.8", + "rayon", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" +dependencies = [ + "serde", + "zeroize", +] + +[[package]] +name = "as-slice" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "askama" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6024d73179f43f15ccd2b881bfea6fee7f3a46ec53f33b52210dea749ebebaa4" +dependencies = [ + "askama_macros", + "itoa", + "percent-encoding", + "serde", + "serde_json", +] + +[[package]] +name = "askama_derive" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071ee5ebf2138e3ad180e0aacf6940c2cab5e6d8333741d9925c7bee2b153f39" +dependencies = [ + "askama_parser", + "basic-toml", + "glob", + "memchr", + "proc-macro2", + "quote", + "rustc-hash", + "serde", + "serde_derive", + "syn 3.0.6", +] + +[[package]] +name = "askama_macros" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643e1c7cbb6aec1d920332fe51a7c0d8219e273dcb8602db03f5263e4d16487b" +dependencies = [ + "askama_derive", +] + +[[package]] +name = "askama_parser" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c5ae75772275d268b03ab8bdccdd12117b6169ee23256942b34e46c9f476583" +dependencies = [ + "rustc-hash", + "serde", + "serde_derive", + "unicode-ident", + "winnow 1.0.4", +] + +[[package]] +name = "async-compat" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c97d7ff3c25d6c10d64170c12acaf5d4245e76dece3779c1d92b153a64f11df" +dependencies = [ + "futures-core", + "futures-io", + "once_cell", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-lock" +version = "3.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-trait" +version = "0.1.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "attestation-gateway-types" +version = "0.1.0" +source = "git+https://github.com/worldcoin/attestation-gateway?rev=f5d1f53#f5d1f53db6d1158b82c62dc02348c0e314d0b6ce" +dependencies = [ + "hex", + "http", + "serde", + "sha2 0.10.9", + "thiserror 2.0.21", +] + +[[package]] +name = "auto_impl" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "av-scenechange" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394" +dependencies = [ + "aligned", + "anyhow", + "arg_enum_proc_macro", + "arrayvec", + "log", + "num-rational", + "num-traits", + "pastey", + "rayon", + "thiserror 2.0.21", + "v_frame", + "y4m", +] + +[[package]] +name = "av1-grain" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8" +dependencies = [ + "anyhow", + "arrayvec", + "log", + "nom 8.0.0", + "num-rational", + "v_frame", +] + +[[package]] +name = "avif-serialize" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7178fe5f7d460b13895ebb9dcb28a3a6216d2df2574a0806cb51b555d297f38" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "axum" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" +dependencies = [ + "axum-core", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde_core", + "sync_wrapper", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", +] + +[[package]] +name = "backtrace" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide 0.8.9", + "object", + "rustc-demangle", + "windows-link", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base16ct" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" + +[[package]] +name = "base64ct" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" + +[[package]] +name = "basic-toml" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a" +dependencies = [ + "serde", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bit_field" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" + +[[package]] +name = "bitcoin-consensus-encoding" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9daa31138eb443d5751b207f3f64154e2bb09cd59960562ccc7a7112be38147f" +dependencies = [ + "bitcoin-internals", + "hex-conservative 1.3.0", + "serde", +] + +[[package]] +name = "bitcoin-internals" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8bea3a9f0cfece4564e37cb49a38cc245ca5184719e50d7d0dda3268722c4e2" + +[[package]] +name = "bitcoin-io" +version = "0.1.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb5de036369d1ac59d3c1819ebc4d850f89466f5401c571a285b6ed564a4cb78" +dependencies = [ + "bitcoin-consensus-encoding", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.14.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bca4c7abb40c8817d77403c880988cfd484f23ab2365726afb2f798363e2c4a2" +dependencies = [ + "bitcoin-io", + "hex-conservative 0.2.3", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06" + +[[package]] +name = "bitstream-io" +version = "4.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f" +dependencies = [ + "no_std_io2", +] + +[[package]] +name = "bitvec" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddcec3d12c579d40898fe0a9a358a803c23e9c52ca3c425707f81c9436211837" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b5d4d889834ee8ecfc0f8426ad30faf7cdcb10f741a8e6d7224d95325479f6f" +dependencies = [ + "digest 0.11.3", +] + +[[package]] +name = "blake3" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures 0.2.17", + "digest 0.10.7", + "zeroize", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" +dependencies = [ + "hybrid-array", +] + +[[package]] +name = "block-padding" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blst" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20659f9bbee16cbbd2f7393e40ab6309f5a98f76a2eb57a995ec508b72387fe" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "borsh" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "553c5d846a6ba5150c65e3b1b8ec073bcf1abc20f9b7220de384a4443ea4e20a" +dependencies = [ + "borsh-derive", + "bytes", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cdfe656708a01f89b451a7d36466e6fe6c414de0aa18fc54f864f6f9ca9f56" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "brillig" +version = "1.0.0-beta.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f985dfdc4f40039725ee3032e235900797db5987a99e1f8adbc5a449a67ef22" +dependencies = [ + "acir_field", + "itertools 0.14.0", + "serde", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "built" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0e531d93d39c34eef561e929e8a7f86d77a5af08aac4f6d6e39976c51858e9" + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[package]] +name = "by_address" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "bytemuck" +version = "1.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a1f896587b6f2c069c73d2f0913e2d590c3990285cd2f0b6aa02b786b4c679c" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" +dependencies = [ + "serde", +] + +[[package]] +name = "c-kzg" +version = "2.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d04308254695569fdb9bfe3bacc1c91837a670d0806605eb82d63748fbd3a6" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "once_cell", + "serde", +] + +[[package]] +name = "camino" +version = "1.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbbad30e4b4c14a39e3cc8aed085a12a327257c316619c93581e017bc52be591" +dependencies = [ + "serde_core", +] + +[[package]] +name = "cargo-platform" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0061da739915fae12ea00e16397555ed4371a6bb285431aab930f61b0aa4ba" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "cargo_metadata" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.28", + "serde", + "serde_json", + "thiserror 2.0.21", +] + +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher", +] + +[[package]] +name = "cc" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f360145194ee8e21db5ee7f3fcd4fe52210864c75c985dae33218202c8bbe040" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex 2.0.1", +] + +[[package]] +name = "cfg-if" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" + +[[package]] +name = "cfg_aliases" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" + +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures 0.2.17", +] + +[[package]] +name = "chacha20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "rand_core 0.10.1", +] + +[[package]] +name = "chrono" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common 0.1.7", + "inout", + "zeroize", +] + +[[package]] +name = "clang" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ed30b30e1e17966b55ddd0b9dd2758fd824f0a6da6875c8abb17e6aba47c28" +dependencies = [ + "clang-sys", + "libc", +] + +[[package]] +name = "clang-sys" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "clap_lex" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486" + +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + +[[package]] +name = "cobs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.21", +] + +[[package]] +name = "codespan" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583f52b0658b321b25fd6b209b6c76cf058f433071297de64e5980c3d9aad937" +dependencies = [ + "codespan-reporting", + "serde", +] + +[[package]] +name = "codespan-reporting" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681" +dependencies = [ + "serde", + "termcolor", + "unicode-width", +] + +[[package]] +name = "color-eyre" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d" +dependencies = [ + "backtrace", + "color-spantrace", + "eyre", + "indenter", + "once_cell", + "owo-colors", + "tracing-error", +] + +[[package]] +name = "color-spantrace" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427" +dependencies = [ + "once_cell", + "owo-colors", + "tracing-core", + "tracing-error", +] + +[[package]] +name = "colorchoice" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + +[[package]] +name = "colorutils-rs" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2fc25857fa523662de5cae84225b0e7bfb24a2a3f9ed8802fecf03df7252b1" +dependencies = [ + "erydanos", + "half", + "num-traits", + "rayon", +] + +[[package]] +name = "combine" +version = "4.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfc320937d09e6de266b31b9afb480f197d7a861be86be7cb2ea7e5d1bfffc5e" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "const-hex" +version = "1.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e59eef12462b0f9b0a3620219be5d639afd79fe39dff0a42c3997061f9298b4" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "proptest", + "serde_core", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const-oid" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + +[[package]] +name = "const_format" +version = "0.2.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4481a617ad9a412be3b97c5d403fef8ed023103368908b9c50af598ff467cc1e" +dependencies = [ + "const_format_proc_macros", + "konst", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" + +[[package]] +name = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpubits" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853" + +[[package]] +name = "crc32fast" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01a7799fd6b852db0e61728dde9a204c423b44d689dbd432522543614b490e78" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "crossbeam-deque" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622f3fc73690be383c7214310406f28a90e6edeadc3cea882f9d71e495b9711a" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc74980687109a3b14c72fd458107bf0baa1da1a1a805e178d15501ba9b86d9d" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-bigint" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" +dependencies = [ + "cpubits", + "ctutils", + "getrandom 0.4.3", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "crypto-common" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" +dependencies = [ + "getrandom 0.4.3", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "crypto_box" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16182b4f39a82ec8a6851155cc4c0cda3065bb1db33651726a29e1951de0f009" +dependencies = [ + "aead", + "blake2 0.10.6", + "crypto_secretbox", + "curve25519-dalek", + "salsa20", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto_secretbox" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d6cf87adf719ddf43a805e92c6870a531aedda35ff640442cbaf8674e141e1" +dependencies = [ + "aead", + "cipher", + "generic-array", + "poly1305", + "salsa20", + "subtle", + "zeroize", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "curve25519-dalek-derive", + "fiat-crypto", + "rustc_version 0.4.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "cxx-build" +version = "1.0.202" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fde53ca86b9704a943fef0f1e1d836239a6aedca5de3c65fa9f97ec0bd46d39" +dependencies = [ + "cc", + "codespan-reporting", + "indexmap 2.14.2", + "proc-macro2", + "quote", + "scratch", + "syn 3.0.6", +] + +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core 0.23.0", + "darling_macro 0.23.0", +] + +[[package]] +name = "darling" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed17f5901b6630b993ca003def43f2f8ef4014fc13b047b57aad617ff32bc2ec" +dependencies = [ + "darling_core 0.24.1", + "darling_macro 0.24.1", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "serde", + "strsim", + "syn 2.0.119", +] + +[[package]] +name = "darling_core" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6837e2cf7485aaae18f86181d2f0e9a7ed297a025e220aeabf63fdebd3a2ddff" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 3.0.6", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core 0.23.0", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "darling_macro" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ac7135c3ef02b2f7833bbeb1be5ba7f966dcde8a87c6b87f65a778d71a02785" +dependencies = [ + "darling_core 0.24.1", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "data-encoding" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06" + +[[package]] +name = "deep_learning_backends" +version = "0.1.0" +source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" +dependencies = [ + "flexi_logger", + "image", + "log", + "ndarray", + "ndarray-stats", + "num-traits", + "ort", + "ort-tract", + "serde", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "defmt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" +dependencies = [ + "defmt-parser", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror 2.0.21", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid 0.9.6", + "pem-rfc7468 0.7.0", + "zeroize", +] + +[[package]] +name = "der" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a878c850e9e421b20262e9b41f9c860e4785fa07541c266b62ff9d1ef998a80a" +dependencies = [ + "const-oid 0.10.2", + "pem-rfc7468 1.0.0", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "serde_core", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive-new" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3418329ca0ad70234b9735dc4ceed10af4df60eff9c8e7b06cb5e520d92c3535" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive-where" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e2b94854e8576378ccda7c8de8a66ed8b4e8acbd2c50ec3418ea6c8aaf4b567" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "syn 2.0.119", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "const-oid 0.9.6", + "crypto-common 0.1.7", + "subtle", +] + +[[package]] +name = "digest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.1", + "const-oid 0.10.2", + "crypto-common 0.2.2", + "ctutils", +] + +[[package]] +name = "displaydoc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "doc-comment" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9" + +[[package]] +name = "document-features" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dryoc" +version = "0.6.2" +source = "git+https://github.com/brndnmtthws/dryoc?rev=e0e0ef0#e0e0ef0e77c483eabcc266bd06ff058fd330de92" +dependencies = [ + "bitflags 2.13.2", + "chacha20 0.9.1", + "curve25519-dalek", + "generic-array", + "lazy_static", + "libc", + "rand_core 0.6.4", + "salsa20", + "sha2 0.10.9", + "subtle", + "winapi", + "zeroize", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "dyn-hash" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15401da73a9ed8c80e3b2d4dc05fe10e7b72d7243b9f614e516a44fa99986e88" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der 0.7.10", + "digest 0.10.7", + "elliptic-curve 0.13.8", + "rfc6979 0.4.0", + "serdect 0.2.0", + "signature 2.2.0", + "spki 0.7.3", +] + +[[package]] +name = "ecdsa" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" +dependencies = [ + "der 0.8.2", + "digest 0.11.3", + "elliptic-curve 0.14.1", + "rfc6979 0.6.0", + "signature 3.0.0", + "spki 0.8.0", + "zeroize", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "either" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34" +dependencies = [ + "serde", +] + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct 0.2.0", + "crypto-bigint 0.5.5", + "digest 0.10.7", + "ff 0.13.1", + "generic-array", + "group 0.13.0", + "pem-rfc7468 0.7.0", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "sec1 0.7.3", + "serdect 0.2.0", + "subtle", + "zeroize", +] + +[[package]] +name = "elliptic-curve" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" +dependencies = [ + "base16ct 1.0.0", + "crypto-bigint 0.7.5", + "crypto-common 0.2.2", + "digest 0.11.3", + "ff 0.14.0", + "group 0.14.0", + "hybrid-array", + "pem-rfc7468 1.0.0", + "pkcs8 0.11.0", + "rand_core 0.10.1", + "sec1 0.8.1", + "subtle", + "zeroize", +] + +[[package]] +name = "embed-doc-image" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af36f591236d9d822425cb6896595658fa558fcebf5ee8accac1d4b92c47166e" +dependencies = [ + "base64 0.13.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + +[[package]] +name = "enum-as-inner" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "enum-ordinalize" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89dd01549b09589510cf0647475075d12071456586d70f5c75c98ae2a5537677" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65863d15a4ce2888bd2f0f543cc963d3879c3a022c8ee43f6141d479a3ac815" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "equator" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" +dependencies = [ + "equator-macro", +] + +[[package]] +name = "equator-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "erydanos" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cbdc4987ed8e9ece64845393c2d53596b3a4ccbfb3948d799d58f6450e89fb1" +dependencies = [ + "num-traits", +] + +[[package]] +name = "event-listener" +version = "5.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2" +dependencies = [ + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "exr" +version = "1.74.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711fe42c9964295e01ee3fba3f9fe0e1d24b98886950d68efe81b1c76e21adf3" +dependencies = [ + "bit_field", + "half", + "lebe", + "miniz_oxide 0.8.9", + "num-complex", + "pulp", + "rayon-core", + "smallvec 1.16.2", + "zune-inflate", +] + +[[package]] +name = "eyre" +version = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08309dbcc659c5549a24ddb9b27027640641b282ef5768267c7e675558986a3" +dependencies = [ + "autocfg", + "indenter", + "once_cell", +] + +[[package]] +name = "face-engine" +version = "2.20.0" +source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" +dependencies = [ + "approx", + "aquamarine", + "async-lock", + "cfg-if", + "deep_learning_backends", + "fast_image_resize", + "flexi_logger", + "graph", + "image", + "imageproc", + "inventory", + "itertools 0.13.0", + "log", + "nalgebra", + "ndarray", + "ndarray-stats", + "num-traits", + "schemars 0.8.22", + "serde", + "serde_json", + "serde_with", + "serde_yaml", + "thiserror 1.0.69", + "tracing", + "uniffi", + "utils", + "utils_macros", +] + +[[package]] +name = "fast_image_resize" +version = "5.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc7fe45cf92b43817ff62a3723e862b85bd1d06288f63007f7645d1d2f7a060" +dependencies = [ + "bytemuck", + "cfg-if", + "document-features", + "image", + "num-traits", + "rayon", + "thiserror 2.0.21", +] + +[[package]] +name = "fastrand" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "ff" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" +dependencies = [ + "rand_core 0.10.1", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "filetime" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759" +dependencies = [ + "cfg-if", + "libc", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484" + +[[package]] +name = "fixed-cache" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fe63500644ef0269fe6b744e7e5dc5c20b5eebf3d881bc2be53f194636f6583" +dependencies = [ + "equivalent", + "rapidhash", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand 0.8.8", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + +[[package]] +name = "flate2" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb" +dependencies = [ + "crc32fast", + "miniz_oxide 0.9.1", + "zlib-rs", +] + +[[package]] +name = "flexi_logger" +version = "0.28.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cca927478b3747ba47f98af6ba0ac0daea4f12d12f55e9104071b3dc00276310" +dependencies = [ + "chrono", + "glob", + "log", + "nu-ansi-term", + "thiserror 1.0.69", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs-err" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91aa448ca50d7e79433bdf3ee8d99215430d2ec02ade5aefab2a073a1822e8a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" + +[[package]] +name = "futures-executor" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" + +[[package]] +name = "futures-macro" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "futures-sink" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" + +[[package]] +name = "futures-task" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" + +[[package]] +name = "futures-util" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "futures-utils-wasm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" + +[[package]] +name = "glob" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" + +[[package]] +name = "goblin" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" +dependencies = [ + "log", + "plain", + "scroll", +] + +[[package]] +name = "graph" +version = "0.1.0" +source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" +dependencies = [ + "graph_macros", + "inventory", + "log", + "schemars 0.8.22", + "serde", + "serde_with", + "serde_yaml", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "graph_macros" +version = "0.1.0" +source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" +dependencies = [ + "inventory", + "once_cell", + "proc-macro2", + "quote", + "serde", + "serde_yaml", + "syn 2.0.119", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff 0.13.1", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "group" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" +dependencies = [ + "ff 0.14.0", + "rand_core 0.10.1", + "subtle", +] + +[[package]] +name = "h2" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef8e5e5a340588f4452631496976cf8636d4a7ecf600239fdc27615d2530bc16" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.14.2", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "num-traits", + "zerocopy", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "allocator-api2", + "foldhash 0.2.0", + "serde", + "serde_core", +] + +[[package]] +name = "heapless" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32", + "rustc_version 0.4.1", + "serde", + "spin 0.9.9", + "stable_deref_trait", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17592d60ebacc7d5e169f4663c5f84f9161cc90328abcfe8456f41e4dfcb284" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-conservative" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3fef046dca3ca91ee1408a8c1b80ab777e80a4d308d1bf4e7adb3fcb047e08" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "hex-conservative" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271e0d19bcb473b6675739a2b536076b24a082316cb5199ad918edce10c599e8" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "histogram_equalization" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cba4fb49502d10e699c8907af302e4ecdd930773a1cd63a9fce6a9ab8223d93" +dependencies = [ + "colorutils-rs", + "num-traits", + "rayon", + "yuv", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "hmac" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" +dependencies = [ + "digest 0.11.3", +] + +[[package]] +name = "http" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hybrid-array" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27f864f10dfb56725ce5ce5472bc52252c8f93a4ab86327122cebf62c5f59a17" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + +[[package]] +name = "hyper" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b501faa50e7a26c3d3560ca625132f4078a17771f4810baf70475ae48cbe43" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec 1.16.2", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa8e654703247911e29c23fbeaa261834bd9bb74efba2f9acddc37bfb127f53" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc03d96684f9226b8a787cdb71488417b53ab5ea8fdb1dac946cb9431cc8bff" +dependencies = [ + "base64 0.23.1", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "httparse", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec 1.16.2", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" + +[[package]] +name = "icu_properties" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" + +[[package]] +name = "icu_provider" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec 1.16.2", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "ignition" +version = "1.0.0" +source = "git+https://github.com/diego-a-orellana/ignition.git?branch=main#2693b9aa50ac7f94939809076926f76539775845" +dependencies = [ + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "image" +version = "0.25.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" +dependencies = [ + "bytemuck", + "byteorder-lite", + "exr", + "moxcms", + "num-traits", + "png", + "ravif", + "rayon", + "zune-core", + "zune-jpeg", +] + +[[package]] +name = "imageproc" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "602b4e8a4cc3e98372b766cd184ab532999bc0e839b7469e759511ccabc65d77" +dependencies = [ + "ab_glyph", + "approx", + "getrandom 0.2.17", + "image", + "itertools 0.12.1", + "nalgebra", + "num", + "rand 0.8.8", + "rand_distr", + "rayon", +] + +[[package]] +name = "imgref" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e44b0a4eaa4c82f441d50a963f2d5f05a787240aeee097597033e72accfd22f" + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "include_dir" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "indenter" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855" +dependencies = [ + "equivalent", + "hashbrown 0.17.1", + "serde", + "serde_core", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "interpolate_name" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "inventory" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" +dependencies = [ + "rustversion", +] + +[[package]] +name = "ipnet" +version = "2.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791930b43c0d5973160d90a8f3894509f2b273430f5c5c73b668636d0287c5c0" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "jiff" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1baf72f08796de0260609515130699b890ac25f30e610ad894bc5856cafdb" +dependencies = [ + "defmt", + "jiff-core", + "jiff-static", + "jiff-tzdb-platform", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", + "windows-link", +] + +[[package]] +name = "jiff-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e52fe76043ccecc9005d2305ebaadf7d7fc0cc89ca6baa10a94d6bc68c7128c" +dependencies = [ + "defmt", + "log", +] + +[[package]] +name = "jiff-static" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "378268a1116ad67ae6228701118ac9f491d78fda38a40a1f1a9e1348de6f7212" +dependencies = [ + "jiff-core", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +dependencies = [ + "jiff-tzdb", +] + +[[package]] +name = "jobserver" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" +dependencies = [ + "getrandom 0.4.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5" +dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "once_cell", + "serdect 0.2.0", + "sha2 0.10.9", +] + +[[package]] +name = "k256" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" +dependencies = [ + "cpubits", + "ecdsa 0.17.0", + "elliptic-curve 0.14.1", + "primeorder 0.14.0", + "sha2 0.11.0", + "signature 3.0.0", + "wnaf", +] + +[[package]] +name = "keccak" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" +dependencies = [ + "cpufeatures 0.2.17", +] + +[[package]] +name = "keccak" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8f198d1db720e4940b5a493201d199d9f24f568f8f746bd13706243a2f71598" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", +] + +[[package]] +name = "keccak-asm" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f32890f646914a263e39064295005972f0e95b928254061b2aca98445f304ee9" +dependencies = [ + "cfg-if", + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "konst" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "128133ed7824fcd73d6e7b17957c5eb7bacb885649bd8c69708b2331a10bcefb" +dependencies = [ + "konst_macro_rules", +] + +[[package]] +name = "konst_macro_rules" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" + +[[package]] +name = "kstring" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a09b82a7f771ed02dc0dd9b27130a0fa5499fa15ed3027116c1e5e4e591bd9e" +dependencies = [ + "serde", + "static_assertions", +] + +[[package]] +name = "lazy_static" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20870f649af7073d53e38067b2a84312175d56ea15217e1b15bc83506ec50afb" +dependencies = [ + "spin 0.9.9", +] + +[[package]] +name = "lebe" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" + +[[package]] +name = "libc" +version = "0.2.189" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" + +[[package]] +name = "libfuzzer-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2" +dependencies = [ + "arbitrary", + "cc", +] + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "liquid" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e9338405fdbc0bce9b01695b2a2ef6b20eca5363f385d47bce48ddf8323cc25" +dependencies = [ + "doc-comment", + "liquid-core", + "liquid-derive", + "liquid-lib", + "serde", +] + +[[package]] +name = "liquid-core" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feb8fed70857010ed9016ed2ce5a7f34e7cc51d5d7255c9c9dc2e3243e490b42" +dependencies = [ + "anymap2", + "itertools 0.13.0", + "kstring", + "liquid-derive", + "num-traits", + "pest", + "pest_derive", + "regex", + "serde", + "time", +] + +[[package]] +name = "liquid-derive" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b51f1d220e3fa869e24cfd75915efe3164bd09bb11b3165db3f37f57bf673e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "liquid-lib" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee1794b5605e9f8864a8a4f41aa97976b42512cc81093f8c885d29fb94c6c556" +dependencies = [ + "itertools 0.13.0", + "liquid-core", + "once_cell", + "percent-encoding", + "regex", + "time", + "unicode-segmentation", +] + +[[package]] +name = "litemap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" + +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" + +[[package]] +name = "loop9" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" +dependencies = [ + "imgref", +] + +[[package]] +name = "lru-slab" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4050469837a6ff301cd14c1f8f24f88549e6d548f24f64e2148eb0f72cebc51f" + +[[package]] +name = "lzma-sys" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "mach2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" +dependencies = [ + "libc", +] + +[[package]] +name = "macro-string" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a9dbbfc75d2688ed057456ce8a3ee3f48d12eec09229f560f3643b9f275653" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "matrixmultiply" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f607c237553f086e7043417a51df26b2eb899d3caff94e6a67592ff992fedc7" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", +] + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "memmap2" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak 0.1.6", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "mmap-rs" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86968d85441db75203c34deefd0c88032f275aaa85cee19a1dcfff6ae9df56da" +dependencies = [ + "bitflags 1.3.2", + "combine", + "libc", + "mach2", + "nix", + "sysctl", + "thiserror 1.0.69", + "widestring", + "windows 0.48.0", +] + +[[package]] +name = "moxcms" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" +dependencies = [ + "num-traits", + "pxfm", +] + +[[package]] +name = "multimap" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" + +[[package]] +name = "nalgebra" +version = "0.32.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5c17de023a86f59ed79891b2e5d5a94c705dbe904a5b5c9c952ea6221b03e4" +dependencies = [ + "approx", + "matrixmultiply", + "nalgebra-macros", + "num-complex", + "num-rational", + "num-traits", + "serde", + "simba", + "typenum", +] + +[[package]] +name = "nalgebra-macros" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ndarray" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" +dependencies = [ + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "portable-atomic", + "portable-atomic-util", + "rawpointer", + "serde", +] + +[[package]] +name = "ndarray-stats" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ebbe97acce52d06aebed4cd4a87c0941f4b2519b59b82b4feb5bd0ce003dfd" +dependencies = [ + "indexmap 2.14.2", + "itertools 0.13.0", + "ndarray", + "noisy_float", + "num-integer", + "num-traits", + "rand 0.8.8", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset", + "pin-utils", +] + +[[package]] +name = "no_std_io2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418abd1b6d34fbf6cae440dc874771b0525a604428704c76e48b29a5e67b8003" +dependencies = [ + "memchr", +] + +[[package]] +name = "noisy_float" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c16843be85dd410c6a12251c4eca0dd1d3ee8c5725f746c4d5e0fdcec0a864b2" +dependencies = [ + "num-traits", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nom" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" +dependencies = [ + "memchr", +] + +[[package]] +name = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" +dependencies = [ + "num-integer", + "num-traits", + "rand 0.8.8", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" +dependencies = [ + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.8", + "smallvec 1.16.2", + "zeroize", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "bytemuck", + "num-traits", + "serde", +] + +[[package]] +name = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "num-integer" +version = "0.1.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "nybbles" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d49ff0c0d00d4a502b39df9af3a525e1efeb14b9dabb5bb83335284c1309210" +dependencies = [ + "alloy-rlp", + "cfg-if", + "proptest", + "ruint", + "serde", + "smallvec 1.16.2", +] + +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "opencv" +version = "0.98.1" +source = "git+https://github.com/diego-a-orellana/opencv-rust.git?branch=release%2Fv0.98.1b#201cbc77bbb7ad246e128d42d80fe6ad1dce83c9" +dependencies = [ + "cc", + "dunce", + "ignition", + "jobserver", + "libc", + "num-traits", + "opencv-binding-generator", + "pkg-config", + "semver 1.0.28", + "shlex 1.3.0", + "vcpkg", + "windows 0.62.2", +] + +[[package]] +name = "opencv-binding-generator" +version = "0.100.0" +source = "git+https://github.com/diego-a-orellana/opencv-rust.git?branch=release%2Fv0.98.1b#201cbc77bbb7ad246e128d42d80fe6ad1dce83c9" +dependencies = [ + "clang", + "clang-sys", + "dunce", + "percent-encoding", + "regex", + "shlex 1.3.0", +] + +[[package]] +name = "openssl-probe" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + +[[package]] +name = "orb-qr-link" +version = "0.1.0" +source = "git+https://github.com/worldcoin/orb-software?rev=8b0a781db62b04ff0351cd3350b1a9f8d49f07a3#8b0a781db62b04ff0351cd3350b1a9f8d49f07a3" +dependencies = [ + "blake3", + "data-encoding", + "serde", + "thiserror 1.0.69", + "uuid", +] + +[[package]] +name = "orb-relay-messages" +version = "0.0.0" +source = "git+https://github.com/worldcoin/orb-relay-messages.git?rev=9bc83771b15cbf22796e93a7276040db4d63a64d#9bc83771b15cbf22796e93a7276040db4d63a64d" +dependencies = [ + "blake3", + "prost 0.14.4", + "prost-build", + "prost-types", + "tonic", + "tonic-prost", + "tonic-prost-build", +] + +[[package]] +name = "ordered-float" +version = "5.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c7c9e0d9b23589f26070720bac724174bfec1083e82f7854cdd0267518343c0" +dependencies = [ + "num-traits", + "rand 0.8.8", + "serde", +] + +[[package]] +name = "ort" +version = "2.0.0-rc.10" +source = "git+https://github.com/diego-a-orellana/ort.git?branch=release%2Fv2.0.0-rc.10b#7937928d62b3f8e447231f165eb0bec863235757" +dependencies = [ + "half", + "ndarray", + "ort-sys", + "smallvec 2.0.0-alpha.10", + "tracing", +] + +[[package]] +name = "ort-sys" +version = "2.0.0-rc.10" +source = "git+https://github.com/diego-a-orellana/ort.git?branch=release%2Fv2.0.0-rc.10b#7937928d62b3f8e447231f165eb0bec863235757" +dependencies = [ + "pkg-config", +] + +[[package]] +name = "ort-tract" +version = "0.1.0+0.21" +source = "git+https://github.com/diego-a-orellana/ort.git?branch=release%2Fv2.0.0-rc.10b#7937928d62b3f8e447231f165eb0bec863235757" +dependencies = [ + "ort-sys", + "parking_lot", + "tract-onnx", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "owo-colors" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c45bb4a6ae1280ec0803b1ef9d3455eb50f01efbbe1447ab020f1d54fba9d8" + +[[package]] +name = "oxide" +version = "0.75.0" +source = "git+https://github.com/worldcoin/oxide.git?rev=329274a32be02be0bb39ca02adc4e4e4e438ada0#329274a32be02be0bb39ca02adc4e4e4e438ada0" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "ampc-secret-sharing", + "async-trait", + "attestation-gateway-types", + "base64 0.22.1", + "blake3", + "bytes", + "cc", + "chrono", + "ciborium", + "crypto_box", + "dryoc", + "face-engine", + "flate2", + "futures", + "hex", + "http", + "image", + "k256 0.13.4", + "log", + "orb-qr-link", + "orb-relay-messages", + "p256 0.13.2", + "prost 0.14.4", + "rand 0.8.8", + "reqwest", + "rsa", + "ruint", + "semaphore-rs", + "semaphore-rs-poseidon", + "semaphore-rs-trees", + "semaphore-rs-utils", + "serde", + "serde_json", + "sha2 0.10.9", + "strum 0.27.2", + "tar", + "thiserror 2.0.21", + "tokio", + "uniffi", + "uuid", + "world-id-primitives 0.13.0", + "zeroize", + "zip", +] + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "primeorder 0.13.6", + "sha2 0.10.9", +] + +[[package]] +name = "p256" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c9239b2dbc807adbbe147e8cf72ea7450c3a0aabe62cb8e75ff4ec22e1f72a" +dependencies = [ + "ecdsa 0.17.0", + "elliptic-curve 0.14.1", + "primefield", + "primeorder 0.14.0", + "sha2 0.11.0", +] + +[[package]] +name = "p3-challenger" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7d2d45f5a51dc3f965e8d6da60a6c26c807e88657863d56da275eaa05ad36f1" +dependencies = [ + "p3-field", + "p3-maybe-rayon", + "p3-monty-31", + "p3-symmetric", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-dft" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beabb40bc8ac7f5f95870f271fb844c7e2e1ebb7f0761a8eebb2614b56c6b1c1" +dependencies = [ + "itertools 0.14.0", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "spin 0.10.1", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4819a3e4c1882431a63d4847ffa10d110017aee4cb9cf4319ca6dca191930969" +dependencies = [ + "itertools 0.14.0", + "num-bigint", + "p3-maybe-rayon", + "p3-util", + "paste", + "rand 0.9.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-koala-bear" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfb02789fca0950e246123d652bd78e75a76e3b90a651fd88dbb215cd3e81f5a" +dependencies = [ + "p3-challenger", + "p3-field", + "p3-monty-31", + "p3-poseidon2", + "p3-symmetric", + "rand 0.9.5", +] + +[[package]] +name = "p3-matrix" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6fde449bd2963d394284ec46db8c647e6a5602d90601117b76752072ab54168" +dependencies = [ + "itertools 0.14.0", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand 0.9.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54afab3883d8a14676b492709d6c4e9fa535c36718b737db0817aacfaaaa11f6" + +[[package]] +name = "p3-mds" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3895055d735ac96d010747b3aaabd4c2645b9fd80226960550318db2e25afb75" +dependencies = [ + "p3-dft", + "p3-field", + "p3-symmetric", + "p3-util", + "rand 0.9.5", +] + +[[package]] +name = "p3-monty-31" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9fe0be661891af1f703ceaf57334fcbd540804988984dc2b500dd99740e7c81" +dependencies = [ + "itertools 0.14.0", + "num-bigint", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "paste", + "rand 0.9.5", + "serde", + "spin 0.10.1", + "tracing", +] + +[[package]] +name = "p3-poseidon2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6fc2368447576283f8b3849a36095017f25addf06eab9e33b0ce7f96b0b99d" +dependencies = [ + "p3-field", + "p3-mds", + "p3-symmetric", + "p3-util", + "rand 0.9.5", +] + +[[package]] +name = "p3-symmetric" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a14456a42a7d9e65f13999706f1bca2832175935169b3a54286e18331cf1d82f" +dependencies = [ + "itertools 0.14.0", + "p3-field", + "serde", +] + +[[package]] +name = "p3-util" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911154accf66034b0eec4452956c088f92a200b37a8225c1caed74cfbd38cc8d" +dependencies = [ + "serde", + "transpose", +] + +[[package]] +name = "palette" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddeed8580d347d2abf3dcf06a5f0b3dc020258338526b277847cd4248a70fc64" +dependencies = [ + "approx", + "palette_derive", + "palette_math", + "phf", +] + +[[package]] +name = "palette_derive" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88537020289b719d81be994ccf1bbf4990f477e2f69ee52fe3e45f43a02e56be" +dependencies = [ + "by_address", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "palette_math" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e6eb142958d64335fb0e345c5b9ead2ecd6fc438c307e9d7d3c4fd428dbaf12" + +[[package]] +name = "parity-scale-codec" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec 1.16.2", + "windows-link", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pastey" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "pem-rfc7468" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6305423e0e7738146434843d1694d621cce767262b2a86910beab705e4493d9" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pest" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45d3aca230fad2e6f6317ca0a72724338c4960cb97168a85cdee66df4a9a21a8" +dependencies = [ + "memchr", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284b60557f2c4a2e72ad3f2d34d42685a2fa4a6a61d0d2a10c0ae2a5e916c2cf" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d9d1f08a115309ee99268cf85e5228e0e56aa9caf8841ec12866b6be07c3109" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "pest_meta" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed93ba1a9ffcca32130a5188701c81c0c49cf00d4b7c5007d5148951d743adcb" +dependencies = [ + "pest", +] + +[[package]] +name = "petgraph" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" +dependencies = [ + "fixedbitset", + "hashbrown 0.15.5", + "indexmap 2.14.2", +] + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pin-utils" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13bee6c73da26345c729282832b60b0363cf3dd9f4bfd81d8551b7a1c889a113" + +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der 0.7.10", + "pkcs8 0.10.2", + "spki 0.7.3", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der 0.7.10", + "spki 0.7.3", +] + +[[package]] +name = "pkcs8" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" +dependencies = [ + "der 0.8.2", + "spki 0.8.0", +] + +[[package]] +name = "pkg-config" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "png" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" +dependencies = [ + "bitflags 2.13.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide 0.8.9", +] + +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures 0.2.17", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" + +[[package]] +name = "portable-atomic-util" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10ab3eb7f3becc3a1cbc4f2c6f20267996cfc1a6467a873763411b136a122715" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "postcard" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" +dependencies = [ + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "heapless", + "serde", +] + +[[package]] +name = "potential_utf" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.119", +] + +[[package]] +name = "primal-check" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc0d895b311e3af9902528fbb8f928688abbd95872819320517cc24ca6b2bd08" +dependencies = [ + "num-integer", +] + +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint 0.7.5", + "crypto-common 0.2.2", + "ff 0.14.0", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve 0.13.8", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve 0.14.1", + "once_cell", + "primefield", + "serdect 0.4.3", + "wnaf", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit 0.25.15+spec-1.1.0", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr3" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82366fd7d8b7a440d66d13418820c69df9b3908bcb1a0476d7f5ce5d12f5a04d" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error3" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b511283ea8a74b4b39447b128c5d00f03a356b7424554b13e298a5550100d9ac" +dependencies = [ + "proc-macro-error-attr3", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "proc-macro2" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "proptest" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744" +dependencies = [ + "bitflags 2.13.2", + "num-traits", + "rand 0.9.5", + "rand_chacha 0.9.0", + "rand_xorshift", + "regex-syntax", + "unarray", +] + +[[package]] +name = "prost" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +dependencies = [ + "bytes", + "prost-derive 0.11.9", +] + +[[package]] +name = "prost" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528ac67416ff8646872a3c02cad9cc4ee5dc9f9540c9b10771855c95cb2e5ae1" +dependencies = [ + "bytes", + "prost-derive 0.14.4", +] + +[[package]] +name = "prost-build" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03da047801ff44bb6a4d407d4860c05fd70bb81714e6b2f3812603d5b145b042" +dependencies = [ + "heck", + "itertools 0.14.0", + "log", + "multimap", + "petgraph", + "prettyplease", + "prost 0.14.4", + "prost-types", + "pulldown-cmark", + "pulldown-cmark-to-cmark", + "regex", + "syn 2.0.119", + "tempfile", +] + +[[package]] +name = "prost-derive" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +dependencies = [ + "anyhow", + "itertools 0.10.5", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-derive" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf" +dependencies = [ + "anyhow", + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "prost-types" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f94967dc7688f3054c7fac87473ffae4cc4c3904800e2d9f5b857246d8963b0a" +dependencies = [ + "prost 0.14.4", +] + +[[package]] +name = "provekit-common" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd137e327416256ac7281b7c0eed960d59ab5cd10d805ae4ee0e5241a8e01938" +dependencies = [ + "anyhow", + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "base64 0.22.1", + "bytes", + "ciborium", + "getrandom 0.2.17", + "hex", + "itertools 0.14.0", + "postcard", + "provekit-spongefish", + "provekit-spongefish-pow", + "provekit-whir", + "provekit_acir", + "provekit_noirc_abi", + "rayon", + "ruint", + "serde", + "serde_json", + "sha2 0.10.9", + "sha3 0.10.9", + "tracing", + "xz2", + "zerocopy", + "zstd", +] + +[[package]] +name = "provekit-spongefish" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a705ff6cb8bc4566a2d1a9f665243db958cbd90a852c3eef0dcc8dc8879ce5" +dependencies = [ + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "blake3", + "digest 0.10.7", + "keccak 0.1.6", + "p3-koala-bear", + "rand 0.8.8", + "sha2 0.10.9", + "sha3 0.10.9", + "zeroize", +] + +[[package]] +name = "provekit-spongefish-pow" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef05687e1ea5d63b54f03c86cf2ddd2cd3752a70151921619d0c66d129e6f309" +dependencies = [ + "blake3", + "bytemuck", + "keccak 0.1.6", + "provekit-spongefish", + "rand 0.8.8", + "rayon", +] + +[[package]] +name = "provekit-whir" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35334259c6ad5b1287ecef6bfb3deb3dbb963c9366091951316bdb33c2080fe6" +dependencies = [ + "approx", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "blake3", + "ciborium", + "clap", + "const-oid 0.9.6", + "derive-where", + "digest 0.10.7", + "hex", + "hex-literal", + "itertools 0.14.0", + "ordered-float", + "provekit-spongefish", + "rayon", + "serde", + "serde_json", + "sha2 0.10.9", + "sha3 0.10.9", + "static_assertions", + "tracing", + "zerocopy", + "zeroize", +] + +[[package]] +name = "provekit_acir" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d8c433b4ec3fda649e7740d8afd5d0abbea77a096e5e9ee832028598ae1f15d" +dependencies = [ + "acir_field", + "base64 0.22.1", + "brillig", + "flate2", + "num-bigint", + "num-traits", + "num_enum", + "provekit_noirc_span", + "rmp-serde", + "serde", + "serde-big-array", + "strum 0.26.3", + "strum_macros 0.28.0", + "thiserror 2.0.21", +] + +[[package]] +name = "provekit_acvm" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9513cb6fc2dd4a5e61b6606c23d50b0c8b11634ef66a1a04dddf46103645af" +dependencies = [ + "indexmap 2.14.2", + "itertools 0.14.0", + "provekit_acir", + "provekit_acvm_blackbox_solver", + "provekit_brillig_vm", + "rustc-hash", + "serde", + "thiserror 2.0.21", + "tracing", +] + +[[package]] +name = "provekit_acvm_blackbox_solver" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "007a76b3874b05c09f651fd912a2bf7e4bde640a99b2863053f61b37a4851e47" +dependencies = [ + "aes", + "blake2 0.11.0", + "blake3", + "cbc", + "k256 0.14.0", + "keccak 0.2.2", + "log", + "p256 0.14.0", + "provekit_acir", + "sha2 0.11.0", + "thiserror 2.0.21", +] + +[[package]] +name = "provekit_brillig_vm" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64856dccbb0a86ac44df84954be6546184f8fe69a2fc2c89f427facc1a903768" +dependencies = [ + "itertools 0.14.0", + "num-bigint", + "num-traits", + "provekit_acir", + "provekit_acvm_blackbox_solver", + "thiserror 2.0.21", +] + +[[package]] +name = "provekit_iter-extended" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c36f1bbf749df7298cb7edfb342a2979b45b6f3e121a49f298c4df03776902c4" + +[[package]] +name = "provekit_noirc_abi" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "351d040825214dd67fd402bd19ad19ee0833d20482b0d5ddcbd50f91af4d5d88" +dependencies = [ + "itertools 0.14.0", + "num-bigint", + "num-traits", + "provekit_acvm", + "provekit_iter-extended", + "provekit_noirc_printable_type", + "serde", + "serde_json", + "thiserror 2.0.21", + "toml 0.8.23", +] + +[[package]] +name = "provekit_noirc_printable_type" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39accb3c40ee64ded0fa2798f83cee2f7a970b8e0d94eea230ede9dc6b866fef" +dependencies = [ + "itertools 0.14.0", + "provekit_acvm", + "provekit_iter-extended", + "serde", + "serde_json", +] + +[[package]] +name = "provekit_noirc_span" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88568fabd82cc3dca3d3e67e830459a1a402ce538e8d6a759fa41f65ef6280bd" +dependencies = [ + "codespan", + "serde", +] + +[[package]] +name = "pulldown-cmark" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e" +dependencies = [ + "bitflags 2.13.2", + "memchr", + "unicase", +] + +[[package]] +name = "pulldown-cmark-to-cmark" +version = "22.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84bbb29c624230c4bd1047bbdb2aa47e41c860e9665ce62ba9504eebe91bf867" +dependencies = [ + "pulldown-cmark", +] + +[[package]] +name = "pulp" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046aa45b989642ec2e4717c8e72d677b13edd831a4d3b6cf37d9a3e54912496a" +dependencies = [ + "bytemuck", + "cfg-if", + "libm", + "num-complex", + "paste", + "pulp-wasm-simd-flag", + "raw-cpuid", + "reborrow", + "version_check", +] + +[[package]] +name = "pulp-wasm-simd-flag" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8f70e07b9c3962945a74e59ca1c511bba65b6419468acc217c457d93f3c740" + +[[package]] +name = "pxfm" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea" + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quinn" +version = "0.11.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4051e23e9185c255a7e33ef59cdbca87a22d359052eecd22fc6b901fb37d9d11" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.21", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e750cca55fe4f0439a15d0bb529da9651e79993e8e72c61a899a36d462befbe" +dependencies = [ + "bytes", + "getrandom 0.4.3", + "lru-slab", + "rand 0.10.3", + "rand_pcg", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.21", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af66907df18639dcf4db56ca65490cabc4b27a97dbadd96f2926cca73298f016" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.61.2", +] + +[[package]] +name = "quote" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e058c7de0b26af77780c769414d6257830bb240f3c38477dbc2c16e5f54d6d4c" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "serde", +] + +[[package]] +name = "rand" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", + "serde", +] + +[[package]] +name = "rand" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" +dependencies = [ + "chacha20 0.10.2", + "getrandom 0.4.3", + "rand_core 0.10.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", + "serde", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", + "serde", +] + +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + +[[package]] +name = "rand_distr" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +dependencies = [ + "num-traits", + "rand 0.8.8", +] + +[[package]] +name = "rand_pcg" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" +dependencies = [ + "rand_core 0.10.1", +] + +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.5", +] + +[[package]] +name = "rapidhash" +version = "4.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5da7e78a036ce858e8d55b7e7dc8ba3a88b78350fd2155d3591bbd966b58589e" +dependencies = [ + "rustversion", +] + +[[package]] +name = "rav1e" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b" +dependencies = [ + "aligned-vec", + "arbitrary", + "arg_enum_proc_macro", + "arrayvec", + "av-scenechange", + "av1-grain", + "bitstream-io", + "built", + "cfg-if", + "interpolate_name", + "itertools 0.14.0", + "libc", + "libfuzzer-sys", + "log", + "maybe-rayon", + "new_debug_unreachable", + "noop_proc_macro", + "num-derive", + "num-traits", + "paste", + "profiling", + "rand 0.9.5", + "rand_chacha 0.9.0", + "simd_helpers", + "thiserror 2.0.21", + "v_frame", + "wasm-bindgen", +] + +[[package]] +name = "ravif" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45" +dependencies = [ + "avif-serialize", + "imgref", + "loop9", + "quick-error", + "rav1e", + "rayon", + "rgb", +] + +[[package]] +name = "raw-cpuid" +version = "11.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" +dependencies = [ + "bitflags 2.13.2", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rayon" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "reborrow" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.13.2", +] + +[[package]] +name = "ref-cast" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e440fb4e4b4147295338efb76001ab9e4efc0e5839df2c47fc5ac2381d365c3" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecd8964f8453721699a1ed72037b0db49ce2f5a5138486ee89bed6f67cdf3a" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "regex" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle", +] + +[[package]] +name = "rfc6979" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" +dependencies = [ + "crypto-bigint 0.7.5", + "hmac 0.13.0", +] + +[[package]] +name = "rgb" +version = "0.8.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rmp" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ba8be72d372b2c9b35542551678538b562e7cf86c3315773cae48dfbfe7790c" +dependencies = [ + "num-traits", +] + +[[package]] +name = "rmp-serde" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f81bee8c8ef9b577d1681a70ebbc962c232461e397b22c208c43c04b67a155" +dependencies = [ + "rmp", + "serde", +] + +[[package]] +name = "rsa" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" +dependencies = [ + "const-oid 0.9.6", + "digest 0.10.7", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "sha2 0.10.9", + "signature 2.2.0", + "spki 0.7.3", + "subtle", + "zeroize", +] + +[[package]] +name = "ruint" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2973657b5127d510e230f5c63d2d106af9c8f79393d8b9f4647323e8196bdde5" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "ark-ff 0.5.0", + "ark-ff 0.6.0", + "bytemuck", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand 0.8.8", + "rand 0.9.5", + "rlp", + "ruint-macro", + "serde_core", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb" + +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.28", +] + +[[package]] +name = "rustfft" +version = "6.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21db5f9893e91f41798c88680037dba611ca6674703c1a18601b01a72c8adb89" +dependencies = [ + "num-complex", + "num-integer", + "num-traits", + "primal-check", + "strength_reduce", + "transpose", +] + +[[package]] +name = "rustix" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d" +dependencies = [ + "bitflags 2.13.2", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.23.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pki-types" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "safe_arch" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scan_fmt" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b53b0a5db882a8e2fdaae0a43f7b39e7e9082389e978398bdf223a55b581248" +dependencies = [ + "regex", +] + +[[package]] +name = "schannel" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.119", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scratch" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d68f2ec51b097e4c1a75b681a8bec621909b5e91f15bb7b840c4f2f7b01148b2" + +[[package]] +name = "scroll" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1783eabc414609e28a5ba76aee5ddd52199f7107a0b24c2e9746a1ecc34a683d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct 0.2.0", + "der 0.7.10", + "generic-array", + "pkcs8 0.10.2", + "serdect 0.2.0", + "subtle", + "zeroize", +] + +[[package]] +name = "sec1" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" +dependencies = [ + "base16ct 1.0.0", + "ctutils", + "der 0.8.2", + "hybrid-array", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes", + "rand 0.8.8", + "secp256k1-sys 0.10.1", + "serde", +] + +[[package]] +name = "secp256k1" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" +dependencies = [ + "bitcoin_hashes", + "rand 0.9.5", + "secp256k1-sys 0.11.0", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "secp256k1-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38" +dependencies = [ + "cc", +] + +[[package]] +name = "secrecy" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" +dependencies = [ + "zeroize", +] + +[[package]] +name = "security-framework" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" +dependencies = [ + "bitflags 2.13.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semaphore-rs" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f890beebbc8378b63bc84558afa165db97a6bd5087207e3de3d483badd13dc97" +dependencies = [ + "ark-bn254 0.6.0", + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-groth16 0.6.0", + "ark-relations 0.6.0", + "ark-std 0.6.0", + "bytemuck", + "color-eyre", + "hex", + "hex-literal", + "itertools 0.13.0", + "lazy_static", + "num-bigint", + "once_cell", + "rand 0.8.8", + "rayon", + "ruint", + "semaphore-rs-ark-circom", + "semaphore-rs-ark-zkey", + "semaphore-rs-depth-config", + "semaphore-rs-depth-macros", + "semaphore-rs-hasher", + "semaphore-rs-keccak", + "semaphore-rs-poseidon", + "semaphore-rs-proof", + "semaphore-rs-storage", + "semaphore-rs-trees", + "semaphore-rs-utils", + "semaphore-rs-witness", + "serde", + "sha2 0.10.9", + "thiserror 1.0.69", + "tiny-keccak", + "zeroize", +] + +[[package]] +name = "semaphore-rs-ark-circom" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b7086229a7c6ae2ca6f43a342f98eec747c73b41258620f0a2ed1ab37cd1e1" +dependencies = [ + "ark-bn254 0.6.0", + "ark-crypto-primitives 0.6.0", + "ark-ff 0.6.0", + "ark-groth16 0.6.0", + "ark-poly 0.6.0", + "ark-relations 0.6.0", + "ark-serialize 0.6.0", + "ark-std 0.6.0", + "byteorder", + "num-bigint", + "num-traits", + "ruint", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "semaphore-rs-ark-zkey" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d232b793bb44d2194c86047bac6905bc63294677bdf295b1dc415d7beb82abf7" +dependencies = [ + "ark-bn254 0.6.0", + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-groth16 0.6.0", + "ark-relations 0.6.0", + "ark-serialize 0.6.0", + "color-eyre", + "memmap2", + "semaphore-rs-ark-circom", +] + +[[package]] +name = "semaphore-rs-depth-config" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1182bb2e1c3eafc62896cbb557e7e3e5701f302aca7e0a7be4d64afdadf0bac" + +[[package]] +name = "semaphore-rs-depth-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2f8c729ddc394204515cbfb8ad92c6f7ecae84e476bc83154dc0d29abbedc7a" +dependencies = [ + "itertools 0.13.0", + "proc-macro2", + "quote", + "semaphore-rs-depth-config", + "syn 2.0.119", +] + +[[package]] +name = "semaphore-rs-hasher" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0048be8cc87ca0176d0fb63bbe1dea1bedd585e21a06b5698b72c77991dc5965" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "semaphore-rs-keccak" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abbea1cf1a5c4268743222d23c09c6e9e8456d4907483302055b34b5690aedaf" +dependencies = [ + "semaphore-rs-hasher", + "tiny-keccak", +] + +[[package]] +name = "semaphore-rs-poseidon" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a33bc286ea7609af279bfd0558a9f44e67ae7e12c831b75ed9713a4b40b4ba0" +dependencies = [ + "ark-bn254 0.6.0", + "ark-ff 0.6.0", + "once_cell", + "ruint", + "semaphore-rs-hasher", +] + +[[package]] +name = "semaphore-rs-proof" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6394dbd24c5a6e61c468a78340e1595f2f9814c200120f26f967cbfd493e9534" +dependencies = [ + "alloy-core", + "ark-bn254 0.6.0", + "ark-ec 0.6.0", + "ark-groth16 0.6.0", + "getrandom 0.2.17", + "hex", + "lazy_static", + "ruint", + "semaphore-rs-ark-circom", + "semaphore-rs-utils", + "serde", + "serde_json", +] + +[[package]] +name = "semaphore-rs-storage" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c58c20585a4f3a0a112a539b8d10df3da4adb181185ce5a4ad9fbd4891c110c0" +dependencies = [ + "bytemuck", + "color-eyre", + "mmap-rs", + "tempfile", +] + +[[package]] +name = "semaphore-rs-trees" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ca17f302fb03333d0e47ff8556e26ed2ab45ebc3ddf75525f7c5a3e2836e40" +dependencies = [ + "ark-bn254 0.6.0", + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-groth16 0.6.0", + "ark-relations 0.6.0", + "ark-std 0.6.0", + "bytemuck", + "color-eyre", + "derive-where", + "getrandom 0.2.17", + "hex", + "hex-literal", + "itertools 0.13.0", + "mmap-rs", + "once_cell", + "rayon", + "ruint", + "semaphore-rs-ark-circom", + "semaphore-rs-hasher", + "semaphore-rs-storage", + "serde", + "thiserror 1.0.69", + "tiny-keccak", +] + +[[package]] +name = "semaphore-rs-utils" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ce32cd02f3217ea3096e2d07d7ac99317e6a1d5388c838eeddacdbc01bbbfe" +dependencies = [ + "hex", + "serde", + "tiny-keccak", +] + +[[package]] +name = "semaphore-rs-witness" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1abbd35e58c2f6fee33fa6c961e59e99849e25cca44c4599daf4556cb8b09c25" +dependencies = [ + "ark-bn254 0.6.0", + "ark-ff 0.6.0", + "ark-serialize 0.6.0", + "byteorder", + "color-eyre", + "cxx-build", + "hex", + "postcard", + "rand 0.8.8", + "ruint", + "serde", + "serde_json", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "serde_json" +version = "1.0.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_spanned" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9adc193c780ef8f159aee8b61e2d5801aaa555e6eb0947fe45530ec506296f" +dependencies = [ + "base64 0.23.1", + "bs58", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.14.2", + "jiff", + "schemars 0.9.0", + "schemars 1.2.2", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e17bbc68e28663bbbb90df47e058aa7eda4fb445b89fe70457bb94fbccf6e49" +dependencies = [ + "darling 0.24.1", + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.14.2", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct 0.2.0", + "serde", +] + +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct 1.0.0", + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest 0.10.7", + "sha2-asm", +] + +[[package]] +name = "sha2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "digest 0.11.3", +] + +[[package]] +name = "sha2-asm" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b845214d6175804686b2bd482bcffe96651bb2d1200742b712003504a2dac1ab" +dependencies = [ + "cc", +] + +[[package]] +name = "sha3" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +dependencies = [ + "digest 0.10.7", + "keccak 0.1.6", +] + +[[package]] +name = "sha3" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be176f1a57ce4e3d31c1a166222d9768de5954f811601fb7ca06fc8203905ce1" +dependencies = [ + "digest 0.11.3", + "keccak 0.2.2", +] + +[[package]] +name = "sha3-asm" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471668161349031e3d415412f996b030c477488eec267cc3cadae3d06c0a367f" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "signature" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" +dependencies = [ + "digest 0.11.3", + "rand_core 0.10.1", +] + +[[package]] +name = "simba" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simd-adler32" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" + +[[package]] +name = "simd_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", +] + +[[package]] +name = "siphasher" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33f4fe9184a62d842c9ef383018f3306d8ba224fd9d836f56d7288308847c256" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9395f0f0eee849a9b707b2f06bb92a6a422090e2123bb2ef8e87a0e61892a8e" +dependencies = [ + "serde", +] + +[[package]] +name = "smallvec" +version = "2.0.0-alpha.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d44cfb396c3caf6fbfd0ab422af02631b69ddd96d2eff0b0f0724f9024051b" + +[[package]] +name = "smawk" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8e2fb0f499abb4d162f2bedad68f5ef91a1682b5a03596ddb67efd37768d100" + +[[package]] +name = "socket2" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "spin" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spin" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der 0.7.10", +] + +[[package]] +name = "spki" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" +dependencies = [ + "base64ct", + "der 0.8.2", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "staging-face-crypto" +version = "0.1.0" +dependencies = [ + "ampc-secret-sharing", + "anyhow", + "base64 0.22.1", + "crypto_box", + "oxide", + "rand 0.8.8", + "serde", + "serde_json", + "taceo-ark-babyjubjub 0.5.3", + "tokio", + "world-id-primitives 0.14.0", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strength_reduce" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" + +[[package]] +name = "string-interner" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07f9fdfdd31a0ff38b59deb401be81b73913d76c9cc5b1aed4e1330a223420b9" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "serde", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "strum_macros" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb6a2e3c7f7a3e4e83d1752cec5d1e357ced0cf96e85419b6a07f227db3def3a" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "sysctl" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea" +dependencies = [ + "bitflags 2.13.2", + "byteorder", + "enum-as-inner", + "libc", + "thiserror 1.0.69", + "walkdir", +] + +[[package]] +name = "taceo-ark-babyjubjub" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55b5a2cc31c90e79778c4f6375e5d9828171d320db3f8c911a8ad47af4a70069" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "taceo-ark-babyjubjub" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14ecf2df99fec8b65be444d27f4ac20d75486be15423b4cd507517683312a4b0" +dependencies = [ + "ark-bn254 0.6.0", + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-std 0.6.0", +] + +[[package]] +name = "taceo-ark-serde-compat" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fcd6f55fec9dd131019bdc0319db2271915056607b75bf8b8bc0a6ec496347" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "num-bigint", + "serde", + "taceo-ark-babyjubjub 0.5.3", +] + +[[package]] +name = "taceo-ark-serde-compat" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7a255d21a01f083cf373ff6b4903f9dafad1e0a2a1a2119a4cee971d1bb995" +dependencies = [ + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-serialize 0.6.0", + "num-bigint", + "serde", + "taceo-ark-babyjubjub 0.6.0", +] + +[[package]] +name = "taceo-circom-types" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4ae56552ed9a44722d293640d5aedd90b9940284bf1f1bf4df727b3ce5bc34b" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-groth16 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "byteorder", + "serde", + "serde_json", + "taceo-ark-serde-compat 0.5.0", + "thiserror 2.0.21", + "tracing", +] + +[[package]] +name = "taceo-eddsa-babyjubjub" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10becbd559ee21d8376a4c2e18f0e38257ec1b5bfff3dcb2cb2945ca1db38906" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "blake3", + "eyre", + "num-bigint", + "rand 0.8.8", + "serde", + "taceo-ark-babyjubjub 0.5.3", + "taceo-ark-serde-compat 0.5.0", + "taceo-poseidon2 0.2.1", + "zeroize", +] + +[[package]] +name = "taceo-oprf" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c10bf82ba41bbc8a6693362d67738145c77bdcec36345d85d4a86d2fb7dc44dc" +dependencies = [ + "taceo-oprf-types 0.15.1", +] + +[[package]] +name = "taceo-oprf" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617cc21e04912e2b4989a110459e07b072ccac250d666f65bba5ffccc5b90795" +dependencies = [ + "taceo-oprf-types 0.16.1", +] + +[[package]] +name = "taceo-oprf-core" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f66b5a67d71a6022abb42198d87184aebbac1f45538b5858d22c87d0958a805" +dependencies = [ + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-serialize 0.6.0", + "blake3", + "itertools 0.15.0", + "num-bigint", + "rand 0.8.8", + "serde", + "subtle", + "taceo-ark-babyjubjub 0.6.0", + "taceo-ark-serde-compat 0.6.1", + "taceo-poseidon2 0.3.0", + "uuid", + "zeroize", +] + +[[package]] +name = "taceo-oprf-types" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de73b98dd21ab1048ffb869f09dac92d9f70e0f93f5956f3d3e9873640a78b3" +dependencies = [ + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "async-trait", + "eyre", + "http", + "ruint", + "serde", + "taceo-ark-babyjubjub 0.5.3", + "taceo-ark-serde-compat 0.5.0", + "taceo-oprf-core", + "uuid", +] + +[[package]] +name = "taceo-oprf-types" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d344eb6f0dc1a872a4cdf389099d4556a4633bc5c9e037bd4583ee810df981" +dependencies = [ + "ark-ff 0.6.0", + "ark-serialize 0.6.0", + "async-trait", + "eyre", + "http", + "ruint", + "serde", + "taceo-ark-babyjubjub 0.6.0", + "taceo-ark-serde-compat 0.6.1", + "taceo-oprf-core", + "uuid", +] + +[[package]] +name = "taceo-poseidon2" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac59d3df4c827b3496bff929aebd6440997a5c2e946f46ff4fdd76f318447581" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", + "num-bigint", + "num-traits", +] + +[[package]] +name = "taceo-poseidon2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c167df5e799207335a7acfec5404aa8fae59fad877c6cd20205815d690ba7157" +dependencies = [ + "ark-bn254 0.6.0", + "ark-ff 0.6.0", + "ark-std 0.6.0", + "num-bigint", + "num-traits", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tar" +version = "0.4.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.3", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ecfad6c3abc80a577f2b91c1e412ee57e7a060d430b553c1b0c940974ebcd49" +dependencies = [ + "smawk", + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09e52cb86a36cede5cb101bf8908837b3e4c6e5e59fe7fd85c23fb56200d189e" +dependencies = [ + "thiserror-impl 2.0.21", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "thread_local" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + +[[package]] +name = "time-macros" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee" + +[[package]] +name = "tokio" +version = "1.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9cc2678c2cdd569ef8215e2afd7954ada2ae20b4fdd2c5fe6139a3b02d105db" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "libc", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", +] + +[[package]] +name = "toml" +version = "1.1.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "920602543f0911ab71da12c50d59701da54c196d1a2bf5cb4b75667f137a406a" +dependencies = [ + "indexmap 2.14.2", + "serde_core", + "serde_spanned 1.1.1", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 1.0.4", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap 2.14.2", + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.11", + "toml_write", + "winnow 0.7.15", +] + +[[package]] +name = "toml_edit" +version = "0.25.15+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1340ea94a5856333492c9064b02c778b191dd2c853778d9609debdcdfea3a614" +dependencies = [ + "indexmap 2.14.2", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "winnow 1.0.4", +] + +[[package]] +name = "toml_parser" +version = "1.1.3+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" +dependencies = [ + "winnow 1.0.4", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "toml_writer" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" + +[[package]] +name = "tonic" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac2a5518c70fa84342385732db33fb3f44bc4cc748936eb5833d2df34d6445ef" +dependencies = [ + "async-trait", + "axum", + "base64 0.22.1", + "bytes", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "rustls-native-certs", + "socket2", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic-build" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68f61875ac5293cf72e6c8cf0158086428c82c37229e98c840878f1706b0322" +dependencies = [ + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "tonic-prost" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50849f68853be452acf590cde0b146665b8d507b3b8af17261df47e02c209ea0" +dependencies = [ + "bytes", + "prost 0.14.4", + "tonic", +] + +[[package]] +name = "tonic-prost-build" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "654e5643eff75d7f8c99197ce1440ed19a3474eada74c12bbac488b2cafdae27" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build", + "prost-types", + "quote", + "syn 2.0.119", + "tempfile", + "tonic-build", +] + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 2.14.2", + "pin-project-lite", + "slab", + "sync_wrapper", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" +dependencies = [ + "bitflags 2.13.2", + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", + "url", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-error" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" +dependencies = [ + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec 1.16.2", + "thread_local", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "tract-core" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7b5347639690871b124593a8c8903f1f369531498b8abaebd18eb5c58163971" +dependencies = [ + "anyhow", + "anymap3", + "bit-set", + "derive-new", + "downcast-rs", + "dyn-clone", + "lazy_static", + "log", + "maplit", + "ndarray", + "num-complex", + "num-integer", + "num-traits", + "paste", + "rustfft", + "smallvec 1.16.2", + "tract-data", + "tract-linalg", +] + +[[package]] +name = "tract-data" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0a3f476a1804e05708e9bc5e2d29dcab82bad531e357d3d14d7da80fbba0b6d" +dependencies = [ + "anyhow", + "downcast-rs", + "dyn-clone", + "dyn-hash", + "half", + "itertools 0.12.1", + "lazy_static", + "maplit", + "ndarray", + "nom 7.1.3", + "num-integer", + "num-traits", + "parking_lot", + "scan_fmt", + "smallvec 1.16.2", + "string-interner", +] + +[[package]] +name = "tract-hir" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dca047ba1151fe3446fb0194d4b6ddb9ae8f361337c47a267870c53605fbafb" +dependencies = [ + "derive-new", + "log", + "tract-core", +] + +[[package]] +name = "tract-linalg" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb8e0703eb53ef1bbf77050ff261675818dd5f0d6c27044c6e48ede9b845f9e0" +dependencies = [ + "byteorder", + "cc", + "derive-new", + "downcast-rs", + "dyn-clone", + "dyn-hash", + "half", + "lazy_static", + "liquid", + "liquid-core", + "liquid-derive", + "log", + "num-traits", + "paste", + "rayon", + "scan_fmt", + "smallvec 1.16.2", + "time", + "tract-data", + "unicode-normalization", + "walkdir", +] + +[[package]] +name = "tract-nnef" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72cb88a4367ec2c695610223cf886f01fc1deb5c9a82c7a74b1a5d32dc0b1466" +dependencies = [ + "byteorder", + "flate2", + "log", + "nom 7.1.3", + "tar", + "tract-core", + "walkdir", +] + +[[package]] +name = "tract-onnx" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5830aa672b2aa4dc98a97a36e5988eaf77b3ecee65e2601619588d2ca557008" +dependencies = [ + "bytes", + "derive-new", + "log", + "memmap2", + "num-integer", + "prost 0.11.9", + "smallvec 1.16.2", + "tract-hir", + "tract-nnef", + "tract-onnx-opl", +] + +[[package]] +name = "tract-onnx-opl" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121d3d224c806ba3d941f4bb50943ad33b59d1da5ae704d0e4e76d2808221f96" +dependencies = [ + "getrandom 0.2.17", + "log", + "rand 0.8.8", + "rand_distr", + "rustfft", + "tract-nnef", +] + +[[package]] +name = "transpose" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e" +dependencies = [ + "num-integer", + "strength_reduce", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + +[[package]] +name = "unicode-ident" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954" + +[[package]] +name = "unicode-normalization" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "uniffi" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76407f5f396a2c949a069eff4a9fca9ce462410eb872bffef4c2b7b89804a77a" +dependencies = [ + "anyhow", + "cargo_metadata", + "uniffi_bindgen", + "uniffi_core", + "uniffi_macros", + "uniffi_pipeline", +] + +[[package]] +name = "uniffi_bindgen" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df3ced8f0eda3de99f6d50820e8628f443da8e4f447f477d1403ceba29dacbd" +dependencies = [ + "anyhow", + "askama", + "camino", + "cargo_metadata", + "fs-err", + "glob", + "goblin", + "heck", + "indexmap 2.14.2", + "once_cell", + "serde", + "tempfile", + "textwrap", + "toml 1.1.6+spec-1.1.0", + "uniffi_internal_macros", + "uniffi_meta", + "uniffi_pipeline", + "uniffi_udl", +] + +[[package]] +name = "uniffi_core" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7530ae8efeaaa488622865966763fe0294832779fff80508c36d69c6a874a6a" +dependencies = [ + "anyhow", + "async-compat", + "bytes", + "once_cell", + "static_assertions", +] + +[[package]] +name = "uniffi_internal_macros" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f4bad017164375d99450d70495014810d15a84ba9da6ed14b9628b1424223ba" +dependencies = [ + "anyhow", + "indexmap 2.14.2", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "uniffi_macros" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b855a58da153739ce6e863f6e296edc3716a093768c4d3d957f17f5e4317c60" +dependencies = [ + "camino", + "fs-err", + "once_cell", + "proc-macro2", + "quote", + "serde", + "syn 2.0.119", + "toml 1.1.6+spec-1.1.0", + "uniffi_meta", +] + +[[package]] +name = "uniffi_meta" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af0c88664a9cb9559856f5a250283c9708923b303170e2e5c7db8f4ad65e9459" +dependencies = [ + "anyhow", + "siphasher", + "uniffi_internal_macros", + "uniffi_pipeline", +] + +[[package]] +name = "uniffi_pipeline" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d00f5c044b4a3dca0b1226c92ddaeea626f337470e22180dd182160c87a06b0b" +dependencies = [ + "anyhow", + "heck", + "indexmap 2.14.2", + "tempfile", + "uniffi_internal_macros", +] + +[[package]] +name = "uniffi_udl" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55dfd9c778d6b39cb5acd541d9ff63431974035d2bad83c897b766a6ee3152ac" +dependencies = [ + "anyhow", + "textwrap", + "uniffi_meta", + "weedle2", +] + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common 0.1.7", + "subtle", +] + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + "serde_derive", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "utils" +version = "0.1.0" +source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" +dependencies = [ + "approx", + "bincode", + "data-encoding", + "fast_image_resize", + "histogram_equalization", + "image", + "imageproc", + "inventory", + "itertools 0.13.0", + "log", + "nalgebra", + "ndarray", + "ndarray-stats", + "num-traits", + "opencv", + "palette", + "rustfft", + "schemars 0.8.22", + "serde", + "serde_yaml", + "sha2 0.10.9", + "thiserror 1.0.69", + "tracing", + "uniffi", +] + +[[package]] +name = "utils_macros" +version = "0.1.0" +source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "uuid" +version = "1.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ef6dac1e96601b4fb3acccccff2139741fcb757cb9a36089bf5be91cfb285ce" +dependencies = [ + "getrandom 0.4.3", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "v_frame" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" +dependencies = [ + "aligned-vec", + "num-traits", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.4+wasi-0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.129" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cbab34de2d982e9b48e18d216d04c4a6f641066ff19ffb699980f591ee3610e" +dependencies = [ + "js-sys", + "tokio", + "wasm-bindgen", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.129" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.129" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 3.0.6", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.129" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88261b9deccee56594c11a3460c462c41f58d148598fe70ad77070126a68aba4" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "weedle2" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "998d2c24ec099a87daf9467808859f9d82b61f1d9c9701251aea037f514eae0e" +dependencies = [ + "nom 7.1.3", +] + +[[package]] +name = "wide" +version = "0.7.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +dependencies = [ + "windows-collections", + "windows-core", + "windows-future", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" +dependencies = [ + "windows-core", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-future" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +dependencies = [ + "windows-core", + "windows-link", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-numerics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +dependencies = [ + "windows-core", + "windows-link", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-threading" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "wnaf" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "795ca18b3fdb5e62bf982199278341ddcf7ebf7d32e25e212ad05d496e95f6fa" +dependencies = [ + "ff 0.14.0", + "group 0.14.0", + "hybrid-array", + "primefield", +] + +[[package]] +name = "world-id-primitives" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7430d4229c914b7136a028ad478dacc7983a8bfb926af9f5a4e5e31550d4f1cf" +dependencies = [ + "alloy", + "alloy-primitives", + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "arrayvec", + "embed-doc-image", + "eyre", + "getrandom 0.3.4", + "hex", + "provekit-common", + "rand 0.8.8", + "ruint", + "secrecy", + "serde", + "serde_json", + "sha2 0.11.0", + "sha3 0.10.9", + "strum 0.27.2", + "taceo-ark-babyjubjub 0.5.3", + "taceo-ark-serde-compat 0.5.0", + "taceo-circom-types", + "taceo-eddsa-babyjubjub", + "taceo-oprf 0.17.2", + "taceo-poseidon2 0.2.1", + "thiserror 2.0.21", + "url", + "uuid", +] + +[[package]] +name = "world-id-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76ac44fcbb959d6460462b29ee8798ef28baa13cea47ac8e2e9ea4edb22be3b" +dependencies = [ + "alloy", + "alloy-primitives", + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "arrayvec", + "embed-doc-image", + "eyre", + "getrandom 0.3.4", + "hex", + "provekit-common", + "rand 0.8.8", + "ruint", + "secrecy", + "serde", + "serde_json", + "sha2 0.11.0", + "sha3 0.10.9", + "strum 0.27.2", + "taceo-ark-babyjubjub 0.5.3", + "taceo-ark-serde-compat 0.5.0", + "taceo-circom-types", + "taceo-eddsa-babyjubjub", + "taceo-oprf 0.18.2", + "taceo-poseidon2 0.2.1", + "thiserror 2.0.21", + "url", + "uuid", +] + +[[package]] +name = "writeable" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xattr" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" +dependencies = [ + "libc", + "rustix", +] + +[[package]] +name = "xz2" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" +dependencies = [ + "lzma-sys", +] + +[[package]] +name = "y4m" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" + +[[package]] +name = "yoke" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", + "synstructure", +] + +[[package]] +name = "yuv" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a295923535c00a4e72a50a0a1130097f93160b39892dd4d2d006b1e2b90d6bf9" +dependencies = [ + "num-traits", +] + +[[package]] +name = "zerocopy" +version = "0.8.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6df92bf3d9227be3d53173901ddbffac2babc27ae50f397776ffd6dc33f800cb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac4f328cf2f05d084e496c3e9c3f33ed0a183656a16e1fcec4d464d8373aec82" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "zerotrie" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap 2.14.2", + "memchr", + "thiserror 2.0.21", + "zopfli", +] + +[[package]] +name = "zlib-rs" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b268e58e7c693d7c271f93ffc4ba3b380412554231c85bf61ca7af91042a4112" + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" + +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d80649ab6db9d9f6f9c80a40becd948eda4714a0a5ac8c4d157a32231c7882" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.1.0+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef0a8027ec3ee71300ab3bcbcd0393f434aa72b91ca6d635a39941deae8eea0" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "zune-core" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56377fd46368984a170bc5aac5567e52ca5da874caa60bea39fcbca78fb658b" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zune-jpeg" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" +dependencies = [ + "zune-core", +] diff --git a/services/staging-issuance/face-enrollment-helper/Cargo.toml b/services/staging-issuance/face-enrollment-helper/Cargo.toml new file mode 100644 index 0000000..00bf367 --- /dev/null +++ b/services/staging-issuance/face-enrollment-helper/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "staging-face-crypto" +version = "0.1.0" +edition = "2021" +publish = false + +[dependencies] +ampc-secret-sharing = { git = "https://github.com/worldcoin/ampc-common.git", rev = "3062538f0307471ed0dd2be8258952c807747141" } +oxide = { git = "https://github.com/worldcoin/oxide.git", rev = "329274a32be02be0bb39ca02adc4e4e4e438ada0" } +tokio = { version = "1", features = ["rt-multi-thread", "macros", "time"] } +crypto_box = { version = "0.9.1", features = ["seal"] } +base64 = "0.22" +rand = "0.8" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +anyhow = "1" +world-id-primitives = "=0.14.0" +ark-babyjubjub = { package = "taceo-ark-babyjubjub", version = "0.5" } + +[profile.dev] +opt-level = 2 diff --git a/services/staging-issuance/face-enrollment-helper/README.md b/services/staging-issuance/face-enrollment-helper/README.md new file mode 100644 index 0000000..e05aeca --- /dev/null +++ b/services/staging-issuance/face-enrollment-helper/README.md @@ -0,0 +1,16 @@ +# Local staging face enrollment helper + +This Rust executable supports the localhost-only selfie issuance route. It creates +and encrypts AMPC shares from synthetic input, obtains enrollment authentication +through Oxide, and verifies returned credential signatures and subject binding. +It is a server-side process, not a browser/WASM module or a face capture engine. + +Build from the repository root with `bun run build:selfie-helper`. The crate and +binary retain the name `staging-face-crypto`; the server invokes +`target/debug/staging-face-crypto` inside this directory. Build artifacts are ignored. + +Dependencies are pinned in `Cargo.toml` and `Cargo.lock`. The build command supplies +`build-config.toml` for Oxide's native dependency settings. Requests are bounded JSON +on stdin; successful responses are JSON on stdout, with failures on stderr and a +nonzero exit status. Never log the input or output payloads: they can contain +identity material and enrollment authentication headers. diff --git a/services/staging-issuance/face-enrollment-helper/build-config.toml b/services/staging-issuance/face-enrollment-helper/build-config.toml new file mode 100644 index 0000000..ff08484 --- /dev/null +++ b/services/staging-issuance/face-enrollment-helper/build-config.toml @@ -0,0 +1,7 @@ +# Native dependency settings from pinned Oxide .cargo/config.toml. +# Cargo does not inherit a git dependency's workspace configuration. +[env] +IGNITION_BUCKET_URL = "https://wld-ml-face-engine-public.worldcoin.org" +IGNITION_CACHE_PATH = "cache" +IGNITION_DIRECTORY_PATH = "assets/dependencies" +OPENCV_LINK_LIBS = "libopencv_imgproc,libopencv_core" diff --git a/services/staging-issuance/face-enrollment-helper/src/main.rs b/services/staging-issuance/face-enrollment-helper/src/main.rs new file mode 100644 index 0000000..1375d57 --- /dev/null +++ b/services/staging-issuance/face-enrollment-helper/src/main.rs @@ -0,0 +1,146 @@ +//! Local staging adapter; no WalletKit custody. Oxide owns enrollment authentication. +//! Share serialization/sealing follows Oxide's face_embedding_shares.rs. +//! ZKP challenge fetching and header construction call Oxide directly. +use anyhow::{ensure, Context, Result}; +use base64::{engine::general_purpose::STANDARD as B64, Engine}; +use serde::Deserialize; +use serde_json::json; +use std::io::{self, Read}; +use std::str::FromStr; + +#[derive(Deserialize)] +#[serde(tag = "operation", rename_all = "snake_case", deny_unknown_fields)] +enum Input { + Shares { + public_keys: [String; 3], + }, + Authenticate { + seed: String, + kind: AuthenticationKind, + }, + Verify { + credential: String, + sub: String, + public_key: [String; 2], + }, +} + +#[derive(Deserialize)] +#[serde(rename_all = "lowercase")] +enum AuthenticationKind { + GetIdentity, + UserCentricEnrollment, +} + +async fn run() -> Result<()> { + let mut text = String::new(); + io::stdin().take(262_145).read_to_string(&mut text)?; + ensure!(text.len() <= 262_144, "input too large"); + let output = match serde_json::from_str::(&text)? { + Input::Shares { public_keys } => { + // A fresh synthetic int4 embedding. Never accepts a user's biometric input. + let mut rng = rand::thread_rng(); + let embedding = ampc_secret_sharing::FaceVector::random_normalized(&mut rng); + let shares = embedding + .secret_share(&mut rng) + .map_err(|_| anyhow::anyhow!("create AMPC shares"))?; + let mut encrypted = Vec::new(); + for (share, key) in shares.iter().zip(public_keys) { + let bytes: Vec = share + .0 + .iter() + .flat_map(|value| value.to_le_bytes()) + .collect(); + let encoded = serde_json::to_vec( + &json!({"version": "2.5", "share_data": B64.encode(bytes)}), + )?; + let key = B64.decode(key.trim()).context("decode staging PKI key")?; + let key = + crypto_box::PublicKey::from_slice(&key).context("parse staging PKI key")?; + let sealed = key + .seal(&mut rng, &encoded) + .map_err(|_| anyhow::anyhow!("seal AMPC share"))?; + encrypted.push(B64.encode(sealed)); + } + json!({"shares": encrypted}) + } + Input::Authenticate { seed, kind } => { + ensure!( + seed.len() == 64 && seed.bytes().all(|c| c.is_ascii_hexdigit()), + "invalid enrollment seed" + ); + // Preserve the existing UTF-8 hex seed and identity_trapdoor domain. + // Switching to IdentityContext::Face would change saved enrollment identities. + let identity = + oxide::identity::Identity::new(seed, oxide::identity_context::IdentityContext::Orb); + let challenge_type = match kind { + AuthenticationKind::GetIdentity => oxide::ChallengeType::GetIdentity, + AuthenticationKind::UserCentricEnrollment => { + oxide::ChallengeType::UserCentricEnrollment + } + }; + let authentication = oxide::ZkpAuthentication::new( + "https://app.stage.face.worldcoin.org".into(), + "WorldApp/1.0.0 Oxide/1.0.0 iOS".into(), + ); + let header = tokio::time::timeout( + std::time::Duration::from_secs(80), + authentication.create_header(&identity, challenge_type), + ) + .await + .context("enrollment authentication deadline expired")? + .context("Oxide enrollment authentication failed")?; + json!({"identityCommitment": identity.commitment().to_string(), "header": header}) + } + Input::Verify { + credential, + sub, + public_key, + } => { + let credential: world_id_primitives::Credential = + serde_json::from_slice(&B64.decode(credential)?)?; + let sub: world_id_primitives::FieldElement = sub + .parse() + .map_err(|_| anyhow::anyhow!("invalid subject"))?; + let x = ark_babyjubjub::Fq::from_str(&public_key[0]) + .map_err(|_| anyhow::anyhow!("invalid issuer key"))?; + let y = ark_babyjubjub::Fq::from_str(&public_key[1]) + .map_err(|_| anyhow::anyhow!("invalid issuer key"))?; + let point = ark_babyjubjub::EdwardsAffine::new_unchecked(x, y); + ensure!( + !point.is_zero() + && point.is_on_curve() + && point.is_in_correct_subgroup_assuming_on_curve(), + "invalid issuer key" + ); + let key = world_id_primitives::EdDSAPublicKey { pk: point }; + ensure!( + credential.issuer_schema_id == 11 + && credential.sub == sub + && credential.issuer == key, + "credential binding mismatch" + ); + ensure!( + credential + .verify_signature(&key) + .map_err(|_| anyhow::anyhow!("credential signature verification failed"))?, + "invalid credential signature" + ); + json!({"verified": true}) + } + }; + println!("{}", serde_json::to_string(&output)?); + Ok(()) +} + +#[tokio::main] +async fn main() { + if let Err(error) = run().await { + // Do not print serde input, identity material, or proof data on failure. + let _ = error; + eprintln!( + "Staging face cryptography failed; check the helper input and pinned dependencies." + ); + std::process::exit(1); + } +} diff --git a/tests/integration/README.md b/tests/integration/README.md deleted file mode 100644 index 5842a48..0000000 --- a/tests/integration/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Integration evidence - -This directory contains W09's synthetic-only evidence for the clean-start staging -simulator. It tests the product revision named in `reports/evidence-report.md`. - -- `contract/` exercises the frozen state/action contract, browser admission, - controller composition, the HTTP boundary, session binding/replay behavior, - and all 4 biometric x 3 issuance scenarios through the real W06/W10 services. -- `privacy/` scans browser-visible projections and source/fixture surfaces for - forbidden persistence, raw media, private material, and production claims. -- `browser/` runs the built app in the separately named Chromium and desktop - WebKit Playwright projects. These are desktop synthetic results, not iPhone - results. -- `device-lab/` is the physical-iPhone runbook, schema, and explicit unexecuted - matrix. No participant biometric media is accepted or committed. -- `reports/` contains the evidence boundary and reproducible command record. - -Playwright trace and video are disabled by the Main-owned configuration. diff --git a/tests/integration/browser/authenticator.browser.spec.ts b/tests/integration/browser/authenticator.browser.spec.ts index 41307b2..d054fe9 100644 --- a/tests/integration/browser/authenticator.browser.spec.ts +++ b/tests/integration/browser/authenticator.browser.spec.ts @@ -1,397 +1,98 @@ -import { expect, test, type Page } from "@playwright/test"; +import { expect, test } from "@playwright/test"; import axe from "axe-core"; -import { mkdirSync } from "node:fs"; -import { resolve } from "node:path"; - -const screenshotRoot = resolve(import.meta.dirname, "../../../test-results/screenshots"); -const viewports = [ - { width: 320, height: 568 }, - { width: 375, height: 812 }, - { width: 390, height: 844 }, - { width: 393, height: 852 }, - { width: 430, height: 932 }, -] as const; - -async function enablePasskey(page: Page) { - const cdp = await page.context().newCDPSession(page); - await cdp.send("WebAuthn.enable"); - await cdp.send("WebAuthn.addVirtualAuthenticator", { - options: { - protocol: "ctap2", ctap2Version: "ctap2_1", transport: "internal", - hasResidentKey: true, hasUserVerification: true, isUserVerified: true, - automaticPresenceSimulation: true, hasPrf: true, - }, - }); -} - -async function waitForStablePaint(page: Page) { - await expect(page.locator("main h1")).toBeVisible(); - await page.evaluate(() => new Promise((resolvePaint) => { - requestAnimationFrame(() => requestAnimationFrame(() => resolvePaint())); - })); -} +import { signedRequest, encryptedRequest } from "../fixtures/request"; if (!("bun" in process.versions)) { -test.beforeAll(() => mkdirSync(screenshotRoot, { recursive: true })); - -test("built app opens the live flow at the root with no sensitive work before the passkey step", async ({ - page, -}, testInfo) => { - const requests: Array<{ readonly url: string; readonly body: string | null }> = []; - const consoleMessages: string[] = []; - page.on("request", (request) => { - if (request.url().includes("/api/")) { - requests.push({ url: request.url(), body: request.postData() }); + test("root is an authenticator, with no implicit RP or network registration", async ({ page }, info) => { + const external: string[] = []; + page.on("request", request => { if (!request.url().startsWith("http://127.0.0.1:4194")) external.push(request.url()); }); + await page.goto("/"); + await expect(page.getByRole("heading", { name: "World ID authenticator" })).toBeVisible(); + await expect(page.getByRole("button", { name: "Create or unlock with passkey" })).toBeEnabled(); + await expect(page.locator("body")).not.toContainText("Zoom"); + expect(external).toEqual([]); + expect(await page.evaluate(() => ({ local: Object.keys(localStorage), session: Object.keys(sessionStorage) }))).toEqual({ local: [], session: [] }); + for (const viewport of [{ width: 320, height: 568 }, { width: 393, height: 852 }, { width: 1280, height: 900 }]) { + await page.setViewportSize(viewport); + expect(await page.evaluate(() => document.documentElement.scrollWidth <= document.documentElement.clientWidth)).toBe(true); + await page.screenshot({ path: `test-results/screenshots/${info.project.name}-home-${viewport.width}.png`, fullPage: true }); } }); - page.on("console", (message) => consoleMessages.push(message.text())); - - await page.goto("/"); - const main = page.getByRole("main"); - await expect(main).toHaveAttribute("data-state", "request_review"); - await expect(page.getByRole("heading", { level: 1 })).toHaveCount(1); - await expect(page).toHaveTitle("World ID"); - await expect(page.getByRole("heading", { name: "Request from Zoom" })).toBeVisible(); - await expect(page.getByText("Proof of selfie")).toBeVisible(); - await expect(page.locator(".staging-banner")).toHaveCount(1); - await expect(page.locator(".template-notice")).toHaveCount(0); - await expect(page.locator(".staging-banner")).toContainText("simulated"); - await page.getByRole("button", { name: "Continue" }).click(); - await expect(main).toHaveAttribute("data-state", "demo_authenticator_intro"); - await expect(page.getByRole("heading", { name: "Secure your World ID" })).toBeVisible(); - await expect(page.locator(".staging-banner")).toContainText("simulated"); - - expect(requests.map((request) => new URL(request.url).pathname)).toEqual([ - "/api/v0/bootstrap", - ]); - expect(requests[0]?.body).toBe("{}"); - expect(requests.some((request) => request.url.includes("/session/create"))).toBe(false); - expect(consoleMessages.join("\n")).not.toMatch(/private|secret|signature|credential|receipt|frame|pixel/i); - expect(await page.evaluate(() => ({ - local: Object.keys(localStorage), - session: Object.keys(sessionStorage), - cookies: document.cookie, - query: location.search, - }))).toEqual({ local: [], session: [], cookies: "", query: "" }); - - await waitForStablePaint(page); - await page.screenshot({ - path: resolve(screenshotRoot, `${testInfo.project.name}-passkey-intro.png`), - fullPage: true, - animations: "disabled", - }); -}); -test("responsive viewports, enlarged text, and dynamic height do not clip horizontally", async ({ - page, -}, testInfo) => { - let enlargeText = false; - await page.route(/\/assets\/.*\.css$/, async (route) => { - const response = await route.fetch(); - const original = await response.text(); - await route.fulfill({ - response, - body: enlargeText - ? `${original}\nh1,h2,p,span,button{font-size:200% !important;line-height:1.35 !important}` - : original, + test("signed external request shows its requirements and sends encrypted rejection", async ({ page }, info) => { + const { payload, registry } = await signedRequest(1); + const encrypted = await encryptedRequest(payload); + let rejected: unknown; + await page.route("https://staging-bridge.worldcoin.org/request/*", route => route.fulfill({ json: encrypted.body, headers: { "access-control-allow-origin": "*" } })); + await page.route("**/api/staging-rp?*", route => route.fulfill({ json: registry })); + await page.route("https://staging-bridge.worldcoin.org/response/*", async route => { + if (route.request().method() === "OPTIONS") { await route.fulfill({ status: 204, headers: { "access-control-allow-origin": "*", "access-control-allow-methods": "PUT", "access-control-allow-headers": "content-type" } }); return; } + const body = route.request().postDataJSON(); + const bytes = await crypto.subtle.decrypt({ name: "AES-GCM", iv: Buffer.from(body.iv, "base64") }, encrypted.key, Buffer.from(body.payload, "base64")); + rejected = JSON.parse(new TextDecoder().decode(bytes)); + await route.fulfill({ status: 204, headers: { "access-control-allow-origin": "*" } }); }); - }); - for (const viewport of viewports) { - enlargeText = false; - await page.setViewportSize(viewport); - await page.goto("/"); - await expect(page.getByRole("main")).toHaveAttribute("data-state", "request_review"); - const normal = await page.evaluate(() => ({ - documentWidth: document.documentElement.scrollWidth, - viewportWidth: document.documentElement.clientWidth, - mainWidth: document.querySelector("main")?.scrollWidth ?? 0, - mainClientWidth: document.querySelector("main")?.clientWidth ?? 0, - mainHeight: document.querySelector("main")?.scrollHeight ?? 0, - viewportHeight: document.documentElement.clientHeight, - })); - expect(normal.documentWidth).toBeLessThanOrEqual(normal.viewportWidth); - expect(normal.mainWidth).toBeLessThanOrEqual(normal.mainClientWidth); - expect(normal.mainHeight).toBeGreaterThanOrEqual(normal.viewportHeight); - - enlargeText = true; - await page.reload(); - await expect(page.getByRole("main")).toHaveAttribute("data-state", "request_review"); - const enlarged = await page.evaluate(() => ({ - documentWidth: document.documentElement.scrollWidth, - viewportWidth: document.documentElement.clientWidth, - bodyHeight: document.body.scrollHeight, - })); - expect(enlarged.documentWidth).toBeLessThanOrEqual(enlarged.viewportWidth); - expect(enlarged.bodyHeight).toBeGreaterThan(0); - } - - const screenshotPage = await page.context().newPage(); - await screenshotPage.setViewportSize({ width: 393, height: 852 }); - await screenshotPage.goto("/"); - await expect(screenshotPage.getByRole("main")).toHaveAttribute("data-state", "request_review"); - await waitForStablePaint(screenshotPage); - await screenshotPage.screenshot({ - path: resolve(screenshotRoot, `${testInfo.project.name}-request-review-393x852.png`), - fullPage: true, - animations: "disabled", - }); - await screenshotPage.close(); -}); - -test("automated accessibility and reduced-motion checks pass on the actual built page", async ({ - page, -}) => { - await page.addInitScript({ content: axe.source }); - await page.emulateMedia({ reducedMotion: "reduce" }); - await page.goto("/"); - const violations = await page.evaluate(async () => { - const runtime = (window as typeof window & { - axe: { run(root: Element): Promise<{ violations: unknown[] }> }; - }).axe; - return (await runtime.run(document.querySelector("main")!)).violations; - }); - expect(violations).toEqual([]); - const motion = await page.evaluate(() => { - const element = document.querySelector("button")!; - const style = getComputedStyle(element); - return { - animationDuration: style.animationDuration, - animationIterationCount: style.animationIterationCount, - transitionDuration: style.transitionDuration, - targetHeight: element.getBoundingClientRect().height, - }; - }); - expect(["0s", "0.00001s", "1e-05s"]).toContain(motion.animationDuration); - expect(["0s", "0.00001s", "1e-05s"]).toContain(motion.transitionDuration); - expect(motion.animationIterationCount).toBe("1"); - expect(motion.targetHeight).toBeGreaterThanOrEqual(44); - await expect(page.locator("main h1")).toBeFocused(); -}); - -test("returned route is explicit and contains no browser-controlled callback payload", async ({ - page, -}, testInfo) => { - await page.goto("/returned"); - await expect(page.getByRole("main")).toHaveAttribute("data-state", "returned"); - await expect(page.getByRole("heading", { level: 1 })).toHaveCount(1); - await expect(page.locator("body")).not.toContainText(/signature|receipt/i); - await expect(page.locator("body")).toContainText("did not send a proof"); - expect(new URL(page.url()).search).toBe(""); - await waitForStablePaint(page); - await page.screenshot({ - path: resolve(screenshotRoot, `${testInfo.project.name}-returned.png`), - fullPage: true, - animations: "disabled", - }); -}); - -test("records bounded synthetic navigation timing without setting a product budget", async ({ - page, -}, testInfo) => { - const observations: number[] = []; - for (let attempt = 0; attempt < 3; attempt += 1) { - const started = performance.now(); + await page.goto("/" + encrypted.query); + await expect(page.getByRole("heading", { name: "Review your request" })).toBeVisible(); + await expect(page.getByRole("region", { name: "Request details" }).getByText(/Accepted credentials.*Orb/)).toBeVisible(); + await expect(page.getByRole("region", { name: "Request details" }).getByText(/Requesting RP.*rp_1/)).toBeVisible(); + expect(new URL(page.url()).search).toBe(""); + await page.screenshot({ path: `test-results/screenshots/${info.project.name}-request-mobile.png`, fullPage: true }); + await page.setViewportSize({ width: 1280, height: 900 }); + await page.screenshot({ path: `test-results/screenshots/${info.project.name}-request-desktop.png`, fullPage: true }); + await page.getByRole("button", { name: "Cancel request" }).click(); + await expect(page.getByRole("heading", { name: "Request cancelled" })).toBeVisible(); + expect(rejected).toEqual({ error_code: "verification_rejected" }); + }); + + test("invalid signature never exposes the wallet action", async ({ page }) => { + const { payload, registry } = await signedRequest(); + registry.signer = `0x${"2".repeat(40)}`; + const encrypted = await encryptedRequest(payload); + await page.route("https://staging-bridge.worldcoin.org/request/*", route => route.fulfill({ json: encrypted.body, headers: { "access-control-allow-origin": "*" } })); + await page.route("**/api/staging-rp?*", route => route.fulfill({ json: registry })); + await page.goto("/" + encrypted.query); + await expect(page.getByRole("heading", { name: "Request unavailable" })).toBeVisible(); + await expect(page.getByRole("button", { name: "Create or unlock with passkey" })).toHaveCount(0); + }); + + test("built app passes automated accessibility checks", async ({ page }) => { + await page.addInitScript({ content: axe.source }); await page.goto("/"); - await expect(page.getByRole("main")).toHaveAttribute("data-state", "request_review"); - observations.push(Math.round((performance.now() - started) * 100) / 100); - } - expect(observations.every((value) => value > 0 && value < 120_000)).toBe(true); - await testInfo.attach("desktop-synthetic-navigation-timing.json", { - body: JSON.stringify({ - evidenceSurface: testInfo.project.name, - metric: "navigation_to_request_review_ms", - observations, - productBudget: null, - }), - contentType: "application/json", - }); -}); - -test("root flow completes with live passkey invocation and camera fallback", async ({ - page, browserName, -}) => { - await page.setViewportSize({ width: 1000, height: 852 }); - await page.addInitScript({ content: axe.source }); - test.skip(browserName !== "chromium", "Virtual WebAuthn PRF uses Chromium CDP"); - await enablePasskey(page); - await page.addInitScript(() => { - Object.defineProperty(Navigator.prototype, "mediaDevices", { - configurable: true, - get: () => ({ - getUserMedia: () => Promise.reject(new DOMException("Denied", "NotAllowedError")), - }), + await expect(page.getByRole("heading", { name: "World ID authenticator" })).toBeVisible(); + const violations = await page.evaluate(async () => { + const runtime = (window as typeof window & { axe: { run(): Promise<{ violations: unknown[] }> } }).axe; + return (await runtime.run()).violations; }); - }); - - await page.goto("http://localhost:4173/"); - const main = page.getByRole("main"); - await expect(main).toHaveAttribute("data-state", "request_review"); - await expect(page.getByRole("heading", { name: "Request from Zoom" })).toBeVisible(); - await expect(page.getByText("Proof of selfie")).toBeVisible(); - await expect(page.getByRole("complementary")).toHaveCount(0); - await expect(page.locator(".staging-banner")).toHaveCount(1); - await expect(page.locator(".staging-banner")).toContainText("simulated"); - const walkthroughViolations = await page.evaluate(async () => { - const runtime = (window as typeof window & { - axe: { run(): Promise<{ violations: unknown[] }> }; - }).axe; - return (await runtime.run()).violations; - }); - expect(walkthroughViolations).toEqual([]); - - await page.locator('[data-action="continue"]').click(); - await expect(main).toHaveAttribute("data-state", "demo_authenticator_intro"); - await expect(page.getByRole("heading", { name: "Secure your World ID" })).toBeVisible(); - - await page.locator('[data-action="start_demo_authenticator"]').click(); - await expect(main).toHaveAttribute("data-state", "demo_authenticator_ready", { timeout: 60_000 }); - await expect(page.getByRole("heading", { name: "Wallet unlocked" })).toBeVisible(); - const profile = await page.evaluate(() => JSON.parse(localStorage.getItem("world-id-wallet-v1")!)); - expect(Object.keys(profile).sort()).toEqual(["credentialId", "version"]); - expect(profile.credentialId).toMatch(/^[0-9a-f]+$/); - await expect(page.locator('[data-action="continue_to_camera"]')).toHaveText("Start selfie check"); - await page.locator('[data-action="continue_to_camera"]').click(); - // The camera-intro state auto-advances before it paints; the camera opens directly. - await expect(main).toHaveAttribute("data-state", "capture_preview"); - await expect(page.locator('[data-action="start_camera"]')).toHaveCount(0); - await expect(page.locator('[data-action="collect_frame_metadata"]')).toHaveText("Continue"); - await page.locator('[data-action="collect_frame_metadata"]').click(); - await expect(main).toHaveAttribute("data-state", "simulated_credential_ready"); - await expect(main).toHaveAttribute("data-visual-source", "figma_5132_135104"); - await expect(page.getByRole("heading", { name: "Preview complete" })).toBeVisible(); - await expect(page.getByText("Simulated result — no Selfie Check credential was issued.")).toBeVisible(); - await expect(page.locator(".hero-icon")).toHaveAttribute("src", "/assets/figma/success-emblem.svg"); - await expect(page.getByRole("button", { name: "Return to Zoom" })).toBeVisible(); - await expect(page.locator(".staging-banner")).toContainText("simulated"); - - await page.locator('[data-action="return_to_rp"]').click(); - await page.waitForURL("http://localhost:4173/returned"); - await expect(page.getByRole("main")).toHaveAttribute("data-state", "returned"); - await expect(page.getByRole("heading", { name: "Returned to Zoom" })).toBeVisible(); - await expect(page.locator(".staging-banner")).toContainText("simulated"); - await expect(page.getByRole("complementary")).toHaveCount(0); -}); - -test("the /demo alias serves the same live flow and returned page", async ({ page }) => { - await page.goto("/demo"); - await expect(page.getByRole("main")).toHaveAttribute("data-state", "request_review"); - await expect(page.getByRole("heading", { name: "Request from Zoom" })).toBeVisible(); - await expect(page.locator(".staging-banner")).toContainText("simulated"); - await page.goto("/demo/returned"); - await expect(page.getByRole("main")).toHaveAttribute("data-state", "returned"); - await expect(page.getByRole("heading", { name: "Returned to Zoom" })).toBeVisible(); -}); - -test("the same passkey reopens the encrypted wallet after reload", async ({ page, browserName }) => { - test.skip(browserName !== "chromium", "Virtual WebAuthn PRF uses Chromium CDP"); - await enablePasskey(page); - await page.goto("http://localhost:4173/"); - const unlock = async () => { - await page.locator('[data-action="continue"]').click(); - await page.locator('[data-action="start_demo_authenticator"]').click(); - await expect(page.getByRole("heading", { name: "Wallet unlocked" })).toBeVisible({ timeout: 60_000 }); - }; - await unlock(); - const before = await page.evaluate(() => localStorage.getItem("world-id-wallet-v1")); - await page.reload(); - await unlock(); - expect(await page.evaluate(() => localStorage.getItem("world-id-wallet-v1"))).toBe(before); -}); - -test("concurrent setup cannot replace wallet metadata", async ({ page }) => { - await page.goto("http://localhost:4173/"); - await page.evaluate(() => new Promise((ready) => { - void navigator.locks.request("world-id-wallet-setup-v1", () => { - ready(); - return new Promise(() => {}); + expect(violations).toEqual([]); + }); + + test("real virtual PRF and WalletKit vault survive a failed staging registration without resubmitting", async ({ page, browserName }) => { + test.skip(browserName !== "chromium", "Virtual PRF requires Chromium CDP"); + test.setTimeout(120_000); + const cdp = await page.context().newCDPSession(page); + await cdp.send("WebAuthn.enable"); + await cdp.send("WebAuthn.addVirtualAuthenticator", { options: { + protocol: "ctap2", ctap2Version: "ctap2_1", transport: "internal", hasResidentKey: true, + hasUserVerification: true, isUserVerified: true, automaticPresenceSimulation: true, hasPrf: true, + } }); + let registrations = 0; + await page.route("https://**/*", async route => { + if (new URL(route.request().url()).pathname === "/create-account") registrations++; + await route.fulfill({ status: 503, body: "test dependency unavailable", headers: { "access-control-allow-origin": "*" } }); }); - })); - await page.locator('[data-action="continue"]').click(); - await page.locator('[data-action="start_demo_authenticator"]').click(); - await expect(page.getByRole("alert")).toContainText("Could not unlock"); - await expect(page.getByRole("main")).toHaveAttribute("data-state", "demo_authenticator_intro"); - expect(await page.evaluate(() => localStorage.getItem("world-id-wallet-v1"))).toBeNull(); -}); - -test("cancelled passkey creation cannot advance to capture", async ({ page }) => { - await page.addInitScript(() => { - Object.defineProperty(navigator.credentials, "create", { - value: () => Promise.reject(new DOMException("Cancelled", "NotAllowedError")), - }); - }); - await page.goto("http://localhost:4173/"); - await page.locator('[data-action="continue"]').click(); - await page.locator('[data-action="start_demo_authenticator"]').click(); - await expect(page.getByRole("alert")).toContainText("cancelled"); - await expect(page.getByRole("main")).toHaveAttribute("data-state", "demo_authenticator_intro"); - expect(await page.evaluate(() => localStorage.getItem("world-id-wallet-v1"))).toBeNull(); -}); - -test("self-hosted face model emits live guidance and cleans up", async ({ - page, - browserName, -}) => { - test.skip(browserName !== "chromium", "Chromium project owns the deterministic fake camera"); - await page.setViewportSize({ width: 1000, height: 852 }); - const modelResponses: Array<{ readonly status: number; readonly url: string }> = []; - const externalRequests: string[] = []; - page.on("request", (request) => { - if (new URL(request.url()).origin !== "http://localhost:4173") { - externalRequests.push(request.url()); - } - }); - page.on("response", (response) => { - if ( - response.url().includes("/mediapipe/") || - response.url().includes("/models/face_landmarker.task") - ) { - modelResponses.push({ status: response.status(), url: response.url() }); - } - }); - await enablePasskey(page); - - await page.goto("http://localhost:4173/demo"); - for (const action of ["continue", "start_demo_authenticator"] as const) { - await page.locator(`[data-action="${action}"]`).click(); - } - await expect(page.getByRole("main")).toHaveAttribute( - "data-state", - "demo_authenticator_ready", { timeout: 60_000 }, - ); - await page.locator('[data-action="continue_to_camera"]').click(); - await expect(page.getByRole("main")).toHaveAttribute("data-state", "capture_preview"); - await expect(page.locator('[data-live-guidance="face_not_found"]')).toBeVisible({ - timeout: 30_000, - }); - await expect(page.getByRole("heading", { name: "Move your face into the oval" })).toBeVisible(); - await expect(page.locator('[data-action="collect_frame_metadata"]')).toHaveCount(0); - const geometry = await page.evaluate(() => { - const rect = (selector: string) => { - const bounds = document.querySelector(selector)?.getBoundingClientRect(); - return bounds === undefined - ? null - : { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height }; - }; - return { - host: rect(".media-host--visible"), - clip: rect(".media-clip"), - ring: rect(".capture-ring"), - clipPath: getComputedStyle(document.querySelector(".media-clip")!).clipPath, - }; + await page.goto("http://localhost:4194/"); + await page.getByRole("button", { name: "Create or unlock with passkey" }).click(); + await expect(page.getByRole("alert")).toContainText("No automatic resubmission", { timeout: 90_000 }); + const saved = await page.evaluate(() => Object.fromEntries(Object.entries(localStorage))); + expect(JSON.parse(saved["world-id-wallet-v1"])).toEqual({ version: 1, credentialId: expect.any(String) }); + expect(Object.values(saved)).toContain("submitting"); + const before = registrations; + expect(before).toBe(1); + await page.reload(); + await page.getByRole("button", { name: "Create or unlock with passkey" }).click(); + await expect(page.getByRole("alert")).toContainText("No automatic resubmission", { timeout: 90_000 }); + expect(registrations).toBe(before); + expect(await page.evaluate(() => localStorage.getItem("world-id-wallet-v1"))).toBe(saved["world-id-wallet-v1"]); }); - expect(geometry.ring).toEqual(geometry.host); - expect(geometry.clip).toEqual(geometry.host); - expect(geometry.clipPath.startsWith("polygon(")).toBe(true); - expect(geometry.clipPath.split(",")).toHaveLength(64); - expect(modelResponses.map(({ status }) => status)).toEqual([200, 200, 200]); - expect(modelResponses.every(({ url }) => new URL(url).origin === "http://localhost:4173")) - .toBe(true); - expect(externalRequests).toEqual([]); - - await page.getByRole("button", { name: "Cancel" }).click(); - await expect(page.getByRole("main")).toHaveAttribute("data-state", "flow_cancelled"); - expect(await page.locator("video").evaluate( - (video) => (video as HTMLVideoElement).srcObject, - )).toBeNull(); -}); } diff --git a/tests/integration/contract/admission-and-controller.test.ts b/tests/integration/contract/admission-and-controller.test.ts deleted file mode 100644 index 26cedc5..0000000 --- a/tests/integration/contract/admission-and-controller.test.ts +++ /dev/null @@ -1,469 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - PRF_INPUT_V1_SHA256, - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - SIMULATOR_BROWSER_SESSION_ERROR_V0, - SIMULATOR_BROWSER_SESSION_PORT_V0, - WEB_AUTHN_PRF_AUTHENTICATOR_V1, - type FrameBundleV0, -} from "@clean-start/contracts"; -import { - admitBrowserV1, - type BrowserAdmissionDecisionV1, - type BrowserAdmissionInputV1, -} from "@clean-start/browser-admission"; -import type { - BrowserCaptureAdapterV1, - BrowserCaptureCallbacksV1, - BrowserCaptureStartV1, -} from "../../../apps/authenticator/src/adapters/browser-capture"; -import type { BrowserAdmissionAdapterV1 } from "../../../apps/authenticator/src/adapters/browser-admission"; -import { AuthenticatorFlowControllerV1 } from "../../../apps/authenticator/src/flow/controller"; -import { createAuthenticatorServerRuntimeV0 } from "../../../apps/authenticator/src/server/runtime.server"; -import { metadataBundle } from "../testkit/runtime"; - -const policy = Object.freeze({ - version: WEB_AUTHN_PRF_AUTHENTICATOR_V1, - rpId: "auth.example.test", - allowedOrigins: Object.freeze(["https://auth.example.test"]), - userVerification: "required" as const, - prfInputSha256: PRF_INPUT_V1_SHA256, - prfOutputMapping: "verbatim_32_byte_first_result_to_world_id_4_signer_seed" as const, - secretLifecycle: "browser_memory_only" as const, -}); - -function admissionInput( - iosMajor: number, - browser: "safari" | "chrome", - overrides: Partial = {}, -): BrowserAdmissionInputV1 { - return { - actualOrigin: "https://auth.example.test", - isTopLevel: true, - frameOrigin: "same_origin", - permissionsPolicy: "allowed", - requestContext: { - transactionHandle: "validated", - returnTarget: "validated", - session: "approved", - unexpectedQueryFields: false, - }, - platform: { device: "iphone", iosMajor, browser }, - browserContext: "normal_tab", - embeddedEvidence: "none", - capabilities: { - secureContext: true, - webAuthnApi: "available", - platformUv: "available", - clientCapabilitiesApi: "unknown", - conditionalMediation: "unknown", - mediaApi: "available", - visibility: "visible", - }, - ...overrides, - }; -} - -function adapter(decision: BrowserAdmissionDecisionV1): BrowserAdmissionAdapterV1 { - return { - async evaluate() { return decision; }, - async openExternalBrowser() {}, - }; -} - -class DeterministicMetadataCapture implements BrowserCaptureAdapterV1 { - starts = 0; - stops = 0; - clears = 0; - metadataRequests = 0; - private callbacks?: BrowserCaptureCallbacksV1; - private input?: BrowserCaptureStartV1; - private emitted = false; - private pending: Promise = Promise.resolve(); - - start(input: BrowserCaptureStartV1, callbacks: BrowserCaptureCallbacksV1): void { - this.starts += 1; - this.emitted = false; - this.pending = Promise.resolve(); - this.input = input; - this.callbacks = callbacks; - void callbacks.onCaptureState("acquiring"); - void callbacks.onCaptureState("awaiting_first_frame"); - void callbacks.onCaptureState("preview"); - } - - requestMetadataCollection(): void { - this.metadataRequests += 1; - if (this.emitted || this.callbacks === undefined || this.input === undefined) return; - this.emitted = true; - const callbacks = this.callbacks; - const input = this.input; - this.pending = (async () => { - await callbacks.onQuality({ - version: "client_quality_policy_v0", - policyId: input.qualityPolicy.policyId, - action: "ready", - reasonCodes: [], - }); - const artifact: FrameBundleV0 = await metadataBundle({ - kind: "simulator_browser_session_view_v0", - version: "simulator_browser_session_port_v0", - mode: "simulation", - environment: "staging", - sessionId: input.sessionId, - browserHandle: "test-only-not-serialized", - nonceBase64Url: "not-used-directly", - state: "capture_ready", - code: "capture_ready", - retryable: false, - expiresAt: input.policy.expiresAt, - capturePolicy: input.policy, - artifactSummary: null, - }, input.accountPublicMaterialDigestSha256); - const reboundArtifact = { - ...artifact, - nonceDigestSha256: input.nonceDigestSha256, - }; - const finalized = { - ...reboundArtifact, - artifactDigestSha256: await (async () => { - const { computeFrameBundleDigestV0 } = await import("@clean-start/contracts"); - return computeFrameBundleDigestV0(reboundArtifact); - })(), - }; - await callbacks.onArtifactReady(finalized); - await callbacks.onCaptureState("artifact_ready"); - await callbacks.onCaptureState("cleaning_up"); - await callbacks.onComplete(); - })(); - } - - stop(): void { this.stops += 1; } - clearTransientMedia(): void { this.clears += 1; } - unmount(): void { this.stop(); this.clearTransientMedia(); } - async wait(): Promise { await this.pending; } -} - -describe("browser admission and controller composition", () => { - test.each([15, 16, 17])("freezes iOS %i Safari and Chrome to update-only", (iosMajor) => { - for (const browser of ["safari", "chrome"] as const) { - const result = admitBrowserV1(policy, admissionInput(iosMajor, browser)); - expect(result.outcome).toBe("ios_update_required"); - expect(result.mayStartSensitiveFlow).toBe(false); - expect(result.browser).toBe(browser); - } - }); - - test("keeps iOS 18+ Safari and Chrome as separate candidates", () => { - for (const browser of ["safari", "chrome"] as const) { - const result = admitBrowserV1(policy, admissionInput(18, browser)); - expect(result.outcome).toBe("eligible_candidate"); - expect(result.mayStartSensitiveFlow).toBe(true); - expect(result.browser).toBe(browser); - } - }); - - test.each([ - ["insecure", { capabilities: { ...admissionInput(18, "safari").capabilities, secureContext: false } }, "insecure_context"], - ["framed", { isTopLevel: false, frameOrigin: "cross_origin" as const }, "context_not_top_level"], - ["embedded", { browserContext: "embedded" as const, embeddedEvidence: "confirmed" as const }, "embedded_browser_handoff"], - ["private", { browserContext: "private_or_unknown" as const }, "private_or_unknown_context"], - ["PWA", { browserContext: "installed_pwa" as const }, "private_or_unknown_context"], - ] as const)("rejects %s contexts before sensitive work", (_name, overrides, expected) => { - const result = admitBrowserV1(policy, admissionInput(18, "safari", overrides)); - expect(result.outcome).toBe(expected); - expect(result.mayStartSensitiveFlow).toBe(false); - }); - - test("does not create a session or start capture on the iOS 15-17 route", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - let sessionCreates = 0; - const capture = new DeterministicMetadataCapture(); - const sessionPort = new Proxy(runtime.browserPort, { - get(target, property, receiver) { - if (property === "createSession") { - return (...args: Parameters) => { - sessionCreates += 1; - return target.createSession(...args); - }; - } - const value = Reflect.get(target, property, receiver); - return typeof value === "function" ? value.bind(target) : value; - }, - }); - const decision = admitBrowserV1(policy, admissionInput(17, "safari")); - const controller = new AuthenticatorFlowControllerV1({ - sessionPort, - admission: adapter(decision), - capture, - }); - controller.start(); - await controller.waitForIdle(); - controller.act("continue"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("admission_update_required"); - expect(sessionCreates).toBe(0); - expect(capture.starts).toBe(0); - }); - - test.each([ - ["invalid_request", "flow_failed"], - ["expired", "flow_expired"], - ] as const)("maps bootstrap %s safely and performs no sensitive work", async (reasonCode, expectedState) => { - const runtime = await createAuthenticatorServerRuntimeV0(); - let sessionCreates = 0; - const capture = new DeterministicMetadataCapture(); - const sessionPort = new Proxy(runtime.browserPort, { - get(target, property, receiver) { - if (property === "bootstrap") { - return async () => ({ - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - operation: "bootstrap" as const, - reasonCode, - }); - } - if (property === "createSession") { - return (...args: Parameters) => { - sessionCreates += 1; - return target.createSession(...args); - }; - } - const value = Reflect.get(target, property, receiver); - return typeof value === "function" ? value.bind(target) : value; - }, - }); - const controller = new AuthenticatorFlowControllerV1({ - sessionPort, - admission: adapter(admitBrowserV1(policy, admissionInput(18, "safari"))), - capture, - }); - controller.start(); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe(expectedState); - expect(sessionCreates).toBe(0); - expect(capture.starts).toBe(0); - }); - - test("embedded handoff occurs before session or camera work", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - let sessionCreates = 0; - let handoffs = 0; - const capture = new DeterministicMetadataCapture(); - const sessionPort = new Proxy(runtime.browserPort, { - get(target, property, receiver) { - if (property === "createSession") { - return (...args: Parameters) => { - sessionCreates += 1; - return target.createSession(...args); - }; - } - const value = Reflect.get(target, property, receiver); - return typeof value === "function" ? value.bind(target) : value; - }, - }); - const embedded = admitBrowserV1(policy, admissionInput(18, "safari", { - browserContext: "embedded", - embeddedEvidence: "confirmed", - })); - const controller = new AuthenticatorFlowControllerV1({ - sessionPort, - admission: { - async evaluate() { return embedded; }, - async openExternalBrowser() { handoffs += 1; }, - }, - capture, - }); - controller.start(); - await controller.waitForIdle(); - controller.act("continue"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("admission_handoff_required"); - controller.act("open_external_browser"); - await controller.waitForIdle(); - expect(handoffs).toBe(1); - expect(sessionCreates).toBe(0); - expect(capture.starts).toBe(0); - }); - - test("drives the eligible happy path through actual server composition using metadata only", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const capture = new DeterministicMetadataCapture(); - const states: string[] = []; - const controller = new AuthenticatorFlowControllerV1({ - sessionPort: runtime.browserPort, - admission: adapter(admitBrowserV1(policy, admissionInput(18, "safari"))), - capture, - }); - controller.subscribe((snapshot) => states.push(snapshot.state)); - controller.start(); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("request_review"); - controller.act("continue"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("admission_safari_candidate"); - controller.act("continue"); - controller.act("start_demo_authenticator"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("demo_authenticator_ready"); - controller.act("continue_to_camera"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("capture_intro"); - controller.act("start_camera"); - expect(controller.snapshot.state).toBe("capture_preview"); - controller.act("collect_frame_metadata"); - await capture.wait(); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("simulated_credential_ready"); - expect(controller.snapshot.authoritativeSessionState).toBe("simulated_credential_ready"); - expect(states).toContain("capture_sampling"); - expect(states).toContain("capture_cleaning"); - expect(states).toContain("capture_complete"); - expect(capture.starts).toBe(1); - expect(capture.metadataRequests).toBeGreaterThanOrEqual(1); - expect(capture.stops).toBeGreaterThanOrEqual(1); - expect(capture.clears).toBeGreaterThanOrEqual(1); - }); - - test("retake rotates the capture key and actual W06/W10 accepts the second submission", async () => { - const runtime = await createAuthenticatorServerRuntimeV0({ - testConfiguration: { - kind: "authenticator_server_test_configuration_v0", - biometricScenario: "capture_retry", - issuanceScenario: "issue_success", - }, - }); - const capture = new DeterministicMetadataCapture(); - const submitKeys: string[] = []; - const submitReasonCodes: string[] = []; - const sessionPort = new Proxy(runtime.browserPort, { - get(target, property, receiver) { - if (property === "submitCapture") { - return async (input: Parameters[0]) => { - submitKeys.push(input.idempotencyKey); - const result = await target.submitCapture(input); - if (result.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - submitReasonCodes.push(result.reasonCode); - } - return result; - }; - } - const value = Reflect.get(target, property, receiver); - return typeof value === "function" ? value.bind(target) : value; - }, - }); - const controller = new AuthenticatorFlowControllerV1({ - sessionPort, - admission: adapter(admitBrowserV1(policy, admissionInput(18, "safari"))), - capture, - }); - - controller.start(); - await controller.waitForIdle(); - controller.act("continue"); - await controller.waitForIdle(); - controller.act("continue"); - controller.act("start_demo_authenticator"); - await controller.waitForIdle(); - controller.act("continue_to_camera"); - await controller.waitForIdle(); - controller.act("start_camera"); - controller.act("collect_frame_metadata"); - await capture.wait(); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("biometric_simulated_retry"); - - controller.act("retake"); - await controller.waitForIdle(); - expect(controller.snapshot.state).toBe("capture_intro"); - controller.act("start_camera"); - controller.act("collect_frame_metadata"); - await capture.wait(); - await controller.waitForIdle(); - - expect(controller.snapshot.state).toBe("biometric_simulated_retry"); - expect(submitKeys).toHaveLength(2); - expect(submitKeys[1]).not.toBe(submitKeys[0]); - expect(submitReasonCodes).not.toContain("binding_mismatch"); - expect(capture.starts).toBe(2); - }); - - test("recovers a committed W06/W10 result by status after one lost browser response", async () => { - const runtime = await createAuthenticatorServerRuntimeV0({ - testConfiguration: { - kind: "authenticator_server_test_configuration_v0", - biometricScenario: "happy_path", - issuanceScenario: "issue_success", - }, - }); - const capture = new DeterministicMetadataCapture(); - let submitCalls = 0; - let statusCalls = 0; - let committedState: string | undefined; - const sessionPort = new Proxy(runtime.browserPort, { - get(target, property, receiver) { - if (property === "submitCapture") { - return async (input: Parameters[0]) => { - submitCalls += 1; - const committed = await target.submitCapture(input); - committedState = committed.kind === "simulator_browser_session_view_v0" - ? committed.state - : undefined; - return { - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - operation: "submit_capture" as const, - reasonCode: "network_unavailable" as const, - }; - }; - } - if (property === "getStatus") { - return (input: Parameters[0]) => { - statusCalls += 1; - return target.getStatus(input); - }; - } - const value = Reflect.get(target, property, receiver); - return typeof value === "function" ? value.bind(target) : value; - }, - }); - const controller = new AuthenticatorFlowControllerV1({ - sessionPort, - admission: adapter(admitBrowserV1(policy, admissionInput(18, "chrome"))), - capture, - }); - - controller.start(); - await controller.waitForIdle(); - controller.act("continue"); - await controller.waitForIdle(); - controller.act("continue"); - controller.act("start_demo_authenticator"); - await controller.waitForIdle(); - controller.act("continue_to_camera"); - await controller.waitForIdle(); - controller.act("start_camera"); - controller.act("collect_frame_metadata"); - await capture.wait(); - await controller.waitForIdle(); - - expect(committedState).toBe("simulated_credential_ready"); - expect(controller.snapshot.state).toBe("session_error"); - expect(controller.snapshot.detailCode).toBe("network_unavailable"); - expect(controller.snapshot.authoritativeSessionState).toBe("capture_ready"); - expect(submitCalls).toBe(1); - - expect(controller.act("query_status")).toBe(true); - await controller.waitForIdle(); - expect(statusCalls).toBe(1); - expect(controller.snapshot.state).toBe("simulated_credential_ready"); - expect(controller.snapshot.authoritativeSessionState).toBe("simulated_credential_ready"); - expect(submitCalls).toBe(1); - expect(capture.starts).toBe(1); - }); -}); diff --git a/tests/integration/contract/browser-response-binding.test.ts b/tests/integration/contract/browser-response-binding.test.ts deleted file mode 100644 index 9dfcc19..0000000 --- a/tests/integration/contract/browser-response-binding.test.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - SIMULATION_ENVIRONMENT, - SIMULATION_MODE, - SIMULATOR_BROWSER_SESSION_ERROR_V0, - SIMULATOR_BROWSER_SESSION_PORT_V0, - SIMULATOR_BROWSER_SESSION_VIEW_V0, - SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, - type SimulatorBrowserSessionViewV0, -} from "@clean-start/contracts"; -import { HttpSimulatorBrowserSessionClientV0 } from "../../../apps/authenticator/src/adapters/http-session"; - -const expiresAt = "2030-01-01T00:00:00.000Z"; - -function view(sessionId: string, browserHandle: string): SimulatorBrowserSessionViewV0 { - return { - kind: SIMULATOR_BROWSER_SESSION_VIEW_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - sessionId, - browserHandle, - nonceBase64Url: "nonce", - state: "capture_ready", - code: "capture_ready", - retryable: false, - expiresAt, - capturePolicy: { ...SIMULATOR_UI_CAPTURE_POLICY_TEMPLATE_V0, expiresAt }, - artifactSummary: null, - }; -} - -describe("browser response request-window binding", () => { - test("collapses a valid but cross-session server response to a safe error", async () => { - const fetcher = async () => new Response(JSON.stringify(view("session-b", "handle-b")), { - headers: { "content-type": "application/json" }, - }); - const client = new HttpSimulatorBrowserSessionClientV0( - fetcher, - "https://auth.example.test", - () => new Date("2026-09-03T00:00:00.000Z"), - ); - const result = await client.getStatus({ - sessionId: "session-a", - browserHandle: "handle-a", - }); - expect(result).toEqual({ - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - operation: "get_status", - reasonCode: "response_invalid", - }); - }); - - test("never follows redirects and sends only same-origin JSON without query fields", async () => { - const observed: { url?: string; init?: RequestInit } = {}; - const client = new HttpSimulatorBrowserSessionClientV0(async (input, init) => { - observed.url = String(input); - observed.init = init; - return new Response(JSON.stringify({ - kind: SIMULATOR_BROWSER_SESSION_ERROR_V0, - version: SIMULATOR_BROWSER_SESSION_PORT_V0, - mode: SIMULATION_MODE, - environment: SIMULATION_ENVIRONMENT, - operation: "get_status", - reasonCode: "not_found", - }), { headers: { "content-type": "application/json" } }); - }, "https://auth.example.test"); - await client.getStatus({ sessionId: "session", browserHandle: "opaque" }); - expect(observed.url).toBe("https://auth.example.test/api/v0/session/status"); - expect(new URL(observed.url!).search).toBe(""); - expect(observed.init).toMatchObject({ - method: "POST", - cache: "no-store", - credentials: "same-origin", - redirect: "error", - }); - expect(JSON.parse(String(observed.init?.body))).toEqual({ - sessionId: "session", - browserHandle: "opaque", - }); - }); -}); diff --git a/tests/integration/contract/device-evidence-package.test.ts b/tests/integration/contract/device-evidence-package.test.ts deleted file mode 100644 index 735c741..0000000 --- a/tests/integration/contract/device-evidence-package.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { readFileSync } from "node:fs"; -import { resolve } from "node:path"; - -const deviceRoot = resolve(import.meta.dir, "../device-lab"); - -describe("physical-device evidence package", () => { - test("ships a strict observation schema without payload-bearing fields", () => { - const schema = JSON.parse(readFileSync( - resolve(deviceRoot, "observation.schema.json"), - "utf8", - )) as { - readonly additionalProperties: boolean; - readonly required: readonly string[]; - readonly properties: Readonly>; - }; - expect(schema.additionalProperties).toBe(false); - for (const field of [ - "productRevision", - "device", - "browser", - "provider", - "sensitiveOperationCounts", - "capture", - "performance", - "accessibility", - "sanitizationConfirmed", - ]) expect(schema.required).toContain(field); - for (const forbidden of [ - "image", - "video", - "rawMedia", - "passkey", - "privateKey", - "credential", - "signature", - "bearerToken", - ]) expect(Object.keys(schema.properties)).not.toContain(forbidden); - }); - - test("names every required physical OS/browser cell as unexecuted", () => { - const report = readFileSync(resolve(deviceRoot, "UNEXECUTED.md"), "utf8"); - for (const os of ["iOS 15", "iOS 16", "iOS 17", "iOS 18", "Current production iOS"]) { - expect(report).toContain(os); - } - expect(report.match(/Unexecuted:/g)).toHaveLength(10); - expect(report).toContain("desktop WebKit results must not be relabeled"); - }); -}); diff --git a/tests/integration/contract/gateway-recovery.test.ts b/tests/integration/contract/gateway-recovery.test.ts deleted file mode 100644 index 7f66ce6..0000000 --- a/tests/integration/contract/gateway-recovery.test.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - CONTEXT, - createBody, - makeBundle, - makeHarness, - reachCaptureReady, -} from "../../../services/session-gateway/test/helpers"; - -describe("session expiry, idempotency, malformed dependencies, and recovery", () => { - test("replays exact creation idempotently and rejects a changed binding", async () => { - const harness = await makeHarness(); - const first = await harness.gateway.createSession(createBody("create-idempotent"), CONTEXT); - const replay = await harness.gateway.createSession(createBody("create-idempotent"), CONTEXT); - expect(replay).toEqual(first); - await expect(harness.gateway.createSession({ - ...createBody("create-idempotent"), - accountId: "different-account", - }, CONTEXT)).rejects.toMatchObject({ code: "binding_mismatch" }); - }); - - test("expires a session against the server clock", async () => { - const harness = await makeHarness(); - const created = await harness.gateway.createSession(createBody("expiry"), CONTEXT); - harness.clock.advance(harness.config.sessionTtlMs + 1); - await expect(harness.gateway.getStatus({ - sessionId: created.session.sessionId, - browserHandle: created.browserHandle, - }, CONTEXT)).rejects.toMatchObject({ code: "expired" }); - }); - - test.each(["malformed", "tampered", "port_error"] as const)( - "fails closed on %s biometric output and never enters issuance", - async (mode) => { - const harness = await makeHarness(); - harness.biometricMode = mode; - const { ready } = await reachCaptureReady(harness); - const result = await harness.gateway.submitCapture({ - sessionId: ready.session.sessionId, - browserHandle: ready.browserHandle, - idempotencyKey: `biometric-${mode}`, - nonceBase64Url: ready.session.nonceBase64Url, - frameBundle: await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url), - }, CONTEXT); - expect(result.session.state).toBe("simulated_unavailable"); - expect(harness.calls.issuance).toBe(0); - }, - ); - - test.each(["malformed", "tampered", "wrong_outcome", "port_error"] as const)( - "fails closed on %s issuance output without a credential", - async (mode) => { - const harness = await makeHarness(); - harness.issuanceMode = mode; - const { ready } = await reachCaptureReady(harness); - const result = await harness.gateway.submitCapture({ - sessionId: ready.session.sessionId, - browserHandle: ready.browserHandle, - idempotencyKey: `issuance-${mode}`, - nonceBase64Url: ready.session.nonceBase64Url, - frameBundle: await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url), - }, CONTEXT); - expect(result.session.state).toBe("simulated_issuance_unavailable"); - expect(result.credential).toBeUndefined(); - }, - ); - - test("recovers through retry after a lost biometric response without resubmitting browser media", async () => { - const harness = await makeHarness(); - harness.biometricMode = "throw"; - const { ready } = await reachCaptureReady(harness); - const first = await harness.gateway.submitCapture({ - sessionId: ready.session.sessionId, - browserHandle: ready.browserHandle, - idempotencyKey: "lost-biometric-response", - nonceBase64Url: ready.session.nonceBase64Url, - frameBundle: await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url), - }, CONTEXT); - expect(first.session.state).toBe("simulated_unavailable"); - harness.biometricMode = "normal"; - const recovered = await harness.gateway.retryUnavailable({ - sessionId: first.session.sessionId, - browserHandle: ready.browserHandle, - idempotencyKey: "recover-biometric-response", - }, CONTEXT); - expect(recovered.session.state).toBe("simulated_credential_ready"); - expect(harness.calls.biometric).toBe(2); - expect(harness.calls.issuance).toBe(1); - }); -}); diff --git a/tests/integration/contract/lifecycle-and-quality.test.ts b/tests/integration/contract/lifecycle-and-quality.test.ts deleted file mode 100644 index 9c9002e..0000000 --- a/tests/integration/contract/lifecycle-and-quality.test.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, - makeAuthenticatorUiEventV1, - transitionAuthenticatorUiV1, - type AuthenticatorUiEventTypeV1, -} from "@clean-start/contracts"; -import { evaluateClientQualityV0 } from "@clean-start/client-quality"; -import { SIMULATOR_UI_QUALITY_POLICY_V0 } from "@clean-start/contracts"; -import { snapshotFor } from "../testkit/ui"; - -const lifecycleEvents = [ - "page_hidden", - "page_unloaded", - "orientation_invalidated", - "component_unmounted", - "operation_interrupted", -] as const satisfies readonly AuthenticatorUiEventTypeV1[]; - -const inFlightStates = [ - "request_checking", - "admission_checking", - "admission_handoff_departing", - "session_creating", - "demo_authenticator_pending", - "session_completing_authenticator", - "session_reconciling", - "capture_policy_loading", - "capture_permission_request", - "capture_acquiring", - "capture_preparing", - "capture_sampling", - "capture_artifact_ready", - "capture_cleaning", - "capture_complete", - "biometric_simulation_pending", - "biometric_simulated_pass", - "issuance_simulation_pending", - "return_redirecting", -] as const; - -describe("cancellation, lifecycle, and UX-only quality", () => { - test("defines exactly 19 in-flight states", () => { - expect(inFlightStates).toHaveLength(19); - }); - - for (const state of inFlightStates) { - test(`${state} exposes cancellation in the frozen cleanup order`, () => { - expect(AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state]).toContain("cancel"); - const current = snapshotFor(state); - const transition = transitionAuthenticatorUiV1( - current, - makeAuthenticatorUiEventV1({ event: "cancel_requested" }), - ); - expect(transition?.snapshot.state).toBe("flow_cancelling"); - expect(transition?.effects.slice(0, 3)).toEqual([ - "abort_active_effects", - "stop_capture", - "clear_transient_media", - ]); - expect(transition?.effects.includes("cancel_session")).toBe( - current.authoritativeSessionState !== null, - ); - if (current.authoritativeSessionState !== null) { - expect(transition?.effects.at(-1)).toBe("cancel_session"); - } - }); - - test(`${state} accepts all five lifecycle aborts`, () => { - for (const event of lifecycleEvents) { - const current = snapshotFor(state); - const transition = transitionAuthenticatorUiV1( - current, - makeAuthenticatorUiEventV1({ event }), - ); - expect(transition?.snapshot.state).toBe("flow_cancelling"); - expect(transition?.effects.slice(0, 3)).toEqual([ - "abort_active_effects", - "stop_capture", - "clear_transient_media", - ]); - } - }); - } - - test("quality outputs expose only UX actions/reasons and never a scenario or outcome", () => { - const sources = [ - { readCameraActive: () => true }, - { readCameraActive: () => false }, - { readCameraActive: () => null }, - ]; - for (const source of sources) { - const result = evaluateClientQualityV0( - SIMULATOR_UI_QUALITY_POLICY_V0, - source, - { retakesUsed: 0 }, - ); - expect(["ready", "adjust", "retake", "unavailable"]).toContain(result.action); - expect(Object.keys(result).sort()).toEqual([ - "action", - "policyId", - "reasonCodes", - "version", - ]); - expect(JSON.stringify(result)).not.toMatch(/scenario|biometric|issuance|success/i); - } - }); -}); diff --git a/tests/integration/contract/nested-receipt.test.ts b/tests/integration/contract/nested-receipt.test.ts deleted file mode 100644 index 10c6b92..0000000 --- a/tests/integration/contract/nested-receipt.test.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - verifySimulationReceiptV0, - type ExpectedSimulationReceiptV0, - type SimulationReceiptV0, -} from "@clean-start/contracts"; -import { - CONTEXT, - makeBundle, - makeHarness, - reachCaptureReady, -} from "../../../services/session-gateway/test/helpers"; - -async function captureReceipt() { - const harness = await makeHarness(); - const { ready } = await reachCaptureReady(harness); - const result = await harness.gateway.submitCapture({ - sessionId: ready.session.sessionId, - browserHandle: ready.browserHandle, - idempotencyKey: "nested-receipt-capture", - nonceBase64Url: ready.session.nonceBase64Url, - frameBundle: await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url), - }, CONTEXT); - expect(result.session.state).toBe("simulated_credential_ready"); - const receipt = harness.calls.issuanceRequests.at(0)?.biometricReceipt; - if (receipt === undefined) throw new Error("receipt_not_observed"); - const expected: ExpectedSimulationReceiptV0 = { - runtimeEnvironment: "staging", - receiptId: receipt.receiptId, - requestId: receipt.requestId, - sessionId: receipt.sessionId, - nonceDigestSha256: receipt.nonceDigestSha256, - idempotencyKey: receipt.idempotencyKey, - accountPublicMaterialDigestSha256: receipt.accountPublicMaterialDigestSha256, - capturePolicyId: receipt.capturePolicyId, - scenario: receipt.scenario, - artifactDigestSha256: receipt.artifactDigestSha256, - now: harness.clock.now().toISOString(), - }; - return { harness, receipt, expected }; -} - -describe("nested biometric receipt authentication", () => { - test("accepts the exact nested receipt and rejects key, audience, expiry, and binding changes", async () => { - const { harness, receipt, expected } = await captureReceipt(); - expect(await verifySimulationReceiptV0( - receipt, - expected, - harness.config.biometricReceiptTrustRoot, - )).toBe(true); - - const cases: readonly SimulationReceiptV0[] = [ - { - ...receipt, - authentication: { ...receipt.authentication, keyId: "wrong-key" }, - }, - { ...receipt, audience: "wrong-audience" as SimulationReceiptV0["audience"] }, - { ...receipt, sessionId: "wrong-session" }, - { ...receipt, nonceDigestSha256: "f".repeat(64) }, - { ...receipt, artifactDigestSha256: "e".repeat(64) }, - ]; - for (const candidate of cases) { - expect(await verifySimulationReceiptV0( - candidate, - expected, - harness.config.biometricReceiptTrustRoot, - )).toBe(false); - } - - harness.clock.advance(Date.parse(receipt.expiresAt) - harness.clock.now().getTime() + 1); - expect(await verifySimulationReceiptV0( - receipt, - { ...expected, now: harness.clock.now().toISOString() }, - harness.config.biometricReceiptTrustRoot, - )).toBe(false); - }); - - test("does not invoke issuance when the nested receipt binding is tampered", async () => { - const harness = await makeHarness(); - harness.biometricMode = "tampered"; - const { ready } = await reachCaptureReady(harness); - const result = await harness.gateway.submitCapture({ - sessionId: ready.session.sessionId, - browserHandle: ready.browserHandle, - idempotencyKey: "tampered-nested-receipt", - nonceBase64Url: ready.session.nonceBase64Url, - frameBundle: await makeBundle(ready.session.sessionId, ready.session.nonceBase64Url), - }, CONTEXT); - expect(result.session.state).toBe("simulated_unavailable"); - expect(harness.calls.issuance).toBe(0); - }); -}); diff --git a/tests/integration/contract/server-session-evidence.test.ts b/tests/integration/contract/server-session-evidence.test.ts deleted file mode 100644 index 5f31686..0000000 --- a/tests/integration/contract/server-session-evidence.test.ts +++ /dev/null @@ -1,292 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { - SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - SIMULATOR_BROWSER_RETURN_ACCEPTED_V0, - SIMULATOR_BROWSER_SESSION_ERROR_V0, - SIMULATOR_BROWSER_SESSION_VIEW_V0, - assertSimulationArtifactAllowed, - assertSimulatorBrowserArtifactAllowed, - type BiometricSimulationScenarioV0, - type EnrollmentSessionStateV2, - type IssuanceSimulationScenarioV0, -} from "@clean-start/contracts"; -import { AUTHENTICATOR_APP_CONFIG } from "@clean-start/app-config"; -import { rejectSimulationArtifactAtProductionBoundary } from "@clean-start/session-gateway"; -import { createAuthenticatorHttpHandlerV0 } from "../../../apps/authenticator/src/server/http.server"; -import { createAuthenticatorServerRuntimeV0 } from "../../../apps/authenticator/src/server/runtime.server"; -import { completeScenario, metadataBundle, prepareScenario } from "../testkit/runtime"; - -const expectedState: Readonly> ->> = Object.freeze({ - happy_path: Object.freeze({ - issue_success: "simulated_credential_ready", - issue_reject: "simulated_issuance_reject", - issue_unavailable: "simulated_issuance_unavailable", - }), - spoof_reject: Object.freeze({ - issue_success: "simulated_reject", - issue_reject: "simulated_reject", - issue_unavailable: "simulated_reject", - }), - capture_retry: Object.freeze({ - issue_success: "simulated_retry", - issue_reject: "simulated_retry", - issue_unavailable: "simulated_retry", - }), - dependency_unavailable: Object.freeze({ - issue_success: "simulated_unavailable", - issue_reject: "simulated_unavailable", - issue_unavailable: "simulated_unavailable", - }), -}); - -function request(path: string, body: unknown, headers: Record = {}): Request { - return new Request(`${AUTHENTICATOR_APP_CONFIG.publicOrigin}${path}`, { - method: "POST", - headers: { - origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, - "content-type": "application/json", - ...headers, - }, - body: JSON.stringify(body), - }); -} - -describe("actual W06/W10 composition and browser boundary", () => { - for (const biometric of [ - "happy_path", - "spoof_reject", - "capture_retry", - "dependency_unavailable", - ] as const) { - for (const issuance of [ - "issue_success", - "issue_reject", - "issue_unavailable", - ] as const) { - test(`${biometric} x ${issuance} has the server-owned outcome`, async () => { - const completed = await completeScenario(biometric, issuance); - expect(completed.result.kind).toBe(SIMULATOR_BROWSER_SESSION_VIEW_V0); - if (completed.result.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) return; - expect(completed.result.state).toBe(expectedState[biometric][issuance]); - const serialized = JSON.stringify(completed.result); - expect(serialized).not.toContain("biometricScenario"); - expect(serialized).not.toContain("issuanceScenario"); - expect(serialized).not.toContain("signatureBase64Url"); - expect(serialized).not.toContain("receiptId"); - expect(serialized).not.toContain("credentialId"); - if (completed.result.state === "simulated_credential_ready") { - expect(completed.result.artifactSummary).toEqual({ - kind: "simulated_workflow_artifact_summary_v0", - biometricVerification: "not_performed", - uniqueness: "not_performed", - credentialClass: "not_selfie_check", - productionCredential: false, - }); - } else { - expect(completed.result.artifactSummary).toBeNull(); - } - }); - } - } - - test("replays an exact submit idempotently and rejects nonce or artifact rebinding", async () => { - const completed = await completeScenario("happy_path", "issue_success", "replay-evidence"); - const replay = await completed.browserPort.submitCapture(completed.submitInput); - expect(replay).toEqual(completed.result); - - const otherKey = await completed.browserPort.submitCapture({ - ...completed.submitInput, - idempotencyKey: "capture-replay-other-key", - }); - expect(otherKey.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - if (otherKey.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - expect(["replay_rejected", "binding_mismatch"]).toContain(otherKey.reasonCode); - } - - const otherNonce = await completed.browserPort.submitCapture({ - ...completed.submitInput, - nonceBase64Url: `${completed.submitInput.nonceBase64Url}x`, - }); - expect(otherNonce.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - if (otherNonce.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - expect(otherNonce.reasonCode).toBe("binding_mismatch"); - } - - const reboundBundle = { - ...completed.submitInput.frameBundle, - artifactDigestSha256: "f".repeat(64), - }; - const otherArtifact = await completed.browserPort.submitCapture({ - ...completed.submitInput, - frameBundle: reboundBundle, - }); - expect(otherArtifact.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - if (otherArtifact.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - expect(otherArtifact.reasonCode).toBe("binding_mismatch"); - } - }); - - test("rejects cross-session handles and bound demo completion tampering", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const first = await runtime.browserPort.createSession({ idempotencyKey: "binding-first" }); - const second = await runtime.browserPort.createSession({ idempotencyKey: "binding-second" }); - if ( - first.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0 || - second.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0 - ) throw new Error("create_failed"); - - const crossed = await runtime.browserPort.getStatus({ - sessionId: first.sessionId, - browserHandle: second.browserHandle, - }); - expect(crossed.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - if (crossed.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - expect(crossed.reasonCode).toBe("unauthorized"); - } - - const ready = await runtime.browserPort.beginDemoAuthenticator({ - sessionId: first.sessionId, - browserHandle: first.browserHandle, - idempotencyKey: "binding-demo", - }); - expect(ready.kind).toBe(SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0); - if (ready.kind !== SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0) return; - const tampered = await runtime.browserPort.completeDemoAuthenticator({ - sessionId: first.sessionId, - browserHandle: first.browserHandle, - idempotencyKey: ready.idempotencyKey, - completionHandle: `${ready.completionHandle.slice(0, -1)}x`, - }); - expect(tampered.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - if (tampered.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - expect(tampered.reasonCode).toBe("binding_mismatch"); - } - }); - - test("accepts return only after a server-observed terminal state", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const created = await runtime.browserPort.createSession({ idempotencyKey: "return-live" }); - if (created.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create_failed"); - const early = await runtime.browserPort.returnToRp({ - sessionId: created.sessionId, - browserHandle: created.browserHandle, - }); - expect(early.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - if (early.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - expect(early.reasonCode).toBe("invalid_state"); - } - - const completed = await completeScenario("spoof_reject", "issue_success", "return-terminal"); - if (completed.result.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) { - throw new Error("terminal_scenario_failed"); - } - const accepted = await completed.browserPort.returnToRp({ - sessionId: completed.result.sessionId, - browserHandle: completed.result.browserHandle, - }); - expect(accepted.kind).toBe(SIMULATOR_BROWSER_RETURN_ACCEPTED_V0); - }); - - test("HTTP rejects scenario injection, raw media shapes, cross-origin, and invalid bodies", async () => { - const prepared = await prepareScenario("happy_path", "issue_success", "http-raw-media"); - const handle = createAuthenticatorHttpHandlerV0(prepared.browserPort); - const scenario = await handle(request("/api/v0/session/create", { - idempotencyKey: "scenario-injection", - biometricScenario: "happy_path", - })); - expect(scenario.status).toBe(400); - - const validBundle = await metadataBundle( - prepared.captureReady, - prepared.bootstrap.accountPublicMaterialDigestSha256, - ); - const rawMedia = await handle(request("/api/v0/session/capture/submit", { - sessionId: prepared.captureReady.sessionId, - browserHandle: prepared.captureReady.browserHandle, - idempotencyKey: "raw-media", - nonceBase64Url: prepared.captureReady.nonceBase64Url, - frameBundle: { - ...validBundle, - frames: [{ ...validBundle.frames[0], pixels: "data:image/png;base64,AAAA" }], - }, - })); - expect(rawMedia.status).toBe(400); - - const hostileOrigin = await handle(request("/api/v0/bootstrap", {}, { - origin: "https://attacker.invalid", - })); - expect(hostileOrigin.status).toBe(403); - - const wrongType = await handle(new Request( - `${AUTHENTICATOR_APP_CONFIG.publicOrigin}/api/v0/bootstrap`, - { - method: "POST", - headers: { - origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, - "content-type": "text/plain", - }, - body: "{}", - }, - )); - expect(wrongType.status).toBe(415); - }); - - test("browser-visible artifacts and gateway artifacts reject production before nested reads", () => { - const revoked = Proxy.revocable({}, {}); - revoked.revoke(); - expect(() => assertSimulationArtifactAllowed("production", revoked.proxy)).toThrow( - "Simulation artifacts are forbidden in production", - ); - expect(() => assertSimulatorBrowserArtifactAllowed("production", revoked.proxy)).toThrow( - "Simulation artifacts are forbidden in production", - ); - expect(() => rejectSimulationArtifactAtProductionBoundary("production", revoked.proxy)).toThrow( - "Simulation artifacts are forbidden in production", - ); - }); - - test("only accepts one or two ordered metadata descriptors at the HTTP boundary", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const bootstrap = await runtime.browserPort.bootstrap(); - const created = await runtime.browserPort.createSession({ idempotencyKey: "bounds-create" }); - if ( - bootstrap.kind !== "simulator_ui_bootstrap_v0" || - created.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0 - ) throw new Error("setup_failed"); - const demo = await runtime.browserPort.beginDemoAuthenticator({ - sessionId: created.sessionId, - browserHandle: created.browserHandle, - idempotencyKey: "bounds-demo", - }); - if (demo.kind !== SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0) throw new Error("demo_failed"); - const complete = await runtime.browserPort.completeDemoAuthenticator({ - sessionId: created.sessionId, - browserHandle: created.browserHandle, - idempotencyKey: demo.idempotencyKey, - completionHandle: demo.completionHandle, - }); - if (complete.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("complete_failed"); - const ready = await runtime.browserPort.prepareCapture({ - sessionId: complete.sessionId, - browserHandle: complete.browserHandle, - }); - if (ready.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("prepare_failed"); - const valid = await metadataBundle(ready, bootstrap.accountPublicMaterialDigestSha256); - expect(valid.frames).toHaveLength(1); - expect(valid.dataMode).toBe("metadata_only"); - const invalid = await runtime.browserPort.submitCapture({ - sessionId: ready.sessionId, - browserHandle: ready.browserHandle, - idempotencyKey: "bounds-submit", - nonceBase64Url: ready.nonceBase64Url, - frameBundle: { ...valid, frames: [] }, - }); - expect(invalid.kind).toBe(SIMULATOR_BROWSER_SESSION_ERROR_V0); - if (invalid.kind === SIMULATOR_BROWSER_SESSION_ERROR_V0) { - expect(invalid.reasonCode).toBe("artifact_invalid"); - } - }); -}); diff --git a/tests/integration/contract/state-and-ui-matrix.test.ts b/tests/integration/contract/state-and-ui-matrix.test.ts deleted file mode 100644 index 6207513..0000000 --- a/tests/integration/contract/state-and-ui-matrix.test.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { afterAll, beforeAll, describe, expect, test } from "bun:test"; -import { GlobalRegistrator } from "@happy-dom/global-registrator"; -import { cleanup, fireEvent, render } from "@testing-library/react"; -import axe from "axe-core"; -import { createElement } from "react"; -import { - AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, - AUTHENTICATOR_UI_ACTIONS_V1, - AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, - AUTHENTICATOR_UI_STATE_PROGRESS_V1, - AUTHENTICATOR_UI_STATES_V1, - dispatchAuthenticatorUiActionV1, - type AuthenticatorUiActionV1, -} from "@clean-start/contracts"; -import { FlowScreenV1 } from "../../../apps/authenticator/src/components/FlowScreen"; -import { - FIGMA_SCREEN_MATRIX_V1, - SCREEN_RENDER_REGISTRY_V1, -} from "../../../apps/authenticator/src/flow/render-registry"; -import { snapshotFor } from "../testkit/ui"; - -beforeAll(() => GlobalRegistrator.register()); -afterAll(() => { - cleanup(); - GlobalRegistrator.unregister(); -}); - -describe("frozen state, action, and visual evidence matrix", () => { - test("covers every one of the 62 frozen states in every registry", () => { - expect(AUTHENTICATOR_UI_STATES_V1).toHaveLength(62); - for (const registry of [ - AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1, - AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, - AUTHENTICATOR_UI_STATE_PROGRESS_V1, - SCREEN_RENDER_REGISTRY_V1, - ]) { - expect(Object.keys(registry).sort()).toEqual([...AUTHENTICATOR_UI_STATES_V1].sort()); - expect(Object.isFrozen(registry)).toBe(true); - } - expect(FIGMA_SCREEN_MATRIX_V1.verified).toHaveLength(15); - expect(FIGMA_SCREEN_MATRIX_V1.notFigmaVerified).toEqual([]); - }); - - test("renders every frozen state with its exact legal actions and safe semantics", () => { - for (const state of AUTHENTICATOR_UI_STATES_V1) { - const observed: AuthenticatorUiActionV1[] = []; - const view = render(createElement(FlowScreenV1, { - snapshot: snapshotFor(state), - onAction: (action) => observed.push(action), - })); - expect(view.container.querySelectorAll("main")).toHaveLength(1); - expect(view.container.querySelectorAll("h1")).toHaveLength(1); - expect(view.getByRole("main").dataset.state).toBe(state); - expect(view.container.textContent).toContain("Staging demo"); - const buttons = [...view.container.querySelectorAll("button[data-action]")]; - expect(buttons.map((button) => button.dataset.action).sort()).toEqual( - [...AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state]].sort(), - ); - for (const button of buttons) fireEvent.click(button); - expect(observed.sort()).toEqual([...AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state]].sort()); - expect(view.container.querySelectorAll('[data-action="cancel"]')).toHaveLength( - AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state].includes("cancel") ? 1 : 0, - ); - expect(view.container.textContent).not.toMatch(/\b\d{1,3}%\b|\bETA\b|countdown/i); - view.unmount(); - } - }); - - test("keeps every illegal action inert for every state", () => { - for (const state of AUTHENTICATOR_UI_STATES_V1) { - const snapshot = snapshotFor(state); - for (const action of AUTHENTICATOR_UI_ACTIONS_V1) { - if (AUTHENTICATOR_UI_ACTIONS_BY_STATE_V1[state].includes(action)) continue; - expect(dispatchAuthenticatorUiActionV1(snapshot, action)).toBeNull(); - } - } - }); - - test("has no automated axe violations in any frozen state", async () => { - for (const state of AUTHENTICATOR_UI_STATES_V1) { - const view = render(createElement(FlowScreenV1, { - snapshot: snapshotFor(state), - onAction: () => undefined, - })); - const result = await axe.run(view.container, { - rules: { "color-contrast": { enabled: false } }, - }); - expect(result.violations, state).toEqual([]); - view.unmount(); - } - }); - - test("moves focus to the state heading and preserves non-color text meaning", () => { - const view = render(createElement(FlowScreenV1, { - snapshot: snapshotFor("request_review"), - onAction: () => undefined, - })); - for (const state of AUTHENTICATOR_UI_STATES_V1) { - view.rerender(createElement(FlowScreenV1, { - snapshot: snapshotFor(state), - onAction: () => undefined, - })); - expect(document.activeElement).toBe(view.container.querySelector("h1")); - expect(view.container.textContent?.trim().length).toBeGreaterThan(0); - } - }); -}); diff --git a/tests/integration/device-lab/RUNBOOK.md b/tests/integration/device-lab/RUNBOOK.md deleted file mode 100644 index 19c7b81..0000000 --- a/tests/integration/device-lab/RUNBOOK.md +++ /dev/null @@ -1,68 +0,0 @@ -# Physical iPhone evidence runbook - -## Boundary - -This runbook is for physical iPhones only. Desktop WebKit, device emulation, and -synthetic streams cannot fill a physical cell. Use staging accounts and the -staging simulator. Do not capture or commit a participant's face, camera stream, -passkey data, credential payload, signature, private key, bearer token, or raw -trace. Persist only a sanitized observation that validates -`observation.schema.json`. - -## Prerequisites - -1. Record the exact 40-character product revision and deployed staging build. -2. Record device model, iOS version/build, Safari or Chrome version/build, - locale/region, tab context, provider, initial camera permission, battery, and - thermal state. -3. Confirm the operator consents to the test and that no screen/video recording - contains a real person or protected provider UI. -4. Use a network inspector that records operation names, status, sizes, and - timing only. Redact bodies and headers that can contain handles. -5. Start with browser storage empty. Do not export browser profiles. - -## Core cell procedure - -1. Open the exact staging URL in the recorded browser/context and confirm the - visible `Staging demo` label. -2. For iOS 15–17, confirm only update-required appears. Confirm authenticator, - camera, session, and simulator operation counts are all zero, then stop. -3. For iOS 18/current normal tabs, record whether the candidate route appears - and which provider is offered. A provider observation is not proof of PRF, - protected presence, or World ID key creation. -4. Complete the protected gesture only when the cell explicitly requires it. - Record start/end timing without recording provider content. -5. Confirm camera is not requested before the authenticator-ready gate. Exercise - allow, deny, and revoke as separate cells. -6. On allow, record actual track settings, MIME if any, time to first preview, - descriptor count/declared bytes, and whether every track stops at exit. -7. Confirm the browser request contains only one or two ordered metadata - descriptors (or the named allowlisted synthetic fixture). Do not retain body - contents. -8. Complete the staging scenario and record only the visible state and stable - reason code. Never copy a receipt or credential body. -9. Verify return/cancel behavior, empty URL query/fragment, empty browser - persistence, and no free-text upstream error. -10. Validate the observation against the schema and separately review it for - accidental personal or secret data before committing it. - -## Separate manual cells - -- Context: normal tab, private tab, installed PWA, in-app browser/handoff, frame. -- Provider: Apple Passwords, Google Password Manager where actually offered, - supported third party, unavailable/unknown. -- Camera: allow, deny, revoke during preview, no camera, busy/restricted camera. -- Interruption: app switch, lock, call, visibility loss, track end, offline and - restore, timeout, repeated attempt. -- Accessibility: VoiceOver reading/order/actions, 200% text, safe areas, browser - chrome, landscape/orientation invalidation, reduced motion. -- Reliability: at least ten repeated attempts per chosen current-production - device; measure times, cleanup, memory if observable, battery delta, and - thermal state. Do not set a product budget from this baseline. - -## Failure and stop rules - -Stop a cell if it needs product-code changes, unconsented biometric material, -production credentials, a real TEE/issuer/proof, an unavailable protected -gesture/provider, or evidence that would need to be mislabeled. Mark the exact -cell `blocked`; never replace it with emulation. diff --git a/tests/integration/device-lab/UNEXECUTED.md b/tests/integration/device-lab/UNEXECUTED.md deleted file mode 100644 index 34a0a97..0000000 --- a/tests/integration/device-lab/UNEXECUTED.md +++ /dev/null @@ -1,25 +0,0 @@ -# Physical-device evidence status - -Product revision under test: `b7d3949099b175ae41e1a95f4f65ee3c2714d98b` - -Status: **all physical cells unexecuted**. W09 had no physical iPhone, deployed -staging URL, camera operator, provider accounts, or protected user gestures. -Desktop Chromium and desktop WebKit results must not be relabeled as these cells. - -| OS | Safari | Chrome | -|---|---|---| -| iOS 15 | Unexecuted: update-only/zero-sensitive-operations | Unexecuted: update-only/zero-sensitive-operations | -| iOS 16 | Unexecuted: update-only/zero-sensitive-operations | Unexecuted: update-only/zero-sensitive-operations | -| iOS 17 | Unexecuted: update-only/zero-sensitive-operations | Unexecuted: update-only/zero-sensitive-operations | -| iOS 18 | Unexecuted: Apple Passwords candidate/provider | Unexecuted: Apple Passwords and GPM candidate/provider | -| Current production iOS | Unexecuted: provider/device matrix | Unexecuted: provider/device matrix | - -Also unexecuted for every applicable OS/browser/provider: private tab, PWA, -in-app handoff, iframe, permission allow/deny/revoke, camera settings/MIME, -app switch, lock, call, track end, offline/restore, timeout, repeated attempts, -VoiceOver, 200% Dynamic Type, safe-area/browser chrome, memory, battery, thermal, -real passkey/PRF, and protected user-presence behavior. - -Real camera provenance, biometric spoof detection, TEE behavior, real issuance, -uniqueness, AMPC, and proof are outside this simulator milestone and remain -unproven regardless of any future physical UI run. diff --git a/tests/integration/device-lab/observation.schema.json b/tests/integration/device-lab/observation.schema.json deleted file mode 100644 index 0ec26b2..0000000 --- a/tests/integration/device-lab/observation.schema.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://world-id.example.test/clean-start/device-observation-v0.schema.json", - "title": "Clean-start physical iPhone observation v0", - "type": "object", - "additionalProperties": false, - "required": [ - "schemaVersion", - "productRevision", - "executedAt", - "operatorAlias", - "device", - "browser", - "context", - "provider", - "permission", - "expectedRoute", - "observedRoute", - "sensitiveOperationCounts", - "capture", - "interruptions", - "performance", - "accessibility", - "outcome", - "evidenceMethod", - "sanitizationConfirmed" - ], - "properties": { - "schemaVersion": { "const": "physical_iphone_observation_v0" }, - "productRevision": { "type": "string", "pattern": "^[0-9a-f]{40}$" }, - "executedAt": { "type": "string", "format": "date-time" }, - "operatorAlias": { "type": "string", "minLength": 1, "maxLength": 64 }, - "device": { - "type": "object", - "additionalProperties": false, - "required": ["model", "osVersion", "osBuild", "thermalState"], - "properties": { - "model": { "type": "string", "minLength": 1 }, - "osVersion": { "type": "string", "minLength": 1 }, - "osBuild": { "type": "string", "minLength": 1 }, - "thermalState": { "enum": ["nominal", "fair", "serious", "critical", "unknown"] } - } - }, - "browser": { - "type": "object", - "additionalProperties": false, - "required": ["family", "version", "build"], - "properties": { - "family": { "enum": ["safari", "chrome"] }, - "version": { "type": "string", "minLength": 1 }, - "build": { "type": "string", "minLength": 1 } - } - }, - "context": { "enum": ["normal_tab", "private", "pwa", "in_app", "framed"] }, - "provider": { "enum": ["apple_passwords", "google_password_manager", "third_party", "unknown", "not_presented"] }, - "localeRegion": { "type": "string" }, - "permission": { "enum": ["allow", "deny", "revoked", "not_requested", "restricted"] }, - "expectedRoute": { "type": "string", "minLength": 1 }, - "observedRoute": { "type": "string", "minLength": 1 }, - "sensitiveOperationCounts": { - "type": "object", - "additionalProperties": false, - "required": ["authenticator", "camera", "session", "simulator"], - "properties": { - "authenticator": { "type": "integer", "minimum": 0 }, - "camera": { "type": "integer", "minimum": 0 }, - "session": { "type": "integer", "minimum": 0 }, - "simulator": { "type": "integer", "minimum": 0 } - } - }, - "capture": { - "type": "object", - "additionalProperties": false, - "required": ["settings", "mime", "descriptorCount", "totalDeclaredBytes", "trackStopped"], - "properties": { - "settings": { "type": "object", "additionalProperties": { "type": ["string", "number", "boolean", "null"] } }, - "mime": { "type": ["string", "null"] }, - "descriptorCount": { "type": "integer", "minimum": 0, "maximum": 2 }, - "totalDeclaredBytes": { "type": "integer", "minimum": 0 }, - "trackStopped": { "type": ["boolean", "null"] } - } - }, - "interruptions": { "type": "array", "items": { "enum": ["app_switch", "lock", "call", "visibility", "track_end", "offline", "timeout"] }, "uniqueItems": true }, - "performance": { - "type": "object", - "additionalProperties": false, - "properties": { - "admissionMs": { "type": ["number", "null"], "minimum": 0 }, - "protectedGestureMs": { "type": ["number", "null"], "minimum": 0 }, - "permissionToPreviewMs": { "type": ["number", "null"], "minimum": 0 }, - "captureToResultMs": { "type": ["number", "null"], "minimum": 0 }, - "memoryMb": { "type": ["number", "null"], "minimum": 0 }, - "batteryDeltaPercent": { "type": ["number", "null"], "minimum": 0, "maximum": 100 } - } - }, - "accessibility": { - "type": "object", - "additionalProperties": false, - "required": ["voiceOver", "textScalePercent", "horizontalOverflow", "focusNotes"], - "properties": { - "voiceOver": { "enum": ["on", "off", "not_tested"] }, - "textScalePercent": { "type": "integer", "minimum": 100, "maximum": 310 }, - "horizontalOverflow": { "type": ["boolean", "null"] }, - "focusNotes": { "type": "string" } - } - }, - "outcome": { "enum": ["pass", "fail", "blocked", "not_applicable"] }, - "errorCode": { "type": ["string", "null"] }, - "notes": { "type": "string" }, - "evidenceMethod": { "enum": ["physical_observation", "network_inspection", "screen_reader_observation", "structured_log"] }, - "sanitizationConfirmed": { "const": true } - } -} diff --git a/tests/integration/fixtures/README.md b/tests/integration/fixtures/README.md deleted file mode 100644 index 4d2da9a..0000000 --- a/tests/integration/fixtures/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Synthetic fixture policy - -W09 automated evidence uses generated metadata and SHA-256-shaped digests only. -No person image, video, audio, passkey, credential, signature, private key, -device identifier, or raw timing trace is a committed fixture. - -The product's allowlisted `fixture-neutral-v0` identifier is exercised by the -full clean-start suite. W09's app-composition flow uses `metadata_only`, so it -does not need or imply a camera image. diff --git a/tests/integration/fixtures/request.ts b/tests/integration/fixtures/request.ts new file mode 100644 index 0000000..7c812cd --- /dev/null +++ b/tests/integration/fixtures/request.ts @@ -0,0 +1,36 @@ +import { keccak256, stringToHex, hexToBytes, type Hex } from "viem"; +import { privateKeyToAccount } from "viem/accounts"; +import type { Payload } from "../../../apps/authenticator/src/lib/requests/proof-request"; + +// Public, deterministic test-only signing key. Never used against an actual registry. +const signer = privateKeyToAccount(`0x${"1".padStart(64, "0")}`); +export async function signedRequest(schema = 11) { + const now = Math.floor(Date.now() / 1000); + const actionLabel = "test-action"; + const action = `0x${(BigInt(keccak256(stringToHex(actionLabel))) >> 8n).toString(16).padStart(64, "0")}` as Hex; + const nonce = `0x${"12".repeat(32)}` as Hex; + const bytes = new Uint8Array(81); + bytes[0] = 1; bytes.set(hexToBytes(nonce), 1); + new DataView(bytes.buffer).setBigUint64(33, BigInt(now)); + new DataView(bytes.buffer).setBigUint64(41, BigInt(now + 600)); + bytes.set(hexToBytes(action), 49); + const payload: Payload = { + app_id: `app_${"0".repeat(32)}`, action: actionLabel, environment: "staging", + proof_request: { id: "test-request", version: 1, proof_type: "uniqueness", rp_id: "rp_1", oprf_key_id: "0x1", nonce, + created_at: now, expires_at: now + 600, action, session_id: null, signature: await signer.signMessage({ message: { raw: bytes } }), + proof_requests: [{ identifier: "credential", issuer_schema_id: schema }], constraints: "credential" }, + }; + return { payload, registry: { signer: signer.address, oprfKeyId: "0x1" } }; +} +export const bridgeId = "00000000-0000-4000-8000-000000000001"; +export async function encryptedRequest(payload: Payload) { + const raw = new Uint8Array(32).fill(3); + const key = await crypto.subtle.importKey("raw", raw, "AES-GCM", false, ["encrypt", "decrypt"]); + const iv = new Uint8Array(12).fill(4); + const encrypted = await crypto.subtle.encrypt({ name: "AES-GCM", iv }, key, new TextEncoder().encode(JSON.stringify(payload))); + return { + key, + query: `?i=${bridgeId}&k=${encodeURIComponent(Buffer.from(raw).toString("base64"))}&b=https%3A%2F%2Fstaging-bridge.worldcoin.org`, + body: { iv: Buffer.from(iv).toString("base64"), payload: Buffer.from(encrypted).toString("base64") }, + }; +} diff --git a/tests/integration/privacy/privacy-boundaries.test.ts b/tests/integration/privacy/privacy-boundaries.test.ts deleted file mode 100644 index 708f271..0000000 --- a/tests/integration/privacy/privacy-boundaries.test.ts +++ /dev/null @@ -1,140 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { readdirSync, readFileSync } from "node:fs"; -import { extname, join, relative, resolve } from "node:path"; -import { AUTHENTICATOR_APP_CONFIG } from "@clean-start/app-config"; -import { createAuthenticatorHttpHandlerV0 } from "../../../apps/authenticator/src/server/http.server"; -import { createAuthenticatorServerRuntimeV0 } from "../../../apps/authenticator/src/server/runtime.server"; -import { completeScenario } from "../testkit/runtime"; - -const cleanStartRoot = resolve(import.meta.dir, "../../.."); - -function filesUnder(root: string): string[] { - const result: string[] = []; - for (const entry of readdirSync(root, { withFileTypes: true })) { - const path = join(root, entry.name); - if (entry.isDirectory()) result.push(...filesUnder(path)); - else result.push(path); - } - return result; -} - -function sourceText(paths: readonly string[]): string { - return paths.map((path) => `\n/* ${relative(cleanStartRoot, path)} */\n${readFileSync(path, "utf8")}`).join(""); -} - -function apiRequest(path: string, body: unknown): Request { - return new Request(`${AUTHENTICATOR_APP_CONFIG.publicOrigin}${path}`, { - method: "POST", - headers: { - origin: AUTHENTICATOR_APP_CONFIG.publicOrigin, - "content-type": "application/json", - }, - body: JSON.stringify(body), - }); -} - -describe("privacy, isolation, and copy sentinels", () => { - test("client source contains no browser persistence, beacon, cookie, or server imports", () => { - const clientRoot = join(cleanStartRoot, "apps/authenticator/src"); - const clientFiles = filesUnder(clientRoot).filter((path) => - [".ts", ".tsx"].includes(extname(path)) && !path.includes(`${join("src", "server")}/`)); - const text = sourceText(clientFiles); - const nonWalletText = sourceText(clientFiles.filter(path => !path.endsWith("/wallet/session.ts"))); - expect(nonWalletText).not.toMatch(/\blocalStorage\b/); - for (const forbidden of [ - /\bsessionStorage\b/, - /\bindexedDB\b/, - /\bdocument\.cookie\b/, - /\bsendBeacon\b/, - /from\s+["'][^"']*\/services\//, - /from\s+["'][^"']*\/server\//, - /from\s+["']@clean-start\/(?:session-gateway|simulated-biometric-verifier|simulated-staging-issuer)/, - ]) expect(text).not.toMatch(forbidden); - }); - - test("clean-start product source has no S1 implementation import", () => { - const productFiles = filesUnder(cleanStartRoot).filter((path) => - [".ts", ".tsx", ".js", ".mjs", ".css", ".html"].includes(extname(path)) && - !path.includes("node_modules") && - !path.includes("dist")); - const text = sourceText(productFiles); - expect(text).not.toMatch(/(?:from|import\s*\()\s*["'][^"']*(?:\/s1\/|legacy|src-old)/i); - }); - - test("actual browser projections omit secrets, raw media, signatures, and detailed measurements", async () => { - const completed = await completeScenario("happy_path", "issue_success", "privacy-projection"); - const serialized = JSON.stringify({ - bootstrap: completed.bootstrap, - created: completed.created, - captureReady: completed.captureReady, - result: completed.result, - }); - for (const forbidden of [ - "privateKey", - "derivedKey", - "prfResult", - "signatureBase64Url", - "receiptId", - "credentialId", - "embedding", - "landmarks", - "pixels", - "mediaStream", - "deviceId", - "deviceLabel", - "biometricScenario", - "issuanceScenario", - ]) expect(serialized).not.toContain(forbidden); - expect(completed.submitInput.frameBundle.dataMode).toBe("metadata_only"); - expect(Object.keys(completed.submitInput.frameBundle.frames[0] ?? {})).toEqual([ - "transportIndex", - "width", - "height", - "encoding", - "byteLength", - "frameDigestSha256", - ]); - }); - - test("invalid canaries are rejected without reflection into errors or headers", async () => { - const runtime = await createAuthenticatorServerRuntimeV0(); - const handle = createAuthenticatorHttpHandlerV0(runtime.browserPort); - const canaries = { - privateKey: "W09_PRIVATE_KEY_CANARY", - rawFrame: "data:image/png;base64,W09_RAW_MEDIA_CANARY", - upstreamError: "W09_UPSTREAM_FREE_TEXT_CANARY", - signatureBase64Url: "W09_SIGNATURE_CANARY", - }; - const response = await handle(apiRequest("/api/v0/session/create", { - idempotencyKey: "privacy-canary", - ...canaries, - })); - expect(response.status).toBe(400); - const observed = `${JSON.stringify(await response.json())}\n${JSON.stringify(Object.fromEntries(response.headers))}`; - for (const value of Object.values(canaries)) expect(observed).not.toContain(value); - }); - - test("committed fixtures and reports contain no real biometric or credential payload files", () => { - const integrationRoot = resolve(import.meta.dir, ".."); - const files = filesUnder(integrationRoot); - for (const path of files) { - expect([".mp4", ".mov", ".webm", ".heic", ".jpg", ".jpeg"], path) - .not.toContain(extname(path).toLowerCase()); - } - const textFiles = files.filter((path) => [".ts", ".md", ".json"].includes(extname(path))); - const text = sourceText(textFiles); - expect(text).not.toContain(["BEGIN", "PRIVATE KEY"].join(" ")); - expect(text).not.toMatch(/Bearer\s+[A-Za-z0-9._~-]{12,}/); - }); - - test("user-visible copy never presents simulation as real biometric, TEE, uniqueness, or issuance proof", () => { - const copy = readFileSync( - join(cleanStartRoot, "packages/contracts/src/authenticator-ui-copy-v1.ts"), - "utf8", - ); - expect(copy).toContain("Staging demo"); - expect(copy).toContain("No biometric verification or uniqueness check was performed"); - expect(copy).toContain("not a Selfie Check credential"); - expect(copy).not.toMatch(/(?:verified|proven)\s+(?:real person|camera provenance|TEE)/i); - }); -}); diff --git a/tests/integration/reports/evidence-report.md b/tests/integration/reports/evidence-report.md deleted file mode 100644 index aab5ad7..0000000 --- a/tests/integration/reports/evidence-report.md +++ /dev/null @@ -1,101 +0,0 @@ -# W09 deterministic evidence report - -Product revision under test: `b7d3949099b175ae41e1a95f4f65ee3c2714d98b` - -Evidence was integrated by Main through `ec55f231ddb027d7fd4d69b310b3b3e3bd76e4a8`. -The browser screenshot harness received its stable-paint guard at `7401092`. -The final scoped recovery re-review passed at `ec55f23`. - -Final automated results at this product revision: - -- Integration: 101 passed, 0 failed, 2,092 assertions. -- Browser: 10 passed, 0 failed across two separately named projects. -- Full clean-start: 362 passed, 0 failed, 5,139 assertions across 36 files. -- Typecheck: all client, server, test, and tool projects passed. -- ESLint: passed with zero warnings. -- Browser build: 299.96 kB JavaScript (87.06 kB gzip) and 5.76 kB CSS - (1.96 kB gzip). -- Server build: 162.96 kB. -- Six targeted privacy/copy/isolation scans returned zero matches. - -## Automated scope - -- Bun contract/in-process integration: all 62 frozen UI states, every legal and - illegal action, 19 explicit-cancel states, five lifecycle abort events, - iOS 15–17 update-only classification, iOS 18+ Safari/Chrome candidate - classification, rejected contexts, actual controller/server happy path, - session/result bindings, replay negatives, nested receipt authentication, - all 4 biometric x 3 issuance paths, HTTP strictness, and production isolation. -- Privacy: browser-visible responses, invalid-canary non-reflection, client - persistence/API imports, server-module isolation, S1 import isolation, - fixture types, safe simulator copy, and metadata-only request shape. -- Browser: actual production browser build and Bun server, separately executed as - `desktop-chromium-synthetic` and `desktop-webkit-synthetic`; responsive - 320x568, 375x812, 390x844, 393x852, and 430x932 checks; enlarged-text, - reduced-motion, focus, semantic, storage, URL, console, and network checks. -- Screenshot artifacts are synthetic/non-person. Playwright trace and video are - disabled. - -Browser tooling: Playwright 1.62.1, Chromium 151.0.7922.34, and desktop WebKit -26.5. The WebKit binary was installed through the pinned Playwright version; no -dependency or configuration changed. - -## Defects found and closed - -W09 found two product defects and stopped those paths instead of editing product: - -1. `return_redirecting` exposed Cancel/lifecycle actions while retaining a stale - terminal authoritative-session binding, causing the frozen transitions to - return null. Main corrected this at `7d4b00ea63e00fd039067c44e3f2c48cdbd1c030`; - all 19 cancel states and all five lifecycle events then passed. -2. Blocked admission outcomes were not announced as alerts in the built app. - W01/Main corrected the explicit alert-state registry at - `14dea2384fbc6bb63d0f8d0eef64232e43304d1e`; both browser projects then passed. -3. Retake reused the already-consumed capture idempotency key after the server - issued a new nonce. W01/Main corrected key rotation at - `b7d3949099b175ae41e1a95f4f65ee3c2714d98b`; W09 now drives two actual W06/W10 - submissions and proves the second uses a different key and is accepted. -4. An ambiguous submit transport failure had no authoritative status-recovery - action. Main corrected the frozen recovery transition at - `a311f683377f9d129d38a0d7804f4465ba3e194f`; W09 now proves a server-committed - credential-ready result is recovered through status without resubmission. - -No other product defect was reproduced by W09. - -## Screenshot checksums - -```text -8337244115300e1bb2206a5c411564ef6b16a0aced3c75195f71972d6b16499d desktop-chromium-synthetic-admission-blocked.png -d4d5645e1be39eac464a1edccba043247b7e3c4e109b35142a163477a54c3e2d desktop-chromium-synthetic-request-review-393x852.png -f44da597838657bb6d1598137aec75d54109a222950ba10eccbbffa976f9d855 desktop-chromium-synthetic-returned.png -3483e2a38d7c1b9fc6320342cd67a30f452a9d2c3011f4b499f6dcd9cc416fe4 desktop-webkit-synthetic-admission-blocked.png -146127a092ae75f3438e74f60677a21f86d95ad59e35145fac932d89859a2dcd desktop-webkit-synthetic-request-review-393x852.png -36543aeca014c0f280d68d8a9175074b32105647b27180f3b43dbd3307abea15 desktop-webkit-synthetic-returned.png -``` - -## Evidence boundary - -These results prove deterministic contracts and desktop rendering only. They do -not prove iOS Safari/Chrome behavior, Apple Passwords or GPM presentation, PRF, -protected user presence, camera provenance, physical camera cleanup, VoiceOver, -thermal behavior, biometric performance, TEE integration, real issuance, -uniqueness, AMPC, or proof. Every physical cell is explicitly unexecuted in -`device-lab/UNEXECUTED.md`. - -## Reproduction - -Run from the repository root: - -```text -bun run --cwd clean-start test:integration -bun run --cwd clean-start test:browser -bun run --cwd clean-start test -bun run --cwd clean-start typecheck -bun run --cwd clean-start lint -bun run --cwd clean-start build -git diff --check -./bin/memory check -``` - -The exact counts, browser-project results, final evidence commit, and any external -browser-binary gaps are returned to Main after the final run. diff --git a/tests/integration/reports/screenshots/desktop-chromium-synthetic-admission-blocked.png b/tests/integration/reports/screenshots/desktop-chromium-synthetic-admission-blocked.png deleted file mode 100644 index ae6966505bfdb025474b3190d5a6fd116cbc815e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18044 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 tZ^<*k54^~YMBk diff --git a/tests/integration/reports/screenshots/desktop-chromium-synthetic-request-review-393x852.png b/tests/integration/reports/screenshots/desktop-chromium-synthetic-request-review-393x852.png deleted file mode 100644 index 1509dda44846a14c859ee80484d5e6b3c7a4cd98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28067 zcmeFZbx_q&yf2E<-QBejM7mQNln@a~>F$#5?v`#55RjIT?r!Ol?(W=oaqc-YZ{EB= z-kh0t-+MFnA7|X^=C}7+>-))N*at-!bQBU47#J9IIa$e%FfcE|U|?WBA-x2z^!rM4 zz`$U^$VrNQa?Lo%L`=c!o({Ie5Xg)cB|Eks}P$p^@n$&turfzn|39)LhiOyheU5AI;X( zaM1>0MPpkBVs!}TD~KZz#_=FiYfH}41=?YoCt!6*{qGn5_ZRZNH^cwq2Z3%HNq?yL zQch)yBBOy%f3Pf3`1EJvx(Y7Nqpj6{{cBGf7ej7ut3;YW{gcs zgKw^~aW>c?;UzM6d7V_WGb^qK+V|k>=1g{GgPY14oO0a+AL3m@+YRXSj zw+<2CB{LBiN_J6Mhckz|x%k*G6nwcoU6((40WCA=4^+x}RYK&pkzf(qbEr~EufV4KJen|>yu#x+sUG&<^tLGdKfAOsh}xqB@kyO-l*gWD}e99I~plzbf~8awlZ@P>(r>6knb>Fs}eJddy3Nps=quzukCu69}QBbDCr zBPD5U4a3t(_AgZ?+^^@xmDZy%jH=Axs-$&=QK@l4M&bj@(8upQTBTnSQgEa&2p6h2 ztv6~m^bfWb9|v*SpK7mzX7cqs=#2Z-a^b||R3MZ^QMg+3B6j%} z6`zk;{ik`zjP&im!BX~gty)Lz67(v2vP2rw1LE^yMeyL`M@+)dtEqt4uSfT`m9s>g zC*u!Mqmi}7uijQ};03%)VxchJuS@Nl!;hiAiO_`U52-CDQSJ_Hil|{c#+6Jr$Wxd) zQ!Z2uyW05a*Z^UVY|6$-OlYKMVaC60x+*a#bbG{wWA~dUqF&>3AA)HNKDGv%lGx z%J|p|$y61-+Y~(0KsM~GlcrO65Z)YsR9-s?S&jGzu-s0S$8!k2GFQox5&0q+a9U-e zGM}aZZ7KZqX}l9GA87uv|Tb-Qq; z%1r*XlfE)kxfSu8TK>jtNmuU1YqPcc>0E5>N43Fn3xn>V#W-(mB)I_lZAZ1?he~{C z{uM<^N}|=%d`gv}ZAWhm*)na%bw6f^ZvVy84qasV!hDa;933Q-Crl{DV0BHGDLLwH z_ws?^TbO`dpU|WETD}{jx+)Uf6?T<_WXhBA#YN)pbWE+q{3(`J7?b9U6NRm4y|@|acl#n%Pl&H6g|tU+G@ww5LFLK#xg_62Z0yJy zIWhz_n+wNV#;q(l2}|E8=$@xV zh5SIAVPTn8A7y9c4`357)}=7fOzXES$0q0v_Y}|%b@W-{6;&kO^;nV1;DClA<8t8< zXDSNjLudl~Y{H$w3ByS44PIDL=1ED07O>p-tc1V4i54~|60G}z?TRUpa_1~4#K7yL zx|j3?YN5WAM(k9W_6_s(=XdWk<8@BnM8lh_NJ==FA4J@Sago2{D)&s~vibaO9(woL z5bD9F>9o{csj%PWdb{D&!gsZS5+Y?fv4|%bRgbf)NZ8FIKs(>6p5DVwnDLd*;PUQd zBk>ch+H42>kZ;I2_TH0$ zI7)(hfEU1ZTeZO3@ z?sJgWi$Evr@Fl~C%VMUbM&_Quz?m4keW&51Nhx-_!;#gUMQHT9di{SJ-V?9;2`$fN zbrl@=q)>M0)7{9-RhA3o!%~{A-sRW)t)e%G?3;XskB|_1O$v|Qd@y!stq1NC8L=~y zk_vUE!LJ{Gmew%FJiq!^klRP|U0%P09iQo^K~u>r>G{NK^SPoNxj`+;K85#x^5m%h zC+H|ey|Xu+2_57tz(wp>O?=Im%>v#b9I4D!m5zJUw;wkja(p~r8;b2l4!+;9T#a1K zZ{I(v;K;LtNEB)C7k`=Tkly&3uYfIPCI1(8hT#4Cah~jBx zsuih3`2UpiP$&!PacRld`wvn81OA=l%EG(p5`3wqo(*xcD}L_p*)6~GvE%$|82$SQ z2`^V^jf;~M2ELw229zYqk(`(jW3-3%y`9I?NMxZnzdYY0$&O2luV+x}$}*!a=*?K0V&2^V%*~8NXkrvz#e=JRcRU z{#d1$DS*%PiLHa3=1aPCBoVt_oA1!{bh&Qp`(ze!0VlSO-hpqg%m3^#ed>Q2N@mTj zp1*j!UTJ;0+t*;coz}AbdN4bV)Enw#jWVK5xln7pKmI+WzwzQ=&T)Grb9{VU*Yi|L zUS2*nUPLs7!Pc$YP}Yjk0uwC&HwQOo-rvtp2Kv6EIo_cGHKoW!~NCasL1`n(Dc>uiqFI@EU#&tELVf+WT2Z!1yt6=#5rwg;By z{rv|d3vcxBdzMywpv|VESq_^6Q>7Z!M*Y}$zb*gE3y3G?@f{AkF4t-PV>MS*nC@ zMuy`E|MFHMbicgygv@-SpCMcO=f@xaLgd`=0udYy4vAqEv3mzE;O~E&txqO4dt5Jn zo%zDERH&5AIl@QlmFjhWg)OrkUm200C=gacfRF!8BPc`t&x>?6pAOYm%6WlM&3P;C z%;IqT*Cw8mte-~Ya@b5K2-eBsp`)VEPro$3No+Btgvu0B5fvfRy0u~k=78PF<8ybh zJ1TS@35BEVrf}cM)v|5o&Iw-a3~9aFE15Q|61v;@o+_$Ok)yX? zs*L*8biJhhSTEFqKYM{J?Rvc2%%G6Ap{ozh5!h~8-=(82Lc+q_7p&`ksaJN8@mI38 zJ~%WwA0l;D6T%HHZ0wbko8bG~M8mU?DbV<#`kW8*B9?AODsO|;+{+GI>79FiPFNJ^ z)q*Wq5cI2`WqEVb7gt^wyxWQQtiKro_n%HWF+DQYlZyyo+|Ql@GoK8`{ou#jDt(Wzz_ zfF%tP?B!kY#I3;Rr9Kjn2u2h8*gVu7K}ajH>vDQIqx;WcwckPA}N8x8diX>7|7pjR0rghK6?aucY z^`I99=fsD*+yb1_WnUt4O(%(%`66Gyo2BDJqOV)-k2>?EZsu#u4QD2bgHQ?QxxC5L zRthR_mOalEMlhFrJ9$N_(`1d?qIyXzXJs;YkCd)53}0*L=Na0)K|mw=P_83f9t5e1 zTS|NZC&FVre*r%7c!*VWA;$%g$Mx3L$ndZUjWFB?t5#DOt@UiGlDZ^z+vB`a0qDcI z(neUI{d$i^xBj9x*fBg?4$~T@tN1v-3au%WP2^r?hc8*{!mc2*rkYko2##cr^;Yb&k^*TFB1Nr`zZ$ z0MlzZPb$LqTttJGhEUM;>gjAN)tlzPD^|y+sAi`*i)L9+mLqc@YYQD zzqa=XrpJjYil=x431f}T%G5G4n`XqBY;9$cuZ(yfQ6J0av5CGA>bT}I$Y0Qn{<+eo zlc$3YkHdQ;m=>|2J-nweecBS{oX*<(N~ZTT3&-mQ)nhxI*RpBoE=Xq89hpECS`BpX zwu|rK`8sBNvOb^Qza`YyJFP z%3>vtP~F8voybuXfKKk-?&DUd4K6_Zt1Giq9_uuPe~JdB`u4NxXmyq--?J8HE7O_o z*ydnpC!vLeqh(rkHgDz7gwy{qlMA_y=^CZBow4q^>HM~sIvd?aOK0YE+>&Qy4$@Cw z&8A^bw!nQ66AvT(>YCx+itwWuIq!O7{ZK3d-c<%ixi~7r3Y6h&AfuGKrHP*)f;Wu# z!M<83re;^SUe!V7xA{F^{pls=(X9@#ZAGe+bAo8#pVXq-U4gHA`K(xMLsb~nvRM?^ zh6ANUM`5SKL66&_P-;8_Pm4_j2K!_aY1T(1A^QhLzTbrSk9?+5WRVK^RK_sU+}IlTylp8AH_+N_w_to}#A+rn zi?;h}WT<*f$TgZ6%;G9+FnjZg&sv6w-oP9TC-rQpkf-`gFXyOGKq0^7H1k&NVHZKQ z$uF%s#pC!uln2PY8PV?L{*2l$%_*NZ+r8lnI2 zj{L$+Y?LAe+mplTysTcrSu^D>q#0D-EoP|U@lYA9+5?gQD z&S^Fx(TzPZ-rp5^RCK>|uyQe_({dT2r83d?WdD?|US%ZLRt(^C4q+BCPEJ0RBS<#k zbPiIO=}e-mvsK$v6wA9@g*<94i3|JL%_q6{cBqAL-0n(fCOzk?9rne=tH<^78~d!+ z3IWaLVk|ayvQ5`BY+_GoN=86)_ariF#HW5qHz~{fNt}K~lZGjBlhb+{(?8kZxSj4f ztCv6sa|HOOsWh=Jme*pv{fowPyk6bfv3lR_>L}gF0QGoiLRUS`5Y`+5vvxh!eMIUF z;8EjDKIU)poBl<684TXIQRZe6SUb<4yjQG9llscP5 zrGn$cmk64|N$GVF=YY4^E|5n%Lmt zw46vN*W7i<@Y!lB^7m%jl@=a_z|Hj-(ORYbu`tnx6Nz%7v^8OS8!^Oj2y3hnobNt219*$g6_(+%Qozh(uqdW#atVO0&fJfPnUAT^O?0&UWrUCR->RYwMK{ z_4u^}@XH^k_5g{g-gsdh5*5-?kchT>k0N)G8-)iOeC=_Qs+fxRtT`T~>&4+W<5s2Kth{OrJ}MHjqiu28@W4sHU||0#b8Qyf#q}(QZ3ak&%(pd93q@ zBXz8ldUaE~RR6i#r}C-QOzTQacHVA}@x8S{XfOBYgXAmlzs0h~5m)~|i0BQ{ZI~{v z)Mk#BIuc@PN$FS1&r#H^)BnnxvY&h237qZQ^KGyfmja`|?oVGHuRwujdf3kPNqVDo z1;hjyKu12MvU{$PUP>P!w=<)J!Z|Q=fPj&bdDm(&nk8)8blOAd^Ppc9;yWqma-{8i zJ;XUWrsNHzBTxtv8;TBoJdbz#pDhy|dsHrY+&%WVbDHM-b_V36y0 z-)@50%>aRTpLP>o`~viuw9f5vO07h#yv2BsAi?8iBSEP^Dck0Zi_>K2-!hN$f%?Sa zs>w*k?vl)|IbgEOx;~G_Rfy0@LEGh~lJb_jNhQ%AAvp?OcNcDJVGKApz$EIrv^6c$ zX}$x`!}{gV#TS>QsT%W1bW$GAi*cEyMi-x_+ilxFyAa2h%;5C&Mw8Df0DRfn2JgO5 zr2O4+RCuO-7?9yGo^PzW%Sg#)Q^okx?;;4^$l5N}p9YiK-24l`oUgUE>_Eloci8*; z(|9n6ejJzzH#avAx992Fp_B7Y|JwW(Y#O7w`r>GtmHyS5Pi`e?*|cMKMlxyFSMcl9 zS}*jR9aN9jiYf{0(lK$3R2y`o1p8q}D+8sDMvyRRwe;uryKhXNQ`#Oqtg$k#c9GbA zX;g0kHF6H+afzdma=+XQVp2%w8QzK{pI()y@LuzaE`lS+>N3h7GwrkG3t|xlM#k#F6_@&@r-&OWf zbQ+kd0-iKW?r{qYk=^JABUT^|QOtyL5t(YFTYABZP#`2?Wfc{Bj2Zzf%s!-9mbpP6 zuM^_qn>fIjh=+czfgaYa@U-NRDp*hChYf#FmYn=AFQD!hiHIkkU|tpwG991 z!NA_tGM1B*YY%BY8+gsw^XutnVb*-BkI$XK?mj~TRb7vAP23LJmZ1!3rXeZePjj6%z)VpW~h^&N_*ihiIY4j;+5%&;!4=4<+& zx*|6jsIz`s&dkFlf194KmWkfBwg*pgrE%5K;(m3InyU5$w$+>j#JL?kMSV(nG#H-2 zcgYKg-3u(7M7o4%Ntd$$Bj>}#E_3USLj$*QDMI)SUaQ$yRiY31y^+M7-ynKjdi87J zuj_gGhL4sSqmC`cXV|MOrc0ksLed4Pkk4mol<9B#K!pjHONQY9iJd3G*>>Qq>$dq# zquON2`~Gm+ZrvS-fQO_ zYFi$!7XEzQ$3eF8_%@^KlNpzqmiCT)BPISxb(~F*sNyo#9Ajl`;WM`1 zpNF$S;6%a8ySPImSX)BbWlc`ky3JLCbH^}6A7UrJZl#*81#5erc5_Ym+_>eJQ^L0b z#EG)~_r82mgPHFxMr*YfQV0Aav8wtE8Z z1u!vUUokkyVakgZipi25>czlCVo{OUHtL>K>#y1jAMrtX#6qWU{*W#86CgP}uSm8H zaFsI5M&Bx6lKV$2RT&SyfJKm$p`6y3Sp0;DK_**RXZ&ic!O;{a5T@R8{0$aiI6F@; z2Kl>HG(+Cafp490l1@!zrM}b>!Jmph_1~Bbe8BxPILy0Z<+&H8GnC57&=x3tlfptR zZBj=f>MitM8i_sxoitczF01!Vw4Z+SU*P1V4z+7%a~OyFVEoD(wP)pSK_)3hw)y64 zrR{O}yC(a?j;h)hRe*rdUwl8%4EF?!yT-zPEi?|q{egXU(2dfe?uo>-b@beT6I!!AIJ3lRerZyq>2-b9rn z+Lb*j5dBF^F1Yrni~IL%xjc0kS=QpfE;4Ai6MoZ|b1`Cr`{a*CoUNqqV-Paw3ye=@ z&6?2cT1Tx?c$@PWWX;XXW8n5w7>S?9(9SyF3BDt6j`AGS8?Y;@;ES{+5ORHVCdeQo zBi3r=Mmg9pnclxZl&a`}L*gnVml1j0yXNCJ8%w_yJ?hW>snS4dkt>Zn{zy!C5vL+1 zQYkDYNniHaW%3~1BC_z$N@IQ-fDK8nbtlv#C(YKW=zEIp+HbFIzk+B=C^gQL^QZUW2{)rn=dv&})mCY(EV z7e%@-3TfLM27M_~-B^FsC;SO05sWi4IquW9+2P3*PGVcW_$U6wFQ;A)0UR1XSCV|% zLwtzSvo8f6k=e+I*lq^-NMwWwps0bg0gQq423`b1=$^vb#UH+67I!R&-?JqHzbr&T z64Fy{4eQ<9|5DqYHAe0x<%jyaWYC;Lco)->Vd#E-uawN=X2gzXE&m z;aqudy^OQXS?{Iad%1vWS7wUjyV({m!SUBl;XC+c21S2lzhe>r!p(*0%X={GCEafhBHRuSH?7G*Q-6XGT_SHqi_~#z1>P@Cgrv;@>Jrqr$}KOIdQ{y zO}y*%@LgQ;40v(uEemL3?hv`CV|Vh&xxQGcnUVVNNoN&cSl456uE-Ud>fzc#y#21$ z4{-x)k6_~77yLO1Ln5Qnf4sYtK&>z9K?lZom`f8_*L>k>q=*;|=MDlcq6n|sv&}C1 zQ@m2u?vtKAgEu^cE5-uGPsJ-=21@)tvD4V!*J}U$TWjdR$cvQ36z0{FM-8 z>#1xLqU@3&Kiv4E_N{s~SATi*g;~xdybiIyw;&6%drw7I=~u?pODf+y*vLI zNso%OMkHa&Q0?di?7$)Id?(gCe(@_$(||=iaVSVjB?5a>b-!K7q<%~UG81(i2|l8u zd}X1n&)Y}e=-5u7J3xeOJS$ZvcvwiAMt0yI{qsN zLa<+1W1v_x&GwSU8VD@&V9T=KX{vAuLc!;A-a05H-kdT?K8R}`Gqiuhk8*sw>`VT` z7DlTw-(w*=@URl`*Dvx1s~ffM!?E}G+lUR$HaOq3p6vdLh;|Iwo5bK9EH|g$Zz!)% zt|D&xw|DkcCfGmOov{y|N>0R}99dn62hO&Z7-JWAOH=(Ld5FQc6DSh8k>9DbNxu|8 z{$69dLNV1A-le_fY8}Yu%M3~g*A!1jVnykS5t(00*~xkG)r?&GdYyPU)+Nh4_<$}* zBn^v+={0TF?cCMF5lDX0P~llESC9^M+Idu%>x(4j3{9MCRZ3!m*Q2~TrMShWftgd7 zLxKn=>=XZC5)b_+n;wY8LX)kCv`RApp$?4rpT7qhs6G^E;v|+YcYtQXJJ*Nkv3FI zH;%Yrvy&~CW}}z%2{)yr)g8y%h?h7cF&n(J~GVsiAp&#^{SH2Pw$en2)I^@a&v8h0pHoL73kckg=E&%m!94!EH03-qgU ztYAz^MOZ7;NuLbvYD;TTsdJEvE;!ekjd!%5`mO(Pc=?hHDeQX1XNBx`51C;A8t@7T zB+MtdtWf%i-{!!|CRzqrhxuI9kH^G5uj{34O1K~UpNc;CvAEvt7W#mnh7>Z4c{UaP z?X?;(CsW5eYMspfv{0bD(@5%?(LWG+zJIVG#gg=+6i=|yHIxko! z>Vn`FFd^ekmJIa03qp-FF+~Fd0~3!^Jv~le`^4Btz!mHcuE-a9uJ_c>K=|hQl7%ZJ zCBo|w^;@0!q{(=mlq>^n#-sE8^l)+HBhmn1$nHJFrgmRIR!VU~P3Hd?82D;bHD}|Q zzv;g1i~s(eenaSDOajg0Uakn}HD82#H9n`E4`#H!*lM-AH)I9Hj~MLM0q=!FXD!Oezsc|TLVVyiyn ziZ3H-)?4ct=n;>zDei)lcU z>_Iy|UT>gu50YEB_C&n3kaBR~xO(X|f`U8N{d3I2iyrlV_EOq>CQtr-!_C zJw9XwhRjnRP|`{p@52EjmuN^KlRRTn1xzbs&Odzacj?(i@Dh9e;el!t2{+K5EYh@j zVT4vICCA4eci9gxu{g)DZ>|jUrftM0vH4!h_gv?32R9>!KYoNU*vMqL==SKoQEvSp zE_eLP5A55m!fjvE%ps9}Lz)!Xy7UvXChA1$r}u9l50|2)fku2s&&X@`a!G=|zd`Vk@4i}I=h7MXBJ6j#lk{whM@Ml?F*(v+M( zfzJjA9Q6vl7i$sMAvXvyTWda`M5i)~bRaAsaM#tk-lt8J>vcq#MPkB(y{fM}KFELC z`dwY0L;pcsE;xH5%n0n`@2}TKZhWl$(?yH1AEwyFS~Rf<2}7Xbo_|qW49KzejU9TQ zj9~sz&0Zhk4qS@39xGjW&BEFa@{Hn=YmO+1^Sq+E!r*^WV!I6q3^;)IG8IP&Nq$#x z#;0CfrR$02|7gRh>9ka6b=YqKZ^GH zXSjV?lWh4QJ}X#V9ztVXdIpvJ@}JLYL$jqIy6!C{AELz@knM^)$<=-w-rlM?UZTc& zcW3VdAh zJZTCW6z`*Q)WHaH(Fy(g0AiY-V3HJ;8FYuM6v*fPylO-cdrQxbX1|Z64M)GPn~40f z-Sz-tL{1x>^v?~u27*FhgsUwsekOnJI3H%GFXUh>jCc+n-~Uh|Czf+)7}7T1E#8F+ zX#t5K>iwe1e|-`rty*T1c1c#+Y_nI@=JnK1mlnAOE}aj9{4SwBQ=lhO(85*vQBk?_Wnh7-l?d%jp7b%uQ4=ltd;Jv&UPgW zwf$GeU`_l6R4z+a`ndTa8Dyr5CF@8=2)E$lQU(ni1ng38tAptP{lw-4H-AHs&m}{% z(_2F*q|qTS*{G1TI<&rIwQm!jn@XmVU71GsfhVo3s|A`pM{a>-A|3AH0>2ZC;EsnHGq-<_(E{#M@CLxmf-!35jFS?pRw>Y1; z)w%I%fBM({{O|pG`*m5{h1x^V0(sgk%$6NZ=Z(1l;G&@TZ-t3kQvJ92T36VV7aatW zmSG5rS3r=G^H>q>f}RbCyr8YnN07G;CdKJgn?&^^KWNbhhH~p0{Vh`F0g+kcGj?uZ zfsimNCZ_eI12yV>{TvguL-@&@g8C~^U@-*tR8+R?CX!S*-tKbqJ#fD)v^$1BBgd%( zDy4hhtRg0XK891X`(ya51FVz?V+J_Gn!hxEgBU%IAGF{s%Nl~S z0mGd9*BoG`f{5YC&}YxbwBQIwgJ7?d^AJuD}H~ zRIgm2;zo)~M#|=ylYLk6`BxdJ(BV9ZtsE}Ym8(~-0ah;4s##;E3|Ip2(VTWCjIWQD zWWMZUIYzn zYiO##6XKXt#l^?_ZwCERF8;*m*yITUj#tbiT%g*AV?AG!%MSRT6eAnLiu?XA5K4SF zc;<<%K2Q*tfTrGcJ0hhzKBWCDj3G-8-~S9~s1KtcmT5BVjlN#?81-RAqMVTSAFCg3 zCp4M+sZz*1O(jV|B|m=wC}-8dST5`!usj_`d-nlF`{t8MA?%LFs| z(|ixwUK%uH%zzet&J~BRHE_VfYB&E>{dF>VKSe zffH)nj6m%mxSCQ(%Vqd0_<3h{g<@}oO8M#u0~)Twp25u;-tE*G;lMYhZSyQs2WlDgm>ZXV3S?Fv6`? zf@G}f5z#`=+q1q`#eYBt5hP89bU^=c^6*@hw?3hKl#rK?#HK07!mvK0X$Of|of41! z=Nx9)DOgOQe^IZXIbl)sK<5n(BDYKjxDsUj1!nK56IQ`9GSo%up;tP}W6BfZq5y3% z;sEj;bP}$UQ3i@c;IGqkhU6=PASda$)p!?@GBJpv>}+6KU&-^=I>4#-Qvg;&n%#}l zRoDyvMqLWOA|4x5#Uv;k!TRusL@KSHVuvp}P?B5OoWu-Cc$XDLk7)3beq?a~`g9p%_{!qYNtBM#TH3Qwqg(oLufQmSuP zP%vv|KXCO2mxKkaIKjzFX-23xuXtTohBrW;i=0%v%dWJ_ZW!6??l-F;lgIw(VWBE- zc7eA)HaP13pHI}muK%1l*4OhvJ=dnuOyrriMyxS#l_VQe4-MF!!<9JQAMfzXJx_j9 z0PD+gq4o`ODP4L%=xiWEw0vM?4Nsy%p>9F%in%x+D3kf(VE4NNg{qA87v<+~c1DaS zGBmP*XBQ1HWLMCZ6mUK;^Sqk{>5_rz#`W$bqR%fd>ReX5T;7&2PshN@i?VXcf@h=8 zb9i92_0zxFO1I^Zi1C~aaX+|F`8>VFoFOdFFmL#M=>=#labo&ze_LgeYyh2*RJm1U z{!@}byVQy&;V++&%0M(15C26^@lEybz!3jZlq#Or8LsH!^^v&qM&zkOFQ?jPP^i!7 z6mLK>jO`nV{r@^;*x2ChbvasW0EN1uq9PD65xmj-i$vXp?QoF3et&%|x?fs-ux$Ca zh~0dG4&1<%>0@vFX}8*;_T}po7-4eH^=2J!Pft$}Q$}LZR3VovaTyOJDu0)51`9Ag zPTbo7=B~$_akB7f7w+NwZ%&3_sQoHW+JVt>lN*>$3m}{`j1dmrGV$sJbrax4nE)LK z+SOtJ!iSO10p5W^_#T+-b)qw%#OVES^Bn4eSqX;q2FR_az*c(BagkPqR;$yuMlwCN zGhKSRx~yg^a>110aRlXC=JLiPfqSrbp^IQ*0&hbNxc$IzN?G3ohT?S5j0IDX>0nxwpAU+j3*rfV;ij&c+rjQSi7r*d5F51ShVj z2~Yr#89&FIF7W0Fd?Ht59NnlX6#!Z~R2sLlJU~{BMQckIP0CxQR<1)=|HF_au1L34 zgdc%kKtR`cn{u~mTKh`$aQDF z0ys^LtHGq9EZiU^mZ9b5z67Wy4Jk!*8elA}c(^}qZ789A1=88>w)PGV280%U@Gsqg3Y@5$f!F0JvHrwnp2Zf?aUe~v5&|((wM2^Ea~kMZUf#(&)xU;W3cdhoON^sNK3!ZBcBLe%S;Ni$4)d>3Vs3LNQ=K%`{GgkFL+VhGtnGlD7Ak<1e+vkROP+A!>w%xU;DO!Rdy&3wJ;I)&4&bt zLdQ`1D~Xt<-$b-JB%Lo}Mp1BcWYE+g1aYtnFc;mH$m^-a>K=a)K<_V>etvcH!<%_Y zk$F7N1rlxxqHK@BvQ!Prt;_`$y0kw%LN}2kko7fxb1s%;$nXi!D3bYElYT!%Gz@HSOTol~ z$ zx>?6edKyJk@3aG>U1ljMh46{cB3k+!7ZKeQE38*~onhDa%yPQ4{|}Fb{_hx(8wu@f zeiT}ou;6cb1z%&VpX40&N1?h|SP%nw{#Wu4q4}-@EufmbL1hAf0fSzwDH6L0*^lQ4 z;VRUGAXV6-HnUKWX^3b|>TX+apE#RN!?FMAg6b-;g5tMk6VG}&>p6lDwi&A^-z@7* zycw1O7pOv&{(8QHp)PW2yB;A8-?dd5Y=Z5t{b}$PxlgnJQAR2&*G6icRq6Mj)Mh8=w%s%VLp;0`4q#GU-uz|2igk z`lm_=y*@YVHaOnKa#RmR3jjZ^z%7Eexn`XJmtn1^fv;g|Et&5xq|o}NRxhK$({2EslANFbvy6r8+2pu|3q^kz`gX%)EV2G#&!**!%-Q?Z~KDTMO3=F3^QuvvoD zw=tkB*7J$#j~!^ckbl)GU`513XIQo0auKG1pao0BYS~6H0WsJGl+ef|ScF_Eea@ZS+DU z)5~>AP(Hol{T9u0?Gb_wOndaktJ(z{kBvB)$WW`1GCh+;0zu0!^Va+p>>3@9(RdF? z1tqC_9Yp$7{e!*TR7VjFfgbVXK9@;S@$vD1+eBz2uFiwnVJ_>?aJpe&LKDz@Aj=@z zhyCH2tZpG+MD4h{zxd~?WpGIqh&*Tzr8*TK7(J=Q-`5ZG2*rVu6GbW70+3CInZOh= zd3#Dtx0|KHR-vD9ZEcMM7qWie*t(7dS+D+VhZ(aj=OWM0aZ6l``P;abY2S{|nP3VS zH2fzv4FQOlYj0PJvCb+m2`KpNeEWD;V@5Is_cy_RmXZ)~+>9q4O0}bf@V~N=_<#Su zXbI!yZwGtJi=Atf-R0@m^U#oAx|VHFR$I;u-Owu zYG`N}fyd}iH16vq^6}$G(C&2o&-;Q%)HLZ87L!0%60+)Kq@`&B<3dG|pI+|}OeRn$ z$H&D5BP7Hk# zhXpW$5HTsZdQm-gr%Gmk&L@j~CJphTfLX7jnN5OAbii(4y~j0w0yl8H0UhGDoYs?4 zOkvXp1iijlI`kmWW7W3xk;muh0qqSwhXyzB84ya5X;&k7sfo!p0N5K&CA&@nwo#FL zFb_Uyw)@^sxU5%g=6P%a#?cW#-Foyy5=Wlnzy6%zeYeYl3u^>SFR2KE=bMX>C4f-} zZi2}WZuou;Xdtj4y!w2!lFlECKIDRHeyh_tVwZbU=XF`7Y=H6p5)VQFT^=rdI(g?w zFb3I3O294#y?Jj4J-t2|wwl0tBxfw9B6`wGV|6J%;JLWfVLCQx`#fGUhhS1hU+O!` zR)exB=_zqki8?NF$jp;uZnRcTP@h03HqVQ_00efnX3xN|?9VB$u(oE!Qw|`4du-7M zN}$90)BEvmI#@iP4?Z+mm4yyX7xQOFBuB3lpgzx(<<&L_`dbdF2HD1VtY+K#f1~Tk ztoO$BR&*o^@8&0rfL;LTEX<-mx3n_`fN$ce+I%tbK2!?qi4$Q&bP~WqU$2R|>H~4o zvRjb;;PTEItRsycDA-bCY{b83F$e16OE-lNpd$cYt5JMv0l}N*IC~ok)bN-6ei6Wl znX^65`T>h#H$MUNe1W6y`tMH_bDlR{J&&1vrK&TgDlhoSg5J}tbY~*=>{ThdI5rpUO<~7 zELiLRz1*S2kIyuq{?7M&UGOY0qw)>mb1||RY~9D0=ymI{oEIeT(CP9#sdk)a zd~0#S^Y$w&w*-E|#ewUOA+yQYG?F=DPC^2t-(kKZ>lXt?|2Vw?w>k#Fh-VL$*xyuV z*Q~Q4KUXRJ(&{ZNN?fP&f*E4ekpY9YPHI#CLU0F^m8grq0?%$f(?E{>DHR?_PHa&? z^Y6h%#QECeF)+Z#s!}i%fGHBX1Gixd%m@qRysN{7bKIab(7yY|Kg1gt){_(8!;l6X zAc28Pz+{P9aVH8CNXed_%|Y4L6<~OTZvtHTP-~@ubFc&SAVZn03xi}4A5gim41#ne zpME-kCS)2JjcHbMmzOct(|YIDzv)|1-nKcpb9)*VmKJKm6j_S-7^oTNX=Lo1*Ydst z|Md0ISEWogpL~@QbW$Q&sd)njREPPX=mSo6_T$l| zzGq>?CKwRrfk@msn3(6CF@D2rbC`D>eO;v|4j&MiQEO7;dNg|+fgbF;K#3jAm=Eh+ zKJgucBFpd=;u} zh$c+d&)r~|PK89Mf%53Saf+0gn06l+6d}(MA!E4qVNL7I6!q%s@kf=8L^$p@f<;nk zi>U($fZfDtU}7X)t98r+kv9LDMox(*Fi+If;;;IxKm6laPMbw1Hja>nxu$`gGW z5{c-8KuFuhJJIw94k9^6*hEUcPM2!XDT>@0CDr&jPw)u(g$@{1YL>mCAec0DEx3sx zQUF4Y?*;dIdS;hoo-g4;Pol&x;6TT94~*N-2S5jjtHs#=pq_=8_tSmHUJKNxVrv&? z{Q4CvEKp$uK6_LZe>a^)W6e(|WgYSCYAW6T>jb1sGM$qu7 zIznuF<@O*;0ZxrwB2KthiZc!f4p|p82rN27j{Pd=FDH<^ac7hE51Lm|xzNEVp1;M--~AbEB~eT`s{ReHZ%xzs|fLW&XD2S6>_WSvcrXeqo32lsGRRFXDxf23?p|v zos)c9b9~zEd)B+5Un4JE?d(gm>z>ZN*+0dt7+MX0b!`Y^9t0dUD#@ zc{b9#(p-C=5*y8?p3XfFb&=oJ8ufY8*JD?=a8y1>jF{XkE36{k^+Y@_pO6+wG$xRm zX>rS>HQ$Zw1TGm|pE#)EE_2zixNMyfH-)zEmA11aohWpf!-M5d`qz*2-=whd`UEFq zzHP*xh6er_S2}TopnkS3yXA!E^z+n)v0=p; z1QT%ercB#gK;Zg?Bi`>GssL6gHwp{jEcNa!dtV<{1=PRA%MHtBX9*iYoM#0=Gp|;lq*^mZj-;0XgZ;J6VMKwZ; zJ(|yhoroXYx^w4I~6%`a6&*@#rV!G^js_NOu1 zi(A_Vpm|-~8D$>%+L0%NgM)Ds+RveI<8>ald}V=Asu+}~xrfj}*l#2}$pvIG`VK`T z=JwIA1HDmCXRof;p5KDS3~H8xNfS=szijfRVRogzTqJkNuDLhXB^mj7Dz3$y!_c!f zQj(+BC~8%uDszo@gyx~}BRo>7b*xpHT}E;AT+s8W;oHfP^;3G~UmOgy6@x?EEc@4~ z4n%LBg}hiG(Cr-l$4OmngLTyCd+o(m;-`?@!KP)>Il(B4m}z)FkZA$_I6T-fyG0cz ztbUG>d*x%i`Z6oG>d7Q=JHe6eyTjJCMGMp{L!j^e(a*MhdP1evhgtr{o7%w(RE~hE z_xv67<|6Y;FHX--@{EE7J_SLIMG~u>EtY1|hdZdBw~&_%QyA5+B{s!gF`}%uxE=!t8MD-z1O%Z4AS(*ddf3(^D659bd5h4>*Hz8wpOu0Yt70&eA~#J zD$kc2JzBWZrdL13i_>rpB>L0x;Hbk`y`D^VK{?y3#5R3>k5sl+d99ta_O}e4`Q6Wb z>yvC6ytG18#`$+_cwe@Ym`8hpK-UX%^^9m4?F_zZ| zfHJ;jGkq}|FHt5IMk_gHwu$(BcJ zB9S6uX?vgZsce(Oam#fsV3v!4R5ZVn9c`<9oB2LnKF=T8lSy zHgf8AE&G)-PDfjXBNVp@?H>P>YA8aXrnK#Z*Ntjk-aM*HM2@Ym&a6Ud1ueN%8J75hE|Zc`Ec>g%MBxMB-~qX}G8-e60OCh?>PK#P4^0@XuLXqzgZ+OS#6XN_dEWz?qU}EitVEz z^_CWsq#pOk?-%vN*LZZ+XWcz^)5C7lbqsR#Oh1>Va6;bgXpx|riH(gj=xR`YvYR(2 zZ5b1%OUb>zV2@0!HtavQwVF~FUZb_rZr}4AqUyBt#K|Xyw334LVY6Vt`l|D%SC`u< zMH*}RIS~Ggbc%kh2a_dYeC!;d1p-@C#Yf=IaN2EY|VxsD_vm zul&M6`7-%$St6mP1|mQDPqL2lYaSZsJ)yhNt|fwBC%&MZpHp1UFF6%WKJKe7bDNHd zOA49@uQoKZ0jm0qxwC|S=;gMQ$n=?(Q<7vr#mPH>?{y!#}() z4EclwZcWBa!zq?ww4RZzX)2Mpy~fD95@(m6>kAi^y|wczy$lGViP|wWrY*$u-6=H@ z3j^fH^OPeIgG#w6YH=1hh|V?7w^?Q-2As(w*AKgTi%zcEekOOg?$S*ci)+iA&z~_@ ziG5?TXG}j&xx0m>qE=@#@05QADQW70WfDA{ihsR7XguW;d-~aMMMvxa>JAohqN->& zU-6`NV<6nDL(=}L-<4aJIe{41ne|+UBKER^ie0xH)5d$trB4UWKDSLSZE3wyv0d|4 zbJeHUS2)NqumL=G^e9UaW*UbX<_4i}&-;Pz0+8uZFa|DmC^=0m+d#dT0uJfpvV??I* z>aD$La!1ad!>TDTB$+`7^>pkdSatbuoBuNWbdO`Yge2virV!5-^O@(Fax2q=S!7me z{`O#i#~M;lgvN(S!TpUM;+1+?%fsVY;6qj_N80(}1l~ziv)Jd5cl=ta+E%r@M%N?N zoC!bvWu1nUh%9&de-j$~F9fLn`z!sotdRPP!iV5F2LQCI3}m@J9wNmJE)*6?aXLXW zC@2UKYA_(CKntIL9e!I=)vW#xAKD|N9z2$%=#J!cb5&18z(Es}1QJzEFEo@DX#+tG zAe&Zt`_T;?CsGr1$DB3)YPiseg*8H(2$bCG&<#sUN>CO?>%M)!Opr5Q#Z`uNopEYI z(%)}YYY5~9iOhvb&AML#Qy>7_;N$QL5_QZ0y&|vSZpTF47PXa z&gJ+C@$vDzQj~AJ&DyttZ~>Qde8sCLq@1ddeEsAqN%^K=TDcvTt(@HIiLxB|N8@6g zX~Yvb>FMc6YqWc;@4ak>1V{@m6a17r&x|I!Zsjzuq24jWc|6FBmaHyPx~2dYBMj5zNN&h~ocD=K=?iK*=W)GC;=zPPW{_K&#Q zIL2-+KAF3SbdxoxM^wS1DOHPZ*g&l`_Vt~BjPFi0lz9-J@w~Bd6NNTb*MpL-M9$5H zvmf!J^27sTc^lb(RNx-CUQ}d$affV9ku{tIzc7U98yc$mboru32-U&}Z&D)mYI#gP z&eb^T4X?#4$7A^rB`?4O>Md*ThQ5ce4F?6b*s}n)v z<0v=F140ORJjbtt&bL_%GZ!sq@|PF?{#re0o5_%=96ERmRqu(YWp@R`! zhE9cfHd{T!6J`^8{lg{5%}ZbqFwDkVJu?RTolm^aRSzl7e#v=}H_a^# zBgc80rIC3|jA@++(l3<5KN*%1tsaKc?qVLCDJ0u-{1Lw;ZIbl=*d z&^18XJi5?efW67Oo)`F9wiWAT2xQ;{}gRq^`Mo z^(wmQSZ>iGR_olRcM|h+QZ#z2f5$@Dfi*1*N#zYI%)7Ak&;BwpHI0Bwn##K`y7qgv zS00>KUR+l;LOuQVf^50l7V+^zf34_erL~KKeWJkYuiNtpw#(+b>#+2mrCw#@C+d9e zz7voP%T3K`1;v-a&{$qeXzE|uEK*F^Kv@jm8L6o(R!eXbT8ux9QSdI}_vbD>%zG|foI_vou&JPt1)pn0{rLuM&MwECs_*QRE`RI}4_u))1K3{;y`W%5u za2tb@?pUe~UVqw`nvD5TKXkrcfY$0yPa}>W!SsRvmh!gf6K;BYa3+3Nf~O|w0`2CD zmfpLrv1Wm{tYjWCb(QU(UEH%2KfJ@Q?~Rmy^_PdyHY`!VlWp)SQuuhaOmj>!<^S*t z=3m)LzsI?XMV4UHbJkXzcoMn5`$Cs+_lAOT7IUVHcSwiS#z~;LE9$sd9pga;$+T ztT8t$^tZ&1pbllzA?04%gOmFtA&mkvy{a zL~>6CV*ji=Lw7sj6#1OC_iqq>*QWJjvX&}R%np%0tVo&^D#hj+#fDwL)?Dlc1C;+B zd1JevOiWChOW78&=5PoBwImS0m|>T34nD$SloSoipIqhW=<&@*kW zr?7=s1)uBr;V1ly;@GkpOX)?=QnL;D8 zk^3vxh%Z8q!ENE{ztmo+_mSIW3F?i{$Bt`_uT>Ku52g!$J|lQ|ARuU~ayaj5Kc@X| z=eb>qneQ}|O1$xn9>ix!s#=KC8Ah0qRnU$>7Nh=*=tTQQi(e;n#Px2OsB%;)6tABg zJG91Ol3PG*WzernHBql-3OPG? z=sbpo4tQk_de~R^AHaojH*eNFobqk0l{T>mrnqch@vYT1;uK0DR4ec?njrabn+IoI z*alPG?8nY8K7M5>zERQvxEcUL2JauSUjFeHHzim+aRjToEmvK+Is=l@L*R&u}t zM(X5XbvJ<$ya8w6Gq+E$M&O+{vtw|DNQ}dRG&U7zs~n+umdM;Waj?+Uj{b8r+De`G z+7jd)gA|e9L(5AQpn~X^XS<{+xndd`j{qE4U;?Ew5asaXUQF|SuU-|9K2_X_d5hTz zeg{c^&ID99*rB0uvD3AU z`v?oH0Zesi*II6Q3~L%ZjeOHqHOGUYnQrg0IXNd~5OD+ZxUTX1(iJOJ*B^@{K*r z31{Xm$H4;MH&Q$bj7oz?r(=HB`BweDd0Z-fL!E z7nG@t8gBR8RR6NGzSAGkHq%6N|JVCzQQl@4);bXP*1s(O_<03R5~sp)a%8Mlwk7$b zpWCT>ct8UJNl4-Cmk^6W$@;$gKHc(iQoCGau`Tu;D5S=*-cG6s{Ekk!j z`wE;MMP{Hz6Jq{02)r~^XcRip6Z9%q9jJB&u0hB9hjm|}(Ipi8Il9t!|L1>5K@zC{ zl+@(6I6s=w;3fYUM#Jwv*MEh~Jy$+?FCWb8p0#tRbbaujfbw8CPE0@3Pqn94`9(sv zzY17>^SNjQFxz9Ei|Oe!8y0vdZLbChm_)Rse-1q_f#5Mw=eYoaCK3`71Vj&-zm$rK zin@9)uCGY1IF;8*;=!9>!L(bRa(2Zb<>2@5o>>X=^0VO5t!K4+1WsPhqVi^@DR2N z?rCZsh8-3*jU%+qjSKBhVAUkGbrY_ew|9@d(@(SOZ7l-(=DgSmZZ72~Q7GnY2^+ zm9E4pmh~Dd`uf46NNaBz`jd>dnh%GHu3bB#A-SLI;KyZO6Yu*K?L@Xz*`kfqHfsP)3a>a;q}t(Q)G$ew+AlR#!wFv}SxZN$p69Zk!FFy(5nPFRhY zr2M2{gL34Bh>5{!flE}eq^1XI-l{0;)>(KfELXPv!z5b7rddW`pw1I`2XJvGR(XsL zR1Ah~Dl!8AHM(Mr?Tvz%air4o=PqW)ig&RRcq~u(wuo~>P$AsxShRm?KnK(o<_>Y0 zS2v)tbTOQ`xro#@S&zQ@`_u3^g^X2y9AVd$BJ6V?CVstVy;Pr)cYK6XSfc}5RIldT zEx6mKXQ1UYSi9TGzc_n~63Lu@R1Z`YGhq34P1dLGJIio2_grU3A&x$q$SS|qEXA;t z6s>QBqU?&Qr6t+!IxS;(OH3Jr_Y2JUNTm(8E=?k4Hk1(f6PM z!H@2hr)M1!KhOHW%%r~NH(U9BsIw=U}NvzL@pA-h!~gLDb+lzOKN zqlrG`dwa)}Wo4TIQerX93hOja)yB`y0L?GobRDhnV4#*^8?X3y>tA77zsWen5B;S363sJW)uD>jQFm^ zCN_cz=!V0C8^8(bm{<4Xz(#^2ZI{PrH^<=}X3NM>jSX<7X4YPCtO`E#kSnd(wz~QJ z#fu5=3COQ%GQP2o! zLu_L5QhKgm3X#NpTB41%MLuzm*mo>XI3)b)YAS&vb(Q4*OjrI-9el#t@^S|A{ulgZ d4Qn=9#rCCv6rSdoHi)mV8S9(VZc|-i{tupGWW)df diff --git a/tests/integration/reports/screenshots/desktop-chromium-synthetic-returned.png b/tests/integration/reports/screenshots/desktop-chromium-synthetic-returned.png deleted file mode 100644 index 05e6c9316f196d87f5b2e340a7e434dd06e720b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14949 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 D*56+< diff --git a/tests/integration/reports/screenshots/desktop-webkit-synthetic-admission-blocked.png b/tests/integration/reports/screenshots/desktop-webkit-synthetic-admission-blocked.png deleted file mode 100644 index 361354f7e248dbe4174bf46b5fd1ac2db531b510..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25933 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
    Wx64lXF)K3KsbJ5)`$}`zv%p(g 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 Y{_GPL-K)(N3%bh0)78&qol`;+02!HcR{#J2 diff --git a/tests/integration/reports/screenshots/desktop-webkit-synthetic-passkey-intro.png b/tests/integration/reports/screenshots/desktop-webkit-synthetic-passkey-intro.png deleted file mode 100644 index 5bf9e65138157c67b8ca01808b7dc03f97573800..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28549 zcmeFZRa9I-^XQ8V1PJcI-3jjQt^))~@Zb`HJ0!S6bl;w315D=pg5RmoIP=QYr z*C*ZrzYyJZm1GgVk5cRb|H!{JRI$;}Kwty@Mngc1v_}BJivT}lzz^_fE+PUl@EZ~S zSuWE5{uVJh7x{nxjjRVRC?1;?fPf&4pdv4$=Yx2Zh2G`~hCR)li`%^5Rp7P$hKZNY zuls^6pF#JxwhC?Gog*P#QXU!+dPdA|+#(seJQaHbYd(&yc3XoZOQ^3^a)7$~5@e z3~hM-{>)`ZRLEy1^Zr*VglfckL-$8`Y-|d!Y|FshncKxp^bPvW{WeP|XhU+@}sqTxtDdZeJn_;`)F_AY5OhCQ4te|3|3>S7GE4*;#Y#+Lq9-0PP z;`3oXEy8%2(QAr-joe5f8AXG-Pj5C72aJ1sgrgSv+RjJGQLMz*`TlhS94}2wCzCvB zl_)`+nY#ZDVMOPAM99o3ri?ylBL(O-w-LH}ld`tIG))8^E(RnI^FPC;4n-$I??p@^ zwUK7Peg5&^q+Bp@TgaI+%hGi53`5jhAE@BNr*TChpu;C%#2qBUP@r2Y0ZN8Wpkuya z_>~*E+&hgf^U}-X$A~k$*7vmBdP&L!>F-s<1<0Iu|FamjNODBzyjx4M34&Yw%KpI9 zrE2DObTa3f2}NE`zw>S#_g6j?zed9UmC-dW|3RqK9ZO^}m7VYCa|oyyH8d|u9+J!T zs!-i5JpMnjL#krVLdPRCB4U*h{ElNFq4zZSL`$#n)&yAPEuY7j#mf9vev*_7e@R@jpR3F=$>kLyr51dqC4xceF;au{V(s&b2hYlKe z$FcM7n8rfeTaP(eD=QOFW5U%A|pEm}J}ivockCzW*kT zN&B9o8b|8kv};5PogxsQU!-UO$x=E(lK||yxP%6p%SZk3_rvqzp*vQf6Xw4OzP(|f z^4raG3w=$5K}V?-s;v03Zd`V+JO^G~v3O{I6eyeRIZEf=$Mi)erghe53i;|iC;yoo z|D0YQq=qqbaeJ~f_)4yT$msEBH1|ylvi+Es>Hj0oB>y_T_U&y?Ig$(kLGT7A;f96d zAD2!w_^?Fb-`-s`x5_hzniGPn)@nWq+qgJWZbGu@;j?6m3k~1iudo`ia*7vYmkeHD1B5QhhvA2$*U6JRDl0;?u)xz46`xxbJ<-zSv zj?{2EkJWI4-v@X<2UT;gAicR7!YTXLi>{s0#ad52c3i)U$WVY)%@z0{1622$@d18NpYG?_wY#-m|EWlJ_0NC5pmLO#p{6!@Sv!Z#*fTP57@3c~ zy>Pd(5_lO5A7VNOD1r_@WpalJxr$t{;SY(9(A$l)5D-KekUYe6-<>QW6G=cwIr*`Y zff)yd=0$@>L`1wWt&%k~!0V<$Nx)!0oJpUhqu~BOonP z)^-?U1^1^?I10g9$LJXWEjO)Z{*6vX*KT1j&zG4*Y~Qo0=3i&TkmN|vhl@Z`NwPod z-ODD1vz|-9WnDTD#3aw4JSvYKj-<0XVm%Brx=GKSBJ^FU=c<=LD{O$u->FWn-+5IY zeX5DED+<22m>FGRv7o&y0Y?Ku49Nqu(w-&FebHSqU~#xJ(5-3l(Yfnm2B?F@6zqNKG8q`6VE2tTn3;-Z!;*sXJxjsV@!1pOe0=Kab* z8l`Y&TKQJnB=-gDNM}k%+6J`spL)Smq;X6lDMap)Zy3;tz|fDOD* zJaeux|4KL$T-O6LLl}KGPgV;r)K8$zKz1Ta06#}^C4rM6&?(*sUT6b2QsTYy(BTSS zn;JNEBpdoU;Dw;T)BUaEAfQ(KZ;2svI@BgssX(D|AK>YYH+D$yiJVrFPWqNu$@6bZ zhyzbUU-Bcud-&gB{C73}D^&m88~@c*|5dpEJvaV)ivQOb`L9j&|4Y-*JiEW73#4pL zfhKsc!7CEaGAfFt^PVbWx9vyHY=_G{t<14H50(Z&ht~ zE7w;dmzENtM9(y=wG?ODFs#&9EPhjGQG<%oN$E~h0umDF0c#6J7CCA*;rVnE-iFoR zi~>Ac_bl$~kNOYDAji!vXHD;R}>D8Vm z|GkUqx#uMcq00WpKDk5*Eq(?!O9GX60trPV7;9YjBWSUl=2KwHt({FK^CY|X_jA)< z&;kzcYZcLYE&EuCsZS*71J;SAl+ZvW;(-(PYrC(;&`3_iC5EM}ycoPC2)j$FzSc7F z-lKJ@n7;=cCZ;qg4Gj{cYw>9e+b1t;Wc)x(atW&ovY)BtT3o%Bn^y17E-O!a4Mq7| z<~ME7`9r&YwRWNtI~IUYY2FRy#KyJjA^JdLXq{>mgBzcy$TgprOL|@@oCGq2vAa^T z3fErWX&@!XN(XBVZmQOnW_$pBzaRLe4vTlZ3_ci3m*i{<8c7mJIC$hip@nR+s^mT~ zzg1o5nMe-r>U^I+VaB0t6_?m?{{i|40J$;+OBo9HGH8VFYSqEO|{8@m1>4D=AYz7iEb2c`#Tlo|D*x^%f z7j~d%^H6)8@NhLqJ%aJ%_wK4;iv)e`c4+MJNC;is2C4797!_ST2!Y3~2?h#SaS#zPdvK!g* z3dsoXopD0NQXY>de$(~ZQ)X(xYxci>uEzexKCAsxJ=oe^i5X3pKNU8;X`9-hIay-P5f8n%?Oqa$JVu^wbH|!tygggu1=tY+z$21MVb0eV zvwJ$2W!$(4!6bn=Gi%=|8kfMbO#x{lDEVZOos8Un& zS9{|9AyVqc>xpVme1DiawNV&61Djb@XAXMI^udI+j{APdUdoqPC+UofCY5i9+0Cz_I9Lb;ARds9^{`_ekqsWEyU19h#_@x}OpoTu zaYtm@xn0*JyZj?|_)UMjw3F^IgFozuz6uPhx2WNsAZi`aW+^j&SY`oqdBIXq%`)1< z$%MiD-`)&`fs0@Crsoy*Yfbs`oeQ7cnK8EvS1&6w*3>$8t5^@R$km^lEj7sL7gFS{ zGJfI-<5(+n@x@I|7&Td5EMtftB5^l;>lK5 z%~z{W(qLe*G%mk-HKIS%*x88g-6g$%u5hIjV+YQ}@n}rXCA>@FT7B&KC5a}#2Js$2 zb2W4Id)V+dV%hz*P4N)~0ipkFjgj$m@A?i!yi=d()l<4rgJvs;9KyQy zELL9BX8yPtZFv7J8@#gPjlQXAzPbFhwSIv)6eCnA$1eQbg(AZ(*zbJL0#z=ZiKR{v z!Y5RrRuYronS$B@ljO;Ez}O` zU}qle2EwwP6t7!-q(20w648fm3PTIUuw(mOIN zR`77PJ^dJWSy^{Jj_(w%UG5FDOIbZFmhBNiMd$w#B4?htFLIOsx@z{Zxp}CsRXf{= z-U=bndamRmvU92**_FWjcH?)Jbl~OL68L*y@`tWqYVsgnpJYJ&_@N}M83J>p-X+#F zxH5Ic?H*v9+AsgPRPf)|qL+!a@qr!A5=<3TUs(||GkHDZY%Z1lZXVc%m%CP$G)Fhq zd%w25cu&an8%iZlwym0j7Kp2PI+yb#&K3-a%cJC^ES%pFD4JhbPKIS{g~R!uGR-sK zJ8aYOf5<-rh}^*IRe^8DP+$*zB&m~uBfMgO)TvVz82#hufcD?~i{cE&d7oGj73jbN zcByaxNC8kn5g!?HIJL6|mipH;4+Ksi|J%g>_a2*y-Us=ZPY5)jC3(&s<=}hl{VQYpqSK`vNueMv*Q#uBtNu7r zX2GAKs}WEDZ4Wc5g;^v@T%k3t2Kf)9Z)bV0oDOOQ@gCMqX;NOdx;fy|Y}}tlN>LEp ze@<&-`0BfzK}ira_r^QiyKRH=D3D?Rn$^8ml0(&TQN-2vM(m``y^;<(;u^&F)o;HP zYW$i2x-S#}J1}!Cxh^+@Ir!WTnXOz-n?0>;PHZ;I&)d1h%JH4sbf}6X=!nbU@=>K`xsvNIyjqr5=5TDI{-x;`EwD<#yD&Vd}2)3C6VqL~qv0%D-boIhD`E1YE87 zpUgWo!mbt@6EBD6frG@#mUv8f=d1gItxNS!)HO%5dt*cMP?UwmR1=qG>BXb9NNOrg z$=l5)n91s$fi}ZJRPhqY@iPo;kON|td_EgS@J$ajl7{w-SAYZkML6E<8}H@nUv#m( zC*ZYJzHDgRY1ylGhlIk8`{k2_b+xINun%Ec0qX>aIyHOt*slX!wHfXd1fhB2TZ?5 zw2KM5UwxudQ$MJv)im_o`m!S&UW_IBh^FQH8{C~A`%-j(r`Bd9rijODe4=CCGPcj^ zxbx}Jj!!D}jn^OUz`F}+W{#|+vEavZt36>V!-vdF5AmyctI%R3B+7cVm(A7>rm$C% z*pga-`(P!C5AD_!PY*j%^qsx$7wYWk6E+6guUE*af^OEDvarWA^T2mv&IkR46wHCo z-zNFYwXW!|P>Mz1g*oJg4NDkc&zbr=-!rdIu|Di+1;wMUnXZ~3$AAbOZ$#LKteY<)N z3kG;WcN_czI$3XRr3$zey27;jNpL#lj794*luI&QaPTX!!OEg~t`y~|br^jL=T_dz$jQ6HBi8 z%=hMD)N^EB^L7RC-N1l}SDqfP2h`l3&f(dBF?DOKV73Dk7OqFP)#1kZadN6Q0{ir7IsO0^j2~H8jxBA2&K^KkcOddh^cQqTPKYW)zt^EVN*&+y)-g(6tVa z;i;+*8YzU&G?ZqTRHt2iddRzXB(IyBp7YQ+Z@pU$ybhlpmUW*m&U7L34&J1vwvXk1 zSb5kM8jwMX!YT^x4V@Iz2u5QWvECpO<$1yBqDWhW`DFn?9G(B9Z~^f{#^eC^t4Wz! zOVKN#&RdPerzOW}T(rFvHWhpENZ85lgHRf=I#iB#0j2&Lw4QME{Go! zfGwnPCc_N&4(8&5Mczn^_dsrn;NyhX81k^3s(!};PM4dtABgIgR`A^vRP4$0BA=v> z{3{baguzZ%g-%9ExLZCK2Z?-g$e`_8*nFW4xoSK=di*PCLee6Am$F=tl(MMkpRi>W z20OZ&T_q{eb#BF&qS1xQh6Of3>Tw}iEIO2?RJ9~DoRgY>6aUrN7wj6kXnQ{4n(B(N zcvvU@P3NNZai`DQj>nfvWylBryPoHeFJQkPOZ#{ zJC!GS{OD1ZLM>TW=!2xqY>^{x`?_-LHPh% zTIBE3)HAfnc)O5x+<03N_`z%eRH0I*gLxI6=gIF);qy1NCL_v*3PNzBcGO{gN)1Sa zRWcI2@i+8wb-7&okVb8>a6P1r@HYM;IY0DR+J@4R7QdGbDRRx5Mk|uDCvi<|kup;< zSl>)?1(OyMOEqYELH*q&4Zi8jJSrNL6jPNiqSZ5!BuXiB-1{Ast-qjq#Szj~2&ZyBmSpdnvlxSldg@|RS!o&AQsCq$iWmjTmUE0ug|s;L@& zNtyXQD=6{Gh!|ZoRtzPK+F#Lst!~P9qo#7nb|7;;;wRuXe00m);DDrkyDQn3f)QGS zlqfy*S~pdd_(#Aq_`LL7ekh`dLqdKIe!HG4KF3wq=al@E1<{~DQGRsViYR$M3#gLR zolfghvG`VmrNl|=d4uRlxm`aI z5EX}tblqC!gd4sxfoe=xPS|sj6SM@rU-;LJ{ZLNXsLcL&svf4Ca#TKhQ7(AbDh5Ci zvCQU$o}T_)aw_YH)H7+_N%{gd9RE$at;sjH`6;BV(X`l@&YVJ*g}PR^Hx|LvKu`au zMAB<0t^&r9rApehj-4R8kiZv(51O-t-`qT(zcod>laDwfB#V-7He$I{Vz|EX6skc$oaXGX|!a_|wDr)R>NxFHh8P$Ya9v1OGm{)^Xvv z7|OzTF_g&^+1s1C$|+k149iu+$qCl)XM&KgxadghUASthQ=o+zFv0WAp`%gmJg#Ce z3yu&cFje8tN9bm_(b60!W>)#RikL_tNKod`;&1PdLY(E~uQ-8Tb0vD!sl+P^f5I{3Hv2lO4$_LlZ{a`(RVgJB~ad3*7WkgqH<%!*sa zpq(#^K(%Gxce>L_>!p;z0BN?*?IY4SVBwH%cXB5 znP*-$QIi%a}I*8AU@HAPn zqqLxV5kUZc&-?Thu!a^*aujs|HgVMkOFjeB7IrtkRFFd&^La3!P8X>bGKSY=Y&VBp zT91g8w2H{2eLJZ8VduPH5gL|ZyuL8oX|zeTfYQng?7#07e>TU_YMrY=TUQ~V0c;5N z=n*lCP6^4@FKbPatrQ=Y#d3Eu9zsDB2kN$@H`r)&t_CI7IzHYs0)H45MI_&LY`MSC zG;#Ss`aJEucvc5<63dC2rS?kywSyGOV%ZKjgeCECeWhz|tE>GdArGsbQSlKhDAnWwsMS^&@U*R0K3jj6`A+#9S&)| ztiOBnzE(tk5YkSv5k0EMZ{9bkU^;EEv|c(feS7dve)3ZLkUbn0o>jL2${O?!!znO+ zxp4-$*Q~g<4&I7it0O~}+kQokTQDDh81PhguI@$bME&}-_D_F@W;ncA>*ES?tEl-B zUXrQI{T?kz>s;LeTyGTPT$trCt}-mqD<;}zCYQ`|ZP#oTdCf;EA|Mn>_CljXg@SZz z;Ca@(8g2MN(KX@rw&;wz{rWoWE8*_1l3cmUs-+!STY-Am`&AXufw4!x?STPlkPJoK zstv;%a`wq&G9_+1dxd~I@V0lz0@I9deZv)Rm0E@b-R%5?^8Lv6 z3JK9k9I)Hoj+lvj8q|%^9PvCX(4c-Sy$Wqg$<**s3XNlW>tVH~+u>Dmf=1k(wZfN| zm~YZ5;zh$YoT!jHJ8oZ%e2sdt@y=DdD|f2%b(y9YP1rL^5A8dVS2=ORa-W)lEfQJI z(~vZ>F6e2gHi&S4nidqot*8IcoL!z|Z6=uqr*@di=iT#-#5MM3-oUSUe?4 zRpb-inYK6EL{c>OLo#NCcvmHIzg<7nx<#kT}Y@9E$=2y3@!MO4LI!kw>?RTRdJOsh75h z%75mEGI=*QBu%d3BojW_Y zO5phH>daepk6&Ncj%{G@Hm<``ThUiq`gUnw;O0$2L4cF5|E2iVnl}XJh2UNOy{ z2bbR1rMD~6RLuVIVIEg|;&qe`nzm{QzvjJ=hRAYp&M_eh*hJg1h(F@*xQl7vFR?5o z=MQT^7s1-9-$!{D_b4Eo)yep*US31*M6(th7jyS^3AtR$ONue?Y}38+UxgrRxJ`55 z%9#q63+i~revBqw8x$$sXj`n&nAbFJD%lNTmav}P*gIfDK7P80kdkXG2T$lFUVHNa zXY9!7R7&mV?Pz{15k}P@dOLvlnKywH8-g*f7fdyf=+U&-i~6Pa(y(EKyS)Z9_*hbm z+^+#m_0HG7UI&evH+({53y4DbZ8Wtl!;@U!0d@AQ9qQlFNc)S#PIH64T)8ui6}Wfg zbYw{8U*iJRBOqO=U?Plw;Y3iK2njnhi!EC)3l0%c0f_j2eG}8G2d&%tmqm>LKwJd7 zY&v*wpbS@=p*W^Q<6lxFBG4YP^f@6MVuHg%=y>$Sokigc6B7t%ks?4!;Aw>EY`{TS zx^6%9FNGHY=sv=@xB`GMyYy&*pcRo;rY8J(WT0ZykZo3YSBf!!7R!7VJXC?_Nkf2& z5%{%|0JzDm53~sGn<@swpGSb7u(`f5aMD>S3xv@AUkydwKB?*cxU~mJe+EqKpdb(_k&Es=y=19#nEC zT)ZlD5xGz zKEe;o)d&N(7T*Zf@ID*>1zZ$RW0hBR_}u`0CnfRgcRxudm@=L48#Q9B-l93lDF=KBlHl&DgdcA_udq6;hDjHY()|_4aO#tBa$W50G zM~z7{isa6Ou;%L(|3u@B!?{#b=sNjva;8g*eV7EiTkBrOSuV881@mnHV~qqL?$H|j z%)37|4GLFlQ3AwbHT@XiC(M%c;?&Esor2dr5=EglYc69(GYJ#fVhI}8Fvhgk_zlZm zi$1GhWpUWWl#=}AX%Ei8PL_Yh&MBv>?@-DSU#2b{baC}ju%d2KwT6jjJ;CSf8BULD z(0L}n57|L3_%6b{CR8j}&MkYzYl*=RRsnx+0suBe^y?uQ5SqT>t!)3}Xr5(&qwsvB zuLbS}yjgGNcRgy}$zB8Q7DOW{Y&ZU9D-Tm3He!ew#1=cm9fQH?Z31wYz{iRT@P;gE z`iNsQs9`M2NCQ*QSm}U=4Qd>&z&$nO4^e^3-A9e9REq{85t1)>=Sw7x>}!}jd-0U& zv<{e$<*-EBi*&*R+j6f z_^)XMYM@0gk4gh}j6*oVK20eRFKU+vyq)WOByvoQx?+~P9h^T@?pI?P6GW=l;x*(I z0EHnT2flKmPd*{Mt0~Iy!4o|G2?txfZP#fPV_GGnBBT`~BbSRdLrmPGaFfPREh{Qe#G!ckRF`MIw)}UvILTLSs%>t~-R( zGX*&%h0@G|eB(aXLEEOZuG)4axK1fv)=%rMRk{W`TI;kQ7e2i~$l%TUg=yk{SfgaN z*A7UCNqBBuOr%vW6lgQB+{e&Z!Pe2=-%YMD2H&In*Xs?zAQHv{105tM>T`fs)?NPG2m9hswhBJ*Bealp8$>0 z=LpEtsuR%*lX4$!6S3natMYH?edqUUx+$NnC;(*ZvY24GX}sh$p+HjK_@(pRp=x+y zEWV?^yAHh*kwCKnt)8371n7?+0IA0TQq;OIK!}77yMoNM6}MMD6j7VpMK_Wv5FC9} z5dm};iktsLqQT12qvnzVR)fBE|B>_4?O3oem)}IJF`U~h%??%VJyuC_EyZ%P^DcTV zZE?ZomvF9wvTM&gZ&$|L(~j@+5#}Ue0LzZHXTu0{Goht}UIS`pPBMZ^L59PH3sRxv zlyfLmteyj^4^^TLnd4??}1n)39g7|u6)e#V+ z$y^hR%s5C$Y!(2Oo?04Y&Y@7do$-&E+_7u8Aa`w9F_Z)^DcF#v8rfuAmBI-(OK$_L zbxtA~yRhmzg&pK}wy}fggwMh5W0>jEec))>9FyszpM*DiRoi=?QTOaA$#&fKF2QU{ zBmr(&OTu8nC$B~4##6w0=Yf6Y%>gSi*bJxR-J^c%Phd>RWYz6N#vzxpE2pie1nZaF zeu!ihAo3XcHsm%=EvuaI+LwA2@2e)Aj2QO|%6oMFF%QR>sAuB0Rp0*fmU(%ScY=-Y zqQwN>5Y}g;yLHD6hj&1V(o97Kb0#Qeor7C~97vdw(V-Q=@%piyzayZC9JIao!M~D?CF9}=) zMuUQwGizMy#uLp%sNGnffj&#;*^Q6K`gg*2I!w}giF`)7MHgasyh(~dx>bGnV`y|D z&1gl+sB~5|z z0Safyd3OELM_I34yD5lAOrq~360=Ndf&nd#eX zW|5Gby)<5m{Fw|t)L6dL?L36icQYyU0{om6f+0K6OQ5#XJL4!dfD4D_c0xznQKlHM z_jz21Zp}CAu~s7yLE$bRGS?Lk@dzBEasd9hVFTKTlzOnpEfha#JMZ^8^a!{MBk1@5 zF5!l7TE&w{r631_mXR=IQ|3x0~MNJL!gZkn=ApH{;ZdWIr_PIo^4IbdW|QF0A%PnOuN zp0Jpv{9yeu845S1#5vkdyLns`H7_wpAaZ-;&|n(wE&;Isod;kircKZv6ogE~U zHXMYMuZaZ;p2{;C!;?4*WJ<~K@X5o@&j8b!Rz&v6L*99%GI6kex{c~*OHO%5-LqFfCFlQ0QU{@H@W!q*S8{*bBjl1J{jVQ0`6@Wf!(v5>{xl%n$TtX$_3 z%k;|&y!d$sm`!F99to>x7zM9L*J>6V%2B9Hd2JRJU*N0T%(J`P39$U6C2spDi+Tw} z)+7^XLWM@03XV!_46x#?^ZO%nenky*heMDv)&K^Bd;4nR*C*wb+@e&)?U5+r zZn)7Y<-3L-Ou&4NS^q2yWnw4$1!tU%niO=hV-%*qM-h$!BJC{Bn_m8|0r6s0dq4?g%0wIiHN^Gj~sh%vpvYq%k!Bz~7 zDu@(rY|1lMP;&GS)^Tv;QT_JI$BLp)V^$P6RZJ9Aq!RR0pYd82lYUrW3oFx)Lr%8 zxQg`IDjRPV@m0yV)>0gZ4OB5w@QcM*A^EjG$gm0)H@SAFz{&KcLEqy_DW@xf|6-`< z8&O>|i3aM?jc6dN15aiCHty8OmKM_Y3)*TFh+@z5_yVft08L)$^k*M5LP zKiX+#kEm%Nh3R97Ki|Uh6VFsw%hgA7P(Oh?0mSw@%^VQf@)E86)hXrWLfv*Ah6q7N zQ9Ra41F_P(=!i+aB4<%sF%(E4DN*nJvn@{FQLsz^)aOFTOB zaxT_fWu-pi3V$~PYyzS7#-A|mROu!Dy&~+L{bpEUtDk0P=Y36c&H;QdR~Pq7`eO$d znf|F0(OXHDSqYiLi^X-y>NW#cswPGZew2%0FzYaWp1>`3v*?jv57We1Y8_k1`yWN4 z9%R?kG~?~iK!?KM-^HJ?HF;|X@ng0_Z(LC8dF~XMRB8TZBy%SBbrxH#qZuZr3tyS~ zQlJ--JoDYF1cT>@pb!6P75-wM{_hSXJ}Hnw zM;h8g4R>`Jw3%|1Q|xcv01j;kND**?75|<_0v;_QdJ2H1-jW3+g3@b?=TZnT&#n9Q zi}_#h$6ZnF*xjSHn~GNDT)1(>V(JnP%etsAoMz(A^5l6lNRej23A!q}g-sz=`1LPBD+mRJ zfLX_ra!Ma6U92cqe>O((iuIJdbtt&6Ti$JkkI9)ojtlXjo6UXM#+ho*f_I zDdK&ELw#f&ZmQ(@ZOOLKto*W<4!Vd;+g7 zD2AYBtZR575i1 zk74gX(F#k_8HF+AjjQra+F-@#oi)Pv*V;V(uCG5@)rChWKcAYZO<`9ne=p^xRl>hM zpm|Mo5MQ0;&j9V^QvWzsUy4UuOFVEXuM4@8NZ4qWgdy||SGZxgXV(-Yh&uHCj>*ba zo9#1S#zR`I;n7Ic`r4lT>Mp~F>2DXGM(DFvEO#J3O;z2nH5A3>7fnoQ5Ap$7H3CKs z$Hd@>yuWa5#gCT?B2(5Al)MVW<+KIXFN4<$7=~3HK?yR#O)o@J%Xkm)tK)}5KMT}O z7KaCawy*fASUemg%jNHb@XN=jH&Q)y*m_DsNMoW;Yc|?EV^rV3h;h{6x3_95>o|4S zZ6DzvG@uxg%MkYoFCCWZsIAKMP8>&cU2gH=@&1IGkC^I?pWIHo`T{43CdHA!I>^cP z7EC;%QV!!GV0kb!`7j>KIB?Mux`FFGiE|I+N$}kr0$EXsYBfKC#gX_>l9OrzULJ~u z*Azwljtp2#&TK~t0z&Gy41lYD|LWbd`ITH|AhPhRO=6@rb=X9P!%YE$VXx5frcJ4``aZx2xK%Uk-y=iA#;w6VN-<&F0uK7~d>=zc%o(%|bg_@4FrJI?K zY8OhxW67wb?Fe_rEA zl)o%l@r|?Ll*sWLE+EPE#!;=iB#r}pB(we&{yOHdi((RKhb$l=s_S^y0D7u{&YSA?jGJAi*|)O(~5JQ;NahD8cQtL}xA`LHEbvkQ<+V9H?8z}zSpDOH2@TyG02 zo5fGW+53ouoLl!kSdkvdmNKG1G!4;Te&J>vsbzc9@^a>3Juhtmw4=pFy<`!g2tF)5!LzoDtHA8uvGaY?{Sm>kOEIhs1VV+v)km zyaTjfm1=QMD8?CncJsz!SRvo& z8+GcQUxAx)(B7sPWWArS8kH|pGR#5Q>!L+!(w9*BH|^yVVbRLj_LVn8&Hkel@B$Gl zJ~DM&GDt!TCuByl`K*Y5?3nWUoXwL2C>wQIwGBHZnR;tNM!MyGGGoD)OABRO!jY_#qj1jbX< zBHDm#h<+ct0o!FK)vYK{R=mB!kDx=9K$@9@X;|i@aPTzU?o#0x>d#zMX=<$!Y3Fb} znKgt+Rw62!P4q!`s@J2^_TE-`w;PYbUu&Y)QhU#=6k#PR`SV^K`J%tCxh zFFtcM>Q|By)eEzbLdBs#eSQH2w_@qfvh}G`rSTn8f!OR0W?S|P{*(jl!}ZOIWp6E> zjS&dY9T(L^1ZCqm75)ABJM=BoLch=9Zom&V=<{$fnEnl_PQYl*%Vrv}j;I{mch?Q2 zrI(YZ*`2lt^%K3*{Toq$F|_*}6yYF3xv}(>bzJ8cdA2oGX|GykxQIH z;y%M*o7R4jC9m;e8|+XMMVKdU9KTx1`ssvKJ4B@?<&R=A3;o5ZzQ~1WLa`ju2Yu|m zg;l8Jx+yg$gA5x^-0se;vR7(f(gEh3<*uEeW<=mDgP%`QT=eA2p3`0Szf6UKU1%&W zllfqg{;nXn1M-VewZs~d@@?uK)K=F|>KFEL_`?G70C#t(I2NjuI8e2ZB0J2<<=8saRCKGFw3VsF+1u_=R3_C`{aHdrYCkX( zx^!O%O#y307d=@bbVtegQ>M+*!Sj`<9CIp|qTT?ny9n?BVhGeH19*4_LE~Q)YRPMn z$2Zm7t)<4EU2ohSR8eCCZdMbj#N693a#s^@xqu!TAtQfJG6-<1gdK`83R&z2@KpOg zPO>QKe@zsgWXgT)HrC=ES*Z#|G&%c=l>Gnb zq)2ZF#E=9Oo2&l2TAS;*%+Ii4q@DhTzfXrn+?yQ zf}w>7A~RBpewJnrS6(uEAd%PsAoPJpJu#ZA21$brN4C?ik}L*R6-JsR9HJ-W6>Qz_ zg^$I_ilr3=PEXTtm$>4)Zc_a^kjEJ)E*~HZqET zWL?CMUuj|q2+XBipGyd=76w(<<#fDsz`^9tMg0)J#OEQICf7OeWo*r~crTTye?KJp z%q^?K{bbTft;GFy3D6}z<8_8qU*`A7z`mKDnKyvI4 z_h{6AS1KZbD;0@cb%i)c9HYHX#Tz1cRm$LnQOf@Ow2%V<{*5q>%+x6J=Z6pjFbVqfQ8rl z)Ao#3hyco@di$l>2)lBw5&R-pYG-juJ;!9v^g_kEfx1ccvC#$0nJ)e@^`4OyLW%(g zNA&|u7MuBauqL0grwDg6< zc^;VHRA;S=oXEI%|Jhe{p0SHXb^5XQrNCVnAU-=msHMRpHh5!nmr|s94ZLosDZq(` z$m8|bZ*d=Hb_~nYwPuCQYv^ZHX!vX{d1jGlv1gZGMgmNjAqM$ALnh^|oe_Cx*I`~o zyxYZu(g35q)LBxZJf67)!)%svXpz3r0aB>&X&3T_A11|6OaRE>l@+Bus5E_F93HoH z3#F209I1n>pMjD7;ImMneFPS-%NUj1rOBfFm)&9m(R1?pn3>`Aho?S|O}G22Mb}lf z;!3KTm$I~^m6r9*vv^7rc!?HAI0>xJW(|PkZO--LIva%=S@VYxQ3`gV16c|nda?yJ zRv5{z--b9g#1L&8zcLH-6fedN!y6zJfHc|2P1LNg5mUzuq|Eu4W8tq`1U>_9_(*p_ z3sguDT=JpZ7_ zQAUvWW67q5ThrXXZ_>1`YB~_r!Y9=g%q!nJ@K&US zRQ7`3gjNMmcB;`ZBYC~v*~D^=1_9|r4PBPpeQXZyxE6!I33WT=bjlJxd~PTio5qm| zMs{SVF6MzDRg?}JkHJ%JMLl|%cWOS3+Ql-}mFT)5lqZ|WIfTU|T zp?q0B<3`7{jnh`p`~SHhL@E=a;AU7G;#pgs*A|bGE1V$teBr(|{B}E&YaHht5UT0Z zm7uEuGGi6ic0I7y!*Z+7j2lthW46CFVURiUdK*_n3lO1AN8A(;|Mc6rctt}R`?AH3 zB~|Un!?#g|h8;;z=`MFP^?|)+`vt!hsq628gWn0FF3C8p2y^!h&48D_KJqpfzE2 zk{WYPI|qrwP9TzRIYl6Vy+X|F^ka|-TD!Z19T#O;mgEx10F{1HG0#Wi&+~pmUcwYw zJ0{tx&p+6UC#%rE#1>Ydk0}@58M{{L%tB%o;N}SA5F`}D#MtB-B$YO5iXGKmJzi|Z z@r_39PyxK(9{j)|`gP+f-(Y;jblTilfxsXxR`>;{ep~HC3y{vRI3Nye$jZR0KPCUG zy)%u6s{i}A7)53>s2F4$#-42?DqGgjRoWzEyDU>OQYh=#3E2u`-%}Bltqhu(NXVKs zd$!6Yd$M%@ey;n;eLwy``oBD$vpB~&zw=!_pZE9DvO9fAH74$2l(opgBi}(iv0aK@ zM5#k(^?(j$ zp+{fx>LGR)pApjWx5aZU3b4rcV`9d^PQhNqQU@2)j)beWDkwDEUXDDrvuX!} zRXYNUhe$-t7*KZNr{tKxkAWgkl-Tc{V)sVvK2f{x1ql1NK-jmtfb6ccyWfl559@At zup3A12AsQL^Z&_6{`Is`|Qf|^PQ1Q|RBS)dKT4zK|sxtkfGDF0>It5jjYu%D@L7pWWp zRnRdYF!lgeZ8j>9{m91^c)7qNtsHIUIdqrCH~cfSwDs6vFfjbqJigK5lGh(W2Lyt7 z;$o9{7@$upK`Xy|s(KqBON+*yB0=PJ%}TK=3aVeB(emX>6~4Hv{u!vNZ{&A3_WBy9 z|1vO70Va8&T7XG#m}O(G@_L_3M)rEn4UacBPQFo9Zr8pIng+frSbQQ)Arg*8bjK5?6FIkezNI;aF38V1{h zg$dku%2D<5g%@{~L+HAwzi4LK2Z)L{`~|dfV-d!0d!fW5R(a3f%mSa=h3Ot-^fmFk zzXGKW?oXMW8Dw<}=6(b=XpgRkD14~qssMNSR#yuC^>qLz}YhO z&E7ZRcZRYXI3t=hHZ%Uk0W4BiH2I%Fki3JNG@);8woaI9HId<22C`}Y%?~_X!CYp* z*iL%|M24kwPNQIO-`L0GfL|bZ5Z{kH{x$YA^=0!>zN2qua)@Ig+-EDkrewH@`~g6x>d|E83hNBI@NAdk1s_m5WfV;y)i( z)`*>)zt{GF_1-9H9~BrU_@M5T_-ibza)ek&TD9}6Zus03W94>7t+1`VXGMO>5Q63)e&S?5RYmoBqz#${jNss>dx zCKChr$aM*mYSD_0+rvv4YjoC6;nK_{`r>jXwyyWPQmLR=t&p=?)`Uw%Y@0c4Lw}E2 z@z&J}Pq41uaP{wbm2v17*2Th;hEhQSv(IpN70~{^uNR!v>HcNps{~{iWNMS$%%&j7-g=jXjoP&Sxl@>NAw?!u0Ms*FT zBb!qd1~S!OUo&e^yjdWF3f!wN2emq9MQI0hM;YR>|>GR1Wn`Eei^xZcDqC58*1$)AQDDJ`p>I z9osx;wM6cvd(G0-f0WW}ai92AjG1UgX;BQq!~3-QX8t{TbBK3_m=m@i{0Pq7wNEgK zx{+RH)5%(U!uOHP5Bh3=uSMe%8JmnygYh~zks^a#0}&W7iXof8OPy1WaCocvU05>$ z&-@$Pz?r;~+5kgeu2*d?Hcxoc zBRMxE3)48292G6ca}LKcR&?Ca(Tv(*7m>NY7s}^7>OWxNZg5uD5Y^%GY&mFxTxqUj2#aScfb|QiVKATDw5^qKN_r2dSHS_mc4;@ zS#~u7*ovc~Io<1am_%%d>GrSj+U73OTT=<~$6aQjAp7Qhsrm2I-u)FIhkQ z4YEPr0Mqos_P%m1@?fdUM6^l_X09t^^)=!3f=U#clbnw}PGBx_2&gh;ves=l&3+2M zYAA$eVfIIaDs_&;{dO2{=&V~j*s)cb=b-J6EEl5hA&s4QXRgC~GpH`UuIC7Wn{^=O zP{f-dGuO?;ZfB;#ep_I>dVu*`6?+X3ktS>k_M_tP>WGPh&~d6qP#ND#b}_V6&8iTspB`gy6g z_nm|D(&ys!g-R1@QRGgDA3EOXADLjzmhYi=PgrWXynTcLODE~tJ&A6Y({kq#(dI&L z@$%OJyNX_%@xmjGqUiSPTBt0+$7#)X(R+RLTf@!yp3i2f;4?L=T}w*3yNAWK_@0BW zMyFH3-;b~2JY>2ejF(U;>_^J&pVW-%HI-j8@MTI1Gb8?hmN(6W{mN_ziSl%=eJPS+ zRs)lg9Z5_W%l-CL7G}E!$yP2jAA#9|Y0yc}RtKHG*1@1YakLfh0(rz6C4dy)ye}D5ky~K*d`WI7hT1`=@oq#}#tos_8_b{N- zy)a%v%p&xDCwqsayl8^MLnxAQ@ZdkqwLe9W)TxRg?zewA#7J{!I?lmA%($cAhw{j< zaYdO#({=bckPwhOaAs_XpgPM#jwk`JkYy!5EB~#PvWWffY!IBj(tRl<*VU8N5B(T@ z_{l-^QxMDJOmE5zVpTw-DsyX zW0p*M3>_!+<^pe^*;`NI?K)2`wBIf9{(u?FzrC4R}^U_(8k)9?_2XYclyuY-qV|`(2J8k-;_%Y`dTMSle z`;jA??rYOx`MI@M)dWNg zbA@(&4GJuPFLOI9IEJM|{PI7`vVt^Ef&gCMP2J>7+G&?*fOm0hT*_EXETr=ywa-x; zRBw@|&;mci(?0{POK@c+pJ79wj9#vpCyrM){I(`o`F{;^!R_XQUr5;Cm?6s1Sx$MQ8hNvro$b(kcKc_YYYzu@#?Q2z+Ozkh1)znIrsy`o*~^BpXimEQt^b|5l*X_=Q;J}e z266MKZ4_@mh^z*?1WH@~4S2UWtoPbj#n>mWmQv5@2I?$`9CnR-?6|;x*_ILmyITdE z)&4O#gRx3Ty23c-I5hgi3GDh`iIS1i3-g7wiZMCOV?> zYI`0xijAa&%L|KWXCOe>aR|=<-!EI%d=d(9|uG zas81x7*4LlvS92Do>z!T5U6urIcn#(*>N~QvT@84CKFs*0hPJjATg~fY5e$}vtDMl z#avLP>_pUx(A2TkXmmuiN!~QX)W+6ZBXB=XMZ9ZS*>N&+^5B4wFZngheS}D%K=8pk zCEp73FnMDj=a6^ymW9Vh0X8AN#fB^mo$bk>k7(1mY7TEMF910?CDZU%;GyM#4xg4c zR}R~g_$Z*FkPmY%fycE0Ey+;B!5gq8>BIv#G&TpiEZ}izU?3YZp`sU#WNMcOJqQ|q zLG@1RY6z77IF}cY!I@Cd1}Y~{vW-NO@FM$ WsMmF8Ecu@;}?b|4JKWzAlzR{xnv6?i=Sq*!S9umD~^XiKVqX9og0$ce>7=Glg$SzZyA$ z$HbJVcbjDW4INg!8cwun9rjW8%ifEek7>Wt8dfVr|G;De?thbyRrIkl-mf;<;@do! zK%*uD1~C_MT+mlnm#7tXEbj*u8m3G~iu`CC1a0ox=slg)e`{j%2;p5PCA{yDUG{5b z;hW$h$9Fd?#%BP`;3&beV$SNUbyjbjsYFak)0#L7IZB92*+OWV(Bukk?8wG4&Ew8& zEs75$D$AS7FwRKdIKIn%6{9e#8+d~wT|d58MjcdbmZ(-ET%Y^gn5HI%ne2RqZE>91 zvmxd3^N2V!Bv}o8T2YoMxq(V6NHT<;Rk7h-Oy;*CWV}jvU%Vwys5~{^U2#^u#){m| zelAB8GB)?MKD{zyR_h^sw1{E0afbp^W{&=GcN)T#QarVvdki}D)bpPPS z1=kdnBnvAw`=dg^l2HDsKiU%e)?wK9BY%cit=uI{v^Y!%L^pmtH4kAF&-Qncipsx8gQE*Cd6SxA~X;7aJWORwueJKM^|{YK(%|&hAnk zN+M#@uA+tuEg{AxrQXowRsJ&oLmGT)7*9(7lDKuWz3fexD(%Ud?%Yq^MI3oc|uMeDKAoQ3~R0@(nOEZbJe}01Fqr3WlsMU zfVlFRu#{Pz7ko}tc|fl01i)4JLU+rU7|@vB5CQivafjt)nY8E*#7iIAy+sGQc=a}gp92l(WP_0*nVrBp_uWIg=b=CsOg~hz zo&qpA6x{x*zOww`^&82s$#Q5Er=FeDFk{Q;&-3 zcj*om61YzGIHN`u@=6+w87q~ImFE6pB1Y7ObKIpqAEK=zp8MBOV_(3SQp)|w4+XN!0RjRlL%rd`m_Dd+Jc zb3t2KL&&d)sQN~!@y{PRG>)VGLa>TH19{HuY~g4hHg2$a^D%j2?yt&v)VQ%61OM|L zKg2}t%~s`Y;xJttakrHvbtxwCnfA|;GNu^OyjO06@Mdm~e<}=iSv!dox@c@$nD^sssE2#oZ6#!x!8_s{5@p7a*GtDgaV0#r1$od< zy-TV~6C9mKxTgDqWe!g4F8<&MDAC)$nCs`3`VsbGxfopDB4_AtI!a&o$tSDs1)3dG ze$1}mY~;x_7aFF6mVNR5@_38ib~$}OmtfCqZHl`9AN|q6*7=2qh&C45%eAwW`#}F( zshg8g48N$Z`k<%Px6J}dgx=Cp%N4YI%b~I^xToZ7AT1ksJJE=7IT8tr+ zVI_h5)*lG3JicO_0wLrwrC%|C(Q9tR>_!VtSkMHpt3tQ;9xd3Qhd%qtW+G53+j`kI zT5)^BS#MYMmwnvzbk?RhBh%r|GN3KnBGY%2%zphqWYyTfzA0;<^;UnKttE`2cV@N$ zt45Y=M%yV8}@W zzA`ma?)A<1iaoeU`ZT&<5og}DN9>FP&F)!J%VO%UrROH^RR7ck-s$DV@|M**P*d0C z=p^Wssy-TL;lJbut+N(q(X0f38}1?-=9Y_+I+S!kK zI|zLLwc?#J8gH!YF=9Ze;<6IF1hO%KV(+v&Q92TaU9pJlXygswFQp4AeUfOnh?Ttt zc7oVh>lkEm1nIk}Vl30wR5_m@8um3W=s&VbVtF$wIp4h{A0FA?;j zq@}rch$D}d{&Mpt%tV`l2_5F211~%!7JY9UocOb`_hlk+=o7s~W|pS2kgN!5T!*6Klx*QGnOrL1;8_@H&<#e%fEiINwzJx+E3Ydc}LZdRFelMNzK z(G|+;G9hQ7xSb6dZ>g>Q4{nZ z!~Qu!KYCR0%>~!nvUWJ;Y%LKLd(~*Otop7E1eJJCSU?zwa_(Nit7|1>)eLXukbA-- z1nf2?*qpbl*z26c>a0JXFavv~*;ie?WVgh5&N9N`ivMD0?0{|Vbf5s`{Fxi%ce)@&E_#y+Nx7Bu@?+jcYe^P!6N~>?joe+y^!7VH!f7RG- zF5IC2;D8w{sT!|p_5#qplid`tey7km2&7f*2R ztv6bW^YnZHrA{y08?EZM#mx8`BbpT((7it?`y;~N9_JSg%89~M>Y`-vOs3UC9}MP; zOqBk65{EEP{xXVr0I9Q@kiGU-??!uH1bF_RIE}lwmE~Ws6HubD9SUWLOS1i2QTZ3AkBN|vMe1xNa(9)|EgbzdZ!l8 zkQvt5S45=n-8b-C46qHV*MDhUXE_?pp4pH8BC}8o-!1>)C@D||%$_>0;7DSvk z`juwqaZhmY;I0J{N*-hvH=R^T=jrrWC<9oP1HgZ2+B(C<|L|YP$7VsRj}gI90Ocd#UMTZ-Q~$O5zjvrmfII2=`X8Wt z3Uu+hgkwYJAE1;4E*oQ8{OdnJ`2^_V>(A7ae}K{oc+~8VJaYd5&*u@qg3$i(`uZQB zU2q6}4fuDtl)yC&qZk$cYxf$M3*S>eYfJyTT-*l~|Nq(B`kB6( zQ+}6PsFc_M3A*915nHUYvxs}qkolszm$<*7Yy+$HxS#rBEskdaaoBOF*}RqKzfd#6 zz34{Cew-zZJnB)K|Lp#QR9CNy%-CmjlcoUr4xp*ELWiZ{@dA5c1k$#G8)92IGZ?rO zrUP{TWq35ARa4L>Ie}=6OKx$wK5H>}#0K`|^#*CmOYRd=UPI3^1lcX5O~%ExXcnz9 zj80;Hh`v*nHJaytcT?GM_hCZnGH1UXad2@qqnW`$p60y}c)2{+uv6f zOKN(uK6EkHaVJF5s8g)bu=&~EAdyarAMwMt&~dS078H=yhK)w0B8Y116~@zgB)7ZL z=FgfHL&A2W)sH8#WC{zs%)Px>bZ&qJA?Blrn9EE$g0g%T2G#$}zBj3-4@OR5Dr%)l zXagHAEO1T^L;>?ZZ2MJhF;J$LcJGPUZxjJ3sn2g@m^krtAZrqTH9DIt2Aqy%iz}?Y zQv(KPZP>(jBdz>>r7_-k4KTdacSkQ8m!{jV)^JKoOKaI60oqJcAGMF$18#PTvwH8& zie>6whva`0yg~|D0~Z|1Sf}UcSZ)+>+!wj4!-}Q?OhFaP*R8<^Omm+`j*MBkP6qprJ5tn zj9R?vz4jO8&vs@UyTh@AOt!{z%T+VDgCy=M+uK*RLIMS!ugffMmv;aIbhng~F*IqF zuHV0zX_2t^9j_hk=f9Qf?XU!OZMa&CGrYgMEe}Lo;H@ReoD7*%9m59@k=z_IGvCxt z3+tUbZiQ*ql%CQ=MV#CtPbU=VcohS=*srz=6Zg*NOhgpgH6hZ{T*yLcLT^!G2y$HJ z9?2+rn$;VhjA!?TO_jT;$a8y=(S0b={pH zwn-twlb-6;zA-ADclxHkvi)XwE)a_U;lqcTLIduL_=bUaN(*QgG-!?4mH6spghz_` zZ^m`2({l6JrwXs9$sZABBe80xg<#=WP|w;u$l_CGGlJ1-ttqbUrR1FLD<%3sk9A!+ ztF>@J@84!o+bNpTc7!qkt}^+yjmuuy8<}Imi(GD{{sk!-;v6IwKXo*(dzJ|JYbVr; zqKc>jnj<+$Z0>I_oeBFhl<0g}47`^;1zc~C#&;X(hTP3()2cQx6Zmt{3K9oUIM;ya zmuP$$HQCF{p=tT@$-qA6E-j4NG_gVt%;w86;sbQ{=DnH` zsv^Vfj4*t0cK3r^?-emOcX6?l4^Cq8Od5X*?hzgLaXG3y?s-09^ge$=2!&25Z4N=E zQ__e%lBR?=VenwzYzJbo)rq1K@ES3@2Km?Mf_LgFeg4qX zF%gq*+iHW&ia>POs~&B?!r%^TyI2@GXx^>BkkZ=}!59650?SSuu*s&A=F|ff=3={L zXj}Vx3G3ru54i?{@2;ZB<>0iXK&f z$jP9f3)H7!#n0Yd>fK@g7b1UPFmGdjjH<*{btO`nJwfXdGtyjgF_c2=)q3@jzV{)Y zg5BSF@6Oj2J2vlpyDRI7BACEJ=LFlbxZXqaS}#+WnV?1o9rr=*%*=&fIwSg;^vc7h z7~rw`E?tjrFZY5=%Nsr~d(5a`T)`6&aBKq3!ruuvtg!0F6~B>|kC{A79jY(tQ^`5! zdd38giXHA3o2@S{uEG1)PG(hYJ(LhjsO>NKG>CZ{|91 ziN4knqN6d|tf0UD_3pjV#;N=h2lD5{&~Xik{kkkl*L$K|2Xg$7XtysL9?U=EW#3$; zT1@7@Y9R`rv3zK$(Lg*+*41CiI~bJ9#_ zM?D1g9L~Z&%>#H2Iu%M@G8}vw^b%=W30kMx)sGx=^7ymbME}}a6kOVW>q0H-DZOOd zgC{cD>w7k(6bJ=Y4}v1Jh2A<0F6z7lmZK5TKY))Wv|zs{usind#%2=~Wi!c%w(4Gf z{#oq`gW4f!{&16tA2I*&@y>CSA&ZmKxd!VfSaj`W%%YRvC$WC@pX0-RVFz7t438_DIP}H$B=!~|O5bpAjP9=VINA%nJQ*X zp*>y;cEzKvP?}mwD3KN`k|+3DRrD?76-z#XCH6}lxag&G?9k@XfWihDKuG%!uJUeW zTuQOG3+PkD$2c5}CQzpg572sptjV2lraJ<;kEMw{BPoT(gig7S<-Ij=?IR65 z6z*k&&G)li@{##mk;6J)5QMT4E7m=oGz)?FgCU4bnx}1-hP)cN>)d{=1Xv~Qk z*ARnmc!HaoG}OY}dCda59+O*=@w$}r6ORiAVIF@Sg7&Oca0IE&b3Qh*VNOwF4B*GK zXHNdOq#k1%OHQbpVp$vwAr--?0Goc9+K_N3a9R^Yx02R>{FJLVF%JD83G}PQ+qq+n zJt&~U=lY=MU1%Iik9PusEu-2E+oA%MoY?y_-24fcoI7*TxnsFSU)RXRzV6uPOPbJoH+^JIM_upd7i_jwY6zUIS2ESsI+tGdk-Yt0!jx@kJAd6r5La=L`Dv7o(yTI!rTFF zXMIzLBu~^F*FAUAZ?R<}}aq zmwtfYhjsE~mkLyfO~4Hjx>FuSC(-7#_3Jn#Ilj|ix`uk{YAqB5emiI=$rYrA<@|xt zzCvZ)#eosB9-`EaE^&7S7hrC#;<=-oaBt;07Ihc^*qqgrqy7r1&E-(#-o#bWGD5|s z^x1JW_4~M200QFrguQbl4<<-P@~7pN#a1GZW~R@y3kF6UndG%4U9#m;j)I zvkG(JmDuZg+RDVF4$xL?R2qVhJeqrsHf4t*jvQLr!Iz!u);}_0%Qv(ZzqX|sTY0R9n;8`O#lQnI=q}1*OZ(Xdtrmr6Ybs7TH9J}#syfh zy%`&EY}>Wwh}{Ufr+6m32cFR_j%y?QJ0V;Ay%EnMkP-bH2dV^k3K!KmY;(LaL5Ua# z5Kvp!Rk)w6OXeTE1BMf#^l#RXjH)D)lLSI3U|YW9Nu?E;pt3JpWz${$n;*Z6YSLu5 zk&o57iu*j z5OMqU&T_pkkg98W5HI6+_9Zws*lT#`Lz}5nR%Hh&f529Xh7!_Rwc?gVAWhRb$A}*gdB-+GDg?XH|VYQ?jniiTJGOHeMK!}@u<3@8T1g+QmL7m4VFuMsqQoW)Ef_Oue82aYAUy69+($!GPFX9Av3HHSe293#G>fGs$o4o5JpW&l-A>- z>DFV#D_ZSV#=+ddW%Qyhhihh2yt6za86SrmdeQxzFP=hwjP&rSP?|_Y1_a28)jU7K zel0`OnhH}9sJ4W5RYZikva7KLbHlcb@f2(G8wtx-xeHvyR>~7O7~YLF=$|@F%WBMv zh;@k~ZUd$}C*RE2&dAnQNIB)OwJLK!v$1TngSIEXv?s4J`br8j&J~hS>>LfonL?Kc znR+9dqK_=63CG#IA2aK@!kyNWf?V{cY)w3-ULD)MT4tq>ABEndcNH>@pS#if{XCY) zj{6)VNjyS_+TT}N-P5#57&FhocHXNX7Dq%O=8_>4>}ugL7|l7S4fBz7ERF*n=(Fzx zK^|Rei)JQQmXBZSZM-CymHIP=IfVs(Zyimi`zXTVs)&5t{evDWl?aIMtlO7S^TJI| z7wUq`oCfNjR;2RxJ3Y2=y*wI>hT2+YV58;}jm?IA+fo+u#n3^r3a$9dGRqaxn=q-Z zunXXESHwZ7!Muw2&`LCs3n8mxWPf9i>v5f11WDr56S*T*7duCJkw?$n zm1_|tSNN$^J8d@{q8>2-?{9<;kZO+u+T~C*Q#@HukaUx4l06F|ko?$f;FKrH2( zb#!%nyiZs$G0*k}jvN_lk+->+D0%w%#3yKd8@ zc=Q+`MHMAe6PpOBzFzUeeOk30;BsH$%Lcp0`tY2`%-+UIrZJ7ljSR7;-&k6{jCw?F zRxz%@aZ)B2_rM?pd@Ir5qfb`$L`@X~lsmEqRUmHd*U*D!Ex+c0?f7)d#s~S&4xk~G zEy~$7A84W^VgOG6|L#<|F-!aXoxlHT1i8a>k;;ouWYbn&ZO8rXp%(y3^`5@+0;rSU zo^wWXOk3P@D(p5wzY}Hdws$Y~8(|fZYh+*JuR-@4>z{X*07x14kTrTCj|UbD6Q%!( zt?MKdpr~3f9bm3J-(Rq=1Pd=Z)P4uj^SerCSo;(J5Q*CE?-0*84>S2J3SN=vvlv)s zSrq_Dxx{Ba3&lDhBT|avZnixGkWt!R>xSADz}{R241lTMk2};2HpyJClbHN!IcP3@ zH9kkB@hR~3{${sw3P^kC0)d<+Yb`CszQX;mVbQ5Q&rU|p$R>k1<@)*W@9KpvV@`RI z1oTceIj)iCyK@r{`M#l3)5hMI2&@iBwx%2At*K$PCXV&9)|Y~{H23Q%ng)S^ZHIv# zhbzlb56DBDPF%I(8ejN!Rnp>A#yS2W^+e*}{&WjlAZq$k3U14W9|NY%%hxBkbHi<(R zo^VwZo!=nglLpFa(_q9RY%f0y|77v12Af*Ut>{qwMcdglCA|oO-hYpeJ|lSopzN%Q zWPDF7A^pRgl@5)rgnmU*&4nxz5eO^C)Gnes;;~E^hc)q+(Pi(DWqy7*ew^}2=MVPmfc2P z0Gwt0&p$U?-u;IJg&E^Q^Z|E!+2Wo*9yrd1ekyy4rRb6KG|TIn!OLd2_k?H6?J4B` z?79VU&~kfub(l$;BLVXWL?cC3&c>iSeU%Qpxk^^3@Duy{y>JgKvQlN-=66lkQ$0Yp z`zo}5y(mTF1Wbe$#{NgV8~O&~vxY4Jq=gT>L!&%_)K7rkLK6G|9(i@s=I0R+?&voF zk#{Q$<`51-UX3O~6w@N3BNH%^TFZdco$MloJfXPDRIoc@sOk~`(3f~)6)gvUPhS?M zj9j?}0xTpM_a0$X~;E%S22PYG|WWu+8$NJZTNGx~nlVlT^o46@j{Y@&Cyh5?a>wu#KX=?Jg6zk=Br#tL1X6BHX>E(a1RI0g5JWY?P2#1kOAd*-%+#TxD&9pD z&zwnc-~(ojth}4K6}{zi^7v^Qd?jZjwi+va^(U-~b9f6`(UkzQpl%XNA9XbeJWrFE z)3?dpxZL=>KC0kF{RLU&b^0cYp@N#tBYF4fRba&yZPzgXfQNfmkv|*l*>BsEbcI#t zh@x{cEfXw&g?kX~)P8N6#bF)9mrTOlk+?ez z9%N=SxbsKe*kEq#!O2ow9I84!i*vnVK?G8J2}`X7iM!&WS%JskZ+h!GhpS6wp$nb~ z)io0}pLEE#-A{9h$HY=%Co5sm<3CfE?hXV693|3*4vAIR&1)=vR~7-0%BI}4vr zjNsqUu@06+y{{R$1W1aTx7%r}irB$WRf=+}7V~b7oxqkf)<{UE#dh+{%qGRfGs>NA z4n65Do4PfH70qseg&x}Q#RT`RDzQjJ1d$nU1$Co%KTqBtDk~LXW_?AnkjDo&bD3BC zk?^ZgYZYlD<_)8upU(!SBnX^7ZT@t2ue4Ka)1%ODdiQ!||E5^xcBthwHXIorN`Wmn z=MvN4xG3zdm$`cb1V#bG8nt@$VDSokXQRdFhsUW@uD4F7{w)ir>1MXG z^x;kPfRZJdfi0tZ+tjGjn$@D@>1c}R)A0oAdpc)Xs>KPy4uH--X2%Osz(WhV4^8v~ zXxHZVa~AI{;t4Y;t%;2BLu|1zu*rkLgX(ZT;>-ex~lN8^}VyxWur z!a1Bk-wxl5Hk97-mNIuA@og)08cyZ7b6JXx$TU2W95HjUtCPAtn~7|}FZ=?Kg=4o~ zNcz&gwe&H5=$|F5k;-4pIgcr!&}Ogwzss>-o4@VUF|@Dex@*&cq;nFH(Bxz=ozz0G zNznBMyl>FnAK-MI2@`iI(D3VPSr-Dw+eReqB3Zu^}MnO~C%XDJmYC(RDtg9zAuoR7Ln zAcBSm;`YXG69Pr4{hi(ppX$=ll$!lr;ug8#9wbg+)a-E_N9@v*B%}Dr$(YIJGkD+f ztiQ;cmsJW9eCHe7fnWG`NwdtdP=HwPXvi}fhiwQ7izGFJZY|W?Zy606PZ))+ZE?pROe0Vc9CeXGn&Wx}5os5X5WFh0@jizt4kH;FDkE1x6$>3F!6$7n;bZsuKIt zFw(HC;{BKjJWxKJ5N<8!oX&iQ`{f^-7pce(dUmxv`yx3HVZ7bb?9H-I{5nmMOORfE z60=%h2A0x9>D=gD7sX?n`=BSDy9aL!>}m-ggd>z0o7 zmT(NHQf94|qF*c*@l}7K#*Mpzb(aU$3V<9D^OFtFgZ_Y&(O#Sp-R1BK*Z{xL-0@)e z)&fHUb>HTb4;~QrM>hfDe8l!n*Nc>RPsuT45Q!o(xoU3CBIj(#idG&XTk0WF9~sM0hl>l-NA1l) zKfuu+A?kbpsIdnjGs57V3F3=-kwIP(?xJ^Uvz^ zjCin3?JKcrfn?mj%C)Dt09CZDoR>)vtoaDlrrhQD{uBC4X}}y-3Tr5_8{Rrpr6@D%s`AHfg_p z&SKoYwdN`$Db)14pCrpMBC z`f9BNS#0U)1<5Lda^uT(LrUYLeO}h5agRv@YoAS|ah^(QQ zi%kr(G_@J$+7S!^20^dX>UoMk*eYv$NnB&`6Vl)Wbo~oIF>FgcyvBnlsij2Wyla#1SIsxTyZrgClC!;5cQ64$6T?@PDhqrFePQ}G7zQm+mKc#{V;NP~N1S3pV&^Um&Y zqOCpe!*nNp`qhAdwFL%<q>X zKGP_gJ&q;5?Jg@Hu2Pj#^V40cCp(Y6J5l8Vq{E`f$JUIHsLsc5vj9Pc)|QaSPARSF z4$Y7Ba=dx-6BcRLtJB|4D6HwsXnVskauuU&gpXs@x}!%dzCUQ^Norx5o2)*Bw0Kl9 z+H`?5B6QhH<%S~nqT5xFf$st#L)1fSGH)(cjSI-58II^MRvvZ17ks@@5|^yAFIju{ z0Uyixq0c6sW9wn4$me}P$G)pRNR3enpUIs3sLe_RqH9!#KVgga7CQPn!;48g4WwQ& ziEMVy=~pTKqP;9|UCVke*`0kdNm0Y2r{hUxT%rc4&sx z=nU}U0s~#BPU)j2eun^(g{9&?PI)u3yb)}X>CG|kC|a+~t$5j^@uvyJ3GVtxP*LA` z6qNBd$fk8S#JkO=Be$w#mk$!qgZ_(xC$%8K=f(4L<-C%)BKzpePe;n$bY}F8$;?VO zVvT|cNo&_-gO1)IgRyFzwzJ$sj1qmj2$u@w7yrfQDsxA|U%g&%|~MCGSd>G`s$p$3B#MKy17}a{*y`4 z^BrKjY9;%n#(5;Ya#{z#&4=&`Y&uv%la|H0vEWnJeRO#8B`CNz?vP+Lpnqb6H7O8u zN&MX>br8&j47vj)RA9ojL9@T}8SRme^Tn zzD+O@PbwD-PLI3fB%?d`7K+ftXADp7!W|vDe2lD-w8O1O(Rnn^6Fs5+Pejmqu8!s^ zO=Mu%o05$9g=x^KQx<90uvN4kaIdtn@yu^|6yF%!3t(biYl5i4FbOVFVxjI;4=K^5 z58S!^6xA2mBSaW%@Z1it!YGrEcxg@5T6qw52Np5i7H%cxx(#!*XAJ+y{>MQefmAt9 zOjXA-(vavqnB@IL@MtFA-80qrpx@;2;`x_LsjK4ghJSjaBaNjC#s8+-v;7Xm;ode% zSoPO|#QX4_&@}>Fk;t8pd%2L8ROBP75$|Z7Z8l~%MT=Hr^1=$J2E20Tg`gv?2q&sK zXkys1;o=WZKP+Llm;;`cGw>^I8$+JuW;70)K^bfv zsB0t0jem=nV^PcaEYSc?m~S%VhvU{9oTcfaBGSlBssc)pVQ>?Ek~j7Ga}sXKmA0{# z;yB0DuD0((Ep;w!rh<`BIlx%4JG%4vhX8U13(qrbb$BH2)GXM?Mr0AJFI>!k;j-3_ z){Ch%C@i{R52bfMK3HjM@kWGuoHWseTJwbf+nCCR())f zKB`*C)B2mI{ug^Y)RB8beR59@B3FzRG9@=K3io8T_)pB&SK8-H%>{Qr>)w%PPVQQ-+8yvg`8R4>RIr{r3FDnw`rWi<23_I}Lb}4+h6SH| z8I|%oJL)=Hfk(!%IbE-Z2?EUT!OVa@IkwDeh$=z+FQyPckjb1iw^^11uD>=9MDjHHDR13Npx(@XlJq>|n$LNKJe$ z(MDMKHi-zimu!zr=bx)`3^^~I3}Kdr{fWl`6B$I|(;`36Pphnv$Y3sV&03{Kd|z|w ziU^xbF4m?jeEOGoRY{OY3lx&=*r2~6_wpL*1UPI2Wt`ERH!ImOofmM@C(bF>gwKbD zMJT59&7P5-=Z<{(i~lQ{+LtxAU!1dPdbS;jZOf7@Q`%}V-BS3n5OYlXHEZ&*)(kWX zBcZoui@CeK3Sumg$YH8s3W$EjE_!)`1mW*f*9x8IDsqj0wEQj)^8g~7DM~Pcdz~C5 z2!}+IUCQ!0ch{&WvNpwIFtwIanql=%=1JlMhS4q%umT4qTwP%ffE~5J?Pbo6iBrD9}<~{>Sp*IQ#_G7XcVb&%SnaWmQ`WP?#|XbrY1;b*3IW#_U&@b%UmuS zyJb?@n*J3{z{Qm{oHMEhUVrA@TT@XnemS1)?=;+Ni$?yY^>|Q&4f>)R-N#E5b~=Vx znnai%K=x=|oB$Dl=!KzMSe z&1g#$U%kUpGzHH(S2V-hDV?Y`@=^kHW33>Duv6xv0X_bXtJqmJG^l;78S>+2gK9Y% z-J+tgZN_QC7rpE{6|)lac0#Q9i~yO}dCS+L8!vb=^hmCAEcmRK(sycb#+Ltyxs|Rv z*zdz@24w+Y(}TF{u;q$-e&GMmda#Yf7!-}JTJnrgeJ#5ji%MmbOq!MpZR1%dJLw$F z0n~*aqx834{>SW;{?>X*r-&>0%TNKFD1YhRm~ch6@$&N;uWb zkIKc-jK_*8l7W|T7nmqZKBXwL{3t4Tr}oc79{y2Rgj7y_;9m-p_TW5Mc~zSE&ryyA zc*7Zgdc^-Tia+?~)85v_{xg6_0PUXs=R*u=|9cL^_gqm|bH;%kiia6O81kIq4T)H3 zsN0X|hiSop_LvYz(ok&06&|$a9}i^$1|JMI{@MT0fK>F!$8Ylg#A^fK&5y6&-f8@s zXdi)g|M?J52K@i-Kon`S6tMH(J@1pgJ=1w864(ROsuO)WVTa6IzrQ8Iu4}zHuo;7j zIG*<37t7uz2*8Rz{rS~~D&RJVz%J5Yd9b(|KG@!2KTC8BDU{5Lsf9kIN&z-suif&- z8+5wBGp&}@Na{U6AQ`)EtEx@C`~F2fY5@?WodDaq*N)~l0U(&XMGsl1+c*J4jX}#D zK$rt;n~PkhQsvZ!&TaLFfdq7tqUHLdoF?Q(9?5}Mt5FTZ&r8=yO_G6`V;~dq7R>S> zm-++hnj;{Go~^?}lQ(~CPk)W0_1pf^Fv>qtB$lnd>G+^{0%rS(1%T1F1igBwp2kNj zA&vnuuSM(8OtS&{;8tfBNWh5-pd=nr{p@`ZdLM*K@0dM6wvwg;JinJ6HcJvTNzSc4 zYolQf)qP|QfZMv)d(kY4c5`BANxmxEsd?y7{^v@-sd`5sAbf=Xu?_^p*^#@e(u(F` z4as8#SPBf#z5}Q{Jv|i(f&u7I{VW4C?X~2p#B972eR>#tzxYsvu?y?yaIBkBd~lb} zuMefbr{YgLtv1r$HwgXG>v@pp{Q;CG;0g?yD1;!PWxrt&c>&0qnb=Sm1C~edHV9HS0#FKRca}S$sqw`Dfy~mqgRDK;~qS zIS8h$`eK9H;^b+Uap-*e4Nxtuwt0XN z;36>?*;B0Hn<#x_8@va&aR0o*uWq@!*>wc+?ZG1-U<%=CJ%c@XrST|uJAsEHy$B>c zc)Ap5veMr)Ax?mr-3-G&<&q9Xh?w_cbp+2_WsGqKuZji&#YS)0QRniDxd<0e(xXxul!Jkr$1ibw!FGh`mA~;Jp=hE5yGK1d=uB@ttDGL5D;J_+A>&gL7a2lIkeV z^BW%UmO^d=%VsbfDn{863<bM8SFOe?j%B(}(cUd8L^LG-a2+{s! z@?0O8A(tOuJK=Ygn@_Ff%d&}OibHv&`h0x^bfVkJ5Ehdf2M_B(kNn-#!!UE7v zq<vH4C8$GRApPmt?XwEbVue6Sfi@O`VXtthr>}=662Katas{t{mss5wki#ScdiN^MS?I4yy5jMA~eo^<){u|tt<`%145O+K%a<< zqgk0~4~6TS3qTHsB|=YzATn?6fra}#UG}-I$du26sh^I?i5R&`G4h%Z{huDcxJo}_ z3Exztz2iLi1l^$Kp_u_J!-ZO2g^vz3T-yQ;;V{!MyglIh1gU-!NMCg-@mzfP2GkL- zS@r}+UWeLOH1%JN2a@n~ zB+26sML%}p;woCyyQ`V`=?&~-!%Rs}lJgny6`eDO-aOPTwZCi!3Q6|v?+)*&%9^`^ z4?xnZycR)dg~^GA?Z;~alUF8y#@$bY&RMZ7MnEGvsn^##*xeNF04RI)Kv@@Kkls`y z;%o;#(+bq0+pAg7Is{nXA5DXi)>&?LgF?AcJh zt_Q~tqEhX9{|lJUu|+8LPV4D-Ek3RIZ@_c1@%RJaoje!GZUf4T`rW349bd=sL=$!^ zz-jKbyL61vU4Ynirf);4ompoy0Qht4fHD2%&B^G5g?^m1guheu)931FRoHEP(C3)i zAxi6!T%WoZ;9E=$-2g&P%+5o|=_6uCD2L9&V_s|Nj2 zcS1a?f<_)CwhV1xxJG9?wSq3mkSx46m}5$2lU=VO z76Ja+Ste@UE8C-y=kpXx?RR4IN$%J3Xe_+oi9D&>*Q_-I&r1Nm%5T8i`o6=>q5XRE z)XHo;>RG!=|8q`sRwzo3bnY*IKUALqm1@-w_MrAC)k3f{4Y|tF37A}lHJ_| zMD1*W{S$p&Uaf>0`kAF&8$B%NK-Hc_JOzbRm0;RN^LiQ)h50ZNeZ4`q&y8Zo1~39Oz$2V-2AqvwElftH~^0 z>rtB(m9ip<+Ld*jeEae9uX}G(47GQ+v8)gL{90g61E0#Dpjha8H>PFdbSK5;Y>@QnWgX(Kv*FR`2iF+f4@%O4&3!WwI3Fz zppCvS$-@}w$}^-fV~2kM>Ne^4A=wT!F%L!&U0`SDtbm$7x{Bu)tg-#5VDj(j*rIET ze1ZbzyZtUq`a1i{wqFZ%b^*iTQ+n6mHTxw8n42LHQD|1Bi^Kqu&RHyJn{wb zh~t>hTpeJH^J}Ql-upk=d+V>N+Nf(74o5;lx|I$E>CS_MAgzLkND9&+2uQbpqzDL7 z5&{YmlA?4Nw3Kv63eqLvyEgauzV}~v$9Nuoa18Xg&)NIzeXY6XnsZ(|&xN+368%iP zV{G%gq@ljJterl^8nFS$?u}UN{m_>Gc{xAL++*D3sV_(*-2uRf-`!79ssJgf&P`My zy_yWD>(5k|`C93#;7j}fC2)YI9t@O@H8Z#kpMiL_q>s~0ewM#O{ay#*x=gFRe_N5~I|Q=NoY@RKRQ77t%e9e-FMJw$CgcS>~`@ zddlQiib&)ZrNdi6foTuUCt;Onb>6ZNL-s7KVj{)CD2H} zboc4#)?+2tK+R}X0DJuIvk_c>W%{$wfu?w~3hU%xjIBeQVt(F$PSG{y8mfz){qfUQ+(VReU(2@UE&%@s8d2 zv;OBwRwa3t&9zdz4?s3&AKr#k0|r7BQs4wj0fBVJ@=07A8#&mVI|&b}K`=4Er;dd* zS1l&}Rewa$_(?U6uh|94$4|K4%lEl={O&bd%anno*SG3ikXvN>B^$Ah`oAkY@*R{a z)Qr;By;%$FuWR5+;WLx|mJamvzIOiEFZ$27N8#>b1hFaq$LSzKR`GpOM0##@W z-m8F@D6+1_$jT+xSK~5ApSB3Ii)Tr9tx~>-I{W=YL|$u9&iX(#N{682KGtWvhdiL*~U%6@}3RIOa9R|PrcDShe|y+aQUjF;XxYK2R5!S zIex&uJ{7=KD?4_-QJ~-C*G&H)xjZ;HsEnBEvWdk;m<_=w%qCt!iU*LaMLE)Qsl6InO%FzR& zVf7sv+UW#6;A`&xSJovrewC-F^xBZ_)$PQub}DjFZUS7a3-rS4TPxs>ScCc9&mZ973d_!V5s4ceBV7q(q*&$FWAGr z8dT*}YOw zoXAmVGqA>qp>7$ylDD$|;X%`Soiy1#o=^N%n9a%qo}||V6r2YcId-1DB_Cpc4}Q>e zdR|&ntHOq;vKV%p=Vn6f7wOe%BJ`)8aq(Zj`1pmkJ2Vj+hpz9+>C@Up{m5jky!xAr z*l25y#vLJpQ@#|@7{0KWq7Sz&g3^ZXYry8A82vaL~G zwb6jEk+I!FXq-wKXo8MdMy#03T%@7FLb_K$pNTfH;eb~ZoYJ%5Y{%c;2zN`g)NGH{ zDhTDTK)cIyHRNLVIg9mA+c7-}uF;_r^=aLYEtq_F;>*y98S;n=-*UFJDIDd!J9y{h zq1?YM*@tpAp%UF~zmoHW)`e{cxaDt{Ry3Yx=l#`Fn{vDqPDXx2ds*Oy7a&Q+n_Yk1 z9QnNAsXAVYtXoq{me;R0LtOtK`foiTvsOd>6EBGFTDwG4wyU|jH~mytmSl7LPAmTG zK2g5;?8kf6j*}AsW1Pt@9gnRUN4hN;pM4K%uN&Eed)GE$wK#BA5_05qY0I1UI^LX!c3kxCUZ`1iW}A_Ew0%{~ z=fK$xSaIS@G9y}YhYw7|{`_ooR-PAXjpJzP68#qBLSgyd+w@vZY_30RoDk|euYpDE z`i~)P6*fwbb*rkcs)P za3U5U?W=Bhy$%mTH}9Q!-OIJKy43@ku2*y0wk*VT<-X707eKuQ#h^ky<>!l{dOm(|7IT>ciVDzSKfws?veXluf%8LxaM}wfd2mMsX@O0-@#{ z(et8Sb)C0zyIy{up1k0==bA7E;5CPf^t?X4naHQ{Bcz9*_2B%mB$WLTdZ*)+tNO~K z9b1wQ>z7&TWwe4Nu@_97cjLvYTZd{2FU*(@4#Fd5>qt<-L|pbLQt}NjMSt}SiJ_8+1+5Bqg?=U41> zGdrVnbZrdZa}PAvdKS|(^T?Vf%Jt<@vt`_B+t|M{2QA@AHR)Rn?jD({J(3Til>yT$Gq`ApGk`c+V zx=b3JTm)zv&`Q-O&GxO8CSZQux)sTWYU7Ce7LQiWrHLYSHbLj$(rZUun&+!qon3FV zq`N}=TH_4tXNjP1@{s3Uet(ndtT(VG3B3LBRq8FQw*P+Tz6c|N<&i6vXPDm;zIQ2t~mA%3kpU3v_nZS0`Tdl1fRql81QS>h?M^7$EED5mACKCXk`ej`0M~|=n$~HKds&YQ*DUf+lN%)SN3eyc77+j zccwNq8D8D4eMPIlOd8(Y7>MKWzII{j6976}sQmOGX6^|q*Yzt@&_>OdTbt<`rGgYV?i+D zlxyz;{ZT4DgRRZc59q! z%8sya+$uw4Z1mUV)`6Zyd{o*=H!LZe7J=pU;r~Rt_&pJK(OOLrUqHpij3j)Wr?}!d zO^Z2!fXz3htV)XM{UCwfgCAmohT;F-{IoJ54L4$aj;m5gr-pUD;IsFBx3ifaDo#TS zZjfU?`S)**pyblUvNmFYQx(3ewpqWpK#pcQmjul9#%2?rP-Y@hyx7@<)R zlCE7BNm~T--B!zuEsS3vPle&|TW+5U zt@Y|xoE-e9Fj{#zHWH=4XDFIMNF}lWE;acoKz2VNT7Nd453}t{PfyHVH2)HamSYXs z=nGzlG0ib)LzmzkBbU&{@=@D&bgp6uqdVmRP(6Bod7fqGiVPl&smIdcsOuW;298Ve0TmUWGVHWobg-ZUcPN z?ZLuhQIVwKK=4fhw@2eoqO=05maxh_yP`6c70yYal;JS^7ZDh~*Nw!9`ZTu~Z(UJh z&3Jtv#>eSZqhUNZiQis7?RWm@#^G1%fN#0jc};mNtxJ+WT8zyjID}A5ezU#3LaA9E zlZ-iwJr8^=!thN+zWoZ^p4%c|Rfasr7{Y{FhVg5(`-!IbPOsZr#fCr}$v?@GE-({@ zX;$Y1woM8@_Zs`s;hfMn_l|&5LmdNPcHgq{xp#qtox($=2$RvHGY2H==aR^p51+k@oS4)io{j0bIT1O&6 zxgBTwLiu2cU#WxyN8uDz%ex)Xm;7J1hirjZXYTslnrQ>v&J&_ev!c@G^Ky3=L}A^F zy{kp0HsDjKotQUm5%ky|Lu_ zjg~GdB>8GPVP4}wb%nuGnWbA0wauK2>D_D#GRVEpeUptmigF{-A1Eq6ktT9&qO6~? zCQ3L5t!*?tk<9d~Nz?>e9ltgqeasvgo@I7gGDS<|gk5wW2`s56d+630vJOq>^c_Ay z>~W(zFSI*P=KOGz8p^W?UNbxVNo#jjHe)d<3ToC1D=7a+FvDD=({e(S^hfC0%I~Cc z*2wY0Zb{mSFHniCK6*3UTevay-^IeBB_@q+!7wioZ-0hxF=Osonv19=HV$hyI%Q_o zR^sy)WA7EM#kn64E%##yUorIy2$PDk78^0enF^qYZKtTdz!USbb0PMUI0(8)s_1!4uUtg$$a$pBH5+@MqNtMH`4Thc}ezX&k=~(jiT@ zus-U4Q0U#rq{#0z+h|cN=eN5WVMH$<5)zM&7K#ggm!Ia`((1i;bJ8=zAp6G8X4@=J z1D3JF-0StG?QI>k&n%;sNbOp=#v5)HRV2pXSKy+Kgv2TNUbXT%MN#$LrxJMTrH$ z)SK4+ai{-nDnqHnT*(@LKXrqa<$8H9~L14a+sx%gWAS^@bcW*Cr3!~e&HdyGw5rMpxvsK7cL0A{#Jv?a$X=!DsRvUN}UXe!37J za+&gwP1`Yn*L7 zFuGx%fq>crs?zdX-~0R0_rP6m4*^G=t3Se!QxC`3;OCA`>_8!Z5{N*u;+omWDwx;Z z)6|Uq43lX@646h3C_BgC);WoW6vgJI$c(3*77`-otPv2?y*&=$0&>Sd zSAU~3)|8&|`hAr_*2~RUKFoGDyIfx!oBl-5qJ0GHxP41bIDyP0EDvSI@(*4eP?fJ86x<26=9%}TBCIjN&kJ2`}oJNy# zlTLX<5;Dqu1Kcev@3mgfdBCOD3^$K5OMsnEV*vILK)JMQWHk7*@Z|Sf6{gqx87NHX z0+c*C-@5b~u&^4z&W~=;F2p3*2WK)qM zkze+ZvV|L!!@?-#R>0)KeBOw%rr^uEvG~vWQ_eT4mbO)B42Dj#u{kW9{3m~Rw^84e{=s;}`YGe1a3>wIJ~&A0B7p+olQZRs zi&0V9zet|<8*JHw`uDo>w}E#)^aX895zXiJW*P(2K-`}e%A*@IEzu&RY)aH*w4gC! z*$9`Nzovuu4Rd$}tO~kfaTT&xM<6mYTFphp&ai6;>qGr*(mX%wHb9RSv>^ zR9rc<_1RQk*d-Gk-3IKh_M~tX%v^f<$GXwo3%Jo6Fr%6aod$8h4)LV^J%{=0lI)-w z@i+=|gRIT(JD*aVA(-R)=X;S~*B9s)bDA8#O}lI~;XS19h0;AJ-VWB4fOsaQpfLK) z^Evb?vPeOv5mX8?mWq~O!<#iPV$W$(X+3TDEPNs99ruxQLTR|5l0LQqxfn67WkT1L z@KtpIK}xgB+}M>PR7&dSinAkczQ8Y_`g!{S!6wt)TrB1AYu^IC)d!o0lLcbPnOOpO zH|J~`GUy%QXR$j?(&O)wcMIK}lKDN$`^&ZK>pNZxohd&SPp#rH%+F~N&e{yZETR{4 zwDAJ7(vTQSZv6pU2nlF5P()N*s7kK)U%ynclMhId#^3jt5RG(}N%3bFz$e(@qKs%(^eT==U5yTg_jKfr`}iQi4As3@kTkpUf(2hDp2G3jLx}_m#c;n9`z?&8&a_T!A-kH>B*c9bkUWB0?KXT42ecp6>RG##n@(m3*!}`dK!{0d40< zuWsX;9DshyqGK1IW%0CX)k-lwMQ7N)!qT-v-fgLOq3h~N=Y0XdyuB&WETjfKsl;P9 zH`1j&_)Lx*4#ISHI{HOZV=WmpwW3b5!!SR{J$}g&SJ7%(L+Y;oD$eW6(KIJg0}mk6 zuVns@Hm}4T@_>vk+d{Ps04wvQc|jw)21E7YX|di~4KDG(jG519yKd~? z^K06}nV_rGxLzD=h|?U&p=EMBOXGc&YwMY=#q`Gk=7MGCU`)Lz0g)9-7O=Cb7;VU` ze|78S4pGlVz5@t#cqaUoKxAB3tbx`gL$l|5A zlkulli!o^n{0p~C-5zn}oLn-&GZ*<#_C`+#B{LjG=D}%GLGFu#fB8_=2XYx8!Ve-5fqB&(1ljn zWySbZuceu`Oe{iiowPo`a`nD+Ro~3fJClg_Y_ZK!5K9^x)oK%0rvg0W=LRyfo`HC7C8wy%khRx1XNxe+8JcD=v$QhJBTZ;h7%EJo1&NB{06&}Kq? zw-w;R&S@94>CYAL+F4q)UXuq(+3QL$x*&!)AzF66i? z`n^=hBx(xA5l2Osj4sxpaVfC>p0kl!x1*%^Cti3MVWIZpTdi^NbY*{?LNPVZK;Bn< zkr{y$ySpl;ECJ&{jR`Uf|H(*2mrCmN+~?oREK_$>#0#XT8TGh}UD; zh7u|$Qv!*%@ZRQJPGNpY_sRUc!;>TLI`RkDY?W=M9UD1XlCyhvc&R#T0rP{Ri#we<{B)s?s$+&n{%yVOx#AkF#Ko+VAS(f% zIghxv(|QX{c4`=uIz@q|>yQ4suIg&&rC~L_?bB|G%Mr2lH?nS_DI>Jv_dk-y1)y=U z14p|OXwjXW*=Tm=Ky!R<@;1uKm>U=r`4_G%)nCHGq5u2$|9c(&_kQ@_=i-0Yf&afsOgezH8jwXaLlZ+|)s;$R)su127~)+^JvV0&*h-8`)0u;2*WnJ-)4$6>#305S zMJvb}#V9Fc521Z#V-D5Cb*ts-1`pF8+iF|p{j0Zo+&K?oCq}>RS5qON?h})NjH<_- z*-xGapxFhOQJKfTxLR5xC|W=S)`BO0(1e}-?tX+F7dfK#sQL9=y&1*`El6^k`{CLX z4rXkEfv`qUr%}hqY<+PC91sf9!4k1UR<=qqg4Adj4wpmhIZcT8q-TzPTxS$=PhY|R zwC=l32q{#C5fPMm&LH$=<7rV)}Q`(E{5OG(*EK zm3o11a5&&#$TlF z+A0UssQR#Lx%W$np{YB1B<7;D{{E>vJA+iLVC`FJG9avxdOjSpqoxyjjm1vtZx!3Q z8D-=Jyw4hM@Dx+>!R8XBKy&i_j;nGgF=AiJeN)`U`KBtdkSi$w{V}c)f)G!ge`t#9 zO{Uzp$wappX-h4$pUWonZ~VxPO;C}HB|a2|D)vf@xS<^MgcQ_I2Ht93?gXkB)cqR) zy4tOMSBlFQIIV6XA&puu-j%z3PJ&DD82!>&+@d||o0Zia{RGoO;)gdqCf4l8%Ph1!xIMeL(T=Vc)%Ms$`YH!>Xfa z^5jb4n|%uN73L`DS%{eAKCuC<`46ab1`wm~VRnrZFzNWDcOpvGs;Z_~Hv@Jc3WpQpBfFFpjO&w8uhqMkijHL*Wbb7{@k(xhBJWrhr66TX zjot*Usa$EuBk5IO2QI+G&_-gjm4YF^0p6k+@$fi7V^$qyALJ}GY&B8e z*)XmoqWFKt%Tk0Nw*Sn7(VtrlY|}C;mVpP?&|lKe@wDZm*vXnW#@TbX1Iec@1)&xm zwLY>}hnHqKjG*^E%6eF6)j#T4+ni9(iaZ$ITX^&H!$S`zg5|s4@ew_#8AL>eFV6j0 zf=}$@2^!ovkGBKkgRykNoJeQyGQ!mIb|1#e&Ok{#1>#+>^gXdd#SW7ZMEFK$b>oxn zO?b{ln}KhL049E}l-bB;7m?(ecV&nX8EDKfy||;%>V;acXtb#Ff2ItLjAyrBH00Gl zB;jGe07^3Y9n6@)9ZHOdMGtmM{4aLHkq$%zr6|dYfdb?@p1I&3zL@uQCAs0)@>t^o z-Ehao445P$4zF?34tav|Q%~#>hgGwDa1w@UvvQ4f6UY{#QIx>kAlY=_#@G7o^mP$* zkOO+z3G|}TR02uF#YKpQSJ&@hp*Dl)XHwV9;PRyo4&A?Ipp32pG6A+R~jibpAqfwDHCv`F_kuUfZx2%4G3u)cV`A@R2)r_D_itt5^ZfhF zF=~F}@g6qWq6a87cG3{83{UgRl)(RBhzihy=Lo4oK#D7kI}A4gAJSm)9X^6j(B>8u z3G~6|Nmml9!v3kovH>xH)RGY``3@MxGgX&;T}Ify8A*hlY2-giC)!lhxR4MyK|(g_RtS;`DV0)X6)7^|!Xw zRPe+_(;m20Y_A3YsVd{JbszPa{OnyP$3;Nt?tV0VSQpR;^yx)uKbKIm_a=Y)lg+og z;I6*}W~u^ia`foo_9EV29NNSX-{1G9B1Q2~JhNp$1GlafI>`GicVxQBrFwed?)b4g zF_r_>HS(Yx_b;y)=Zx%f`bA!`s$-~l8J+Q@L^#L}{= z$5~d8s(c)XxG26e2VOLRR8Rcr0VDlZQik`j@#0$wS0mn3SXr?8Re=GW1dKm^FSbSkIrb}()dy(fq*l|bdCNcY zJGwg6Faj^hqFsm-5+%=TG^+RTsjYV{<|Ifx*2q8UG@I7ClrxuV>vJO^Ms3~3TjpRw z-p1Q2pA)l9CVFmb7Zg10wHKBTUR+}822o?95Hmho$8&xa1DJK13EsakSBLgu>y@Fb zt3D|n8QNP^E5)L+7#1b?MVj?9{0;piSrDaxw=|x|1o|##1M$Gi&92&hrTW0M*jlok z1Rc99>Vf1LoO+=zY|#}fzdiTWuuvlJ-uTtHliAd%#<_&;)soxSMfPq(Z^S`v>ZnWA z^TOKOl_K=Ia3Ci(Qbmi|8ifS)44@h^nHVbTdJz+-W>KOgb@b4W^Qk#>Sg!0nl|;WNPDfTkspgKFFRDd2&$Z&9u`3eUM<@kZL3Tc@i! zH0et!sMfx>Xp~>#AbSn1;*mjUf*!vp^6unc*c#8b@m@*Mr~ab;+5GyQE94J0;XWZj z0!)owS+$khUqN0sPiDGI$7xu81(T?M*Y(z;^LS6lX(^IK&W>Rqhds;T^1(Kc`C;NS zG|hbA{?y4IkHZ4s7s%rpAK{boN4!cejR{A`Y&jq9Jb14q@kjIw!=z)0;?J^gmfzBU zlBuM9-3g`y5-SnA+y8yE119Xh%+}^Bw~1L36+4uJqIy%h`a5I1ZnVwT0eTX`RuL?F z;luTp+3QhBsA}BhunuF;Md(VVI}d+&dCZ4R@B$MM@u)M{^y~4Jr?q=+Rbs61LSH-W zFWr`ZyfQG)SCZC$0IyOt6`(M^%9%7O0TuE}I`=S>RV78l3!4mL5Fv=SKK)YD>6wkZ zW3MLK;Lj_)@+WE6^y~!Zx84=2ibyvHKl4=Lh)qlrwbS?MoP+Tdc_#A$j$x|W;awDY z0RwhwbQn~VOm_)*<{R14pO|yS7CY?Y1RFM)>x3)uFzzxUNRK^EJIi95ed~km`Ljz} zkQ%_ME9z1Lz(>`TluU;mSJx~>5BVoO3LW;hoPT!N0pk&|q9R+Fuke1j0x!$5MMWwN zwtmh);HrWWCZ1L))KVY0&bKv9=il&@?65IvH!_#P5Te1t#n}aOD}!!^*NPf zIz*|%OK+Hhs?!XjJIsJ`i{>A)HcuQ*yz|~4|NYtnDJ9dH=FrVhZY(#@**IZvC8m9w z@8>l<=7)Rq0r>$~ff<~vBWzlQjK?>&Jkd%P(V|1){N{!ii``ijip`pW&IMYE_uqC$ zUlS~t>*(^Vw@n$MrZ)$ zFis8sJ%KEf0u&U;$|&*tLqbpLl7S{FFe}&#_6K{bocN9D4RYB(l4Ttdyv~ZPx^=BD z{;Qjapl+}Z^U7X=h&-U%bbJA&Bnh=o?2hiuS7-=c#LMBI%cf{sgJ&VINrjoKrP=84oYq^j zwp98lsyfR3$hB5AokoY}-)AFtD;20po(Gb@A`(k)4a%uJ(x+`I+%A@Ks_StD6G>Q! z|Hu_db{fPcPzoc^1&%#yf@68?j1om7j{2?MY`eb8tTo2m#{mA~n#Nq%{oX=2W$mV6-#QX zaj34m&u%U5>Znxrtn8?#r^Y$;r9f-YLf($X^vV8|yw5z3NyHIII8)op&kgW`$G&xA zS=(OW|ax!7OqQ*n!i3|p4iJc!c6c2%=RA3nEY*7KR|i~$j5d* zSh_Ax4{kCBEfBNTY#2&~`Hvv&r`c?4#O6!bdG9IA*`LCl%ytnLF+-Jrns4jn6GM9o zoKmzu+1*Ft4I9~AonHbo0R^<;uWHh#7}fjOF5T|9tMO=OsW0%9 zD79#zJDtIACx@x6YyojsH6uF>Y(N(&CpR7X*yR);Rv665h2JO&EHTO~=O#3Ry^cPN zh>l!tuPiq7?gy)LXd9Rh&Qv#?IHXOxL0mv6NCN~(w2xc49E`BrUG(vx0t$ztk(h9^a$?9m-ntqm zqk#xzqv7d)ou7sF6DbxtY{%v@PE}sF(^A<-PE_C~)?er~rHvka99nHRwfE z(lk1Vzk;!hasP*sQbQv==v1%L=_7>X*aNejX2F;L>@vYAWcDi+-PcGF;;@I&y^FNw zy`rOk@v%Pa^#^`1q!mle6yp2+ntUk%qsMlA%s64X`+cODp>Mz2Vis59!~yhCWa|U9 zIa5&S=BzoT5^P|fp1^wSuutY-x>F?T1Tl;mB=vL6b`HqHh7LTffx0(|BIczag8(xE z^h7h9AC<|DChXUBIr3JI#miq$oy(XRmPH6Eo@4Y_`}R_mQmIC6NMyXzKt<7-tL%cA zg(i3lVZRUyTidHRkVjnY{%A#lvo~1cCrT1%8Pg2yAt{cGEA?|0shwmq+3V_g>&xj> z;;r4!OUDbGD4)5b?1njN{1IqYZH<+*l5pT;+y zCpGo-pz3bhgMQ8&6>$44*>(cB*M}asnmP4!=N4Y9@c6=UoahGJ*w- z4W$zH^Ee7$b_>4l?56Fx5%D~(^8OkUcwj!-q#iIuTlrHrN2SvDR1=m^bJNxi5K2;T z(GgFY3oasXWkn%iVerZJ!nwaIqYe&Ej?LJA-grKL{(qrr@!KTB6xA%Bt`A0dF<*rd zq{$tN#caU^Z8?w95X=oOI>cPo!W5r(kV9uTeWL@?y2hV^v@gT(*JT6JjZzuV&JA%HP`t zOn6%%K;kP}Yj&ZWGrCHc2~ce}kVi6F?^|3#v(wvt*CHibgP8!G5dZ%{+wz;7vOBH| zon^~~6ddbFO*f>-iikK+O=CB9|90hWQV#zj^;JX443JROP-}51>?B^_M@nwNbFB1% z9fjW3fkJwvt?D^e1(kxE2&i!}pdl=KoIP@U$Ip=4Wp5b?#|xQ4hZCW~2XG4{q@ID_mv)0WFO&4nSCU1%XtFXWn(Ntd z9aX0+%`&S6>Y7eM*ponTBFpaN>QuSUTxKgS&EdH)lxNEqk=*$6*G)3%tWC$KBaX%o~dl^CvqhC|eFbG6wutzS4F`7jG<``S)W@>R0!Yqc6~21ctn#4W*3J5D?KwW*AA1q?}D7 zIgjPvBWURuE^BhjP{z?RT;8UPql(O<()>qP>+HW*(tM>xIkUh;HUV8)(2svFDWE$< z|L+m6XlP>vn7IDEB<;C_|GZC=2!Tt5*UnH*1>7Y6-<$mVB>(#4-@y5sg8t@7N+tPQ zasHOYzX0PeRQro3|047M7wAJCI}L4*&>!-B;zDc5WM9Exl1xo2#%1RCS>65uDi9+t zm!bt=B*vKiDR+k5lQ_dXS-Nf#!piG+b+WN}|{rr?izdDOI> z^*k@;vm7x8OKaEyD*qa{mgm~8OFdU+|C32W?{wa;%%SHpB`36R=-!yzPH^0O=+${O;KXv_gKe99e-&%G z+MP%5#I5R*_Hmx|2e)4Qz_Dg+t|eYN7pcQ4pett+_gTg0C;X-?yyHtQ)YXySBQxd# zJoh$}DVOpUEE&NiZ5yY!m?zrDmU00X%sjI2AkT(2mX^E8)BI7y_}XXVJ|2EKlXv|wm@u?V%wlUSdQQNua^kvi1Z{;-okF?L$ z0*5hB4s)YR|GK2a09z=pTK)=2Rw~XXn)Bl{IApF}Gw}h~bc=1ozB0AF$YOPr$o}n% zp~Klo=6f6psw&8vLS1qfm(r*-KUs!^G}X}h3nHXauLm&vm~~VLW1^=C;1tjuZ8>K} zH62$rXTdYy`T=><))c}j^PcHkWH7+qSIP#PVG-WA5{UGBCB`53eJC~JN`811uvcrMfI09kX?EH_A*dV1X!{6f&2!HU(@Y*X6j(iL6mSKl?fCo`FyXdS z*NK&P?Grr^hV5~U&S!RIwZ#h-htHW>)oi! zs@ULJZ6#qFux+wq2K_Eog0_9Zy@(8WHAr?>ZQ5JyNJUnXyuSEgaLlvbss$UbUe}!+ zj=4etf~S8;nqBs{Bn^|qQ0l~JdvDh#L4jLiLK_+Bo5hvZ7$yrh>8|zBojF5eWM%&m zF*6bIM@YOO(>@I6?vhbnhN)9O6_e$hQR>VF^(KhYrfw2{@8aFwPK=*TjTK%yf+?u~ z=qt0VhpzG;Z8Ay*s)rcchOHvlXv4D6U5?KdDm}U~*f~7q#id5~6}ghyM!lJpAa%pr zPe;Zd=4O7p2@@?AalW|3Nlm_S@Fp#mjA%FCO}wpTGuelKfXLW9Z>)sX4{No~BDKVG zg)=aqstN97d}Bdg{Yq|d(RAHJ?RC$IUzpoaRr#w=qwd4^kDChmtso_ShNRciG2Fy2 zA}w3qsGwi{eevo!(s2XRn=sZu9(N(==YG2o$o-3W_kIgFoawHSvnzX?YPc{|6_b(136iGwRQn$0S{byF z(&yQv(>1vG4%L;}F~CEl`I?#{2ZfV)+!u1ICRzxm@xu$n_m#+M>9% z(yN@hpcF^fMfa%kV?9=nfA>!Ic_jr@=7mewVu{+G&8A&^-_v&Er57F4JApA9OMB=@ z*Lo;eZJ>`faPVo1vu%GN*{W+aCE$Xdeb{bNhed7}6w1TDo{#=h1p+JMQ=+IdA7!{-S8Va&z|ugz}}6(z}qZ zV8Z;eI+I6Jo739XqoZ#}njY#BxQ8E3FS*%KM`v+2cv;no(crcAra83wYAjZlkd`yD zxU1eV!ACuoj+-S^==#om_k(Q^6S#$E$@E9?_ijTCgGop*^&to{YJ z?8Fx8;Pp^&h|a?ozW-26JJy7_M!xy_%3l(Vp_VnFsi?%Wz0KC z+CRi~+PU0E0rV2oM5okBn&N>fj}xObeUZ&Nk3XNgc;l>X9P`M*l2ycjnhn7rE>AYo zsLefIk^D^_v)&bQey4SGH z2Sjix&aoA}R_9QmO#Z3%`LtgyAVo3k<24#o{YpB|u&0GpyH4Ua8%y!$y!UX33nk-G7^OSS z12U59uj)(IM9WY7t*f@v{EJi7&-#`zaXi4st>dgdp_g8EofWUkvF+yr=yryztKBi^#2|%r`cAO@qxd zzE84xfCZI?#4&|}@1o{5Gg@Y?8|H_~YV!-l>p0<@L(Bgl2V3P9^my|4AfQSf_btLO z`-D=j9!7lT?Ds`unTIJ*SC=fG#rZSu2hFH5Cz;Rg>jaxxF>`|JO>03byMI;j6QCw;CyAR;3e(v)RGLpsQ06{dlhD5v3|> zUIQ-2)~_o_k>3B07eVmQXxVrW>S}mWxc#-iaQPeBAkSaAp+EL4$|q7dvpuk*a#nLV zswQ)~=KXD7`RP+3f=1pTaJf*O?$^O$x8@#c8M-iBP7C{=@T2{zEC4TCR$aw!bU7Pl z8~U-Ad`q|iV5UNxuD>-$E?6bS*((;OX6FU{5&c?26=)mmjJnPkJ>I8_8P~c@8{4xk zkiyPU3$X^k3(#mNy{-mdznBq}>2mmXc+)HI3R5==O>J_wffDJle#`FK@2jZ3cw1=iZ&YGE~gEoA(^zp5oQI#= zOR90%gESsTnADI42*kwK!vzk^v$ax?SyW;+elirLJcZBNS#~f$Vxy}Iap)+d{A-Mz zM}uX7v6p6rA|KJ^&UnVnBj2s1^v1o)J?C zVG16k2Od4|5LA$2a{#ur&Aa)3u_4g7Dm|kFr`SCJq8EAa;7c~pT+rYJ96Uh7HJxHx z1GY0rG@TWQz|trHTre;7T?TBCIKY;WMEg-dZ2$mjN2y`f6x$gH?9`$nDU%#JOR+57ZcO6eCYdhNNT|jd>u5~IXy_0JG^Ub9g>as%K z-J_w=1{V0CQ-mXb(C_#A??mNRV}&w*NHqR@< zR?q%ou8)NcsK~+S%SLP14%RXYW31jX$*Mvgcj{lr@|huSY|_!bqw)O2ahv9u$yk9WH+8@M(eT^aV^ z!2>NRPDXPn08(=owiqcb-;ka5$IL$<&3|-6wp{SShHZ5VFQ7JBWhZ^wTAEG{R{N)3 z48lIHcE_=(9}TIT?9HuL^h%*TjfLJHfpcEYo+ANwt{fxLdw_MCOHh#KR$38*`F3(G zeCgtQfp&ofSilFAR{eL_w=ON20yRZ&xSh=kc+mZQvV&6~7mwPs~CfX`f{#nK zZ>JGqIO`0H%FvWQ#&G=wQ{?jf8h8}W#zS&T>c`8*(;@RCliQPo6I@l}ZJ2Yq zb>~_$X~0}~0yEEb+dXwv!O|h9Xn6H0w^~T!@DYOA!~h+L+x7o>ypGyf_dn9;NqwN#NE*$y@4VQK4yP(hXK zU^$MMmDfxH9PlzYJ!(dY&l+mEtuOPP&Sbhu@9i(U-@F(35F)6wAUE@JZoks|)cj}L zW+%_|u27bzOo5Xv)(E=3yydoG0uc?1%JZWpgpds3U3`!Xz{w{oYkS1fCe~ZXo}>I? zn5M-XkK#;su@|dV4T-GH<`!OXV1c>lpsiD+ay#akF@R5vl0k2$!cR!K`+jV@Vs&XN zXI|IW`*$W7rGx@`s9&4Y{T?Y{gpEG601JKX;MiT|kWWap+rf54c%g1TWXo=;0{ z&bxJ}$Fbwi!FvyA-HsjfkxRO@i*J{G-G{J67`PAcfu(5PM;5kwXo2DBgGBX{J#Pjb zaYg?4XeJ&Pe}R{8*e!0^d=-sw-&p$6XNVjnpEoiyGRHXW+{fv%yAk#BO*V0CosDP(T( znCGcuS@Vi}Kch%g*OXzV;>uo)ZY*1g%InV|^uVH5GywsVkXU6dME6!O-Rc{ilc81# z&tYDHv&G0}qkZ56nhT`6b2EHDZulIvdx5QYli)@{8fM{`ieWrj0IS!|Z2v3}Jbero zCmB6>l63A_;Cvdf^>96iD-8jmug*UHHJ>}l?&)Gl3v2ZO|B^+$>hGNba&u6tec602 zfB4bn{^H3S`!9?8foP)o`t}$z=(lrDDB1d>Ys1mjVDzLjLOhBRZ?n5=&#f#JkMHw` z)?wt3P{ipw6oHIl{RiGPx(uCvyVh+Au0> z4mvJT&JLY9hG~nOll!jfhtL;fXkgNT=ctiP#?_Tdg!N|Mg!n{9le0QZmcHyVTyMyYr;=M;Z z8qGtWGwR1ZiX2b2KF(d;uzL1hTZu{1P5e<=$xi5c)8dwPG69IQ%(gK`qSw;saH~GI z<5*;HZk@J@|B}fm?%13cfn78El5p&5e~jg5tjS_-1u|p4dD}?Vyr|Si`!X=T0@LUJ zA&PwDf6=zvTcYvI_PXIO^`_nlVWt@NnBvi0@xe9mdW=U+%fi2NiB~>r67%M9Ixh|P zX;r$MH)Q-tOq1D@&@kVk8Yh;;>=%iHJ*Vz_oh46$POZaFU_Pz;$m|fri&F%RwRh9} zR7Q)?&#vvbUIOgkfW54^=*&L$!?b?jSAEy9ZF$hk@45ShzfeP(W3yONn21E+j1rSg zhlBok4W(&B<7FwM5`|tfyK46i-OQxuB>(#K>DA|OELiTfmBDqLc#+nCnz*hj+s8eR zR4N9%RV-adVN?KzIrG-u!-5-*!?hW6$6&R6^wm%I2bJjxo2v+Y;AMBmdbqdr0oWLWFWC9nOh5}^;d{L!}iej z-b{K+Yy5(|&v2T{vpDn3n4+x4{ixzJ?69>Y-W`izbv9D1^6@RbKj!rM1L1&WzAMbZ zZomd3v4D0c$(MAeW8mGk7%6K|N~p6~>EB}eD2}VX(`M7F?GOaOVkW!=9&%^352hVOOo_w|U^ticbqYdY&HU_0ADtSpeY-u{Zn!CBf)D8=dO zx$a9Kmp<+LaXPZ?-g%b`-VNBK`D_F6LAv#o%z}?xu_x|t^~ShGK#dEpS&d4Aui0** z&>%24=p6yO6}|QjTq+q>(s;F5s)mZbnx~Ffr(K*+o9ka*%zWYCkxC7LP}8-z-*#R~ zN&DgHJ8{8W{(}k6N$nkvX`AJ8Z1nA5to+t(W2o899$PshL`q z&TqKuaf%)k#&sg~&p$=p8W#4F`#v?$4ERMI=FLm&hpBe~mA56#iH9M$J)l^f^}Y_H z{`6ukRLp^^dFU?Ve$q5w48dkVz3wIj6)6}L<%_{O)-lP~w2pd@4kC}v9Nx7hsx6P} zIxFq}PDzk@NdgIwZv@*AW;HPYmi%fLyj&FaW!jM_x_tF?y*N4FTiCR@UJC;N!y08n z2hBtN)4lsA(Di7K4`_IlduW3~ZvlKY9G$Gp4f}2)dRb| zMXlW2nN@BVyz1^k}Y!4dV{&ZDPt8F*GB0IoSBaHj(h?nW_;xoULChrqJ zOuS6RZDRNevRAq_LzKDx+CoBL1jfJMW9 z{~%$F7JsmO+=cD7%}HV(jPy9{wv;tL z%vp~ue6bn_VM`;a0Q70f!h624A=<}3E@^fq+A;9d5+l|sWi&ZfU;&*4$IU}*9AUq< z8`_ThVLEo%Iq90N4EDZgb{O*j=c1z>dDerdxWvJph9NoES>{Jnv7Q%;Dy>H%I7=Ca z?-F(~!-R}^(e&M#IKpcGmPj%v=@VXax#*(s}M=ELPDj<-e{^PwLseJGdrB#b(U4L%{Gpy4{?Y zXWGorvp6>AW4ux^Kl+8u{&8{PwaQt9=z53uNy&1ziSRi$K^v8X31j_0{OX89){%d` z)n-QYO$C#12vP<4_0vJdL0omHNqA|!uZ+pgW3@Ba0afgZ>%uFFXkZFBzo|SAV*>Ev zLOdY7JP&&wo&JQUgdA`qw{8Jm9O>&KMG+uGfx=ScDbK+T+{l$HKwGZ;jw~ldPe=s@ z{okENs+#UIYYVgTilazR!U?55=T%@TTW8I zrWdI%%#|n(kw_$BKVeY)bPCb`Vo-G~t6T0jn5V@%NtK)dKLyyp!S@XS>&tgteGwl7 zIJ&!0P5g14%NsG72fQ}`$R8*RKq;vD$z~EecID;aSlbD9-Z21cZcgg`^NSZe^+c-a z_lJ;&{9$`fNEMF9J$3-oT_{LW^V7V$V>z^Ua=1bAJKp@{XMNzrhXyfkAH5^3FR$Kg z-TRguN}gB%NO)k%9(mHI9|oRT#+R31JX1H!aa9k~dvC_jz}K8-IQ5P%Zj72UTM_uOQeKgXwRD`$2FT`q(um~=a0cm;oZxb6AcOax7IGeN~oO%vGwKVI+&Kg{9+aOeZawyzeE4TP{sPZY6!VFt3n>uJujy<-iY z4w&v7!`b=}S2Epg)0K2f=Mz=7bY%hLMLHy$wwjfw&c3}q)$_=9JW4cl?^ldVG?&XQ zjG=Z_EycpTN0PgZ*bhP;0euirYh4 zq}>y=g{_x!qAJ;H*8)|Ck7}Z@CXU$hNtyi$gekk1zup9eZN7<4mm_5Pv`&baEFlP5BQhQnam$-s{0bC$ zZteL6-M7_yb0g8Qc?V~U{%5Y4OtALr7VQ5NC*@v8xAUFVINr<%BHOlyzS*Zj>T|+5 zK#0DHG2e0GfnjL6JDcBG?KK|pSQguOvBC}P5tat0B2p>jKlOw#$nN`STC5BHjD!%c z*$Brfs03zlG>#~VkJHnN$6wh4be_KPFHX}#?~bs{;?<3xCIA%OZ|NAC7OowT{*he2 zm;>?Nwck+)<WVDKlxlp6 z#x2tGhkQPKvYhe8qL91w;fVfr%kIpJnz+*zV7(TiSk#{LFXxQ|fxQxzd?39BeCPsb zDN-EZ8pJ=A8Y5rTh**lA-Y6s8#YQQuWZ>IuU}C2bK=L#)OsUnT(V z*l+iu-x;8o3l8E-A|PlS_0Kn)4$p-SP=HJXO_0a`NQkRAa?K50Xf@j>04H62H7+}- zGDkBhKk4bT-9dPkV%P@+a3-f^OP$Qft(+ApWn%w6Rn;r$op-R@+%I?&k|LlWP4_%W zGq>2Z-Y3|2VX!jjI$%A2aCWv@J$b`!$3NsMUR7s06NZ*CG&FR{1QkmwOg+~+*(}Ko zTaiBtFz?e0PR9`GQ#&38ZqreY>VpLG2X=u`!tEMBAL~RkoPOg!`9oiz*1C}CfoyG? z^6PEN%TFk97wyy_D6cop#YevY;?uGqu<`Wdupi*54|bK!!uo2fO*IgPI>Ji=P?ie@yX4SpobI5P!Gky2eVrGr~*T%7f4TZLSLznQieMrj?5QCw$wt3!AVx-RLLzgo; zE)7Dmhi3-W#alm9OWHn-6_lBrASI~-Sk`mG`D6cTwKJEu7h+9qB4RNeygLmB^P?#N zSdL=qgsP^9!_}wystt}SyY_k9vof4l%3I{%87EH$U;FCFyCLUOP<>K>%Iljx7XAmw zH<+~d4Ig?EuSov`?|2Kf??w%-@%gyyMgV*sym7jj6#k5&!FmB}#epqE9iOBkBhb zMbjyTEm`;Zg1);s;PE63_F@#V09Idkw4GM64^ptTMW`7n&Zl~dKeUCY8On6u@Xq+! zmg`yDJ(V0qu1`Js^QbB~z%@+F<4l2aM{jk=)SvXMhY6=*lR_>~qXcc1pM%Kk(DclpmY(feXQ*4OIr&DQy&SVW&^Z}4q7D; z;EE^x?xHx24ogW%$^9F3mHGfJFFxdfdy18|R!ar~(=My3>Svm;AY-{)vxkHBLFOk| zzAW;BoPS{VYIS#aLrsO0d64#L*)Cqz>KEMKNN&LN6P_Dyx8Fz_Oj5T1(5K{ zm-d%qD#P{BbNA8vmaWyEfWP8B;r;IQmh&nHTgL`KU*96#9ge`+^tv_Mi{G@KY@sVK zGu}XLsO>r&>+1ocS43&9$nx(5eSY<|0?^W$LX+D8vb7lhb-enZGVA@ZF%Jv6kZd`k z^VSr|9of%J8zzo00G!07@GK%|DyJX3=-Os`OU#KM*5g-lDBV>GEAfz&`;DC* z#cq5;VLS@AqQrDxKPE~Qpne+IUH~-lCk_VcV#FXe%VIGzXmGG^VsS;dlF=tKfq+U) zYAst{8=)#s0I8j30@=UDFWsBPHJjzSn#mBxBBwJh;OY$_khp<37hT*;aYk@=i!uq5 zlaUy;2J{!!$M5^D%DMzOrR!nJunu92tv3(v`%WMfd;#3S#Tzpe32GU`Rh}$Il+wJd ze;v>RKPWJ&!0JDw4mN?4BY(t4@X=-$it$@rNvRV@U}?9P_A1S1_p)@& zKAn4OwdPr11LfsAkp~Tg=ORWWcvo}?tUZ52?5(KCo-9qk-LK9c?H9-+Y!OE}_M0ft zHa@uyLj?Cj*T*8u_e~9ytV->lw*?flSJvNn$5{mGwY78zR4BW?5`W&%QR|M<%gU&? z`bu|-gWP*p(`~(d)kBW=c8pPgPl$isz5&|Mb@c&d+!c3Hw?8&N-kB>kuz9lDo?~Ge zsG>ZGV+jL58lyvH2B$>x+cHb=LP?b>f}R- zmMiX1_SbcsrD?5Xfq=_V+5Wf>%$4qqKj_80d_A0t)r#7GHT>9UJ@i(%d0Ya|_AkzU z)d8plQ@E`sF}w@p8*;Q|Pr7^9oJ{s%J-gDq7W=%XYQ?b8w%Z0pQ8VX@)s`!Z+(Rc9 zS8L=4o>dT9j5NmlBp_{8SjZZ z^0p0eG!LW>TV!lVaL0}In7e9&8tb*}!=}{F#w)u;+-rWU<3EEH|tXsT!MjefiO&<2=MxoZf#vH#Ok7;qhY^ zW2-aAZe<-j*=$U54BOFyeJ$3ozq&qzTL*;R)q~e7`GpBo#3v$oZg}pMp|cvB+cre$ zT%Z#sWp&l>$F=IVvcc6AAJ{qbD&wvzd-F`k3D)&PU?;pD0V`b&fc1$TADDU3+%59Y z@Dfb87HP=gm67W%wbneFzufN<41Nc7u4ugeLTFoE?#Jy22o_yWpDTmv&79!xy|Yi2 zlLs#(tDX|lzKGBFF*`m(%SQNf^aH5g7R(V_?8Nfhne4va7dX?$%-RIPOJ3X!g-M%> zgKU&!oxjp?`p@51<*AfGUH;Kl3^(z2dCkk(-#Z=^1|4{{rME9%y4L{Zz3YeRR{wl+ z%{Ork=<0wr3;Mi6U4X7aj`E~7$)Y6yr&m?zjDcQPdSE~po{$bK6+YFUuid)04G zE1eNw>u$ieW$&Glqlp7}KZ9I3pdmc8jh??tISBaD&M;L%`#%&(AVCb+7&Dswq=_N} zoCS6g$Z1^v%s`?31%M`S(B$m@(4;E-Smls9w|OPgZ$ve7``{HB zE-}L?QJTzk8S!rCfkWTcPH#Na%^bM6d3x)<$!^auOxEKV-e9_v1!Zb~w4Gt7O8pt% zPahCNOqwHk9tS zsd>*PO!cx^!;>LWtdq~NNqX?dAjO?E&*^g(3Ylw0BWEMM)j!em@5t@=!q39J9P z&k0$!vYw4y7b`;)ek2IrwSwk_(N4+j ze7mT%FpJgw$NeN}>~+NeMt9XZU4_fr-8}Z;$2;B|y7T^w;Auak#fLU>`t}u*(EG;0 zhnUF<(8*K@IlLkvp|{3#JUv7Oq9h| zaOa!ihg@&n-@7rI4HgdRf1lBr9=Dax0u+-Tri%S8tIkpM402jE7`_)F+&?xWh7WbP z5R9H5uA48QR{#|)M&()v1t-UU2=^@UWLDia**&6F_0bI2?dDmQ&R0sT1@@Dm0v`sc z4i(#cXnPfBk*+jwLs^ycUeZ}CiK)Ek3Zp9TL(Ti*W0W?y>O&LpKrgB#*&mZ0XN0C!FM9TZ6SeuCfWTI zQO0F`9A-pe*VG!s6?U6KFUCR6Muzs-I}8lk?oRD41N#HO1h{(e>BDVDl&SyVBt*g>ybUJ-1~ND89X7m;@P^t(7R?fAp?<5 z&Wg65K-P3xjdvv?H^x=pgaif`zb&qCy(o4Rc3T@)RHKbye_F zGQ^yfZkQsAhQibq4NuR179KYK+Td5qqPCYeSvz*8CJ+{N%mcZe)nFVz|XJ~;rbD)ymEP|M4nc(W~f3}RQ%)hoe$a4kQE&o5vUSF1+SOVYub zL>mX9LEF&!+6qDS!XnA3rz4;97Osy?N}|c7_#?NJW@^uZWW>*6`SXR8KuL9>Z%c z$$xOG-fKHFO;U(>TT~SgL(oY<(}Tb+@^#n8h7KLn+{_~^4&twRwgG_;Mc?5@XAYIC z%zq*VtEt9_1>9=h`lTKG^IamV+shu|(eUwvwQ?Rhi+4+JnBEK9U>* zdK+|oe;vjsOC2?NGf6&J?%rg|!2#$`!y(O@o$Tn78i(6IN!&oHwy;!&>OT&NH`XjU)H8_W||o=)rD7tv9-l!auA2 zAhwtU4UM}T*sg3}aP#sNe~G^a9kTqSZu$H}_$JlMs+-`hyW-)z_r~}-&IxD#6sm~G z_c&WeotIV+x?MVHHFQ>M)6tiu7Pqx6Wc(GwY>jMT;B6TCBBiR(f}eoo@B5c{)pc10 zHTN(lA(@J2`TX1*LT11KNN9yuDha}*Kk*|6jy5~ar_lvaS$FU$Jw5>9^!LQU`*Gz8^x((qz>7Irn9( z)5`#ITBuOnWQxf}T#h&5k>bXBT|#l0cuib4|D!R!$`3uS7wnJtY9PYx&&@WD+{0`w z?L5#$)4s=zYt%iyJ%hK$>~ut}qZ+P9V8&Xo@p?(H+`~EY;n&kI9pLF6XWK z^gBaAkQS2f1iRNxr+Tx~$s0O{0^D6gw15zgoOi)9EyOQhsZWO57q)j{xB+Ei%D;;ev7l#%YSAZ zeGC6~=nL%*3#@;1TJG0t)=b%fI~_z#kkkE0n;qPQIr(vL34HqKS;3+!3hS{OaihjG#}GReV%a2nnleuZGb`OG{tM}9_elmE zkhuq8&QC4xKzU#NII@;$O;#0@hIc8*pkDc5>TCgu5WVD&i&IU8EmvkfMFN}n?1F%H z<{+H&hcj8A4&vd1O`b6GkUdV&lh0^!uC$OZmLh9Bcd2>u!wUy&n(8~NvfKL7#bSP& zm~*eVHgK;i4GUEW^iaE53=iC%_`^Si$R=~JuD49%!Sm%@q8&MbN(0s^`>%f8<46M-&g~7P6nX;Ez%ck?Q*Im)^N{VEF+-!y9BH{PqGXao-rET8eSTI5HY|} zp5|Ylt?Dcf7q?L`Ov6rS$?wIJ5X1(c4jQ9kex}b+DEa)Tk36suYijE3zVCtkJZ(k4 zaZM-8~_Htb4VhBMAzj%@;Vrjy&-bkd!nQbErZJ`v&OKl_SIKZk} zkdN&kuhWi4Sn|3l&@&+((0Bu9v+KDns6Y!$2M)KPipV$C1xe)jXoo<(s5eg~D2JC@YQ;PWk$Rjth zVEUA{q%UCK5!S!<_vC*c%U^H#8$^F|%ipZ{w^;nGp?{&pUr_WHEB=Mhf0@N!!u8)& b@s!0LqW(b`HusY9v$J~IM)#`kK7REd^?YQ6 diff --git a/tests/integration/testkit/runtime.ts b/tests/integration/testkit/runtime.ts deleted file mode 100644 index 94ab8a7..0000000 --- a/tests/integration/testkit/runtime.ts +++ /dev/null @@ -1,159 +0,0 @@ -import { - FRAME_BUNDLE_V0, - FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - SIMULATION_MODE, - SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0, - SIMULATOR_BROWSER_SESSION_VIEW_V0, - SIMULATOR_UI_BOOTSTRAP_V0, - computeFrameBundleDigestV0, - type BiometricSimulationScenarioV0, - type FrameBundleV0, - type IssuanceSimulationScenarioV0, - type SimulatorBrowserSessionPortV0, - type SimulatorBrowserSessionViewV0, - type SimulatorUiBootstrapV0, -} from "@clean-start/contracts"; -import { createAuthenticatorServerRuntimeV0 } from "../../../apps/authenticator/src/server/runtime.server"; - -export const PRODUCT_REVISION_UNDER_TEST = - "b7d3949099b175ae41e1a95f4f65ee3c2714d98b" as const; - -export async function sha256Text(value: string): Promise { - const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value)); - return Array.from( - new Uint8Array(digest), - (byte) => byte.toString(16).padStart(2, "0"), - ).join(""); -} - -export async function metadataBundle( - session: SimulatorBrowserSessionViewV0, - accountDigest: string, - frameDigest = "a".repeat(64), -): Promise { - const pending: FrameBundleV0 = { - kind: FRAME_BUNDLE_V0, - mode: SIMULATION_MODE, - sessionId: session.sessionId, - policyId: session.capturePolicy.policyId, - accountPublicMaterialDigestSha256: accountDigest, - nonceDigestSha256: await sha256Text(session.nonceBase64Url), - dataMode: "metadata_only", - frames: [{ - transportIndex: 0, - width: 1, - height: 1, - encoding: "rgba8", - byteLength: 4, - frameDigestSha256: frameDigest, - }], - totalByteLength: 4, - digestAlgorithm: FRAME_BUNDLE_V0_DIGEST_ALGORITHM, - artifactDigestSha256: "0".repeat(64), - }; - return Object.freeze({ - ...pending, - frames: Object.freeze(pending.frames), - artifactDigestSha256: await computeFrameBundleDigestV0(pending), - }); -} - -export interface CompletedScenarioV0 { - readonly browserPort: SimulatorBrowserSessionPortV0; - readonly bootstrap: SimulatorUiBootstrapV0; - readonly created: SimulatorBrowserSessionViewV0; - readonly captureReady: SimulatorBrowserSessionViewV0; - readonly result: Awaited>; - readonly submitInput: { - readonly sessionId: string; - readonly browserHandle: string; - readonly idempotencyKey: string; - readonly nonceBase64Url: string; - readonly frameBundle: FrameBundleV0; - }; -} - -export interface PreparedScenarioV0 { - readonly browserPort: SimulatorBrowserSessionPortV0; - readonly bootstrap: SimulatorUiBootstrapV0; - readonly created: SimulatorBrowserSessionViewV0; - readonly captureReady: SimulatorBrowserSessionViewV0; -} - -export async function prepareScenario( - biometricScenario: BiometricSimulationScenarioV0, - issuanceScenario: IssuanceSimulationScenarioV0, - id = `${biometricScenario}-${issuanceScenario}`, -): Promise { - const runtime = await createAuthenticatorServerRuntimeV0({ - testConfiguration: { - kind: "authenticator_server_test_configuration_v0", - biometricScenario, - issuanceScenario, - }, - }); - const bootstrap = await runtime.browserPort.bootstrap(); - if (bootstrap.kind !== SIMULATOR_UI_BOOTSTRAP_V0) throw new Error("bootstrap_failed"); - const created = await runtime.browserPort.createSession({ - idempotencyKey: `create-${id}`, - }); - if (created.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) throw new Error("create_failed"); - const demo = await runtime.browserPort.beginDemoAuthenticator({ - sessionId: created.sessionId, - browserHandle: created.browserHandle, - idempotencyKey: `demo-${id}`, - }); - if (demo.kind !== SIMULATOR_BROWSER_DEMO_AUTHENTICATOR_READY_V0) { - throw new Error("demo_begin_failed"); - } - const completed = await runtime.browserPort.completeDemoAuthenticator({ - sessionId: created.sessionId, - browserHandle: created.browserHandle, - idempotencyKey: demo.idempotencyKey, - completionHandle: demo.completionHandle, - }); - if (completed.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) { - throw new Error("demo_complete_failed"); - } - const captureReady = await runtime.browserPort.prepareCapture({ - sessionId: completed.sessionId, - browserHandle: completed.browserHandle, - }); - if (captureReady.kind !== SIMULATOR_BROWSER_SESSION_VIEW_V0) { - throw new Error("capture_prepare_failed"); - } - return Object.freeze({ - browserPort: runtime.browserPort, - bootstrap, - created, - captureReady, - }); -} - -export async function completeScenario( - biometricScenario: BiometricSimulationScenarioV0, - issuanceScenario: IssuanceSimulationScenarioV0, - id = `${biometricScenario}-${issuanceScenario}`, -): Promise { - const prepared = await prepareScenario(biometricScenario, issuanceScenario, id); - const { browserPort, bootstrap, created, captureReady } = prepared; - const submitInput = Object.freeze({ - sessionId: captureReady.sessionId, - browserHandle: captureReady.browserHandle, - idempotencyKey: `capture-${id}`, - nonceBase64Url: captureReady.nonceBase64Url, - frameBundle: await metadataBundle( - captureReady, - bootstrap.accountPublicMaterialDigestSha256, - ), - }); - const result = await browserPort.submitCapture(submitInput); - return Object.freeze({ - browserPort, - bootstrap, - created, - captureReady, - result, - submitInput, - }); -} diff --git a/tests/integration/testkit/ui.ts b/tests/integration/testkit/ui.ts deleted file mode 100644 index c0af621..0000000 --- a/tests/integration/testkit/ui.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { - AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1, - ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1, - ENROLLMENT_SESSION_STATES_V2, - makeAuthenticatorUiSnapshotV1, - type AuthenticatorUiDetailCodeV1, - type AuthenticatorUiStateIdV1, - type EnrollmentSessionStateV2, -} from "@clean-start/contracts"; - -function detailFor(state: AuthenticatorUiStateIdV1): AuthenticatorUiDetailCodeV1 | null { - if (state === "capture_guidance_adjust") return "move_closer"; - if (state === "capture_guidance_retake") return "image_blurry"; - if (state === "capture_guidance_unavailable") return "framing_guidance_unavailable"; - if (state === "capture_error") return "permission_denied"; - if (state === "session_error") return "network_timeout"; - if (state === "return_callback_failed") return "navigation_failed"; - if (state === "flow_failed") return "safe_internal_error"; - return null; -} - -function authoritativeFor(state: AuthenticatorUiStateIdV1): EnrollmentSessionStateV2 | null { - for (const serverState of ENROLLMENT_SESSION_STATES_V2) { - if (ENROLLMENT_SESSION_ALLOWED_UI_STATES_V1[serverState].includes(state)) { - return serverState; - } - } - return null; -} - -export function snapshotFor(state: AuthenticatorUiStateIdV1) { - return makeAuthenticatorUiSnapshotV1({ - state, - detailCode: detailFor(state), - authoritativeSessionState: authoritativeFor(state), - rpPresentationId: state === "request_checking" ? null : "zoom_demo", - visualSource: AUTHENTICATOR_UI_DEFAULT_VISUAL_SOURCE_V1[state], - }); -} diff --git a/tsconfig.client.json b/tsconfig.client.json index dd6809b..b0078bf 100644 --- a/tsconfig.client.json +++ b/tsconfig.client.json @@ -1,17 +1,22 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "lib": ["DOM", "DOM.Iterable", "ES2022"], - "types": ["vite/client"] + "lib": [ + "DOM", + "DOM.Iterable", + "ES2022" + ], + "types": [ + "vite/client" + ] }, "include": [ "apps/authenticator/src/**/*.ts", "apps/authenticator/src/**/*.tsx", - "apps/authenticator/static-demo/**/*.tsx", - "packages/browser-admission/src/**/*.ts", - "packages/client-quality/src/**/*.ts", - "packages/contracts/src/**/*.ts", - "packages/frame-capture/src/**/*.ts" + "packages/browser-admission/src/**/*.ts" ], - "exclude": ["apps/authenticator/src/server/**", "apps/authenticator/src/**/*.server.*"] + "exclude": [ + "apps/authenticator/src/server/**", + "apps/authenticator/src/**/*.server.*" + ] } diff --git a/tsconfig.json b/tsconfig.json index e24fd6d..67f8b9e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,9 @@ { "compilerOptions": { "target": "ES2022", - "lib": ["ES2022"], + "lib": [ + "ES2022" + ], "strict": true, "noEmit": true, "module": "ESNext", @@ -13,16 +15,9 @@ "types": [], "baseUrl": ".", "paths": { - "@clean-start/contracts": ["packages/contracts/src/index.ts"], - "@clean-start/browser-admission": ["packages/browser-admission/src/index.ts"], - "@clean-start/frame-capture": ["packages/frame-capture/src/index.ts"], - "@clean-start/client-quality": ["packages/client-quality/src/index.ts"], - "@clean-start/session-gateway": ["services/session-gateway/src/index.ts"], - "@clean-start/biometric-verification-port": ["packages/biometric-verification-port/src/index.ts"], - "@clean-start/staging-issuance-port": ["packages/staging-issuance-port/src/index.ts"], - "@clean-start/simulated-biometric-verifier": ["services/simulated-biometric-verifier/src/index.ts"], - "@clean-start/simulated-staging-issuer": ["services/simulated-staging-issuer/src/index.ts"], - "@clean-start/app-config": ["config/authenticator-app-v0.ts"] + "@clean-start/browser-admission": [ + "packages/browser-admission/src/index.ts" + ] } }, "files": [] diff --git a/tsconfig.server.json b/tsconfig.server.json index de5aaff..3d650a2 100644 --- a/tsconfig.server.json +++ b/tsconfig.server.json @@ -1,17 +1,17 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "lib": ["ES2022", "WebWorker"], - "types": ["bun", "node"] + "lib": [ + "ES2022", + "WebWorker" + ], + "types": [ + "bun", + "node" + ] }, "include": [ "apps/authenticator/src/server/**/*.ts", - "apps/authenticator/src/**/*.server.ts", - "apps/authenticator/src/**/*.server.tsx", - "config/**/*.ts", - "packages/biometric-verification-port/src/**/*.ts", - "packages/contracts/src/**/*.ts", - "packages/staging-issuance-port/src/**/*.ts", - "services/**/*.ts" + "config/**/*.ts" ] } diff --git a/vite.config.ts b/vite.config.ts index ceb3a4f..41ed613 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -38,10 +38,7 @@ export default defineConfig({ publicDir: "public", resolve: { alias: { - "@clean-start/contracts": path("./packages/contracts/src/index.ts"), "@clean-start/browser-admission": path("./packages/browser-admission/src/index.ts"), - "@clean-start/frame-capture": path("./packages/frame-capture/src/index.ts"), - "@clean-start/client-quality": path("./packages/client-quality/src/index.ts"), }, }, server: { diff --git a/vite.static-demo.config.ts b/vite.static-demo.config.ts deleted file mode 100644 index c37f190..0000000 --- a/vite.static-demo.config.ts +++ /dev/null @@ -1,87 +0,0 @@ -import react from "@vitejs/plugin-react"; -import { copyFileSync, mkdirSync, writeFileSync } from "node:fs"; -import { fileURLToPath, URL } from "node:url"; -import { defineConfig, type Plugin } from "vite"; -import { AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "./config/authenticator-app-v0"; - -// Static demo build: `apps/authenticator/static-demo` runs the staging simulator -// inside the page, so the output under `apps/authenticator/dist-static` is a -// plain static site. Deploy that folder to Cloudflare Pages or Vercel. - -function path(relativePath: string): string { - return fileURLToPath(new URL(relativePath, import.meta.url)); -} - -const outDir = path("./apps/authenticator/dist-static"); - -const MEDIAPIPE_RUNTIME_FILES = [ - "vision_wasm_internal.js", - "vision_wasm_internal.wasm", - "vision_wasm_module_internal.js", - "vision_wasm_module_internal.wasm", - "vision_wasm_nosimd_internal.js", - "vision_wasm_nosimd_internal.wasm", -] as const; - -// The served app sends these headers from the Bun server; static hosts need -// them as files. Cache-Control is left to the host so hashed assets stay cacheable. -const STATIC_HEADERS = Object.entries(AUTHENTICATOR_APP_SECURITY_HEADERS_V0) - .filter(([name]) => name !== "Cache-Control"); - -function staticDemoHostFiles(): Plugin { - return { - name: "clean-start-static-demo-host-files", - closeBundle() { - mkdirSync(`${outDir}/mediapipe`, { recursive: true }); - for (const name of MEDIAPIPE_RUNTIME_FILES) { - copyFileSync( - path(`./node_modules/@mediapipe/tasks-vision/wasm/${name}`), - `${outDir}/mediapipe/${name}`, - ); - } - writeFileSync( - `${outDir}/_headers`, - `/*\n${STATIC_HEADERS.map(([name, value]) => ` ${name}: ${value}`).join("\n")}\n`, - ); - writeFileSync(`${outDir}/.assetsignore`, "vercel.json\n"); - writeFileSync(`${outDir}/vercel.json`, `${JSON.stringify({ - rewrites: [{ source: "/(.*)", destination: "/index.html" }], - headers: [{ - source: "/(.*)", - headers: STATIC_HEADERS.map(([key, value]) => ({ key, value })), - }], - }, null, 2)}\n`); - }, - }; -} - -export default defineConfig({ - root: path("./apps/authenticator/static-demo"), - publicDir: path("./apps/authenticator/public"), - plugins: [react(), staticDemoHostFiles()], - resolve: { - alias: { - "@clean-start/contracts": path("./packages/contracts/src/index.ts"), - "@clean-start/browser-admission": path("./packages/browser-admission/src/index.ts"), - "@clean-start/frame-capture": path("./packages/frame-capture/src/index.ts"), - "@clean-start/client-quality": path("./packages/client-quality/src/index.ts"), - "@clean-start/session-gateway": path("./services/session-gateway/src/index.ts"), - "@clean-start/biometric-verification-port": path("./packages/biometric-verification-port/src/index.ts"), - "@clean-start/staging-issuance-port": path("./packages/staging-issuance-port/src/index.ts"), - "@clean-start/simulated-biometric-verifier": path("./services/simulated-biometric-verifier/src/index.ts"), - "@clean-start/simulated-staging-issuer": path("./services/simulated-staging-issuer/src/index.ts"), - "@clean-start/app-config": path("./config/authenticator-app-v0.ts"), - }, - }, - build: { - target: "es2022", - outDir, - emptyOutDir: true, - sourcemap: false, - }, - preview: { - host: "127.0.0.1", - port: 4174, - strictPort: true, - }, -}); From 505b5e5bc83fb7174a2d7d1cfd965bb77d50a5a9 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Fri, 9 Oct 2026 12:35:13 -0700 Subject: [PATCH 07/38] Restore provider PRF byte compatibility and accurate wallet errors --- apps/authenticator/src/App.tsx | 4 +- apps/authenticator/src/wallet/errors.ts | 13 +++++++ apps/authenticator/src/wallet/persistence.ts | 4 +- apps/authenticator/src/wallet/prf-result.ts | 31 +++++++++++++++ apps/authenticator/src/wallet/registration.ts | 3 +- apps/authenticator/src/wallet/session.ts | 32 ++++++++-------- apps/authenticator/test/prf-result.test.ts | 38 +++++++++++++++++++ .../browser/authenticator.browser.spec.ts | 13 ++++++- 8 files changed, 118 insertions(+), 20 deletions(-) create mode 100644 apps/authenticator/src/wallet/errors.ts create mode 100644 apps/authenticator/src/wallet/prf-result.ts create mode 100644 apps/authenticator/test/prf-result.test.ts diff --git a/apps/authenticator/src/App.tsx b/apps/authenticator/src/App.tsx index c25c175..02c34ab 100644 --- a/apps/authenticator/src/App.tsx +++ b/apps/authenticator/src/App.tsx @@ -1,6 +1,7 @@ import { useEffect, useRef, useState } from "react"; import { CameraPreview } from "./components/CameraPreview"; import { openAuthenticator } from "./wallet/session"; +import { walletOpenErrorMessage } from "./wallet/errors"; import { abortable } from "./lib/async"; import type { WalletKit, CredentialMetadata } from "./lib/walletkit"; import { issueSelfieCredential } from "./lib/selfie-issuance"; @@ -102,8 +103,7 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof let current: WalletKit; try { current = await services.open(signal, setProgress); } catch (cause) { - throw new Error(cause instanceof Error && cause.message.startsWith("Could not ") - ? cause.message : "Passkey setup or unlock did not complete. Use a PRF-capable passkey provider and try again.", { cause }); + throw new Error(walletOpenErrorMessage(cause), { cause }); } if (signal.aborted) { current.terminate(); signal.throwIfAborted(); } activeWallet.current = current; setWallet(current); diff --git a/apps/authenticator/src/wallet/errors.ts b/apps/authenticator/src/wallet/errors.ts new file mode 100644 index 0000000..093c0d9 --- /dev/null +++ b/apps/authenticator/src/wallet/errors.ts @@ -0,0 +1,13 @@ +/** Deliberate UI-safe failures; raw worker/provider errors may contain sensitive data. */ +export class WalletOpenError extends Error {} + +export function walletOpenErrorMessage(cause: unknown): string { + if (cause instanceof WalletOpenError) return cause.message; + if (cause instanceof Error) { + if (cause.name === "NotAllowedError") return "The passkey request was cancelled, timed out, or not permitted. Try again with your existing passkey provider."; + if (cause.name === "AbortError" || cause.name === "TimeoutError") return "Opening the wallet was interrupted or timed out. Try unlocking again."; + if (cause.name === "SecurityError") return "The browser blocked this operation. Open the authenticator on localhost or HTTPS in a top-level tab."; + if (cause.name === "QuotaExceededError") return "The browser has insufficient storage for the encrypted wallet. Free some space and retry without clearing this wallet's site data."; + } + return "The encrypted wallet could not initialize. Close other authenticator tabs and retry."; +} diff --git a/apps/authenticator/src/wallet/persistence.ts b/apps/authenticator/src/wallet/persistence.ts index 8ad29ea..eeac4f2 100644 --- a/apps/authenticator/src/wallet/persistence.ts +++ b/apps/authenticator/src/wallet/persistence.ts @@ -1,9 +1,11 @@ +import { WalletOpenError } from "./errors"; + export type RegistrationState = "submitting" | "finalized"; export function registrationState(credentialId: string): RegistrationState | null { const value = window.localStorage.getItem(`world-id-staging-registration-v1:${credentialId}`); if (value !== null && value !== "submitting" && value !== "finalized") { - throw new Error("Saved registration status is invalid. Do not clear site data to retry registration."); + throw new WalletOpenError("Saved registration status is invalid. Do not clear site data to retry registration."); } return value; } diff --git a/apps/authenticator/src/wallet/prf-result.ts b/apps/authenticator/src/wallet/prf-result.ts new file mode 100644 index 0000000..f8cceae --- /dev/null +++ b/apps/authenticator/src/wallet/prf-result.ts @@ -0,0 +1,31 @@ +// Browser APIs return ArrayBuffers, but injected providers may return typed-array +// views or buffers from another realm. Normalize bytes without changing derivation. +// 1Password FS-5593 also reports plain byte arrays in its browser extension. +export function prfBytes(value: unknown): Uint8Array | undefined { + if (Array.isArray(value)) { + // Check every index: Array.every would skip holes, and Uint8Array would + // silently coerce missing, fractional, or out-of-range values. + if (value.length !== 32) return undefined + for (let i = 0; i < value.length; i++) { + if (!Number.isInteger(value[i]) || value[i] < 0 || value[i] > 255) return undefined + } + return Uint8Array.from(value) + } + let view: Uint8Array + try { + if (ArrayBuffer.isView(value)) { + view = new Uint8Array(value.buffer, value.byteOffset, value.byteLength) + } else { + // Use the native brand check; instanceof rejects cross-realm ArrayBuffers. + const byteLength = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength')!.get!.call(value) + view = new Uint8Array(value as ArrayBuffer, 0, byteLength) + } + } catch { + return undefined + } + try { + return view.byteLength === 32 ? new Uint8Array(view) : undefined + } finally { + view.fill(0) + } +} diff --git a/apps/authenticator/src/wallet/registration.ts b/apps/authenticator/src/wallet/registration.ts index 445afbf..9e61b65 100644 --- a/apps/authenticator/src/wallet/registration.ts +++ b/apps/authenticator/src/wallet/registration.ts @@ -1,3 +1,4 @@ +import { WalletOpenError } from "./errors"; import type { WalletKit } from "../lib/walletkit"; import { abortable, pause } from "../lib/async"; import { registrationState, saveRegistrationState } from "./persistence"; @@ -38,6 +39,6 @@ export async function activateStagingWallet( saveRegistrationState(credentialId, "finalized"); } catch (cause) { wallet.terminate(); - throw new Error(`Could not ${stage}. Unlock to check again. No automatic resubmission was made.`, { cause }); + throw new WalletOpenError(`Could not ${stage}. Unlock to check again. No automatic resubmission was made.`, { cause }); } } diff --git a/apps/authenticator/src/wallet/session.ts b/apps/authenticator/src/wallet/session.ts index fc7445c..47dd8d1 100644 --- a/apps/authenticator/src/wallet/session.ts +++ b/apps/authenticator/src/wallet/session.ts @@ -2,6 +2,8 @@ import { initializeWalletKit, type CredentialStore, type WalletKit } from "@worl import { WalletKit as AccountWallet } from "../lib/walletkit"; import { activateStagingWallet } from "./registration"; import { abortable } from "../lib/async"; +import { prfBytes } from "./prf-result"; +import { WalletOpenError } from "./errors"; const PROFILE_KEY = "world-id-wallet-v1"; const PRF_INPUT = new TextEncoder().encode("world-id/web-authenticator/prf/v1"); @@ -18,7 +20,7 @@ export interface WalletSession { } type PrfOutputs = AuthenticationExtensionsClientOutputs & { - prf?: { results?: { first?: ArrayBuffer } }; + prf?: { results?: { first?: unknown } }; }; export function parseWalletProfile(raw: string): WalletProfile { @@ -28,7 +30,7 @@ export function parseWalletProfile(raw: string): WalletProfile { !("version" in value) || value.version !== 1 || !("credentialId" in value) || typeof value.credentialId !== "string" || !/^(?:[0-9a-f]{2}){1,1024}$/.test(value.credentialId) - ) throw new Error("Saved wallet metadata is invalid. Do not clear site data if you need this wallet."); + ) throw new WalletOpenError("Saved wallet metadata is invalid. Do not clear site data if you need this wallet."); return { version: 1, credentialId: value.credentialId }; } @@ -36,7 +38,7 @@ export async function deriveWalletKeys(prf: Uint8Array): Promise<{ seed: Uint8Array; databaseKey: Uint8Array; }> { - if (prf.byteLength !== 32) throw new Error("The passkey returned invalid PRF output."); + if (prf.byteLength !== 32) throw new WalletOpenError("The passkey returned invalid PRF output."); const key = await crypto.subtle.importKey("raw", prf, "HKDF", false, ["deriveBits"]); const derive = async (purpose: string) => new Uint8Array(await crypto.subtle.deriveBits({ name: "HKDF", hash: "SHA-256", salt: KEY_SALT, @@ -57,7 +59,7 @@ export async function openAuthenticator(signal: AbortSignal, progress: (message: account = new AccountWallet(session.client, session.store, "staging", "us"); await activateStagingWallet(account, seed, credentialId, deadline, progress); }); - if (!account) throw new Error("The authenticator could not be opened."); + if (!account) throw new WalletOpenError("The authenticator could not be opened."); return account; } @@ -65,16 +67,16 @@ type Activate = (session: WalletSession, seed: Uint8Array, credentialId: string, async function openWithPasskey(signal: AbortSignal, activate?: Activate): Promise { if (!window.isSecureContext || typeof PublicKeyCredential === "undefined") { - throw new Error("Use a secure browser with a PRF-capable passkey provider."); + throw new WalletOpenError("Use a secure browser with a PRF-capable passkey provider."); } if (window.top !== window.self || document.visibilityState !== "visible") { - throw new Error("Open this authenticator in a visible top-level browser tab."); + throw new WalletOpenError("Open this authenticator in a visible top-level browser tab."); } if (navigator.locks === undefined) { - throw new Error("This browser cannot safely coordinate wallet setup across tabs."); + throw new WalletOpenError("This browser cannot safely coordinate wallet setup across tabs."); } return navigator.locks.request("world-id-wallet-setup-v1", { ifAvailable: true }, async (lock) => { - if (lock === null) throw new Error("Wallet setup is already running in another tab."); + if (lock === null) throw new WalletOpenError("Wallet setup is already running in another tab."); return openWalletUnderLock(signal, activate); }); } @@ -96,9 +98,9 @@ async function openWalletUnderLock(signal: AbortSignal, activate?: Activate): Pr extensions: { prf: {} } as AuthenticationExtensionsClientInputs, }, }); - if (!(credential instanceof PublicKeyCredential)) throw new Error("Passkey creation was not completed."); + if (!(credential instanceof PublicKeyCredential)) throw new WalletOpenError("Passkey creation was not completed."); const extensions = credential.getClientExtensionResults() as AuthenticationExtensionsClientOutputs & { prf?: { enabled?: boolean } }; - if (extensions.prf?.enabled !== true) throw new Error("This passkey provider does not support PRF. Choose a PRF-capable provider."); + if (extensions.prf?.enabled !== true) throw new WalletOpenError("This passkey provider does not support PRF. Choose a PRF-capable provider."); profile = { version: 1, credentialId: Array.from(new Uint8Array(credential.rawId), b => b.toString(16).padStart(2, "0")).join("") }; // Persist only the public credential ID, before opening any encrypted storage. window.localStorage.setItem(PROFILE_KEY, JSON.stringify(profile)); @@ -114,17 +116,17 @@ async function openWalletUnderLock(signal: AbortSignal, activate?: Activate): Pr }, }); if (!(credential instanceof PublicKeyCredential) || credential.type !== "public-key") { - throw new Error("Passkey unlock was not completed."); + throw new WalletOpenError("Passkey unlock was not completed."); } const actualId = new Uint8Array(credential.rawId); if (actualId.length !== credentialId.length || actualId.some((byte, index) => byte !== credentialId[index])) { - throw new Error("The passkey does not match this wallet."); + throw new WalletOpenError("The passkey does not match this wallet."); } const output = (credential.getClientExtensionResults() as PrfOutputs).prf?.results?.first; - if (!(output instanceof ArrayBuffer) || output.byteLength !== 32) { - throw new Error("This passkey did not provide the PRF output needed to unlock your wallet."); + const prf = prfBytes(output); + if (!prf) { + throw new WalletOpenError("This passkey did not provide the PRF output needed to unlock your wallet."); } - const prf = new Uint8Array(output); let keys: Awaited> | undefined; let client: WalletKit | undefined; const opening = new AbortController(); diff --git a/apps/authenticator/test/prf-result.test.ts b/apps/authenticator/test/prf-result.test.ts new file mode 100644 index 0000000..a1dcf21 --- /dev/null +++ b/apps/authenticator/test/prf-result.test.ts @@ -0,0 +1,38 @@ +import { expect, test } from "bun:test"; +import { runInNewContext } from "node:vm"; +import { prfBytes } from "../src/wallet/prf-result"; +import { deriveWalletKeys } from "../src/wallet/session"; +import { WalletOpenError, walletOpenErrorMessage } from "../src/wallet/errors"; + +test("provider arrays, typed arrays and native buffers derive the same PR9 wallet keys", async () => { + const bytes = Array.from({ length: 32 }, (_, index) => index); + const expected = await deriveWalletKeys(Uint8Array.from(bytes)); + for (const output of [bytes, Uint8Array.from(bytes), Uint8Array.from(bytes).buffer]) { + expect(await deriveWalletKeys(prfBytes(output)!)).toEqual(expected); + } +}); + +test("normalizes cross-realm buffers and sliced views without reading outside the view", () => { + const backing = new Uint8Array(40).fill(9); + expect(prfBytes(backing.subarray(4, 36))).toEqual(new Uint8Array(32).fill(9)); + expect(backing[0]).toBe(9); + expect(backing.subarray(4, 36).every(byte => byte === 0)).toBe(true); + expect(prfBytes(runInNewContext("new Uint8Array(32).fill(7).buffer"))).toEqual(new Uint8Array(32).fill(7)); +}); + +test("malformed PRF results fail closed without coercing missing or invalid bytes", () => { + for (const output of [undefined, null, "bytes", new Array(32), Array(31).fill(1), Array(33).fill(1), + Array(32).fill(-1), Array(32).fill(256), Array(32).fill(1.5), Array(32).fill("7"), Array(32).fill(NaN), new Uint8Array(31)]) { + expect(prfBytes(output)).toBeUndefined(); + } +}); + +test("only deliberate PRF failures blame PRF; cancellation and storage failures stay distinct", () => { + expect(walletOpenErrorMessage(new WalletOpenError("This passkey provider does not support PRF."))).toContain("does not support PRF"); + expect(walletOpenErrorMessage(new WalletOpenError("Wallet setup is already running in another tab."))).toContain("another tab"); + expect(walletOpenErrorMessage(new DOMException("sensitive detail", "NotAllowedError"))).toContain("cancelled"); + expect(walletOpenErrorMessage(new DOMException("sensitive detail", "QuotaExceededError"))).toContain("insufficient storage"); + const unknown = walletOpenErrorMessage(new Error("private worker payload")); + expect(unknown).toContain("could not initialize"); + expect(unknown).not.toContain("private worker payload"); +}); diff --git a/tests/integration/browser/authenticator.browser.spec.ts b/tests/integration/browser/authenticator.browser.spec.ts index d054fe9..5cea6ae 100644 --- a/tests/integration/browser/authenticator.browser.spec.ts +++ b/tests/integration/browser/authenticator.browser.spec.ts @@ -67,7 +67,8 @@ if (!("bun" in process.versions)) { expect(violations).toEqual([]); }); - test("real virtual PRF and WalletKit vault survive a failed staging registration without resubmitting", async ({ page, browserName }) => { + for (const providerArrays of [false, true]) { + test(`real virtual PRF and WalletKit vault survive a failed staging registration without resubmitting (${providerArrays ? "provider arrays" : "native buffers"})`, async ({ page, browserName }) => { test.skip(browserName !== "chromium", "Virtual PRF requires Chromium CDP"); test.setTimeout(120_000); const cdp = await page.context().newCDPSession(page); @@ -76,6 +77,15 @@ if (!("bun" in process.versions)) { protocol: "ctap2", ctap2Version: "ctap2_1", transport: "internal", hasResidentKey: true, hasUserVerification: true, isUserVerified: true, automaticPresenceSimulation: true, hasPrf: true, } }); + if (providerArrays) await page.addInitScript(() => { + const original = PublicKeyCredential.prototype.getClientExtensionResults; + PublicKeyCredential.prototype.getClientExtensionResults = function () { + const output = original.call(this); + const result = (output as unknown as { prf?: { results?: { first?: unknown } } }).prf?.results; + if (result?.first instanceof ArrayBuffer) result.first = Array.from(new Uint8Array(result.first)); + return output; + }; + }); let registrations = 0; await page.route("https://**/*", async route => { if (new URL(route.request().url()).pathname === "/create-account") registrations++; @@ -95,4 +105,5 @@ if (!("bun" in process.versions)) { expect(registrations).toBe(before); expect(await page.evaluate(() => localStorage.getItem("world-id-wallet-v1"))).toBe(saved["world-id-wallet-v1"]); }); + } } From 622433073e981be343d352b09f9154965469100f Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Fri, 9 Oct 2026 12:43:24 -0700 Subject: [PATCH 08/38] Add opt-in developer panel for credential vault inspection --- README.md | 9 +++ apps/authenticator/src/App.tsx | 33 ++++++++- .../src/components/DeveloperPanel.tsx | 61 +++++++++++++++++ apps/authenticator/src/styles/app.css | 31 +++++++-- apps/authenticator/test/app.test.tsx | 63 ++++++++++++++++-- docs/review/dev-desktop.png | Bin 0 -> 132052 bytes docs/review/dev-mobile.png | Bin 0 -> 113892 bytes docs/review/request-desktop.png | Bin 53695 -> 56920 bytes docs/review/request-mobile.png | Bin 41265 -> 43578 bytes .../browser/authenticator.browser.spec.ts | 28 ++++++++ 10 files changed, 214 insertions(+), 11 deletions(-) create mode 100644 apps/authenticator/src/components/DeveloperPanel.tsx create mode 100644 docs/review/dev-desktop.png create mode 100644 docs/review/dev-mobile.png diff --git a/README.md b/README.md index e362b84..012fd93 100644 --- a/README.md +++ b/README.md @@ -77,9 +77,18 @@ multiple local checkouts. Run one issuer process per directory; the in-memory concurrency guard is not a distributed lock. The optional MediaPipe camera preview stays local and provides framing guidance. +It uses Face Landmarker through CPU/WASM, not ONNX. It does **not** supply the issuer input or establish liveness. TEE capture, challenge verification and production Selfie Check issuance remain separate integrations. +The **Dev mode** switch is off by default and resets on reload. It opens a side +panel (below the authenticator on narrow screens) with credential descriptions, +IDs, dates, vault refresh and confirmed local deletion, plus request and runtime +details. Unlock the wallet before inspecting credentials. Vault mutations are +disabled during active operations and pending proof delivery. The inspector never +shows secret keys, PRF output, blinding factors or proof payloads. Deleting a local +credential does not delete the passkey, account registration or issuer record. + ## Storage PR #9's public profile (`world-id-wallet-v1`), PRF input, HKDF labels and OPFS path diff --git a/apps/authenticator/src/App.tsx b/apps/authenticator/src/App.tsx index 02c34ab..f3f0136 100644 --- a/apps/authenticator/src/App.tsx +++ b/apps/authenticator/src/App.tsx @@ -1,5 +1,6 @@ import { useEffect, useRef, useState } from "react"; import { CameraPreview } from "./components/CameraPreview"; +import { DeveloperPanel } from "./components/DeveloperPanel"; import { openAuthenticator } from "./wallet/session"; import { walletOpenErrorMessage } from "./wallet/errors"; import { abortable } from "./lib/async"; @@ -26,6 +27,7 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof const [configurationError, setConfigurationError] = useState(false); const [preview, setPreview] = useState(false); const [expired, setExpired] = useState(false); + const [devMode, setDevMode] = useState(false); const operation = useRef(null); const activeWallet = useRef(null); const retainedProof = useRef(null); @@ -93,7 +95,7 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof signal.throwIfAborted(); setRecords(next); return next; } catch (cause) { - closeWallet(); + closeWallet(); setProgress(""); throw new Error("Could not read the encrypted vault. Unlock again to retry.", { cause }); } } @@ -155,8 +157,30 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof : screen === "delivery" ? "Sending your proof" : screen === "enroll" ? "Set up Selfie Check" : incoming ? "Review your request" : wallet ? "Your World ID wallet" : "World ID authenticator"; const finished = screen === "done" || screen === "cancelled"; + const vaultDisabled = busy || screen === "delivery" || finished; + + const refreshVault = () => run(async signal => { + if (!wallet || vaultDisabled) return; + await refresh(wallet, signal); + setProgress("Credential vault refreshed."); + }); + const deleteCredential = (id: bigint) => run(async signal => { + if (!wallet || vaultDisabled || !records.some(record => record.credentialId === id)) return; + setProgress("Deleting local credential…"); + try { + await abortable(wallet.deleteCredential(id), AbortSignal.any([signal, AbortSignal.timeout(15_000)])); + signal.throwIfAborted(); + } catch (cause) { + closeWallet(); setProgress(""); + throw new Error("Credential deletion could not be confirmed. Unlock again to check the vault before retrying.", { cause }); + } + await refresh(wallet, signal); + setProgress("Local credential deleted."); + }); - return + {devMode && void refreshVault()} onDelete={id => void deleteCredential(id)} />} + + ; } diff --git a/apps/authenticator/src/components/DeveloperPanel.tsx b/apps/authenticator/src/components/DeveloperPanel.tsx new file mode 100644 index 0000000..a1889fa --- /dev/null +++ b/apps/authenticator/src/components/DeveloperPanel.tsx @@ -0,0 +1,61 @@ +import { useState } from "react"; +import type { CredentialMetadata } from "../lib/walletkit"; +import type { IncomingRequest } from "../lib/requests/incoming-request"; +import { credentialRequirementsLabel } from "../lib/requests/proof-request"; +import { LIVE_GUIDANCE_MODEL_V1 } from "../walkthrough/model-provenance"; + +function credentialDescription(schema: bigint) { + if (schema === 11n) return { name: "Selfie Check", description: "Schema 11. A proof can disclose the uniqueness score. Credentials issued by this local flow use synthetic face data." }; + if (schema === 1n) return { name: "Orb", description: "Schema 1. Used for requests accepting Orb verification. Orb enrollment and transfer are not available here." }; + if (schema === 128n) return { name: "Faux", description: "Schema 128. A development credential; it does not establish face verification." }; + return { name: "Credential", description: "No description is available for this issuer schema." }; +} + +function date(value: bigint) { return new Date(Number(value) * 1000).toLocaleString(); } + +export function DeveloperPanel({ records, unlocked, disabled, incoming, canIssue, configurationError, preview, onRefresh, onDelete }: { + records: CredentialMetadata[]; + unlocked: boolean; + disabled: boolean; + incoming: IncomingRequest | null; + canIssue: boolean; + configurationError: boolean; + preview: boolean; + onRefresh: () => void; + onDelete: (id: bigint) => void; +}) { + const [selected, setSelected] = useState(null); + const pending = records.find(record => record.credentialId === selected); + return ; +} diff --git a/apps/authenticator/src/styles/app.css b/apps/authenticator/src/styles/app.css index 4613993..ba5875d 100644 --- a/apps/authenticator/src/styles/app.css +++ b/apps/authenticator/src/styles/app.css @@ -501,15 +501,38 @@ h1:focus { } @media (min-width: 394px) { - body { - padding-inline: calc((100vw - 393px) / 2); - } - .app-main { box-shadow: 0 0 40px rgb(0 0 0 / 8%); } } +.dev-mode-bar { display: flex; justify-content: flex-end; max-width: 1040px; margin: 0 auto; padding: 8px 16px; } +.dev-mode-switch { display: flex; align-items: center; gap: 12px; padding: 0 12px; border: 1px solid #d8d8d8; border-radius: 999px; background: #fff; color: #444; font-size: 13px; } +.dev-mode-switch span { border-radius: 999px; padding: 3px 10px; background: #eee; } +.dev-mode-switch[aria-checked="true"] span { background: #1f1f1f; color: #fff; } +.authenticator-shell .app-main { min-height: calc(100svh - 60px); min-height: calc(100dvh - 60px); } +.authenticator-layout { margin: 0 auto; } +.developer-panel { min-width: 0; margin: 24px 16px; padding: 24px; border: 1px solid #ddd; border-radius: 20px; background: #fff; font-size: 14px; line-height: 1.55; overflow-wrap: anywhere; } +.developer-panel h2 { font-size: 24px; margin: 0 0 8px; } +.developer-panel h3 { font-size: 16px; margin: 0 0 8px; } +.developer-panel p { margin: 8px 0 16px; } +.developer-panel .dev-eyebrow { color: #555; font-size: 12px; text-transform: uppercase; letter-spacing: .08em; margin: 0 0 8px; } +.developer-panel section { border-top: 1px solid #e5e5e5; padding-top: 20px; margin-top: 20px; } +.developer-panel summary { cursor: pointer; font-weight: 600; padding: 12px 0; } +.developer-panel summary span { font-weight: 400; color: #555; } +.developer-panel button { border: 1px solid #ccc; border-radius: 10px; padding: 8px 12px; background: #fff; color: #222; font-size: 13px; } +.developer-panel dl { margin: 12px 0; } +.developer-panel dt { color: #555; font-size: 12px; margin-top: 10px; } +.developer-panel dd { margin: 2px 0 0; } +.developer-panel code { font-size: 12px; } +.dev-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; justify-content: space-between; } +.dev-credential { border-top: 1px solid #eee; padding-bottom: 8px; } +.dev-notice, .dev-confirm { background: #f5f5f5; padding: 12px; border-radius: 10px; } +@media (min-width: 850px) { + .authenticator-shell--dev .authenticator-layout { display: grid; grid-template-columns: 393px minmax(0, 440px); gap: 32px; max-width: 913px; padding: 0 24px; align-items: start; } + .developer-panel { margin: 0 0 24px; } +} + @media (prefers-reduced-motion: reduce) { *, *::before, diff --git a/apps/authenticator/test/app.test.tsx b/apps/authenticator/test/app.test.tsx index 78773ce..e0c1574 100644 --- a/apps/authenticator/test/app.test.tsx +++ b/apps/authenticator/test/app.test.tsx @@ -13,19 +13,23 @@ let restore: (() => void) | undefined; afterEach(() => { cleanup(); restore?.(); }); async function fixture(schema: number, available = false) { const { payload } = await signedRequest(schema); - let records = available ? [{ issuerSchemaId: BigInt(schema), isExpired: false, expiresAt: BigInt(Math.floor(Date.now()/1000)+3600), genesisIssuedAt: 0n } as CredentialMetadata] : []; - const calls = { prove: 0, issue: 0, deliver: [] as string[], failDelivery: false }; + let records = available ? [{ credentialId: 1n, issuerSchemaId: BigInt(schema), isExpired: false, expiresAt: BigInt(Math.floor(Date.now()/1000)+3600), genesisIssuedAt: 0n } as CredentialMetadata] : []; + const calls = { prove: 0, issue: 0, deliver: [] as string[], failDelivery: false, listed: 0, deleted: [] as bigint[], failDelete: false, terminated: 0 }; const incoming: IncomingRequest = { proof: payload.proof_request, label: "rp_1", actionLabel: payload.action, validate: async () => {}, cancel: async () => {}, deliver: async proof => { calls.deliver.push(proof); if (calls.failDelivery) throw new Error("Transport unavailable"); }, }; - const wallet = { listCredentials: async () => records, terminate: () => {} } as unknown as WalletKit; + const wallet = { + listCredentials: async () => { calls.listed++; return records; }, + deleteCredential: async (id: bigint) => { calls.deleted.push(id); if (calls.failDelete) throw new Error("private worker error"); records = records.filter(record => record.credentialId !== id); }, + terminate: () => { calls.terminated++; }, + } as unknown as WalletKit; const services = { load: async () => incoming, open: async () => wallet, prove: async () => { calls.prove++; return JSON.stringify({ id: "test-request", responses: [{}] }); }, - issue: async () => { calls.issue++; records = [{ issuerSchemaId: 11n, isExpired: false, expiresAt: BigInt(Math.floor(Date.now()/1000)+3600), genesisIssuedAt: 0n } as CredentialMetadata]; return { credentialId: 1n, issuerSchemaId: 11n }; }, + issue: async () => { calls.issue++; records = [{ credentialId: 1n, issuerSchemaId: 11n, isExpired: false, expiresAt: BigInt(Math.floor(Date.now()/1000)+3600), genesisIssuedAt: 0n } as CredentialMetadata]; return { credentialId: 1n, issuerSchemaId: 11n }; }, }; const mocked = spyOn(globalThis, "fetch").mockResolvedValue(Response.json({ environment: "staging", syntheticSelfieIssuance: true })); restore = () => mocked.mockRestore(); @@ -88,3 +92,54 @@ test("missing camera APIs show an actionable failure without crashing the flow", else Reflect.deleteProperty(navigator, "mediaDevices"); } }); + +test("dev mode is opt-in, inspects metadata and refreshes without issuing", async () => { + const f = await fixture(11, true); + const view = render(); + expect(view.queryByRole("complementary", { name: "Developer tools" })).toBeNull(); + fireEvent.click(view.getByRole("switch", { name: "Dev mode" })); + expect(view.getByText("Unlock your wallet to inspect its credentials.")).toBeTruthy(); + expect(f.calls.listed).toBe(0); + fireEvent.click(await view.findByRole("button", { name: "Create or unlock with passkey" })); + expect(await view.findByText("Credential ID")).toBeTruthy(); + expect(view.getByText(/Schema 11. A proof can disclose/)).toBeTruthy(); + expect(view.getByText(/CPU \/ WASM/)).toBeTruthy(); + fireEvent.click(view.getByRole("button", { name: "Refresh vault" })); + await waitFor(() => expect(f.calls.listed).toBe(2)); + expect(f.calls.issue).toBe(0); expect(f.calls.prove).toBe(0); + fireEvent.click(view.getByRole("switch", { name: "Dev mode" })); + expect(view.queryByRole("complementary", { name: "Developer tools" })).toBeNull(); +}); + +test("vault deletion requires confirmation and removes proof eligibility", async () => { + const f = await fixture(11, true); + const view = render(); + fireEvent.click(view.getByRole("switch", { name: "Dev mode" })); + fireEvent.click(await view.findByRole("button", { name: "Create or unlock with passkey" })); + await view.findByText("Credential ID"); + fireEvent.click(view.getByText(/Selfie Check/, { selector: "summary" })); + fireEvent.click(view.getByRole("button", { name: "Delete local credential" })); + expect(f.calls.deleted).toEqual([]); + fireEvent.click(view.getByRole("button", { name: "Keep credential" })); + expect(view.queryByRole("button", { name: "Confirm deletion" })).toBeNull(); + fireEvent.click(view.getByRole("button", { name: "Delete local credential" })); + fireEvent.click(view.getByRole("button", { name: "Confirm deletion" })); + await view.findByText("No credentials stored yet."); + expect(f.calls.deleted).toEqual([1n]); + expect((view.getByRole("button", { name: "Approve and share proof" }) as HTMLButtonElement).disabled).toBe(true); +}); + +test("unconfirmed vault deletion locks the wallet and hides internal errors", async () => { + const f = await fixture(11, true); f.calls.failDelete = true; + const view = render(); + fireEvent.click(view.getByRole("switch", { name: "Dev mode" })); + fireEvent.click(await view.findByRole("button", { name: "Create or unlock with passkey" })); + await view.findByText("Credential ID"); + fireEvent.click(view.getByText(/Selfie Check/, { selector: "summary" })); + fireEvent.click(view.getByRole("button", { name: "Delete local credential" })); + fireEvent.click(view.getByRole("button", { name: "Confirm deletion" })); + expect(await view.findByText(/Credential deletion could not be confirmed/)).toBeTruthy(); + expect(f.calls.terminated).toBe(1); + expect(view.queryByText("private worker error")).toBeNull(); + expect(view.getByText("Unlock your wallet to inspect its credentials.")).toBeTruthy(); +}); diff --git a/docs/review/dev-desktop.png b/docs/review/dev-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..09e2a21961323657c8f91979bc6a685510e6c168 GIT binary patch literal 132052 zcmb@u1yq#l_dhzIgrH&&ij+;Gbb}(@FhhrefD9!a(u$--OG?8G4MUfL1=0+SV9?zS zcaPuuTetq}-hbS)&N|>ZbKZI5*?WKLc|$eStCGl~iiv=9gq`1NEMIWhcr zJ&eR45a$qz5AGp7k`~6uM%6Ztzpgru%vWr)mPNd!QIz9NCm)Jbc%aBu_M=rviIpuT zOesq%^1S|44w};KZ*C*odyRer+vBq?1^YD)LQC@vCY`}w4}}M+J9bhWjXU(iZv@O22p4RxJ%cg=OKZ?-o_J?hr0pb7bZ z2aFU6`bkO0JyUeSIF?hN_wl#4bIcSTwBj=-@AXMtyMA3gSu`t(WVR=(E&i_gaJe@ztg&*ep@}I&S_F-|7hHm?PhuXnd+ z8J9imu=@M+^=sGQO1Ms*lB9u8Nb@?vzk~CpV@H1bwCS|oE@YF8owL7s>E9jo|0|6f z*UnKJbLmy3E#$G7h`OyVCogZPu=ejsNIO0K`whN7Ot0#E`4sMm>xSpahj3JunPg$d zYw9WD;_r6kx)VB+#VXlXXd?xE$*;hFCAWXatzY`MWWs5pDS(8MHs7S)>+5UAU@GR< z161RWf5hK4ZSejaPFJK;U{LS1NkPqeZX(3sSoBQVnRlYDXi7yIspo{NJ6ZYX>l>@i z6bbEY6`gO|Cw<`LrFQ>DJ@Di$OScU^%b4Q5_MJh*=_IfBg9k6dnnawZ%HJZ-6IO~p zi`(wnBs}VqCb=qKkPC~0C4aUSM+zRG(jSDvqQG)8d~0Ht#J)@tv@@Voys(Wp0bh7e zWmY$|jly%J!p^2YUq3y^w3}bRLRIQ*0FJ9%mh%ScKNlZjT<7sFJoWnZ>ttscJQh=$ z^Vu3#K2Zi3=@i(dahYAsyY}yBALn3g<{9O83Bp3e*$fyA^dtz_@W%<0DJP4%wnnqz zj5%*8j-H74%O)t;Pkin#EL={6zbRa?YSb;&t%adK3{La?1%Ahem7>wH%F(RvICQx= zPHCv()KeupCALRZg~lG=>d-AJpt#rK844i_BRJi8+U$(zc@5`hpCl1 zK5$N=YT@k+goRcXlo_0Q@4m*hapE+V4t3E}ml4$EPzmS0y@gexyQS^JD=I2_>((vv zFA>ebR6M$cNv<+^cMU6SH6tnuKT$~?Oh_FH+77NPR*vfglVVL9k3QUc?zO#i2;XVA z>asK{(vFo0K6^ygt28AzaU)#$!+8d?<2GVM!(~Jh4aZw}*2Yz-x0*xo zG^zPX_zd;)pc|oxh#R;2uTUa>f2t(&KSy1Juze8}M8jj^4GZl(pH+&0P3&y-qvn_P zV>NiJ?(*taX5GrYjm44eWcQzUmrd$CO5mnpb&K58rk_(udi)Ba%OdGQ|mHowripD+Hd%p zrluxsXO%n-K~>FP!s#wK3bPi`8krfqza$wY5Cn=rY^m(6DQnr50TIv&dpxlaI`lcz!f%m zOo68HrSYO-5PrBV;hC-%=8$dP>Z{8X6B**v%h*nrfQtNH%mFD9G6xd_$z|V`wqA z+_0}kvdC}U!}`Tgp}~Wk)*f+InrKwIqlkqmgM?*}tx8T-maRg6wbK0S+4Y6VS677O z9+3v5DnbpPqS z-o7PNKv96X#4P1&)XQU3RXl6$p4)iTu-R`2Yvrz8u~BzlN>=J4wPQD0 zRZ`Oy&6a`K?UrY*KGU127}cF253|JJ(N4vPec5lt*@1@3gHFazjEf)MTfcH28mX54 zpi8`aJCDd2M$wJJ+NILpid-8P{r#Y(!)Q1#g*M~OMzG#&hf00mI&}`LO&rh4AktbW_SIr2=Q+~?1Kf4_ z*U-0b=cuQeH2V6iPqo9!Ej)7n>6wGB#}PUj!BW?j6khV(ll1?>R}oJ2Uo0Egc7)a~sHgeF<99LLRm zAh|b_!DsnH*nMfV%JEPB&bk!Ob3{_KCeat1>#NsnB1n=*tcOp{#Y!ie&V;}_{w$F& zcAHKV&y_&cSBb7owPRf{(wCT+3gd1nMb8WrjsN`~MWeG>3XeDYG?sb*8X&BsLd^`h z6z$&1EG_KVqIX+M9D;th94`nXgl2B zPVB}X2ho|_Idq=-A!0jthvQDRmYwPM1-V1~5l_R;{fmC9pXs;;WQyU+ESRh&#mUg3 z2M6kzYdD?PG;!a)DR319-C+B1>>zhS_xgEr_E0+MqziYeA_Is{hI8l^=GxkfD?W>X z)*r>Do&BK5ggr1JbJ6A3r=UJ=`@im?J-R=&>m0R~>zSY5vY>VSDJe7XH zFui;uv~>YfczfZCt&z>ihej85Q*{;V5QRPXU_G-t{vV#sbX_HxcyV}1t2AvepJE+G zT)s`V(_|~3RYycwIW~4-tX9bH=m1vi5|P}s+62Q{`yC&DL}V29Sn1b1xwM8ts^np{ z^K^b!wh`vq3NAbudRQW_g%S&$ppD_lwZG_5R;2&C_`)gH-kL4pwRhz4d z>BJEaqWnGHvu^$z%sh0_M+8(!GXFiPej}C#kZ*jcj*3b|k-T&ewM8FK}|k(Dz)mgzk2GAyT2o)nb^$#tcN#PPBe{t`1QRB5y>)H2m`|;ocZp3mh|-W*UVBK&8bn6>`e+)52(tG z=+CgI4QyylH{DhvC4GBRR$iW2!mHe4^*3!{?czu!V9~fTDn(|ZOQ)hk-p7Wg6B)gF z&^RH|-OGzG5`u0L77|jmJC(>~B>!xC=?oQ>dK`Ch(2X~Uh!+a^8;LWkJEH1mq|+5f zZ@gzcA9wmRi-)Y7T#BSm!fEd@)=FfrL*efQwO0|qfSPP^gqp;C*obGGD7A;H-E_FH>~p~4jYnQTNuypQe)eOwh@ zd4!mF84?kJEZ~(5qrMD{C7Mke`aRc;kp90Sbc|?BVMoGgt&pd&DAI8{m&|m@@vN#EFakL??rw%8hDV6hpc9m>G;bvm7>~ zkGpmQ0Vk{`P5%u*MEKvRI+(}#O-TIlo@XZ`eYt!A;f4|DI3-{vpS^`#j$-SN*!c za4R|0)Kn2aUu*Km@tWns3%m$~A_LJSM_2>TV!DNz>XhDfKwQpUMO=q(Fe^H`Kl38U zB%Sx|W0DlU6Lm)-M08T7hpL}|hJ;>6G^b+KBTm)QiayGE7#>1-lIxh+#MHW1{nFVL zjAiF(TjR~D04htyaSb<@@DsjStfsxT?w&&*ItFSNv*Sw^*PDD<-_fr|xCm?z4ETybQ zppCtzlnQ3#O$s3=jlTT2%iy2M*|8r`BuTRmqen#6RFw}v^{-#Q*pAaO6e$sb0UblK z$A4fu0P z%sdVOo(D58t+@r@iyq>wkx{jitl~~f=ta>Y`O|V2?jc^fuTnG}?F-kQB6I^WgyFGj zLCPt?w~_&M77w5pC7$V2>(0iBg%RD*6{SX!>Rjk|e276B`GsAHU>8#i{Vy%R_*`hG z?jDJMW~b+)bpfBAnAao#U*1aj`7XUX@wRR@oZqS=sk^%ya763dtIs?3^qXEaC(DMU zVyg$@?wn?^rZ@=aXtEmks@N^W&W_PYyPs)_xO(5zeXpliH?;x5HSy&tqB*=p33I~) z@o~n$k8Ey2-C^>3)K_Bva~VaFK17iLjwjCh|Kc{0_YI&@xkUOl+Bn03uQPzhr0x=>7KX=hvKHj-@u7c+aI@vVo2L#FtkO zcGrPCPUq<&SO5+w#c?xAeG8k1re_mgddEL=dCyy0_Q3<7%+17zsu_+|K*Y39ea`!@ zGM|!MyFNp#;Co>*u{|P}J^1Wq;aCyH3F$6HSV0xGL#)JqM6V;R2M~+U-k>=_PP=;8 z5Vq_-3@jN~nFA4mVdJw0tUt=C*W^v)A;&Tjf!zLo*;kf@q?UoN&yW3E1c+dm-(Ol< zW|Vt~3+agO6q0G(g|iy=(avjlch_8w5;1WV@CV?n3jg^aXw_A;17yU~J@2ZX*IU4?n{+0%zb@sf0L$htD;Bhx4Fl;OHd;X_)P3LkHFRi%(ORoznf zgb4hGJ8JDIVU#+iM3~GTun=7uxJY#Ac+IukT|hqI1w7YD1MfdT&70_aB;XA7nl?Yt z=!aCkn0y@hv?s@o`toH@g6tBrK&O0dd}q1o7g7S5c6SOb!k5s6CpkH{b+WsbxE6 zt|ln+RR|?Q+DR5icD&4<>i_vn)5j;{4L3fgTN0}n#mnS|xC!wG&ekwEBnR?unCPNz;f6}{P>}^pMJeK3b?eV*J@9LO! z&BhZHFI8l-$jmBfMXDz|X(K#g6j^n`PKo+EuCO;+9(dY$;@+)F^=#(==o zlZ4-0mp@BMJ_ySiAkqF;X21A2n7GzI>#9Yw)l-kg+{dfWh{K(Q!Z9o??+2C|c~cpN z`lv{gy3`>*w9hiDPJ_bm_5ICxT~NK&b&ih?m#hAqfXhBOpM}vVhyP zF==tER8OZs{VATJd3b{uUH9?6A)pHFfP>SWfJD>xA`jOFO#SfZGY_2r$^z3ZAue_p zmt=hD)t~3`Wd9Q-Pt|50!$5(dRn0)5aqTAy;Nqup*=7~o0ceQUnN--mCw}hg3MJ4B zVh3nKy-LWihG7P8??45uLA`O`{Q^my)^sI{*7vQ?rkZnEwhNWv!!cot_I$CDpZ029 z=XIuoHJK}c^&6ho{iT1A)3{~>sLw)YxU&LR)wK<5QN!HA#R(T%rDCP{#^a+}iP)or zxP*j;i$KV8mU44*(`14Z-sWi(SQwQ){tmq=DXM1!FaKU=Y^tbC5xx8E-F1|-POf01 zouqY7CV+a3r_$Q?&u2wFxG6JryC#34goM&U$u}8tuS)l^XOtS}p8D=vO8`Q8kkJS# zg~6_b*G89D|3I|F{4Ldly8Sn|Q@wkL5jXChe8}=*ri;s>HF_$fi_lVhf!bypk_Cyj zAeq;-$|yCCpm`sFjFm#9Cm*}zSZudBhZnsgFeZ8$-@Uc7`X~6zm43Ljw^Kas zXXpiVYaac1BUO0aiE*QGYuEQ`t#qvbo5co>5~r$x=FqMi+;DM21RrQSSp1PQdM}#GP-m<)Noi**%%t2-YCf0ikIB$v+4KB?M_PXpuQb-i>7lKBZt#TP|rfT9A$Xm3L z{ttIcF**gqUtV4L`szxh+oHkZ4@{nATWtF=E1aJ05(os6dOMQ7!lH{WA{%+|^^j05kjl?kFIyvOn!z-S2f9g{^hC=n;U3+hnMsp9k z%~G8}lTqOUXY(+Bx>NSllWk3U-OoEQx+dQf1h8Y;0Y;PKAc|__8Rnrbs({xp-RF|6 z5~bDrqYcPkzfP|@L+3&c zfT0%X7X5@`L8gKp@k&B9s1y2x@vgqWHO6qmfbP}Y*E;fVm6LWX3g)N!3zQ(32EE%ZvzVx|E|wpPN5u7mpH8aNZnPS0WRWFwf_ zcPC0+Qj;+cIwGT}iw4(TtfBqoI}iQY3}=N+*vc!R zpIxjt%oqg_9uOx@Zu|nO)nybMErZ+eqBXp+TnrQ}j%QjS5 zPakw_A-4s+&zn%1Bzn7P#0=Dt!$OHp`5iaw_m^scymxnGNAVm5`z_aRm&?o{Ut==D zLZ*Bl`p~eV5*P(g7^HhOgX=0ETk>=dS&QdY7w?>mWm?sHrq_XW_g9J5W(HPJRJ$R# z^@=}?_)sWSqbt^jHbrT&e&Net3Bnk5Je&Wfy8n&joAc+-yQvGP-2RiTnwZ^Li=F~^ z#L4$QYWDDVIL`)~j_h8^S0+9QS5ghX&Grw=C)=NZd6V7Ppcws%YaDs*=r1!64uwGS zrXA)$n-KCk;{1=GYHp1eha>K8%%Ioq~jQe^(f-t?3l6V324^yPDj+#KP##B<|5QB=5Kf2uYX1^@dhPDl=KZIuQRS;&Sh%3{rU0=Z>o&BU-G(5pzv&ajJZ$DQ@k%t zI)_gFPSXjhTygvAl*@ot1-WqW33pSvcV4_S4=K~GYBpFm?k|ZsKeGeLe*|X}C+5Bc zQt0kwlTFm5Q1WEA{4yxK+RPS~>#-diT*fthPR3S_1n35ZFWUX*Sg41;_AH~QN|LZ< z6z^D^va|Wt4~98$)+Z5pH**8EE7zd zJuP1Moso@?$PnQkX4I6cA))F!oU&{zJY0qSUZ_}2mOt35c>-g`XJ7+*sg>$-ULzO=bl zmj{hVZLKsr6EC<5W3Mak_k1LHk*k@Z^Ig3|@?;H|8_&4>@*Wpl9|lCWL2!1=Dyf3( zC^|3RQt7%|j;?0cF)R$f-QNCc%1q5F_{w@MZ+5ddkNo%XCF|Hyk5sMpKj74gLZU9ugkK?P_#ut{-9&&gz#-Pz-R#UvpL3&8DWKV9;j zo}WwNju(q&XZj)~+xFP+Y|pS4VKy)h7xuG_e1168Z|dN&o8R##0j;L38)4eLOs0IM zliksx%zg(YV_#czlXbNi^-vZ;di5$GghC(BR!hd5&X4jZATlpn9+S~E)tpP^UYqrg zbcO*T;k9p{Y!5-F@s=eNL_JrI<=magc#}jYJ8$!M*)M)x2}Usm*qK*bjGiX4qokR= zQI<%-Zp{zXi#qbTmw6w1K*1shHFuF;qec70y?2U5Uh~I^?Va+aZ@Zzg-eO>Nc;g)V z542I`SB<=D8z0G-5rWHZ|D^>8GrO8sM=k=>nja`CN`FP4_uQ2xb&v0uOBzEu5-}H%pLn;$4GVL$U=S(kRXbULQQJX16R%g&vUp3*l(>_3UK^i}%iEkk z_nkLOUlY4N$dxf+G-9{HAk#5LH9m(kh3^y2qEfxr6lvss6qFrV-$8|`0ThG*PEh>Y zSG+gMt@89&O;9!@Q-ECHhE4LyYL}6}=d~y`>IPVbv`6J=p?$W;+!woJUeI7rMLIUg zB}0vXbi9vtrvdgw8|3z5x~Lx_&K{(@G~MZR?bS~Ndc>~cmC~7T=TYGL3ohsDMl3E7dVp}-6NRuB%=VB)CdNdA z++zf@77R*3p+2@f(KiR;JUV^(re3o*83h1Y;iFxqI#ZWLy8#*bPaA>(~p~?}^#m8VG3^ea$GAz4p#96m_QmUCnNux^|J9pvh-e#sLC8 zb&{}CxM{z6H_KcKnRm2M*2(1g_dHD;vTw03uNV09ScW_m2Y2gt$X#sgMP*i{s3i$M z5>fluf^A-N`|`D*6DatPY3@@;g%=Q`Pxr>}ICg#@^3@AnpK!@)T*F=+xv>JoufYj zj-rvKE<0gpUw!j!WR+zm-+6D=NMdcGile-)FO|d$)5`2khzT;9heqn)21%#r)7`t* zt&3Aa33%=l^HdwOblm14T!kFsi$Dv$TTut{7zAl> zZ^N2$AX%qY$M^TqHOdQgp}x~06z2#+@ijKBEEu^kPz|$Z%Q~mL1rX378-NW z#vt=xxw;Zmyn%R~wT@&l+$Y6G_=pgNdI0Ht1NZ_yi&jV$q(xljn}SY%-jDfG1>~B* z;Y^b9GqGZ*TBbuFCP*P(lEw`P4ETl4eaLITEP}?N3I@zB)+sA!Cp;`nt9~1p(v*X( ztu0`o-OtxSIlA&X!w_+tu~vln`0m}iTNTNYJ_ddn85vwHsU6qjqsT!(={H6B?0(dP z4`=!#PEQ=OWo9{^qN1vVlk|TaynhHk|IZn$lMe}hmR4Z-mv=$jC;tD8ab<#bDE&6% z_3NM2&N+si)NEQ1S`mP730RZmkuO0afQ$O_lCZm7hv zJ%JW6VL-^&oZ|;ai(nv|F8AkZX2^!q0%-RG#iZcM9LThw011r&LGhT)isRh5D~w@QKg*AC5s(2tw-aa)3#iGXpzF@m@RuN>&e85f5&U_EPI(*~k zv*mioO!T#Z0JGn)zr-i=(`&u}T&m*fQgHXCQ=WCW5S)2PTFecCzV_nOMM8dLFOE}x z4V-^3sBXAJSFFkg^7Z+kvf+xC2TPinDjolP0lHEi+^rmCj@2m;HERihR^kiZboLOM zz(_!6Tu913&RS2h1S`NL@FA>8V6&#+-#cr8^xz4whtQ0+^N@LwM`%xcM-$!E2AP^_ zkJa?4+!zOYs#sXceHhd{OcJ$3!2%M50xKc^_x+xp-e4PuU^(HlV1-7KF?lpOW#vHu z6&Y4`FzFF3Q^x&j4u(5<7fu)mi@^0lqiQWrJ)ecpLF=vuA7L?Y%!?MC`8l`t^VxEH zibO3?L|^({U|D%LJ0!QNl*Rz<2}#5t+f`5pVAa<%664qT;sBy)-W%J9aGo8_u7(?y zlj7BS*)bXT)BIMfXI^!S&H3K~nO6jGb|V!AogFEbZS2Z68(_rfBm7VPy6^;q*iex0 z#$ilvDc_W6b3J4ChDl<<8^VQhQRc5cJ}2{oNZXu7HtyNcS{sjBrB>3c#(kYCfuSF2 zjnH(RByTCj;NjrA=#+GvA&Uzd;xT+J^z1#uvjek0dbG99c+V#B-!q-n1vz;d=a;~5 z{ToMqN>49w*fwVzcdMkR-rJuqYJ@b>;D+Ws zy;E~=i;?Oi2EA}j<9(+47oL>(MOcAi4LXg`7?(l0#yi3t!#R|qd{8pJKr6Of2PnSK zH|dVtQi*@)zCGJJ4OO5;>+?JG_Cg9^jV%V{_io^7HG;+h_hB&w9fM8_;7PtR`JGU# zpkTqWaD1lx`Ip4AE#bDZXGTAGHb@)DPZ{c&gV>raGfjs?`auQLav401>xaV_QX<}J z5ZX@U8*$II!Lg}(U16`?Qehz`jJyQxKmfe{UT4sjG1;`7dR>LdM=Q-#Q;ymlTE(8< z`u8^H+m$Ep?$7-eTdK+c=9K*m6h4zH*;$g5OZ_5l-uLc@$=p6Zo8R_rxB(emX> z&8yr9%*y+l%CV4Js|Tge%}*PB_9?81ya&b*4Il=!fV- za1SB6a?eNdV5K>W8$7%T^iwLrY7Soi(hXX)!Rv46>XhTh?qUwV4?##ou0yMSU(K!S zkY|)G{tSZY`W9LP1i{;is*8BI00wxpBm&LrnPVaIJgM}5@37#43>uf-oedD5B3DB;Bqv8*XNFO?NHXIRT4 zWA;+`dGA>`E#ngmSFT*4rL{B><*^i0>qO#)KAl-a{*_H2RniVgpFk*cvPfJLR3(3+=T%rjvaTjRq6d(Z&Sy zzJ(?hz3%Gj3Sl%wgYK@FCA=UT1@)5O~p=k7aGbLz5vUaq;?EVt_ zv;J9PqHJ3Xht)QNq<7Vr1bk%V_|f>77qGtP7OpN&h*f{Z;0x^EHI8H|knGAs4ou|~gRhzA-JdSy%a4={J&qb2CHH|^GqupV5- z6G?Qpr8c@`KsedfR+j()`aMjmN0c_z+z(*tEP4|&wzI+Q3RsGtoa=3&WF0*|Ye8tm8E0Ve^tO%#k; z`Y$a2_1;BJTj1ef@uSxCDQ+V%-&$NX+**LrTJJ=_smp#NN-u!shXi}&gk2@5DpE!I zW!Yo$V@i!%F@vkdqNo0@YQj=y;;NVJ!1#}V8Cbng1i1V55UK6NYk@ygrU^)$ z*QTGdcLCCQbTB^OpOUz_)T3YcRRh4xy~{X2ky{rli1lB*I5RstSYkfxSN;G(YswV+ zR8P4UAkp=)QJu7fju0w8cfYhsFZ4zuv|yzirLq7j=7(h$-DmTUk8Fz)3HXO{KDrI~ z(v1t;0sprx4^K~lldE9h3snUnKi5pWf`vRD{aL?ypQv?8@F9bL|Zx8k@1O+#w zBE~xAZ2?3=JTdxvmBfnPx5LsmU~Br7&gD&n>f-_rqHL3~`R zG(pV0@X)Cx&n8fEj_|wmI%*LI!ipnGT&RDJyaIk*Xx;t=KlV`Sv-n?~74y)$aU92<*2n_Z|CpV2;HImR!PfAXfsvWf=${KzSte52$|v$lVw(F%QN# z&*{T$fe&2nu42Te z#Z04&muCbN*TvfLrEaa21Mrzn_2yFT^3g`Gx~h5%S*_b5hV4l!v@~9ck#cK3za#H9 z8gk&CxpHWKphbP$ujoPb8_0x`%CJAgKO_j0p2}rRpr1~%L&K-92YtoSBnW$Qu+&2N z%mEyCd8q8GZlayZ?Lxe;<&R5;_&Ms7&~W z%?w5rJCCL6X;>?nDF(lwgYllomEjZE&z$?4@CjxFCxVc>0XBA%#5gMtyb;3Y3Oa71 zO9JTVN%pfGhoISd5xA!Tj{dIMi@>BkW=U_op+8`iYm@3ob~l047rMuBoh<{?NF1|A z1u1K=+O&^>m;h_hTt<74aJ4J!mH~CRC6@PMq{h|8$~+p)?*-mi@afCxzf?Pce#LO= zYxTnRqA;_x@8%S#;B;0R37z72vN_W&bC;0(BB*}Oft909;rBD>vzJW$4pEEx5RI<^ zmJh~3Er{m~;vO2m8ud!d5)|Ohp^Q+EdIxIuV07+p%w{07yReFE4ymB#+a#Vby*PkI zS~j@MM#^bYlAXTvFm@8)eGfkrG!`GjV=7rc-|r9GZ=Ue!7akO$?7YxMcuO2_j3$k| zYX2rqHi?=yCMgwsN^LE{+t;I!I9I6tjJRR4Xb)9K!`(7qqW~2&uoSeMxhr)x1KgWM zT3M~P==f9%@PLmo4~k?xfMno=hxrq5g7qV#F}5-5fb8;4(Q+FN?)DcyYA*LJkDymR zqy4NrLTKE(tiSQH^s1qAUm=zNq1f+Cx5l&)`_Hq+KyW4yoMZqGd9PPiR=`xpT!_CW zOA*5y6OO3`Ls1O!6qXMyiUHQ#hSovhi)m-~!a0na3~2>C2A)C)#u!n(*4ojmBA8D6 z?Ug^hH~`tun_Se)Qd`XfjhbF1NQ|#;kzl~E7}a~>coWCUAp0JcJg0FBd1Iv7*$PyG zMR(LIPGqhI+(QWFYp2~O(T>4^exsO%B#|TGqPZhL$hl;0U>7n~T!AlVE61swH&|DV zVUMxI98^GkL1x^`SQF!6^N3)d+sod&`A7fbr-xN`ptl*#^l&j_lNE07~ zF&5o(TG;ZM^1_90Rz;(Ywh}kWD0htwL2UBAlUIaxA_miF)Cysm|j#&;(GI25N_AT zmQ&Nq&2A8gDS2n)&2WkIux4oJ1055B_mZ_WB6Q7>)&p(8y=3-7b&9rRR5hlb@UMa} zgFXYH2ObF5cNqd9D??1|{gZg|qq~wA0dAtK)rizfoMBfT4vnvYsQm&(BKosZWA=#A z1~wt>TGV9NqwGdDK@53bV2+&bp1@&DVZn~}VxLPcDt2DUa=LbNen7WhOS~4~;Bxge zQzd=A^$&Nk88fP$A-h4Q;U;*_f^ZbU}9h(=65*++~QxT`}r=v^`qq zS;iMqqxo}PU==tJ`yocgu1kc(8Mh81L0WvyhRw@vPqIqHLU>Qnti~syNqbYn2a^`h zI12*6GQUUj2R7NwB7J z5RVqREqTC4by!hpew7Y42lY9ioaKezZFe0T&Ie0v1!7S!8mx$#Hb39&g2u#wzpWZf z(dee0)e4Fb+dSrjF7QIQ?AkM&5O=9C`rh@ohWJ>+dNnU6B`h=)cwd(N?215WLpViHktj=aC@(r=*YPcIBA

    zsk?l*$XAo{v$Ap}srA*R~J<$p=E8!ypr~>Hpyr^i-Q) z=SsBYqHAu-@NdXlZ19bPd^!K)6Z{jx4Oj4kTm!D%vGcoVgOOMcq>V9bVj7|FzpU$O zTb7yx5-!_-(MF-!5vT(Bw+Pn!FfAqtn*oy~Y?KyZWcnXQPaS~Vgo7^tmH~3laQ?hz z`h!#Jv5^t2FB1jrAa2wT*%A~9&PWK&{z@G7Shm`>Dnl~wt`H5!eU5rU!YWO+S!!$0 ze9B;)khJgvU|kLIvr2tB4xI&KWUyE*;VZi>g+I;9;kk$_iIV}^$awPYg|fF z>k58UKmL9JH7vnAn@@e%Z|GpX+O7ohU9D*OH+mE0K45@AQ9KTZtkjjtfVAop8iMA1?(q+a+!UV;-B7ix zIzkBOoy^cIIHvsSHzFacfQcOh90net$?QP13|LHrIm>YywmsGXCj~23L!;cNa+#g3 z0MyEu$7hQ8@fCK4Z84`&$Ru8iutT8LpU_an{QCRy&qs%6x3r>A?HcPS27Ck@eadsP zI8O$WI?1tEqdY|3Mk1T`t+q{J3yU&PMmfCMpUiS~;>|jdL=AwWDRQB)K3l{M^rbo0 zR}8HPI8J9xb1)kEi{s02Cg7}TEQAAFs9KjU4{DLj+kjaZj#!UuaY71zI9abW#` z>B5kB0vA#BBl+`2a!&#E&GN+pn3uX0EEr8)|s|wBr(Z(lr5Vm%fRc*XH-| z9{W9x>_TATfMn2-hT0MX&sX>6i)>CvKok@Goc7){@ejVi@-){#na}}SvjVsI)OIgu z^ni>~#XWmqdSCk?-oSjd)aM6jb+EfqpB!1%DNEFk&z*xuKn-g#yG z1wx9>ld^E&b*Vk%Wf|FG9-^3#3NYJk4d^O=sm7?^{a$bkHV3uvnEh`Ml=@0N>U;5{ zXXZIrJhf0Ofa|t;tA8u6D%v@lTwMr0;_E?cCOO-r6bXK{`E9vpV4ULE%{KhmGb5h| z)?V6&XJ7`=7)!Xbzsj|&wKK!DkG{4ckvoAkTJYX+p15Z0jT?>f$&$EF2n}wKSP%`6 zmgT{I|~LSmHN&a-wt`X(|H3(yd`zZ|;liqMhq**=H|H9U2t! z77fS;dag0E&gYQpe* zd$7CP4*TrylTm#n?C$@6+e`mH$M-nN#f$z+3xMPQA6xVP=MMMZJcNP;5hO(%A%#PU zhwyDt^Y+Py)yvWs1DEz>_EW=GYOK> zQO6(6%*|C#0Ex-B;pF9Aqvzs8uvq_tM~|aVgYUWx5*0y{19rIvWz2m3{G*$Z5MYUO zCm1U+xqW@WLiS-t@21osYy?$3;k!3`d!8NwX({gqAmz@5kS70kn>aU^@P_6`s|kXIxinE@&d z17QO`IXy6cp1PGl#YT`Vu^^bi`p~Pq3Eru0O2o9ojz&OZTg1H4le;t+uVT(H)6KJb5 zoH8NvJpm&D^IH^>v7k4Ay9i-r7f@(HSF-`d3Y3O+eju9rK%6^MrH(;x0C^F0*lU*! zD!_ZNBR&ODZo>Nsa7@n@N(f2hnSp(*gTN(} z;SPa>KBOt|O@R*}W5Giy-E$bJScFuu?i1LgszB)HHa8zjwG~>7Hu^Q*k_1}ZE8m<7 zlU#MKH|I@J-XUOA2>oe&h2cR#!=Cv%&csU*Z;jjiOlRt%)(ByGpy*m(LEi{sKXvvYLj>Q9)d07wr=I&$5pOw`AaIMmDboV<|7MwDc!vbN-@$6|EUQ6z?ie2@ zrwUF<*6ik^+MLo+u%IMBoRc-BF<0F~ZR$C?KrTEMdk&*TaG%gUMHDHfzPpngMRn;Z zTMww;5K=a6F(oi{^Fvu_*@rM@3rX)R3!WHM+8fvR-2rI`nF?quk%)f?#Q0jS5G5Qt z-2hfs{rxV1zDwvxOoKnV+h65q-kY{pFi9~oWdU&V!W{v1*bDFsCL$j8)_eiN`I=s! z6_h+N0^}m62b@=Fbczdtj7P!V69Hs|#BT3lhuCubYr+m_NbW$93h|&gbbzN20_3n@ z3&9!n0(qr(1KHkBEeppNBd9Q&wfFY0gSMRt@2cSG$Ife6(FAkpDuJA836j+hM1nCu z>CuGk58;?DP;p>urbct0Gc4~|2Uu=e=k+#6z`7lE?v#MkDUyMSDaAj}vlZgYI{Bi2 z$Kv>`)c%jcg+CJnFlr@~1%(=KxDN zl|qkTIr*P>-M@H$Ox=_ zf<`E8SIuost9>l)vGPG8-E%M|;)+lq=n7jQY+6Q(TuA7lS|+HdzJ~(p0%+~-P4!I^ zk_kA4kvJi2AHzf+l39?^z!=t@oph--%m1rgI9Z1MkyQLo_r2i_aq^4a?k0+#I4Hd*W;#6P>*aO!&u(ov;%W1c z)WILx`np?pk0t6G#GU?z?BcH#g>rw4?t<+nMW9;IvTCq2X~MLIO-uRW`J?k&{qO`g z33#-~5%h&TB7S@CxND-K1|q%ldLSWo@y9e5v`qM+hbdbB5_Kr|mhk){eOf@+6O_bx zqVPn+C_xmaD1qMeW`LE#bxS63EI!ftaOJqmT1w^n09Kki>ul0--skz1gbhl>cN#*j z1^)W)2;=-OqLu$~*!AKC%wpIvO`xq~giXufjmBJp-o*=B^*N#mdzfw3pz8YZp|4&g z!v;WjWzXU1b(oznLfdP$8bH1wY+O3Nvx-(>QMTIsNwYX6&@?N&INs<7mTN%e)pNr$ z2C~pQI^eDs+?YU1xoG zF%$v+vnk*Nyqzh13Et|WH2Y~yxpxQ*0*MSzE=C+6J7UPUxAW%>{t!YEr$PBD)7b_s z1`xgt$q$im7N?^F&w}r;uJl)P2J^ETp8g7~iCKC{#Vl#n!64QA=F(j=AY%PEA>V_Y zRKKI4f}Aqks@?zPV(cLL03%JQ@zkXOI#t-?)o?|~J|ZHb{P(QE!gNQcvG>S_tV^OU zGkEojFD1cH;!tBe0h=A=ow z{jvuf38|Kv+3ZB%;8=eHfLCCLyDtAcgw0jH+0_6{;O`hfYtV&m8N<778UcdMX`E7f zHzHDuu1olUdGtnND}FX(&47UAz~c*ty6A-0XTb%y)yC_59segI@W+8)fh=jA=R`^n z!u&6-he{`NQhm{07^keve?ox%Pme!miq6n-t-)B-{Vv;9c&%VMl0B)?x>xS{T#<2J z1NbabI}<0`H3b&Iseu>45H?hxBV+G>mf80jfXF*wPwhXL3rjka{f`A|etPZA=D?Ow zb9J2{Ra{p@x*&EM951|6Ss^sSoU^#c@OGX#7>y~St{8pUgaj*{P-h|^JC`D^^IQq7 zKJ#bNeBYjR{jFOYoM9Xu-6D?3w_VLZ(-J* zc_o{k!ra=$=@jP6m9A!fOMtYqhi0=XLM{(B+-Or z5BE`h(uGoi`=5jI3gDz+;mIe}6pdlEq7UI6Gy%V(_E-)23Ji4_MY{&N3+BqR7tC|$ z)J2Pz21_y~Yrg4E^18yNwVTl9AswAQNkJtlTtU|VvBoJn+uG?}+9+TzZdcY_Y914# z0B_h#0}%(8j!C#c9n3;^M)2!d*m=6zr>*YUasTcg7`>XY8p`a*+z;qP+K(!x)q9B! z4W4l8V|{0`o!C1od-e^-i<^OQcfWAv+0+@rta&YWgo+~xA!*jt{qeCTz2r;rKRG7zPjIIhd?D|Z4pZ^8F z)noR*G53~XQMT**C}E=5Scn~@sDKKB7=Vg^z%U?f&?zxUgNa}xjes;W0}M5E8K`tO zh@y0e5+b?J$FjonY1$WPY$+`VKvV^sf&ax66|1uUT!Jut-AB zqco&E^bH@ZPe_@gyZYS%dkM{POf~|x0@uwB*@V6faKo!&b_J}1|NJJl&Sfd_HyxIZ zC~3)+*fRAGxiu^j#Et?%>@Y#Ao$j+_t2&uUA9&K}a!=3FuEa{^5r>LZyEF75^$P2Tf4B1g5gWkd+7&+Yf;u^F4DG=j5gOVfIa z4=}ZgRXm=WO{Wfge-mroNNa@6z`nPf&G)g|W=snk&@m)~J;LunyX)^00pPpn`?FK_ zf`rEy>MRQ!`YWgZ#w;Vbs;2NMzwzvGcC5xtYSmyqBI-!uS(XlKMfzJb<62OxVg^;bb2j*0J9pzC zrPoSnM{!1mjNk>YJdPGHQ9Z7GNkOK%wv46*58S^OB`j5P?M}9iBitm-95%-)M>)c0k3es#&y!Uo zGj*2FpgF!rlaP2p{xB)R#Iqi_*qpp-V1-_3nV*yt^==G*0!=}FOK-pQ8HpN=cPi(I zUIbK9IQn9zHRHfehm^Gkn)4gZQCZAygxfMNEp^|XcrDH%S~BtGJkBvg#(P7RH$5cR zwEiI1%F4?n`}5YB<=nk9pu9)LgM3CLaDWh>&*U}AS{@nDXi%z;6wG*AQn;eYR_ada zhbQe;d6g4KdE^g5R+!FBM?H z#dv}T6{J=_EPkwLgN3|JVI9Lk>y^7uvx7$Ad4RQ6J0G1bh_RP=C@ z%U|~OKm67{bgLoH9QONLQlid^-4gMPdouv`xaPMIynQ}#9KqXF9v5AE%l68VDPVRe zb*PJnYc6=4I) zHifv}+Pa1*YxcAMQ>Y!OU7!9eA4=pX+t{+AfT3H9xU*GR<jZT zN30e()how<)HFxVL1dx!K|~|At->-E$6=yPa-)x6b7M?^z@-pxdUreTPqK6N(ZWVgg%=zP^_>+O-d9QP>wLco)_F1CnjXiB|ii6UtJ(Z;B zjGdCV)lL|BIE?lUWHTjW`&i;6H1vb;4;%EDKk1ML@jGAuokGH>=v^R#z*ZMwC zNZSDop**d3g*zOKWolI!-;3UIxO3=A>>C3oZg!ae{^{SJ_f1{(xoWnEtD=%w8B&gb zQ}T49LfFP4NC}0S@mpF6X~d|s5s{%YXz=s}n*45!*an}At|OY(ktvhuGxF4M)+;?$ z4@Ll2YA3tob4hnB8!Phs)z*K5<1aDL`t=#`#FQ9bQ}?vNywr-WI&eb?ofOe*P4CFLkY7gbE==pfKU3w~Nl}HD`-y zdlM#eDzmISfWA9%#AH+>YoWE8nJgb5NbL>Y#r62<)5g=(SKGtwe$Bi*N>Vz)h)~o& z4;cZ$KbrMHiLhxJGL@v6oTd9${pYDjw5gYB$bKdCdJ`&=yk zIXh9tv1bv~fvp<9zQft{1za>xOiI7C{9}#{Wf71dsL0uJ%dV#bB?T5p%)RZ}9Ow8I z=|+aqlC4`$yE>wIw(nq=#9VuGKYCeSWjD0`^-KJJEKYx48~c{XXn62}g*!2ZRtvpj zTq9D$cJ{o0yQaiarlfq}Fwve2urs^T$NT|yLTm(&mB!`Bj}wsM)E8lD;lE~w zse0o01{+0(?hoE(V;IN$wfy5ck`GdDj!LM{IjnM&C&{aC*YN&49%*QE_*(w)+@9P5 zO_#^~AAKrA7-72X7D=Jg$xBW^tMU`zX4FsoV5cCP1vb$l_Ln6%>_T3!!%oW^eH+8S z$5>FMl+B~jTgbzr)^B@LsUv~fwwcf=Z8$!UaWOG{C2@y4_yVGG7^o|eJkV|_-K@!< zw3n&8YstvRK__%;E>$H%7e31KO7AjeWZW~2*!3UQbHYi5+%fL!vfJ?=-gK<@g5qfI z(BW}a(@20j5;DgpD-fZR|LY^S&n=0N=Iavx1crAsKieD^jg$u1NtJJ@-glh)^@+S& z?8@a0cD&Z|aaM9qwnpBZhial5U{qCN)IFC*gos$0hgVp*K#}BMhfg`#B!iIQ*T)5q z4ZMCZc-hCY>}DCeS>`)ENU*~=kE7)zxeO&`Il#HVxD3VDu$Nk^+GA2heTd3^^%84D z7FJzQXchJ3NW#6QddUvsBitOHf!?KkLh_W_J@RpqY?b7ZQpe%cPYp_9S3|!toApRu z#`86TcmL9z)3lU;REr&KUV@UST9Ov| zZMBGlb7qs}*70Li{$Ce!b)Lpf(U;LVV|=5Xb_YkaIu)wTavkIv%NWnc^*1F|u+V-@ z4grE0QxYQ;0QyN`^$S=3Ms=S5<^VNo+d7WiwUT3=!OyDB5;zs@ocXwEEVYh4c}>n{ zv`WN@8ZRrWKef*E-LQ4(0CY4Ul1#cRAzTxu z$ZZ({+)C?=?fTwHuixv;T<7ycwf{#Bn%p~gfJJBDR7r%@CqKQlN9X@c%&3aJ#-ONG z_*{{(l;;tUb_p1cSgR&bo63@{P8^lXJ87-?` zvk;nqk%{|!^qbj#8t)vTp9?bVHHmSra+_V-Qhdv$H)^hxu3$SnGlGr;%) zZn2_qx|ni?<>Mj{o%?A9+dNs9oa@o|e@jj&Ks*8wuW82`;XcEsF{fvY2*)duO9*G$ z9vVVe360OhJkh>1GxXDq6y1L>zxah1)L2&NmgowyMBeeb_D^8?{}xZW`w>{3ab<|% zw~slno#4`iz0v4ECJb_lf8irmH<<={XA?mJi;_lJuZeVCa)~^mWqwz986&P0<}}24Vc)run{^xNC2GNF3UaJVX7OpWY|{e z&hS>2xqV<$JwHUUF&ESml;5H}%YyL8@(l;YaT>@99{q0-1b-;PoYR?Q-36>*(9ptS z7#35oHv|PEAo}692U@_N0dOm@XyP5mGo!UnAiiu`H4u6)QJhC8Gmnr0pwJVv>2FF3 zrBIS>16LV*V)=>)Mo^&R&_6Um$b(|UACiOm+x||fzq;(>h}oIOP`RV5x#vG zJ?Sa?{ud9O07o2B3^919;kCg}^;Iqi5Q21|XWJtrms6*-2brVF%=*=dAwg^Axwvr! z7<^jB`DTMA%wdg$H)k*%iLF4r;=zm^JZMDR05M;j@g7qeMsqe5#!-!i7~7R`4Po|b zdykJhkiWy!aUP9VQlBakff-sH%(wXzc=yDvfh|N~BrQVsVCp26`}-TN60u@%G{=zf zNYjKbIPLWOR#ZAzH6Nj8j zwb_S8w8>~odvu43=(2)2>dgoVQYewhk2ex0$ z8^WF6aAEcb=&X@%%tp0%W_M0esp4U@#452;g#CO+@IuI4r^}CT8W}V<0zvJb0gA_5K$y!Zo%N3J|;XX?E1|09URu z0RI2M0)*)GtW&W`0By(7{`f2S$@y)7=PGtnWE^n0%jO6%JV!krc>tQSkU-z(aJ5l9tV#H?ZaExm`1)}+c=FrA* zFvDb^A-uoeL?lJ)#*J_=oVI3>5*aoy@L2v;N7S*<%gnn|OG;{S^vus@$cpAFEl0Og zg!8%!2?T%v`aKG*PCb`$)2Az0JL!sAHlh6JL@Iqt!srGoX^kceLuy2`Kjz-SC~~~i z9*n$g(#%L^qaPRZZ-x*aRs2K6h|`@PZq}NvpY(2C=#}ep%Xl9z?_V}9B*a+YAJSqS zW75Rj#J&_NYf`ViYShott*Rbu+$PYcMRa&g=f9p>#v-k%31mHiV6vd-2oPB0-P5m} z2gR;)EBc5bj{_F zT!3E#CP^{NHnsJ#^){;<7viacNdfmf&edfAEP{>mN9Kimc;Ew;$#Zks3s7KEXK z=~gf$N;)2BDKI~1e@{MbF!~6CPv8nI58f&HcWq}v!n)^yrx9Awkt~jn(L@(4 zkkKNP`Zw4JW!&Gr@#Uc_J7w2%#$BWy7Z?n^Lq4R&tO@rkXozYh1cSIsYaT&|LD7?O zZq~hxM`a@`UM6G|^qPot2r17&t7lzKcG_qtlKv3tVL@v(A2t8qxMxVbssT;gQ*^E` z5V=ra@2ypS+^afy zQhRIPLT}C!ytmBTEF(ABm#t3GIdoRk#_-z6&0Zn0`Q)Y4Pifj#S(QUHq(kR(rJVeu zz~cSS{PaSl_bAUn*O2x#B|qfyp3|;R@$z4y#xKz96Mf_MMs0YI*70J`d0Z2b-`z=? zgFy8B`N?Xtd?c7Ew_vlQ-ZR8DQP4HG^h z%#4)cPK-SwP}b}k_CKF&ZpJj`$J&F+PU`LFW<8t3jpnx!Hj$-Q?T+SX?5VN)R72fn z*g&XCxZLep(@CDQp-Q9h;gbbqE?o`o7-dYE!^1_FZioOmuIQX$hYU~Qo~)5(-! zmiJyj-z9D_m1Y0df1OEm%5~K{mw4ioh71O8;++Vko=48J7GD;+y?~+aQm|Z_`}hy> z4)ZNbIPX-vWP`tySPwMd-$9+bqDLWjkyz9-w1JB<^a?6IkbkBB+&3xvp4VS$Bq}$7 z!woMLb7M%4&*M8+NIAOe4Z)1|b{ibXLf1j71PY17CB9_*lQvI;?8Ei)W?Wvak*m^2 z0`a{~58Wmcc{D2INl_xHn%5N`oHe{Q39@hzcc|i#CauY~i%X5Tc5)RLqETMIPcGrP zoC-fT3@z_MdpO38T!Q(#apNn@&d){pc4j)(K2*O){&8YkwT`iQz~17&xxaKMg_|oo zQaWp88*5QJ2wja%^3SGvo%e}%b2u^wqkRhx79W-g9@fZ-aaw6bsOS)Jb}lT{4AQHkTH}7n|^feln8Xp7fpEcpJt8cve+8 zRCUx^lz&yqY?1|7kOyCpl>~=|LY>O2P*z9OLK(M&oQ4zOG`Z%@KQl^ zulj-PsUlieo1gwQz?1kM&bf~__`Rz`lRKw&1Ccnf4{}i^!sf}9#2Saj{f7IQpLCM6 z5YcJ37{6dt9jnKldm zbG#i#@00Ur%nA-5uR0q2eXtHfgh+dWcG%JGY|hTX-vC8zo*B$Fzr*iji7It z;;quHY93_j)H;J;;lE(6VgDs`B=aWAMHZx$uq@fgvlo+1lVs3^oOdIs1)1>0&BLj5 zf_mv5pG1iMEfptul5)2gtLoBkKsG+?u%kc!9a_h9I`=#(Ek`!}KgdJPlL{eb2;qD+ z{ad)8DQYhJ2wn{B?wXvgOUxbM6yWl1Iy5u{}KIefPy+ zOVxr_GITWRWSKDG8U=Ej*keWjZwLRV!_P0e^%~`;(D;WyyY~e7Co~tRSGK=Fmmb2D zsCeZrMJ-OaKSfYp+pWZd6*_686zN zWTs2zeW>!_WA(>u`MyDJT=cqTb|50C^1PBJwXbhSv_&VdI%KMaViZis?r&9-J*Mw( ztna6Vf}0eaYdMd0RW>rS^CV!iw0eVwA9qp5USN) ztmiTl^*{=4#N!!uFVS$@HTIFuPchk-q!sDz)6-z~Y=LU**mKt9$?X4*ZG`Ayn>7J#B|eAr*S{0lI1^Y^0?9>4+?tvB_%7V^ z-=L;}Q#@vV_;5V#dS}jSR?=GE%{xEd{>3SKlH~Ho;z{#@(p2UuyVUN|A@ApBdWR^2 z)#N_&+D#Rb%ct7vw+JQLm2r5{bm?;h=seTP%GTPIyk5UA$W^bueN^B6;5>5z=7j8xDh? zB4)qtTEDyubS8IS^gZP0VLm(PrhW~yr!YzIA;1^UcjE7XM zJVJ5);=@KFpjM5MImFxo+qNkoB7d<1DuVL^&GrJH zBvzF~)g>>eW3f}d;E&%hiC`y&tng1@()C49FcQC`&h4>52HzJVVh8v!*{jOMpK3zpo? z5D|2cXHmb$q5%e&g*DK;2;p%Y2#Klh#`^XZ3UK`6MMJ zUwFR;4Ss&6$gU+kF+l75N32AA8+@B(6rh4X#FD6ijvO#goIRNI*nc-wm+j|IGAbq8 zj=FH8AOzSJbC!4`2<-n^yx0Gyio$<5i3t|he45)wEYS1(uyOO|fbL!3ax*-?{`2Yc z@{J;YMKh))z8k zl>58?1A~wKAhTRrqJLq9D)D~fe=Anvl{wqnAZuQEr^Rk=H9!7cw>L`K60Z{)C36`9 z4)c*MZpI5mSAGqvm&{%N(-qSFt^GZ*D0BB={MAdH;iS|g>F0WO#RZGcUd?Qo{ky9+ zVsZV{mwSA+#(S4RH(I<4pUR6E#jdR`?V);gjQZOiB>~~<=I8Y#pAxdt1w7&Xy5)a9 zp8jn(@%QuMM1|i+n(A)BP7j8@xJ|8de|^8@Ct}4yG1gCb?jM}v8u}(273SvL@v{4Q zysB(|keT8izb#%dT7P6{0fq|&!+%x%8ow32XJ4TsBl7`e&>fyCfd!PObV$nuT9Bqe zcs!aKg#7e=Xs$OS@dQafrAaI&EDNy_3W!2OWswzpn4O-&?%j(_UgCfF4)zV(k z+f=m$a^qf4obfr9v&i%2hWpU?alRtch`Q17p|>p>?$1&^Yclb|;!TG556**q*lV1oQn>&}3 zV(YY6G+S|CsD@L3&T{q|JRGR|APfIY+*{r!tY=f4H&yPGy7)WWiYm4)9y zttL{XU@|3wkhXmVwy!ReaX}+>0&&_$*fFj4;A$h&4_*nkSbOX5Z$m|5OGmFEo&{PF z%Ut-JESzOrBQBi_j8BgNKsO%sG7&9h*X!&R|iM0r7Sk+ey6NLRJY7+(z5UhA1M(sMr4C!Gr_&U;{N5 z`6t`!5kYfrfZ<Q+7iM>L~pZPorx@AVl6&y!o$ok>F)@{3KD zl5;=be!A)3Jsl_ia_{iVc9J8{7EkV;R2)f!Hl^Vj!8od$Wfi6!wXuMn-wb33iGHK# z3Ox|I2J;1D0T&YYk!!^m>5oC82oQ!Ci74k>1RwZ-3?s}Jcyi5o4vUca(E4B`ttbcP zW{h(TeI>^c+R-l#?Us;YkQOiObo$V7F_HEiL3K!(wS2Z~v5S3_knTE;;|cKzHB(8S zcJ78vIOHp=SPgE7X-7($iT8~g3%8GchIc}TaEl434Y*6M5enzf^3s1Iw zJN}rU4_m7zmIXXN_p{jiFGyYKjcpvwEOlkt zfxwcFM^uu^DSX7U$SY`n)wpd**t*&V(Uf;Z%f`~bbYwm#IB7G=az}8tr@_50Ryi#?^G;7QhCg!lLa5~4G{i`&awd@MQk;C$AX1B$1bWa5rS zgNLU*0+HE?KO3;s;}7bNN(>*7t?#o=ehWt~Eu2`9B+k&*fuS!RR3qbWcf*hw<5tz%xJ&NN!YmmW&iTkn!mDdDi(hd70sC1+GdP-CGsJ)n-(bHHU=YA z%a%1Qp%&O0q1R3=(z*k5AXhcFO03`2OX<9cW0*tjXw2Ot=RreIMO>dpv|FW`L)$a4 zNA}USV^uuG)f~%T%n{d_EZ;l7Ym3tC5!qY+jKvGja|hkzWns5b89c&6z>6+>Q*U@L zv{9<=9_FBwoh!?tl>{%8@gMZwMo7;V5Zf#Tlqfu%RMV&}?@s`rs!!jA4%&i>^r3%^ zJRP9#(-c0Sf!rHfTNsUjs;Zi%Izu)im(}HO`bumLlZk(lfpke?sPGZk?-Ew{`>*xk zs>=rCST&YRw&**J7hkz6z8BPZP@iNq{3A!muTWvzI1aPgR#FAYO7uPNi_kTVmzlB^ z8^br<^Y0q2jC>lqo!b36VuVZBz3paDT|wp>Cu*a){)5pD1HJaYm>YqbX$q7Tnw=>( zVM_^4eDM2{1P_LPp5%ytR4WcFP~xv9j(zgyv&6Uv8((ih^&-9o`NFH-mis z@-6O-;Zx8`94@lO8Rg|5GDT41P2GgQfx=lwXps5Y1WFSM<8KTA@e!>@ zg){pMdz4eyv(f?|#^1$SNTYiM1g>eh8tav@1c9plYvE*d3u zme=Y>UZe`QttZ)_L_$xi0Rkam_y3ThewtxNb)BgSg{yhp7M$_FE5Jmt4CqO4_E4 zpqIhqxM~crrF_HOqcgcQrAS@Q6%brX`Mdv(ABt z<{%aX1jLf*>H+3YsSs*+ZdbTdX_fvv+&6r2#IS^`Jna3n>GSKGl`W5GlO8YPegKC2 z+0qQ}<{Bo6TUJQn<=zLu&$bm0`v4cn8A{F*Y@TWEt=Y!8C@nGK#Bs2S2jb)x z`o$)4g>h@&#Pjg<8R0RFC8HDMidc_lm+cHQes`vHZD#ddBFjJ*;sPof7)K*ua`nWk zwXgv|UP2Sy{<&X1l;ai03z#Lzu0%GJ*jc*^34_)mI%?(Q)Y~A=9qy=@l3IU4dIzpz z25BCWhi0*Qfmn>dDkt7Lp`tR1E=7%>)B`dom80O`>EM=e;Hc*qW(JlFoDHBhIEkG;qmmn_h3GWs*~$NJYm% z8i#wL8)l_V`k?%#fd-ic-U^LlI5ffR+U|_LQbPaD=@9C+)4)zbe!?a6M(i&T>)=rL z`9;xGJM9*!?;WhJLT{!FMzVVA%mJDKa=N54=y&~!#^ql#!iydQ-(wn&{(YZxhuKlx zs{1Ho+2Kc;+2dV~l5cv8-Vd|a>HilCXjt4mBcJhSKzP9SWZ+V^ORv`SkUy*19ucO9 zF2c+hoM+dWyk&BR@Q`lLLQ6iVPM#vxbyqJTAeQckbJPWX6}YtO3fI;@X+cu)IEz8! zgx|R^lDd>8>!tP0g)k4}|*W-|dQiewsEGm-Y>Ikfi$MM6ap+2WDHSTe>N70Y5EOGE7vG1RCr7nlB>&AG>}km{Qn^573~uOOI_@)yB5r zp@)Y@1AlP+AjR0{6vspVDz40Lw}wO5Q*Q>8>~Preu|s38h1DmISC%c0Pct;0@Vp(6 zo-0ot$T_f)akj+c3PTtV=EkVxlX0VxlO;n}C667mMT)Tev2bQK%Y`kcWLqZu-JuHV zStoE>?J=RF=Q=X{#O%rl6g=T;FBJ~^rUbaeQZee3R@Vo0YT;et6N=8^Z5DqColM@O z=zIMf+Y+ZhW~LhElh-H24|%q&!wy${hBjOa;};EN?W;32lTQ^e3p%XwCYc2pHq7%g zx!XI2j#!QSlE_z2dzd=sqj5^8`9K-1e_7!O+P3wd*L=5J?ab5C1`(dJ?jRxNhKXHI4}-c)+RxI^9>zOas>`&FM~YvIn@JHGbo?UIO<+0->* zewbgKwMI>_Gp<+cRSYF{!JqR*a|H`Iu z5rx+$ZqBwDcYL6S1q|){S$ySyqt&W?FL;XWST7Zw`TZVA;J(S-;)!CNssXFM#@w0= zO(b`!_RjreHP-4r@zx95POu1%Dr{e76@)8CJKGEej>*EJ;e{D`#cFzJcWa)i zVCTj>3+v(E1*skjJlaP+u09QYH+p!7`uEa!(1Yx_ChxBTVww*A1^*8vBAVbL0Rro7ta27wsdKMuse zV8}Lu_)9IsA1d7}eeeE{Lx%DW<}8=k2p|N~>iybtt2g*Yz%(s$!OoK1llzMPh0W{k zL$c`m+JE*&(c+Ltk)!>X#qdkJrU#!-KD4H2w-_gV|C~kqwdK!FvhH8+%CqMpe$4%Q z^evz9Wbd9~eE+q*)MxUSt3cmR7WUHfKv3Vmdw1ieQv$aq_a%K99k!XlG=0`qzxGx*{6RqAVx%tIvBy^5qnJYk_lQVnMJimU3UBzORFa7MJ zdeA2SlnH^Oi#$Ki#Wc>h2eluP6?X}U*xEQW8+2J^^SWU*M*z!Dm$ICARCsqn)`0b` zHyRLbi$8qyCYRbni`q42%94p@Z&Ub}zUSYvqCB+JCy-`+Vg6T^%N4^P0DlBqdC~_i z75-T_p&C2WW#tN8+bWi1;aL4~t|d$O9Q0XE)U{qtos^!wG9wh;8PX)!)A?YdqghV% z+N0qE%~P`~^qYoJ7#h$fd>5+>ik~)koE?7l zYO!#~RgseN$qnI3!ZKQnq`4ETMTNFC#dR#k9siycB8|KlHbZk}N|QPFg>N!xs(k{-r?UsrL4sZ$hT za63z2%haXvMUOLvp=o^D9-HU??pjPN;SiG}Q-Ebez zpL4mo2|aVv{j+^9@dwwb0_Mv;>i*?sSmDHCr=hL3x2>XW?A)S~!I#WM$!-0!MK|)- zAg$H220Jc_pZ*$p>%ll*6>wPax-^?BDIg`PbuKDp| z;|E_DS=m=IHK{2#TK~N$yMfW&y7@XkXvLK%`EM#^VXgdz13IU@gabd#Oh;Te51?*$ z116h}t%1>r^ex}lM~TFyHceif{J^7E*x{_Mn40TCTTT7hu(fzfa#- zoro^K`EPbU360gWrW(UD=Tom=U(6f$6CQP4a+U*M`2${^j;-uwaa)z^a~*IR>%sZ3 zuuL!i|FQA>f1lGk*9l-At4OU5JOnW$W?J_HFh+)N3Q&8c5YYkj-c{kq<5sSQZ|-Vy z1+2D00CE2Tw%a7Ym%&diK&Bb|LH_WA8Q2AO_4a@)PY8^@@Lc^5ETj;lJ}o}9bK}Nw z{5L{iGoA!Z00mfXD@*dJf8_CUE(=2Lc|wxlj`Y~$Hv}%gpi_haS4;{Oz)ZsL z$Yd5Q5mRHd#{`$izkThtWBd8}<=p_QO9K@oA_AL`rbnoi8|}c|;hzx_SacWl4S=C} zp90jT2<5?SPMt-|K*&id(=j0u_6X10=8?^;TA3E6ZA9o6yyxwfq#F&_2C14s;jr&& zuoD%zZr%bM~tas|5}j&DSprl{EZ<@K?3 z`me}Yn(WS(E7c?LDA#N~a>fn_W7TEh0)u3yCNm-h@fZX%(upd98q8KUmW~zw=&kcW zVh|BD*jj{Vio^0}SiiuTG8B;*`;M_dY&b@ll{W^HHPXP!BC39t)f2x?1nTW_n?u) z4uvNtHrfGIF^hcIaFydVv77t_k*EO1TJ+W(wxs}J3*h@J_tMaF>cL-v?=(ag3~!}3 zi~g%dvj$Q0>u%6d<0udP-1l6PSZ@z<#9R*JMV6mCMeZ8fRGJZd7;Ud*60W935l0w& zJd5X>TKu9w65Gf+KZMawdxz=7pDLI z+o+*01#vJ~JCy*E52;g?DvXnkg>bKYr-0xBvSuZdF8lGmgajVftY%^GxlvfQh&9cr zYDbBH+Z*|dtecd{22I-g#fQZRVMnsdI{)2LrcD5&D@j+k>^2|ji}LSlx9UvUAV7n}JP&3P<< zNa#}#CD;Vb?-0Q6WQF8FAZ+s}2uwj*#89m5{3xMcQ zuvT2=QgQ3#rMFptzuk2Eb~djYA3L1@bk*n?3w-Oj`E&W_wH7xWLNY>h(RSVQG!v?Y zIFf`WkM3J`u~v;b35Ns&5ahclfU*(5Y#lkTwiIeTEyi?j>PjPrZZU8)#uBhy-~6LCKxQ@}dYD&Sprqu_r>A-duK)t-iUPGt zhX{5c%iz#$n`XHYRhVvNp=F}4XqnY9dUNoj*3}XXq3FI%uRE=VOR~IviD|lQ%46+) z)^+aiV1jC_&+!1CzFyr2W(5}5NsWVP^Dnd@7%S3#BPBo_dm!hZ@ak`JMjez!u3$+g zekeMjo)E#dOiIEN3yyeq9PjfU9!Oc^GJ*`cxxnRiUmkW?VtqEBs-s8vqZ{!Yk@8i< zocIDH22xK30PT>UbKYVhS*q_;XVX}!T^@?p4jKUKmXx!PNkGxF#6y-Q>gHu?3i(h0 zM3=)pxi{fq7fulPaI4&bgNl6^)tPL)=4s*QX(@?CL`W=gxYqbTgOb9cOSlta6x6g< zr>!iv&X27FD|lA{innE}w~j&8>gYD*|H|7SV92|Mc7}%1ussgTH=Ct59=ib1fnnLE zo)dY*b|v5lRL>d2L{2-uu>nD@brpOMcpd2Zlp||r4k>&TKLZ$S@^;Oev%TxqRT{C9k=K&gU{aZBGdl*gk*YjqGP zUJvZ$SnsxStR=ltbxj=c$0&|h%?a8 zcO%yxMcN*)9pvG?k&206_0!-=;Y#wD{0Nx^QTWSg`H5knjda-=SNxd;wP*B$-bSZ0slJ5-kSyX-peMo4&tEk}T>he00V#E#@^q$|Su#ZDHKK%K7cX?{JS{`m zR7BGYt3YD_vf>gFZ3{i|)4#HQD-EQAx94#`aHY&k!J{r5N6HQGO(0@o>p zLI^=1xJ&qsMa91)PQ~N;Mjoja4@xILWFgJh(ZCSJf`ZLc0w_FHrq^<%RD+ ztHu!A81{r}d;$U$ETC~%fKL;L9tvXgG)O7Z`nTq7C+pUW*^oOC+kts-uUaC(tK-W& zcv@ng=QG?x&~3dR=^XE?zTIE*)*f&6w?XzXsH0oy8p4zbEPtzF$%k`CWDNbtILK2M z9wQ)?A#oCZ^zokZzTxlwRcskh_riN|{rYuv-=j$10q#t{2}#f;ewLx(OHiLR)K+TzV=wh1fQ9GK(J3+jKJi`UTKbl)G3%DwH&4E6k)|zjv!S8@Lh5YFg zno@J!+aWI8fgo?RFDZa_ZAiiO6+ELU=3qL=pKnQyJF`V6m%@f``C`WxP{*u?L!A{JJ6{`Ae0e!-so-)4RzI?EkaroXqQ`ru?djK z#IARP4EB_lB(}Su+f>_HfrCQ8!9>9hrUh)};_}BzGa}4B3dQRqLA=t)<-dUj-!%Jz zOHk}BtgU!pRq_^C{IeY@#x~+c9_j(mwF^Bic3e&G8p0K0)&lO<8p%l;4#;P7J%wD< zBss1M9^iIutvgyfDAQg- zua$}tiCu_AnTd9)60MPB+B3{GI8B;7{Pzg+q*;tQW4yt$^=e3n6ZN5~tRWgxFe~$l znkO*`;O($C_tbI(WgujPk7X4X{||at$Y*p9%r#5_LWwT=F~_G{M+leR_IV6FTAPIi zz(;py)@7`$h;H+1q4+=|CWWj@WAwkPHVc}-V!DKz?Z_=M;N2t^i=6O&^W|S5ezjvy zIaX?!)j0*Tz%cedK-B0ELTt-YxBz}-#3X)Q6pb2{W;X+}Ve4^=pd0?3@gRQ7+IXM|d8^y6|M$tqX>to?#-%k-b3H z!Iv@bdJZj|UeXw`t1iisusd!3;MDGbh6$$e>-w^ZBAcLKVMsL4aBv7|a#eXJx0qSX z9cFlv$MJyqCf(beu|+tj*wQlrU1J5QCinKwQH!D(bM|10iHRy9Cwq7)OoG`-iqx_@ zs`2$yyEyh^*~uG1F0-Hk<)a2Jarn1Hv-tAi`NClLyz_!E(LPg5PBgWBfuKQi1WgFB z-0?0aLV}ZhyhQ`P`x><(>fT$5$l+(WIy{t`jns7LQC})ivL|Z-+mDjf>y-KGl8WLO zOHAq*yJ%$+^^6|crPGrQB!Up3aPn5Px0bpu3px~btR}?fG8TneB%h?Mu+(Ko|9@@Z zNwk)W7SbFOZ>@=INV+yKRdcLI+mgpF?)@cWsSL{N0gc|OF#2HDxI1IrzHgWpp z%u>Hn{|v|kjAu-&iP2hnMr=e)O%JroYZ2A;dFZLF2AUNjF=Vw3NnS{;7sf3!7R9z& zhijJ2$k-?)I_$S4O5Di5(J;5t&RekgdHvu|)I(zXFuIhh$s0O|@vW3!7RRzrUZ%_x zMw3~rr|;OgIVq^&%~|%PRd`GK$^);6k+U-S%H1&k#^s@OZC6db@IaGm0{4)yE;kZa zj`CnN!ymB<=<%;_FoJs`L&;~e5REI!lcti9GWe*unvJ^k6f#U3iz}ZiNny(rf2vk8 z8^i91P?|iIKMP#eFJ$xZFAe=lM9m=rpmvi6h3(u@I}uk*O*9S0&h_hw#6m3XY?Gr& zo}!oaF1gRqDN*?n;$}|My|H(rn(QFqU<&eQ5DAEagi;DjbI(w7kl!4UP>?G&gx7?N zSNR$WhlFcnR&Hy&KQgU(1&hS<`!q4HFD^;d)@^W@ zo34uR7J6*@*GLM3=8mJGngPJC~12$8*wH zERGqVnO9(GV&NzbSPL=B(R-#|f6)RELraeD7(4Wbr5fq=J7W#Z`)+O4lPKI>> zCB7;ZF*H|Z&|--8-u{lht;eZ5r`(3-g@8sNPulY#NtK*rQBc1%)T`b?H&&$);I4&r>qH-|yEh zCvQb)bWwXAM{!l))cIQbOxaU}1fV*{71T>yQToep=#h;i)XW@Q1R&4X;!R&`zSidS z{SK!YRNLKPAMVh}Q8L~bVF_Wc&R+{@wNm%f0lxRP5icYKSdx|>e_f>66C>1<-;4yh4lDMP)yf|p7w~tC=1&@;114^$_U~zI2JUN1 zZAWs$f12GEW4(I7#(2^E*NS;sW?GE5fx|O$w(5rQxq-HX1m5~@%r}FNb%Qf5-2UxsV;gm3t#O*` zmetH<9pMRy39pGHGR^eddB@+BUdhNe969ZI2z_Z-xr#G-CTBjc(ED>?Zp+Y=tq6L4 z^iJ)MVi}}t?1S%S8mgFX!ppxfc zx%683I>N6O6Vk=OV=IK3eW|usOC~IN&gTi-G=;ZsX68 zs0pODu3g)nZ4+D)>t-NY?{*@G5#w*U}$B*RC?MI6kP0QyCF}=cF3W89+YlR@cRn{S&-RPnh5up!r(*M7u3=Tl)!sfZI`zl(=cHZX zZ0p9?vvE0$zFmE(#tshMA+2`3V$H*XqL7#Hu@MkD?q+f9hk3)bsYW)9wt0ElxaFm6 z1=twOGDDsDU-Y7tS1vl(3Zcie?@+IbY9D(sb{64=^%97yHO1>wveD|@%Zd9zi9N*@ zp{`?J&k9_HM2SHU2w`X*VGO+Az61J4MQ)$ak2 zVss%2qk(hbD6s(h9AtQDzN$5#IjMZP&x>IW zRur1Je%FB}Nyi{uAg-R>TM=012g!F(`+0G4_Xa1niaP-y!5jR^leiLJ2XgIew~JoftGrC0|BY73X`t`%Jl{(m|AA1^MGo8qc5@vRG?|$@j!=d5 zYwX5P>y>Rr)+PjrWg58~MGoR)af7M@ufh7#a8qZoRXt}*u>-9(t=Z-K@`IJ|+bm!L z`F+|fPASDRme(hW*XMUzB->S$@HLNOAw(@tbrMP0D8sn8=CdE)tMN@{*g{i?SssR} zeLlBgL#aydFNO!YBg(5^N%rP{G3eR z$kZ_TfN=-1%;vO$XgMbiljb)w-St$TK~+Xw->@Rx-AH$rbV_$hNO!4}(jY0_EuEqwl7fVEOR9*3gmg$q3i7UV-_P^> z@y&cQ>Ws_*&bh9A?Y-8oR(j?ASYr0kTEE+=X@Jr*D*pQJm9`9q9IAz#t#!pyx~B|E z@tg6^em&=T`D2b(h=Im}64(!$@{|^{xtp(cxgKdz$h@8zWYWrQ4opdG_4$2T6U-eT zjF=ba@kCtR5Hu67ov%uizLlWDH?NslB;x4y!9+rLl9(?C*Z~|CL|yd<7CVt51?+cb zR%-$kIl=z>gXHJ*_>(Db@xsYBaOU7K`Pi|Vep!=obh#D6l{@>^5iw^IQ4sjl?QUhj za(bz_nk02Nds+%T@QBe_8G8~{3W7qt*Ct;PtpQKGF1pP|s5H#4FI0|l0d z_+h~IjJ2Q6-Gh%a69sL4D~lb;+AJ*F3tEonB#IbAZFi9nZYGUq=Rclbw}37$2GnYZ zkd1F?U2UVlIjRiIw2guV4}dy7sFQb`iByJ@xC_$Y+OcY6^Fdtnx9KGSH~|VlfWI>f z$YBXJroZ8>!}bFZ0xnZZ<-_T$w9hX^fMWW}Rfb6z>iv?A;;K;&<^7T5B=e*HJW9jK z;Du_wdj(uoUM`fEunMZlAk{h`_ueDQHXrXA&>aI_>DdO@JjnR7$@By2KobH~mGSs3 z$Kh85HLZ6gn|!sPK!b=K{~dM@Kmed#^?SVjyTRf)?79eW!*h3}05COYz-XWUmI?VN z93)mOgM8Hgv<7+VQJ9^3jgZsC^FoxFmq^5l{F^Ms|9xxkAsBDIjT(}GMW9KBioTBe zcdP$b3J7k3eB*QuLypA5_weIat0bQvFaeZm19z|aq4_ee>S3N}H5s~h86u-$Z|)2L zf>WXd=?5?>XDSCj9133cQZ0;N24RztZv<-k9>F`q8#g7b;|J>39xu#GuFdqOB2B_a2 z+)4DTj9NtSn_fBQRyu?x!V|fE1noE}uSMPgoQk4SX{lV1^!b3PEp!CUF-bgGl%$?9 z(*ra6&^xQHFa)Y7Pfe6Cn70iRKZh>s@H%)m)Z1V+3`BP5 zkqbItX9%Zww6<8NB=V!-P%0!e51&-o-q4r`*=R1f#m&Bg2p4JsB6;NY^8^~%@zUmf_>8KJxt-+ z?J@Med+c(@MGbjagYFSWXhHi7#-is|F!U5s%>0qN->Rt!nKF3H#p9hKE(qkg( z*#{kFaXGXsaT+Vccl^!t0L@9;Ak-BA=w`(iz8(m3qh*|7p*6wB7cKuByd^sbwS-vQ zm_jTc+lSpp7b>Lmp?q|K(14ea>SzMwWCBic6?&*732|_gR44Ah8(^}uyQlXH`jZp; zPyp{>vB$b{2mHk#MxpP}YYw~+SQnTn;W2xoL~wVIb)AxpkfYCUm^jJol}a|BwMr9= z=K<(O+3bSjt_^CXYbui}Ta5khbMom)!`DNFD9*zk z><E(VB`Ao#wcke=dtZx zrBLj}4|4ytpJB5WQiTn8)Ns>!z7KnTQa+Hm8y@UFRTSSvPuS09yIG(K-LzxE?{Ou@ z>N!KkAUwDL3Wq-|1b|@Ocqf&*CO6^8v}DLZ9Y#=}kiYX;zk&_Z%q5dsBIW+(2M{Rh z1*gih8aGjeU!BK%uub0N) zhk~QT6aDJXJ%||qEks?-Ae%@-Ih*!dHD`}8#s-kA+=Wn3w{!4CSn=p}#>;UujrgB$ z9NsCdYR;?CFos=~%>2=*g+Hh%m{~Z!%u+bxfQ z5R3B@96;r(>Re0Gcl`DQ;Hp~GGfF`@fQNg+KN}z!4b1{RHONwQgc{K7zKk?&xW2Cf z;O8{n@7`mr+Q6QOF(`|hXLEvz=R3e5_m_t5H^i?{5!MeV` zsFy=4@ePutG&q-RZ$O_3&2l<0NS04t_WXWfkj6awT(5hbVf#SV6U5p%hsLO_--Y=7 zjlb{~-Q}J;FHyXvTSxj+na=%6xbNtQ!&BNGrAAffOAW0AehAPj)R0m~jVJi5Xq5a# zEac=!DaH~H4w~H~zO@(IXV)&Grl%*kZ+WpD_@*V)scu~!LRciDNB4c+%|F@Z1@{30iY;cm5Y+6j zT^>?wckflfBz$^#Ac)=9mS3MxCd^mgwAxY(*p$N>^7|q4io{1gtRR7b^U3w|k6z|0 z49U6T$7|n5+p?ohZPA2&Ap};?vV)Xr2?sb6&VL$#Z7Ve8$9z?jP~y*50%XxGnyu3C zW-Als_AI44tJSo}A@?1s2bp8e8v5#+RtmRuSl>T?G~J_2Hq z>u>cSh>kKdavS#QecUY-4L66^xIO!IF=4xOW%FI z2Jnx>_KG5OVS&uNH+Q-7=Fb1Xlb^Us%)G>ka`mE_fjv7=3LH)|!tMW_GNN=m+cSk> zinZE+`Rdw3GDUaFCPi9P=a>Gm!3@xrER!|5ZQPaC)+e;Pd&(rA%<)+4?Ta~loT0Uq zfOJQ*a>YRNBV(ku>_=172**$+DVh@+!?YN*ikV_w4keRb*?lmPNERq2?f_k>!tzJ% z9{Pm8YPk*(SdLqD;LbO0|BA!%0DI6NH9sWi6b&F)Jfg1SWkWqyMyMFFcnj@)Y&n=m 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

    cPn!Tr3xLn-AS& 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 literal 0 HcmV?d00001 diff --git a/docs/review/dev-mobile.png b/docs/review/dev-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..cf6b33f685b6adee3fb6f19d46b63cc7570c5980 GIT binary patch literal 113892 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∾k^LUaQV(Ll*g7t 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

    Q9=K)f68e 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 literal 0 HcmV?d00001 diff --git a/docs/review/request-desktop.png b/docs/review/request-desktop.png index 26643b647e1dde2c36ecce6aca1d70b746d50503..5c13183127885d7541a9cc0dcf1839146462d488 100644 GIT binary patch literal 56920 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%0DHb@)U1 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

    h&MolKvgtSDSIAaH=${ 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

    tkf^MvoD{LA9?$kg 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 diff --git a/docs/review/request-mobile.png b/docs/review/request-mobile.png index 4a2e88b749d25b1f6134d7e63769d82a42736aa4..eacf2bcb33b2a8ecaa712850b15078ec9a5edeb8 100644 GIT binary patch literal 43578 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 literal 41265 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 aUsgdi+#u5;%d_S11V!8DMZM{Kl=BZ8_?vwI diff --git a/tests/integration/browser/authenticator.browser.spec.ts b/tests/integration/browser/authenticator.browser.spec.ts index 5cea6ae..204bca5 100644 --- a/tests/integration/browser/authenticator.browser.spec.ts +++ b/tests/integration/browser/authenticator.browser.spec.ts @@ -19,6 +19,34 @@ if (!("bun" in process.versions)) { } }); + test("dev tools are opt-in, responsive and accessible without opening a wallet", async ({ page }, info) => { + await page.addInitScript({ content: axe.source }); + await page.goto("/"); + await expect(page.getByRole("heading", { name: "World ID authenticator" })).toBeVisible(); + const toggle = page.getByRole("switch", { name: "Dev mode" }); + await expect(toggle).toHaveAttribute("aria-checked", "false"); + await expect(page.getByRole("complementary")).toHaveCount(0); + await toggle.click(); + await expect(page.getByRole("complementary", { name: "Developer tools" })).toBeVisible(); + await expect(page.getByText("Unlock your wallet to inspect its credentials.")).toBeVisible(); + await page.getByText("What is stored here?", { exact: true }).click(); + for (const viewport of [{ width: 320, height: 568 }, { width: 1280, height: 900 }]) { + await page.setViewportSize(viewport); + expect(await page.evaluate(() => document.documentElement.scrollWidth <= document.documentElement.clientWidth)).toBe(true); + await page.screenshot({ path: `test-results/screenshots/${info.project.name}-dev-${viewport.width}.png`, fullPage: true }); + } + const violations = await page.evaluate(async () => { + const runtime = (window as typeof window & { axe: { run(): Promise<{ violations: unknown[] }> } }).axe; + return (await runtime.run()).violations; + }); + expect(violations).toEqual([]); + await toggle.click(); + await expect(page.getByRole("complementary")).toHaveCount(0); + expect(await page.evaluate(() => ({ local: Object.keys(localStorage), session: Object.keys(sessionStorage) }))).toEqual({ local: [], session: [] }); + await page.reload(); + await expect(toggle).toHaveAttribute("aria-checked", "false"); + }); + test("signed external request shows its requirements and sends encrypted rejection", async ({ page }, info) => { const { payload, registry } = await signedRequest(1); const encrypted = await encryptedRequest(payload); From d013f80ecce88c8ba5ed909907e563446b91ffa8 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Fri, 9 Oct 2026 13:57:15 -0700 Subject: [PATCH 09/38] Replace MediaPipe preview guidance with RGBNet ONNX worker --- .gitignore | 2 + README.md | 15 +- .../public/models/face_landmarker.task | Bin 3758596 -> 0 bytes .../src/components/CameraPreview.tsx | 28 +- .../src/components/DeveloperPanel.tsx | 2 +- apps/authenticator/src/face/face-detector.ts | 110 ++++++ apps/authenticator/src/face/rgbnet-model.json | 6 + apps/authenticator/src/face/rgbnet.ts | 163 +++++++++ apps/authenticator/src/face/rgbnet.worker.ts | 152 +++++++++ apps/authenticator/src/server/http.server.ts | 42 +-- .../src/walkthrough/live-face-guidance.ts | 322 ------------------ .../src/walkthrough/model-provenance.ts | 16 +- apps/authenticator/test/app.test.tsx | 34 ++ apps/authenticator/test/face-detector.test.ts | 141 ++++++++ .../test/fixtures/rgbnet-decode.json | 65 ++++ .../test/fixtures/rgbnet-resize.json | 32 ++ .../test/hold-steady-progress.test.ts | 13 + .../test/live-face-guidance.test.ts | 123 ------- apps/authenticator/test/rgbnet.test.ts | 90 +++++ bun.lock | 36 +- docs/review/dev-desktop.png | Bin 132052 -> 136576 bytes docs/review/dev-mobile.png | Bin 113892 -> 118032 bytes docs/rgbnet-browser.md | 66 ++++ package.json | 2 +- scripts/setup-rgbnet.ts | 14 + .../browser/rgbnet.browser.spec.ts | 42 +++ tsconfig.tools.json | 2 +- vite.config.ts | 1 + 28 files changed, 1012 insertions(+), 507 deletions(-) delete mode 100644 apps/authenticator/public/models/face_landmarker.task create mode 100644 apps/authenticator/src/face/face-detector.ts create mode 100644 apps/authenticator/src/face/rgbnet-model.json create mode 100644 apps/authenticator/src/face/rgbnet.ts create mode 100644 apps/authenticator/src/face/rgbnet.worker.ts delete mode 100644 apps/authenticator/src/walkthrough/live-face-guidance.ts create mode 100644 apps/authenticator/test/face-detector.test.ts create mode 100644 apps/authenticator/test/fixtures/rgbnet-decode.json create mode 100644 apps/authenticator/test/fixtures/rgbnet-resize.json create mode 100644 apps/authenticator/test/hold-steady-progress.test.ts delete mode 100644 apps/authenticator/test/live-face-guidance.test.ts create mode 100644 apps/authenticator/test/rgbnet.test.ts create mode 100644 docs/rgbnet-browser.md create mode 100644 scripts/setup-rgbnet.ts create mode 100644 tests/integration/browser/rgbnet.browser.spec.ts diff --git a/.gitignore b/.gitignore index 321dc03..a25a071 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,5 @@ coverage/ services/staging-issuance/face-enrollment-helper/target/ services/staging-issuance/face-enrollment-helper/cache/ services/staging-issuance/face-enrollment-helper/assets/ + +apps/authenticator/public/models/rgbnet.onnx diff --git a/README.md b/README.md index 012fd93..e1963c7 100644 --- a/README.md +++ b/README.md @@ -76,8 +76,17 @@ Set `STAGING_SELFIE_STATE_DIR` to a separate persistent directory when running multiple local checkouts. Run one issuer process per directory; the in-memory concurrency guard is not a distributed lock. -The optional MediaPipe camera preview stays local and provides framing guidance. -It uses Face Landmarker through CPU/WASM, not ONNX. +The optional camera preview runs Face Engine’s RGBNet detector locally through +ONNX Runtime Web (CPU/WASM, dedicated worker). It provides face-count, centering +and distance guidance. MediaPipe and its head-turn/lighting heuristics are removed. +Install the pinned model before using the preview: + +```sh +bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx +``` + +The model is ignored by Git; install it before building a deployable preview. +See [RGBNet setup and processing](docs/rgbnet-browser.md). It does **not** supply the issuer input or establish liveness. TEE capture, challenge verification and production Selfie Check issuance remain separate integrations. @@ -134,4 +143,4 @@ PR #9 migrated the browser UX from `worldcoin/web-authenticator-experiments` commit `b4139268da213a680e89bf5877c29fcafb145f25`. This branch replaces its embedded RP scenario, simulated session gateway and simulated issuers with the existing development checkout's WalletKit, bridge and staging issuance integrations. -The original asset/model provenance and passkey vault format are retained. +The original UI assets and passkey vault format are retained. Camera guidance now uses the pinned RGBNet model described above. diff --git a/apps/authenticator/public/models/face_landmarker.task b/apps/authenticator/public/models/face_landmarker.task deleted file mode 100644 index c50c845d113e02ac6e3627b8121db7fb9a35bb4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3758596 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�%Gb&C!l*m9 z2JZmpA!Z{nxD+9u@!Zx0;^#acInndUen&dk1u1Br+40KV2b-d-qfT{A=&~FaC^vYu z>MaU(m-D0~Fte5|ZV@MX9LvLfEIDggf;v?Kw^>Mrx zxiAJVKBCK>$J**~R2xmL6vqD4EnAJS_uqx&+_pJ1sdU$|>F zu~&D`spU|}K=;$~gtwxrnkN>ecaAQc#&!LX_!56|3^6ih8}pE#qU333yT-s*JT|n{ z+ne1{+z}la^M;$EJPyy)9EjJeCfg!NRqBh2`oJ<{#%-CWu=n9*2#?AEHmt`|NC0itCKYQLF<*d~V>e zpcm1WC9!AZXQ5ZxRy&xxY^zti<<_7gR_o5Aqg)xNN{1Dlr8{6RJY|wZHo)}>lB2JP zc;*KkP&yvSai#G#9Etikt-~*SE)yyOR$W#u&AO^+bgxwC&=AoT_fPi%=Q-(U*F5H| za-@8y{CCoayUBWbsc0s?O)=hh#?=H%#A%Lr^%Sn1Hp1PZ_#RWpOl9^GF~&>yk?0Z3 zCcG8vRt^)4wf}BPIiwcgolK%CYYtQ7tt3viA4bGlio`7><2jG|6cmnZHX=k8v=>P; zFC*VEOJu(h^SGIvS~%9qMgl#_He6>Yn|$n=>=Xc3SP)AhL!^Ho)sB-CVV+*F$aS6m zKpg`0jzM8MSVQebQpsUx1_qH1>mr4inFOb*m$UsmH#I-eJxH7Ukg~dxBKo5Ni!Xl1uf+;PFxKGv zg}=jh;Ai=L&eQbv#JE2eAGgA)wDPeU!24VDacx`W74QhXB9JrA@37SNA6#mk6g&&b z1HVAq%pHI>+(^PJy>0CzGFk(K-XJ^B1K}N#0V$Cm3+D(2lQRp?*$visUFU1 z2Lne$tMX3*wH7e)7SV-NhVBP1D_rK$%o0*V^>Mv+Ow3)b*k+s^xdS;vM`8qRM`&my zJ(}{_V(e3;*V%WLW5`yrJ%SV6kze$3D70d~yQM2j(M{f-_yFWN_Bv&R5c-dLYhK75 zkRF3RLK)IU#4+rOD9<|Bv>r(bb5bYhE0##<4xR(qU*3WpPy3|d&>Yclv_tePO)vKmJ+n}yz;e+z$DhG4jMcO9Qe!d>|?I;kq0NzCY zTQJXa1BcOT^l7ZKrjz#~3aE1A&*4hV7VcMkSc6AYnc#8~+*jAj3k zlvx`|J%dq+MA!U$;3M(?cL;k$nb6bZ9{;JH4CyEOYF@GQxa<#P9@P&?q$jiGLV==> zax4yu{HV;LUE-7c{`P04GXm#!Y@;%d_7t_SRVmNrrIEKR7etqABXr?hXWYYgHAiAF zlI8}`3U(w|0@pGxnFWe0@+Q(&QO?%8enCoUHW=e5*2=l3mT9jVgO7=9LM`rbNEi7`_e{+*`yZ~SbRhN>OM?Bd5^Wc# z2Z}JSAPk%9J)leEu6hC06)wyYC3_}(iT5kIij6SM;M!1=iER=aJjyf3F&8ttM>tIsOfa=5K@i4Bp-4?j^W6Z)_)+Uxr6E+cn+9l z-=y4)wv_&ctn>Z@zH}~8-pBlWot0lat#QuNho0!w7cO_!v1+_TrsO``OTcK=cSUdJ zhv2hjMR*EE@)q4-ZxVjV*P(ciMydWIdWLKd_NV(%v_U7bT<7j%mt3<{Igs9M4|}5s zvG3G%qQjUNDlfQNc~iSV-9{z!%~Y}0G43$#7CKq&()^@W`R+shPF90Uvv~sjR(!c8 z!8{u?sxmZ*DvNTLaxKHtF2X~#FHx2|qMEAtnY)eam9HS;y%wT1xUpbw>1gj({G2j^ zd9Rx5yvQ9QzjI$4U%^#seX+lKj(e=H0~-)Mhwg*5!BN+6cMNh=-L80x%Hvw)u2V%x zi?tc}D{pbB#TTrC)D2uQp>9UloTQDg&*-Z zx=mD(Di3cZT+Oep{sh->HEwTMS*{*$OULFK51~hq~S~CzM*% z08NJLKkTaKQ79;x%XQ9kIQJ`l#&kp9!bjmx2*M33-liR|66mHmv+#G(z1(9Z!byMB&c7l_Ae;X_5Bfh76 z>v%v!T(n5`&ime`L0_u|8;jV#iW`x2rENT8d~?)p=RVFCxtR+N>hASn3*o(Ne?HfX(Ip^uYzSaHa1DJ%e-l`>s zjH(HqGv14EXIeqZtWCgqI3B+5=z`iDH}-}wR6$p}hTMVNVD~CcS_H0`s6|XOSOL9o z%m?rBo|zNuJ>ppoiG0Rna;3LG_>y@=1i+)H?dS>bXzrYC16PGlVs;mu=5xjgc&Hn) znq*?ShOxMe@>izoJZ;;i@>4ICs`C9k|8XB|^MrpWxB4czYn3Q@oXJAZD?t{;p2_xu z0kUS_08fA8KFJ9AMIci3Z$y7{AJe2z29H42c!K$Je3W~)t4{MmTcP!8&L}%`Rv?aOa1l}_nWz3@yypL-_|4ZhCu0)$61l*ZgN)-%6OHb6;#}3;U>)91G|GAuR&y7XeUUM0yIWoO z&AA`9FcDTV^Ghn#9XKs)Q?8gKDK zsylp#oeoFwMm;SSiYvGQxXE7c>ZyB-c$!S-Eis`!dtuR1reD zSb596owu1rQnl6$uCHnr@-6hS@iglazrn`C8LZ8j@3}>Eq*ig$WRp=bIEfx%^mF;K zgPCo7V`mh%1pEe_g6r{e7MJ#>SAcujsfB0wF7=mA4a!cepQ{BRYv(oIr|qYkT+q2(dD+Vu(m50N&b^TVD?gEf6ci@}po4)+k(eccWhs-k&Ur(TEY zZgL6Aa3%-4qF!K{L3F3qBVDyH-(Wng4Fl)XRrE|P$klLe)eG(4GMrIq!hAk()4`2! zx_U}y$Wv1MT5E>>1L|eD9-na|d>+j+ThLMNOi4S*pZj|=bIAWJt8DK@J@F2jNAdye zV~Gm8K^~;*EpuEoK%_evh(#|T&G1{n2Jbm_spzdOgZ)M0lB2xK*urN;CKAVuL+Ls6 z#$5#eHf=YTLBVQ}Iwark`Nv*s8BZ7B-IT`q0=W7;pP8oJDv8`D;>}0fz#6{& zn=Z(99t1~o?k%TwJm~9SVV9lyjL;6v6;yVSq&~z`~iO^0N0^Eh$~o7L<&)k6~M#rHtzm}ieAr76}H6i z>>Squx*h(vaToNCK1_q?D!kEaM6U3@w0h}&K%~iwZz_J~*&DXUQe(f5U2tz=k9NMQ zxCoU49o#;V8QG+;iVleq?_8&-X6%?r>hLSC~ z{m=@!yHf+t3<*RUqTJFTpi9(3drp2B!YE+fQg)YOh%APDg1&R-7A%sUKyt8WMFv%G z)}ZPp?Q8?6VZLwP%A)p6H)IoAOFc#QPy=i$?d@D3)^ zQe%d=0e#`f;NtPNMcu&d5q`$M%yJtn{lc4K4=OGyikNSXp|s8%W@-XE$YN~Y!QV_S z={7KvoejKk?vZPA7Sp$>{lpr`61u~=0j?9)J2n+fe z0{aN}QkR6$!Ncj5RGKKmvO3YF^^!P?yc$brTjN?a3kBCN2op6JOX+yaIW2uqQL$`5)el z9>7-M3)v{@FRq>Cf#Q(6jH8&VR2$bWPZRx_bt%6~9eFV>e z?}dASG~;UWqp+jdC(R)Wvo5kTC7W&YBDYGC9NVzFnX6?r_M=681y<)vX$Z0&*p+{+ zNG{?;LVNGXKo6sEc3t5ZOmsn3*)@=aZ?E)oHZkw5nLB3ELuLOuQs7weVLq>#8~KW5 zT_2hM2#-Q$djk!mI-pYdIXOe`AkC%{e7(5PQ%&B>ksho=FxgqWGcBfuL>;EuqEG3U z^lkb<;2!l;7 zw#*hQM_h=iVrSu}z+Px)u0Z`~{!>`WEbD{YF54CLL%7^H+TJ%W!0v%;(yf-YMQ01<*wf{SmgCIT z$N@l;Xd6}iM!4lCJd0SJV{g`LXFChUSInd+Ram9OUC~qz%&G`*P|iNgi^6Q1TpEau zlnimSML&T_NC4D}>5n)Ro2h{m#m)(QVy=c<=t5u|+)L3yQ7tze@R|N0J0O05jXOh{ z@&UZOJ zhb{;y1;i$8j;$cxZZ=tS4Q81$IbUi?Eigv@QP>qw<-aH(crH6cYRrQy{dkw(wSwE( zH>C5SNAinZ#iD(OD3d&Ir0hxV9_wrQZ`NJ~hlu6EB;Mq<*D)P5*v=P>6&Q`%;`Wp8VOL_OIQ+AOjO*Q0vH)GECE^|Z@ zCZ*0vIw`^(BnAPUI{hV|D-Ja;2N$@+ynp$;(;I$6rVR-Y(UD8Th6LvdlZ8L`DP(V; z!R8I*8tX}$o-IE#i!g{^fD^#O&I8c&z)ZzWDQ*!^kLg2zAG3z<6c35I=Qw8lo7w;y zh=t~F)OTmR?UwbTaxT3^&=VWSJucGNXG%+)vBq1jmqa04N-QBCI-6X#yZDEN0WP=@ zs8RK|{cc~(%whIIJRL@5<$Inhg#gC0vUwwyFE`)(K!unFIu`>R+Sm2M9xJRjjkO0V zdt=}2Kam9H4Z0X>OM$T_`JR+bk~_lbr=r z*g;#WeUr!}jcPyFdfv1K{3%VfnR5-`8sifC1xa!KJb8%i@wT*sHD)xZqxED|3Gr`~ zfLv`8SUXAnwi+yELM9t*9v?ZsOO82OJcsN<%!i+YtuO-+Dn12{P%L6D;JkAb3kE8Q z_H^K(b@X0o5wyGWs=#`YO}1a&%2Kj-kLn*EQR8`&O@ z$hFuBlN|Uh;wbUiIE;`*);bCf^&nEh^Q{H8fs%W`orvtnH$@l4V`VlX)_NT}S`Y|K zkC<}3qk#3CtS67hD7V0oq}S(+pWia6rT6laS>hZy3s=sOrK?rNQ2?XJi% zr`o&Gji%|cSo@2EyXg)x79C|xR&;XyV`J&ZjtogCXa>Jp=Yk!Hbm!QP14}{$#j!F|dyMnI*AHlhNa{9F3VCW!fiLkqHTj46(NZ^F|yE)C; z*?QRM5}pJ4011&!du!XI!dsyi?b}1X*~^KiQaO1-ly27mV~K=_Wf4!p*Ngic+HH*j zk*FB!d*mFI0{r8c0GlBX@A!Ng@m^Xar^w&!9{KOUYey=AlPheqZU0Eig_8=r`J?5$ z|A%Zz1<5bk{)W$rh8)6pOJPU)rN5H$upE7v_vN&+2E!lFFAB`IBH|1i4UPo;1RLm$ zN?*Y=>LA%N;Av6ss6|ww{6G_|7TlT`}vKoAd~;B8k}^ic38c)q-AP(Lz8|`Dx1iq!ZE5N^I{yep*4QBZ_7%- z1^NLgCo3*B#l$U$X~fXPsK!gh5wVBCPjQrCS@r3}#L~0XE%hHtMs>CUM zQ^r=cN};M}Rn9EsYMT=Hv|Ph8eNcQ0E<7W_89s+Oiq)XIw=8rBqNCOXot zCw@qmVR7lU`WIDK74Ow+nlHxN>zb>d$3#>or`V!@>hnDhYW~uDs<&#E)m2rMraq0+ zR`Dx4^`IB58kE#M7A}YR%-4*DN2z(mfUdbJ$NM_@ySimvdwoXi=DN{!&NyA!;*$0$ zQML6c^^HkduOY7~DrIH5n(0v|Dt~c!M)xDg*|bUai!rGUP>Q?kLsdWd>$vjz%w&N9 zjB}@_+X9dNmTatk)iAp$SH36VMPgJ^SL$NzH11mRHTRn&Z+$mCM32#|OS<99tr;C_ zt9wwZPg#~SJZVa5V^yI+p&C)|pNu6>t=(F!i5nRclPXJITj6X>Nf(zg&7#z#nu#fm z@rfyC3@_ss>OYt5tKe<+H60BZsUOml4Rm)R{lCNS4f4bL(+BfuS-E?uzN7wF176ju zA7NX%YEAW@^^Wwqgi#F}YwBXZm7o=m^dE~y<6E_!>a6%lF?3o( zDOR&NA+q{{L7_if6JM$?J6Kv$X0I9Mx>E5oZgWMi|UY%ZdUA3d6x&ANgMe3cJu(BVi;d;VgN#3LxQ`OP?Pjl;P|I~iv{)v0tA?bsw z-PNa3Vw$o~iez*3@9B|JK{88}zYtDG`^+pF#pzyEQ?Ck!*I`gikdx>9k>;7Xg5VraTkKf8HOS#r0H^~x&0>iRN6 z`L0r}H&yplEyS+W(LBRtjec+0`kHM?lJbJ2Nrp$hCHhots_uT()wnCZy2p$*>`D57uTQ8mWb5Cmzw5gx>*~8y7S$h2{+6Jv-kiL;M%VpwQ`e?D zNdtT4m1B(~^*4{Dr&Xq{s(dx~|2*p%Iq(0yhAywiV!!EHCHggQ(=(~cw2i4`Y^TF> zYud(ia|}LKoAgi9miUonwN;m^{nCe~t*`5bpE1z2@S# z_eiJFPi#upzwBhbmxEC2>HpkGmLj&9Yz@!CreU4ARO}SS(YM@dQGZRKYB}>a@zdGY zU8(vD?nBSjs@V{5tZpW9upopxt-U2ZA$OuzmD|B^)%l!r>?8YV?F@Nq_cT!=mSGFQ z;_=0fKZK>S_3n-Icz)fryYvLTQk9}nX;rRaz7@0xydl3t6oXPMA57HMVm4(Hy8%8* z$-&*e=gL+(r+Y8_%r&ieD>2bo&K|`-D^mFkW?v!!^-!yQ-RR*I&BZttg07nF2q*nHIq7<8X=1uITE&)T*r-%-QqIo|g299K(r8S%t@hHl4{7LAidV>)CD zbVK&TDN&Cy`k^!23p}4>vv5D@Yu9f;y?Y3@uW%uoO&ZvE+U={OKUonh+I`pU#rL2v zXYiK0uAnOw(}+T&3@xUn7MrMT#0Ad}osL<{9%L7&T{P|(E|sFw&@U2;wnlTylczbT zDN??pL# zH;^Y<&BN4it!NPAAJbXsCPRp8^j=p_|H`sEsFQ@St(s4umQP@OrY`ec(DB%A?jn=R znb<~TrKmvGm!Y{Y^2zR{)P416cfD$VkyS2Lf8*&gSHZ*3Hp@Kp94Wt8(X-eu|<9ORZNOpY_mU*5-Pp#684NX3$uT?3TQvB0|wC7k>BV^M4Watte5l=x)dRb zmRJS8TKPsiOm*40(X*Ia>K-046uOPn!?T$oHaS=CUXNyxGhx5{WzID4tTh3{q+d0| ztox`nSP1UHW=U%)PBDh!`5VkH=(G}3bdwE0)W}Le${vI+%We`6;DbnluSqIX&JsUz zVK_kc4j*bBCcPy855FZ_;n;y@;rBHU$aeIg((R=~@d(^R{8>EDOPQjSTKfytc6ymM z%J(2BG^WDS4XU*FCvOw6iXi0z&kbTRbcuQAol@N3J)u$g?&>NuPs=uP@!pZqO%>DJ zb)g-UucRBazpG|zXM$5Sx6rO7H5op5st!f@-a0woDfWJ5a`DN!SKcs31TOUaLFPfF z_yKyZ{41g+KG?R=*TwJQQ*5gNn#~^^702hIu zfe!F^=Dy;*cocOH_(Q&n^9U-D6`@5oHM7fh)R|8$qg!)Eryn+&N>k+XM5!q}3oC#& zD`w|RgO^DUhx7;EV}l60OvDT%g4tBEi*ph`Yno`i3>-yA(Q~NB>?h|swH4n^{*K&> z7^sv{SJ7swPIXtLa{d`YYJ;g`5W?BXH1-HjyWdYIn_#LHdR8%6bxwJh9?!jYZ{_aE zGMzu!spROq4VI4157-8~j43CgHILQB+T+T@ipT7J=~vqnSGvxLwKwl6v!SoboKzeO zqZe#)?Ex2~_Ia-`E8q{_6y-?s6%@1&<-YKp>PxO;Y&Wk#ZPToCXXsWtce~$%vxORH zuqWCrci;AudUAE3Dhe;c8nI2fCHND5WvDNgQ#3M(OU%*=7vP7H#QR9q!lj+w&D(BbYdGgBw&sk6?1H8(RC zv*yyv(ke+sU+w+w=SgEG874B55P$8u?2E_>rO(+3*#x&Hj#}3h-jNsaR^fv%7;A?= z!z08e-VDy4mMXR@tp##A>_8-7%IzW9_zeJyD8|0b+ z>zF@-2cZ|#N#NzkzqPyh!^YS7A9dH!!Jx;`6nbcTWb7DO&DQ4h=9ja}fVtQ^{)ce@ zD`RN}4SpC@X!gQ-rc{0mnUy}tN}-;rss1iDv2)@7f*5rvBCHNbz>rcJRsdi)i8$V@GH?J%+Z{5m?2t2CTbS@1S!H+pzENcsKPg= z_vssw>!mEiUxjHqzcM8ur`SK4x<&WBFNK->K>j__S9wy70a^q1(b1mv+-a<<*xWtT zGfZqGZz30?P>*o#pYA=BcL&o%`uTavKhb4 zn3BIq`kgOE3g}$yt$YFMjn;F%Qtk-X`Kh@Bb%8(&#zc)ED;$!6Bt$mA)RFJodY*g^ z{eabxJ3tME6DV$fCL9I(mHUmI^MlR$Y-X3`p|ks#U4N15V4tA?S#0s#v|;o zoTp)jgmuze4AKDtjVfYvf{=C~h05g3Abg5^(KX7ia>sXWm}wJ#7%{-(Dia$|R>s&w0^zm#dE=l-u@=cr47uFEb)^gw&X)C~RsQ@=+KV zmX2UPLC=Nnv0PS%d(s0&GhSl2D}m1?rtEqz?-y^;lT|NF;U?U;96~Mg{*$huYM~3* z4SXVUMSh^%q3lQ~_+3Exh_L&nKln1sG;SK%oajr<6^hrTMZDlMv4iq6@*Vw&SxJ|J z%b4l;LB=P*TRulX-J!hx=lzU8hodA&EH z8_L^>3Fe+cu}>r>duHlh!P;mSld8GO28Qe=8~U0mN#Indz)}Yd(f9R^LT=N3&ezO+ zkFKzfssm}Wm`!E)d>B(!!Lm;%jNOrD8W&~r@>od`5cQqcdoEzlOdeOW$Y+II(Rc(Y zyhm4Rbn=?0!EVXc-I*4>PtO9!)EM+9^2oHvG#X7OPsA*+9Pu<&=-mh8_J!-PT<;h6 zy22WK5!EAVpve6%ro2-t`kkXa7K#F*{WC_@-0}-rLaI(4U*l4|g#_S4<5*cAwB~K#Wj*&PMO1`(PLK z4F%CPBx-oxZoXaaao(T(6#NG=i*BVqq-4~(gInYcm`CBwmNJ9IJL+4+TjwI|2KLz4 z20V>Uk~@1TpgEYXe+LADOZfw6cl-ve_-q>XBs*{xgC1r$itmk>ngYIzP zbL1HJBMyf_v>EXZYpK2Olu1XS2Wu`jcKuCvlIw%NMMcpxA8M|L+$VyVMA?u2he*sF zpfAHg^L5?m($|JE{E@T5B4gcslf^+YDsQJR;}_8Z%uwPUb4E^=Zz(qV3vdY$XJ{4G zsBkxHGB!1@j@ZI~r$yl%s3@oSamGB1*N@;yqr-|2-6&eN;#Hn;&|g>xlmc$U3}idc zKKge)hBhGKC2h^W0k!7WLY%j==e!ehPWK)(4+I0qT1PvG6rKuG!%itwm5H(%NAUrk z<-mG$v`iw)=+8tNFnPyN_PmvrmhdytOhnF~uFn+oKx@QHf5-oXGw~L-=V-pTEI1rk zAZ-Aa!#$Z`dcUC`QY{=a497bVb+Hbu4x!V5Kg1|xFq*45AvIC-vR!2ZKEm=-AIhY{ zD}heyo^yUC3u_fwz&jiQ$GeC8#T=$M#|K4P$n2bQhJK5{$j6BS)dt#(De) zGz|Ly@7{gVF-Az$Xk2GeMliYb$N*rQsj0ro*ul7{^+QibaHlMXU(gnc-MJq~0hp@Y z&2ER+D5NMqVHQ#%ZB^2cdw^KzHhN!96W^fq@v){u_?Ns;=PhcjvMRlV4o3VC3z;R> zh89Z=?JXi+OrOi&)#ZWN@=oM!_Av0Z>mG*&*TMcE zvosWTQ6ZRzpu_A(=uPZR4i4;$e}G$2+xcnk$6|^Y0bVDKv>k`Zf9$~~LZ$)}fG6A% z&Y8bNvh!5Fo1X6NM2Y$ZzJJ}3u2g)jtG&=yybE+eN3%1L8YZDdE9NlKosfwqt?p7c z$P=CqZbPFYsi*Z6&MWED2=JaM9^GrYC<;=XI9;ygzmdmH&!NN8$-VtZ5qk}X8%9bG zOc1&d_oKtamxzWB@Fqg5wR;H6-#N)ll6V*1B2(P9cV`RNs&61RtQEibs*Ha5OtlvzWga-U@9Pb_NadjufY$ zIZ`l~f-it@;XTPxb-2;`v7i<>i7ukFNC>tVj>Fz7)KGzji4E*K*97@*eWtWtyH)6~ zJdGbFI%-38;K>p!h;*5Z8@1&g(ve6sp za2b#3OKDa!klX0=QwVs1>x#RQKH`2B_It!JI2YZnTCVhlDqU@n*4jGKN2kRw4X!U; zryCQ0)6K9UTzz&7YjN-#0@gvgIX(hGx_yPIWM24SWW2jA?NkK;50tD>3x#}oK|2Ml ztKKR83EgCrN`z;U?)1iW>VI-W`PVS<+)Z6$m?j28@OgKa$gW%Z^M1CWdEJb=?9IdKfYbI6TzSp}eGzfMSf+_n zvSeG`U#W1~-!R=3!~g4UByM6;g(Z1_eA7{yJx1gf2y z)rKt5E{@XQN6v5shBWFX(MYv|3g_C(E#2{ZG z2;G8&0Ac(>@shRzdIz7jO%-w+jNmUO5etodB_mI1ZXsvv^%UlEJM<^KQsKjg^T&h~ z(**jZ!aeRIT+5vWq!>;rE{W$z6}lNb&i;k1;@#S%wxfhom`GLuAwpw*fa;i2Lk%^| zCpJm@4XkpdJjkV@U7_=G9bqxv53R5JrSBj{I3^m$nr@2Mi)Q0noj05*L_=v7Kap8% zcq|7XX_igmORl|ci}p4@!2Jr!+?AvoV7`(M;lFbe9U8u`ZIE~-N1cZW!wN2IIQn;~ zhomr5b9(TZ&N)_p`a0W0F5wy?JCItUoIT9WR85i|7Nj!Gc>F!s z3hTktQPOCeY<|M;n&nNypfM83)`L>8D6}Kf9yy0{lnvR&CpoH-ISSQNg%m*@!8Eif z-4v;0^n3x92;OlVH)81Jh;@>melSmxvw4L_#@I9-bUtwdyi`E(r^xHzLcTXsj>a$x z&@j~~{3JNnwo2ijKZ2&Ptu>0f%NYY(z{R@fIsfc#O>A^uan72>> zbCUMv_i(Lt4$|L*ATZUx4%ACn>oDg9 zd;kLrvY0{qQ!tIK$Ic~>gk-Rz#5{!q-xB!4HIiv8WaCZv9M67*l)IWc>$_;s30re| zn2s^Q;D7QCMOwRHW`^2MXa^u4z@1b)Gze*cY%@&O=YU)3O2Z86XvLdJz_WF~)OOcE z!#`k#U#an8WCXNDtZ)w1e>P|#t@AzzgAv;<+BYGJ*hO)19ad5;IYLK~+nz0*_x`Or z2`_Vbo&B`SpenbrDxk^Wxo9KA41C5XWPf2hx~KD(!cO{sM*^X}26Vkk!I6CviqGq>C-j`Haggs_dxOkTC0EASzTq$K8vnx3TKgPJphuzY!>1!EkYxS@dW0XVI{H+Eke~un-qg#T*>!@etjkK-~z7~a@96tZF*jKp7TjY(^`yDet_F0d_^wY{Bk)!x?uk zUAZ+mw4r7L*iyfQQn@cv?Rg?>YH)0BX-FGjlMba{HP=xAy0vTvU1i<{#X8ps^atL# z_c8C0QkY}+L8;CgHro2e9cpu^boO?EO`WJcxAC$(Jp73U)}C+mSFX3^M{9Y+*{~vA z$JR$QNmj042vsL?NF=QO(A=k1d^-6{b?G_ous5pP+KBM;wy%C?^fQ}L&EBeaX%{#T zNA?UmN|k6JZO6#Mf`L>R?H>$;B|2%akUDQ0ER_9nCz}$hn=M{_dH1W08ho4uz;#A0dDfMmrtPw*rch8T328lYZX1 z3p#`vqvS1A@LSqX7r*t0@d`7IS_JlRMrfw8U+iZh4;AzRQt3rZOMP#{GkuV4Z9qqB zV`~HY4s#zQcRQT}*bJs!SbaL5;rJHL5lnX_!;I2nnOndLM_1w&{fWH;_fhvh7nh1jJkyMs*FGf?`M}Tz1=4hsm*2?M)z%Z(r{|HD;4N$FQCa5a_r#?(~pI@Bc z8lc?7u3%8g9}egZZu+Hrjnhga;eEB-*138Um81)BKtis4sR0H4GM<5+s9Vsb#%LX9 z+#=M24H}RS3admMs@uYN*s41P=eYN-|8HM%=Kq$n`2X>zX~TcF{kDFcI(O0&zPLJK83P0Namy8q!raRF27ilk?NE^wWDfIa&^r{^l|OGb_G>&@fGD84-Y-~ zEv-rBRr0o_PHNMbr)hts2BiS|NG7-}yVfTUi%(8;diL*=E2xylJXZQOX<+iP+JxeN zi&|vdB7ckRw10aIm)IrAkvcYEcFClaE~z<{qb#3l!Hj#-ubS^QUy~oD4le4NL1Zdp z5&L`xMwW$?H!WFJ8XeWB=2?7;SU9yw*^#&_C8deys<#(A_PNO?QLRkfDsQ7JlJhGz z`TSGQrgo^##!QK~;&My6#0SNSN~Vj1K#UrKpb_N;Q}DEc%t!Gxb4SPa`;L|$Ox&8$#*$o> zRuh`BI(P{P(+&^h>gY9nX#9#kx5d~ zl-RBk5O*W7proYgX_`>Jl^d}?p=@}{p^SH#2Wqd^l&8)0Hq1z?ichc1oWJjGqM^Dc zx;Lpw%1QEI#gh2zmUcz!;(o-gN?lgbOKzSxp+Xjs_p;++6K2%l<{8m}@$2JjD)uM!s@Y@-X|uR?Kt@KQ zD?O;XWzFsVf45myv?;kb`hKM)W=rgis>9_IQ~Z*SmyI>9jMr9digUzGNRCh4zBju1 zT-vbWxfTDE9P=HvT&oDIO{wY;wLVo-zB2xweNFambDmE5ZW&Q)sri!hQf`rPIwd0G zXia%iWoDBKjQo|lsLhS&%8C~UCZzR=pBpu)A|iT1>f(fulH(=mF=X;Kc{rUF_tuwV zx>1r&FONH#_@TOCYCp@QXmxQvx@p-!&!^haQQ!A2NmYrx_dbu?0p}*H@a~TDudX;i z#(I;-#<|iTN7t#;4ZHn*TWL2mH@#|8tGn zT)L`adiw0x4{52TDP=1Y_f#xQyij_hXh`M}!`_2i3lnOvnrB6D`e}uXb}?gF$qvKBSJTk5C1gZ5UBh%zTfrWQmE^`=$7Nxm2NBz{8FLvC==NTf8i zH&L4iCe@AGoOJ1bwp}NucbqlTKI3| zx;lr(#7S(D@H;ads^T)uNl3RAG9QO@_b!*UK#K8*lG)bKX}&&Mw>+1=B{nCnge_+R znaA6I+pCtxVg5oc)6_B$xsY{TG2a82!B&iwI43xN;fd@`#l{}VdzeZr75@!i0G#sl z;eW`jOp~!>;-zyU5*5`HS1dE0EOMuJPw@+Bezd^XVFpS!gz)H5u4>n$y)IQI+TOL7 zSmm0UrRq>PIzjBJA6I4Qn-Q8;uzy0WEuG0IS3ys z1exmy9f5rF5WJojmB+E0tv%&~9?TQsyNut)Bk(SUjrL@5B7+FsRHr@rwI0(LcBbncJFhM-OK=_6a|H z<2?B|`~t~C6AgD1ia{kg$rFeZ`sw6JHcb4j@RR41$w7PuFUz_74t|Aco7_#|PQ|cG z3Q_nstTnnKm&`k^x@^wH=7Xo0j?o)jCGR`NTp9UH91iz$fwCHzZXQBT!&>7Nc(qa&=qS}Sx>Xza_VOouCpHJ|C+*dK<(mQx zpr3kC$bnWnO_6)^vdJedCi2vfd;Umm_<%#i*w~JzMIEg;>&PPXhhGIA9 zk?sJtt9YB&VcCG$ngmu!Yiu3xb&6$K&7~KzUaNYfVF|GUZz}2OIljw`1@Azvvj}(@ zcH8p<*~jY2SPzxO=7ft&$_Ss*6cw^oS3`|e&SuSFu{ zPCiRv7ibDH#I=R!Ko2JAybX-eIZ?A8Wtd4aEpBl!u4LC2&vh)xZQnD~kwaw>J6#Qk zQF071L)yfD1fM9b;&x^gR!${&CP-Q4b`rw8W=o`SzAL$j9cjw&(reE!i4^H^fXPD;u&Wi3M^sLijO0` z!SK*Blq2ZQZC6SGJ2XEX1u`vaMWYsAQ@wHdkt}R6u&HvW^2R^ z%zbhz(TM0H|AvP04K3HDhKv__ET5G>GN*{Cl-XJe1Oacrht_VuIrU6vv@}oa51-J! zwEhIYsONb)i$|PIhy%Q;ppLyT;-~H}g@Hc}Ey7kJiPBT-D^iD~u`+5H{zX?PP9yfq zqYZtyE>L4>j`-Agfc4Y8fgQoW-1+cY`m`8~t|FW2?}u;3=js-?6t@uObqzDNm!`|t zpmH7tytWQmjcBtcNXbY9JDv)&OnR7e9mPW&%h*KMX6_=D#ryHKOF%uLm{m)Fp=`6QbtrV46oJJm1pBT>)L zM4d&1czSc4z<=q6Y_zi(e+_ElIZ2#ELP*w^FK-t9Lb{Vz&9`xyiDAD&KZ#Akq{#R5 z3k|@eg*SZSCj%qIJ|eEPmoukAYxKZG-grQnsoqV?HW{T`(@o8alFx+h&n zrfLT80Gyz>>W+!SoJqpUo%{KEXdhsr{zU#*a5x>n86_>c4&LZqLL4>B(~eQ%h9iXm z@;Y>?v>NNjKEtvsJ*6i~*T03)pSa80#biE)(-Xag4GtRL44h^GzCT%`I}C27VwhxW zHZRdV`SuPK@vkrf$`v!o#z24AF0UaF;9nuy{Z>}!mL!5rXO@Xy0fUgETc{*1NJfAU z$aRoT;q~PIu!98jn)H;NfKEXwjIt*#VzsFsv=k(mPQGk=zI2Gl2M6YjmBQsIBu2is z9&s(#KcfGpIvakI&VzL<6Z6`O&irS-`g*|EMmC8Te5a#dB1YzxR`!fx)4dI3f7B_> zg0l#Zu$uhB$0}1hR|Ge@v-qcch`pfyof#h$CQ(SDs=cj+Rm;5N4jMsCPpkrkj3I`3 zfER`c(p6)r8-idT@L3+G{LMMZH&xC94PqV-2Ej zw&8~DqbDRh3-20rNB2tJjStW+@FYtGP>dx;v0>fE?s$3N8Xi;h3A*Q*1d zJe`^LXeqHo{u^H@>_g@Pv)ox0vhbs6xU&g673?X%L_4z{(1}(DC}klZyk~@DJlQ#v z9WAyKzsf_IK!S5V0UilarU>{~1Pu)^we!RXgV2NS`g;SU3i`8ZjwFZ)&dJ3n?gtzc z<`a_e!uu19$!$u##!8_x;xezDPBtv{?RE$AlpGGPu?#mR@D}hMaX$aFz70?Xwqu%k zF6rL46xFK29sC)?5@k*DFld+hkTTb^&bHEb0o{sjhEcLc9FjE^KW%E~E1{);FHAk+ zw67}6bIYM{f}xFh>GDYODcZ$y9hpJK%HdX0AA-Dhg(>8l&xP^6ePoHyR(D49;){ei zB8Wzl7dgi+k71tF-$*&KWit^+rryP!~{0%=RQBd!_i>}r9a{B)Evp(Urh=G*r`$=vkCZ*iGND176&> zU#~`%5Q20Uyo^1@PFtgkBD{CV8^SWnZgrBWV`M9I7FLdQl|Kl5<#bPc1T=>U-TAMnn`yA=oVN&XC@(1K#jPV6>qe7IG=xkrb+%RK zX68Sk>|%vm1XYTux`WoH8)ZY(>%uzfCL!w_W~OO=E;P*5lB&wz3xd0Bnnu(Z@aC=| zx*hsIX)brWodMeFhZ1x7c~o6q2=QB}f=u`H+e8`!%qTen%`5nDaP2k?Ubkuw#OO%DF`LEChSby-6cpuLe z%<=-fmj%#Vz=A!E@OiEuP;;(?JBlwNn)>|`o`Q9-6Y2|!)n}};rMm$17upMpuGYmu4I5zSVc@Y{ zLIdEk<~{TkZ6I#p<61kg59lebLaOB(F|rs5jp2X8wxKNnh{z{)v7J3z*e}p%&r8oe z?JMIRdM+w$USf@fcglVb)Y*FGbxm&>qIHCj9G&Z z3`R5qw6VlC!y%-d6bo#FH|)M`%nRAb{Kn7b+}oPzzc3Hvk^Cn^F(vZ`6U=?$$3bJ! z!{CsJQRpP^TSJv}*I+mGG3E*D%+Ik7NTlJGs}vX^grS^wbMSiG0Mtvn$my)CC>9EK^_q}d6&HnbJmFm;t$`bV`NR2?k3Z6LvafsbqY?QTJn=z8%vGl@MU)I!71 zYji^@kvK2%xQ0lVaeFe?s9>-WVjC-|hy-1zwiPnWJ`z|H>IIuqE3_(`s)>)SdSBX?yhMynwAWrpVt=`yxH(}h#Lz<+g4+esuB z?~}Ju7Z1-eTt+ayo?X%&bIb%*@ROhzB*Zxt8mWhv%-ywgFECB9Ic}BH0(P=b!v3az z0Tks24P=c1M+dWi8He!utdzRM{SA6emjH*6EruJeZic$xNU$27!ms3Jg}LZKIUORV zN)wM7bs_*>nirLgNB2E96P`O*fZfTk>$2E%I7-B?58-7QJL2dU0gBH3i ze@gMBx@nWZQzDp1zgO-wufSz;GvWuoh7H?~E+RqD z0_!a113D3!t9Vk*hqcpR08NHvHZ8x@cwJos&JOB?>}Hxme;{SZ=)AVb2zop4h8=>8 z1@u53Fpc?XlQ(}e#Bh-z-Ha;xSnL4M09mH{jzps^;ShEEd}X#>+aKD6X`G;D4ggwl zRjI(U^IQ(SoL}jzOYheGt?uLM0|&dZfys0XXEF}STc!Q#T)wMh`!Q`e6?^^Nr(6hit4w9A_9`qzB9Yq73<&_t>Sa@Q81LL*80vFtNQ2587l zLC5F&^PR=|w5Wc_Z$j(Pn^gCMDEbj~4i31K`V{oomWep9c^ZpD;x`0qs78W6xR;tI91=9*c$J^6UEXb~IDZ_q5x4}M zXl(`t(=UK1_HOuW*F40o9erdxr#yx}RDrarM0_va>g1)PFP^A>(+{pGr$(`Zgx!?;Ct}n3>tDDUSm;rlq01}WKX9DYyvITJ0ox9mbeDxwlWHPI=e^dz4jMub7xcg;;bD` zyOU6&#ccrtqc?`S?;-2Jc6>P9*?=n<)r!b%u3pSwCXc%9{BO;6NW>pJG3zGXJx2*1y@_TB7RJbIf_91VmoSSwyH6^-#^s|&f z`v%7+q+-Rc6i52geSH$035^nto9~qUYb=F2bhEgt@-5n=PsevuwT<7G z@T_#|-d(Z2xTVQ;qlyzseBUzLq<74$8<&upUFnyUUVF2)LDBw%PbnWf4Sa`7jOF2p zb;~;KYgltPt`}`cYU;aDA*6Ilxmx%kR*wc(olfzK9+v#9#8Ppi#+tSy5h_bd`b;EO z^-VibqpnHccd7zNe82x@%#`T0saFoXZ4buyaQk7>1KCg!}<_VA_@SCr0_6M6JwhO(xfVPxr-E*0d?rWnPWBav-zHKeau+A#-u zP4Q(t*#Ca61O9dD2s!Un8e6dx?$szyADcuQ!8!N`KGd~Wdeb6UPE;)ef0r!AJ+c{TEOsQyp@&WlG%xCw z+qY{7)K-fdf6a$?Dm9+6;roOO_m9&q5 zeoQqT$laHtJ>}E_atPfuDwPN__QiNE9`n9K^OGbM#B;7<`<*iI8UWN4rDq z!8-b6p|5+fdp74PxFVbE6WkNwIf95Rq`p%bA-{MAi5ED>oxm7XEqqQZ!9Rcvz-MM8 zooQ4O4{ijX0rd0=d`sx7{hMt95=)Md17z9jZxZFLZ~?tY@FAUvRM|~T7mkSU;O3T3 z)Ojx<=L=eLooASI5orMRv$OUYY$mY2s3UR86OZ(9G;=1}4jUeN78Xv{cU5Tnr%Vl{ zfy|#|V{u^Ne5XH08i)82&EuJA-mUmzk~5*gLV2)d4mTGm(k8JDn2AWdhr(h!7r{%O zF~lgilSg*UHovqcvCZ*-|I}*`p8~c=+~9QwwKZYV3TGz(pdYw$3<7Yj=t(GV59R)`1I%K63|;~IQ@?ZdEK8;3s?nC4 zSfj!bxZ1Qx>IN+F?xHOY;K1*o)}Jy2>!tTSqRbDQZ}*PvjGbi8bKjNeaLJ1PVX$!j~xK?j)@X-3CuV| z43odH-{8JpGkP2e-yNy%0T0miK+ik30o&zXWPP*3n@99)Kc$MNGIV4H2^(@>%7a~R zO^?kVkrr}v;1+bg`<>?kDdR45fH5bkFL4LoB7T7vnG2XLnrKykv>DECahZDL+$?yw zAUs|nM8)Su5tW5EDVNyBFxmGuxS6uD`(T<@G{7fommx0xebgf|E@Gj%itkAT$;+5A z+BZeVvGI!eq$@oI{o?ya_IPvkA3dMVE3GT&vC>g$NFlgaV#mZJ=n}c-iqUoxy&CC< zUi0lN$O7u{Q^`x&3$dYwSA~?R1Q;!ZvBlo;@>pFSZ^K85sP`E@6Mavv=SqwPAsI6FdNkR3px@VDt@*eW5U64YJ|x`E@67+0TzLNfFqz6 zQjIPP`UkDj5a>8)Bk1ok;=n+puf-BD`IBzG-jPN-Z!B+k^!J z{?5mqzu1>Rf5k*=RLseo`3Am$=^<>>B@oMi0_zn|FHb+>JBOkNOoNE7sy&8!U^({H zLyAN4bfU?8i0ZA^^7R#$$3VVF)JvIUYqH39Nlw*$v~`mwB2N7iv8hv_Gk_-IR?kx~ zKu)uoRgp?JF*|yn;T+SQ+3B2R+sp*<(MSrCEljq57ZdOooSV?`hq++|ywD#7q(1Hm z#z&l;d?YQGn|Yq0Jq#?k9ua|foFeL>aoA_^iHA4LG)0OdiI=W8d4TXxH{RX`bf6UJ zPc6`YR`=1SOEH@H>LZR^axvylOtX8X3A{;HYI|aug1404a)I_Va4~n43r1k#EB2l? zT3-}&latWh*~1)9)e?|HXl>7tQAiCPqwgWcgnx_pWrmm=tp>vXumR*3;svA_k8mDo zNOv|N$TeXEqeD(Z2su+)tnfrzwFZ&%^1`*ll)cuZaJ;7#W(HL37tvpyy&1;A#%WwJ zy+*1Az5$C7QRwO!iM>G9a}$|q;bC;7{yDtgw2`092ZEo8VVZo~XY*CCD^`Zvy*92| z`MfdaGklc5Do_4XjibWXz%QAjSa)xr0plNt6=EMxNLYgRyg0|OQG1_HmR1s*fdKrS zP(pU5?;v-jqZq?YW>2nJG< zAu@fl#R?(AI1-pFR5<+%bE+S#Wo(dPro>C{@lv_3Z%g={ymIqorcK@y&bGrVGh&oHn3;h6PCQX^ ztRJyBQ#ai=GQBF4I$uo}$9PSP%Hj?>2V z&An^rMdV>eMq-*^fWmk< zz%?yOlf7&=JcL0^h0=X`mM{gH!QPFkU|QH38uJSpx_(z`pBKbs)>I+P=oA8lH|TW& zm#0Fc6O)&FJIJ}%8+||bAMzc?dv6N}1l~o8*fhmE({uMucQ-PFS%_b9F64fL>d?*U z)x=g$m%@MLL1Gu|hoM-wg=sw<;bBXzzW9^ZRKx7d#RY80&FLnkUO|Sev5cZ=)oS63wY63;+)BRB(5^s!7{j31qkg; zZ?LIRKKQO{5U^ZXqwEq^=vvDMJP~Msx0!4-zmj!(GbDmA%1h`Uoc7+%q$9u&bLeQ1}I(F?pG{mRfp|+=Q(sPl8E@uW*$m!2Fu-Quxi&oLGRK zSI(Bk<_)g)a$Ei^GqpKkiy?Bb9u^c7Shqw{ALZ= z+s-QEGy7e!Eq|HcNKD9oXN9E0w&@H7=-5AjtF}tVVCyey2dNGpD!s|OZuk=dbgS8~ z>jQB+Xw*dPX7513;$2+jx(ZF9e~3Hi@!kpORr)iy&DL3H#CErSVK1@Ulq%__ za0_^q@7T%*m2+?Tmcm#4Wd3iiSgGyLfDQN)geUes)c%6-r0G6lw_#zDYN z>H&DU;0e%*yQO~sI>i&3JxH^h`;I7dBG6RxU7-WtQr5@0U`k|QPPoA6vK8uGE8vm% zistF%9)OzP5M6YdKx zdV!WS&O?4jepmAI>muJ7rs*z5u7;MO!Ss814T31dgr2TcrGq<$9Snap%nE;NjO4yy zS$wo;%Uy`<1nav15md$Mh)ea~gIHcyRlhH`OB%+2$ zt)$}16nJ4VIty$Y`HO>*sp4;No^>CK=?j!uJ^w&Igyd3%=I9vO&$C{=73st&4h>0w zw=gH6tF}G-cCkqFJ9BYoAo(aSQM$pkcOIrw!7h3y3~J_+rlPIvPF<)nk@^*B$-EG5 zl4t0L)MWmJ7^1HSOxBs@rMnw(QOFP$32OvFswmAZ_a&ficnY|m4j` z!;UG)rPp#3`5~w>t4{`@Rq#{hFEE~nFccz_oj~p;{Yag^>q*FAXE$-6bP;;r3J?Da ze*k2IQ=(L@@Jb%t+%_n}!>4I64}DC|ZzJ58R=JX}!dJZ(Sc zg7AmJIm1r=%C@Hbw8E=s6x>$sAh*J_4;HwlJ<(LZOjp5o24$ov zS3knRr(icCz9GQQ^@fPZEmW%e#U7Ds;RNm1q(H-16t}hTzT*FJ&$b27{rR@cC-(^S zEOJQs<@!bT)Bj*PLZ6&#s021w@ec+=4|SYEBhOaW3Oi|E=xysY?1H;eM;gC7&lRi? zaS-AG0J1;;hY6d;29=6Z;RAp*A3~SI;Q2r@ITPmOb7QMVHAOS z(=-TGL;T^4)_IL-aH%jlY!mZQAziNY4CXF_ZRA4SXdA!^WdTI}X`cr4Y z(>bTL4|pm_Z;vxx;EY%l18_Y1Ot(=Q27jQpbFs#i$Rfz0k7sUTvxG-nGkS_MRqP4f zlvzHJ8ps!b{Y-N(HJd4?iX#NIFj%>+#37&HU;_^B#=9VyfgPFV)GO+F*c#$2;i59g zcJz2%M{+V@Z*iJwO!$oKn1!{`48$P{T9>#kP0d2|pQd2h1kI-A!qK zV>eABMrT0T|Hax{MYoNXb%1#uCe^z>wl;p6SFG%N;|{gP`0f(i+O|n6b^^f&>>VL?@FJIEYb1xAJsi- zFKcWb#E`8Upz?~_>tgha_4~vRYr)DV*}Wsf)vNQmWtT;N*N>}QTN?^A&Kq^Ob7Z() zmpxOqrFOk4Kdj4ssmL=d3=PmX(42@g&AF^A%;DCq(d`Yj%WY){XszPu22pn!c|tPIsziuDVt5xIUoVmAx)fuGQ%c(e3&KLsLV1?HXl#^*$x3uP+}c zADX>4r?nQsX=-S#Z(G}1KU}jT z@2Y-aZZx{z&?L8h^hi#_oG;npx~COIH3M~5vW@!Jnm4)CxdRPf^cMm*BZ1tW6=QN` zd0%t>iMVt9bq8z5cG&n+^vFp%$M8vaSKc=~MK?yDm^VTPYr>(Hy7SpF!Py3xGG9M9 zxUza(I)`r>R*a5r2$+sD6(0h1MI~ z=UT06pxdS%r&}F5R%g+jJRFn#bM6UUyTg}ogQ1=>PNT0JYA0)l? ztFqT>#u_x5O`(9{y>x+QU`B$XR{M+LK=dTmUH?t{s&aYwf8N8h|9k9zJ&Wh$LhUA< z-#*fis7Md3WVT0#cw4Ez2G9FzvQFYL;X>Uv#dn1&blTf97tr06FY<~aAGE~= ze(fE7HY{^5^C&cpD-+fEp0&^h@tw-XRsVS}7hA-{JoOBuWh`l?5ld(Jh+MQcMb+R- zvk>33XA=FM_OMQ-)evME!{fSdh$&%~Qd0YMhy~jvdAN7Xv zVVG2UoG0|&bN3}{U4G6OPa?_6(7*;_m8$@YC5Jfbc-I7fB9$c^dJ+=^t5IJ1Gp4D# z*4+YM1D+uu@eij7O!5frdvPVO*`+ckh;wP9eJFWQcviHPJZc>Zv=@wKnGsE)0Nexr z89vX@F3zDQKnl3p(iMyq9D|dX#P$O24WPAi3pb8;NpviAHS-Sa%ukUoVF@dnSPD~y zc!2DPwU1;3o$c{^Pm~@{s&AWZdjY~|Jzp|D+x`REW?zgomrBUzNEgrSk}mi*ZyEH1 zd4YU|&jXXlI=0W#jO{sekXOQ0^h@_zH)!)p)}tN0xy%!Dv7;NZRs4sj8?=z+>6Vb3 zvhCnF=z^o8kuInJcVQ~QaB>H2C4P_>z^JRa=LGQ>n1rt;ce>6Arn5TsBj8}9i0p>| zEHf?2eTHdJ0nuDM9UNJ<(HlYjz$zW*GlcYKBkqYndG0i9n)n|;Uv@9@9 z+{AUu)rD>%?&QrB{$#I!wj*tMC8U)3+w>ZrhQx@sz|Ab9Bz>9o#5M75X|6aAPq7V0 zhKYL9Pw746WAr05z;hNqW*vw}?DZ)Ej|DR9PpM3-2fP@%?d-}FxP8z#qBWCVUd1ex zuEnMD8MqX8OADBG;IFI#Y8xU$XAnJ%_klfB07^tRxt_U7!HH#OZ7oO}IY~GL(z0B> zEb_8oF6!A!CqHlN$wS%s;gS)6jLp`;NAIPKKdtPZ4;J_IE?b>IZgL8iv>Gvjud zg^O%*=Tm%6@tfoWM6KdyECv*S-+#;b;ww1~=HNg;{KZ`a9^9x60a*`3Y`V{3rUJeC-|&h`Eg^)iYsHJu zbU228&eI4uX#5qPf)r!hqz#~W;CE0$>_k79`#>D$_xg>PkyJeYcUVFAlg-`(R6}4O z#AS}i{y5bzf3 zG4TTq*G%zts|pb~&PtjRduc0TWwSt*0RXcMPBh=J)p-NN?<6TcD3P$*2?hKU+8EsB znFzp-)5-GL!g8iNOAXST<$JQWEyp6N|vd+r93i{y}S;MfyaD0H0 z^p;JKzCi;-o6>czBHm$J9oQA?KopQ$i677p(Ka&bn2e>u^_oELbo{VJz~>M6R8QP#uOU&?~U^}r%hGIb!95ybPTvzHRL(t01;Rzd25dV_lETPQ_uch~TpGqmjjK zJ8bG{oq}C4r5HWjyYNP69+cv_OcaCfY(Zov+11<-=_DQtD!{$eS5qpqpDaOsgC_#< zc5%AcKF<8X{*!YyflxE7_fQQ08&5NXY*Wd_;=if2LW7IVx?$4^&r2@R+ic6J56Bdj zzS%GXLF>%#0m{``axQ+8RRF9;7I`bd?1RS$RukX|v5ejViY5FO%|R-KvzT7=He@Zg zANOxy5S8WBppU7$oYNdF@Cd!&Tqjv2T+aWL)SP&PO2o^O&Ij4bS ze)3&Qo@gpo3db~^f?lC;XpCbe)zB(Ri(y>o1A9lfncyq8F?=s&2D!`8i++kUM&(3P z`V9U_c%02J%%Y6+Y-*BtvsmK#h4G>=8O9Rqb>2Nxs%M^ELI_Q$3!qTx6VFspZ&LqceWGFZX{NOD0 zbTz-jPVwdud`Jp{zLlA$(;GXMkxsyiO$N5Y8-=&%bIGf*Y19&NB5Y%435y&XlPiSN zgbmt_G3^Hp=u~j2K&5 z&|74f<-N1D^a=V_xM%+-(LDME%S!AoYQvc&pq*;*Mqy7vX`cqRb*rfY*HKZ3ne54> z*K$5O;;q*Kp(oc{Wxg)@$Nu8ywt*XoDq6y+ z0_RhKHgf4H*Vv6hMJ`uvx1yL@)TDE5cJ<%J9L#zc4=j-w8FeWBqHi# z(GW`yoH($Wty8D61f`3{Vek`hBby;!M zXhqsOhJlu1EucZ@Gx($E8+VwcG20DZYCZyHI(mz{gtBr$&>2ivEbS~;Y&)jklpEt)1M0Aig}=q%QG_QUxDZOr!B zb*6LTDWJj1wf2|Bkq?jmr?&65i%;MKBO9V^vY&@s`sQj?rPX683ta?uMkBX0#Lj5+hkvvv@Lo+LQ&(l%8 zD)J1i3^WJ@^y7kC1+%L+>OU)Ugrlo#3{wmjyvudm$g1keHRG$l)$NKXg9|kZ-74K& zNwdf=s)VSO9;>WZ1BUi6d7(9Gv0*S@F9#zQ{g#L~dy9K|&CrUCSrYww0}}zNf0cI* z(YbNCdFms|6}9d4{k&tt<7%7K?9NuJP8rr_Pp{lk+d*-n`lV@Dw*Ii+FrR9gJ0w)0 z!0VEABlB#vF*&z@=8B0Dv~GPJm1EOhsuc_7A#@n6NsFdOUMc%$W$AqCv)Lc?$HIry z^{YpOrj`CodDUyOKVpsOaP^hYI}NSM2*>M}bp zr)zMN!J=ubP^#|{FVz{kF3Nh^WvUrD-D-mFd+@yQyztCOjJTC%NC?-~hPJ5x)KGzW zisOOD>ff^Do_5NS+Qk8pyLrVb(xcARG!|8&&z$<7?Wb7` zMa;*4kNvM_Vg*nat;U?HU!#R;Qa#xR>3!MvbwIT(+(?@l8mUUkNzALx`YpUx_G@N- zz?Pkq^Qr2g9`eP7)<`#~#_F3ZhRYH(Eu`H~|L5<=G>eHT_GSTYP$|xb`q+*_Q!|2O zmF=4SC973E!Mn$@*N2E*)|g*h%I(!de6=cez#rn__$;u(zh@in2_VAIT6w6N7O@FgfWi!34OGjNIo6(a6! zS?idY1Ew*gl3`FxBXxc9IgZtKk8G=qKnMHv*Px9B6FKKS>9RcM zHo*&Xw(B)8mbaN|TlfY%OPkzg)uqe5OWnCG?SS@QwtchY0- z%^b;MJv4iKWS@-vMl%XrAi^P`pzj|h&0sIEI z6Pt`pgNuyu#CgIG8)@8j7+UBpCsBst7KuNamYXvP7d??#=su0?b0L9$Y1?6L*pJ%x0B!po^h& zWGOoV%)wv4zwk|N9<~+zCv^kU9N#A32rQHkxJGVqm00Xl8Oh^|0(JHU!W0ifEyeYi zQf9SnCaUn3)ZfS+Hl1&@>p8Op*H{uDGO&}GF6%)41;0jadgoy;Jp%lC>JQ?G`?S0m zl6%TL?K4!8Wxy5meAX&#lwgf(zvrYY7MIF;vaZ8qX;$DWkrRn zx2T9sgIzD$uzM2A=R1Hr;T$)oP%n))9cd!9d!}U&qj2v7P^_4{n@zoMB2@xOa5(XI zw+)!c<|amfN3Pf04DMF@2hIji40YzR6(sZ2I_1!0%%wCs0?NanzebBx=Nc za0~m0wBgid$th>7zYqIP2a*ik2=+iE?{8P-KDn&ExF571z2lZT*U%@-e@KoWc*&2I zriq(F6^x4e1zZGfV|(@QcmeSiK?*RosBe6byx=$iJSNi)KZZAAs(OIwWXXX``b zMb`0n!E&5?6nw|T?p;ki1b2E<QR@4_yP*h=N=H((0aTA)W{r# z+w23}Yl%B(J?0FWsLMo_%hq{TE4$dU#V745>to_t`Yrw;&I0F4@C}>D<%Wjv)8W%) zs*;lh@j}*NXn#Z`kWaZ2oOAe_ndxz{g3Pqxgt6R9Xxsk=C=>5k0ahXN*2*_G1}|Yr z2oZmWmmlx9A8E(4uMlp9RL*jj3W;zB60mg=GlJ;PYADLVF|I{hi-_TNXU5;;-b5?7SMqLjQo?H>HXb$%#TMRM4bK9lVX7+G~nlD8xGGSNf=m8VID!rgoTEi^r|b{4m>j&aR5 zPjal2NYVNz1$6>6V zpVxpqZ@pc14Q#^i>FJ04MaqdLf+pBG(@)euem8WW`89Tg>dU6Eu1(3c-DA69GkLKh zhWx$lR6F4MLmZE|p<<{b_yX%IxSUC~;$ue7Ji&deT$C;yZACXh4wmh_)2J_I%Rt9-M>}1*%w-jcWvY`uUhaBa}!^NACZ&~XF zy-j0`Kfv|E+@x`A2JdaN$T>x*-zNaG$~SWbaki3m#K-h5oRL%k+>tj0ZeE;a9c!9a zzKczp9O+gPSKQq)XV7z4631uiHJC5CM|VrFCs~|=SsOxMB?3y~6uAVf$6J7(Bv`y6 zG~L+=c$s;kv;_fk5b<~GB*!8m4bG<&OgXdHT_7ArrKj|zHW^zw?+dQ5bTmcsFn(JQ zHm17|3lQh_l18)=Sl4hFuc>LbGk`j6qQyH)y^It|@tJ?g1=illafO_8uCRp$8WVdNr}4?Ky)? z$M*kX`(cc5ZwbWK9;OOM&~^=MNu57b4%MX0WYZDefIEauI7Xt%^u?mGR@*v@#*5l* ze#^2w0@fPmQX=f?38hl2H#9GK%r~Y_DP18nBE#&x!LFh|ps(mR>e`NGrT`P+9yZ1b z8-ShmABGZy2%BtPW>0o|6PmSYZyY`!xJhCbPvOz zGDY(}a8@gIDWnIblRY;p+eS94YeIqQa}@&=JH7t|W3{G0Qg}dhfB79^4B51LM0Ge4 z4nGK&MNjLg>Xhm)vKjud2CU+lYNvLGtSF~CT$r~ZYh$F7J}#=!%%~dMo8)K2RY5-Z9?c;Qx*`of>x2Q8|E~QhtkK+% z4N`|hOtfium9|0U*kG;nSl#(trrP0D$>I%0d2Q%jt*Poy<;ifeaZZAOkAvRkfym2Fk*#bh|3F{w4Z;$Q{G^8n6Di;$l_-JgzFgYND=Z<(_ae#Ye|* zeSkR<%-2137pc=#KZ2=Mn?nbv{;b-~A6Ow+sL-g9kkQ*JqLns_d=$o*Tie=&Pw@BX zG@)*azrri%tC0m-qq4}*Iz$>`oB`#fXlc;nkEg%esc^XJl>VvIPzfXtt$d-Is2DHj z1bcb5*50e^psI_^%xYC_#7@wU)j}_!`4}?mCwctZLDeGaNab4G==ZswgHPm}nOEox zWSHi*v@N|k%WoE;HvdK_sX8v$w&J_eulZB;=IZ}^kC1ZhzwhC_x$VOJqW$!})cdm6 zWlsz3(o6|&tSaoVN}|#?FjS~5`a`M)>OT6vvOnjIsJZ5wA?c}qSgVwb)8uJdsYuo2 zf3FqOBqpYh=k1{vk`106rC+kf8;hmeJ>#5T(6xeZoVj!cEOk546z+Q2O6e4*Idv4< z1+t6xiURKW^j>5^=?GVbYXRAUo+W}S%!Gt@Zb6f=W$&aH;*+`SH|bq?N%-d;M^eb2Vo6I)!vIV$$y zv0hlB6_Xi#shzef-YsY+@g4L8*}{DYF;Ux@r|t5d zJ?K6ilypI_Ti1zu(mB>n=t6j=Fq| z{uV+&Q)C#jo^|l{!ILE~A)V-|vKE=*hHcBiJ@)yQ8geo85N<%cH|jhbunxL!*{mom zYb2R$_X|Y89Cr=uDgET=7?jft)Sg}jzs2fYUa%=L%ab5pDc=hV`FXaJWoX$nvM*?1 z8WpolCP`oSW$#-y)n}XR4D%T}ERE$6Ni zY#&yLZRQt2vnBVTa>+|fgm;y`H>&7bvVQv+ncanR8Lus)Jl1iIHxFroEVecTA~=-V zyzDVG5ATjPMHuX=eUf_%KUG**94(3$?4U0Leu1=X9_NF{4SaSJV3IpPCX-DVQ&wv6 zFU&gsC25Adm>iBm#m7B8p*!?QXM%OTD|7oe?hgEC@p-C)`7YcL*6bG}<%vf;M>2k- zO%#}{-!{ezu=!9*6>m%3z@6FaPiP&3d zcS3^i^ImZ!r5S|R0VUDd%}4*B<-XH&Ec2jzE;V1Whq)xK^UlwTh`-|9!DG@L;qLN8 z$#cnbI)qP0QoN#yhe*Gz&21`Twft!6*Cd%G)p~$VC|sYs8?f2a%qvB!fz7Cw`%Scn zoX?l>V_9|dQCs`=Ys`qqO|%h?JFqg%P38)g*YCp(l8~39rY^yCT}mG~z!2 zOArQ_E1XQFIqUeB>}|oeU<{i@v6`7_dtd%Nt4FeoE@3?->1-Y>?ybWoll|~yQ4vcx znFkEUYN-0AN_->RudfWA%W8yPC60M#Qdj&BZAV;crXR^eZ_#Nooo6rIGV2#f9Y9Ft z+1av78lh#bRBIt~$la34Lt6xQ@h#rFzRoPKW|R+?7Y7%ECMHPyh88%M!^vRC*F)Uj z_m_A8v(@;!t37Q)&!V9JI3de0;+s6}p)qiaKmjwjcp#lXFQyyv>#zpyaNHc~9&-(9 zMCFJEd0HB0z^uppc)D-^kjMXhyQ+dKc)*Da@q$MdY zSuUAO;?~m4NzNmXp4mXmcl=FuD*l*!qI{`93w5$x+%+yXhI@*0L2}=52R%*wLKI4V z#HR@<|I>CYfb&8ECLDJ;bA;>Y!?r^HdFN@&Oh|>RLAN*-eQ2M_drKtQWOzHz_xM;> zALfcVk!bIl$gSsI37$Lf&YFl+U`xa?uo4vcdtj}x2F~81N_aj?>%XZ}*Bx&KX)z(kSzs$V;5yBm*AXD(m*f zdmY>Ddrc|)ShO)bCaIOV{tk#*ONIn3K^m;KHv|R=57>u0#yV%QxzL|Vij8MBh@m2G zBmD58gYb0AXyCTR4c#$G%jD<~2Vg#55|m8N_%-Q1v|e=Aewdhl=RfPJ`hTnO{%?P* z`1cy0>czxt)i8 zj@56o7e?M>->UtQv$?XHp?6pknWXs^1cTiahGx6y;Pzy`ikE*4bGRQUj@HvDzcOx(J*dIjDUe?GYxc66?NdZ)DpdkE)$j zf$Sl_c>SQO35tE-)*bY-g}(P)d@fM!tL7~Pe+uaUV?O?0OEc5cVo zKcn&C3)$J(K;6llh0%UFhpNi+s=~XoH$}z-oceYZT|GlH>PKIycB-rH{?BWaNPUysk1;)Zji`t*YLrhVT7b4>pR4 zv3vbVLV@exDdD5C1}%q!Yp5rs6QH1_Mf^nm3ttDqz;;3gr9ZIuEL-l$VWzYD+hKvE zg57=xeY*se_P0-Odx!rSs>Pd^AEqaB&WTFtXa+*Oldg~?Ari-Zd3B%&;Ym+gzvIn? zy?LMMcW|m_GP;Uo**9P{E@y>V!a?v{pV-4VCMC9MH=j5vIYKudm& z@+BM8al)zdZjr7JoOC?$>ddRDb8Kd0o04MZQzotLNpF4F2PHur>{FA+iY8g&1w-XC zsY66NqC43GJWfE)CF#}lZPRXY7u~?$na*=9^q$$b&_NKnpe$pUW4L&*mB*3?4}kfW zcJvvhHFMfBgX77_mZu?Sm>z*YiFatJuPM3MzB6!4fP1ma+L)$Rq>tAaUDOH>r9Juo1cBA6^buI?*Nujt@d1OsVUXI z&(4sr7uwfdYr26?z>VG$@ET_~Xq(MtE)iWY&lXI`ItxYU^P*Mc0Q3cKysdrWeiEa* zrWdgEqTAq~?gjKQL4SI!JrC>wUGfBodiXqA%0Ns_K=ed=go2Ep~(W-r1Bf$B5EFg3(_*n=%+!*c?0cXX&{Zdeu6d$ z-#ceZcnUd~=$6}?qe4b2{b~)^uZdsUfA!r*WwI3TIWV7|?U~?7MLN0?$eXTOw92Kz z@5p08v1CsLQ3f$7Nd1Z*)EPt!*a@x*mLIi_WA?fFiyA92{8->8f!Q-Aej723*x(!k zX}~IGPv(e&?-N^kNz)L|1Z&hhTrhl{g*S#jrmd9h8UIoA9jgyHi8)R-bAva|u5?v8 z5zYwimIGXDv-^p)pCli9Mg2p~6j_YVHl60JB0h0Wx$;o}qRH8=jn2XDIat(8azT2% zja5>h&Div-Z%M5^NpzLxl|9Dv!nnh+hV1ID6{Qi)sPV{WHud3V)}rz)&=cB0R|YE5 zZ^o?_N6`XzR}XD95-UY}oDXgJ(i`3h?#31*C9X8T=u+8fvY|aqjPYW@D6cVh6L`a^ zarput;1F&rI0-`L+b4JR}3DzqM5&pnMbCHFWl@m*k*t%}VAvtacJK)TBDuzU;H z61^xt-oAk)$J3kstGy2?W&p$lenQ`SzM=JO3*3~eh|${*D5j-8M;lo`5iZv_cN^De zYhOxPk(AyC8vt$P`kh8^U+H2?I@pL<{P;iLrTG8t!p|P>`}bTAyY@G$>R!27-bK+N zoT&d6>aJKBY=Zl=P(?xID}8;zDRo_t#7(M8zRB`(!+zk;C_AK7PW3H`w2MS?+N&NI z`h#fwRkPB+tyH7F;4NtYR)n-jV zo*>)48ztAoTM-2fLrJ5Se*L1?mv~kK-`d!pK zeShy1!*NYiqnD2k@dTMUM#CSGnH@h>hU<1zebt|5iQHeat+mC5X406dJj45(UyeM; z9ugj4y;?oqFg52?-oYGg_AihlN2H!tcc5~6aDc(2T}B6`Yn2I=L$YR6Zc!}p?Fc`N zw5vR>o>6s9_dwa)!kUmZ<*E}EsTCaifY2>szWQ4Q-yf8-+~0~j!A!7)x@DkS@Qd_M zt%h3WC)_dmH_$n}sbNuefwWTqQDsFRi(VV*bXV25da?eNw=nx@ZE=;!ttcZ%JIFWj~vo)b;+g&Qzd!fX zihq=Y^s$ccvZVj1~ZIkV2-x+H$Cic`X>D)g#$wydviFB2ayIfMF9TI%0(*RTWJ z#~Ewl$5d>CCu6lDiKIRrO+Ce2w(PMl()?2NO_&RBp@ev6Dx02Ush2)F>$?e;JwU5r zHE{u=<=L{{lJ6cpO`vT8J0$JANzyg+?+06JKX`xhE+q&oRy@!tS1II3C>?pn{6kJr z-?e=pCY3xBmze6y*Ln&R^_i=oJ`@~ojn8s>!S?FkS)Q#5uNL-HK(0db9N>_9v8N^8 zO5zpgGpv8vv&`Gl{=4)C(UX3Lb;9-BBKm^&1RWpF$F_olm?P3=Rx4yvd_jhZb<(U* zIl=^ft869zqBy5Gf_^mSd)g!^5UV)ZZ41uw^|n3eWD=cuHY;o0VaP7uttfh?cu z4UkPy*rTjYj(W;5@E_9W_(X+Aw$o=HuV3M&(+z{JoaVK)iwuU0Ym<8p~{DL!Y#RotcJwr!3#k_M)Z z_@xp&&?T+b`mW{zu^d^!xRPwd9r1NnBAdvn!s0w zaRaRqSFwB0Sbue36Q=Ska4l2)>RORZ;HUlmATHVOoh6G?{!IT4`zw0D(;fY@AL74j zE-2f{i_`Itr$QR2A_>0&lQ7+68(e%AYSoOML$5+Nc;amF3PjqKLi`o}BlH47=bbF7 zwN6IQO12=MBrdXxVtvUHkI(u^ZlZf;jSK8$Lb7bqD>e~jijm4Ou6lucG+?D{4HP{c z+{!nuH$Vqbj;Dd}t^1X?#tOgHlLh{v8x;y%??JWo8%TR#vZ z9b0i;VUf=Bjg~5$o3JCK(B>6Z&`;%h)P=Xj8+pD0=WRMiSNorV(e@#MU3|WALGmP& z0e<38Wq)ex{Ce|G%+bn*P?_W;m4-FF!&oHD+d5vi8niTw#z9}19@hf=PGZI%w@;#GFG|<41 z&2}QI(m7O@A6iH*l?8>p2|rZ>cI9|*gY6@v67vh|0mryULf2EfmVZJ<;nn7kt~zr8 zHH>K}Z6um#Vyim&M1QvTh}Y+xtueVj1~ag9St>5E9rX1G-nF@r^WZ-FM0}|iR`;)( zu5LipDJ#4^PNn2G+(O=Nj2j%{;Xk&O4pUjexZFzrgCfck*bbSk#c<9 z(;C{)D;qlYGJ3HNJ^VJOmHbwX%@BXMVGRRT=wg^?S01xNVZ>7;}H0csau6N zgeO#&X}3vxBm2WYImEC3`*SC;J$O?^Kk?h@IazPl$fK!hK46ArvH0xn^rL~&)7780daRk-#Ev2A8p66h>BBr8`BQ5ESo_BJ`e;( z2!`yAF~2X4=VUNf$R97lEiVfj1|$)EWnB1rzu~ICHI^jqNg*TJKo4C(SDa zZC$t`qu%sI=;7rbN@1DvP2f??X67~iYv~HN1g|-yV*DAuIsPK+JinHk@S|Rjx1!vS zEg?zr8Qu;`qONl~IVLbZUq19m8WWsDmEi?$R*jLd935kR?D!2HRCJAeWJy4`A~I(R zeplAS6K|P?4JXf1FD)CvcILJ$q4)sMk@*Q*gs$b~@$Qyr97Uq_ZR;CVXf3Y|Z?rcG z9TgXOio~T7qr10wEI;4fQo4qnK09OXHdtn2k*1Z}nL{7TSV)x;_u3Kz2z}LdQ@O$QnIEP3;Yv8fwC2ThMij-xd8C)s3 zhw91fWB}I*_c_*$av1Gu%}1)moxn%nC3F+Cg>*YUTJ3a*K0*4xobF}j5)rX0oXIK8OO38IW# z(|m9R?*iWhy<_=`4UlIJm2+KbPv>IFM1Ha78Zlc(UMlPZx(i2wokUf}`oJYHBe2W2 zgEj@M{%)Ryl)({AH`l97e-FGUYs9|V#CMqP&G-0Dy9mk^|CeYXbQesAHXu4^82Snu z$F!zP=;Oq#CKs(#MlT`7wc4B8#}P}2{nqp5$G{CpB#c81=vOd9fPu@ncFS-WSLfoNC=6!;5PG) zrmQ)E@d29ICSEEjm;5b|I|?{B)KAn1zUKVR85FR4DBF2ajCd5w@9b_H4rEflkjufw zW#6e-(VonSyL*IZ(gkR_@A|?2@y(ut9R0eIgF0`j0pX{kL z&L%JqIMj){#BJtC1N-t@5(#1>HU}s7sC6E59~{mr(f7a0m4LY7B+BZaH3aPS@a;e-df11TNJ$Br1daSiT zfwOdym?8B4@t9$f!jrG52g0YoX7oesGUX4d6+3mZ^$`Mg@hdewDObtXLlDz zrBDKFPHUa9Q2>fEfQO<#nbl=e%T86)^Ne+WAqAXsDF-s*(%l&Y6M4yoHdUp)cy;^> zL{a*~xbdZ8o~`&H58<3oy;nBG{IN`t(7kP`ad~igWgO(i$fj7?<@h ze#x_geuyRcT6(%5^*x83YHTW53?sPR&BkP4&jYjkDtCwAh=AME%NO#<=uOVOWz&Ui z=);zArfpQJ&1zLT;%tM+diFFTg`Or@27cu|mQZMZ%1>EhX&C97HA4CX9?s@#9C8+- z-;o68E@?apI1k7-Ne@`AWKEL3&J;^iQ7ye%d>dRxCqN9{ml#iV_5W}!fMCHo3d$K3?h*95G4wP2}J_J6B z8hH}h zM`7}H@r_n}@ZIvPR7Abq>7&vQ%ocL5tbwPyN2`eVzjy{H@jxTj1^IAaPg0IUuFpg| z_QblAWkBrrG^CzN-+Fq|EAc;_7wrQ%n>Z->n`It*m(x&^b(v*9v^(J@aTaI`cco+Z zT2L9s!cBMgz}Lh1*d|izt#vizH5b3OJ|R?ijeBNkFFL)XSk_+DMc&i(tO8|Lq1{BR z@3d@^IFDIN)N|hj>xtWVj>**2<_cYL9)1i;mkp&L@H0z3{+n7PUIjd7wXsno*|P;d zF1llHfg!|Lp@?!4OG@I=DZbAhvRdGkze0&jdB4)SgQ9A zXf2XM_XA6yo5WIK5vReSo`PeA<@7Kx4;HyTA?0G$Q7UvoZONT*Z_)iUw;<8<#Mv6) z3LCq!p>2qX5eP9s7n>QL&3z}@DS#Y<%!R^Drj_JQK@-zudpb*lH3<%Yy=`N8U*K8R z0hX1J-LlWZ72P!5v3%nH)@TAX&YtRsVm+}bTqp7dJyF^j_!(|u)tkFAI7KFjpmP{rrY(l*5WuIoy)!;`oV7@ zp1>Wn=X&OC`x3Gts4@++L6YA%T?L4=vrqyRVXV6j=v;h-Wr_c3yk;Ft^n{lczbaja z-bsJWZ7Cd_c(!@Sh#QC4W?3hc{Y4yUJ%jbDq@|xOdS)>mT%TTP4489GCR>(?pTXFg znm%&YnPnCS=YGj?3z_zI_hJWSlA2o)6)EdDA50vUms4AwDU1d4iDUcP+Iu;c169@| z_8zv5Ae*qv+b=m_4heJd*$!#x7U;6Q!GV_CX%4OZFkeGz%<1r6mS);iyw~!b(+;lZ zh&|Yf6Wlx0F`p>nziGd9_h9Z9!Ae0~$v?dPT(#YsvD*?5tSaA6aD;1<<`Q#6Il{q~ z#e3&xD(pF?Oiq=3vF)zo3c(`_u12?+ByIWqS{FMcNS4i<^KC z;RAwopae(JHqaf(XJidDh9>O~GlsY}JEoNo%poU9z)2@d#-v)YSi}c6aSkK&1VQ&A zJCpAio|ADNah6dEB8QtG>;~4F8yH`6oQ@{t8k>df?hA+->Pr%AO>h(m9YVDcDBta9 z0iMN@?U|W6yOYVJYsk&+zwCFQ+kz2-D-MR*B|9QB$|k4)wMxa{oAE*+%D?4U?aZPc znD?QA@b2)X%DLgrRkD!Nje8E;8K{`m&khoV&^+ib#dzf+RkoZfFH;y2+c*?ZvSTmr zHd$b;OQu{;If>Lw4~F%Fu9NT6E)v^qfbk0?h<_qr_KY-Lge9Ce#;Z`rk^-w=(BC%A zGOH|$*liDS#pXEY3V5Y0;yxfuqD-EA@UdW2u}2tR{=e9}_qZnO|8L+!(J;+OO-WG) z4A{mF*N#j@BSpnC87dwUP*6-%R7}hhdCt_RNKsKyP8&O)02LEU%kuEGJY?m8%F@cp zl*~%=e!aI{GROGc-^cy${kwWR*~LDe_vd_FyLJuN{p~OFo(?-)HHbfGZ;s`&-9H$N zHqLhAzP-9zk)wm}y)*aO-n_Vq)6u;nU(v6Psx417IeAr~uWKjq0S^54=P zysOdA?$rsd@RnCp@cMFJEPrvwGv${m1v~O%0;AUI!z4?zUul1c>1H?^_L=C6?r4Nm zcvC;w;M6|PKV~Yje5uPXmsc60#^75sTZi@6RTOkBUu&y!T8tYU)2jbtQX6&|f7mf! z@;zSLeix3y7#y)k?W=|VXm1%Zgh7fgWEaH4l>_Cw`5Pn(K>+?wGkxFM#}vq~%Id@# z)j;JJqGaKx{GWSoG!M4C5E@+e@FCp`pPjiNeW5&eM)s`S%+wj_(=#(Nb2F#s&RZa! zv0&cZT!}kHGBa~7GUjGx(7gxTM&NXz9ZpA12=;X%@p8kysw-<-Q2NC?g z)>DRZYI|}x8z3G!z>QE2=P2YtJcPoT9vn_FW5rN0ukKoiu$1dvLO+8(18E5yaXfqT*Ht-=38t`2mC6EURz=iuyB0m&DGBD5q zPU7Drl|c@S1U>{peGu9Vd7yznXu#hn)@0|Oo4B)&|z2y!6_L~sM2g&&0yNCOcB z!8P2YuZLxj0!nDa_k!0$G2}rqgaCd2&lxC$92g0~a1#srIBbG=xKHa3av=^-B&QQT z6TlSG_9Q*hQbAKW7yfkl8| z(4_4d5q>a0?Wdn~uAqJ2ez4`x7|?zRe1vvT|F8wH<6VvC*u3;e{iX5P1!tfJHX;v} zEFBW4&s`p+QT|Gx&vty%DUQ;$FaYiMtyhBQyz8ZLqIws=`*06hA&+ml^gP9tL%5%G zily{2sP~YKy5fv&N`a#Dgt--!OHT46(22k0Qm&z%E55NlVd$omKGn7X8x5E`b=@dulJ3xYZJm-d1 zR4*5(ZCtPVDKDXVseWqr0r(9Dps&7TMbA_IZ7|hOI>l1@R#@Sc&elWa(|#eGZff6S zV;O32j}PUc_HKrEVIcCe#{fH)>+o3uTQ;(|#**?)RJfqu94W=qH`x zDE%FH4fXgN%WSXu*>+I9R6n)*BXGb*Kjl*z#cY8pKj{=l>2JZOUg>N-R6gx*g6=mT zwePX9%rd&ihw{)^u7x*Y3)<~FmY<^xwrpf^jV0x!zHERW;5>{+tnXM-8pXZ=ulh-+ zI7;6LA2qf0v2|JNRX^Jfs+a1gc3*{~aKTUcltwY@;I5x^ilg-P&=vKt?Pu$u@@an! z%)sXqp1FQ(EFC8I_)s1i%jK{dzCwAvW7+H1=3_~DsW18P7hH#ZUTtBIaZ01Mybd4u zNvAkUUj>~|kH2*p=v6=ECHX-0Q@d}%R}hZAvSY#4Pid5Y1q}3)PH~jJ5~g{jv-ME< zw7(2&P3?PZEIAhU_)s1i%cZb{@_UsRh~KFkN~1il!fP-bW%`cymfxC>HdLFDoJ)ZGy!^Q7BXaiesKYU1S^hPn%W_onJCO5@Cw(c#S zwzIL6pV~}qr?}tYTR82fZInj&7s9W8(kYJ8bD<;ZVf#+c5h|Y^=fl)nkNWo5Tp6tH zv86oJ#vGVS`Mt_x=ZexOPZrFByU61^SABnPK37y8^>;S>3}3?gUgfiElhUZY*>J^A zI>k}?9FU+Mf5!&btA5H$s9vg{+I%4lt%ey0gab$I>k}?E3m>Vovnw; zr~R35x~YASjd!TsJwB9&#&QN^P=2rS*zu+`$}<%*VFt?d9q%fvO}2hyah=zxJnC;c zd;=c>jhAnKD2-yL!Dv6}6i4aPVK?gWH{Jza^;2Gw4pcw2`xMlH$xr!|M)^~L#>=;T z6i4Z4@T*rkJx8c~dVCoM+ZiPf>ZSUr-SyB2 zy)YiW_0#i|e>~85`KH%<(#PR(s#iK&50y{*FM+A4eUFXzeW!bTC=ZS0SV*G$Ugfdl zO=*;8IJ^i$P^RyAZ~UYAcvE@Q-%)T7ZUK##Z-3}{YVR13_(`W&N*@g?P)`>;VtefT zo#RzMI}TJY)lcod3qQgZKjl*z#f$(NFW>f29Hozh(_ZOpJybsJ4})HJAGPnX@y@Ps zj}PUcu}p*^lppP8>tn~8(kM?n425ds@g48KQ4d=`vbfGCR37zr5Zr<9fX0h0pIzUS zMzIO7+fO>hQTkx`wW&Xkjdz1r{cJm^-qsLLac~y?^;15jQOpZKHFe zP6CaWZ+|F_+TIsBqHN!Eilg*?FctN9)^{5&e&+#Q+bsCU|FsRZnPOG2qbc^Wx!UAu zJN1!Jerhwdo#Jl8MX2)AHcF%XYWUPoI>k|XEd1n^PR|i4pB|Oa_pe8Nd+gZQfbacf z^HBQ~Afx#Q}{MTRwYiP#U#G3J3h8 zQyir;@FeQ-cP_e*eo`K9R4>&}?fx1*h3?4bTR){yoCs*VeA6k8(#0^zE1j*2%BOuH zR5i8lvGKll(A_@DLt`m`Xv*(Z9y{KYMtQ=34+BxA?|84n+GOiT7T39m%A@|$`uzfq z0gab$e<+P&BSGjVo#H4x3SL7!{>D4otA4f}R4>&Z2B*Oe8~v0|X%rIB zfKR>B*?Opa+UG*|`;Xf9*m!3ha*q$?p|R`@J)t|=&DO_`H>FXY?$8Tt$m2WScTo>p zKeD*So64j9J_nzG1!%n3^4axGX%yQ7cKAuBI7$zNpHL5tBepgSe$X*Y=OUcNT=(3( zKjWb`d!sU_5A@g-)DIqw&12^#KAxvMY%J|lAE+-BcMfV{2-@P?7fPf2-C%~Fbc&<& z5LoAxPR|i4pB|ru3r+2NZ0>l6-R+}1)J9r=ohZLodFVY7e%@#=FR?e#%RzUaFt!I|P41 zwV(3odCK1rXuN#eN3oRt6x{VnXX~N-wBH_v;4=eH`yLzb!g}|3Qyv;i8rvt~0NPD! z5?cVRNjeu%N-$bapB+#hwjSE0eR_`i^#ojo6R-v4__mwUC_fz|CO_#EN9pZ=de45o z*&g-MSa9iSG?&^Wq8;eqnkDyVplrXX3>LMC+D84m0Q*6RG4X91rBMtWcfg*=FdMk#)WWsm@Ya7KbMAq7I=5?<)bAO%99 zL4-0P8#K@ugEAlw;-OK9-(eZVK@gn7i+BMfLl?M&g<1f~5CRwRVqFF~Ac9+Xv9&-R zh~O4poE?w@aS#MYu~;@hA_T+H2;8@YL4K((|duG@KBcTf%4@DbbBm}{^9vB-)13p~pjy6CVgu;#IP$uL; z9NY>)KOq+wxZe$B!Umwv_JiPLSA0$aBOw^hJ&Ume`aGWp4PCHqAO{kl3ta1rdLSQ? zAOz@hd@W=FA1*zE{zDefXZJUPu|6Rgy1>z=F^7-*{ZOjrIiuDUj_|j^F+?9|~7| zJYuz;Sn3N77k2#p_JaCA?WTGOjlm61e2e3u^4pDO;~_*@%1_+mL1jfk^Ldf^EzEap zX-x7xWl_IEz%#RcM#9~fc;s<-VrV`hpn3hOW($MHAq{SMwVmp07OVE#^k(BgeUJOJ z>6q}E6Tc%#eW$Tw=Y;BB=81249OZr+LuFAp>>5qO{&BCicpsnsW`g2r?Af*?VL#|Z z(;DaE_s7?`OxERBcP82X(BYB!A)+in`qdaroA zY_RJG=Oy2>iaRb1c^bW9yvIuEXSAtKiec-dedWofdH0U@H(S2(H14^c_?G9L@zav# z=O&uBdat&49Y20X+}#Hn^F~ih%g2wb+2~RKsqM@u|9$t@V(L4!ksUjFEy?kUZ)&gK z?z)aS%7d3O7h3NYPkhT`=kFD%`PikQtoxp__}Hh*n#b3C^HUJ@gU;#7(@kUGwPyVt zYLEKBjsf*2*DKz8{rEd^_^zKc#5+9kGzL6qb`JBmkdcqdqIR(74T|Obr|Gzlz^~29 zlF9w9g*4=i^Tbj)-p5|^)#I+0)=!RCeSXgs%}?E~Hq)_g@T$*i-2L{J`bzC$$DND) zoBx-({jEYO$9v3Z{*-5$=HI*D%4Q?wj!i>MmM5mgIrDe&K%8&=xRmBNJY}_bUF7F% zO?{xcZ+W$y`r>)L^)u@3w$r%tKJ(w-<}0JAzbT#=I=1LuS=03%UQ7I3Fi}6#fSoVe zFZQa}Yrg%C6vflnu<_KlOP=@^$K3y^qS=^pQ5OGm_ZYNTRv&-8YCeB-4$SqG#lybW z9Qc_vcYml(t^XK*hni~)T>baNw75?EELa*pSG&$O&AHdu`yDYFdoHkJPxFxCiEsHe zhG}-RP<#>;`mfvX2vglOrfl8u*gxlqr*ZRted_m=(QMw+5YIi=G!9;KVS^@{a7R?SZjuDZF1wRmEE`s`rVskyQ z>@mmQ&836GU;dk(K8`{i(NVwcEcDbn0x{SEc=$nW^%Ku7J6FAF$aBUMI~@DiT(NXL z;4jwuc%gRF`H!RlmDAE(s*vt)d;_n#W4K6vG?&W%ZZ6|JvA%QJQeCykPjfR2ur-@Y z_jR9pKGKlkh9`d_<;K&G&I6vgXRmH3(cfG)c-q(UTq^yJNm_%uokOW$&wTiwOZV%% zD-(XCL9r)x2tDbE^*@*F`;ex2@t#X6r=_`6qF{e>dBzjNMf#(;RQz{y+2I>^eZF(q zQeA71pXPEfU~4v)?8wj>O#_D~e**TgHJi(((eOW)22cB1o=b(_F%f<1Zs#CRy*xbn zpG)`UjjM6^kp@|w*n#xq|2UWITjQpA@t#X6r=_{1YZ!lXS?r17BK^@^%Ky8$yy%Jb zoy(T$O8U+{MlYZ)Y|ZA99T|2m^F8_FUD=z@Wz%T*pUXVN(|EKzmvX;ja?exm^PYNJ zo=f*7F=b=hti<=i(s~`>73=@FWN$Gw&5QS3QaLTnC0#fAo69Uu3>WE-=2G_G&1IP< zmd1*%ou+4{&!vxCbMT@&YwpZc8RNfB-uLeQ_D2l1Ry084p|zJ^keug=pxI+p1= zYfgGzYRrKZfy%+Ia zchnz$brvIz%FzHe*Se$rHj8gsc8{&QLQlQE>#n6fcDUiLFVU) zwI{#tx@(#RcmF7cVo4Gx5l>^<@)}~AjSIy&JoVDG5w`zf4Y}|3xiaAg#oqG7(rYm` zSFHav#C{UjG&k%TV#{f14KXO#cRneG_hZu35l67n0H=82`T^0$U)jrgmx z0dc`dqt`2JEv_L=3v1}2r(WMR)KVXlesb4G=QeE3&Ry(`uxlXSlb_Zk<@a4fO|#(c zAB`ish7z%#hj?}k(K)@@bv_O*-*KV1d!Bl!AJ_u8_(AVao5#D~Vo;qF$NcQ>pA`Gp z0(kgA_k#Syv2QOP)z7XUwj64A2++L^ulI_s)0@9GXP|D1;R3sUH2=l=q54WZu`R71 zI_CY=$-U|BuLSAXT3kP|Ev%mq#8aDT{m>(OZxOqG>nrfoC#DP-Um72JFU`iWZ}`~x zsQ2Wjd&byY`Ca!4-0y4H&pKRn(KxVcCm#C_Puplr{H`4wRK8|JYQV(VwuPCTBYa%e35tR1wtDTa=F5)UPw7%ukN zwG;batR0HI30EOYjN$UTUa~Ei1)L0TI}OVPknrMeZFhw z(M=zAKJI(+M|T04(sf%+B??AoCQ-14-o#kGS2%6CjCF6TG*m_%V8TL2e7{H`7M zU!J(?q&Tf7jy{LO*7Dk6|B?-v*!tPE!h(GAwAja>-`({^xa;#>JD%BauL0_p z#*;tXE5Fy;c{B^uH_Feh9R~X%#L{@SxOQ+r`Hl(289a4{VINxn7eD;29nXzCs*~cb zdEzKPwg4Jazpq*B2c1Y~>u1*vTTTmW$8`zF#snjtP)x|}=4;2#?afE^dB-MuVq01} zbPeaP&U1*Pa_Dc7u(h~$lr5~Clb(8g)=rCkOt|B&kN!RboA26TZ>zf20F6nmCqI4W zip`bZYwbLm1?n5+XV(tBZe$^rodb$_{JmP!doFeyDW=#H)8cx=LFhY<6c^g)?ia;j z3*h31-}UCX*+}iAxMWWpy+_6tz{3x}>&@$?BU?Ya-q>>3zWQ7v(P`sRo4MF06te+! zQw;sio~!)ag7q7F)Dzp%dh@>LL*)~yGvN>SIMMqEY%Q)gMGNaK4)N4xpY_&aA03|h zXiTyBt~d79uWQ{<`>uKNhq$sgTW^nMf#!hn(>xNIw~L;(wYYY05VCW}MSenYDfl7wPQU z@pH@9Z!G6ecYQ6b9q)TRR6e10<|B^AiR#1F;@Xk7uy*o1_4=%x7W;V1Qy=BW=DT*- zTg{K=pL@^UzRq6xz0OsSW`X8_`a|;$L6OPQs}9ZuF0_laPhW#dnJ;^_S`wg766-}8>wO;xsjcI|KxL*=xvc3f|x*%->p;{4@~q2JlHzqYt`WG$>6ho@ejwbNoBMSr{Nqxr|?yLQ-H+mGgR ziYGt)T>_imYwbLm1sYE-W$>VJNJ1<-2lW2$vDZ2L?mGt*v&IwC;(EhD=r1ntA9uf~ z9&7Gi-hACKS1_8Y^$?;a!i`vz>TwMOwi_aePk8ZsfB`b&>o#8Z2H z)>@1GEArI$Bx11nt~K@+xNFVOcpUfSr@uYH=F0E2)*j6OwTJSvYmNF)=V==~Pv@Lw z_i}Imvhx;?bV6})58Puy{lXT&#Sg#h#&hG8>ZG__PaOU23$_3re)v64dEG!|>u1*u zTTTn>#&tW5jfqG3gkrR)n_{T1bWW#xkiLIx;4iMh6X!F3E!LCruX}9hZ#uB~&L4X# z*)?k)XCwe((8PhFG>wbUyT*KRo4k{_cC~q%yGuaPfnVCEs}O zdrnlh@}awLG#A(cxcK33-q}BoV8_#Y?iiFoZKm<0HQsdp&wpFfJo%}AG^XzRVgB=; z^R$nSJ8Z7+kEP?*9n*9_llsyDEnxqBIh}i`d>UJNp!BADZ)|Veby6D56`_80z<<;q zN~LmWpUR^2S#xt1<>HYYhkWc4ilgIo8Dzs0NQMN^fC#ui<+%UNHub{&@8CUsYx@!U ziYHs0c0YE#;C_7Oiu*A<5c#QIyfi%I1h&Q4wQ-Ffr!##Y?-TBQG$m<78_!ZjW^7Yl zch7Fph}MBLNBCBig3|F)W=a0tyHOlM@Al}6!&9@<=Vr`FUoe~g?WOxW#6900PRCgC zkdb&j?Sy`WV%;`c_D7^?uV8byUrwBMGnO!F-c%Bc`{yMb(8%zxC(|HZ$4oe=K zI%;t83kfeIzreYK^edipI<5ze89jdR*q4Tl8Qqj8$TdfSuDQAFm3Pjpxv2{l;oqFj z$xMAUbHPIV!IJBoeHD2c;9Izce++#I@ISrf;ddy61Zb?|ampYWjvhq) zaP0unArNx+qh2^yi~QiIK|7%ftf@x46Y-D?M;(Xu6P9tzhYehuPRBYqX)A>nnz=Ocb4;vsMa;+G*F&Mig!YlvThcqq(6{9?qviugr{ zhlE_jFXVB!&;gFm#JUE429Fa2_oneUDUg`X<7m>5mdfL7n9Aeiz0BiWoPzw5d7Row zJWdD%O+@}AJU0gEkTn9aLs8Zcqz^>;0K~*0U4s}U%26Pn6!~IMwh;NEkgqM$TjO`& z--+Oad>6qv-Vnj5Jrlvv)<=4gs09mXp#+Mc05(8A*dm>xWScBkS_mwFRC;PAZC)6Bp<@ivFJuMc@FsCX-1R34=$v{u-5; zF)KZ3R!%1N@lx-)-lFR{+UPrSXpgSv@{mZ^CJm4S)Q&h@chL12q4p%wBc4n1T$AJ1 z01zJ3O&s&hmoi~HKI4d(ZD{}!ici!BYi!!;h7INn;%B6%kc+7Hr)J)gJ?&MTF zhwtO?sV5HUYw+B0uX+mcJGCKc0WM-P=T6V$E@W#&bzHhwbCpef$-zH-pe)!$+uhe? z?p_AE`oi{!i}Y;3$4L+Ay5Bu2oPa>|p88My9XB^4bNalD%nVl*+(*}g67Jyi=~<6{ z=i>T1H+|OJh1@(5cZrCL%SP^NcyitX{Ph|BA2SP4l68t_A7)ktiRPgDt@O`tb4im4n!Fg79vo zohQyU7Oft;jt-zx_%OQO=gyjwJ~IxINf?Tueb()Spo=jY^>YP!FjuG)^>M z^qzas+}U&IEuQQ8oB6l+Ml{+c)ap8l+P_w9x|&bJwv-F>Qd}+)&>s zFCFt#CcT@Yvgkb?-J_%T6;$^#K<`g*>T!)5offGt^zuOG6ndGY{?erZ9dGnG7QGvy z&)c{V2H_9^JcxuShz33gKnO7)0x{5mDFp^-P0*w&KnW^PLo8qlT;E~Z7mxjb&I9y! zne?})^tY_>@B$2kL4e6|{ay7CJPw6K7zV>(1dN1HFdD`{61)gw;U!3haWEbxKnhHR zNiZ2`y}b-mAr;af9j3u_$N*aFGhilU!7O+MW0QYeFRsDMh)f)1)c4+b!T3Cv&tE7-se4sb#>)IcrlhXZgB z>fjK(4~L;1j=%@-AsmHc@DY3r$KezB6i&cNI0dKSKX3*&a0eRU54a0|!aev4 z{)T_xK0JVb;UUn$9{{bOH3UK%XbW`y34(U;B(#SP@Dy}}r-8n+>KW(+ouLan3tgcb zgurvq9eO}0^n_l}8@Lb#;Sd2lh=eGJ20jQt2r(c6F-SlP49GwZ3Q&Ry)DR0A=mUMB zAH+d_7y$I*77s7LK%f_`1Q-lMU??QQFc=OaU?hx!(J%&*;6)e+6>MM!2RNY`YM>VO!vQ!5 zb#MsYhr>`0N8kha5RSqz_y|6R5Vtc7*39yY)muo2#bO|TiZz*|rNZ^JwAE)>FhuobpJ z5p0JYuoH@57wm>TPy%~lACy8FltTqnf);d81$r=m5lmnP3s}Jhc5r|bs-XsIVLu#z zgHQ*D;C(m@^>73}fDhp)9D|SGV>k|n|~{0ukY7x)!^gIn-B+=e^Q2!Fs`_!I8I zU+_2l1NY$p{0k3(6Y#&U!7pG82ErgnfWa^XhC(6?gW)g&M#3l<4Pzh)UWBpm5+uVo z7!MO51t!8Im<&_kWta;8`x^ZJ?`tr<%Y72B#BJS&Ab!&KJO|>@{T{j%_UJb(6W3!q zJi6~Ojd6WGsUGisZ=a0kJ3tWL71Mo|AnXSN52y}$j_RPY+#9{0Z~Fdcs)wzE^2sGK zIo)jA>M5Vfl1XGr*9|y#0h~3FUq0Lbo1g#+p$Lkh1j;}Q2C#qwYM~D5;V2x3lW+#k z!9}qi7*n9AQ@6%3Zy{> zWI;CMKrZCLGRTKDumLtf0TeD2N&TIG{7~u0XN|mgimrG z>s-(A*U|$WtE2zRyj0d}|7G5IIm#sSZB^x=u6>XKxRc$BS&sZcUO zzRUhpRViat4Um5w(?Ps2vO)flUMIOGEzn9UCp$jo^ZTx~1Q@@!%{D!uI8*hRak{v_ zY_7eRD53Z^bD!tX_uHv2NfDojT3*&slG*EpcNdhNlHAiBtmtA2)ozG-+Ok7mEtT5N z3pyI^FtO2tbl0u*)*;fNvRl@(D}6$BMw)AX zpf1vVWl+ZPm}1Kt!hSM~=U_uQlZ{*-^8Um&*4Gm#bHGbHwx%eizflvNPtq;$O#C zj#Gw`@_KV8(XrCfIzi?5*uc1kU z#VfKN)qmKph(5P{C*N&*##vfxH+MG7RLxPmt6piVG&mf2;W_4cyMM4RvJ9$=~zp6vdzpwMW9L<_G+&(X7}OG z`QyYg^Yhlu&KGOj8VWV5c-uv9?>(hy<5=$4Y5UlAGA3iddO^=vjY<<6D_N^-ugKx; z)_zgFf8PaVcHGH|AIrL`Z^(mn>E_7F$i5G1!ZgYI%hV&vdvu=}wLA7{-arR9`hl(e+$NoPg3rOMgP z`xUMGnvIwB(W*nj3B4T7R^^*5+sl439#-f-}UMQGt$#v$KZd5$9i1j-J<3)*< zXoaSHer=@gUuA#mNYy;YP|**9BvYfMjdrYkv-+i?@Lo^EzQlyve=@dnw5oqlHpcms z^AGbo#rnwCq=nW?>I+M%)w@(*oMqQ8yPYW}L4;p7R*R7=&*Dh4ZxZ4YBRJ9k%o zQTh*GsasI@gyJRZBxzj#AZwX~t58dN8#<~w+p^R>9jklhSnfz4_L!v%HgD!L!W1T~ zvYX^t<*>59?TbYhL=OFT6%TZS^*4L}sHiQjESqCpEIlVH6^BPUBdkyLvejFQ3}2Yn z^=xPOPTY!rsXVCMv~Rw&TevBzvA$H=DQehzk-BhWhOk`td5`7V%Zhdt*{L9Sq8%s0v|hAhnz-gIkf-%b3VEj?7J zM!iYFT!@kL(|L1+zX_rYYRg-)rzN8zr`wBd=au~O6()UHyG_a}M^sze8D^nngmgfa z)!e0fq4A_@c-ZUZy+w1)Z6&ix56aqXxmGdR(OOv6L9p-LvO3X|C95Rq)|29oN)8Iv z7*|W~@;6FGTJ6RIT?QGxHGC)=Z4K{r)v`kVJ-0`BR)R)cWLqaYP@ZZ2T9jisQgvUT z7X|1hX@cz=q!TOO(A37vvqX!s`46n4)$fO2(jBqY2|MtnD>CX1**A;!2!40Onu3)x z%|kzKD_N}RrM@q%7dz}vD@r0aTTWYVM3{8@BO2B9J^oSs#_S0b^*vyiEO|?@&-8_5 zZA7vt*E!KJ+1gO?y>+MUUF8FYk^JmjFYHv+-q=c9Shs(V&Nx&$$;ec7=B0~2mL1(6 zEJ@X5=;OLRG+b3Kl=bEvH1rUi*A6Y;Sa(b@LDXOu)SgqEcI=fJB7U>?u4-e8kJ8H@ zIND3sy}Lrc`|zN>{HmF@VS+C9snu^f2bfw_XOvqUeH~Huuf%!0b*5X)cy5+rmc6z# zpXp}ebN{FqWI1e#(taXMu)HagYvLj%>2?@fm5mi|;_X(N%@yVxlhAhER4E2GB?Me6?cxPCXn5{wCPH>y%9V};{wi>=SwzY!&h z-rYY<6D*pqP2i2vT#RS1{q50^}~{3udeyO#c`zRQ>;myNCL19S@Ie)AAfSN;gG!9Gyimnk>CE?uI% zZRzWX(4N&t*5(O?yhg{?gSLtvOD|Wn5(;#GDwY`g@^A6)Gi?lIvL_r1nX~HIh9{(Y z(-Z2CwH4N<#FG8ni|W+RYk4A_p@qP9}RXc8pB z;Ui?P%c8aSP3LtLPG`iZsvW8u>Rr_v`#vF@>DvmTs`gh5GhbwW zR<>ihXa-38S~_=^n)}KR8i(o%#1p$z$XZE8%SZCR_6iZ(#}I$x_Cs?5TxTB7nzOR}U`aiJ>Ad|kdy z*JfY1{O!_>vVR?^vd+5U;V;I1V2(1~;*YX+)O3@*BApVg*A0nTDmy6dDGF3+#n0+K zE_+ESG93}!tQn&XsyQicR28|$|66Iy|Np?s}sA|n;2Dvnvwb$=;mhn*_B;4s*7>}|>ysGl+> zIwS&T)q_22^rxas(Pid7x@&TSrJrF_pG5mM(*o0N`Rb}gj$`uWR z(LC7@{u{#6l>;Ro*jB3M855O(miD6Sl|8C|v`#RX!yBWY@3~Gry!?aGL(&qd*pY0B z)O;DuH;l8iGprF0t{zdAE*R0bx9O{xo~i;-Xq8QV%yzE)a#f)z*J5K1R!x@dvP_Q+ z7Ts6IDtjqIEPWg=${A^tc6P+us>6!WRcXRbrh(3@ruvfZ(r=oB9aL}a{eIwE|Y3G=>%3jh0n?7fZ+HIz-nxp!EEV&0B+6$D+ zEhn_6Br17%^b<$)k)gM(3Llg z*`a#6$|-zSv{7+QQYIg3{ZM3*DOGPc1*SrCfU&{;x^<+zP3-5QA*w#5iyf_08!cZw zceA#ye&xO`b+KWi9Ji~FnnLzJFMeA6d+e6|$|DU1j`2(7=f-x{)#gIyBGpw{cjY+c zme^;Nzd9GIFYB&YDhG66LafE&zofr2|C&!JI$NeorpoW~FVuXY3ah-=d6aHnzG08Ud=aO!<8<-_Z zzUfr#x&i-j_Ne+Ss*h!#)}nY$pJVw-+{$rRbCJ0tZm(&p3fl2t6Zsj;xdB2fNwDO32hXGNaa8xx)3 zTwk_GHMQoMT7mFwYjk9^e3s*6-4|Q$#=hBqQHk{VjjE4p9c8wflvuq(ReM1`N%>G# ztp1JPwz^ic#qhdv)`3a2Cl%uzZ!0ruZq&SVFxs-tTx2?{cv8c2ju8x$y{{-V57_&h zp`nBkej*Z8{v_%ltJU_frIZ=$mzCQDzlyHv+B#PA*X&!xohd5P9g=?|yQw%PUnSPY zjAXu+H#$e`->m2>Zg2lQs(;@bs%rai(`orieq)2Of&HAA{j=3&uqY4$Dwf9$ciQjMk!}e}$f&7FfP7@@vixQAU1 zn!gn>_HPevRcgg1QAg?Jnx6J)mh-V2WMgdAva;Cq#_00H;%r{9BC-F=(g^h#nM4yJ zC^C$b4;2-eW>;_8n;70NPFl6iR4RX6znqy>{9#qK=75%?dbOIbNt4ve3T1a==J$Tt znk0Bls<3@sb6?I?Hwq5RHaK?)e>R?#{~`OsF4lc&zg_m8vyq%7 z6&Lh-m5KHSb%#F6vbB~<)wg0t$T`OwTgM60^jpnE#)pj1(I$3~t;85^>#r*`{$Lzv zY2SNx)WyngnQ^^aRi9$=m3-WP`& z#%lIEeqatWJn0$Z!h}bhFUV6zwbI{43f4o zo#r2t-BiXXUsrvr3@uM|W?0IiMnpt2$Ly=RzsbDL%+X)5t~YdKmNV`5XjIk0pRK_) z&)UNKh%0}v-8A-Ad}~;5{az$APFJ6jd?xQuA8NSZh-IdUe&iPmKQ$C6ms!rKl*~5a zbH)nUw9vs-@ih}9D>b*pDTbZZ1LR!8XjP0#(C4USyLy{}W0_LZO)<#+n{=%CsJ&11 zWy6x{ZJOwqVby8%1C(7gLzH>;%YqL4S+-v#*X;_`CdO8|RN6r{+5Ut4(tG0^`!!o+ z7p#{wD?}FSSji;C7uEBm_mqFe{A}o8A7T7DroAQIs;Yh}u1fV;RT&v2d#0F=%@<-d(+Hhyb($V&xmj;;FL z`gY`IQ{Vl0qE;Hd{l4geU{fqlyxBfOT^W6~nx`764dr*Jj+K9J*sK2HkYoQg&1-V0 z{X4@Jb-C@!k786SW8YP+F<+78T2mOa^^imDl$n37JZ$K$*~AQ%Cdx#bKANr(CWVH# zM-=UtuKUNjqHe3?EOWp(&hfxj88yLqLcY-%;25UsZXBgygr@{kh2O|*HH)-mk|$M- zhRwF^s;-LZ*89eCCdGP@d8R_6{J~*!}J6fh&UatM8$J~-5CW~mG{jws=aGBrJ zu_0!>X@stOWtP0BbFlhv$7Cj;#-{#K@wQ=QE+mWWOt%wFh>L(qdqZpV2rk4 z_49@s>OJyS_MfVcC_C;r+^4bnZ>zx3SG~*GtYIdAj$x(ND?jKpOIK;fBXu0w&MWW+5Td3x3d+*wK zO@s2DwFC3K;jDeGbHDTl%X#Jpds`!?pT*MK><~}0$t_iVdMUq`DD`7x4{hltfpSgV zdFS7XRra#heXDO9e{};kS<-e9TF|S80H7!24 zOW0HWhWw^RC)&o$DPO^~DftXNd}v)A`@Q;(V?{rub8;y^Zi{fE=!Eryif)ojXV=)f z)?DZ3_=g!Od!*JA@*bLom_u=+nG@Vs?5&yeWj6T_6|K$F`LWW@lE#?U{8Yn#^!JPh z^&bddj~;8Y2xeGckk<1D@e0Luo0+@0_G(lZ_o_gsTg#lZF7LBUnP4_swh6n+`tpZa zme>|p@+#kz#rFvjpX5){HZtQPK9KY@&y@_cjVgc0kKFmY=(w!G@`An{x3Frk@UZoS zDAVwr@#3?+!G2Io7;#i@|kgCmP!op6-_LP;&Cf9V59aZsmX>B{5 zn*}4C_svntaeA@gJInd9jNRi(e>M(Md}ZlxxF}9EZxbyQZ;YKGT`&4fQdNAUC~fx> za)aogWgCSVk=yt&Ro$5cM=RaITA6W1#V}o&B~4aW%Ge1NCCn@0pGq0#MV(lZV7*q=hna8wP&(M+5Fa*{8Frc1h~u3_ z{N=WGOuDuM)1kC=$2?&BTR);01{`}(S2Wkczg+92T-Nf*Zpy?2;ySI07~Djyg{ zG0DRldMwqeR{T`tE8>?=dz`dH8GLKw=6N{<%&q@2=!Bv;)<=^ z7t4k6g_a6)JLynSVwd0eYelD``p7w=hY^De6PQ0GGpw1)kIbt~{beWhYVlx;FzmK4 z+V%_cf$_3xj`n!jvjS=5GTnEEDVFh4dDS}RsJ6FACOlbnV4o?fz&@b+F^i_A(y&I9 ztNWe#TCmTQ6uPG3q;_=0J;So%-^6R>pGYt3hM3P)ylW^m=ZV_$XYMQH4YU-B(#<1G z2OE9-@DlFZH9; zm-UylIm~&>DzQiwBp583rhMN%QMOikTDn@e->gQNED<-U=;*F{}T{Uz1>U+lMZjDFFDuIR%R62p(mePxk73qw+c zUCKX*S|y5778|)?L-svX{w58O)>uXfHZfb2Z5)l-{+5p``skCb6D&_F|B|j$J-u&+ z?H9#ieUEMZocpSJSM5AB(QwN0wrQLFY3EkWF6BY>ueFN$VTK{ba7JT$Rl8U#Gk-0c zAPZ1dGJ&zlimlEQs>S*dRsY60#ewEdF&70D(*A}I<(-WyH{am$r4wt`#)_*$oNDKO z!_uhFM3>DkOXe8nOD^kv+Fzs#lN?dzpuW$vv!y)CLFJf=$$PSO;bn2I(iOqx#Qv{$yz=nXj8)xnA1cbjWf=@}A|@zF$bz37%GpWYPPk#D1?lQ=(;^?$~}sB}Pe4bzAe=nB(e#orb8f zJiFw+&1v{s`B62uW=!t`)vU=|dPT{3wJWQqOP4#W%I(!ZI655o#q_m#mUWrzXSv>?(Vp1eR(8cS zs(6SwGp4=Z-RKlSNlZ8S7~M?E2-88^&x%u`bm5KNXYFmH3o2d>OBX#Yo*-|_)X91= z&j^IVH)RX?pV|ZWzodv03LN!Omo>HW80*%`TIW;pPb^j9bt0K@iFJl_pM0xu3R5Z0 zHqNh2mq&$kWCm`ZXFFq_&AbzHMmS3`J@P~IM@n)09Mg;D=j8_Z+CB-I(~@zx}TP>D% z(9}qFcfY5&Cz@-#Kb~L6U5GHKNQ}YFWO2>)z)r!Lksh zCj2;)RIy6A!*O5E@AI0m+7zc2@PDlQ)shw-X&7qw(fYA2RJ`39Az5#ENf%<9roUwh zHx?WF3RVb{t$U^KmI<84dgd$J+y4_@Xnjlho9xZf63gj`m5vu<2kUj_v$44`R@))- zC|&lU;BtZEjpGt#lImGx`!M#lr)TevcMM(L0) z=q=V{I}VG(MdM=DRCPHR6@AL_XPK<;MDtEr8=*>iqUU@8uS;^p64{H&e#-i?bJhjrLq)Tq-;L>@?HqL>Mk~5p^0T#vpjv!Y+L~D^A19n| zK4~3m|4aU)b)I#;WsK}}q}B9_=p93%?5Lzsy8ck{d!Jh-2u8@F_NMYPL_L+;j8XCk zCMN1l<1>;8k^G8pod56}G;;9=6?g4>)j`5L@_ur$=DbO-9#fi8HODbl6l3o!J!DBW zr#g4>MpO?}|5Y{E(Y1b-{O{N&6vM4OqQ`ds*YTZ*vDM3J!Vhe_Ez!y!+EuD!(Wf2P zG+~mztOcI$SHCw*sS49dpBYXz$fl4Xw zVf{tO-+xPZwe+&NjMrV)YJaxmqP3%9pY1A7?A%}es(Fy!^PmpZf6G1?*g7aRvgrMi;ZxI;&4+bTOs z&e&hD9#-wNTt7BRVTv8AYTO}^yk`3)sTQ&v%C8p z#XQka(R22&swC^^gHKE1MCHc6Z0)RzdAlqF6#346wgi4J;}ms(=(={ZL?!*j(Y|tD zbh@yw_HUa&@wZBDj4^c*Of&UnUKXS(?wJy-H%(G=Yr!#bQfWaAqu3&RS3S;HX^%Fn z=s8q}{}Xs!7stey&Wek5t*aK=^37|N0&{Q2P1`bKN6UH3h?=~LANfC-{|`fF!Pqvk zMd30-+N4bz27_eLh-?SSOj~AVW@ct)2qy;FVp(>aH0hR^w#>}0xMkS(`7g|juI8Tm zoik1F2|kI;a!f*A`a0(fj;)*Y%kzPlE*z#!+H-EQzMX2vesRZpS~H)?O-v1PA8AO6 zAV%htlV(A*k7PJ_gtY@RQrs9A&#b9FDW!X1m=dk6!r89zYIO zk~R~4p^+qvZ1Z2Dql?-ZuQGjI6Hr@D4>gf%CUmyzMVAc}Sgm|_2jLD$js1hOepv5= zHS7$uE0rS+wUiCx^ef~Vm9##$K2sZ~)$k2B{FkN(PtiVlI`toOH8m9P3HYU2{- zWsemmFoD9q&I3xO@N z8d)o*4e{PJH6bc7*)^0{Y?=iy^Ek|losmPmLLQ;Gb6#NsPJPa!I4Em#~?MM21_Igg#K>G$42_%NT{C<>1a z|1w*>LmmCl@WR+RDV$^j7Y^I@M(qR>dcKEAvhBA{2?w1ih659*1=sKUjF? zS%{aFZwWET4DC2^D?W!Gg<6@Cgu~z(e=R%$aX5ZT3b~Yf0nW zk31Hdod9Vs*hxmn`^C)&Bi(V1L%;9#I6H&CF+aLbz$^{X|J*wIUP$s(L`~{5^tv016=vN(4Wu}egi^=OZsRdcIq9n|KQfB0;D`R*Fz zv>kpj(o_q8_u18;52vqm&n(d#2;w+d^}0Kz`qZUb|tXZNo3*OrbSAL$6IXca%u& zJs9>4RPntbx@iXugOiH^FbryQCS&`=p=Z4k(`KAvP(fA_j%oMi)76cf;g<#x3HF>=9Bc zrIRFiKjx7FobNK6QQKHXAa7xNy>Cjx_+MV6_?OgItSW}%J+oHPyXj97>8;OHGQJY> zge6RE=B{y+W)fG3tgfl=fyq`^zKA^le>|<&#ll5lf`6cHG7jRK@$u*a<6%W1H(9@C z&xZ?~_2fD@3r|DKDMJ-e42Xp(Ets?D9QiQb0Bx_@coWiyVwDbg&#{J}i6s{74b3TF zvJK7nCyO30C|Du_@x8AGvl}F{C5}y6bNZLs1WsO1NXP6A)?kmjShyptlQqvT+Z86=J^kKWUA-H*+0I_GS@j%1iP9D8+7CN7FE0 zV1LczWoKFf$Hr){iJz8IquJF#A8ve@KZ=;1(iMaB&<3yJFzuc7BN>ykR?fc=e} z&)bQg^`nJV$S^e2F`!h+YtT?>?Omy)qtyksNs+FJnpP7S;kl-5^f>G@cv)E4(L3`r z+0gwEZIuPOk0dy#Jgb@&_r@kUp!L_SnYh#{}`mU z4`~Tr`8CsIMYUcB&$UU^apscHMvTXsTKWP!Z4LH>oe=8(BJm&m9Qr6k%0B&(>t6hd z)P>w?VGxMWpP>WX4V~lczr0pXC#C!c4 zWa6ff1!RV{##N-;H`VfmiE(~B_qjik$^lQ@d&r+sF%cuLVbX11J-4No^a3c_VbW)r z+Zk>)7$-l-gK!HwGXf6} z(KTjlzIfL*i!bIrv60eV^`4lG_AeSPzvs*PUdT_pC*vc9<%-=_0spGE!q+8?hZ#q6 z$8ojP&`Ynbjk`&m~i#o8&PKQOC*iT#uNJGlU5luPUu?4E#zIyuz`fk&=uz8)#% zh*?^s^&DvwJm3laLT?K9VIXw9kfld>EbU8o5GYs4|{vu1)srX6{30>FOHIl@E1`|LtDp9p#?vJ|@?| z!P=>oNa&?L!h|Ohm%-CboQ_1D}ohg-s52an?}RnOV_P_yFE) zAFQ$9Od`*|1#R@@%>Eq27ah_dW3saS5)P?9npZ4EgZFI=kd=<+G0X$?!m%WFh83k+ zE2oK#>MiDtkQL(Z2FhvX{>hE33zAIKcDy?~&3@K+j*d5!5M{Jf%RhSE;6AXJ-XVr- zE%htr&HlSsrC>vSu3Cey&Zfa(SynWL>a71ZG$Gnj<+bthb?Sg33s1d02!q@M3@~Pb zed=&N%Dfk?lqDiF_=);S`rg*9)?dQzSR0yFVZ)> z(_)hd(bCk~Hm4ElrqcOCNs#KqD!B^CPY_3D(`E9929`50)`i{fU!t7!)xieh%YjV2 zK?kH9GOtw2r`?onnTI$!{EYXf%#!A;{eiVbADpxJ8GB!_m&l9Mqtw}eWvXC__ztAK z`Z~RaDI58$rArAQQa!9UWnYS8)q2QrC`!JjJ}@EtaO#jU*5b2|Q3uMW8boO)rHaO?gVvEdIhGqCW`aq zI`)e09ppIw4islA>didAocZLI(8-*}RxR3yn{n_w@)$}UUKHzk;(tG0@B$M@Twt=!d^|)5-eUb9fbjox{ZE48E ztNHV3ROqEKdJ@vQV2|P?Z!}v8ZltykomjWD%D6jse~9r*66#|e&@tpuO+20pV}8PO;tj!1ovZ#K_6wG z($W}GQP632jZU-7;QC^QYy=xDGy+|;s5sa#b|(U>$N~Ak96BLMYfcPNLsXK(?3~E; zON^5nN(fa}E+7Ap9*>Uz?NChq0yF9`cdv@&54#I9?XM@G~GaLBD*42tZ{MI zy}hZgYNAr&{NXN#wI=H*t%&X5humamlKyn9OR2^eA)IhJ7l(CIOSGDL!H}D?TDs3& z^L1A;ltBDKJ`djzb4|@l{_Z(|cJOl~4mVPV%d?m;G#WjtzN6xWEplIFKeQumFZuu+ zBP$rjfyZJyN143CVn6g-K8_jq53T{~HRo<^Qua+DM&DeJfL(ycnj2;h6o(ja{62hF z5DodN%N&N8g&cen`lRp_)>4Tm9Ox_cpO9wd&WHbYozWz5JG4(oP;cg@X%m$Znj4FM zMh1Ffh)$0Bm`b&Ci`+7`74pQr*))YbFAnnF(1!c^NHOFyM=dE@L|i4t%kdf5C{V&z zlrpGu*hr8=dQ8{NLy2wZNzW`#f2=l58)I|-awXvBjpGDDxoj-LzVU;VFxzuk6l17) z&^-&S^b{4UwsOyusZ_)a$bb9B#IG^YF~<{@Yd*scsXiJ7LDp@~elihJ%eqYB#P4z- zknU~cxtEs#Co)E5IP=USdL8Od-XaX->*^5OgkYp^@FpQetBKYjmO+f+fj*b$?0uo^ z&o`nsq%kNe6=bat6F7(Xi#w`}&kylyoXPVCej3Yz=SUgQMu_Zej9%T&6usUyX^)hm~x?r&pv#+9G<^6D{8}CYa zTo-r(^aLNlLjEs6fl|q@?)LD0+Zy+IwHWS3OmmG*-b82M9n3YDLRlcWaI`&?@FWm9ID1s$RqHp)RymM+Zq%(b4yC>hbPVsh> zea?8>H_8DWR)5Na#CW+xiJ{7-92Yl$7f?$HwkHddm9oWx{x3C3spfr;)u%H21(asJ z1x+&j^tzQX*ih^?o+)iP16MIxB(Sj-;=*>>049p8gwGCkE1x8rwd2gw8n~WpYD;@D9@Q&P} zp)K0~@#dS{oxd3wbjw225wpQA4yJ(1`SQS#jtJJL-E3 zzp>TNsvdvUJvV!i|9bvLc70)1VMSz;`nRJ4jr*UL!m(xTXB*v&T+>9g9WQ$71clkw zEBb(7KGiqG#m=&3TF&~v+NX(EnEk~WK_jy(#8L$Vn+nJ5FE3|EaT39#+DdgJ+=l#{ zidQ;i6$%yI-O)kVJJ)t}4Jh%P(ys2i>D$9JhNfXIZj)~l6p_suzgYa<6XZaUOLJ5n zaTvkz&(yrY=iqm06K>GXTRNsDvcPvxO!VzTDyxa;T5-9w$9I$ZEp&uj%w}u@Xi{9k zgeLqX8RIJ7WHpS20c`2UZpD84p3{e#T-J&;)LuYM4DmmHP>wK?JinAh<$1^{->>2{ z_5cQBEr^W5CrW39w@oMeYd6UIwgJK#p*ykPxSvXGgaD&;I$6;^0=A2Dsiz1fuMTA7 z&NWs@hdkq@Oe#s710KY*<2Kln_@N94EU|?Xv#HsjIyx+Vi1t2i49HUZ1eeiE*!l2i z@`QggQXn0n^GVHT=F93^vb*{ZYx9CB!f*dJx+A@iD@P|u)tF>8(^_n=?({1^*@pO+ zjIsVZJ0_ybI3SqCg81yHgXqw6!!xylN5 z4l~QyRzHA8%m3P@b4`US_9O_=W2H4njS@(0sXPwdCKoFymI%o0<84ieS)srAD}FJ5 zBcgD}*nrjYFwjZMuuAw;CJs#y&Gt8X8fZun_!I@*KZ>vA?;s3K`AZ&6?NW!h4j2;I z3%*leaxhlDt6vB=Izh@=VTrjCb%F&&_UvKHp$JEL@?1Fopv zV^HN4S(7+z@d-b{hP_{$6zBPhWR-CU`3VUEwQ=-*?(x zgJiVrc8r*&ctIR}H}DDn$QZFP!el*4dIJxWC4HsdEWIDQ(bYTg0DOwQN3;{;QMJ$s zG|<2^2brzq*dJkA{C;MX+TXiI*U%rnXd%SwfvVOTKC5RFRH%i)Tg}}HRw}o(JLD8* zi88>7ibs{QdILUHeP?G1TkBfPiYa(GcMw3dCj zuQPEGaavzvVfs>QPiR=+Z)Oj7&d@e+h&(GbOg~oIt*C9vH7dsU#dC|jr239GV>{a3 zF}IWwGUUFXekhA{+FwUXDCi&**dBo!I7!~JHMa*6W;5pvZ_w|)upCmqwSN%tg*+)l z>pS&dCduEHToUM{_mPH)W$l+Cr#XOhp-Tgf$_+s}YZqr~!`ROlFKc3FFh)HIl5)>d znljh}i(`ZcZa3mi8WcFmRD&@4B>9W}Rqj>LBlo5aEhz|0L@B0LNfaNYol>f>H}uo` zV_ysxFP7!U1zU?9#CO6!1s&D-3@>IPb@f+BOR>D?W^8xrW5~l)pf@6`1~%9zI#-N# zJ^*gKoP9ff*?5&|UXWLir<4OfmBDNksXx1#>YyzS++tD;f9!_?bG0+R<;Vi~Fja+F zM?SWv;^X*_>5ZH%68FfPxN7b^wFTLQKNE~Cd2bvo2a?;{rci?!Hr>E%WE(@rNdf(( zFibjCg|_JLwX)X3noxM$c7eR5o**!H2j4oq9x+u~OOEpO=Z>ZRt4vWUpl7t7vN`1= z^9qlWPLS`ksUps>B|rW9=rLM$)|^0=U=o(mahxULz=0#V8Qg585;H}%kh_$H8C})P z6vfkqz82Vv-(gDC$ov&(2KeY18-Uqv`^P|eL?pirW~D*;o7~ZP|FSiTs>T4;pd7|5 zW=3hU|04W_9ZtWqzk?BSdE&pokRQ}WgM-RMo70-9cT0=$>+Wl5$#68-WqqRpf5CnHi{;wP2+uXy zs)&xm@G7rc;OLcVhW9U`ymB4cg=g4uu~Wzi?5t-i6rH^Y{DYp>r!x}ajjv&U!F!V% zafg*2N_6geGOFHle5=?FnP;mh&M_tF6S>dgUMPWx6B~go;7ybXy5K;aeZV?@Rd3ax zBu$aaI-g6=smVe;eFVPGyWLdBR}mB%Qq(5yv!ExeqvzDJ#sn!ttxT7T+=<~Jh)l&N zIHJkcYG>yXB3bbhY0_D|hLp%3R(_&`{AUgGweRsCI2rUx9BGOK8Qv3~7I;@UUEM@9 z@Hp{`pe{TvvkczZcf)c^-4(pz&j=)n^_eElCfa$mw%Q#&D%@35vsUSKe6Q)JKD!4Z zf5vW)O~tOFopc+%Q1KP^BBptZmVSmh;HdZ&6!ZT>V+dBlxZd<`@f!iO2Ut?RlO5=& z1m(#!mEj-_bo8_{SGC~e2R+~WmiiZ}oHSJ%jm`1!dP}sT5;tJaylYZSn+q z5wSX?+)=qljnya@8Lrfp^6*lkYwTL%C1adr5ZT<$!i7m2h}a>q&N8O&|3V43L?UpS;D{c z@p`9;mqaJ6YSK6FUAU1c#XKDR<31_04Jp=%qSY}<%M>5Grn=LKp#)9bwsz)e4+=6R z0$v8%!YDSMX`=s4bt0OB-v+05l~v0>7@FMnX38iaYd?MzVv%arkNk6NEc!$)Fs_wa z$(I~&l@-Wq?@jod=N4|k4a$A|8Y1|{3hPDp{=V8|zHEpWidNTS|5A-LOv+*l1-C$W za4P}|jCWNb)T5Qrjw>grOZFW9SV~=*y+5+2b=u zKtmka$^xv!Vk71YCcV7)QfiwroM~1=oCe^un#3W-NHtX;Bb=UW>RwQ{9;JV6c_OYWQ2FbP#ixM#bZU6+?u|HrDJP7dT%$KwKsc;!VsH>vLbBxe91N zT9jomZN>iH=IC?`bKSJm0@wLs?QO$kUq^bT!Hd?-Z?63@Z_6BQ+6MLFw}I`5mpVmW zBNidm(O4=jU=5OVRnScJqe9ApQ0+y8f7AtVl5zuzkZOw|K8S23j5pKFBYXpCEUMOU z%I?e5PV+L~Ze=88#@*08CK6lVJ4bzQ3_>(XCHo2TlC6zB44fiTz(YZ2K8a3Kcb~EN z2*X(hW0Azvz!B$bxwkEhJgS{0XIK|_)8v+*Fku_nH+?@5VSNi0+7i$)f{l(q$I8$A z!}EumzNd2BL2)VBN4Z2WySh0i+oy)==F<>yEaEk&-NY^QbX+S9WNiTZm9StfDw2tX zO`w~%w(a_J#@LJ)>m8Wy=0w&_kqPmB1Kc5c5uN13!{x zu@NNdyy>e%G*D{TqdlYe8ulUXb-rG5Bdo^$!OCn&))%Qi#4YB_nb)<=HXq)=UyN?{ z{BTyw56`aWXCcAgLR(?oiS1%;!K3-Rww8J>ew<82Co1!czwwG*&CABaa*sN z+)ROQ8@aUbh-bN;oAEI6Y~%IZ5@;GV+nNySf9f;!JOTe^-}kH~9yoc5z6Na!#wR37 ziONLJXz~qp*z(9~Ngl19(@&^}ZRyeltu7iyVrpwC+=7ZUv%xuq3_Ey46n(3xlH3=` zFOkD)BD+j93zN_!3oJzf!dcNgJ@^_vXa9_R7w-qkP>(sCaWQWD9``Y(qH;q3g=Yb; z#-mr2pjIx}%%KO;?DIe`-=+f_slTo9luvzy)`V_*ZieW@cI?EE{>g)Sppyo`V7K4* z#l8ug(eBtxq)|l4Ml>3ziY;Nw=th~CFRrje8Q)A}|8*%G;(3ON)d5+Lw?mw3r=#vFFs)$1Ah< zt#uiLno8!VE+$54<9n|kl#B^>*K_Msd^aG#I_m)YsN|JQfx&~9@l}K$=3tL+F103Dwk3DBB++yILrsr}{ULW(L$wDJ!(SDT3SB@|^*A66 z{Yj5H$h(58R?+2nf&Osx^@p*I5=ncwvdHI<`Xuy9SZG~ZJRuOC^ptv6JT?E3Qa40! zF4wmCoa*0s9XyMYB7!}nbS09zB?Tpxxg~wX9{ViFD)%9e)2M&~|1^4tZz##@&1_M0 zg7`6~Klp*B*>E@xnoM_h?=9G;zQC7?@92@C+sZSlxAeo$F`u9>wuJ$QI>i@;+K}sH zH#(a5X`h7bmQvGi30)!&@^=fWdVeVG$f_<=u;TusiQS}m8y(h7RCiiQ`$Ae+BRU2A zi}Y2c)ObPz+kGpP!*o5ZMPRKJGA&a#VHwG@Rm?XVTP-xA810&|C?!&zqs)iu`QFQs z_8Dv&?1Fd;*tET373O^L4*y;%T}e$`9_Z=4=h;Ig@G<$|fTc!uJTF8s&6ELjns~-L zMyZstpW8?+4wS)JHp5q!du5(P=6VM!SJ*7OLzUgq%ZK3g3bNDwUo32%v|cJ?OXme`j_^_Af^LPMNZm>?D@ncV)}jB*d#u682>-hcUS z+%;^2Gy~mA&r<6}bfbEcFR`CUC3%qd1bWFe8O-vcpljhg_OmUJ`&b(vSOvY(6BRpk zyWoh@SWNH)kV0Xz*GO+un&jr<^W{_K7$UUOrk#3>CnWSGao7ferx ztDu~D0a-vR5%eV1YTp7HRxIW|WGcjrt|PHK0RI~KoCU90G@=zlblYU@L} zE;)Iy#oPxQW@@CL4^7vW7na2kp&d~<0f6sfh>a1Bh8&K4q-iFITrb9=i`9|Xh=!|e z+s)~g*2*ZQEja?JI(0)U#MSFJu&(Wr^EQl{S})| zY!-H7)!jFcbL8Qu!`?J)7xWWw=sTvRbk6}6SFxAX{0v(UJl{?2X%;&A2%DvN~kIAhVCc~Nyj z;cq^?p^@8(6;ZKD2a54x{2*nWaE%Z1G_RFzUTMKofmrGCbhmozZrij4q6;@&M(IJw}+*~*- zB%3>{L2QIaMYDxPbY;+4%fchESs9eB@8OE5mdHzvY;kz^^HAod;vQ&l~operJ>Mlgfkh8=VA_K=|j!G`X6Xo;r zZ{jB?um8u-K(l%jWYL4udFy#-ghKrI2TKg4(0?nP*b03r{w;sGx(pg5#LIzPtRnpifg4w=o}(n zjxyLdldCDZ0w%fYNsF-~e56{pHgh9Xfw$T{*m9(M!ZvXSsNikI0}T&e zBs&Sw2tl0nCz5AG!FrDz?;Aq42OC_m!dkFU*oD=zO~78W57Fw@&mdjE+2%-j>5oQN zm|@vt>&(^RZ$n;R0osB)m)Fid)EmWo3*C>mqwR^K*h|FWTBk+il@Gal%K2(y9rsl< zEJkl?XXAh7{>B@D1IivpxEyZ&C>`XNYaG|a?oFZGcWHw^**q83@A(y^l zlpMn~4>aC8$y81XOI`&{N@L-(E8eqQxR)E2w=j08YXH95x0bse(*M7i ziiOWi8F8DZw!GhRQwz6W@lNx;rq5^z@+2`8s}Nk6Rj_-6)L1Buf8yRJewD`B8lt-b z$MLu@65s52$kN68l3KN3sykphrb(*v9omZj$ zvWw_u=@X(o%F>f`k~*uG_4bs1HlK)qoD1YWrVm=3Jxg{FOZ*{Lq5kouEwPcl$vpy2QSRV5{NJE7@YwMrWw-F%^}+v%ew_FXe)NbHZ^G@Tb0u-EW>p*-~xw9q$W z@y_?UmeLUYUx;6LN{!B40;)2teaW7&)EG2ee5l93amEGF{$M;cK6MoMxTmW))_)X9 zHWvVgs|-_$_Gd&F-(ZP0s9F2uGhzuk0BJ6McW-0(%woGk>*0&J!H4cW$g z(B>TN&#Y%VfkdSlsH0W^v-6%d=+DN+tK|Qnw~qPf&d?2^ARz;riysIPQVog2{uLa| zHv+>w^S~+NEkc*t$LHZk$eo5kmH_Wk1xodXo+1;w$%EZpkqyvnB2_Qv{~%=Hpl}%4 zk+17JiTuy>UT}K*$6r7;694I6jcwJx(Y=AWu~k4@86ih$2?-A^Ue8n~$o-;i6xN6< zzy)O%oyg=l4<&TMB)Eiei2JcAAWJAjg6a*-2zSIN`h{f&ofKjZW9bK23enF$S_s!S zVJPT_ohM_F^pr5e3Ew%prp^`4<L1O5eAIz2!v7Jw3)lWUpB9bltv!uu(CTVQ0tC1xqOOBk{whR(hV3Z0Mj|DkupAajM8o{^B+OOd6Iw&^1493?+9 z?jhQTpy;&)3l*1dJK8+)KlL@}-STg+$sS>CZ0Jb56DM$(K8QyhA~|ad65?sz3n#q( z*iPzrX+}s(d&Y&cE%|+Wg34-ROZh0vXkxH5+3w$HTB-CwG6gTQg38byinTohZ76e2 zuA@}I&gy%d3qxJ%E8LRT-SlbeHNv8t1GV&u;um3i89O#ql(`hBpQDpjgKVbOXM&z< zXolQEU91NDairUux#tsIZA$}cHTpz-&2^EQdXMGTmFuCnc!r#kvcp5FHoZf^EM=Y2 zTo|^CR~F(26b+A89zqSsP6cg1V=z&?A4;}bL51e7-U#WZ{~sWxhd{aAF-Eyg?Kw*#S=6zxOo%4I4&&78{T%H&C#vyffC41P4>{ z$WQnhrH%5AI_zUTbqx!oEK@bU8m#*oMz_sd6;OgD5DWJ@aRm4(QucC zWZB4+v+JuJV>pf@QE`jXS@hB z0(@a^`UjB5xJp#4*9NMl%yIozswWKdS_+QlHD+s3!_9BVq0$7<7@g^y2K{Z>g{}u_ zYBy?l!6m>+1MS%)9LPt%V9WSl(*2woK|xqe_|Z%JbK9SDWvBl>=KXH@T8jsl=I{VoR~L zrnC0HJ`fQ^gD;vy!Clp~z)0^Ie1)$fE2R8no{?-)s7C-pgoRC8sLS2==|uk%brndm z>*|`~ssS`D$9uYQOW~1vL8-}<2$O|M)_!bhz>KMuC53kFA-+oZpgy(alADd46Ha4$ zFhsRG@3YtWU8Z?OS}MbMm$io@D)`j^n9p_wUy^!^+>&wvo+fm|RQ0A% z44#l1&~z$n_Z}>h9n4=Q2K#5BF4`~5K*Bw@XSSkks83isfu&|C<-7+) zDQO3P2AhjC^1ih^*ACbG7$3=PWA}%WtzH*M;JJI1cT;o)NXbf(o4R8_!k(aL$ImcB zr1j7aP1yD+k1%xF)>Xa4$vdJ$DG%esTh0$jEu7cj`TIWP_aRp+O}#6LH^SebBD&rb z=Gy5#X_}fJ-!NWZ=PVQsLP3{Pfrua6B2%>GrF$7UMIGY)3^hSh1i$xz`=j{A)suYg z>K?CPE3gs1a`8VfAwLAWP_u-JmeE`b{*v<|c1=hV2Es{z@g7tvL+{{iN|7;(40>j& z2g!Tj5H{RVNoq#b5i)bDq5a77Nk;PD+*zENew#GWv%-|)t|4@kkC+d*x4Pr7%=qt) z>6`=_r5v@?R;$sc)RpubPlXVz*p7){OwxHve|Ec?XUZf}Ebo=Gjfy z81HuTu7pO8KJ<6;J@P)3E-)KBiv1sU#PSC($JOL^q$ep^Y_=M2yB#;F=)N~uybiLN zhK>)$4E2c8vM8jT7q;Z`e7m{M{;~Qu;;bPWDJOJdmhp|r>j@9E2grcTfd&0j8VR%M zp9D>QDsqxjrEx^fv}WFrN1q*nl~rYGG+E5?2xqhUBuVqvMlPG0lN*cH#m-X3a)ojS zIYN2{)!=V>4gAVrZ==gZ!q%w9IUAW+=oQ|l<|mgHqPaCNz8-xItS=ksC>`(IY~?`sGxakL9@?nHOS6?rFEZ3RQT1}w=GE~Z=2;5FZ9r48Cq z?XKP>GtonZ8!W@w1^5&+J@c9I9@F0RMC8Ca$>`@B330t;#~~Q zg@IfZj?7)2_|~!0yG_W1hft3bhdUkwit;v!VOu9cuPukXmGg|ob6Mq+qPRi%;ko^? z|L48u+i7%U_gZ-n*#ZF}HU2Ps%Bh-qtI1x!!^^$Mn;!TUn##}Mnz{!VIz#1ZkM_7M zz|-8bgzG3*b@=ig)(}mP;s0@c(S4rDSc>D83nqR*yAv)4=eg!8OY=8ydz8ms2X)-b z%W@V^Cc-;|VJMq|Mayl$ zze%|sr?5F5((hpCPk(p68S_@3^9lq4*)d`zrlTqkux=b-`jWB!cCmA5vp zEi=Vy$4(OW&DW)ia3Z_{iZD)b)`2{ZlZNZyqmbn6zWGZ0fk0+_ru(;{z2%H&oXMR$ z-@Vm~CM`s}C6*U+%;_fF(bus*>pPd{`D<4Sve?ihi-~^Zt>NjDHO-Wb8jQ}QGe{cZ zXwa5?oj`D93zDIsPQ>#*ew1>_9FbJVlmhn_hb4AozDqUaTZxUq)Tug$&V18a-z}&Zy49R;Dq{jbc2Rw&kCj@kqP4Q$A~ZJPwdE{W-EYvBQ9Qt|(LQ%F8$|-6+{*O5m=Y(4RQuL_M zpYe%zm<>{^z-Zw-^DA{bx`e78*oq8QKC|P1Mh+#yL2O_=eOg{l!GDfNI1qBhKql+9!R)r z2=yTt4)XQPnCSS9!F|3?NKK4zrQ;X;8J<}Gd;W~N#ClmV{=J)4%^j2yW_{qYe}2$I z$Jo1SEtzxP7-grqUTzIEoULqWv%4j3FJ5H*4lUm{OyL1#)%Er^T~nBKwy$CivD;A5 z(?wf|+=Ca$%R)(Cl{tgHlibKOM}OLzQ+-S))P<=N!I9v4@d36+>7#ZbqGLPx-lwGF z9TP%av)GX9q~M+p#Urg-x%on`yfdIkeP`TGa>iCT$qv#sK~ek48~PO=kbegc z>`&E;WExuARt3bH!jxn9O!v%m`2Q501$z@|+lFDGI2382lzJnRWL%O|aCev8;!xb( zT^B1*wBAN$CgU@a3QmE=d2wA>++opWS@`Dr1xbz^lRVFTU)OmCW&%hOt~Jyw`uVCB za|UVeoD{q&m5Ghkd4t*_LDr|4uq#Erjtdr@{YEQKfX(V3=+jEORSgMo`@ds@Z zR-fC$)pgHedIUjv4d%cRzOC^gnQg6yRg)gEzeyAQ^{jO)O|&Tet{4Gk!E?zLN_V*D z#t5kn`JOH+vI~_ADqfHdq)bCkpczU{a+{}@Fwc4zI05x$3b-)(x^ykd2AvR7q~9Ss zS|G%TE9e+xNWBEOk|J{ZRi*d{53lxE)-g{((#g%%x^xPf605 zSGxJge6d-mk@Et_svSxjh3b>b(D_uJv!!DNwI~SLYcjk)y3IzHme)^iE9 zxIXe-a;PIQh^Oodji55i?rST|p5%{MJ11>8APqr}2jBR9;El<#30tW&@`R^d&JJ`t z(2`v*?AALnnhaB2h|}H&@JDi^YZeB!o~Y5-5yd3@q^CPgXq}QrgoWXQb%})LkHMN4 zFV#)?)l^ddm32|&PRX0JeCO4|ZR|*K9r(Mg1(;{w?&(FqW+d$xNf)o78 zL441im+Wvl&)rq~CCWpE`8QkFLM{bX=Gcw$rz1VNmv*q#32aa6>1n4+o72(C=%%>B zYZvfwIBAS={!1986DiHIClQN6tpgVmI%~UAqPEW$i-KS12fMzIzo9!Zm2RetvrfZK z3g3;lb{{jou@y6oJbMbAmQagR(qZdP!OIo`@rAc+` zTEN`|vvyQmDvedH2vdP-zI0Opxd_Uom+n5F^`f{CG?cXClGz%56X21b7HRl&kVP-b z+kjVb|0A~A?l6T+NBAdqqGT}o)bdCk3B62-KsT|w@#{&);FHdeKuz!;u8mK!<#R!< zhfv}Fj4cuR0425p?Ju0uVW(HH71DY1H9XM_NZEP<_7~e43WeR&8yiplz*J#1RcS-T z$#M$w7(77cyHdHj#j>&y3TLvC8#o6E$BCu>#!``O2$%}4wc7NiusLa<37^m zpi%J<@o#W^!a!St!Y$e=%SoUOzmn|6KgRx$w(?8Tev^t6K#4BeX33%#l_Zl5(PX@u zxDESFYiyY#Cb2)Yp#FvTgW73?#o=g3pYkuVoWzU4UGP5elvEdJVyW(1s;8C~`ebYu zyu<&%I!D5ld8sd;>Rbd)p|ANG7)ZR8ABeBO?Z8jZ_#ld|^wmQem+JjTrzcr1;rTc% z1q&tqf{$b+|2*^*7Nb-zY3A>evOt?F*E2{|C+UT6SwSD+TH;P}E3+XlUhV)UTffmJ z*CQ^K8)TWne=gaOvbAhDB*Br~LaC|zPA7@{qTG@uB(0(UPTCJ9bck20>xqYv;Mvkn zx`AY%E#KDLy259*Z1%zSK< z?9&Y(JC)67FXA4b&2FK7#n(thTxID$(kJ=5I~{Ce>mUU@4{d+&{(S}T|7?;phTUdS zLUT&e<^9$|n+5uN&u%1!#%=L*A~hELYF$#0#f`y6ia#Ng?ZIs>stS*=#DQ=1&F>bv z!jh|cz!UBeH`CCZIOuB$+~9hEPoepo72OY%n557Y(3@PFsTbQpy68or0sJ4r6}_Kc zB#)&hV0%jPkp!|jeJ){xAv%8ux`EpW%m-Tvhs_gt)R3KIfr8+0YhxlCi&c|#;#(TC z*k8wUSo))AGrqa7FLnU@-5C$|QYPu?(Z7XyLboK%U5DRq8)&^Rby2J68@cv{!?4yU zgayea@V(+D=&}enGE-9QVA3tmYR}Htn)o7HLthUhEi{EWVkk*Eo%m1~vi}{?$2dMlpi%qpAF5KTav2$>` z)sFNfW%nFelxpn!AZ=4OC z_fU8qn>(iK@e$Bx=CN)V}m}x!iSzLzGd#mz+*mm$a>1 z7kQqRK%eAy$sbg6@Bs*scolb$pVhupvVXOoDY~upvsKDF)b#+%_44(WIV%vf6@Yt?2gPyXj*?O?fPD&$cla@@938x9AEj@Whf80b zJLt=7gED=BtCWCocv8w2DTWwVYpEaTA0YVAYC^#BR(^*44&pHtJO{P5U8H(kaZKO)lNQf8#&UebCN$G!GLq z#kbr7?YZ>|pn*-((#eD9OzELikGd52+xN^cUzWX#z-r*4z>$5|n5vcx(kD|00XxOZ z<@1W07RUS73(?3eOP~aTwt@c(`zg6$Gn|L6p(_2X+zYea%I60>_F;H z;Jb{LaB1;Sil&NaU@Fb}Exr@-8M|G*lyaHP5WWUY!bawRe6w`B^BO)@eu38){xRsp zXt)+0V+Mk|q0tDbPU3FB`~1hSTxKS+NdDnf)X30dy0tA=m|@C;x}Zf-zY=TEsk*Jg zqZr(0IWV;qSSI8->%t>BS|zYzrH1nn_)C+7xVOR>b~iVV+9tojFyl}1`2Oznu&6{l zTuW;iSzCm^<^3U71q+qt5|%g{JwaUy{KReutBD>`sy z9b-$#{zXetM_8WLsjg>lm4jybAtKJ$usueLGyDZe&H=Lg?b99k{s5~wUZ)wRXLzJh})RQggg6_@%*cltI5O29UXBN>J^wH#bYJ=#?QR`yYh~XG z(bOIAUt%(zBIQtZzzX4l^p;r+HY3ISckI@jEy``^3;or6%F$n^)%W!GR1%DfZ4E6w zfJ@>u?NY&Smf@~iSh3JdO7uLpjhCl0y{tQ$|A0z_y}mL}ZDSU9n4Of&Gw-!gKx29m z`y6xWIrTO0d9o0P*eG^76VKOeQA@1~JeP(8Kuit8;G#gx|Lk>ymD0@o5p*@nCVdD! zrV!@Wn=Mfa_bwA$cZ zVv?7$QC1h@VY_(FIz(%cmWwRb`*QPvMRc^xi=$;)>25DIcDL8`hJ&E}Vt(EH_2wx> zwT1q{f0$oH&z^Ni=l#d{7Gf{-vBiqoHABiAr8~9NodoBgPt$5>6k7x?Bjcf&M1t0X z?-zoM1GV?W0d=9gq%aHW3}i zRxd~@eOIYV-~nRp8@ z00ujxYx(Z(%n-0q*>vkSyen`WY^U2bR#E-rAH;WSTXZXYAz0u`@^9AGkbUVPU~g?T z)#)#>{c1M5n6?qB3#dYO@$NH^$cBDnOEmFt#d~M7lF5OEC=nOccG?)Gil(%>c zeC6s}b8@F550W(7JY=6W#LuM<09|}rPWxBXlehgg)zv2DW-socFr%q{}E0yMRs=^$=a&g}H7THJiVK>4%`H|`) z!!}9P*@-SCQ_(}ueby>({V29r&kF~k?L zy>gh_5$dW9i=Rk|zgI&)@Fy7?Q^l#uX)VXnSuGFl)l|b@rG72ukN1`dg>ZwnH>y>t5e#qVng+sfJ)n{wS~fUIia8k^OxD0>R;)mKasQ~SR3ZK0 ziwadBkI@5ut2oMP%Y7=>@jd4xp(`!CgF!R10H8_qd@w162eQQpd4mz9a=67PI#fjay`*g@Ziwh zqHf;)&ScWoZ6ZFW^oM)6XxBhvPrSGOs%E^m+)3S!tO0+qTyb`V zS20JdrC59IY2axziANAJVYXPm~5e?&?!{sZE!D>uiavF&gZ>n?f)oNtQpWxM;!G_-ATHeOL zw=Y#acpdPE{qEj4_ef)PvX*~Dt20aubnyN)YE!gWIW6yrIF1f?{0#QOO*$L@cX1w3 zGY#@(Dz<_X+Nr&_jbokd$St-6q>cCoo(Mh6cUd2zb8w0T6fd3o(l5j~ zvwK8NM8hN;!YHfh$O-nm)(&;X`6JcF7m( zufkMw)*vTYKNGhMx#q2{ANpbY+OplA`Z;-NO}HfRr0y^Ag>In`?ap` z4@V-Lnnu9s4ZWey>Bqwto!LmVzm?&s@t)Y(*44BIh<0ZR zGYZRuA#f$soa+M5R&Hw1;A%-u>XMWTY;h%-tx%Zdo~b-8)B2m(ANmHI4MKjZ>9gV1NzQ=TVj(*KSvcLodKBfn&L0Ozw%$9 z_V%MRO)arEOOoL?#6NM3G!D0#x`P|2xJ20AHena^hzv>@_QO^Wo51B6w}KFxZ0?wF zjjpRYY_EMDTTjOoTRwJIBLnyO4tbETf$xUW61Mshu|3cYOjCdQPxEEg#|00?#%QGQ zA6V{VZHcy6kc~I+*Qh*hK0=P+e zq(?>b1!^A}m;=27YQe+#IJCmC$9M+JK&r7mwg>yh-qkWnjzq3WYpGAf7~f6hjCMk3 zubYGWv5@1Hm}GlLUREZXLzXep-)ettpPLbv*xI{xfta`gs{1HV@GLL8=sdi#z>DGSL}P?IoLZY z$S>4eGikb6_9nR>G^lsEUU&oUF9!GGt;Hjj=SBG_XMC!ihd?FLUx{@K9n&&( z{=;DIRfz|j=$w^U6;HArwk<+xlQ-Jj@lU|31XS;gvi8CR>i|AXC$`=JF)|>`f?r9q z(ZN_R|9Abz$%WprUCpAVg~k@J5D|hv~UbGd_beMbL47!zHLK# zK)zObLGJBu0q%@TG7kd}G(QT&scVc`4uNkJXonA!zf}CMXIh+G&=W@YO>n_$qKG2D#m+|AmSIC|Gllc!`-vyf-_QkYKHCgmq@08`@;+)u zidsx^?pTPcQ%yZjl_a-I`$dWU=AE+O=9K)35FYnl~707C7njw!!ogjz2*to zk>uJQoAtZyvhHH~9qbPc^m`$aUuI1to1z+b-r3aZ@ZX_Q&@TQT&;{#9J(E=?9EQ4+ zPT?kWL9W5as$p1TunzqfUJvLB1i6p$Z*(N~8Jj`v;p51Owiu-zzD)1f#p|8R>PbiS z-TG4~fowwel{)i%`Bj#9W)Monw}bko#7p;qDG(moD44mR8&*cDtf!-Odc{G{366ng54*iBtD!!tcZw|8S*&VY|Q3v^1?CHJSV?6+j7L zwO>L`1kR`T4!te2a@ET(7ak0(5M#iA&E&cicxF5-aA`|Y5~R6OU$RwMHLbPoT@MoF zd>0VsH{h4mfmB&A+kaf^)8Y@eJ8&LZhV|ke247Rl)TPdT<~r1t08mypP zZtaYdRQr20BY4G=7HDYJUCI8P(EqR%g0HIuO*^dHd>g_wJcV9u8|cj>^ZRAzYQ0ZUEC`BerzPsiTql|rk^eSLk=m& z$|c8H$DaYkiI+VLdAKKmSGr$uUa6jvkdK#+_P-!6!Bxt_bk=V7mKJSpz2=}zPv zmW#AExv+I>)UK204>G^a4^ zoqQ;u`MmCS&O!)}x{FQ>RSiwROT9gu(+-|S%y_YVf;Ce9PkG{ei+n{OtePJ^@F;&8 zO_cHWfn?Z$x_Av{tQ0TwbuVYK%ia(}?LULBnaaX@u}#z)Owe6NGb#En7an&wXiufK zQl)|S{;-q*<(K@W{@e0LyCXR3V4)o6pPFPtuaP&nB1ezHJ$j2Ce`=otoQ%q~5{`&VN z^Xv89z+>k*WNfgCe`RSG`*^&4{2Kfhu(mxi_$-vBM#^pNGg?VVxW9z{t@VFYolq?$ zG4PXJQ)-dU2X?1+4V1LpEbfqU%5$Y?u3F&TffH%Yi>Yqz?Pa&& zmE`~Y4I~eWm&&B5(31FPN`qGa za=%Ce(uWXX$`ilfSQCs)e+Is4am%$*Bg9G4Eyp$gE$Vl8UaHU5uB0V+lzJ4hx2>bS zz(dA@z+YI~pyKcAu21fC9w{9`S~ZpGqujLJvqsVcmtCMjdi|QCTNq9Y!72Vp{E{s#Gkog!EnbIqe*LohkwQ+CPyE)#A9#I;Xa_ zf(ZA)bZoP#<2KN$_7~VuD+n9R5#%?n1zZiW&>2iOE!;9OwWl+=riyDxJLO~x>*9|jTOdf zHMCCXQdb;e;v!tp`<@F~7Fjy)9JKp4Ej}(2#@JT4C$)(`g&XSS5)D4Y+LwuAe85ur zOllQ`jGTyFMmw~Si3w{VcvsqI(d#VH2;VEE7RCs<~yJCrgWJ0GFfEX?mcaOXK!O; z?RD@Hz^+=7!m%Fu45C`u9>;fSwfX}rqLSq={#&jNWoIw}7>MkF*Seo`4Uqv7Om(of zPQE2y52jo18M;7^+ztJC>LQ=P@W}Q6J3y8*=@xW6`Um!i ztiHWTTr=#>p;|Fx!3JVGdA2`0Wb@@Z{jRZ~yKt+smU`EJUY)GgvHDxRu{Lm|QSBV> zp;EFQ@iGSY76tBY8%9k@uS0JuoNKQ_1evvBj}lXA!;sB6wDbD^G|~}5hawUFx%^~<7P^A$Q$C}wMZ0Zesogh9N)T$u2W@rXcZJLRv-2F} zQEdxtO%?c#z6<0+@NTrnZ*JCFo>QE_cl0i{tRsUZ^(=m|o4={Jo_;5FW%Gg6;25bd zfqPbl#xXVYy!{-V-jrdh4V)3mrQ_^!b(`I?e`|7G$2w%Dx|!>wk%#ZLIPbrwEfbOK zzl@8}>GB;r4ju`yI;U!cI?oy=j13-OfAep&s#Js{oY1uqN?qqhZ8|r>+Z_1m+gM>H zBIRD_h?d{7t zKGWLQ+{4UR>r;oh*3Mr5hn$`IyJ^2PKzEkB;eSFTT+ebiDP+X~i?5q#!mH|By<@7P zw4$!KRtPak7^}Yv;JrK&X~R{*qPMXyx@abMn`ltLdIGj_!Z&a|dm7r9z2Ey%Jz*@O zE8RKy`@uHJlWZP211!kfYl#(p1v{Gq;67DR@Nm=_Ogjh9ZAM7)E)GN$C>)w zHxcemPUD-()qv^NA6j#EnKa)UkOi?9ISUxO^rASj0wI^%4C?bx7qYhh4En&mLmT94EA0ka zVwuuk;OE_&yax|;cK7f^slvW6?SXb*Gjd*k9P^J_E86ZmRC^J>D=1 zcZ*XDj~KTcD;*J!AlcF~bf)u@VWRIbcg`0}52N1^-FUCGLikOdz`rzXvz`c5;%U?z z?70?;-Q#Bw*R_j$k+z{w1HV8E?2lwHZ8$L2i>9~crumM7|H-V>T5Sn72S%6fa)c~4 zUmaIJXQ4ZSa;5)3f6Hq}`||DuH!-JVK6PZ`PrieBC)fzRTzVfKmU5q&mKfIbWisMh zYxqleW-}=bVl_L8SJNplW0dhsA)X_3v#d$}2b!gRbfqD+EI+}zt|+OqQoG;*(=oKu znCD%kwkqFCo9H!C7`V3N1R-+wfl={cXu9tMc1E3vPH=?rZuBqlEVYiFBDaJZm7Xk_ z>*(V76BsC!)BiG-J+GY`%Ko+JT_eG&bZpemIx;g1#J!Buf7-N; zEvH&IY=OL#X~J9nRO$sO+L|dZ_Z

    s}q`c7hY*5unC$bw&C88(;*REln$xyHjUH1 z!SQC&F)nAnegj#6>?-UItwMHt&$-Wmjk#O?0>4N6qRfzbAa>Z~0g1@c`Z^(w;>QpR z_4Q znm3!*1vWva{Oi5v=^c_AxGJwQb|F`lJT(2Tk;rm=^3zO=)+e(^R4B@ z1>ie$0o)oKNS%d_&>fk4a=A{*PY$)BhXn($Lr;8W`Bs4h_m4Ci-W><{`r&4An6a2O z5u3GZCH*WEG~e%K?ul&5V#!FV&OKtO)=kVZ{1mg`$@okCZaLjQAgRI~CACge@NH_Z zeM{9V&gD?J)lDxgHX>tz4B6<-W5=q$5moK0P!O_`UG?nPQc6iUQ>{dsrWnr7ql~l+$Xs)J&W~RA&xo{fTE%I)2ktOKyTzcRm9% zbPK{-OD$ie?%}9ouOaLu)5XQ$Ezi?HgmQ*YH&(YM>z=tyMe{uq(80)1?SnMSIS+Wi z|0y=)Ltvv|CwCP1SL#9T1L&oap)>4t{IxQduEu5Ro0t07Tc#8GQ<5B`!KG9_nMKA) zKUFWjQ2(d72$=0Sd52vCjuRC>Af8Bk2S=M~7e4ZZ^Mcq7sYjTV75o)f7x9|-2U27R zN;S#v6pD@K_X2a^aR4UeT8|YmgJY5I|83$YAd4Ky{|dc=yv~ln zk>1ThO{K5t2fr}k5I@ZoS-g!{XngNm>dA#CaV*wASe=+CeMX%Oj?8c_b${oYn45Yj zewa8`+A8fdRchz05tN-9ZMBDZlQpTDn#F~Iv#~t?VX&3fmKAr7H0TdpVZP_Ma2ETl zw1WQDjoAl%BRQ*2Hwl#wBfZil!xFqKZ@u1$ZpTK+wZ-Omu`wJT#5J&F$y5B_O1d+d zhSz90PbRI=b|^`}ulQ8UD|xx4QaZ6;Pw7azl{InO<&FXTL1xcZjMVPPn&%(LVekhxb zXWGdFJcp8lQg=?a{i)8gMRIi!%l;hv-sEUU>K)<0;sYr(ESwgWh(nPXxy!IB_(F^% zH^4opYDg^&bd2$unaOEYkt}H{a14!xnZ4%$pYQ^_XG%k3{D0eLX(abCcfA}@7=}vn z3?ZHlS+~IN%a+p{n!odO=ll4>w3~1-unh)$#|pDcc6vczzgRnElPg^N9CrkcWZ&WK zQe$;C!yS5c+%{G;eP!Nyds(J^NI$I9IwzTc`WpIv2h&o^|v9bL=vv8cf=<7*Bx`tm@T$1$XRA0*^x+V zds{wYI)GnC2d0zGeO@oy9KqmmnhP#Vbsc!vbGIE;ida##aY4#f3Su zWi7B%Td9r%ZnT;PKCoAzhC9|ncCr?c+x&~GUSLb&BC2P40$Z=9+x`jLz|I!uM>k2W z8cKEIr7fw&wiCJ^V3l*7H3}I{aY&SG*Onsd>@Bc6$Rv&AH<{LkqR`XI3DhZ$vu2mt zxYleI*Fv5SeS@=GWcl~!RMYR}L+BoI-%K8DaswL|)3w1ZqG{C5rgRyC@Xy1*ur2D^*>q0ZIlz*dfm4+iRQc{qlwxUfJuw z6V++-WNpCVHbAey0WC>vZg83UV*~UV&SUHM(005zSx=pw*k8y9_G1zPJHb2DEJqaa zFL6SScRJMBzMkwk^G|MT#Zmm0v;rO4a*Ol~iqtI>7k%w0hZ-ak`PRiFrBh(O(1oue z%mReO&FIA3nXz~9-uYSbZD56AG1yiUt2989u`|#j_m=qo;-<h{+FM`He#yW9x&}vt2+ZyxFi+%Dr9~p?}zH7S* zy?L*cxkn}@j&fe1d|(PXm8oQ^n}eJO_!0NT)XLg}I?P8n|Fj&CDpM1ajr!Coj8EXc zS>lmNCe+-+QqS0(`Nj{!i=lyFH*Ji3hw8)9LQ}(8v8K4n0xRRdIo!YCRQFZ-DYK-+ zZY=hsdL3YY;gao`@By5+|2=(AN!we~7e=S#2EcE|enod=$aJ7M#WJ0@Sh|~sSOyXXZpexD6^rz_ocZrD$11Zdz%zFvD7$}F)7-!#(Iz1gyzp(RQh8)VhkjjAZyB27zJ&T0)%wD+zdt9gI zthRm${9~;RBqkU@IF!akDe)jcCl${zLO?dwv3xi8%=x6`fN2W<48brYVF-8Fx=nMs zmWSGs4b6|`m!*TqQT{JzC%(V`e{5A&w0Ph~NIPr0oL|h(4;hPQ9)roZ?{Di9;` zRhiGWIq251NU$))LjM<=We&J=Se;qL2Z2u7jo5m2o*1W7BoE7d*n4OLxkkz4Bs20} znN-5TPw|UM*+!#SD1J8P(wfimOPP!OpU_)p{2V74~Y& z;KtBiz7cV|IQGzP+lmn{rOsG7x|97Y_@q}?COI4DfxN9erG`&_CmkK023E-b}HQisqX&TSAb zz1xpVgYXP-5&Hq|p6J1IkotHGuqC-(AP&3|sL-FvI^t~eE6HYBK)PLHEPHf&+})x` zeT&}-`5;Fq*P};x4?*wr?}FG8&P+PxYf03RHY7Fk?j~^m9QOs_gss%yoZ-apDYtaX)NSW9sk(oq*gY>s zN=2^Y4e8EMzJFp|S66*$KX42ORck^kwQ0&==&^YMd%Cy<;<22U8_|8Zo61{au6-~% zA6!nJm1{GXsXwAtCDzq;$ZeD=Zq_lD&(boWadfmtV5eA5CC?QhR~SBC8o(J+UFr=f zT$(_bJV&)WB1h-7Zi~Dk4MKZ6$3lIu&9*fL8|OeHv;;fP=aZv__TYHW`e1Jb6dM~} z*>p02<5J^g^aK6;e@1_j^PK+!BBcG||M*DTonVf~1(9i0`0DUIsuXIjSBz&U-PvAT z3yD$Iq3dZkx>0`Oh=7VH1L@au&BxUUA`4nicLx{f^kSb6gL+HhftFIa;T`Dnuw6FZ@w_Y1I0Oyg<_?GcQKws;~22%Sn-$|s@u;zynJ=+qqn@1(qobnfL);z(CN-|?hMWabfpLKt;D`k3%N_uDeVoALWOaxbw)@qBpL(i8!j2F#E$uc z@DOb}d%S5=V=c1!?i_bx={hz?odw=fv!vm^D1IZikMxu`AqPntl2__Rj)QmyVkA=` zMN9wUTjI9CL%6>!yu8@o&~?z8X-vhg@t+g!X*JciCP=3ze3Dm~3nen|hV-xWm-5Nj zM2XXL$E&PYLbK(uX=zLl<=SH4GwuvxKwF2^qv_)Z<9L~Aqi!AclfU9F9o(8_w9fU#XFf;d4S@A zje3r=dfrSWlPHHu#9>?#bP(%j-?BF{={w$@jiY~4R??q55fuk~nixNXM39r6@-3hZO1)OlYx=XwP+bjkNmk0cpCa82uBxRZsyG z=_H7_!gFX)3wPw}=l_!2Ckj*24)Mv=v{kfJya8HO_SF+xSXxxbt@jseQ4osEhdVR< zvg&#iq#;vYH7J@eE>$>*WhbPKY2D&)URAMn{4{-A3|FJR}nssVLNwxo1`YI^EW zd!VH)Mxj~YAA2Vk{#Cgd+u$9KPB;Be?<>@BKPs9Hyg~lMKI4;6p1)um;PhI=WP(`Y zK4oL55xG`iCYXEpuYnuU9h4WTCBM+Zk(1O^ zED{B^G5kWaHI#*}RhD4cLOF1{l;=)ZBbazO3?a~_rfmP~r0YZtHOw_ORdixT&z&eRSHe~TkR|I!gWyl|G+Rcx_F9~ad@irR6y0<=|b4Yz$6TmlO6v8_EME- zM_yGZ?`t6~Sj*EixC}Db$2yXUXfj{w5y-!xfQ>r0>U>*1lp=)BME`J!e;ak z*Neh55pBpkb(y6;Hc>jD+PPb1BC#EYB!|-z@hf>Vg})3Ga8*yfcH||?@9ZY9rF%Pb zP|ZaeVu^4LJ;2bX@R`&`8pu}i0pPf27dQfm_FXo%<$6L5OpB~14^M;`Yk2NTsF%n}jCKA?^#TjfdY%_toTa;Ot6^iKILk0=d#a8| zJ6>2Th2yCe3FUkX`zNj*+dJtd3>Akgf0>^r_jEV(*>S&Z7&JjUs`Rxt77y`%8+ys> z<(`H?%4+Lp-)C#IyH4yRZiQu>wAS^JZUtotw=8ue8XS>qq%SEgN@nl_=$G^sFg>{) z_f?kj{Dp`$oPUwr#MIT?M{sc~kbl^R-Vu)1u3gYS+(pc5T*A@q$Gbp18Qqet6!)8W zv9)_^;e>+TUcuQ}UIJr4hm@W0K^_M?S|*5Tjz;GHqv$OEn@HO>jJqu@w3JefOpu2Gf67AEj+O3F79rNyS?-N1M?-n%-r{No#%0M^A1sJ zKurqnN`1;FDi_`7oayRokDmOIs1vDRIkTAl18;yE_+QvAuCsh1P>D_3^U~PXE*etk ziMm~;ljA5`1|J|94w6E^R`zjVbx|7*^f}~>jejTpwNAB62*tv!zyMGYY^1*O`vdKv znY$BmGw?5EGo*OE8!;ZZASBzyqs>j%;-3QJLJ@^WrEX+RLy>f&^aQb7yNa!s zW@#7v?~+vOAln48jRlJO$M)br&{{G1Sm0wb-5|YZhi3!xF?PN52o(3W!5CI z8uti%?fDh%({wkt-d(c{;jX(@1{174s3xiw%a%T#CU8?df)@x3h0~Z3(s^vPXrz8; z-^m}q?cu@x=}cSaC(|_Hg0Gug$5p}cE1Y9WghxwVq>qV-Kuawhif1k(9{t|9)jEmA zBv)~7buCzp{Z0+B*HIs&)R7kR$*BP$OI#)0_l{2j)VDd0_!RX&# zI^jD0Y0w_5A+{ZwM%Bi0_zZCd{f@K36~dVJP$&wiOZD}7eTU3Xye-6r zO^FP}$X--hq|~szGXL_|FK&V8&y;7dLEkYshI~qohaX#SlEum__dRBe^P%Zqxu#S} zwzjqnK94m70fwX@gA5_M73o@r$ssw4Q83iiI7e8G&hJqvW-c$5@jrcikb%RWmt1*d*C#enN`CWMB~V zg!wbPj63eh4RkAP!XGRw7lyD^_zz^S1lHftQ~*Bm4AA>zu>dDkBKERzSih9_?4LVx z*_qx3VyUoQr!hQq4Ju$=!D8cz^E}={mFvY^59p_J9MiF}67GrJU~|j2#46!(hM8987Q= z_zv#&mc@S%-|ButRI&In`CK{1TFDFJLi{lHmiR1ySl^<&9l8> z;$+GYZGccgoD|oBi%N>{-*8g}yV>N_L@>rFnuqBgzuHNw(Vm`e)>FsE!xD!QX3KwU zhWeddZb~yu1BYV!iB{-WR};%RW@7TRq*cVA-41J8YJQ!3>k_aL(%zkd^u&|3>uMkQ zVr)>l2>vDH+P`?u($3VuhbPF7@V*EA8os$hQr3va9kSUVftqK?IucVVB2Vki8jGCi6d;io{%EL;cka*pH`dt6E*)_j* z#Fi5-A}6`mAu!&!=^xNKs6CHj%|pwrqb!9oVD6Cj(iSPoYHzuzd@S!EWH#IvFA(>M z#;v+5J2#9YkD}3OoV}8MPTvCD;mfcowyo??tlq&T%4}f1#V;kOQ6*b>zx_R@<~}O2 zQpdRZCHq2@(%rMLc?jG=^(EiaUEx(&6#mQPjn9 zo`pvWV6ox~2aD>?qa+nt4-2$zolvJA#=R67bAodpZRcjjpfjayG=y`)hz5?Qx zl4RH~+*ij)G&fA_=KBBykQ)3MEZ6ltTnC7y4RVlJp+;i4));~1s!0vCO3awVidNFz z6ZjFB%5_n}gPkEEbVALO`|loQI2*eK%luI8bJ6*YZI=aS`F-pzHxcfUUV|T_6Aeb9Nrq39TfGQw7By>M@swqOP$5=M zSZe%HG-q@BgsT2QmfXDKoCgF84VW!&ombTnCuT=L+ zOSIN}HAA-XoMkumk8{6ssp}+AnHM9g%WD%04PI}o>ofbz-2#GPK{qTdU=t1VfJ5wi z_KQo~HO?}OndR3kU4$2OyPW%x*Aj8Cbk{oOg<-Dofz&H@BHx&8qy)Gr;p?s?+Ecbk z{wJyLp(oZIOcqrS%to`lyYsB(KKd5mf^gg#0=84r`9$UvR3h$id^8S~@~Qd!3T{NQ zhNN@1pm{)NPjmkc3Be&NhP+dm;NKJ=Mfyz^Ny=uY;4xfBuw30#_>HR}U*s&{blhEN z;hVz;{3=(S6AZ7}>kZe-my&M#yYQV{XKkXTp!k;J&c&mjLo*W(nN9;$!NcN3ww?2G z0?Q@RPH|zvW-bC>Wvl@RZRWE{QX4FWFXMJuF7S&BCd9tB37gyM|HS3+7K@)*0Syt~ zK%(Kf{LuacIP2Y|jIn$!%qBC-ErCJOqS#{!ELb43+~mY(%Ts12y@ue>E6V?%Z%JRc zs{sq!4LaoMW1rz1Vy};|4K3Vn!pciAe$jCZ`i>1jJh1^<)f_&4u0^}1s7pWOo{R@{y+JOp(!5; z#b}p!tvu)P|3#+aeB;W+y6mRxX3>;Y|oo+Vpi8!Yv;W-t&mUpnYBaFF(j zJB@!eWomyL!-4JAo%sYCQD(+KW(09pn}F|^<1ktsYDo{DwI1c~Sk~HUu2HHQT^(qb zwx&@d_Aypft00_LQ;hwc`N1K?c=tvA8hMOXxew&xv|H8?cNLC9EAEWQ64{O6~G?HMPV;+64bh=^B{DH7Mu+{GRg?+62X_ zV{Kr{z`Xy+XwgqmLSv~Ccsk5&Ut@2Rl#_T?h*CN$HT*d#T}zfoTam?bjx-araJ|FP zu^h9-(ooxu!`8jt-@V6jdIb<@a$qPCqW^IvIF5>S3s0vmHp<3yd7QKn`9te#xgu=h zUxIxBRA`^`H*v)-pfl6%s~^!lVVZa!-;K(LCMof1q@^?4&OM44>^1w(!wrd6WzB+; z&^u_5+MzeWA-3UUOlTcmMQ7{1rE15nLgI-lg+HBDlrrdgaR3;g7HF{mRCJ5WCD-6y z(i2)D*M#R;7bLc@EapJICwbY}4O4cncOm2{p}!Ah$C9nM$M8w{R}LqiBeJLqD9mii zEs}=12a8RKdeU5PBswVXUvwe)9BX6hjs6=P4m-6?hBrmG_()TL|B33xXD|-kq}C>? zaWFblJ`IdijA|K|<==}A;8;wiCKKI=X!?t^r*JwR;TxIw772*sk|&u*i)F-LQVsfr z^`7ZIeO_s<^vBk!&m5)rVrUe8%zXgqZ0>n$bbK7=0uy5oR5?%l3O1Hak3 znd+hxbv^Jy9>XkRCp%{;b!1hVB7bFG3YV0(Xl?k6b)Er(^Q>$9Yb_B}vXCpcPTi@^ z)NddeB;|f5gvt4yllZ^7jXf8uo^l-ZAO&bq^2xvo8>Evzw}6ePT}s!cbL9SI@8q9+ zTe2ZiLpeydNmQJ}uo_kYPxUpxw)@5eu7Y3W85Rq3+*HvQn>I??>+i$Fvz=ubJ;}vb z<_TAnSHf3z1ppAul)DTo(quk;mUQYojv4fDY>eRvSBYs&efOI|RjeDzaW+JjCT7Te zBfa6DLY8z6jV6c6*9x=vO7c{$3PM^JNp@lwqR*#PpR z&2!MZMw3qRtHx*ZVBr?zi7x;p2a?G1LLoXrtt6AauIwS{9C@j%D%e*HS@x4L&B{IB>!at8Q^>oe9QI+blG zoeV@+3(?lX_2_JMIQaqDDYC*kbQ#9bWA=Ur22huM$KskODG3*CZ%WIge7Uu6v-F!9 zVA>FsUc*yR3F#^Z$#7G zLy}v|HGqqIv(W+COnSb$4Ns8w2mTZ^BthC>8_cfpe+0Iac->h=Wnd%ziuP2^g)r;| z^vb`DvzZdPjVx%}o$|>UCr>UOY?$sHLIhIA>*k0Esbzd$u6F|LyWzU&$#CCIEwD9k zc0(Ix-%b9h+k~UNZLEP~6Omnf3*sQqmR+V!VK*ja7)i@@ERq<8I-MJU3Cw8Mk@c?# z-ucRAqY`#*vYiIw(Pp`o^fqKIt&LV+$%-qJWbl;mFm-44DIE3gDqiA z!HR)kesf3 zEcoO+Y%`06>N)AYT#ao2^9}0=1nDHmR!x;(vGa8X7?kF;FYko)neNt>BR#)|lQDh->ijMHv{ z1oau&fwc>C^u-isg=^{Dt477G#eV=Xy^YkaC`a|!;FHNlGsZZ6{_81*}SM{?L2eDa0O!# z{YdUj&Q=$pN&2kyFOHHHYB7wEQ~}JelgUx)8UI*4|1%!uLzmUJ@@3NuU?FfEBzxp!!0|7f68O=0QU~rneO8a zh^o)GTI`Ca_o?4OQJM<&k-7s7rRxF-JWM)YFdE6Lz0swC(+hucCk^c^7&!DF?$Y#YIIew|+qK;agXs+itt&mkpJ{Wl2Yx zZw6PeJ2pH{Gi>&Lb9Znm+& zF=w+tR6&+u4m8pIIupQ%`}7weWs$SueZMSnqTh&SvlcxFPKi=_EU>$DO`CHxjl_m!ErNlYHP z&hgAR1k?kwq(A8|+X?ewe{H5N=L|MR+W1<+H(TV9x#BMToH`22^$k~=n81 zD%zxy+@fg{*T%dT*1s0+P6J?}1JYT+UZ48%fy=f@SKf#Nn)mn-rMtLv(n(BnDW$woRke0F4Jz00wnB|aok8$uBJtVv5^hKAhr5y= zsYlogm6bE?CTRokJs2$w(#ox)s6(8AZS4B#ub5K^{V-mXlIUrQe$9tcsr1s9{E)^V zF*p2Ed}6GgdY3y#-b-1dO$bg2jJ9lW&9Q#OhuU6&n(_?3%|*)-iMKkFGdZqQZR5a- zs{3zB$vH+8HUF;K^rTW{g(o;>Pm`|bO=`8iH?QHi>3ibtqnPB^(l?oQd=XyhIhI3E zV{2qgrruHC1Aq@;35AL86h)VuY{9i{jCS^^YMLsLx|NW57E=eS+vAG zSVfI3R2MFy7J9jyY3LqUTy|B;;_H&Nkv{@SbPH3ka469dG2(S?c08M{sdNUNfeof= z_JQ%Y*->dX6`bwDOkpXx9NNuBAiOXmFj+huS7!Z;EeQOkpO!w8s~8vgo{B*8sXEv( zYh7WWeIIp}dkl5*XN7L~B5kXI*RsvKJXllsAq#jhxkh=pXAy5xf}8=Kn$$|%PcCPU z)46O7OO?2%csFHPl^3d&hwj*|ff*&hV#-huI5^oCxvP8zvHJ|<6a zQxg`KT?@!)Q}?G*I#`1W82?He;GF;yNCSLmxFcGrY*=ff!|;B2JXuJKXqdPab4Ji z#b}_E%}s@tiFUGWd3$8MfLr3IouEj?p@O@b@K*TB&_W13>rX&7tCvF)_@35C|4XQo z?$F@X&ho|Fk?H_nLs2vIln&@yg-LQR{Z#l$P6d1DwmY&6)Xv)5df)O3l^I}1!;w~3 zqz>MG`V>e;o3Lr*I^S1rTdoCf<^J(DHNE#8W50l(Q&u@!OaF7S73O*C z61!3+YIoRFX>F4!{uwb@-e^yTuc{kKn`Q0ioJxH2EJ$1-Ex~ts8{5=lDAG{K!y%x+ zou%GmyX2Ld<|GHOay(17P|YYXbG=W>it->%z-9U`g)0=0RBU5Z&b+g|7J1p+>CSV)jg@7!}VvcUQ zJnEWf{$9E_Fb^{1M*BABrSHFlI#X|AWKL#ijhsTg4xW})loVKw%I%a-kO^9-UDN)s z91brhUs}hYXNel-PsX(%B;Uul&<4|0SMLB+{F+s)WkOT6lHOT7;p+-*aP8ruNPW`O zYO8+7B*=-VBP~boZrs+5Yj@SFSd6nTw+9_~Fi-ur_G8;Z5mXzOyyTABTgYz`+;P!l z2HURmTsSrm%|2;f6`4%crncF~Ab-Gh@cG#rlM4d1p?Y-3v>48qc#Cd?TYz4k(PBnQ z+maFn4!@*bNL2g-;|-?Vybm9te|^R)tu+g{j><(3U}b?*-Zn*h!wWE3+UeIs53nuW zE9JD5ynhN&7;30!eiC|I)DL?gJ@c+g2 z(3y3rlMYTm>x64)&6Tf~2H+^NozRV`Ydl&ygZMz2)c5=?>2!E@!fvev_<*j$EFhbc zKcyYaC8@LfDw|@#gqP)yuvXk6v^4z#KM1*lK12%(%yfNi4q8{{p~~_^psn0Ca0j6G z>?*{GKXR^`$03={CH}2?N2@*d$Pmi|zUSK~5Odkxzu|t5d4x5`?B_u1b)b6yltSTO z5uL0Kuu1U;bVA%XwxpxJddF*E%m2q`1DgBL&>l2Wkp7A}V-ivvuOX`{KFt z$s0Vxrq;}B@5aP$;$QX`ENWz%O`a4wv$b_uzueNuw|wl!1S>U@qLl)8Y7^1r-G3E9$Zz7i zJfyKhc!8VGZf7f*qQLrW72iy59=pI6X(U{k0h8NpE&)GzE5)t>UVt;iv%VRo#yMUN zu`l+2f*bnolCGS)+_E;NzidzF4 zJkM+u3sdbr($t@H|IIA-E`M3D`oYTQ;dXP%S`M_yIkXe8vD97}~;>cjFoQ?Pc zFeYgBMk=jr=K$HZ(b_~V%K$gq~MQ7EU?Q1g?`-Yj7$fy_)=4u%PrS7PTLL5DiP}&&Mly3Qc(-A-S73}Zub8=I1CHqLEo>Eu4Wy{IkY8pqz7f#}iAUXK=(hI?H(&gX@ zc@)|iu4bxB;o%hGH~Y6{BHcM@AzGEVY4~RTCG|jdIFEy0)fd_?bDM%|oJQ3mCy@5= zC;1Y9z=sXh8&^m&2(QQ|Ac%vxM~lkI8=~f$<$p$w<^O=MDgC{Vi zr<^b>P-dzVI1kqu1GpyGW9kv{n)pfmkVNNQyce6AI}05pcgtI8-6@ZtV6_45fj`?a znX1~l0DzaMi&86-7W4`J)_oCfO|F49km>YZe2msn{>Ls!`M_^sNWQFfvs|XWa=mzF zZAI>KaR>Nc;{|yIT`Axdo4_8*Ub;l6R@{I*8Ll8rF|(<097>&bLMCl3U4_0BApM^gRwF&b^fcHzjHNFszNGf5RCY&}{r$-Ua9edO zJ;XRPHcUjJDfmRV11@_yDu|`GdIG48*HihoJtQzw$VnsHS{k(&z?=~;1faF6B}N@b&Q)0rpj@7cY=%b zO~zLujtVFT3nKYuD(5W#36p`3qPj6P?caT&#A%U{#DQ>kaz4hXr{(n!5iwRDEf)(V zU@Kc2CPi)LuV{#np7K8f=df{9b;^;`)a5L@CRf2`8sf^7-~sY$!i%(z>?`yJGL)F8 zvr`w89V)(HJCl+ltOs8sNA>gnlCY$d%NNLF{#1UgYEbKOoZS!piodF-p!%w_sSMBm zz`m|-akYz2P%9i3xreond5pN5Z>-?(DDOsD*4h`ZCAvZN;s5Er@nYK<&cHQ{P9>xH zU-*oW-z#y;icTZlxxspZZy~{mtIZz#d@)_I2vLk9bv&nOlFAbc8vJD$rak`df;hBHQj8SQ5Q?z; z&;LiWa%d5@DTQ!OcL42)t^@911F(1azhD;K0U0PgqLXuV54mF&bX9t27SVrgPUj?J zxx4_V=zk6O)JEz3-)ww@yiu(vl^|BW9{ACpC35a=CAOV9brwFw%fU{eyFh>_gmo~H zyN@y6HHa1ADh}LbkUAI7FP!Q9iBC=$s$Jk7i-png-YL12d>z<1++LPW6M*?HjqJrS zakmv6+vNp7?N|st#2>-3fsbxf6}*2H9WWOb4#TG7EzteGIZ5-F*}jB=I8yX2hhiyr zuFLit+y%?AwL*8}f9m|+3d*3|cJgoNPibu0ZSG&{g`){cI>xb(5=0*b57`-84&Rq} zPQEd(pw`*AOas3kmXX3<&QZ`jj; z*+MSdSjzOw!Hz-gZM)=8Vnb*R4R6?G9#C345C!*+wdrii`2D@`c4@7#a!YLZj<|(7 zA971ON;3TK<=DVS_%EP>RzLXMusytod0>XyShuG+?d$XSk-w=!0K1 z(Dfd&aKn{*;TrnW0>OA?_{u;IcAU-*{iscU_ z4jx0bOIyoxO+EB&w5KV-^-buj=YK9SIiUq~SF}n}OWP$T*|HU{M|rVr3ZgEuEusW8 zj8#x)`-T@(4p+fB@iF&AsAHLtzEf`4vd`)o(oqcZqL$8~etG#=SMGBmpL#|Z?>Q9t zjqIH>S8Zzerhes{;ep)Kg$*b~3z=FKF>-Uct8OHk>*{T&iC^Lykp}UuV2K5l@@q4A?!Rz*chSA_6`xszCpoQ^&JTeX&y%(tGk%>sXVMxo7<_Ii&-uY)df#b!&2WAE*v zpXNS$yTvCl8KkeH@wsj~8*lz>{!!SPxn4X!f1+e(26KLMnxzNS&KYK& zTdHrL&HiC75Z-Vz^}Ai=;2+{vHQ!s6|0a$(`2Zx+~`#QI=lvA-e9~%$##>KYCDDfjvwfz!kZUhzC7_~~VV-H_%hE$GTEbQM_E z0!8eNzyw|gvw)CyM-7jm3Y03n^|t`qpJKjEFT?D>Zbu9tC4AOT zmM1(YSWjX&XK{jjbo(utP%_96e$}=j{rcQFVc<)=1BqP%X z0#o<6M6f#CoVr_BOQ)ty5eJdWJb&qS2EAjQax;Ae)nD`xd}t8%hFuum3e-_{Q%NQF zn#MHL7a6PzxrPr0vjUxP+NLuZgipu;nGPw%efQ==@1SRFtZ9;TSh$@>Gke9=WOM-& z%$JsjT9V1?y@FdzGP+S|sB{cn4~|)j6QiI`!G8W!nbvQRUoAaL1}B|kLewF?JLwic zrC83e_YEHe_qqn7Pwgn$Gj$l$9PO00oV)KEfz1zxg*n0DNM&)N=AbIG9mUJZ!U2v zpB>8gmPyr{wUm38Q7w&Cm_yh*DOalq z_Dj+kFJv9lMLrs-Ow}*bLO&!jv`+@nVaTrd1=OUlMl@zlSx?%B8M|QP@O!p#mZ{P< zbdB>1bW`gaJYWgsP4&xk7xFk!Kb)sbF%&|mWxKbjb-mDmI*oS5`xr6qJ{c+2^I3cf z)n6C}*HB+^&6Pdab^0-ODdoEJl6=csK{-dvRnB-Op(*Ti^f`E!IEyq#+J)NUr-E(a z53V?2@E%%hjUFX88RM~O>O}IcoP(7sU0pxqPU?SLb-o*3$X7vsqXPs;T%#8#O}XE3 zll!XflvWg*vy%Cv0@yRPMO23FjQGS<*XF8r^0xXiwGVj(UPG{+V^AIXj0L8q)4hoj zZMyW1vCFAeHY_Vmv@6NS>5=>aIo6ozo6nzudYIqqPfJnnOP7%LbY|&E;Wb-}?ohHz zoNjHE_P3{)Les**dZF6t8)u65QqycA!V&;~S5~4{u~@KDv+x-00FbMFaI9hrIXzqJ z+>GwFoYzvhDApl9CNfiwd;7wlDN4I4m8C4<&kA4V|8&}nO&;s$FWnE!Bzl7Dq3yu` zY*lQTZnHIxsxRcrYFbb22^Un>6T94L{B^1gIGX5XN#_TW8IIOif8ELHvEwd#(l&ZcB1x+~?gS4586D-sMkgI{Y8 zkWGdB=xK&o;S6rL&YV@GsQ4415khnIPx216SPAF;&F#|;8x|Q?*_L_6Q)lfJ?f>vz z-vHMJtgz$*J`GROl4L)2(wA+s1!i!k@Lc#kvr2Vv!%QY|Hs4S^jsHhgp*};&{=H>9 zUyRuxvTQ^MB|mKMlHSAp72At;BHNTyMK6_2^mYVWI5xA@3u~a&)AoepO6toliK6Ck z^CVK8rj2I*v)6)B_=O~f*HEWWx7k@piQfMDyRbEV&M_}=4y;jlSc(@bDr4{n&s=4N z7U54JUPH}LE$obL4dw?jgadhl$&p+o$`#(o_Tsv_Dxt%<2k1~GiGcK(4-}U8YsEw0 zXvs`|FW-uu5RK*_RnuQceSppb5#}p=fEg||!RPQJQBA8J)=i9HI(M3MiH%`{#^?-! z;aWA{Mg#9zC@kj2%e@0Y;2*4tv<}Udhd}PKhk=`n%h{gKS50U&fNsSq5okvx6CbHt z9zN?XoN;<~{TLA`KwM+OWdCOA>Te6>dBgVgQVsOEZggA&$H@oTW(ShFVP0F9fc_yG z^Edc^ZFb{P*MGLo_5hV(t;VOoZPB?{2Xj=OUgi;>yOIyiL+kO4Ax%Ax&a&w@d*zjQ zST2FKIrH(Cg?kc*`X{PI$R)jZ5Cz=PNW6(WS?tEohpHi^bp2-G=pE!??rmX9Il`A2 z-L-6sJjPpQtf4*#h8$0@H2Su>y}SZDsp)8Ww+NFLiC!RVJ8SH%_Z*tq_o1q^kxt;I z<9$>9myj!eOFV_`_Cj|%gZ6Y_mH)s@0S+)xi8yen;^ z(+&P%-CX5Rdu^mOo3O&4gzMIcyIj~P;}+~{N*!T|qW7+(2L7+qz?5a$1U}4_xJu)9 z>G!-h{&6g;@bH;9{UW}5>J9H3s*Z`!DzNl-bBMv-{CG& z&m9+tC`W|8TX!Oz!b6z*V5`D|_;+$R_?CohqWp^<<{O2q7g|U!(Fsa4^j1lftA{sA zr-hGN3oJ9GlGZXQ278P*Vdr}iq;`gOz&@@{f($!}jo<{Snq&knQ}+$iT@Gxw`Vo$5 zx-=oT8C716&rZog9O#N*W&XC#cgvC2my8b|(23C&G}F~Ruv#gt6L7dv37ITC_pXDl97qVQa()MhF4(gqHvGtX0k5Cl z58X-bK&mpEZ6m!Z@mAlk=8D(+Z{RLzCTVx#P5a6_2Lqc@n0+_JzdI{{a+Q zhnceWD;OkTq>eg8)e<_9b1q$`PU39w@D{)R%q?*A^R+C!knp zpRga2@K$K2q`s*g_#S+T^*Ol)T*V$kW-78yYp>4tm)gp!LIGvCv$MQb{7tDZ4RvwJ z>+u)DK)kLJ7hVq~(lxa(V%2Z=>F7}2z|RhJ3s198HUA0DX6_Om=@qhG`|m&%YDx(d zY$D%Fq_IzUDY;LxAH!#&p0sP+T*v?&#A|~ssgM6Z50(DiJ&9{*8LSoxjls!$dO~%Z)#e3i+PXSd z!vuHOcgKG@+bO=`=b2YaV&XI)((ShnBUV8@{3Ee6e{bobw7YC49A!I)jLH9?w>JL* zY8l%jBf&4W+xFA&H`fIr0I#O5$Z?A~V>FakseJ zOo6Qn_sTXFLX*Ih_E?%}iZI%n!Jc;xQGQ8#!kgqefh_{Yuh6y~?rvR?vWAX?24Y2) zY&6SR!JjDRDF&SmkxIt~NMY-Ryi;M7NvIVE$9(iU>RXG2!(uG?5i|XXOy-sjIjPL{$k~PmAmLd z68{qXCX;Wfd5xiG;9AlkrIZcxi;?BV2wO*1wG88}Trc|-zEobt5Yli+Hr*iWf_(!` z+R%Da>9zfS(ll=;$)->s<6Ucenp2h8BSu*UiEWwn-djR*(>-5jX(4kQ7?n_6T?X}X z=fUx1v1+zDhkX)w?`w~~l#iWg>g&M#Wp9Sx#a)5(=w*4VxLCCaLkcPPbo)5VH#!nN zoiNJL4>+m6&(VS#(mC*y_(Z*HcqKO8<5U1`CHf2IaXNTGVthZ*Ti$&9d_Yp7gz;<_ zZ#({U{(J5{?Z7IhVaimrqb(1g&7S65WEK1==5@!@TYy#kav~=+#_rJmvTo3NLR$le z)&0Ac$)l;>%1tN|I<_wZ#tg%dDZ=5veH)>qm`lVzghXFPkc%Hq4g%N8q*r$*3ygaa z5@ddO7ebXJmm0}+U`N~7q*f+Z+XysRbo0Y%xMc``OQQiIJn*scoFqLiiJ7&JJ=J5LB?Z^ zg+jS3@u!->=75{Ii(H4~AA7zi_mHTjA#SX-CtAWy19KfuoenGx#+jfgSwg`;NnfFl z?t?i{kR)wZD}_6VeH{J6)yz%v!-1-S`jJ*BRT~ecryQ{!QP1O-fF8g_p-bZZz!r3@ zN|S#w{dUu-Oob2JsI+dd4I#9#)`mcGXg@YpO64Z#>lgW8z>LGKe%(2rpHzvp;o}{>NNH*?6B`14A>Uq zo3YVop>_ry5bT400QR{1`gZvTqc6z11qpa1^(47MU5S5@=ZUTOlL4nrf?DHFI! zkH?OUoq)4hG6i_jxg}(LBqO=bM8>u5{mBaDjb~=rAvEOSxM;tfAn;-F_Zb91PeNKPF zPpA#ytJ;Rt2)4I0UW@kL*Au3dLndyvUnqp|SB|AZzO@ZKH<&5yOt~d?l9Ty9{5CF% zALnQ-zYUacb@df0FW*#JKx z`!f;HY33EN7Ek5s*>B*n(gN|CrGH6JVXM+mpF_{FWrk6yg@#kh=+Uynb=bQ)yaK-K z`vN_-khI(}`&{ZBQBi(b+76wL|Bfe@{RmdX^%q(C;)L3CLp)3c!&cZ)e#Q6By2RlDTM0(2 zVcLsu!_vCu81V&pjC&MVBqxS$#-%a2(7y^sPsZ2Cy{LMuhECMy#Z8(vpev_lYHgsG zh(&Qq>GDi!g|ofdOZ_B+#B!u3+_|(8dKsD!R;0=83E45yl`7lE^J}?2-T^A*d)lJrjfDJt_DY9%75c?s7oet+ppw|9-5Y zp4*elP|2OLCm-R!z;WVRrSlXz8iysa`cf)<_av>#N26dyY>jQFp*%gbr!adm6JCXwN;_&VBUA6fG3;1uq< zZzI`CY%Te?zS_T3J;Fg1kaO+#$UTA8wzu9|V(k`fuvDqQIv76h}cnu!q*N zP%GQ9&>VSlP}bUlKcU+KN|*7VAKZPR{7-K#+J};bQ(^>W$DRec*lxS*7Oz({uJfFQ z%j`VVG&};&C$oiIJKcg0R1+5)d_rr+PbBd@)g5;Z%gVoI^i=B>w^ zJ|0$1VInr)x6r#p-IMsjdjU&M+k(aElcrfp8xx*BBYqZA*MaICja>Wsd}Gu7IklnJ zS|x8Ux>@K_s1JZC!=W~MrmkTbucrq3Wjv^Gti@Q$AByk>Lo4llv~wYhoJ|$uw`^-H zCj)yN-`NA?$&yClT%wO=p{9r0g{qZ(7ZaqZypil_OAU-O*T$@5AJOAX;TD*hSc<@h zP7E54Z(JeL>70-AGJrfNjueKgt;rUZbdKyS54$u9=do)b;U+&xj`LEm}mrpDW1Q-*p{C5}D>E#7lcoshi7B6F-* zi|>tB(nj09%Mw3G>FZm>pA@piDdy&8BeM-N=B*7>#%5C&)n8C0mls^Ma6Pl>U?5p+ZG=Y`^hyC4hdU(nM!(ckt zLCUo0Y-h@X-t%;DT-N&HU9d;!Z@#5ve|x@b?R*DPCP_z$No;#?AoGhFsBN>jLhHoA zfzsm1(g3MFe=O-a)`*-=_NQg4p|_1T+?NC-M6+m3d7^g=x&>{_E>;Hmvk?lj)kMil zmRPxQ@U(Kwe%W_LnI@kh>a(3>Clur@bPQHP*bcPwj@F4HI)5)|hQ*nGilU?p+c=B| zJ_=>{6Jv>w32cB_M-8|#lN)G6EoGAE1=I`2T=}$Zl<%l8KlnFpR{uiJ>G!6+fkN&~ zaJQpXA|C92a0nHl=f7*HDZrqZn%W-tn|hu4j%?n#64{FE0R&E#kDGOh*igm_91*WR*^;|D64)=WS$SC+depFJASCp6ZxCALUo*v^}4HgHc;Xz-NW#7KrB{6m$k5$JC!)>sdb^I+g+kTpUrY9V# zDh=UGWv|veutG}muF=`2Hl6O&5VtvcJ9+~v$#aRTp@6!_cSg=EKLhK8dXdoHD^bQj zmF{Fr;5T)3atFOHZH4MWVK5D!5JFfDdO^P6J1QM$mTDnW{0eNeG#(3A+eWpNGsNBE z7jUiT4S3IdC+MWwK}&7bI4KY#nG3tHKkOIFPX`)f%c+^=x0#JB=1b9D_F3qCx_|m~@;%+%`wX{1mAKmc5c&vl zPt|zV{=3#F>~LJ8Crex5ms~$JCol+2liMJl)oAXw)b-LAy-V^&o-b}mF_8pP)wKqz zr;HXyQ2ooZ0)LRr)FV;m;2gf2P(p2n7CZCymF1<0tCatAzUwwDUS6NDOKzUBg;_;5 z4CF&D>VUvN6Ofh|W11SAPwg$WKvS`;Za_~7wa{8|w`0p~>q{;|VX~vV)v&{C;tZv; z!GShKC*_!7E8dt#u_lFz+83u}qrI_xx3(eeh}JkJE&WI`1V<@9m~03QG`2sLje%BL zm!#80Go)_hFZ8X2*ZHS;+)nihvM@e_T2tIg=kX6g0pnR~4S0(04(s4PNbd}(?l#Ip z<1{4#j?9m8jX{qo^O7cqx|yy5cg-8w&O}fik%Ez%`4dt_C7<$K4X*EvDixBC%z@RGu|^4riK#Bn}y^`fnw7dZ7B~^71%obH;FPm zN}TMv!fhp%%Ki9mPzPZ+)D3=SQ?Z@U-#RGR3-u%UCuAthvpM-+;CE>_ zH&C1x^`7*($AS)T{ldpK&fO0DpWK&S;fsd;LazIJ2I0Tp zBgk(^C#0tD4pdE=1Fn~}&}V&qdDd4(fy{NKlh{kY>%{5pu@3pF+D2B1`^rx?hCc4S z&x|r1N5(7LjYoBg@-S?&=dPy$w3K+u48|||r+~-dyZ!q!)*{l`|!7b z`D}srGjPVRn~fLE+!nekBGM;({UDF31!^F1PA%x$F6f)5M?BLt!D@JfUgPbjy+^eUcX8^&!78iK~mgHx1w$Q?JC?{821P`UR~K zCz+l(D=G)EZ0lptq>R{VU^ zI5@{OIA7x4@fSUZed|pVso8Rn+m_tiH<)katr)MLP|P;z58a5>lXrrQlumZ=@#ru2 ze6%)RuAYRFrA%O|vD9S8>lLr{d+=r09uZ;wR;TeM7v!rCoySC}o~bbxO%fQpxVA1*a>`4ZZp&P{IdCSfUm^GAUK?Y-_q|;8^lG_GNP-p(?Zf# zTQ=a++AxJ&*Jdq&RuD*W;&Sw~(t@j#QcI}7-w9U|Z&0Y=0kaq*p?%s@Oh7q2LtaXPuNJa~ z{!4qtr|~_C_9k>u`e>Kv>ev-(!>*}{i&!i5v^EL7=BgC--PeWDOC0KAWrCJyZ)!VZ zYgjt%V7YX~y$tOnwdEG^H`JGUKf9FdL>;jWrdk9P`U}VTHfB`8_lO0_)4XH#rSxrT zo>n08vQL;KHH7xdf2Q#(Osvt{Kn{-_|d% zS5M0x%{LmeUx6#h^R}nchR& zu%_Owq0Ew1B#Qj4l$yJx)o|RFCkjjS{Xzp}j86JJDJ_%#p+eX|crM|@hWQVL0es5t zUFh(sYX2WRJ!n8S+t!GFER6$U134|d0rQ%!Lv(gLf`9mCgKxk|{yl-k ze8}uhNBL4=1y#$n5sdfm73?Wx0%MyStdZh3PDLu?$HBhIC!jY8i%cV>m0BGCA6+To zGX6lTZ3+n2@NUFexiU&8Z1Fb?wB?VK%s{&+HSu2L?P#Dtc8}4wGZX1cjxStCf3mHs zaVT?vlVKK)WJhp$-XVlp8%dQ(UzloIQ+|#&!@t9w03HEVe*xNwi3uEr_EM^MHFWYsI5nygdPVAa#%$p##cqiF;KgP)%JSW?C=tR#CJUV6y`4aTPNs zmbs7nyQ(#ayT}tLC^)SRVfM(gwAGBr*2MIk6F!_ur;1!(l^TWbzzE$L+?t!#*@s0KzBoI%6!X*!guOddW|KL@)4^XlcagJBg}H~NMJB* zR%6jMQju^}Gx%adZ5?xS_XdU@JVU;+M-koRoTNBQo<0qYR)G>SPo>8jO`qXf)Em5q zbjg|;z6e!?C&-yemHENJM{pBmCl#rTbuZD*8x1nYZ32$q|5313pC4*kEVZ_=+Gq@w1#kg#(IUkOb@%rT z_kn-fRYip(4Rss~Axx&}Y-1oG(;iP^&Q+}ve$sVBp11FePSkpZJW#evoo#L9v&ZVw zyX-aT-}Cyw&D4!RV^vkRYCYsCMe7CqE(RRH=it@t>5c^J8l9O40f5%n-%F;-YGI?` z{z4sfoAS&RP)3pkfyv4>a4nx~r_d4ZMeuxhZt#%zF|q|i1Vz3JPae zNokNaM<;~fqC>tHx@v93p64qf-__gbNCq%ZQVe@bxk;X$#aVbaol^2dZ311=7Sby9 zz37I&8dX5J=!^JD4kr&cd9f1&W(u=tuAHqqkI@v+g@sIWc!u&0y{(xV=v&N zp!(bqDbCghoulM2|ImlE`=PV;%k(n6+c(9(K=x?q*ks9+)KdN8@06m7lJh!TOUV## zJAUH3k&Db_G)}%Cj-{%UPYS#vcFDtl<$=07Hv^|1VE?#$<<4Z5Pu5~AgM3%f0pc6i zD4~y|symrHplwN-N&Ur6!d_bTBH5M!!MfCjk`%BTdBhcM%rtIPE4ue;uKMChc5 zRH=kv!D@xm!jayuHY-tTi-E>rrTk(HasI2d#3`w}ZM5B`E=X&xy$8CaANJ2cC#na% z3#_^mz&2S=+tyYijh~_`DZQvg+Ewea^fu@P>AE@|ZK3x>e%ro{E9CYgui!P-ZPw{* zMQ5eNsqz-nH13mF>X{PdrRS_Hk%uK}#UP^me$(RJ<7r+^vKB4`wPSYV;H5^AmHJLkW{9!1=0C*w6~HNI!}MDRNUCO!ul z_jI9?1!e9F(O6TwBDBKFpw)N^sG(M}G!~u*Xx)L_(w9O$abA!p&d$w_?aZ~{?-mZ0 zv$%!$G&@$WfuH_&!00IudM<$K~I@nK>yzW|!YEOxuCJ=i}IGts?BGMMPA3|+Cb z;}_wC__wbT(pU;x>&R~m2cmn()sQ>B{}GMYJl}1@M5dlMi66+R*c;DM)XY`(ZF2Wz zmN)1o?w7WiJi62FqRWNdZ@vSV{e*J>JJnF%^V&BnNx_nvUNQ{!U*ewVdCRqN zAFL!>(N)7=85zNU@{KWVHZ23|u%rDO_J`+RSS!j`@)xi&Q&5{XG5urWj?u*+nc|u z(F)%i<5psQ(mimg#VV{TDi-Dm(Lxn|SMgNtn>kptpPz`G-`d)mWPTxU&Wq*lmQK`d zKM%MwP*Lj5z!rOVy5BCGOmA03+RVb`wUqqggSv~Oq3`!{H#@uOQd=7QQ5k^!4qwLu z@B;a*W2}N2$C`R_e?krSo}v#H4|g?hF`cW9#~BHEm$1#47igP49p&JbtuOL#QoCW0 z?e6}2(Cw1@f$vgN$64Ns_R-4ltEDfAUhM7gN<1;RUEP9Cu+I}@qMGLRU()B!PyPSO z3)$t+YMqVnKkHlS+P;nCHe-!e)q;lh%djR$V`5l%RoSvYYWa_px8gtM?}8`!1?==T zqmh(apuVBQO7uL(AxqDeH}z!YHt15IrdG!PC0j(({z{>9t=iJHTe;W;HYhcjITYya zsqJY_sit|{C#5?zTwDP+Ld(!I_TO#&m8bfyzJa)dDEF@{YuL;TEX2B#Z`6lEANno0 zi944DVcn$vg0Hxia2moUCHd}q{g&!v1E97sIy}giA)hBth2|TF+VVH=+(jPgCOZ_IC|7tN`JalV+^1w-X*QX#?ud7BW$L$v*~VNH->1drN_)J>>x6%;5`X@GWCh)FX^cW2xds9 zTe(6haYz{8_o`@y<(pbdyx{I7b_tFQd{9(B%{JS)JbSlXqL#DIidizrqE{BsM{=$5 z4Qx~Bu-9oCio8~P0TJHo9AN7x9pn(@#pWMOy|VL~9^F8@hI;X7-Zp?W_fx(XJZ@SU zsD{nK4ne&4B>Kj-hmEA(FeQ$M{uK!uNElne)d~#7wua}KmWj*5jeK>{D(VSli&g-2 zQxvFNJkQhE9&8Y>kW%pfPe^YH0|~{pL)060Yd2OHVdh%zf;S2i@ycqUFOP2;JVCx! zlXSb@IH@6yz>mmYd|cdg(=B2JBnY_j%kLmx3#GxczM#fyokdLADNga6pa;=k$vW6O zYB;tl<}R?tdN)fmk*0sgGwcc8fVn~UlTB1xvNt$0szv|}@`#Tb zpG{Ly`oehEKXVGMPmR2w0O237TCF&Khx>3zc3NBfAg$Bd%EuiDs6Dk2fui8G zz`4}gVVql!728_CtHS@Nf7`ALPlUtLVXPrZqmzZf@(0xx$TWSkOir!pR+P!X{ecQ) zU2VPOAIJ`1G?W-zSa@6;;E17C*oLHB3XLg(WF$k8SJF?EecGm+vB9AVllU93$u96& z8I|P4^iLu?V)-7p{cM-Nz zy2sF0q;#Q3aXw}ZE>MOaV8aBp-kGKbq(rJA(SqKlB=9ZhI+*Gkfqx=jS|LYgc#+hL zf5raEj*|uvUtRM&YmqMIF3KfKk$NaNUkpmEZFivTeI?>gX|sI8KY}MA9_x#wVV1M`D_1u9#Jt8Ai3*JoLN5K)Qu>iZRk>I zED@djTI&n<;yGx$t+96uf1bQgbQiwhQ^ghZ(Z~hL8>u!mJ*_Fz*?`2i+i}6mbVBm^a@vk=26GI-Dyw4SU$!RL0rM^@y9Gn43EWPsSz@v zJd{scJ~JKR(n49dDVV|) zmTnH0hd1i2gTeIXHMgZX3Je=d{<7pF z3yPAJ*WqGng`V^Kp%c>!%>nU0tpNUMzALvu->O#%FMGFR-n35gzlt$CHgYf&((N!5 zJ)1g*UV%=KU!c>b5%L6RBgyEQ)Do>QsQbR<$L3b(K6-xX3S@Pt2zyB%ax4#4MciW5 z^5fVwe~;ok>W)`N_1lc|Qj<`A2c@ahAa%H92$JmG637Sx*lu`$c#sm&3;KzEGjL0O zR1^w&92|N$oLRWRp>Yp1r0~7gThB$h<=;vh8pmq@mK#vu29n=$M%hLyO*UEfi*?|K zd{bVzNHfMES$^N9i(YtnGo6!dIrNi~Y&#cy5R#YX>UI zusT#s!`>qAkVE=^-dyOqJq|Zer}52H5xSkoC`wjmxi>+Rp_kZPurL3yFbdyg%Q{%a zI-hN4y-~VQsx0L=E0pJm)1wACO4zySGv!60C}{z`$!-d7P91F@>$q;qNU0^sT2;a% zUQf?A4&ZI*(UKp&2&oO%H`vtC*p{kwrA9-3vZ<{;79<5^w%R}NMQ_)?_Y|P5?ZcV3 z+7Q-7mL&Z}90%W%e|C}WCseuhEbPGcxoQT zk%Q1!;al@2`!h@42Y!Vcmwktupo7b*(pBW~%_1Dj?Qs@^?RJpND8>+pk{XpoI|fll z)MwE9{q5DK;w|eT9R$eQmyU&(3TysN> z^)dVfSwIddJ#RZn-j`b{$5XuI3$O{7kiHVnwdd@wXNX|a(lPr4s#?-rIg{EzUMnGp zaTJ_+98eJ!`g5!1hSaMdF1v|yM%T5LEV{1(Vx#{$`u%fLApHrs>(^D=g zKMy~k?_nc|*C{}tc}Ob%#}=1~lf?8k#Yz0<;V9Y$Lewjr&mtu6#>wKERm z>E#!Nz6hrE4|KKBa9YU}-KxQ1Sq@EJhLPH9r*Hqql>QqxtFwJ!k_l9bOD9)BUhIwC z7I+Gc^wmZ>?~hTBmj2D%R&EP^`fKU*P_ch()6t=US`DPR5)(S&Sb}ze>f@cDsQo>u zUhtp6Y3c%XC)J8P&h54@-wkn@p<~3&lIptk_PUMt50~bLc9CzDSH{cU2aY95r!XCQ zk!onRv(yl%vhP1)y2q}}CnqCoZL{=e%x|fsO{J=)cPR5|+o1kwwH(WWSHNLx82YC4 zql)CX^a8D4>RfIvR}c;sTD3ad#Dio;|FmUlDdy7lmz(^1Qar$RKTH- z{djA=RUc0}p;b5;)+6cOT&kN|pD*Ai>m72gV&>A9QUhf`%J0F>wqfYyR0CNC>1`5pfEL-Rq^uSG6@tTX@Om&h zuz_7neMqTW+Cyuoy`uVSAL!GL*>bt%cl<{9fa4wBFZDb*QT$#S?Z5~>RZhgpJ&3)I z@9^G2M)zN&r!?03rDtWd4kt^E@HT~OoLA6C)V`FV)Y!awA;{6d_Fp1ORK<#b57;@U zMd>1qOIape6J~I~uW2A=_R15Al9mx(un+sUo5e!(~Hv%*pW zzzwz`*aT06Hd8C+hN|b(ok(45T1NL`Es5gxm|OCT-H)i=@K9zFF`vB>_Z@BuXUkW) z>!IzIn#3XP7F|(tp(D&4pbq>(c{O#!UcoyvP?z{Ou{+!!jCUJ|;rsHL8FKX$uoOu3 z+iMc5sXL|H54;I&2}J)-OW(ld^%HiuK?h(WT9;z8sy^{8YZz>&9R!C%qE@BjqYTuwL+E-{Ee6g{Qc@J< zGK@_|-EFBZMXzASY4RRolI$kZrnHdyBQ@ps!b95*>5F{Q^Njv0wGC1w{Sm#89vjyq zU_};iu-^GLlW%=vsVuap+C5uu_BGmB&jss}KG}o!*0b%Og6(`|{AZ;M|0;at-^xBQ zp|G33xA9K)Gz*?^)=)t{2>T^Fk^}Qe3(Y;XcKN?Cb=}K28JWXWvi37nMs&(POd}nP z%j3LTYbaS#d)@AQ3Vmth`BDBZq*p+7y5(nXyYE^;|G1h=N%T5zn){)vrR1VCpq1#3 z=_VaFY~pu#*W~U^%H6rmd&*rIo2$Pn?|^Tq6PWtG69kB*>KhNW@sxGLJuh~5LtFF5 z+zYHPf+zLF;C0V&6c4uW7<6I+j&+ethg06Nzg zd{=&no+)1J^HaSF15I!68G&-+81IwfPIiVPsV~wMq?vUVs1urDGgE~bs^=+=Mek@j zJVwCBvysqENht_|Hw?wVEoqDUU-Kj&ido~n%a+85Qbq6%@05kd9Qha=`E^{vb!V!CGlkm`*_eSdGd|0H}q3(EcfSOKhVqDKmWa*u7MqdNhA3L|B(O zQ<43qk=!^EHtt88;&%PQUrmN2i~7T^He**iu0f?Rbzv(#>TCIROe(|zz}xUg=R zuVuN2xS`zQ*YnMp;L`!hK>XS1*4@ZofFqI8GYNOpn^*n{JryuIS0hWjMk~ zM9x$e<($p$%oi9}TIzGFfw#r=Je88C`Ii$;>73gV?v~AnGLymfmSgxPL`%-heNK7> zSGJ7P_rcMgW&lU8jeQ=sYHwXgL2>g-+?vo-`I4}NTf%AXS$Ws6b;x3RIJ!t}hpn_+ zFWka5<7z3tlGEVWE$>%_D)^A(P!>w_=cEkVQ;1S-m7fa=!A-Zwf6X;ea_b2g>1 z=a34dQk>6H$!1I6ywt=K@D&h@-J5$0ZUL`_p8Gq(es!Abok#R7HO+HIcxPna09$fz zO@s0DT-JRp*%4je69q{A=3E@N&;y$MY$}k#Efs#b?FmmUt#h_mE&!{+!_ZY<6F9|m z%=^Xvi0R=xQ}nla1s~&IkYES%ts}*w28moHz2L`NBFNvOGsKE;P5y#+8-3gp>1@g^ zWNKg=+^49?`u6=4obG%c%jRybGsL1qAEP%Sn(!W-0$&5}0JrJlxX$>*Uaw9RzX z5ovgrXP_&4vz%+)tGr#zSNS2r?K2+ zeOr0oL_2=@BBi;~ZFmQ^QCn+^AdX^{sox37*F^puQKC9HQsY*uJ*;(t$6S$IedA%Z zmm`P#L#Sx=TDu^<@jZ~~pnmBKX=v&@UcH1FTu zOqc^328Up<&Q=Akn9`G@!WWs3&|=d-dLMTJ`);k|nPvzQyf}iY( zLE2+(4z|`|Fj&#Q)D&=`SU?`OOvPwGfZa+vtGWK zf+w)MN+a|m^<7U%?#8bQZ5`9N?MbURQd7whxKmsQ>!)Dhv;T+C(@W#>{k!(lu(T|8lt%pBsHl%EG>D^|Ymdp7?h9ikyYN z^mP$?7w>b5NdfE*bjr0KHk53jW`ZVjH9pgFoNA=aBqYg1Or^hb4+>|on!k=nTXuj) z`AlMjbj$Ze386Rf0g%hl2|s3>CH-yRgT;k<`^Zk7V(mEyZue{ki zh?_4j*In~H#bha&YGrAh)Cs={wGXc$ime3SGNuF94RTq|HSb0h?_I(klj~q@)tT%I zB?UiHR7qT`9-^8_PkeXaN|aZyXwT%Aw$1D#MU`)a*1&IEZMY_|6HLXk<#p28;x@tz zq@`nJ@UwIbcx_vPPn1ZvQETk}*VhuZac^xE;dn0?OFUtv6t6emhCugv+{SL z4$`=AJ40Ri4v@6n5O@!?NtiE}bD7FDQ#0#ep*Q%%H^?$i+Z(*$T?lOy|0-V0TJRG7 zn8yxT=^|+8RqD&p0B2?Ko6_@&lpj8ZULS?@>nS#I%3dYPut0 z6jTpEr2px5;AQd6a(F~IOnaCXtq|pe5F%2wati^b+U`q2$s;u;b+F{km=&1Cy;5Ie$#QQ?XS4~rUJ{{y z%=Jol3!e;C(BaPJz;lg6r$XDT&9DUj9&sYoh`+PvF6Bi`qyi3;sJ$KJuNjq$ ztM`9RB2aVu4qt}R51Nn>z-s51@bJV>{tfX>_<^xwv0aDTd%AcQI_&IJ?jb)ba!Ru& z@It9wd)>`K zDO?6tfvW-4N+^cf>xPJFdc&(@L0R$(wY_9<-ciX?P>$JbxhJ=EpE63;q3m3?mFt)hlg3zL z;oA)#VVZo~T~CL1Hzj?^^WD6u)N{f7#lI4{?GJHF{%yc)fke*wG$ZN{OV?VhgA40V!a z4P+43NrPR+y(H&KhG-1EDrMqMRJPtS*!br7OZPi*C`3`Q@B;#J^(mM`zcS9;wbDWZ zeR;oz<#ywL_?N>k3cLG1CFy-Ix)Wkkst^(4HSDzd8vYvW*WftXm$4Y8;d9l6F?HZ< zij;Y-o^Lu;SN>AaLFeo0UUc*c@Q?+_J`4gd_)O$aaTETBR)=3Jw-0P}IW3SqNv`S( zCf(C}uZOsG<^NC5$t;=&o?}U!DN+Sr0`#N~K$}p-wJ+(0bs~HjsFg>gFZW+356d^` zeB+0}XLh}-4Zfdvwudp!kOm2xN>cT^-~9wY>cme}C#ns|e?23)^?YrrAUYpSfh)?1 zaL{y#EqAPAyJE%I6nt2?DS1_Bl2AKstT!Gq&|NW^t4V13lx;njOBu9hT)O5;E->sz zdY4oMFN*a&qEt1`5ooh_p=H0XoAG8Km0t!ff~o-X@|%L602p}>CIAq(7qGb#nRiS( zxf|F_m}jk46jONsvP|kLbx3;5t>r2wbTkNt)cmC!$~p0I5b%AXH#E#)KgR1t zXt^PBCHzXAq1zt^%U%3e@Y|*-2b!Wqw1oWy1tC9pnfk5qSRO%+bK{|UKxJyIR8I9Z z-gf@au{Cj<@fqF#_DQ+EX^kdxR8%pPA-0#AU?cJA_|c>Z!I5Bn;aYABg9l9XyiBac zK1uvuG@bn(xz1Hwye-G11f7-R74tny_aeWiL(cGo9N$NGJ#h)UkGab^xERI1J3<=4 zzAilNNl4(C4Tbj;fBKEyUitTBPvJG^R$nXAYHMx(N#q2Z*8Fx}U+$9bBXJeA3C}b} z={ABwHbTzhKH({R5%)YP5?`*Lm4_o2b0%9|wA6fN44nTOv|_J~&q? z@-~28V3t)VI19k=N&jIi*HDR>?9XDmJI}CH4afL=c6-wl@TGORa0@6WH%oJP1lU7b zvqy?Mq4xY|?^Zg~ecv^c+g3nep~CZ2AN7`dI@B! zmHbl3?ZY$%e!=Z0`$=snr@3|@fhvxJ+;YqVllGhwX1wbEDVEzTo$2PLZ-8cj^{J|KI?qtT_wd^lE6*E5aNQE=F3zrp%A&un(Ii!_Zxnb?l?MPOG6gjWzC2a zq?yp-glF=4#|SjAdpz}s`|gVserK~wo>EWPj$9*GJ?yLaBl$b#F+7K6Q>Ua`$-9gD z0N=tU0Sd7G5~i=P4(b~SC=HoN-yo^K@D%tWu9AC^Z-C;&TI4(gEa^l1W7#b=F`}Ty-xgV%TrB71vj^GM@qj?}T+V#VCD!xVjaw=Wt zVNXjrrFLTeK${8sob{aP!R6H3WYBX?cLYteQF;o&B5kETwprj#wW5~pcog336Wkx9 zq2cPXC|$OhQi^p0%=&8d(OU2lQS+6!l-}>HX(JF=1!M zbnhgcT$bcrq|?l^sEm}O)O3use5USN+WV+hwUlzcF47A@7~?IOD1$BMs3AuBYn~;%mO1J>}YN8Gxk&N8);hBi#|4r&(QYZ}VQ* zk3;)dH1U$-o98=skL{k@pvVN{;>;K$UY20ubD58}i-y|nDP|Sey1NRs!}HvhFv1c3l|fE zP0OQq(5v~G*mJd&A&=^-Z&$K_i&Dk#*|=0;iu?&(rqvT?C^Mw}%$9Zb-1_dd#-F(W zQbl(<1i6>+OZcoY&d@0s@1DjT1iJWhu>bL6q594~*80wJ%mYocT0BFHRG^bo=C37{ zU{y`S^&4p^p3WKBs=x|x*}(t*yHs*;d#=K*^)yu39Q1O$@tqGHM2K)8Z6UpiDH9>j+_5@0eW3 zo@}yymv6cVa|d`d`CWIwn)(S_Z_JfhA36%%C3_{76pl9pKz;7nXqIL2+{ym|L9$Z-mC$+NME zTr%ERUXP-|ZD1q(CX;R$ji<|Y%M9~eqP=M4RxwA(w&DUq6Zm~mTV_3)WU0qbBRYDr z{r9mcNIUKiV!U>a*S+t7?!H1upk+aC9)VTV2avvfFF(ch!x-kUvj<%t{|GwB z->nl-GgHryWtooD1S37|(y#Loy75u33j;`KjqiTm9Lz~F#d8yS$o0k7;S`Gytf0#p z7m6FS$Lb0EV4|J7%yp+KBrd?KLKbCMyr+=&y>^7z3Pc{3i$4hekN8VCnD8sLJG%uL zO|{1E2rsaWL^im>Qkmw}HT*mE84zhoM5dRlG1;`w+$pi8tAF4G{~nCwB8`6sZm?l% z9JJKD$~+4QKoj7*mZ@N}?{{Bm{$Vzcy&|6g_WKAdns2`GJe(&Vk@`Wum|JXKUPl0E z+7pnt>5P|q!QS>7@YTLC>>c3*{-!X;;%sv(H^?tDn{#)BN!NAeJFpx{H$)^=b|iT& zz-uj=Yz}r%A!;1vPht~n!Tj;Qxk=+8n-qzi3pdnW`!7PEyu#m(=nG6Q|38Y(!oR7r z4a2xQr9i2qZRB{4CaIyr-5rL@aCdhbQoP>Camz`XLh%lU4j2Q54;Ze){X5@Z(Effo zIeFjbx$o=pW1Schk43NBU2tc*>E_|`-_9*!!uF2f3hIQqf^Gzi@GbZJmMj7J_(`#{Cd(Y*$_w?O!%`asY zYpb_5OTuh*;mQdPwzyGm+Yc6HXR9Z;e|T8#DXuiGTRupaxLUgoH~tdWh7C8^4U7^d za*J~Y>Y%r`e@KDbT8Nbj8DveVt-V>^CrKp&DwSU^@^j*6HQslZ^Qw@LP0SG+OP)lY zTnQHmiO!>m)6h(&cOsZ@#oGw*{yj!k@Y zGK!z|SKA~eoy~Um?&je_86k(y;%sm=;fDR1KSpW7|D9LX(if=#t&?|wlhD_kf}M$f z;I&FVewsI+>`Q2;M0>mMc>pBAM??Ye(5uudqMm$?x|nr9-UhW3H+r)eYhjYVjWEbk z9*;|`!!$OWKwoQG!8u#?Kzd*iTF-lfu{b-)6Y%y>JT%ef~9Myp3&XjKa5nSJ?7;u|iF zGQGAbh_p$?)VX*W`e_Jsm*R0`IcgTYmZ1%(`DPEq4Rl^7GhU^RITz;ndy3tVlegil05q$4xrS8hj5PzU4 zaHk>;?<{}9Yf;tEi0!Q&&yS5*#Ch01_C2m)@^=Eqwj`ZICve@3t0sXlmY%O>($B?{ zp?l(1ib`z)W)feFJ#ansDt*uS7C(X2aK?s~L7(FWQx)R3C1t|Bi^)((Z69n}^Z~d7 zDMhu&%7zcGU~+~Q(gTUB(mhXeOBQE7K?YBc#v%0>T%&lNbc%l>%C`TErb%n%liUZL z*Z)ws=iu4J(L1-m{!|aO0;?r<7t-Mh#AL&qYskgGGJY~VJz>4nO3zMi;609$k(1cY zU^AVew^gIV$Y?)`0>y`!dEok5>!m)<-OOC$KcDHWS_|yec}9Gv`u`39yBwKB64i=S*@Abt#4jfNS_r8 zMP0G-M~gQx@f^WN@;l;xsA);b#5UV_grimMu&rRz%(&LYw0ttuP-x?yC9gwAgw_PR zvw}ZUc`OeDo2xJM6XY~U_rzp+q_fVx>f|bDf&Py*oqY{ohtDK5r^k8A@g>3K_)a4P z9M%_-zXa;aw~eOMeQhjv6lCa^O1H#?W}&U!J*)*;@br{{%3}Bq9!EUX zzaZs2yU;4eT!!FI*mQOck`+F$whv{(FUfbIKbYqFAI=}>YAQkfH{9C&(A}z_a%c-( zhi+DXf@&&6$l0}?*cZq5HxyKnPva_k$NXg<>DT>t2 z^>2ac0toD&XL$0V`zg1mTkfxLfBys1sXIjKhu0A-FIe5tbuKLJN4b(#4UF1yP%T+1f`WeWF@Js*JTjw(;EyZ(&=7=ECm8jp9LY zk@KLn90n&I@jkXjliR?uv<)fmi>TE!1ICTJzV+ID$HRi3M6=q3eiJu}W4S*)KDkZ7 z0DlE=FWrkKIbG=DOHF)($hPH{edxIGV`R9PSnvi*r*9|kl15W^*;sutI);6jUjgcx zzuiA0`!IC_eoisaD`E+H%sYcn=?A;>Ha5l>8CpC4X z0uRLU@QCPl*$eQBK}_6Y|EiwG>%k>EQ@4cj#yENwM04x4YQ8U`2XOOFX%l*tLle^Q zD)ndJ8QOVnHxR^Li`rg$@U2v)NkzIv$v3$s%gah^iq57zSwXij&C}WUG{7DJb z7yE*vshda{$!sBo;tC2?x@2nZWKLrjoAc%Nfxqc@ID&k`7K2@IInV$d2hKvB$+&+( z`tRy}riOOWT?RZ_{7zJr6{wZTEU0Hk^lR#;4<;#!lw{3#6qi6nfI-oY#r6`*sq)3g5AJsiaJj?U~NlC-eO^0(oFrik9ua|2{_XIKWB)Kib0>`}N!E;nPl!jmM((Gmq z5DT4wm`&VF!-)+Ce$b=!?Qyk<=6YYXiE~@-c(z3Vg?i=M@Q^93@yYXfm$Zu@xLx_v z*}*hg*a)52G7(wV_%FblXGF${DEl3nW72)kZM*9($1O(M14~>RxH-rHXb#w(i*>#B z?lP&j8y#-`F3~Dd&A6b}fkvr&G}Ft1#3KX1+q8n!GWRv-{UANfu|e8QR90jGL`un9 z>KA$y2sNtVd0H?pQAW#vEu?0FU%hvQuC|KeJN~fHm6(8U1CH3Hh4npQ=}7Emdl57~ zKqQ-_?xc6MJbVwXb?jBM7gtYb?R9Ol3sIyO*n$J&-#dQUJ0Pj7>Daj|91{^1DH;jp zNTuF$wVuFx0ij^6xCXJZpLr%QL;Z=p;~QFVIw=|Bg_qgib%g`sEe$X{*C-ZXJ`}gZo7k z?t*x2nf_FMI~%+EFx|!cRtjWKe{=O57zXnI9!=xYZLK+f;b8oljWT~bJNn7+!A%K# zo1_%ziGK!AF4@M;;68faLJJBS0t0~!j{uJX#FC37Lp@B9B0oOrP!|lgN9wfW+ST^1L6EgEJz`j$k_kWGxK_ z!U+xoe+>nI?~0XcZuAfStkeOtir?daaF8~Ucf>NJEIcR@?Q$UX!`bK`PO7K| zJ`Ss|W$}|du>=EO64O0ibTPSeU)B6s=pSiyXbwq~;^Yg+IMQn-cGs(|9W$j8^h&}u zp+;~cT*((9_D1UC6+`EN-3^i5l5(o!(5;y5z;R4SR!kRo*`4+_WM+Rm?=)(6lx9U>qn{8+%S1wXgk?Of9=~6Rh3z;)+y>>9P~VrYJ}5*bn$B> zMrfw2a!!ZFlDOVdN^|h?94GCWQT#xQLrRzwa-LS+rs`7@1n(W6em`uZ5y@&IgXIWt@hS~)#=JWGyi|tIS8KW>aI;LI-~FP zL~Et#bBY+XD0FQ1)6i(N5_((7%WIZd6+cwmQEPzzK^y@;BR1p*zS;S4dj#mC-jU+z zdg2)II(7o>PgmPBggdmEkybWMFjMyzF)XnKT!2L*kJv+KlCQ5h6D(@fPp^R-_kZx7 z3Qn(onE;NJ1mXtN-5-#edlaaSB@(v&um_$ggyy!55y2PSpzgm6T~iJ{ak zE{{Qozxeg;KYU?K3T{@QylIeWTn#FK^3na=eAI7xMqVZO^M`6#TCB{e z>##b&dugYziu~Q&e(!*e@NSL|^vb&_RH}bV*zE%Xl+>2GZ2wEFfGkqcI!F1mJT$wZ zwLw%Dll}1sFST*nQJ74{fFkZ^YAIHkdg$tD>$A6$54Kcy-V@t;>!52xJ;@rXGp3{I z{hloSr+lTm;M?>Dcv+zlzY#yq9#&#ZqCEy`rlF@E9fPMiNcu0arBp|{A9%+8MAh=1 z@C_H98W-#yuTlT7n^LCI*_sV)VCDiOxGZ{v?Fz4F&*A^Fr4Ew+NUY_}3BTNJ?;7i+ zgk!cV3MZrk4ZT7C@wn=uN!nHab3DcCB>aJO)!JqMB{dElB+`N5QIF8>-j4P|Tpzre z@RhG>9f|LOXRrt9pyCp$s;%Ia_H-$QQxap*l7@S;KG$QE`M@>$mguwf!aflNtjV#* z)1-6t7BDl#tKL?z7W4nAq7KiiYjD61Yk6_I`o`=PxW(FLTI3x1NbQ4{qFL9Dm5P4+p68^T5wssj`5wE zEu}gi2G3~yjcNF0?6xogb`n*?W3A7aDrAS?ZSfjgLQf1?vj9khYptJ$taj8>)>0R- z!=&V_ZvHkmw|5GjCMN1LLsx90&=6C;+Cl$e-;=<Sm z+`o{*pZf0#7l}a9Bdj&F(D#-rk6yEs4=mt*RsXcve26wBKalhtW7Uu9rX)-%Q2GK_ zl8;5z!)^$(6JwEAd=A?Z5%@*EE3y-n{JTNARoKDe-32{5+X@XkYtplwI*6_E=>mU0ZPVk@d zw<}zeAY@a?uw}A%Grk??6f4QE;I_&T|MKLw0s@ZCn;&QyogvqaJC-Qwy}U207Kz*T z4uoRFzwIBgz7}%UTfT}!S9OaoShTBPgy|Yz;7ipON#}?w>~(&ubt`1s`3HX;sl?mt z`MXP4|Y+TiHpJZI3}xB_54iyNa9bnjsW#T?fWLC<)cO3yb7}g09t1C=XFCKLWRihro-(<@M~Vb0L<~W*S>UiN#11Wy6~^bTCn5=viR76 zIhlcU+iBswaE$w&ecjF$w1jn0ljnPvB_4;*vt7XT&=gQX7W>NvdL!@?#^Lw|4I zPyT;6J1|L}4&?%O#Rb|a%doskQYYFV7GvYdna)i{`=mH=S>{7yyV%>iiQJQP#C3!h zluhyo)Q(*Y23*6)_IOo#GVzK%s2)PMv;Vl$S&K0Yd>5Kj_(1HE@6=;l+2k1|+EFnv zid;h4@~z1&kf8Rb+ztJc+zdr|#}KEu6fwm=#<^Eo1%CH8vHvHgiY{+kv=?9!_;6jS zXSz@3BfGd3!QN8sNV4x5^4@xzJ}>=javvKD1EKv=O--@lQU`($93>hOjf0cKEbLF0 z8<>yyf*Zg`a%bvU!_N2u%fBeBO@$xBeTbjylr^c7XF?T2P1GUUqHu3yCNMHI4ezB{ z;0&6 zI#=TmveA=Cymxd|e=xW4qu~eKdGN8)U-<#=PVOE&&qPo&D?q)K=KCPN4tub8vU%cA z)dhZY_afa&(wss20%uivvHW&JJ8r5|jwDI#j8EcI>5F^?xMx(-#<4H?-ufMRA~;C; zO)8{GFwIuWBuPFDXOJn#V6H10lrZ!hlx7)C-)i!KEl@i;hXmV54T87uzKw^=XSMhA z9l4s&8oNVImfmX(wMwr2zEZuBh7|d+v@Of|{^)3^53xeqtERBmr6O#Q=cRF2oeBiq zJ&Cib-At*MEnFuzhg-^du7hfUYYUsp_6v=VwM#AeUHfoPOV?s)3hGr(gb&%K(T`vv z1`VwOI@&8})uez5_?knSRNw5RR05NXNLckfM)oQ(Ik5LUenMJTMMO@~Pvm2G$GExL zM9*1ti#dteV;aOio0cg@uq|EF-ZADbG$Lpf_sYGQ!Ag6)4Y-uqkJPn25I$p8d1#tR zpa7w$WIb0AwJu6jpb)9gEDJ5;rYj%unTkLRXO8j>giY9dZ6DDd8DYK&BkXap6feP= z;xEA)Tx)n9brbkU@WL;552X-gxTl6^ym8Fe82ifhVv9E|4*g5saEOtR1$Q%J0 z0tnv*Y!Mu#wKI~i7Wg9LL()CD6{*P{8Vhy|#(1i`TH9tC6ME+kvf|LW1O-AtuEYnrHjM;EbkwI;qQ<^LNo`6My_XrizWT;Z}K^W`?q2fO})zhN)2s>!2CSo{b0 zk6r8;u-hBV6|2gf6_dW0R9{=BG{El3R}V}gUTQoMXWOb4VgPAFTQN`VF?y7HlUNfyZ(M5f1G=Q~OpG#Ctsfbc6}A^h zIrwaKaDzob++PL%XfNfKz;&D?%cFj~JAsr|B)aisXcKX1xUVl(d$H@SuVJBIoNZOG ziP&o!l28X5iuYl+f@-*aXpVkS=#4BEfAXbpx^n_j-QFolldQl8{1JQ^1LJ0x7Qouj zTd+564@@wpg9gCF{U+Te@A%zrJi?V@NSH#7NGg>5gg zmUe-yCJBC?wRR|puIOLm_y{izZMU~p{WM18fDybb@f$oFU4` z!{%jeBi{sC%ipBtLaMrzI%=Q6uH$`rRr@&kKk=;VSdb=<>z{~H+ZbOHpeHa=suXUN zy$p|rzk+{>?Fm*~1TPoMTPIPH_zj#>SOKdA65fhJgl%D(t$bP`QfhzKI2v6oHdO6E z2Wlm8O>7$XnIq(gmy|l7*CaY`JkS{2>-ZworEzgDzc74DO7NYCF%vb(U6GpVrfh5W z_<{~T6mRQTu6U_m$RT8UVN~NRFomr?Gr8kf}5WTfh#wP_M&lJ|U z3s+0D9l^>U_;cW`P6+YM+ymZK-=1Bj_s96O*La92_9svW`*UYpOPDiv3w^PJ~} zjrkv?Gq%>mMr9%J2T-z)*S?}xG)%c>CfnBAcLrKxU!`oZowkL1!`xmv3oV>(!PQZ{^&~Q4}-$1^c$g2kx7gHuMgzW4eiC5x=(hZ6Sg%+y) z17Cx+xVj9FwTt{GE~n2sd&0B8KI~%^+OrYf=!~`Ffz232=)zb08+Xo`?e1!u0WBfB z*n7&OfPqR!U(JR?ool2_`3kXwh=y*Z8o6XijY+cFy&>ksGBj)}2r14E#9w(gB^ zvA3gAQF?xTu9$s~4nmeEUjY(`S>R1j3{66^9Xr`DilfZ??BL`I^6pUlYHA?R{R`jLmD6VO}+I6zZ(CU{A6`wd!CLF+_YP zr2`rUsy!Pow^MmHplGIia+$zHevqCdx%X}@7 zb5>}4uka5%Q*05a0ia!w1UbIYqMozvZ#6HX|M*a_=}un$WUWD za7+ARHhi{<{Y=(rU$`Z9SXvA`;nx703;O4=^dH!aUB%cF1kCSiS`}o6{74xZc^fr2?S7Wro~Ux8-aKY*bHEaqfZOJbVoqQ{)$m1ES4u z8YwG^GwDm{8qZn4P!Fn~i1YZI&{rry}t z8hHc7qJtur$qhyW;*F~=Wn(^>ocXq?1C(3hVrgG!1QSO)^|eHk;wowmJHf;hj0o{; zd6ngT#!S7Z)R9h$Tt{Lf>lxMm8@)H!Jih`u0E5Gm=|A~qMh&nQIU@2e_5dr^%(K16 zN3=ki2$fSHz=JQ`KO6A{=6PB%&!`uH^^V5aG;B`j8K_C|&P-oJ-F zv*HZ=nc5ItWSLo%6#QCUy&%UMwxE2k;pHi+-N0E)%QIAZ%iyW5zHD`i{)C2fWiT@cno{QK_ zTYy=wgrH&KbFoPY!>kl1YR|cTcqe58*nt=i9>vGI@>FZ$L;h!c;Xb>%DAXeBl^m}e zMaPEc>Fd}wN(E{Tw5%(Emsmj}Pv~I>j*B*7UxCQOPlq#Z;WIXlAV%YdK_-6!hio1%XLC#n3BI-tv zFq3UN$pnBOY?KZoo>nR$qwH4)DW+lZ0VoGLnbx5oI=gAcft2d0ikUVINR1w}DniQGLe?WU_k}scI zM_!V3U#7{uJ*icos{jp+v8i!nb<1xl+2k5wx{-wc5}L!zgUpFJ+Aj1=TBpLEMLI#& z!xp%coMFpK@frS)6qPa3c;lFnKpPFU@A`V}SvKta+0(_O;HPUfs2*lx!sVGQua>9c z?}Hpwf-QEZ5xe|p+Epq*$Yim@Dc^zIjK|@XS7W8gx0s7s&D6Ik4?|b{r|^mL0`VN! zOx-~L4D?QDqnFUjQW}uk=&#-l;^h73WIk9?e`7K-Y~Jm}N;taMC)ZIMntbXXlE;G+ z4T0O@cc7wiRNZNAtsdzYupyxgbicZjxf$3;R~5}R3wqhOD}&*lNEN_=^vyUczaUp= zZQ+#QTVOC1!Q8&))CcQ2-+Ev>yvv-Nl{0#w-H1iT6{LvoOX|Mml%aaGMebzRiNtmW z#?%E;;;u^Xxf%4k1Gk;u0^L$8mqevE!UnoJF~5iB7K6>af>#A z&Pl}>lc_H_nfmB=?QHYb`V&WG`jnALc0rrCVR>PsD<6|u$B4}+3O9qA=`oNcG!f`w zGH$vlqfDQ8N#tj#k~7---1dlSSu#u9=_usq;-lp=dwOGT$f;GqUlE;|9PKu|d+#be zs@Xx+!25`;6&G58ti<-s-hre*aqueWH`M&LpwFazIHmB zb9n~ej$Fo5?01P_fnO1~5b!jDcW8+`CCwIZP>$r9+MgylsjPbNKr!(qNT|Kdta&T7 zHdDxxCHA~K43*Xh{W*Q7r@!lk00v8xF8mB77r#q(f_<(LXj8qq=XJpmHZ7Qdrpp9jt}$umFZwL&;Eoe zRt_H_93pDFYJ*4E3ktOJc;QuGpjd*khS~oWtd^e0w6HnlR+rFIh#f$G{D;{+{>1)+ z6jJF)6mu3f=$rOY*IjFs)V&ztj9%Of-waD2zu@l6kM03_doc8yOSpXbCG@!90yWjCEm6;)%`o*t0 z4rVsDk4HwxLgA_GGGdv;-|(US$x<1jGZD5k?2Xt&V2&8eTxMq>3(@MVCxQ2UE2yw0 zyyrAJTxjfdSZ8}jsIwh?nR8iX^@VuAIhwf3Z{r#XtgnMQ$6uMg_vjpNt#}$9#cO`&4J(08MgO%@BJgBDIyH7 zW3b48gvm+EoOiJp?^7jTS#LWf{$xw%TZp)CGU>;UsRq*DqEp-b+o?9T5@e*F!=|Sn zQD#Acoi&QT?J3kOVBgfoY*GA0f~2CgOuPv&%A5wox|*ru z)R-`3+7~YoKyecN3pHCj;){}|NF7WL;1N4){jK<%b{?9lMk)8SYedT|Lqt%-f`}i~ zvSbCmwFKLvon7T2s-_JGpCl~_8tNx_F_0(>lW&u|)l>xV4}(@p8-w}06TPkFDsgN# z*Y`jU{Oh&yFZLs&5mZuPm%l{vN zNGZnTJf>tI^NaR6al;xCrSfjD zmGv_xn}pysKpWqzq+MpqWK`h0-VtmHROO5Emr|1gGt9Tm&+wf5x5@wSxNXUw7U_@L zv<&W$w}v(*DT^FAg5@(9mw&X0>}XB5#kQk0;EHT3X7IJoXCCgr+4c0R9 z+}7Hr32tOFKZ_sDy6~yKt_glTox?;2Fdn%SR~_Jm0sJxBP<|q`*mBTv!M>HB#!>bY z{1T~MLAgecfGY8K{2#>*!XkLAtpHn_@J_hN0a}(lkLzsj2GL?aU@X;NtiX?QOs3Wn zm%PoLxeXb7JQ>~_ZJRDM)K(Lhd4TrHZLKYxu=F=jnQseB;2U`NoBr|nbtYkuvt8p0 zj=g+4b!A~K>IO7{isRj$5#C1G<;g6`nVo1`$v*`}d8sX!Q$y;i*UaC~rpS#cG6e)y z;e*Mcq0D5T@HuvDxFYXkC(vgh)%{1*&*}@cshLh&Y)tcPpqmqZCX2jK*gW{nIhCK6 zk|!32dLX-te7-vBUPl|_uB#ROS|5az0XNfUX%?ar!#lq{{kP$IsuV; z&+fr@Dcu8^yT&;-$w$Td{4T70GFG&k^r$&hKVm%!OAif`Q(J70|I18$X1PWv6R6*@ zS#mifU1<@Fg2$-Gss7Rp+QMuzV5J?p)ZPC*fFpxx*7R6#i!lrq_$}pP#SUQ1x$1WSOl<7(^O@x<- zq=<4&F=ttFMe-KW>HJ2wQZn^M!I7Rd+)(4AzA}=8&$ez8 zuVGGjJvBGjL!ZHhl)1#0l(pfOdR1_7N+Ch$e{hYA>+C%352S|L!c!*r$unGt5jqt4 zg^kK$X=2Iplu|dRZoq$0QX|!&ct*s=S%cv`Bo6wdPn4VMgG3p1NjuR&(irfk(C$ce z{}J?~O69G|dqO106&-(LkC^IeB_h{O2Ro&nan{^1F{K-sEA%!R6J+Q+^BAxfJcrL1 zqoh=|jr)sMo{YzSbq~UlE$am<(OZqm_!?XZG>nfnD$CKq06)Lxg|DBftP;cP*EzZsLV)Vq_aDc7HY4#BLwk} z^;h)Qv?y&pp^5LHVZmk46Z4(BGx&@_!R|;E`6B#>aa@B#XVE{M;|(iVqU|PLN%{0g zy?)5zdCQ!$oi!@Br;$PXE|pZDxE>rBj|XHU?bZHKO_wnf+%$c3|F=W2k%qfBlJ1d)7eTFnh(%Uivs<7r~>&Kedq2dJuA-iNoghenx^AI z(c}*H7WG%~5StAh@hsIEL*<}5p3*$92IN)dI~d5;` zS`Z`U4D}lpYt)d}xw=9752i@fnaq?v?6S0eo?ksZBs0aXE#_9s4T)LgUDQfn-F;T= zd5~vgf=7Jgke%o?&JFf}`bhv@wQwO{ ziyM~k+}Q+K$?HWJzgTS$^U{x)>F=qa4-cRzz(670p$_XfC?jUY4AOzDIt|?#oQ^b;Wur*W)VY)=;mIALO3)UxBCm zCGZtiUCC6Z*nYS{dyky1{>$P$;$Qmwo~G<%_JO@yo+0HZMide1M5h-_b#y@kx*smD zX49XYMZ1pRIKB^QK%PR}EK*v@Q60?H>ZLEf=ByZ;ek9WLyj=&T81%Kszp;*eUgeyQ>SKe$-o;0ETjZ zAvW(jcyHEq?l3kN8K+G~8v`HXTVV4{{$nNUFT@X=7OUs~#jleW1TISsZ;1-!MWdwU zc+ORG1KCHIV5u4U%C`a&lHZy>>{iHN`CUBNNJz-=4|lc)m#UrV0C|KOl=aL$!g0?L zOJ4O|CvFE0N~@7%?_03|TBdsOnesT~p}h~hOr2SHhHCA5E&oSkqP3WL!g1v%bBq2k zFxGn)Z|2)ZluLw_YUEj4x^%;z!v1hR7r*)93#Y1Qy)UGw!Z*-TWNGmnu7Tc(x+s4^ zG2e9ENzcQV0F{OA{8MIQcnMrn9iq=O?AR~p4raG_o!W%VRdSrOqH9`T5V`0Otwm^r z+8rJ((9QyJabcQz!ruq0;l3Ujo3zPxmslY*6kcn4i|!-I(gEkaSbzn9*C3yu} z#TF*+C*)A);g)c&KB&pS^hI(nGvQFz^(nBfc(MF0)B=3Lfb46e96!Fs`|yw2-HW`) z&(L9MV$l?38&n(lz;u#1qDg!rJ%e4TTWHQ-JD*Agkv8aKXGi=|aaGGu{Smr4b-CHh zI!wlzN&T+mrH1iHoHE(DY`|Hq`BAdx{c9O*9>C!8VN0&+>@Vg_pZ9cOSjaqWE3y>`p8K{KrU--70d!ATVDp9>R;e>PlzweZ?qnf2b_wpJB^95xw`5jPa~))qL^*a^gO^@+8>)rflx z&V$O+uC0l3`|PU;xn+I)k+-Oiel$IcuEI3t2@U%I!1Ftrnu3xYGQsoPa*F z{wZu#d7BsLN*r4CoGnHjgiX4OhYJ684su75t~gc_jzmpt3bm3>u%mp9%&c><^f!46 zU+KIewGS@kMHEat0j$Ch%8H$|WwG$hoCA2&~Qhya@TU(o_jOAQ;_da4~BNCYLPPt2J^<{zZ9N@M)3WTX6$Z2 z&O%S7HSrHJpQ+ZlMBy3h)8trbplWlraoqHsQim1HD_9K=rq`pT*ka_FSVqhDRs>yn z0q70Z!`{fsvgNU(QWjE$KLL3o7om~9wWh!Fr@&)BBF3X%5-k2C;*2yXU$$kUbF6*s zCzNo(skq6~5@-PE+}j5(;db(Irl~9=r(*t1Yg3rFzuMD9mBg^6fbE3OuCtBXzztLH z!Sk*8_RdH)e;E49oNF}U%6rRGSAe$cN+-nk#!|^)d1tH}#T?~3eo;J6c2%!puaTY7 zeqfBi0WYktvlq}qomU&r#O8nzf2q|K7{PC9c#^J+ETXP(A@|Ar>jgc@e8IZAKd^}qiQ_C+>DA^fHPJVOxM_Z?8Ds+3LtDablzzu@AvD5~$JG{;omz(l zxkW~XJfOG|R~@xD{&eT6Wz8h#qriRil*k%2uq8@1z0ypjjK|UNc!eT!Qj_dSgdS>w z{HuRux*-S5sdW^7)98zwhx^cK?g8IF@XF#f;a0k0Y>&(W8=_)l3{_(EAlkU^P#Ck7 z?4@o`9U@FK$!~bLHM50!s=dZn75}CraXDf$zUeR&t76HGA{SE#{;DkbN0hhRo6QltePB_>Kf(Gqsnhi03srZwyVjhBh`e!`tMqW?GGrYL@)Pg!p0VS@U+c zUbTR~5WPVHpKERy*4ox`YtfDS%Bjyo=kq5>wUkV3V3-J=Vw*|72A|05pnsIDS}&#& z(lx##Jr^stuRXQJWLot0{>BH)NpisY&NV4vf|wS3NbC;%=3imlqJA-1>h(h(nVnii z5rJngja5A~(rB8JEp-Xq4%R6?gU$El$Pb+b@L;N%aYgx*4azA*FvW-{dK6-KOq-cr zpWPlL*rW1V{EARJ%nJy29htSCOC4LGC-wL5Y>+op@)lMn0MYCGMy4Drph^DA<~Q;VkdDj2{gQ4f<$}_?yfI zN6I~+@yzt9uT6&O$mBFvU6Yzwkm?K72wcW*EAxaqU_fon)Ph&%Hx8D?cX*x?SjzR# zVdgbNijqMUy<$E^+9w9#>GGg`%l&oW=u}&9wD*4$o#TTWT_1+G?bdF$T<->xWUM5M z+O}=mw#_wzNixnvi`w?nc5C}-pW5%df57gS$;|nkbME`PzFATe^YBP*Z?*Gc_I8pE z)W9pFu0qWsmj5}t*ORm{jk?->+zeQjEVl( z+GGxwW!Gf1iEpa(f#bnB#`fFLCz)bA)ySiV`f?`I74r>EJ^p}ZTFha00=86mx5|Ut z_(`4xIbF?qSB_jyoXKj%-lS3(C5{!oVOzQB!CDy3E)X@QD#|rCO#cO~2l}$V$S)Sz z^)pGmCA9_^uX~>O*WHrSVr}tQ*orUAJ;fcT+KBN`iefgs1w29msTb|SlAs~4AU)kv z3f+{Na37^Tj$TdP!2?|tv^CNm@&KCbDB#}OiVc+7(v)4Tg7NGzZcd}^g(IOjKHm_H z?nHEPDn}f>hbDPO=}rg7`<{#QUCZ;rox?nh^DCmKs?ODHOLK^o9EZ?q`twk}Nx~+B z3qhWFOU}<%jX~lkCN-av`rymN9>A)|Fm8(R1GH4=BEFA}wM6P8?1Jm5ry@R^>{rmj zb+2HQVPE1jzM?ovm*OiUY=uL0f1sP5Tfk*uJ$V{j;OT&FgjRtUa8A8%xFRGFPSZMa zeBKb;2e--Fj>S1&as;#;ogZL>f*05f}!82HtcqY-t=s}EMizFJ7-M8RHrhJu#a5b+-^a{A2 zJWf2^Bpq3TUS|AGv!gs$NzEMg5t60Pwt(rEeKAvx+nP1s(@PsAl8&yBj!E#?^);cf z+$fE+_VAb*b^@7hJT4w3Zeh=GIUX`b$L)bXqYs!R*f6dUr-0QQ<%FGvg(8QY zuLT)?N`4<4kJ=`V!t28q$zE<${DaNq+Qzg@i$MwJb+k&sHDNH8<@(NcPQU0{1cjI< zwgj6Xa<=7MnLWx$fpfW6o&Ix!1}Z`u+?-lzAvVgNG4ov z5b6nz^n3=+u_KTnd^P$4{F>PeZv?KO;p!dDVpDljC3%v5c8XSPO-+(Z=p^0G5X9Z| zZ2-E^m7LM0LHrumFMpYCPC(Su)K25y_&>@!wdsig%EH0;9!GUD#gi_##!tFOJE|we zHbGGrd;pCs>SX#Lu7=!6@7M_J77-#;qal7Ts*TSVt>IRnBe?~9FV=ugfcnE-!6DvdTub2u*3aFn;Hl(7*Rku7 zAzr&aOaGrYUMx2LGR<^;mq)5Sxoog6H>-h7ZZB@|#8Jb=ukP&y(jof4$z*oXod#r$*`^Fs(mx^E2`M+gex)^4UXQxYJ zv?nniW9L^iY>D`ViMB@CF7XEej8Zf|-J98Mi5Jn$@n=wisjPT_QEZF&PY$=E3i8S{ zn7RRd6%)|riOZM~&U)MyU%X=~yEq-jS3uz@4V>-x0c3l7i|FpgB>gG(GO-rC0GN?8 zP&{9_&fdv1nQYr+8L|x?!u6GYHJxhg6~75w2ENp8cks+EI7M)qb~;aLb_S0b+B55! zlfWcfv%P|Q5l~A#EdPPNW+%n=(D23y@w;QX3d*)W>g{=%sj-pGzG)0|cXO}RE%GD) zV4k!m3e=c($Nl18d1f)S-Mx_QdH30cj!t4YcuTiL|Ik#M-2-$WZ+QB6?&Pe+zu7}7 zk)V}p7xXV4VcXvLv%5Dt2Mw|)u|vFw%r@+2+XAfTC6H`1?^W3t==+!^@DH8KAvCH| zc*@yC+l~AKJ|n6+*O1dzRg)1fpqU&H5 zsfVr$UX+~9W}2>nm98diIvE9ftdY*s(o124ddjuJf7tSxxQ(ZgBdB!8I`4QCPt38d zGu%^}B0v21?4!B6&|v=;Yh!x6SBHK92N4$XLR>vV4zOC>AV|;$d|n!xP=y-DB#Pe( z$744OwdhE&i{Y-MQ@@Mf;diEP!Djdv(S<)D>~LrGeESqPHUzQr;fMMU<_}_kh(PD% zEP-3H6@0fL2Y-r;RapUxfHeOs{x_jbjx~J58u}}Ml-!lhf=3YZ;pV8~dkuCpb|oh@ z$jw<~1d2BMC&@3BJ;7#%z2LcECQ+;q*Z^|_GMw6vj}{$CRqSuL`dn{+IQ0NuD$(e- zP;X(4yV!HZ^xfAZ5)*BnH%e8nS(-p*1)D;Yni;I%DI)`315_FM3DyYm)M$;}Hw%QZ zS;6yIW%RW)O8jlvhRp%f@?Tm^;4N%laR|5#98P*ocE+r1l;bY64aNO8!RlglBjo7@ zJ<$&oaiyh+buPr^P@LM!dI4OHnGgh(2JkHCs_iY9;vX)?_?EgCcoDNj`uAWf5{{E) zEjcEz)!!@BfJ80Fycdavj9<7LR~r4!u$9ypL1qa2p{SAB1g|yFQa)7IJk(dHKBqpU z&D>V}2CUO;VfM(UAsRX%)+b*|ubk7AMC=Lq&gisKL<`d{sb|s-3<_1?H^Z2eEL}rC zMdd2bte2p@(Lw4I_gb@3ILN*#?oVgAMhTOgSJ7q?q*9?T1G|x4bd1~-xaE9c^c7VX zxA`|Y2C@X-3)$zdqbQ8ub5VXQG%^ksi{v-tUDNQGiDV?=E4qj$LV|okE#tofcR=G4 z`qTC5?qjQ|9LQ@v=k^q(4tdaVLY(JoPgRh&yGH<})BtgSe}&4Q^>NpHf4p5nOWSibXP&;UimGMZJ&qn4N$*hsc za(}iu|JyCACS4yU@53o6LxH8PUOzt6laSTJtED35dwy#); z7%F|iE1D1Tnd~O?lb0uZp;awC&_~P&C5g(x?%F-!y4>(I}_i-oh7bU-tja1 zL)A=CH1<6yo+~iMqjS+N!CDZAcQia!23gd90$bc|3||A=JdKqO>_Z~kzl<2e+%>6Q z8T>hSTRBHhH~Ssk6pEOLkw6T{7VacRmJZ>{oR*aJ#f_SMRIBe7@x4WTN(Tkn1pB9! zanG1&ZxNxxqh*=YTJ!OvP%+AqbD`m^ulWtBZr*OZyl;;CAD|1Vle?At^<||*08^X) zR(9f|YSPN&kAuUow&Wo16s(q~a>x_Ez;!liyEER^MQ+5tM197}x=(RgLVIhjdt-h# zYX%xeHbv%%L1%$7CiMbu*WEEx6!u6HqFdS$#cKReLj}?T{nA(W?Nv{9&PJ_qX?5ZF zltW|Ld|$~|2n^b1p4A{<{yGGny+sL)Fr)aK%)E{owEd)4^D z1*LR^19<}1)8rR8F4ux{J*1WF12S2)pT4zhpl(y$Og%h3fgWs;7>h(b@mdd(3YgS0_T~A**gFgm@>^C(;ee7C!MPgtP=Oj4cy_-OIKCS z=9-62ZxYE2H&o?U0`K4w@CULsr#m=7Q;}TG^`wh*N8BN49lu*!S?R+?c>VFMxjpWB zObh5D|Ba2{b|uaC7AJNy`k)Xs9X-arjq_!7wIxHt;#vx_#ne!beHigFa+MukLO|bi{_=L7TL`}a%Jwr zzSx|y{kNSq`Y1G#T<*?9ck?sz78nF5pdD@d#;(KS!C84CIuNZa{(%4Uuhw-mJz$pu zJ0&?+j2?y@XBvB8O$}3LaVz}G@Yl8gEtcvDnc4#qg13ti-EoF}+E@Aa-Hi)II4F0R zjKY!nnVz{scUOvW2)RKw7Hq9}*uumjq)Z&jm2(}>->NnY&Z9?+R}cVwOdQXegVh$b z)LYewbOgHXxNeUz_B7rv9OhcWoq;ED;bK#5H`5!bMy?*;i?m|L|4yNS9x~@(MQEW=0hBR9tX&0NA8X+%S9$ zULHH>?O}|u2f)rCOV9NRT%7V4Oo>WE&|ueyC!xklO$X$jp`4MHINW@6-g;jZXA*Qu zUyr$owuNd!^U+;^-|o$I^L2&8?iP+MzRK#P_#8bbM`^5@j>;Tqo8bh!C+?MayVhuD zF*2D;WeVNH8Z>hEGz9sm`hMmV;cv`oYqc!r0=e?KrtUexP5dv2DP1BMU)B$#Q%{)p`Z)&PqN2eIdZGnC_Uh3vk*E# zp8%ZovAePMt{;32$18F&IFawwc-j7Y&>FfI z;0Ee2Df&$Gfe|D=2y^@mVVBMA>2KfYJxH{}V0tmSL0OF>wq?RokKH}Pd(d>!bAwpWS!>&VM5acOM%a5zhlGc-}IF3cPD z0Kd$=fbHN8z#l!&byiKj(9ZKCnh?9={fu3et-3qdDMlyla!(X1i{TPnSTV@PwUTBT zUU)Fm$@o^bIq~HGduQ$+SsieV{ja-)t$H5I%%-kZE5}}S9RhYh9<||jPv5bwqB1oh^yzY{?A!eK`)ga0+zTpOAEj>MbooZN{!>A+`@} z1BII^72M?8io= zPM}r@rw8Ik(WO{Cni}{4iE#`r8MXm`;#wCIz6BEDa|AX=nW4x_GSnBK9D*zT=W9JiXt7Q?!WfFzz$y#_*s~m2Ps9~Zr;a)Az0D$J4C~? z*sWwpWv}-K5tA)Ak^TVf^WTJ8z{UP@Xn*8^c&%`t}xUU+w=Pw+abe?zAR9DR$qGRPyag?W)Wti=3 z>`-4rLuAHH@jO4Oi(6ZAn+~DgtGo71 zUmaMW{a2M+PnE9mIqs=QCkqwWAn)Q=s{GOm*i+&uH-7Iw=n(G)>M&Z~`~XN~@A_8L z9&`-e6^avg>t<3K?uC7VdivLxUM_)_-N_Z@7oJB*IkAZ*MF%JbGpX;uzVlisiu99r zh*|6;enP>`LW637IAXq=u+P;TZ^%41f2Y6mqk~7-M(9(V04fLH?wjh`D%~Z9OF!6q z3}Q-=EvWi3CAYJfRLYYUuLW%}-DE0dF?2s?b?Ep32Ccx2kOnI|-M7G&mQTVxWiz5#NGsl)Gm~DJ+}noz5k(qkwhTF{&R>2?fZDE;)L+$g69_%g|r> zdrW((d$1jdB>zy?xlaCbML#6bI7q?xFH{PBkJzo|3m1|Zg%hX(v>eo)zRl*5W31af zh5p-+k$lMQP`!WGyoFx7*GhKe^O7cd#};iy&q3prju4?N!3GyNTt{8=ifcm?)lA@V zUI=v$UYF)jkKq1>2zqOFb99B_KI%`tEhGfzLlN=`wyA}*?D8HqTwphGeVGW~YPgI0 zjJ(YEBek>RwsDrVn!l&p6YmGq)M%Wq42a ze$HHLxYB^_Vy=RZqCS$8@>wFO>XgcU11Bi84WMZ=*V(;WMszm8l{lI;)Ac}~bdSyF zCIg$LioDu)OPpe;=kXvVOjWK9Gl{Gq|752rYF3u~*Llv93NJJ~$lMx}Xo!kW)VXZF1kE6JN6bm@A&n=n${SL8D_2E_@9vQd6tp&^FQRpk2(GgJuxp(7%+x5c zE9ig;bCGX@Os=^pNAz+7Bj$5W0GoR$873PWOqDs}h zWxlPK+CVeeW8&LjD$_2qGshsWxk}>K6qOAu@|J2o!WdR?3Gd{{kbku-C)tE^#InW) z(;B&hI0VTv%@7|YuC+dwjNq0$b5d`edNvOhafAR{ZvkOaQqI4~Ss;qeEhC zWA97*?7R63$73~mt7INbwm>z~HhQ!APCpVyy1Qu&+AWq5c{%2mSe$W5QhS$~n~#t3 z3Sya~DcsBd)waj~0J^E10K210NC^MqYhxQ}XbRO(=_|9?`e`}JEpZDs*z?@>R`I|t z>F4%eaiCBq|5l8-B_jPGI zIvImY>Y>rf(pXcZYIy{AWbKMI1+yHFV+OIml|=dLL6m9A-$R64+V(Ja;*71LYUgz;n?*p6p}6D5sK44P);^ zSCvNODevHNyUhOqL+D6kTFO$mqc%Eagp}tYievD7E{S^#?=x;TETx)>qugZFY|906 zSGr>IKJi8w!lt4dW5^7+^Biz(HlA%$sNZz5N^CLAJfpu6Bb z&Lf7gx>Q|>RSZFL8sk%2R*_3Pwv;p~`qCNI;t)yS*LucHw5RlqH*M z$t@*6dq07{1H+{)v5Ng+%!q^yOjZ2{oh2zcuW7@PU}a0ECXrqOX%;jJpw)t zyD8x|nJC`IF8ii9CaVnpqvp3%deR%2a{qEy^Jb%UmB{=>lo=R|I+#fEEV>37>VH8t zC|U1GM)%nQJOd z9Qs_$sipr}kz}-_CZY>F}v5vwwATyJ2e~y0}{W@T?oHM6__bAcb82WDh$DKmY zHlwP8@VjfX<*|HGnO-u~H$kbGcq+-{xuPVixu>7tP+JL7ByX`0{($rb9cm0pWl zx-y=6&8o@Q`w-WW2x3-Jj%CZ`KC-NAz~&8eT6A#%a8=`g~sUO@up2 zeL`V(Usg{x(oY3A5)0s%bAdSV=A3ASXH#8oCcE4lQtqKWKuS7X}=B!hF~6L~wn zTyDEFJe15dGVD;95=ZESgW0ZY@@(x<3iWlS5qN3FX#F7mljVn!f$o*dLsR_vq5}y- zu$iu|^ivm(Is!HPgtK<=D4v2gwh!SrDM$XPPB9|sSI!zYNMn%iCDk?I$$LF-qk1c; zWGLoo${SClA>KD0+hsm&?P%|7z2;YEJ?a5asI&^A7Tba0+zVu;JU_(1zw}p@iOpW^3Re_DbbdN=4^aR@$myE0$qZYTlfsMC8K}s z&SfC1#8Ahq7s+qfr7%YQUQG7vXb}>>H8PPtUzr?^oi^vn=Zf_HG0Azm_03ngI!euj zxnv)11e-#4px*oMAXTCJ{sZz%B%JLbcLNU)Lvv%|RGBS!PcCE9XstU@``oe-t6^Tp z*APD1wg&e%tFQm0@@&TN3v6k~7vqu4mh5zJ9qIwv7(nG9Pdh>8IDf$~i#&5^Y(B8} zuQ}*?$Yt|+!Z_PSBoN8vRK@BG&81rT{b(&bj4u&Og=hPxVC7vA%seq4O<+G^1JNmR zkn6~g5f^!eQs037p#hrmq|0&>?v&IJyFXgowbBy- z*Yj>a`pJ8zSP)_NOyL)73sxKV zxo>#F_0O5DupVs|*#jz!%iz+1{bU$^8g&{gW_A`+g>Ud7g-gs5Wn(KK#YQKNfIG5# znMa=bbQQZNJH~mywu+cT#WJK&jX7Z$WlYf#h6@Pqvn9UdmKGd9_hBrso1@5C8SCZ4 z@ak>njBS~+e52!@Esbmrb|$A8b@+F93{x2&B35TR@p4>cuCq$?^Sci~%jB5}mtxAf zR#W5oYiLY@`s;MBV(A=bbh>?-*e7EnVlQ~&>4QemErnY8A~{^s&bg)WL0c^`*U`yU z9c}MQ<0jf`Y4+w78XiTDuZLni#R2XoXvm#}^2TO{Nc;A@2<`O9jjjdC{p`hi&qbHx zFNz)DQMS_fjylywhHn#A+vgfHz&@;-iE~`$_4XlXTPJK=46QT{^^VudCUy_2wm83d zLWUAn=CL z{giMF!Hh?sD_nB^-jrWr5#3(8Yu*+;yXY?aR*FOSP@nQDX%(qRED4@c9YHnR8{|DX zSAC6qRs#-cuneXxxq`ifCAxIpGtg*fhnU&c|2$R6xA0DENYNU#iDpB;C9U8l;UB0} zNK!p%oxpmo8AgYtR9?hK`TKy)&prl)w=O`!P5r=Kx(~sJt_20o*hs7hewN3Zcepm1 zlH*&@(XNG%6C4GA>{NQF?To7$8j4-R>?I?D&%F=jeBhoKFYmj$$GHc~k6ZUv>|=Y`LtNtf>|XBlhjP`CgTqen9(g>#uOr$%#*t;7sf&6#!Z z+Pc4mSl~&)6LwTO4jeRXWPrlX`qP^8(J^fJ{?~aGvx?YC%4>~ZB?2XaL1P1PN7KM(U5e|T_M~Aw^AOmY--dbS`Y$fda92%74Fi_w z#^!Ib-Di@Sk<79JgDF=}uPTrqOj(6Kx~`rhpg0H3|EmX8HfImGbZEjyb+~ zqGPX%Jxu4~PHO+tC31rb=cwA-Rze5OP+~>YW5%Xsv>8U8tdRdLp;1EZ*b`_EjgMR) z_B0Lwi=30RwA-dSR`(RXB7?}I`1#Npy}`JYSqgj*4+1Z+5yqP2J>3Fxec*Y)X!3z; zmwQG*7f$c^BvgjiH_o;Rk~eQ-BH{RttO>i&HDE>4onV-(cfHZv3go(@-LuGiW5uNT zteP$1a`Ct1e*Ykgk@!ihBNFKd_c`eWa!!|EEd?LTec(cWN9Qh26Vp}S1*?;KsqXs@ znXX_{iSEXoDpgtKn24?IJ+=r}Fr#S0DszJlIh3QW%vT@x6GoP@)q@!V(2SnQ|qsyo}lK+o`n z#RsC-8pBhzkf-5G>_qMl^aKO_4UrPDI>>SL;V0U|Y_``7eYc;%@eqMl@(pd$FM55j zf@(HC2j*Thz!l`w$X;!pHf4!t9WTl&cx$Silb*ws)o zZ#=Y_`mXyJT?O7(^oU+!IG$Zg>W02B`sLGNQb}RH)jM?-NU< z$&QgqWxSM(0c%>9;>G&2(#@oq=$TV1Uxz$A^k82;&3OnMI75zl5CjmniksZ{jMc zk9Zo$5?d$)xzIQwu>#oy8C{IyK~uPrRnXt_2l@g1%=w4RDyYE1N)7CTuUM1d)sbng z7eZT~LcEn&M^k;4osX1WOS)#w0-q_-( zoz{O6a!I&oy||2AmKs;AX|ohlz%uA~z!a$LFAE&7><|UA8#vyaP5dJ!kh7_k;4EoA zb^&$ZF6csPb@4fNhh6Mnr3_NLe~L^U;CLRTXFN5+9}!if4C02Z>bpDTQDVyw)cu( zdY7?=JHpRE|A6^y8Z?~l11&}b;XU#*pLRBqPa5LLkWkL^qG31lI`*5lJNi=lEa#xB zOW?lH4}DhqHK*aXK|{1=M(|;-gt+b9(_pt>j}z8&zOcFdDXETi-ViWn~F)k8~MV0 zC;mPXEzLI`x3}4q4V&HDxI$?TIFi={b;=4R8Ery#=bMU}!i5}&bj;g>O_Iv6Fzg|k zO^K>?(CxTFw&c2-uez5=8_mO9MQnyLfPWlpEjhiSZvuNAHHcO(B!02f@@+r^D9QWD zSKtmV(L~Cd*#vH5SD^Z#TL9rSAzaZ7=S0K*3ESBkmtS_ z1V&)*wZ+_0@VZMvrm_D4Z9uPSg6$~MUc_9-G!><~P?`59Q=fWmbGoOh9L;{}1lP+L z!8La5klS$+pf^+tvN|>lTZ>BQZT`6V9CMWNNNMy+;%fdp_JJ^rJ&E4Hql~L5M(J*v z4%gDp%ICy%iHqb+J^2DxgbY8r|cr?mmO|@Hz_DOQ*ym zx{<~~&;>LZd#Ibj5vr;46#Ow66n}A8sWzpU8cE(P>|9(oxR?ui8Sfom9bZlQxl+ou zppwm1+!aH+ycf;8p_LNtBGvgi%()@voRH%Mz1`3c>|pCgxni)Y_pOgC-c0JWtI_Y- zb~^0s$MguffnQ++dA_&UKX_qN#?V00}xv3L(r6w%qR2rqfTQ)KT({}xR4C-^yYIP-ruW)EO3 zuuVK3{H`1+{wn8r;yk}m4cRdDcVRR+9#)90VwrDC(K+WP@FE!w*I~=y#poWN2X_|C z1J{_Z*Gtke=y&M8dmP#?ss<6?G+FuN8HH9%j?p!u0raU-lWZk#1h0#y;59_oxKV-0 z{uho!$9_Xoluw+%wBysEa^yTWs;*wgTmkJWWYxwm^7736T2S^&Qy{!ZgTIhIAuWw> z$*QKGOg3MEia?q$9b(3C7n#Alf)zS%TgI|at)IPpgf{jcN-g3_u}LI@%YyBKm$jEg z0v#;&Bo-Q{imFe{@*jHNb4$4eeMf3oJaAj+2>8Yrp{s;0B{uo1gjS*sq&n-9`xGCg z=230vX4E6!dXy2H`JH&{_$&!STe)t#yMw*KHYs*)o!lAwtt&-qNk*=Sil%G9SD}WK z4vA)8De>A_6v^ixXZWD9&s$q+gjm3lbPUqUv(9%JZE9_pd{%y}Wkhp;L+`UK^CQT8 zjxTUe|06cdGmfpAWft|x>c&$)Bf7pqgv#JZV5roX=r8QaN`~i)f5rO|4TB9WBhmK3 z-y&%p%+3joc7+Az$aVdnxWog0*{*VDaF8E?^Q9G-Q`$|RVfwjx#1`NM^=6v1N@wa^ z9!vepd~?io?glHk_MyGW;XW%7UzEwMptiA5(Tw?h>m9s;E53zdU3ro?5l(=j zgdWfuY9sL34B$a(Bb92st+GY1{957wwucS`!_YSHM?Q<42cD!CqJF44Y8Q4DC;4Wx z8-WF(d0bP^4$AFnlVTQ2d{Sfv^~o|SIKkpUdzl4fp7knUBB!Gbpaw}G;X-SmU;Rzp z?ZLMN$Nc*(nbb&OJXs2!c2!hO+m%SWp)!2TD}`=zf7qvJTl%}_obR6YG5iNFXFd*% zHBC|)2#dg0*gx3b;1(og?*>((D`5YsE@3uWU$oWlBu^M4%{~1;i7@yWeiMHptO~f8 zH%xQ95%~ZeQFJ0W4(gj!BlTbM1YH`M4Q^rgSq4xJWC$5S)Gn$(hJaRR1FQw0CbbUy z^bb`|1=a+k@~4^fMd?HlU(mozf2JC`YZ5enH0cW2)KTamgPeIPe3NTdD3p%SHRA(n z&MwRU9I?t_wj2H_{>@4vr4417*piFrV4ime9F>;(uBNh zNV*z^Q3)Xq{}L3rs|CM{zN!t@X|^%$A>@vL4qFsFB^iXb>J zD^4UnP$oIs3JSK-A6Hk;B4a)KW{vjm$uy&Yi>p`G1h zn0J0XdMr2&tu1V%4hxfAS%F@TgWh!@F3qLKdS3_AeV?swTAB*$llTc558ogA0kG{*g2WJ?LklF4@Npr-`)UAwWw#jPa*XsQX zzB({7SxTDe?aB02@X~?eWUGsv?!NDXv(D*e@~xz}&~Cb~_)f}1N|E*0C*RdzN=_Fn zq;%jQIg#Sz7rxfE6|HMbzkFSjWTFMSKdBCROx~buM=B~S@c{|_G^a32XeYl~ z++wjSe~DpWu4NFh&UD`U*mgK^Ny@XL%}{d#<*yL*eP} z4`jSpQ)RH+_orLZ@Q>!9rtaeGqL3vFT}i~_uceAm4a;$10yt7kkMCnK$*U|~QsX6; zxF1gTEQWeOZzA7XyCFOI8@@4SBPp1_TGCzN^yrji?4@^f=n@VFa!hj!bu*cwPFPRw zgC&iB=xJ;nCc;>jJ_?Dl5R%!qWh&T)FLG^X{R|#zc4pb)5kqq5gok$DJ@aE zu-i#%)TZfHgeQg;)ilj#Iu-m>43@#3{va(xN5_V;nI6g-^$hc;e*oM`-vUeH1``Q_ zPB~1ErN`T<`O1;A;6&{>^0;#bb*m)Fv(;!%SzX+%#T6oj7=i;uYfAP8egywbUMH+j zXUngu6F6KBr`}j7bc^vU{Dr8G>i7=LKMKQPXnfQ@p2Tz%6R&pNp zk$euH@}#Pcvc{>aJS$8&o}=6sg?8p?Mhkhu6=NUEJvbIZ`P+`Q>|Qia4T#67Na^(t%AWY^AL#^faYOKXN>n z1a^g=fae8QsJ>X&z`zc}d1SLVAaOvV$#5fXlj*&&jp0bnd)MaRV|ksovF-%$lsm$8 zaa>l{YsGaOTr7NyFTxU$dFVcUHgQJRgC5U5qbsu<_mzj0_`J@_Zr4d=kTW18@gM^t z$Hi@8Z+40GjrR?Z1{MO{sZmG;PDt$Sspwu{7zc>uF+&@AKPy4u$ydS-r_(!bAgZ|g{ zS-A$LkWN?oAw`AN;0&pcE7njOJ_J-ES@*x{^jr>8kOa87*be>Sk2UOpE{m^?IpU7I zME7;5QhH9pYc=n@Na_I1WYP=sQMY(o7|#w7b5z3U9cDZ*-w8z~b=v8qQ)gJHd zMBu?5Bhv)d8H!>tI7#BLG44@p2OunAg@n09^f&qkm`jF{Kgs>rHMTVsX}gIWbbGUyULk-=yR#_O^&i4QAG99ys$HdVZ)nT7}-KLeod{61}_+~tpZ664U zXYefHmM}pY?4$8dF4mQWenP_m)TCMnNjJ3Hr1^Y#=kD4BU91MQ&3@F}U-U&mj| zQG?oGbGpi_32ca3&fHdwioc!0i%PB*iX=HmHR&nOCuU* zpT}1iFR*2W$y_U6wkHf2D!+$|wKdUqqO6PZ=zX|!#yuVD0KD@tj;TTx;_(E=Y)qeOC`BZyuDvp7 zEpUQ|O?Rokj!o(!}zy3dp&N{GZ{QtxFkPRI$=3OmG<4tWFE{D6jyB_+* zWp}v4V6csKt0ZkascZ~)mxIIQaF@dlx#O4L-`zj$()5$}`}KMrZUpkUxIr*m+zKBC zC(&VaeF5ibsjFz2Wxm0G2rVf7CJp0*{Ib#!Se#@uo3-S13W(B;#VDR`(w=m6w?!KV z2JbXkV*ZmFz~%U+8N$SB#J4N6TkLwRNO z7)%Q$79c)Ba5ltFk+)It^#72Qg2_G!KLGEs5a?_S&$to%DpKG$+aH0=s9>EW&X=Zw z)zB?qBkI(id%T+Z=i}DTg>dl-yP<~GpQV;sc81Xer>%tft~L$UR!iCW>J{ep z-g)MD`2kX0d?u6kpQQg*qD#rKYyXjk{N7Si794w3uVP^&=P*&id%vO9o z^)fx1dS$O29pP+DBxtz@y>mtIl_X*lEwQe?I4&MS*MvvX-#nkq&%;pWWIHKe*X*rV z@nq7Bea51IqHTDJR0wRs^h6ujrNBTX+3**JAP*=vauLW;4+hV88{=!RdC~vj|FW@! z*)|-XX*#a1WX6K$$r_0h*1U9-#a zNmOQZHw=p_9FNE*L`Sj#(JtBvj|B&iIhKAVXG#C^y5T%|Ubt6ujrlQbD@CkDihvxk zYjX)=Eol^bXQp5x=VRUBJGRkymUJIL%bzn>gY!)m2o1*|fcUgva>%1rQ7MX#&Vyf< z9mCIXUVC#{PfbA%z+*}mIT{h}$XK)rCPl80xAB^q*|XX9O3{5`AB$g5163)KfH#mG1r0?WkICy_oUHQLr;=prmuLpTgj>@o@yklf)RTTE z1TfW!U&6R)YxoOCNSNb;y!_xYstPia<{f{8Ga{2pf1~QS4v8mili8|bcT`DABpx}; zxlO?ZNKV-kN8HjLY^KJe*Sv1(BbP@p*k?IAa?i-C=yu(Er5u=Ht|!d0wvf&juhAN| zjO{cyS$h(1lh9rsmE93RN>xt48i=dqA-KuAP`;k^1TM=vV{6JTlVA@ z3RfiKK(C=E^&UG_epNHTE(|~SnAibmISMkDtX2H$gJ0C^c#TM+#xV6zsoXa1o;J0u ztUO7L1`pWsq#n^5>S)(rT;u3srB~S_cp=+IT!H`3(${)NisRBO4}}R>6=z9VZ+R4a zpQ=o)ly@S6I0i5!EVMqQZ@cO$?`_BFV}8Fn2>2!yf&2Hp&Rp*5ttfi0))alfu5#M_ zn-bH*NybeXSG5k$x=2NBclb>-AU}Z5*v*g>k(rHnd!=*GEDfN}inEoq&`Zbjkly(Y ztP_gKtV4aUbjbv*1ww(6kBm^OX`nhRwG^)vE#g~?*R`hcMiR0dcT6YFn(j!6mY*rJ zvRg-4XcO>2EeM(9jpCy~JaN4L@c$i62q@_H1INBLvT3n?!p# z7Ha&T4cG+nJ=o2@kelF{%|1#Q<(MI#b+*mECtqe~;sHT5>Y%q`TW2{ki=D0h=4wfF zw7F~t;UCujtVMw?qUN=6_~03QTc8)aN9|+0D#hR_>|5xrJ~6Ne50>~FHp54-os{3; z(*TB6RSUdvfX50t-nqYudGK|el_Nk^-He>~+%?y3dKc%>y6(Zj31UdNMH$!>X-~!* zuz9k8{{;UPgKWL<4*;WXhh77}u#1?qz%dWZ-9?|;-cvt)3xtQnje@}$HKa$u`uNTL zb-5|Q_Kp+L*_kg~6Rh>DaM|qrpVbxNR}P1`A0fp>=o+*RpGux^w6z^0IZ=2Wt|gCJ8@o zuFBrcO>z1>7GE{6dSW-2qW<-^BDUt``$w4Cx$2Qy#i+W_x>Lk8rbtun1X=36NnLWe z4R11c;p?c!<_n?ycvWw!Pz~5(o#Spm-2>{S<=Q3-%?Xr`XL}OeLR--JD5D6`Q$|*< z01qN7Yf1gH%zb(z%I~QwJQmKIKMG)Aq+kYOq-F3a&6RsztSINOr-Iio&3lKhOxYtm z(EmcdNjfWz(l_@m93 z)?z%{_8fkquYo2A*_v6Ptu#|NI=epSVgDg_gerPSaW9+fx(<{(T*_G6iJ#p_A55>1l}}pEpks`;P*(C-KF?u#hxW7$s(ZYV$|c*e_L&~9iQu_<_msRd>Ozp?+)Gu0IFus##L zD=BPsaj#U5SU}a|;Jh@f3i%8Eug3x{Wh)T3?QMd$vCBpj{}XDdp9Rv9A~9AzB{yRA zf!gkS!bxO^?H0aS9AW)Nezt(Rz1%1yhMlG+Sti@=BA=~RcSrV5`ygZ(JP}GaK1}~T zGKhc6rUWUgB@n|rboW6MC_hm>bcFpKnn&8is(}~bGVu(yUstN_GbR<9HSYAYqM2d~ zwhzA%uEp1}K)G}LI~a@qy?cS$mG}eU6E(^q+)!!)7?o?*HPTRJmM{xvkY&sc?=G$B z;7Q^Fv-XFCIqXM&`Enc5&p*Vz1G>e0Dj0h@21@wGI;I4;wxc}z3ab#@6| zFQyt@6k`05OTEQ)%F18{-Z3yB)vmQsFuIqq5-=WKn6WTA z%2ZitjD*1Jv?=mTx`A9_TOenstdwHpEY~ito4=A|)|g1G@xMw|HcH|0v7dZ3@v4w$ znvI;`S*a@6DDX_{l{A2M8yu8aQ{ zL4B`yi61l)Zo-X}nj=?Bx~RM01J1{qO@0{qn`5Yci{>?`V>m6$w%_yg5RQr);cM|5 z={fnF8+~{Qwc37&_=f&V&lOxu7w%8(-WbP7f$b%4Z5k<`T0$(v za-GMG2(Bl7BKxJ?o)_$S^&T{@cn&hJ|;rNy0b!I6etNX&cgo|6UUI zUjW`pM_5vL3-z&%=BHWmkb|`$!wzPD%<^fX>eEk-FGu-12gy7>Tz{R0iPqQPBwcFA0IyrE*=nV{;UOjn3$)B~Ff zF+^)nI`k)APihwgFCKmI^t+ zJ|z=V-g0e=+SvXPYT__+N`4WXg#3@o2+kL#r&ngG2JhiF)m}gWNC=q$<+uU+TCTn`g`CgSMJ+}_kxDl!RzT+Tv~YfkbOh7pnnhbz#z2? zm2A)DeshgrgZMpHkz)W{RT%)r@eU;qmw*o3Pk$#*!#(RQ`BXEdzV;WZ{8D&jC?DHl zi9yCQb=ZBz4M<1FWad|IdmezhTA7dmH8SrY1KktHbf>ix)JnXcwykW*zp=b#PZpg5 zEyMxUYdMzFIyZCFMQF0!+)&H;X1DOqNfJ@1q=vu=k zAr@;O^ho(>UZp(ItSQek2I136c(}Fsre(ZlJ{Q31I@nrS*8v^@ry|QO1L2x7gP+q6 zwBA$>QpSi&{SGDso}G%W1Rd8qFd2fv@X0S)Rx=m zPvngJJsK{ort+vsA;`sKD|9v0&{7M%fX8cTs{4!^t3)Jw4c-8suKct-_k{ujd>5sr z=u2<9spgJUuDbjIbBn$58-(AfZG!WpHry#{so`~CmwJvE$;2op;i39vLNq`XYb;T` zKePw#2>93w;7#DMWdIXoP2`y@p!f;boLeWX^5hbV$Ln4l+{yItrKCrgRhFwe{}tZr zYB5_4T}^G|yL|J;{nX9kQ^99Rr{5HBW4lss#4Slv@#)A~enIIc>^hU7s7N$)Sgr@% zhF9U^nVH0nU@0F+zgApGcP8`jBkaDUC*VdR(^p$8fm@){iPIWMN;UeelvRNH+m@J4 z!;eIZuekUp$C=`xe?9*uo-DjUY|Y5Rst4w>VSa>j0Xe6TVFs70Jd>>t4J5Lci@h!v5_!W&{g!zEHPnbUcn5x zI=r8~f#;^vFhCF2sYi$fm9QfxnP$+2=Hz$~Qq@5Kefn?Kv_NT9dz47{$!vyEU1h+Xycfzp_8rW0c== zg|45pFLyk2DI+LeGdr5?%%d5Ek~1`=w)+-tTLO4wfoI zHCTOVE}l&1@in-g+%~)men{g=oVJ#;AH-d`7c@@P1C5q=6+e{xC(+8HIg711j8HI0 zIRv+G{VGP7A;wM|gL{0dy@kkAOM>h|$HUFAnm`WS+|zfvn{_E zNYAs~Vz&o}sCBtFY5mI6n0T=-*k8409C6;DD0`#m<$WW#UP4!PlWit@!2F&y8QZ$kjtB6bB{t#q!!{e!)WA5KCKURcKApHzGx&!~bjJ3%6p~&`fLw8|O=)ria4nRre(j zBhL5I4%7to(#Uz{4KR@ z=Y93lm1s|;8k({P@F3JyY!hQXPkbH#(o zDp=jY4Omz23Ez5C9#uumw-vxdV5od6oK~{OoMqV@Tq&DF^$lTYmFXk#lZL55RCdcz z>K?cQRciHQ*K*De-ed(d!Md6<(+|O7Y}mn0&;z)o*h@A>!qH9ad1rh26`bSi;z|nt zu0+&B39I23%}fESBgaiMelbH7ImFEA26H5>(wrP2=ody?x>wk^i%SX*K{+)tXSwui<$X-#9>HPn^)nsF;)#Rd5*Oz{L(vDA>9 zBtP&i@V=rCfg_7P^KG!@aP^4IbHIi3CCmuwH|&(LLFlVyM7pMbEv@j*K~Gad-QD3f z;s*6E8G}Yi%K~dH??63QkIW4~QH~x&T@XXo28!F_13q%;N)7*gj7eba%$0F1EA-(j~w`Uq-`BQ)${a<2R)=YNxjD!bS-j+O|xj-)8 z7zCZk{B_7H^iP zAmw~SRmFE>J2c|zA>UiBCIXoya12z%md7@8W}62~+cJBYZ5jn;2JaKw;_cB+=0@r5 z5hp|hZQ?*80ePmMp?aj*RC)1bp=HYJB63?h__8vA*dcDivI6Pc*VGa0uauO(F<~lF zEY`u8A`f}b)2Z;Q)DXU6DPp|oePLsKGiaZ57G0Hp5=a!Zt#iYDc!J~%R>^qDGJ#?G zHVU0kReX*wOieH7(&n5tGf2gcGO)M?nJTUeRF$Hs+4ZvQ)HNdp%OYW8@&)J&2*%U@O8<>cnR{e`jxb(zwUA7DTfDTHuuNv}kavM z3GgM$D*7y5v)DwgQ4R&Hcp~?^;g@7SXbz+X{~;>!SFEwl5vB~y19!7`0Zy+fBOZiWwVD+*gtG5ABxs2wloGx_9R&Ik6^_b@+^H~8ORe~OdA z7d0MATcowR-aH!JYN=nmM?JSU>>kc+@s~jrbX6$}%jXL~EZKvrO59Z1qp|jl!OPf9 ztqJ>s{!3nuPcA)!F0wcCFSZckH+rZgKK+WL#@<(cf=uJa$bTDJfV(1JjFdA)vjcX= zuM^d^Hk8r(PJQZ`!-s8G>|l6|>ofm5vo`Y=X%lXflwenErCilw4%|^c!GnpqLRaxU zwbR;}$j&|{{lfPN?ZH0-Bki6v5BE%(hLdOzfw2`#D4oRg!gVz}^ph`+qn?<;(mH1>w43aHuPdppgPyA2w zmOMs>r`;qDLJ8Ke@f7+aTuQ7Do#4(g(}hWz%}E8b$iAuG!W3l!eqBEpo4|L`Y_$ue zBXA52Yjy;lFj!OYDnvW$B`sa8oeg}PXrVTxmKzsYne?~BSLG%7jd`8=k7nUp%s&Uu zOY7{Hh<4a=vxlyeK9;PdB?C@SbKn|$-;^EJubkVzHJZ+P!U5hB@XeX=?igPF_w%{nmQMtY97M=QJij~3yrdKLybUG=7>@DG9(KbV2$tvY*oCn zCC=X?WRyOu|FK%Ojom57fNXMH;XLlCd7>$UA7vPBts+ruYt3%PavjCB8qKAqGK9pq zWkiN)8K0vi?5d!{iTg!&fRl6`I97JpZU-Av{e=l=x&L*jg*=+=XIM`3F7eq41B77- zwjC`|@`PH>S2*IiFUB*N=6-t2>@q)bou|Km(`^;u5%d|nn!F_e4?O2lA%K)K&C!uk zoMSL})@r8+>LC9>K1%!#&hmHHy|j(A+5=bgL&XiDdAwV@TE0VPh3ZTLZkw2iceU1$ z*R!Pse(oo)Lx&X?@}=Yx+bH~0aFQ__uI?Wy>J8o9=SxF%W+^Jop7_=hbLSPY~`njn|VG2$lrA+!f4Lys(5)nsP* zx@j3Z$*Z)EHkQmKjPeoqpj;x%4e;BRgZoVmrlNLH#$S66E9!>A1 zk=pSLi_}}KTeOBr2H)V?>f1C=_Q)eljqoQZFXY2h#Q*oaZsT2Y-p+*plK8DK}xit(ii-V#dzN%x;I~y{-daiiXd&dY-EqA54%*XAt$4w@z!!HUq2~g zy@!7gUUAbj`}t^FgM!J>WSdqzp`FSA?s;C-@Xd7>;c*Yom#)dpxID(Gs~C~|FRWwHO`a+mDYA>P zkI8%NI@ZR&5#4K&gD>Q${}sK-*a_QBjF2t!@DE!INRvr|B%}7 zYpf-`5B+4_udWP5if@`hQ6=gIVx%U9Wc%4nKc1gC9XdiHcyg$LZ9dvTe5>($#{$dj zb&z(7-yzYlc!_*btY7KwQMbtvEf*+D;Goq^9M68}Kxvjoz+upLYp1*d!+C7i!I!3+x>Ld{Wm2SH z=}`8ZbCGaBv*`45)(hPacM7|Oj!iO~CmIggpHh&c88(%8L<|pPn3sm29aC&SvRm@m zhNI2}cpLtRd@-$aW_k3ib6NC|m4MyG^0cZBH*g=`YORIFNP!S+GB^tm&4aEs+x!~7 z7+H@El@rlUd~I}4Dan#xlCLy4LO&eVWrT#v$S^RdzV%#jJ>q}W-p4RhD$P6_;^UP}$AgNoiV&=BHL zc_7zLtYV++DbK5=W#{L}odW+zIR{z@J3^ghx7f}!Dba_n;H~!I@bYL2>q*L@{4}>0 zw?vkE`YWB#_O|toIb6#1Be1chtZZC=Tbd*Qp zeK8k0#FL)*M^OziUb@5;aZ^npnumwrEdrU|8bLEG8(RXM4=x6)f(6C*p=#VC;9YW_ zu?1adtrlFb_ra?fKbuxx@W8%W&Qr`8QwKKU*q78OeS-Ti@&Fv~jGAwnS}R?Ep?nvw zD*a8P+63p6TIz3FvP#@|NDnM@(zYTb7f+y<3T~i!Fc)f)*2VZ0>TGKxRCji;{KG%Z zJZEet!uF%=NwyP^hHnEp7=ML5sa9`@?MJ?Y2O%9o=efVALS_v=EMtLqP~K?qDqG=p zYze%Z`A~Q>_%dUm(2joQ9f2I+%Ahy=4?Nz}g6=LIO7Frv_OeEw4}*F$mJcU z5sv;g9nYAj@t1!xA5o0$64;_`*}^c!t;TWJT?*_Mtuk2gR{eorEA+(w4R-jAy3MDmY_3%oBzCn7qW5=Vg z;(TR$Lv+E@1)Ly#t;JFDR(Cu1(ZnteG<~N18@|tD%>3*Tw5LyAGZ)tadV3IMe#yW5 z2&P0#3YJ6N$2hWgQ$rdT$F}|_ve{7nIEIJ1a;cw#C z@Qd0Ow@|k`{3zp2^t5$zq7WWXmTFbhT%tfQhcdPE;0&lfY$xXEPI%1lodeB_4i=nO zIt8w)6~&8Uao}gDmj8`98@(@=fm(i;X$H^qzeV%qi~g--n)DT3;C?Q3=1H|T@gLuv z*yg+oP<(%3B0WP|O?${;9<%yF{J{61H+a_?2S@8!Z`yclPACSu8RQU3%Q5AsgXmxJ zYuHx%Y_VOI6RHYV&OVYmnqOtUsGT!M$pg%2>Zs^f`wGjN;B;Stb2)v4+MWFcOG@Tw zQ%Z?EiFON5GrQ_)@>$&P2#>cedj$tvO+5V!4K#*-F8vMK!Y(#C<#`$Xs1epIbatqn z=nV9RtBJ8}nqfHHTNa8%WF_$jT_2nz#?gBLKDaVU6``U@xKehTnZP_%amxowSK=lu z=)Uh+fKl{EqEPvctaIe>G2{esHuc@#Ro;o+h%$L`&Qfx@l3^-L^52yj+)(Tt+TBx;x*Z)%+}1s3^SH2DpOsZf{>)0!>ULFXK_FhMOLyL&U)Kk2i=tZ>?&morxMRTQer%smaYJ8ID zTXYRC2yLYrd3`GyIl2o=G+)kJWutv9`8To{S+Aw9g5(#Z1Q}(!1UKP6(LJewe5U_S zba~)OcrmidRz#l+&hhhn2U$ZX(&q$PP}f61i5aMl?g}M)JM&T3B{9)P zWsVRXp=rW@zV1R_LPs9<)P`?|W)?k7*)LYKG$&!DmV1_>ckMylC3{$~(AA73s#WZw9%e1}_FRUt7a4DQRWg?QVeuMl`~o0M z`ow=EA zH{AOpr{#XaEU*Kq_}%tUag$y5@V}8hYAuO(KEo%oUB$8N3ixoOXCNQ`keQUc5}9P5 zi2Tj?@#hjvL+mK=KWQA=j1Ch$WRGLD=H%q4%C-r@ZHXgs=oB6IUm~sYf9!dGe`&M$0&A*Gmq2T|eH}5M?QT@DdvS!a*LW0@;S@|+)C_FS1j zEh_pUjxV-Tdh;f0x>ANO48PRV<|G>v>;NxD_0C)2)@xzWBQNkjlegr|yuE8+iMe+4 zj(H!@R{Thh)uV{zVx{GuY>GG+*4_s~XH{}>=Qx0gGGP4M=x2axxBjgvc zi(v~njeARKGB=Gj+JoOtruj~w5ZBY#P8t_F?A`9!1gyd*Fh@*N)ynDy(<|&6I!n^x z>{=)LvA9=oDD{9|N+n^TunTNk`kuQ)ef19awh}8DYw%B0(*HySgm~*m_gDM?iZie2 z>h@UR5gP~l0K4-L76bMpX8R8j+lZG~HaXlALvQ9{&@uML{7$pkwx9lip4b+HG{w(p zrXvAcMs|kBnFe$3Vaaz5kI&x|+-f^!DYTeEuTdYf&X9<$WE*oc%@B5n-Ky<6J9E#> zn=B2vaeQBSt))KNRhgKymaS#&f|rR6xlbBrDonlg^tBAtT-V*%*UB2c7_M5rTyv{l z!4HL7S{r4l#1E=jw8g$O;el{pS1c|AY;GTU7H@*@w$>$l)J#~L&S;K`;=Jow^NRY|REZzB;}Y-~dKjvV)kU8buY&)MMu9}jb3R;e zXoyMKgN?Rs!+)B8;iso8M+alyf)R(w_){H_$_29Nmgu~!1SLVqZSZ$;S4)ifx|p6+ zo!jE^W`gLuh76r=yin4Z^&$s=b6CS;FTn-rPsl%f(*r^A4HNP90(xpRo4>5@;Hms5 zc&K9;T!9&btT5yv&nTq$SK^{(!K-9!NgcN)hakm*9MZhEmx&cdOSsU|(Pqem@z~5E z#wz4MtdCNO@@vV%ewa$FGHkMU1zLw<9TkEYTwARueX;zhQOU}8k5Jo0o3ZVLNp`E% zLMBReG$ZgLxV|toFs1Cd@SWdNG)L#hR)l70DV-saeIiL+(mM+phWkkKh{L>Q%SFaJ z*Q5cV#{>#&Rb~aIW9OABYK8J|wvZT9E*d)8n(!k+lM7yzwj|ej(y=mYeu>38%r;2; zhZrd?VN^8qv-oSo5tyUsle)kN(0IxW$#PN<QWldo^)mesv}j5yPaRd$JCV(5xr`9->esFbi~;p z$M1*){f953FGA}=-~1%CsOcQ;h$q*zi`*~vQk|kVla4lb)s8N<#`v}xj{uNHD*Z^t znL>tX(m6Gs+u-bKdTCKYO^w5~N3PYx5xH6hT(nnf+#Llwi_^i?V4Sd(CAKbu2y(Z! zSBc>{*Ksc2-$wk+hg&?{WD{vmFISMY&IT0jj>#$8kuhn@(*l6=a3O?~WnkUA1OE)3U_k<;mF z_~R^`J&A6m+5*XVQ>&oP(o6wsp?0DXtzB|!^9uU@o(cJT&=9lS*aM%NR7u`X=*;8r z(M14%+tNREnRTw$o$;(>DmGN>85g=K(8Zo$jp`>s;%4hx2RkF0c_HvRU^Zri^a9A{hGQT!1;zvOpui?0oP z6FFj@0+u1YZ9n<8&d%EQw>)#4xrfxi{+w&d|8CLa-H@|}+i<_4*Y3|u0?{41Y#~ES zxQRH(jAQ>z|NqwZQ23@Y2p_{GB2~GC+#UL@uM4#u`qL|+keGlhf_B=T7tJtansg9j zxJ`HGtHbYrg}%p9W27rI6jHS5%Mbr)3>WJZ7ol&12k4P$5zMZ?cCsf-TDKT zBi1FZa{Yx<&~?GYJOrC?N!t8hkw&5QEpBIA`Wr4*>w7@*68kE{G_J46foW(Hd{ntv zwG{r5x* zEwj|4*7Bg(PuI>AC+F-jO6y8`i8lJecn2z||H%s0!r=eM;MgIDxG;pRT$2%YI z6~ORtxFF7lp#0M*&~-138MD2FX=@t*n|YA@3~;^s=&Ho{pw!t{zJ+9un2 zqcg%Sv3x#2Rh4^*TSVUNnc3My97EC-EmK29S~n?_IoOlNbOCyA17Lk*0MX4=#7y&-Aw$s?##t$4 z;yCTs;*FsSGDNdnY?n)v6Lbc?gnz{{2A$@{0*r^?t5R<9?mZU46g1Ou{E>(r&I+cg zN6V^ux)=Rqw?ox*`w5pnYu6BS9^N#Nhovg(pkHjcfr@yVkWF3pMwJ(2wbCsB?3nBC zh9JVJ&AAB+(q}sSWfMgdKgGqW@4${t-l_%5bT%KGY6RKYP%m~7aFWfpuAm+fs{Ic`MXqbZ1W#+?7q+e&CAMhO@d^2PRz{aX zOo%kMCPsToCEg))eVbFVAS3Za^Qxlea%1w>)NjOPZoGG$)KpfnSkEWy9B|V(j?B>- z1oO!2TFbpXGSrhQ6;XYlBhX&!gpB*-E%`JR_0>&ZZqE%Qi2=Bwl4I*(?T)G->+kOy zWJQq>et;Sd{1A67t!GWt`gxU0O}sfg5a?i^?)%JD};`bC_`+?K>SgH#*1~=05Eiar#E4zI0$Y>%u|{K zW+}^@4e_SzR<57tAPX{HO_3$^H+MhupGH2q ztNHEjYe}hL9+i)QubcM;X(Wl_#p>Gpzl+$GTOpkwhnmWz59EF@mv{qT3QoiyJ4yTr z{?!*YeCI}69!npobxd>WG`AN2&WPc2vY-2InQN;UsANOgJa7?=v^ed76u@@*>T(% z&DgvW-$3)lPa&Gyt<>CuW=sm+QO>fG@)+Le@2QMHD{02`U1BYMZP7E{8MLrf;FZ>g z(1Y#GxCv2f#ABJx8q0dCC#}~S4&f1hku_a=eUSJZL&F)3z8gE)P6xgj|HkaLIiVKj zr=nhB>cxjcCGQ|I*sth6@^kWQf%hV4U+FrP!~5uTDVbQ$XNO5eD z;1`DiCMkpMEunIBzLqAcih8nFfdvOjCNFjmV+U@3bUASTWy4$JXVy+Eklytm`K_2Q3-{YHl_DNsBy~sGFxxpK(V_k)1i%Wx@h}xt~ZSo#Puh=Wl zB>O*ksYY}_?h4#!h5noIV zhW862Y>Z$v^vP<;Ao5S(SCm1zmn?z0Gk|1eezpClzIAR;r<)pxdx55w_29HnfVx3$ zV$Z-YLc_o`PiJwK`DmyI>BL)Fzhn1x%>&n%x3-hmZu$n%4w$Q~(q#qmlLo@aGDQhf zYXX6EBiyMVK^mR+A1@iEyKcbQB@K;N0?EEY*@>D==WyTAVIU8w)XqTfKxfUfRF#4B zUjPV?*JyoR_zYyRy&f`!9c!FtIF3xFmKJZo-@_Ep4qk2RYK7Gl2|-)He`yU6L;4)V z1OG#J!UM;OCT^z`94)Zla{K^fg+eEQcy>Izb#<9FujzFhlyTrU}1g8lz)e$HQ~M z;og>}8putoWnyz{dtX&EC*4z4%XOX041Q=s=o@?(e!~qX8Y#=-+aQz3>EX7}Fa8j` z3Z5zsRwBDc5U0ud>T27u6_wz*|Gm3kE4G zd7`wQ?q#Wr<^(bPmGCVx*?Sm&U$Blr6eIphe@!?qzZMZ_nzbo=&-ggFXLTR?1f3vk z+jlwqLT(^fHSfk4b|SpeaEwYu`i4FdJIJYg8uXlP6E@HTe1DL;$XSk>_#n+#R@s57 z%lz#cuft!9q0$FtTR~rPb|z|$LuXJ$yU*BEVr{4&Ji{{&Y$tX?`?GzS)9z8;p8lS| z`@m__BV=33R?$T+WIE!nc4J~~@Uw0-TFaf&_>(UY-{HQ37W*cEB0E_7KQ-dcYj;31 zJJ2$Mm=jzWOofNCJ>#Y%5&MTj4~qXPu8b}$Y-#!z>1!-18BNw;`&cH1^G}#$ru=-}G3m}W|F1efBEOmJ3gtR1dKs(Kx^o~1p z4ch2jXKP06CAQGpr1!}e{2clP+zh`!TG*;ct({wdx(Tl`s~WaT740kdc5G}t9G`(d z2EKw10;lwU#8)QPgCxp@B1|k)M0aE+8y@?IAa#L(8ee)oI}Df@?84;*l$4Itb10Jf z4?0hH52XU2ZHTX*@s1%CJOO0*R3Q;w1~1~jN$F5au*kB6FN81q^H7l=nz$9J=fCAW zrttC|^T@y)^w<`LUeWq5_zSlXPvZi7i$X6yQ8WA@(uAbr)?P3*m6j$jDPXFShq0L zSHp01S0BfCZja*`VKe@4)h#N3Hdqt54kE343{)4vl%3LCI#0~=%_Lg@IhI9{=jN7s zCTrJYj?&Mc1`6A=@UMj{@m)eEw6$t#Jks?Sb2|NuZx22T8^zw`A8fx7eqcNhtwFxn z)xZ2jq#@CbpQ2^sVx?c%T(PU=vhRhk*(@?9U9$tM5bL`lr)y@9DwY3n8z-@3O|Jr5nJ1GH1n1phl6_Y%;#E zD3UIDp05oZFj?64+}v;>d{Ahp^ekQA?U+_7)`z>e$0K+_`vPA=3EH-ZMrzBIfE~7E z`XyGK&!-kP+^4jlMn`+H2OXi}`N(Ug4b(n3$57e%x->`L3%hu?I^F!c|EPonM>+(! zR2qdZ1$sl>OP&P2DmUB@gbvgrdxkpLHPv4YUYvQ2mXQZy4BLPAcX=P@)!fIDClz z8*W1F_H^`Y!JF~N$t%<>Vjyse30YT2)tLjVY?{Megdg!=piS&J+gz%nW*u9=)M7T& z_^SD_m$GU3ldW$+n7Gd!wN7X_S7WlrQ58!kDy(S|c-!t239K?w0Jh9elYfwxx9O-~ zxTE|`DJpw#RJRiUY(T`CWF~PA_Yw!i-q<~Tz`ItwL}egVkOSmzris*3sjEH3Jj3wH z)__?ny+bRicWvjWXGj;==2^<5P}Pv{6sFEqjsVr#m-3g2u$voA}d!-Vup;0s&9 zYQP<^UzZu0Qp_cni`f64rIcjhxpLQe1}B7PTz4O#*}nU$?Q3sgD=Q1})y{aY3mIb@ zs%-=QF*d}i7!8U0Pzt^D(xCUf;Jf9?*qd;#{w#|xIP=Bw2167VV=$ug``FQ3+`ZV zOFwWAQBA%#pl0qAoQ15{6HIHgX zykgM_7a^bYW4I}%LS{foDyDuaK}6f;WxTZEcx9#f52ZbbvC;UXPDs zTS*l8w{c)vjPsk}Ha83TH8@x^Y;EFYxgF@{Z)xA)*ZIxawV|h$9T*j8Z}eF%!r#>| z0X$^nrWVajtBN#dM;hk9AMlaVS9~5{$lIBvVg*)5O(`n^7s{Cilvpn&Thq`CX_9hZ z%grVW8So`;xI0mt5xM5;W=sMGH0c9>hIdH+QwJ98H*}`P@ORPLT1R=B_G@j{vebdl zIKDfVXiO^m&2YlLD_CIeB`LrwZY+YpH`Ezo89tLfWH=7RurD<_;VrF2|HPP&q7D-I zX;_8-=HG8!f=|Z3lCyp3KE2QjX=3}r!r*M%Q|1Z$su%+|pkwK_+CfXwjv(ySux4SzL>?lxmVrCgYN(LUCttcXwIb;h(>^ zz073teeZkD^C17o$MU+0cZi`_PjLg=9nHb^ko9xtLDe0D_?`5B@<#r${dvhEdXG>8 zP17)VW5PwO0VNf_Doy1%VXEK4)kb<6boLQ49L^)Upx?=SFkY_hc)_lWYmxZV;*w|C z>!FWfIj24N)c@H3(`zChE6rS4>T+a(e=a@Vdfz@v>u#BY_TVoW>jf)?w+5@S5A*J8 zeklk}B3!T~YAtucZ_r)Y-Tb?#mvJ^F%&3N4b*spVg!jrn!X-!#vl>FF=<@M|8*gQp+5ul|Hp=RJ#Ow7g>*aEHOTVke* zPf*RWLt87iL|3WprL!dhSx-q-v!Od^n$RK8-yKp^fvgM7MO?1r-5Zf5Br4t@$I`gB znp`;$fEOEgTYq@#iI>y`zH3mdaUhz*ZzDV7-j=WBn{XBZU=dBfIbPAA{5x(V-2rP% zHwRbYz=27&?(8OEtI{%%T6CD(@2VrV2lfKDo$oa@P%HSL!5FXFY+lwD$7ZsY6NHX} z&rv7qusl@Tc_OJ^O&f|wjhz#A+8XPAmLgVlEG@L@f5J zqF=qnZE?P|qH$)uH9Zeb*50AB<=? zA0H-c@H8Xm5!0& zoLHV62SpI$?6c_@B3kf z*3UG`w9oSneCXeA+2u_!o$y`L&BjJ|Enp~fi9K)rgJ{ubYy2Am~V5tRGl?x#9q?Xq%M|<1>0<6 zW2alzf)lA+(dd%xH2YVgWQ>;jI23j}hd0SZ1K?HbB(RgGL+y)R0PhY?gfD7!bv6&A zpF%)GnDB=+!^@N&pod>!`^AL%nzN5AGd&HwcRbIaE$m9&#(>}_-7m9?eWQ&PO}o4g z>9t^IveUFNHUke?}k>4lxzg6=}m-0 zznRZ8nZ?PTR+c?{!@OIriqdkpmi?}4zI~^E2Y3irA^vnMG;j3J64T(u_G3BCO6#c4 zxhVyhVqzK*ZG6v4PAwN}0a(m+z<_>Zu)76~qu(q^4p;6Q| zXaxD&|4N*0yqjA?>ffY;*oC<)h+HU9l3Q#aTF3);O_R(608Z~S_UGO-EU*{FoQG<1 zmk>2*<)+7v2}Oav+(@(*dW@dQ>h9yhedeaY7x?=ewy0>?Hg1(T(;r!Q*BGYVLBrGt>t%3GG#%HCP6i|8SFC{j zC6=Jmvi=h0u(@h`Tw+h+tg8u#ikvh9=*@HPDa6xNy8}0bFYI)BvU`@delUV;?f41R z42*_fus7{DCCy@!Yq>+wu27l-71I*SfK|4=iAh%7Vc>Zy{K^TJuSCp^x}}|VQP2tg z>aGf|o8hg=v?Kv;OTTlsk83ZSrA?e6(UHe9*~}xuLGVZLy8T)_5)&PH4{T?vX-u|m z5n^}$C-#huM7!Yo!9Cgz0ru@TE#U47KaER)`pUFD7BB}Ae8VgzzQi&#jAKt0rl!Ht z0bxb)OZu~Cj+$({Y#o6#c3+C<=xK_y+BF^hEjO`6I1AWH_ylnxnHqgWu8C&`Gjk(c z@AATc3hV~caUnIX)TI^87QWj)@#kcV#SnQ~OUrxZjDez*c5oLfZEfernbYb~;1S!B zGCB_{Gvd#)w>@G)DKkNzQ$Fw|nx86PtttNQQdeBG%wwYXDpY&jP`o4Qj!H=l1BcK( zwxP}@1zWlPa!<4nn`b+LboVbex5Iac)dQ6a4|A~E$TJC6pm$kDvRp6)|7u^)yuzoL z7r`fphT3;m2r}9}k2N6M)caC9cVF+|tbT+E`-zt;Ji?~HZfs%h$C$owb-n_I;1kha z#>mW7#ANY@|6gv2P31B`mg{F(!2V6XCzs;woV#M2+^b!c*{9f5j`lvpjMhW=Y4dsl zFp#LBa5J_mm@iGL5udk{TrF0I&S2>#QA<+Rq7iPQj&d9$YQd{O ziT-4mfsck_&^FX6pp#ge4kfqpsF+w3&W#OJ1*bR;>fF#2ex9W(Up_n3{)hR5jpwh% zf$TGKT|mj}5<_9B+TE=Y{Nnf$QKptAz7Zd3t;E-K3f~@Qv1@Vv0UtD5{&B+{eR@x0 z6&2N=saWENpbho3#0hsZzs_p|ZmB$sejx=FMInkt_Nqir}&KwbD!G$MWl z+5uf|0>cwU1qPKPR0TGj+{EVS8ONHz`pPz;Gt^Xfpq-&$X1{qjIv7|XnWV+8P%_#& zL};jQ?J@%vu97`JfzxS=l4CNo&Bwu4q@Uh0zbt}M017FXkM~lVISJD|Jd+wqRiks+ zZFn`$V|syok+U}$>tl>Z<*xzKe|dcf(GRStJ@>uia>Nu=KfuVV{IBT>(rNJoJW~IL z^~4MHt@a|{ocxbqLq@M4#TJ_?v!~Tl0xY+Hp8B6FAE8~|=GY_g3x|0A(kBknxPkCF zJm2=olfum^@)U+c?fIG|v{Fp=HZ|p2dfJdaU_Mbp?uFGVEQ>>d`;?iz2@FM#Iz|Rs zT4b?~~> z;$rT+_@CspE|MS79h}o>OIEYOzs!$7lwX>^3S5e8(>BI=)n#nhZlB>a>h*oeUFbfC zHBt~XUCI#aFsj&--AYE5OhVJ7@5ZNCAE5_v6gEVdto5{m34tla|pU8UE-Lj|CXeJbD<4XGfQpDG-RLeGG2&hqM>A$g1`Ld zO(GJBJff$;cbub`P-|^B0+zxUdywseZg$SZ-$d79@7NcZZ(z^3Y+*a~$npVvU(_hS zE&bA*Zyw0RFdgk?`&$uLIjFsV1UM4BC#=hN%D=!UxRv}otD$(2fOMh(wJJ!m2ETQpes7UV-h%yA9T5d+0>*%G7Y>qHDe0R@)^Or)Szy z?5(t>_*de$xWU|7i^&{jj^K>3SG85VT{r41gHDE4^4H;35=)^JdakvnwSWz8Vr7t+ zpKzlDS_Y)4{!PZY=1k8P?t>BHB1{iltF03}68Y2ZjXovS12>r>k^6@y0ikvSS!qoQ zQ2y~_&e)~`oxlfV6gg0_E8T1h zjG%7cs^k;#El>~Ybo@}XL;P=32ATuC7D?h1=4W5PN6Fvjr__0%g0|4{&9l`6N}pMS zJ5zcCjIkb-a|`qRAGk>8D$GgD7Axz?k*U~0I*Se|N)u6SA3uiu0kMIg-VG@iI4$NA zMc~Wa%IapdI#?nsM0S9KTx)1lyMboL?bUGY5A0PXv2AG^bfWTIorPTE^Tbtwq-Zd> ziHOvBXh7oMmCNI`sR(u$amW8()IF)XnuhL+YY<_~f%!Y?RlPqk*!&;TK(bNI@WU-9 zi8Ih-d>OK+=}l^YZ=q_>_VeRG%o71ECA9;^a0h8US0*1;brUYP$Q8=px37f;ISy-? zfycoka5px&S$Md`kw@-ubhG{KeTP!aY)=E-L={f0X$ngp&DRnUQUBADO)&|5f<5Dj zz_hGF>lqtnBgiGWZvf410l$bnlo(~H3aB1 zAk{X6O&0gXO+>BuMP)w!R;(8J@ao0KfhFqbE%_;O-q({~G=vX?vv z|8wuA!Zf8fyGi<<_f!aXM;I4UeeKf<&*AmSw!$#rIe%VFGL_?6;Nywvt_x@tsGju7 zc~3mdns+xtuS%7Qf7=_;G%+TjlVKou8c#A$MW$hQv>KMWKoZc7FM^iv|LQ44-tG1^ z07{sU*g`Zu;;`^9cAcq5bkA5PREibys_(uZGB_*1R&>;O0?Cx1+te78W7R) z4>W-exQeMds2{7v;4%iJM@HEHwnl=z!I9J($>o}7@9d69yc|&|Sse2?3+JMTq79H( zdvn_udRg2><1K8iEf$FjY%ll%(ez;7bYmkv&R<|lQx@4{rB3F$%o9J!I<2MF=)BB` zP&mls#r;b!!&Vebk41`MZ3W9@m+E@T2cQ-FkPqdIek5uje)+F`q~QospoXb z7$)UnEwvQ-*YxwJEYHn|O2e@h9TYh@(btzW-M?Ju7Woxl$aG$>b*F zz6*2(D=pMH{qZt+q*}vXmcA3fD-PaXo-x78tkLiS`LOwu zBb>g5H5UIRp96p7i9|$j3K!|JnbXZxgQ%G2QxbfUFeq(OOzpWjoT9L5>B z`4X(C2xFXsUNM^aH+Tj%75jkC7lSaU6UhD*c9S*jt8M+Up0U@6WvbrzwC#)iPLb>v zDI6W8PI8CeP9o>D@J=JTDj0k#g#sh-v>Cat!4 z{9S$RptJ11c$^rrZKXexS``Q{NTPKfq}Icf#EpxeAby~FCH0rRfhVG$sm;X_b+MoJ z0j9kgE&{`P)QvWe-K^6XL9?!RmIv&3-xpM8g8)C1l#S(ikb!GQVIM* zxhpaj-e#?@V!9J-jx0H8b`qbCmPbVT74JkU+p83mArr}iyxs4P*Q7?=cDX*e58fkh zChcf6J_&xs$78eOSv*68CT4>VW>oHWaR5Noq0wG;U(TDY9PlM~74IOT4mw5)XUc`wFFF;%n%$ z`!tcNUUpRVUWA4_3aLHtC@`Gd$%Pbr1ui(<U=A@ z!9BRTl*2!vBSfRWC3jJ`Xma*aUuW)GQRAY=&^z{V$$F&*RnfNGQjQ))me`Nu8S)e? zE?8oE07f|r{Wg8+c%HhXMKwUg6v<#6ALzAhgmpWeV>nLrVq?S?F^iGsau3HL-rzqe z4ZstOUCoiM#`Y5aqE5-GA~)g;VqXOSW{GE*na<yP0```f;5RKaYlP21i0B&A`;u z4st_su0#NE7p9G=b@U``qMVFTdXD|1KIi*S-?t=|?6=R8L*j7k2fvi)g0z>Kt0B^B zB3YOO_7UFgN)W#ke)me&=N2?)v+a<*mvT$2HS%K12vaBqvqf+ zyc9c}UyECf&x6juVDVS|tuwlyg{Lk3o#u%?u&fRAlt;nrP)nw1nTT4qsc~pcELKv` zm*Q@;VQ{rS);|!0^|sC{a}vr>HgH0|T^!5l&bnf=G>o0&_!Vs7LYu9%G{ag4$+5Z*oNA9M^!ZV_W;Jwk-)KYLSv{7%P)$y?)vw#dGIxNh93!Kn1P&qq$e$4Zn|$&nQF zvw;5!x-n2&nyOq@PKr&iNo@1{sbq#W1$LpM0;3|w;ur^L_3217P31U(ND2NGJ-j4R zY|j-d?NPhpl5VJra^K5la;aFA+?4b^`XO2a_)J|^hcH*AI~t~pp>jPz{vWo!?{BSD z#4PLpH&=B9{F8$)ql0Ahy%(wpyS}5)IobnUo zouZFyXQ~yvOQ=pb1g8`im=RoS919FidSVVIEqE!l8h9WULJ3%Nz!Z_pr8+J(O%;c- z_v0G`b^3#LM%)yiuDpq-xSH0D)>hmPb0RrOZlQ*;hxI&JH7!JX04>W6Pv4_$f}->p zYg*)IEx;cG$LUnX3Q-f}B%SsjW-C)?#YR(=&{1*#!_#XISQ+%$19wt9p zUOb#oi>;=f*O;QG>@&8lwM_&o!ln5qW&8lM)gOg1)e&tVVl@Namv>)H32$mkZ3A}myJpaqQMh-D7)VU738Mx0Z z(8=>{#BbmO@jvCJRb_Gu!sP6T{Oo<06o47@N9lO(a94y|oK67kA zDO@vRug~TzifSlbA{$BVJac_jsg=81NmW~Ilp9J(U?VP+IV4RH)65027uBxTs_`%{ z+r}_0;;ZqrX90AS|ICNEei)idi980)w%-F671vcxtC(@Q_?1OHmuwFXcifrjOm#FN z-oXp`8?Hb6SDxZK7^8JQT3zRKw$Ski-H|&YKA%3pjwCnJ2bA);J)u_WL2o&w32;gN z0n^4HJ_;kX@z#O5$)cV0DVa}S(V39Xh>HGc$P}h1b}n4z{+6&phLNYpededV4j*Z2 zY5l>CV2))?2W~PYMRt2LDm(Uwp7yoNjdRoGwcu`X13VU}lGWUb?kz(Jv(VHgW=*onNVl^g_ZEIO3Kae!kD?GzixL-4_oOZCycce*i_8d4* z(A2tsxdy7H)3+eh8^UxD&Z4)V23R{wd+BwipBo}&;cJEKmY;APz?}oD{bklmv&W3b zZH3@ezXoMH_lT3BQEav&1=^{W;*!={ig4w?4~^3^dhXE_kH2%gF?g{cRroE=Y?RJD zfl}F;_WrJ+*f2Gns${c(|HvKq#bU92skW3za-C8m67-HUxFS)(&)Jei8Jx^)ke>Sr za|(RvXwZ-#9rU!PG-wd|GND|cp4z9VB^d!0QfZJ=IIqmpPrGgH2yu|jfRY_Ma@z<0 z3x4FX3-k0gT5R}2QyMi?+e-1SLC_@Xu<-{G?KrC~CHp|<(d5{A=#|15fmCEIv?*q` z;{Z-FMZuZ!0^Q!YepfQ*CDurFoPRkRkY{Yy#X@qOyxB9vzX=^9UPCLY$>0;t;mo9r zRI0O{{5&SX{heo#{^FvjQ&fNOG%`kdObiF=kZ^Dtd8OE|oJFSMpz8-+9!~%xY*p;p za(QaF(8RHvOHnxyRcFEj0G&3&jtVp*ALw0#4rHv{2@2uv(iq*I{B8XNRRM{Do6g$0 zJ@x=v3o7R{h+kE`MW_9AZg=*C3bA{UzrEL}nzks%Mk>GHqL$$8NPQ7s1pX@;rUaC@ zihsvD3P|aW>VXjR1-=E+UFuJnl;{2@F=@_Ug#p$t40VkR?f|w~a}!GVX3pWw#s=u% zYGuBV>T5%`LKD!LzA|-vZHIfbXdt_xlu}*#pk^j$=ymz5ln%a zlaMFcp&!m!a+Wq8^+TTw2c(zQy;=utfQ#Up=9$RNcyISxb_MnUzG>f1ppHt+b#6`K zUMVy8keWhn!l#J09NitSu(?=e79<)aE+!r#13iP;$y%6ur#uq1pc5Pu_;OgBa;4a- z-WIx1@$vEMZ(ys_j+F@!F({VWZtu~awM5FhS4 zPHn*QiLsg!J6v4DG!oqq-#ojKr!NudSfI62&IrT#FnmpLh@N{NtUDTay7sWY}q>et-J3RlOfi3jRZr*`GM`=E$ox@ zA+`ox~-`3%}yGbZ*c3!tTzo#;W)fwh*l`U~jYY!|UDxuNcQfTowcWWdsPw$^1Q_+h`SFKHfDk)UU{GCu;VXOQ? zYz9r#K4W5GIx|76YoAd%fzF5@%E16G4MNtjj-;hfvT{K-ptZzx@OZM1-UD?zwi;TB zPxHKvDpV@?P+8BLIFK#jYoLQ%9r^dr9=0vNz;(g5QT$o-LLNwbU<1C9NN?n~b_g5b z(C@Fg`Tm>Yc!)rQa3ArwQj4#{fzB~xh<%nY#SB56*k!h5@JI5hFA`n{#SqsZ4ZA0v z&aHyQQrom_eiA=|_sJcl=gLCo4WxiPl51B_lfT5Z#>>Gd){y(Obhz1|^Z0LzlM64Q zX^tMwI>ikRq=+-vc%3f2SNtL5XdlSM7)OLt?VW#bxFI<$r67v>#R@+W@=|0 zh4zmTADOfqYkmcEzH1ivw(u1?p4h+_J6AM2r0wEIN5jG&!*=``YZD9XGn8+xxmZ1v za%7UL!~b(_a9r_y_sB<2$>Z^!&=aN;ZBXr*_kADH?uoUK4&(`3lpOY$q{Fe_?SGv4 z(iQkG*W%3e?!KNH)-bKV-9*(6)CexK`J{oi;RK6y+am8)s3TIAb6>8VyHcq{jEL09AJ!noc9Q*VVi^Rfr@cI zwh0ozDrirvQDAn_2%!_~m`5&a3B!dkG`^v_{~ z&L@j1-Ap==ZPpC5tgxICFRymG(L>56tg7oAPe#U@-$BVlucl70s$&(FHe1SGUs1yyPiqtBCT>vL&}H)P&ux)Ypb>s&BmU>^SK|zZWd5?(O|sZ z_{MXDU&h!G7ahx*LrNBw9SP>xO@~YBt`^2z^y5VEt9RKT;i(Os)-X6yEZ$qC)J*@ znN}eGP&={L{57Z~_!FswE@NEw9b$juNjOPoYgJNy6r50OeuKSjy`4wwpXJ4lpj8T(C_63GxuBu=Lw~H}^xl7py1SlW zJLMYOD#uZ2`_Y-yJZBebvhWJ+C(lB+O0v33Js^B3c&0x&gV3GG91L~UalN;mA zLTr!(t_U$mJX(u3kdMW^tXb%0`b{4LKI9byyrkb=;#kJ9+CRE!qs&{=6)cSmoQLm` zLrR~s6_w}WGcsHouf3Ekeq7upt`6oJ5Baw71EE-D0G{XnXsWGF(78!%=&89Wcso^b z#A#M+wtlPqNQAH~y%MjAo^U#_e@&OrSF!EPIu{rHEPJTsc|Dv0o-J1>EF*_Sy5rLV z?d8WxBvc1Sh+%rTv1R-LxH8wRsmb~$)*$s|T<$;Oc60(eJeXMeHEuqi0(EnC)aNZ7 zlGf|I{5nyya0pK03JVsKRSA=NO%8WiRZ9?XZ6R+-&C$i|IHkLmggz9@&|)RP-buJ3 zmhnDln%qKM8P5>M5RIv*Px1Qjb;%v2#=sS#r4nzA4Q$};ToW?e=#Dg$C9bc>J7pRZ z_*O_asaDJZX-K@8Sx>-$c6z6?g#X+64EzOOjiLh=$>b8!uEF!@#@2AAik9j-8*_wO zRn!I;M5$UtsHkI9~Ju&5sp?Mm*m1+Vq5iu&KBf|C^yI}{(lh%;<3#I zZ?lMQG}tQbwmH`>?f zIkySE|Jcjsrg#(IQsNN7O1m3%!@A+!ZLe*knS1m`^n^jhU3pt@DtLj4Ag0non|&s&p?($%*nrCwZazV1c>m>17@^s?lrSuuR=Cvvau32&Hfl#$));V5d@cm z=1A?4-ro1bc;;?oj1cb~2ghOCeQT@^@G{z5TguwV_3*;{0=WhhELf*yTl3jn#52Wj z?28&=K(Ge#h8+y<_uX~xgv`G`yJo9X+1j>)Ymu)mbxPxfuErJ`^{Bzu`OR-ylZ<@9aH1 zRpNGw9MVZBqM!t`f7Ffzl(%Kr>`;k6eqWbaX%OajO2gW>k>Lq z*w~GAk=vLe{AjsJhy&fMEU}*FYXCb<&#ax%aC)Wgqo0J%;TyW+lu=waPnq8fmBX$U zAdazYD4l`s68nJlG03_f97#@8I%9=M8Iof(=qKLQ?mF^*V5t7)s2z3!+_fvz7DcUf z=R#@V17T#$a-o&(-Dx74O%d#WK%@_e%}3j?uOQWSTdBm9a9T;UG=Xc)R)$)L$uLN! zi5dJqjz-4TVv4V!qcREEaitTV!Mzq2=!x<)*FStK_<6nV{CejA|489Q@TyW5eZk!- zI0CuAdukl+bb|IuaS_a3;Tg0D?xQ=IF*3>gGRdS8$1hTi7Uv*os8ruhaTsp^S zP~HYc$(ssWz$YE+ok_*b4k%)&*x#|)_e3g_5&~Dqme>~J1U1>2Ll&wps2SeMQd0B9 z@I~=H{13cLpD3**mx+()E;7P9O>1r?zy65Rl!9lg$9#1Rdb$hYToej{3-n+y>|2W|y=u-wQ(}u~Ygr;$^`% zcCP!xdO|YnCw&+x zX+TKQ!ifF4yS=i^LnoYzcg>6Yx4@MCK;36=O!W)gE}RaQNKqDoYkLY>jyy{DAb@MQ6mjTe^c8_n`$ zE!$Z80Cy3!#M)&p$x~XxxRCYJt6iKcqHDYX=Ugq zbr!4cGTDy$Bd~quKip64l5enKL6Vc^`3?jmHH9t|gfTg;0qk3HW?+@`75E;DMVEpZ zz-qCqV2=K*)C(@rnMJ*vXa!#m8TPpSn9?v|WB@+_~svr)X z%XY;}F=R7!3NVcOMAjtHy1kYA(3^r9uG{{G{w}U`>kB!9YYomWSuRZyS8BE7 zPr`E`$IwRZ4PN zF6Qc~XBeNWf%p@9Cr-_B@kZ*o(g*!i=;svmLv}gF=<4QoTkm4SsGS5#4JIRVX-$?7 z#WnF%fEuaGtz*&i&`GwsG>d1^4%j?XmSc-`j|2yvONq{p+zWY(WiUR6?<_sEzi0J| ziFG%o?wi1EQ*{bP=^XF%n$BC!QNnws|0G#Jq$F*XZVWA z-(W6_yt6CmL@$_3VEd#hi#SJnYSf!0h- zOWZ;hxGzL^ur{Sk=pA+g_)S}nw!mikT(%79yQ2frS*t@q(jW#`UEpY?4*P=miQJ%W z%J118)^>7yY=-fhdztu0T7c=(Low8m%Wf1Gs&(1#;vrXZ;WV}0?#0LlK;urfz7}Yq z&89wBHy8G!*GR>t6ydKT2CV9OF4savgX0`W!C}f_$2%(=(CvQoPjAJ*5NsxQA;Gg3 zF8c0zsJq|C_YT?^a+)|B9W4KaFBYe&+tq)${qCvkOlNcSJ(7-{by{5` zER)FlRvs);lJie19ZG&62JA8WOqr&pn00yxIxqmLGr8-m;Ou0395WJ}hj$1BHh)G} zlTBHh3{!7lR2<6bi2^ADy_h!%|1BQ&GrC1?uD7y2=9n0e$xvXJGga89{wtt)Wp2s& zu4F=>sy&*lQF_FGONtP)$a30twYj{I-pC2TtEo=?Ezah+=c6vT*ck#5mgi;~juD6zi!4EhlIAC}?W z%&P@?NCR{VV7K4q2Kf}$E-ygV0E^`uC`8^5ruchhbwG02o4Kcg<$)MRw65j?#Bjxz z@QNHD=Ige)-nbV8q)7R=?~?B|dM@6Hpr&x27kU{H3xD?2KsHN6+%}Wvs zVrnRNwP>`pc1PbUPNW-)Q9?^Ys_lfQ4ciXiCNcgo=ow);D8nNhm%(B7f5CC=JM*>B ziSTVGTsuY{LK#bv>pfG&dN2B@Fj!oYn}*$rJq3F?0myYEu{+Fl)#mh8ArCkRfA@!> zUy%&2(>C4L+Y<{0v>NQk!g0b%HZQ-CfMLb@ehmW&-$k>a*wCY<1ya+zf3U5#BVaRW zyY&zkDUHByWX(c$kmdC>-`fH=+DbCU^ntGmH{q(ndU!AQ#J^Bn0nXFb$90zXhwb&4 zktbUkn{R^o>^=W*n6ZXR4BUTrK1d^vZFt;Buv~xv_ez1_K&?+wc zoy2XGrtTT4o{(CT71bB?4K&93vhg#!09IDhkaY1x;63bhU$;&H8e*;4wpe}cCU^qA z&VToIA;xkda#=c#Oz;#@oco;ly-CbaCu zTub{_+t9ps#*^S+UwN^u(1Hv@4-nbt(A=J$srWO@E*{tUoyEwu?MqDK_l&e3MO)f8 zGC^-`IMVGDpHPd%hCGZ9XLW*z6mUO8w#a)CKgIQB@q5h8uPo@A!*LzKM6C@daeR?8%{s%D>bt_` z(r?s~LW8F+unMXmRdgLK?1T>>ZiI2*Jl8|~vHV875}fF0?<)ni#Rr5p_*uO%;VeoA z^NlCKmP#w<8nhDFInXTXO5lkgXybwTNV+y!J0lMz{q!b^ma3`yoJ)weaj%r;jtA6z zdJ}V&edr1;+ZO$e>(q2vNo32TIv;KpRk8G0S%Y9{@sOnP`LhB)1FxYa#C+uw**QVB zviiPnH})2D$)*;w#G~eBPP6vG_5wzUBL3f!ul&HK&BW!+4{0NG3e++zPECZzu@#)3 z#6hNEY)Eh{`&(QkF10?#Mo1^r0p=Y0etLSrF)oW-ZdoMVa114A@}>~2UMbkDa?Q%v zzD%OpLK+(}5Us-g;SY*b>|wkSK(Kj z5u3`-MIVtDMA_Zklu4!P23JJPv@B32k!^GLOBcjzxK~>c%{Z6Vd``vE0F9bxnr0 z?0dqbkRdLTk4VUl_a)2~2aBXa@h`=r=zXl4tvA_%PZ2+m+a;jUWwoiERn~P{oCerH0r}=g0QY0xnA?_|BAtz?-Z1}R+xTzOb1cQSBx^e#Wqc>svR=l6 z_Nj2P`5<`)u^@eb9nP9`E;?J>=f({gN=>|?+})Dwq1bKa+UO~Cra~)n*Ni%KVT8sggq*T;jQ&F=UlA0ZZUaEeuIL9 zhhI$IgLadC;1PP!uA5Dvr{?ASOW$E*3n2vO@))t4*h1Z?-|MsJR*v^TMd(u2#@!Qa zm2$#ruh+LNWm;Ry8q0g6AN!MGEPso$!O2qRItFsEcsO^cKO1@r^>ZIIZ?sZqimgzd zhfWtX`W$+hC#A3Uy5tMEDt(-(!M!UGm_G6fccD^_DTfzV|B(Ntpt7U0doEN@y~ixY zY)m3IAm`!MUV2Aq`SxgFljl5K49^q#QEiY|@)5nsw9NAse}XPC?Z+Eutr6|!iq_S- z5x9yflUM1BhGl5JeTDjs4#zG-k{Lm2Vym17Of7|l#7JKv>a%o23g}1ZnSwpyM7(O; zM*mih6Rv@?{U!dX`OCST{3785w*}Z|pv+E@9u&ua$s5#W>HtqyOR`QacgaiW^U8T8M4piJ zxRl1cwyI>5mdK`P=lD#dbWEL#WCE5pvJSh|7-&|N*KkD){3(#1}#u8{q*~$FoQcJWFSt;7`+DF&21nV z-#g_eTq@NOGZX%}$78>(81}KK50oyQ@J&o;z%`||8DQ#`dYtU&+s5r<$2%xBlHC{_ zW38oUzH;V}I-~pm{(wxF{x_4EJ?} zEb!h2C-S;LO@o>0bv4bmMo72jV-#^Z{<zlM&jy&+N)|uO`PRl8@v$j=0 zf_0iO&`-tI-1gJbEGOLOY&0tH(fV4qIo(8W+QVY|0a?&cG~atrEd>YogS#T7u;Mo0 zq?lW#6bMC^gEuYzaPjPLfA6}hBPYluo=5B&PY+8)WR4hzx8b+t{9`JwT9CcsKKg2~ z0#}|}NRJkm=)}ddXfwUxH-<%#NM9}AQMwMe7>uBdVN-y`eAKS5XgnHD%%}IN$GsKV zF}4Q$5WWQL11e;1w7&R1hR(vjX|)Z*xVw&ROe;wmm$nn!o#E~r+}+*XZDUr6Thn%i zySuwPe89os@Z~?41FDGkbJ5L;bU#?59u;j!(1A2n4Js&|&uDYoLHqAaL z?rKI#Mn_>6SX%7}o%8k6-=Il2#&Lm~CS7z)wP|dQ^{0MyN2)#osR~`GpAJuzidjF? zQ1<*U3ENn10L+_2PBh~*_OVt(i(4Fn27654$^(dLHQ!L+k87!%*ccXWk zz2XkOae=FNw~UnJ-HCp)Pq{9S@>Eet>`^Eq<*O?u_%Ajhr=HvGRBR#OGjc$`r98A} z(uMXe=o01u`$VZ`lD(G-ONrJ11SV_0q!uENp9fy&#nRu^gLDFYhZrLE3jI%+TToS= zjIXtSaMujHp`YTNJTx{%l?{_6sO+SBD|ej$TrRJ?*_W=Bn&CK0D0%gfZTdG?HddT| ziFt^EP&)e4?7g4Z zv2U=kyMmr}s3tQYYjL0-(}{oFmvNTc&|k1NM2jL3pbH-Q5fx4tx}|{&6R&UTPru95o%KKJKtYx#jk$Xh^)J`WR zk!9h=_)FK4z;4H0X$1lo1=aH5k*1@3z4{J%74B@56*_V4Om0X^sG6D68s^*#m+?HH zm*cMsZKRGi4vydv=@@zy&C6=+a$CQNnSn>tyl{=!2gY^!hv%dQg%&w$2QIT+;-Z~{ z)pOxV!EVXDl@npZh%Z=xm1SQkn+XsaNv}2DC@pr+llqe5k}DNN8Smh+NwbObMtbi5 z^zYl=sP(Da;`rpx#$z`nRhJrvuX(Em>Ifb8L#Z{Bii|lXm8N#l1^+tt1KWs&;!nk@>6_N%T-RX<4(;Y`_Oz5ZH!5@l|4aj!N_8qRfftShcQ~QTz_++A<=HMqIpqb41P15WzgLiGGvZ-O%CYUGw zB)yi+@S%07`EKZ2hXZ z4NPJ_P>>@%>$JCRA}h27*8~P3CN;wMEmb2ApcO82Q(B90cNco`|L1@ zpHlho2hc^<2!4l3`~F%H&+YgKZ7o93hnZ`>M*3a+F?S%knRe3Gnkd>o%F;`w2r4hl zJ(af6HJOqHr4F7nwgl(9L4lV?7!S4Q#2?RTGTMEF*h@KI5bJ1{V<$uU^ zr~)!iN_M;VpEetwBPz zc1wA`cM^Dx-{GpVU*LS8pG~Yf5e=coCTWudw zcL2xcKcf1xrl*@66Fw}?)h05r5T@(M1*osmEula>gUo@OxvE5+r5nIGOfgimHY1P8 zN5t-WX{p*?6WY%A7VkRd1>N2yLVO(SHn{i9o#^+p9zo8%P>%|*nKe<8TI)%&~3!juvi8CWEz}fOXLFQHM3G|1) ztLE=6hVLRLS~Tt!oXDoe(yj{P_KZr%dMJhevFBFYgwT9p3m>n`QW5_zTTbf_r90O< z1pOVp9Pvex#m4fxrsOf{f6?SjYh9_N2@*W7Zzt$L$!%Z5E-UuBN}DUlw# z95AHzq$eq#xM+N^Kj+4h#q=}c7c-eM0ZvNjhTMftXRjvL;yZlD10|KZf?{?9=KGdg zJ~*cPALSm}rYSRt9mv_*9c(;YT-_B}S|7k%)1w0|=XBTV!gfK8-ZfJ^yK4GN%%_OBQpS+BL-}z$f0m) zX1LhEQ5bwARMI~IVFUA3)^)K*@NYsT(#szyyyNJ_yh9d(Z5-DW+9(|}Qkv_$2sMEh z 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 z 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 z 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

    M7}gXl;bU*WtEo4rE6HFiJrS@8ATBNS} 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%0A>&4*ju((Yl+ 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 z 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ⅅ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%0A*0AZ&_fIFE6m1{ASu<_USOSzj4rX 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%0A;zH00&NR{nBSLR%c6fEV+{_i+8uQb-n=O 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

    Lw>kX+dva(x0Y2T>#2EtY|1BU7VeZRDc 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 z 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

    )Nrja|dF%zM4 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 fM=O+ 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 z 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

    eT7AVdmBH)s&Wx`A>nbLyIKWw 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

      2OtQKPwt_=WkDf&Km362* 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%0Dfd7PT+b-rx&~%oCg5;& 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 Mpl>_ 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⁡0mgUKlJPD)PFy9guUM7;u8osy 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

      !qOFO1MCDx2QLQiy%!rQIv)p=2b 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

      ?45C;2y2 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

      riQ=f0 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 diff --git a/apps/authenticator/src/components/CameraPreview.tsx b/apps/authenticator/src/components/CameraPreview.tsx index 57b37c8..b32ff49 100644 --- a/apps/authenticator/src/components/CameraPreview.tsx +++ b/apps/authenticator/src/components/CameraPreview.tsx @@ -1,19 +1,21 @@ import { useEffect, useRef, useState } from "react"; -import { LiveFaceGuidanceControllerV1 } from "../walkthrough/live-face-guidance"; +import { startFaceDetector } from "../face/face-detector"; +import { faceGuidance } from "../face/rgbnet"; /** Local framing guidance only. No camera data enters synthetic staging issuance. */ export function CameraPreview() { const video = useRef(null); const [message, setMessage] = useState("Starting your camera…"); + const [detectorStatus, setDetectorStatus] = useState(""); useEffect(() => { let stopped = false; let stream: MediaStream | undefined; - const guidance = new LiveFaceGuidanceControllerV1(() => video.current, result => { - setMessage(result.code === "unavailable" ? "Face guidance is unavailable. The preview is still local." : result.text); - }); + const detector = new AbortController(); + let candidate = ""; + let consecutive = 0; const stop = () => { stopped = true; - guidance.stop(); + detector.abort(); stream?.getTracks().forEach(track => track.stop()); if (video.current) video.current.srcObject = null; }; @@ -27,7 +29,20 @@ export function CameraPreview() { if (stopped || !video.current) { media.getTracks().forEach(track => track.stop()); return; } video.current.srcObject = media; await video.current.play(); - if (!stopped) guidance.start(); + if (!stopped) { + setMessage("Loading face detector…"); + startFaceDetector(video.current, detector.signal, false, + (faces, width, height) => { + if (stopped || !video.current) return; + const next = faceGuidance(faces, width, height, video.current.clientWidth, video.current.clientHeight); + consecutive = next === candidate ? consecutive + 1 : 1; + candidate = next; + if (consecutive >= 2) setMessage(next); + }, + status => { if (!stopped) setDetectorStatus(status); }, + failure => { if (!stopped) setMessage(`Face guidance unavailable: ${failure} Close and reopen the preview to retry.`); }, + ); + } })().catch(() => { stream?.getTracks().forEach(track => track.stop()); if (!stopped) setMessage("Camera unavailable. Allow camera access, then reopen the preview."); @@ -44,6 +59,7 @@ export function CameraPreview() {

      {message}

      +
      ONNX processing status

      {detectorStatus || "Waiting for camera frames."}

      Framing preview only. Images stay in this browser; the staging issuer uses synthetic input.

      ; } diff --git a/apps/authenticator/src/components/DeveloperPanel.tsx b/apps/authenticator/src/components/DeveloperPanel.tsx index a1889fa..f69ef09 100644 --- a/apps/authenticator/src/components/DeveloperPanel.tsx +++ b/apps/authenticator/src/components/DeveloperPanel.tsx @@ -55,7 +55,7 @@ export function DeveloperPanel({ records, unlocked, disabled, incoming, canIssue

      Camera & issuance

      Preview
      {preview ? "Open — local camera guidance" : "Closed"}
      Guidance model
      {LIVE_GUIDANCE_MODEL_V1.modelKind}
      Runtime
      {LIVE_GUIDANCE_MODEL_V1.runtimePackage} · {LIVE_GUIDANCE_MODEL_V1.runtimeVersion} · CPU / WASM
      Staging issuance
      {configurationError ? "Configuration unavailable" : canIssue ? "Available · synthetic face input" : "Unavailable on this server"}
      TEE face verification
      Not connected
      -

      Landmarks and framing heuristics drive the camera instructions. Camera frames stay in this tab; they are not used by the staging issuer.

      +

      RGBNet face boxes drive face-count, centering and distance instructions. Inference runs in a dedicated worker, one frame at a time. Camera frames stay in this tab; they are not used by the staging issuer.

      ; } diff --git a/apps/authenticator/src/face/face-detector.ts b/apps/authenticator/src/face/face-detector.ts new file mode 100644 index 0000000..23ffd45 --- /dev/null +++ b/apps/authenticator/src/face/face-detector.ts @@ -0,0 +1,110 @@ +import type { FaceDetection } from './rgbnet' +import type { DetectorRequest, DetectorResponse } from './rgbnet.worker' + +export function startFaceDetector( + video: HTMLVideoElement, + signal: AbortSignal, + diagnostics: boolean, + onResult: (faces: FaceDetection[], width: number, height: number) => void, + onEvent: (message: string) => void, + onError: (message: string) => void +): () => void { + let worker: Worker + try { + worker = new Worker(new URL('./rgbnet.worker.ts', import.meta.url), { type: 'module' }) + } catch { + onError('Could not start the detector worker. Check browser worker support.') + return () => {} + } + let stopped = false, + frameId = 0, + lastVideoTime = -1, + lastSummary = -Infinity + let lastFrameAt = performance.now() + let timer: ReturnType | undefined + let deadline: ReturnType | undefined + const clearDeadline = () => { + if (deadline) clearTimeout(deadline) + } + const stop = () => { + if (stopped) return + stopped = true + clearDeadline() + if (timer) clearTimeout(timer) + worker.terminate() + signal.removeEventListener('abort', stop) + onEvent('RGBNet: worker stopped; session and pending frame released.') + } + const fail = (message: string) => { + if (stopped) return + onEvent(`RGBNet error: ${message}`) + onError(message) + stop() + } + const armDeadline = (ms: number, operation: string) => { + clearDeadline() + deadline = setTimeout(() => fail(`${operation} timed out. Retry detection.`), ms) + } + const capture = async () => { + if (stopped) return + if (video.readyState < 2 || video.currentTime === lastVideoTime) { + if (performance.now() - lastFrameAt > 10_000) { + fail('Camera stopped producing frames. Restart the camera.') + return + } + timer = setTimeout(() => void capture(), 100) + return + } + lastVideoTime = video.currentTime + lastFrameAt = performance.now() + armDeadline(10_000, 'Frame capture/inference') + try { + const bitmap = await createImageBitmap(video) + if (stopped) { + bitmap.close() + return + } + const request: DetectorRequest = { type: 'frame', bitmap, id: ++frameId } + try { + worker.postMessage(request, [bitmap]) + } catch (cause) { + bitmap.close() + throw cause + } + } catch { + fail('Could not capture or transfer a camera frame.') + } + } + worker.onmessage = ({ data }: MessageEvent) => { + if (stopped) return + if (data.type === 'log') onEvent(`RGBNet: ${data.message}`) + else if (data.type === 'error') fail(`${data.stage}: ${data.message}`) + else if (data.type === 'ready') { + clearDeadline() + lastFrameAt = performance.now() + void capture() + } else { + clearDeadline() + onResult(data.faces, data.width, data.height) + if (performance.now() - lastSummary >= 2000) { + onEvent(`RGBNet frame ${data.id}: ${data.timings}`) + lastSummary = performance.now() + } + // At most one in-flight frame; schedule from completion, never queue video. + timer = setTimeout(() => void capture(), 100) + } + } + worker.onerror = () => fail('Worker failed to load or execute. Check browser console and retry.') + worker.onmessageerror = () => fail('Could not decode detector worker response.') + signal.addEventListener('abort', stop, { once: true }) + if (signal.aborted) stop() + else { + armDeadline(45_000, 'Model/session startup') + try { worker.postMessage({ type: 'init', diagnostics } satisfies DetectorRequest) } + catch { fail('Could not initialize the detector worker.'); return stop } + onEvent( + `RGBNet: worker starting; detailed runtime logs ${diagnostics ? 'enabled in browser console' : 'disabled'}.` + ) + } + return stop +} diff --git a/apps/authenticator/src/face/rgbnet-model.json b/apps/authenticator/src/face/rgbnet-model.json new file mode 100644 index 0000000..989b9e5 --- /dev/null +++ b/apps/authenticator/src/face/rgbnet-model.json @@ -0,0 +1,6 @@ +{ + "url": "/models/rgbnet.onnx", + "sha256": "35e9bdee626e16721e4566d1e552ad369d8334658b7893ee62cf3a026f1c0d06", + "bytes": 1720022, + "source": "world-app-ios/Sources/FaceAuthLibrary/Sources/FaceEngineFaceAuthModel/MLModels/RGBNet.onnx" +} diff --git a/apps/authenticator/src/face/rgbnet.ts b/apps/authenticator/src/face/rgbnet.ts new file mode 100644 index 0000000..3648961 --- /dev/null +++ b/apps/authenticator/src/face/rgbnet.ts @@ -0,0 +1,163 @@ +// Port of biometric-engines RGBNet preprocessing/decoding and pixel-space NMS. +// Local capture guidance only. Authoritative TEE validation is not connected here. +export const INPUT_SIZE = 256 +export const ANCHOR_COUNT = 2688 +export type FaceDetection = { box: [number, number, number, number]; landmarks: number[]; score: number } +export type ModelOutput = { dims: readonly number[]; data: Float32Array } + +// fast_image_resize uses fixed-kernel bilinear interpolation, quantized weights, +// and rounds the vertical u8 pass before the horizontal pass. Canvas resizing +// is browser-dependent and does not reproduce this operation. +function axisWeights(size: number) { + const weights = Array.from({ length: INPUT_SIZE }, (_, i) => { + const center = ((i + 0.5) * size) / INPUT_SIZE - 0.5 + const left = Math.max(0, Math.min(size - 1, Math.floor(center))) + const right = Math.max(0, Math.min(size - 1, Math.floor(center) + 1)) + const fraction = left === right ? 0 : center - Math.floor(center) + return { left, right, a: 1 - fraction, b: fraction } + }) + const maximum = Math.max(...weights.map(w => Math.max(w.a, w.b))) + let precision = 0 + while (precision < 21 && Math.round(maximum * 2 ** (precision + 1)) < 32768) precision++ + const scale = 2 ** precision + return weights.map(w => ({ ...w, a: Math.round(w.a * scale), b: Math.round(w.b * scale), scale })) +} + +export function prepareRgbnet(rgba: Uint8ClampedArray, width: number, height: number): Float32Array { + if ( + !Number.isInteger(width) || + !Number.isInteger(height) || + width < 1 || + height < 1 || + width > 4096 || + height > 4096 || + rgba.length !== width * height * 4 + ) + throw new Error('Invalid RGBNet frame dimensions or RGBA buffer') + const xs = axisWeights(width), + ys = axisWeights(height) + const plane = INPUT_SIZE * INPUT_SIZE + const output = new Float32Array(3 * plane) + const means = [104, 117, 123] + for (let y = 0; y < INPUT_SIZE; y++) { + const v = ys[y] + for (let x = 0; x < INPUT_SIZE; x++) { + const h = xs[x] + for (let c = 0; c < 3; c++) { + const left = Math.round( + (rgba[(v.left * width + h.left) * 4 + c] * v.a + rgba[(v.right * width + h.left) * 4 + c] * v.b) / + v.scale + ) + const right = Math.round( + (rgba[(v.left * width + h.right) * 4 + c] * v.a + rgba[(v.right * width + h.right) * 4 + c] * v.b) / + v.scale + ) + output[c * plane + y * INPUT_SIZE + x] = + Math.min(255, Math.round((left * h.a + right * h.b) / h.scale)) - means[c] + } + } + } + return output +} + +export const anchors: readonly (readonly number[])[] = [8, 16, 32].flatMap((step, level) => { + const sizes = [ + [20, 33], + [53, 87], + [141, 230], + ][level] + const grid = INPUT_SIZE / step + return Array.from({ length: grid * grid }, (_, i) => + sizes.map(size => [ + (((i % grid) + 0.5) * step) / INPUT_SIZE, + ((Math.floor(i / grid) + 0.5) * step) / INPUT_SIZE, + size / INPUT_SIZE, + size / INPUT_SIZE, + ]) + ).flat() +}) + +export function suppressDuplicates(faces: FaceDetection[], threshold = 0.4): FaceDetection[] { + const kept: FaceDetection[] = [] + for (const face of [...faces].sort((a, b) => b.score - a.score)) { + const a = face.box.map(x => x * INPUT_SIZE) + const area = (a[2] - a[0] + 1) * (a[3] - a[1] + 1) + if ( + kept.every(other => { + const b = other.box.map(x => x * INPUT_SIZE) + const intersection = + Math.max(0, Math.min(a[2], b[2]) - Math.max(a[0], b[0]) + 1) * + Math.max(0, Math.min(a[3], b[3]) - Math.max(a[1], b[1]) + 1) + return intersection / (area + (b[2] - b[0] + 1) * (b[3] - b[1] + 1) - intersection) <= threshold + }) + ) + kept.push(face) + } + return kept +} + +export function decodeRgbnet(outputs: ModelOutput[]): FaceDetection[] { + const heads = new Map() + for (const output of outputs) { + const dims = output.dims.length === 3 && output.dims[0] === 1 ? output.dims.slice(1) : output.dims + const columns = dims[1] + if ( + dims.length !== 2 || + dims[0] !== ANCHOR_COUNT || + ![2, 4, 10].includes(columns) || + heads.has(columns) || + !(output.data instanceof Float32Array) || + output.data.length !== ANCHOR_COUNT * columns || + !output.data.every(Number.isFinite) + ) + throw new Error('Unexpected RGBNet output shape, type or non-finite value') + heads.set(columns, output.data) + } + if (heads.size !== 3) throw new Error('Missing RGBNet output head') + const boxes = heads.get(4)!, + scores = heads.get(2)!, + points = heads.get(10)! + const faces: FaceDetection[] = [] + const f = Math.fround, + clamp = (n: number) => Math.min(1, Math.max(0, n)) + for (let i = 0; i < ANCHOR_COUNT; i++) { + if (scores[i * 2 + 1] <= f(0.8)) continue + const anchor = anchors[i] + const center = [0, 1].map(c => f(f(f(boxes[i * 4 + c] * f(0.1)) * anchor[c + 2]) + anchor[c])) + const size = [0, 1].map(c => f(f(Math.exp(f(boxes[i * 4 + c + 2] * f(0.2)))) * anchor[c + 2])) + const start = center.map((v, c) => f(v - f(size[c] / 2))) + const box: FaceDetection['box'] = [ + clamp(start[0]), + clamp(start[1]), + clamp(f(start[0] + size[0])), + clamp(f(start[1] + size[1])), + ] + const landmarks = Array.from({ length: 10 }, (_, j) => + clamp(f(f(f(points[i * 10 + j] * f(0.1)) * anchor[(j % 2) + 2]) + anchor[j % 2])) + ) + if (![...box, ...landmarks].every(Number.isFinite)) throw new Error('Invalid decoded RGBNet coordinates') + faces.push({ box, landmarks, score: scores[i * 2 + 1] }) + } + return suppressDuplicates(faces) +} + +// Normalized source coordinates -> mirrored, centered object-cover preview. +export function previewPoint(x: number, y: number, width: number, height: number, viewWidth = 1, viewHeight = 1): [number, number] { + const scale = Math.max(viewWidth / width, viewHeight / height) + return [1 - (x * width * scale - (width * scale - viewWidth) / 2) / viewWidth, (y * height * scale - (height * scale - viewHeight) / 2) / viewHeight] +} + +export function faceGuidance(faces: FaceDetection[], width: number, height: number, viewWidth = 1, viewHeight = 1): string { + if (![width, height, viewWidth, viewHeight].every(value => Number.isFinite(value) && value > 0)) return 'Waiting for camera preview' + if (!faces.length) return 'No face detected' + if (faces.length > 1) return 'Keep only one face in view' + const [x1, y1, x2, y2] = faces[0].box + const [cx, cy] = previewPoint((x1 + x2) / 2, (y1 + y2) / 2, width, height, viewWidth, viewHeight) + const scale = Math.max(viewWidth / width, viewHeight / height) + const visibleWidth = (x2 - x1) * width * scale / viewWidth + const visibleHeight = (y2 - y1) * height * scale / viewHeight + if (Math.hypot(cx - 0.5, cy - 0.5) > 0.12) return 'Center your face' + if (visibleWidth < 0.25 || visibleHeight < 0.35) return 'Move closer' + if (visibleWidth > 0.8 || visibleHeight > 0.85) return 'Move farther away' + return 'Face positioned' +} diff --git a/apps/authenticator/src/face/rgbnet.worker.ts b/apps/authenticator/src/face/rgbnet.worker.ts new file mode 100644 index 0000000..d681141 --- /dev/null +++ b/apps/authenticator/src/face/rgbnet.worker.ts @@ -0,0 +1,152 @@ +import model from './rgbnet-model.json' +import * as ort from 'onnxruntime-web/wasm' +import wasmUrl from 'onnxruntime-web/ort-wasm-simd-threaded.wasm?url' +import wasmModuleUrl from 'onnxruntime-web/ort-wasm-simd-threaded.mjs?url' +import { decodeRgbnet, prepareRgbnet, INPUT_SIZE, type FaceDetection } from './rgbnet' + +export type DetectorRequest = + | { type: 'init'; diagnostics: boolean } + | { type: 'frame'; bitmap: ImageBitmap; id: number } +export type DetectorResponse = + | { type: 'log'; message: string } + | { type: 'ready' } + | { type: 'result'; faces: FaceDetection[]; width: number; height: number; id: number; timings: string } + | { type: 'error'; stage: string; message: string } + +let session: ort.InferenceSession | undefined +let diagnostics = false +let busy = false +let stage = 'initialization' +const send = (message: DetectorResponse) => self.postMessage(message) +const log = (message: string) => { + send({ type: 'log', message }) +} +const trace = (message: string) => { + if (diagnostics) log(message) +} + +self.onmessage = async ({ data }: MessageEvent) => { + if (busy) { + if (data.type === 'frame') data.bitmap.close() + send({ type: 'error', stage: 'protocol', message: 'Concurrent detector requests are not supported' }) + return + } + busy = true + try { + if (data.type === 'init') { + if (session) throw new Error('Detector already initialized') + diagnostics = data.diagnostics + ort.env.wasm.numThreads = 1 + ort.env.wasm.proxy = false + ort.env.wasm.wasmPaths = { + wasm: new URL(wasmUrl, self.location.href).href, + mjs: new URL(wasmModuleUrl, self.location.href).href, + } + ort.env.logLevel = diagnostics ? 'verbose' : 'warning' + stage = 'model download' + log(`Downloading RGBNet (${model.bytes} bytes expected). Frames remain on this device.`) + const response = await fetch(model.url, { signal: AbortSignal.timeout(20_000), credentials: 'omit' }) + if (!response.ok) + throw new Error(`Model download returned HTTP ${response.status}; run the RGBNet setup script`) + const bytes = await response.arrayBuffer() + if (bytes.byteLength !== model.bytes) throw new Error('Model length mismatch; run the RGBNet setup script') + stage = 'model integrity' + const hash = Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256', bytes)), b => + b.toString(16).padStart(2, '0') + ).join('') + if (hash !== model.sha256) throw new Error('Model SHA-256 mismatch; refusing to run unpinned weights') + log(`Model SHA-256 verified: ${hash}`) + stage = 'Wasm session creation' + const start = performance.now() + log('Creating ONNX Runtime session: Wasm CPU, SIMD, one thread, dedicated worker.') + session = await ort.InferenceSession.create(bytes, { + executionProviders: ['wasm'], + graphOptimizationLevel: 'all', + logSeverityLevel: diagnostics ? 0 : 2, + logVerbosityLevel: diagnostics ? 1 : 0, + }) + if (session.inputNames.length !== 1 || session.outputNames.length !== 3) + throw new Error('Unexpected RGBNet model interface') + log( + `Session created in ${(performance.now() - start).toFixed(1)}ms; input=${session.inputNames.join(',')}; outputs=${session.outputNames.join(',')}.` + ) + stage = 'warm-up' + const warmup = new ort.Tensor( + 'float32', + prepareRgbnet(new Uint8ClampedArray(INPUT_SIZE * INPUT_SIZE * 4), INPUT_SIZE, INPUT_SIZE), + [1, 3, INPUT_SIZE, INPUT_SIZE] + ) + try { + const outputs = await session.run({ [session.inputNames[0]]: warmup }) + try { + decodeRgbnet(Object.values(outputs).map(t => ({ dims: t.dims, data: t.data as Float32Array }))) + } finally { + for (const output of Object.values(outputs)) output.dispose() + } + } finally { + warmup.dispose() + } + log('Warm-up and output-shape validation complete; detector ready.') + send({ type: 'ready' }) + } else { + const { bitmap, id } = data + try { + if (!session) throw new Error('Detector session is not ready') + const { width, height } = bitmap + if (width < 1 || height < 1 || width > 4096 || height > 4096) throw new Error('Unsupported frame size') + stage = 'frame extraction' + const start = performance.now() + trace(`frame ${id}: extraction begin (${width}x${height})`) + const canvas = new OffscreenCanvas(width, height) + const context = canvas.getContext('2d', { willReadFrequently: true }) + if (!context) throw new Error('OffscreenCanvas 2D is unavailable') + context.drawImage(bitmap, 0, 0) + const pixels = context.getImageData(0, 0, width, height) + const extracted = performance.now() + stage = 'preprocessing' + trace(`frame ${id}: preprocessing begin (bilinear RGB, mean subtraction, NCHW)`) + let preparedPixels: Float32Array + try { preparedPixels = prepareRgbnet(pixels.data, width, height) } + finally { pixels.data.fill(0); canvas.width = 1; canvas.height = 1 } + const input = new ort.Tensor('float32', preparedPixels, [ + 1, + 3, + INPUT_SIZE, + INPUT_SIZE, + ]) + const prepared = performance.now() + try { + stage = 'inference' + trace(`frame ${id}: ONNX session.run begin`) + const outputs = await session.run({ [session.inputNames[0]]: input }) + const inferred = performance.now() + try { + stage = 'decoding' + trace(`frame ${id}: output validation, anchors, confidence filter and NMS begin`) + const faces = decodeRgbnet( + Object.values(outputs).map(t => ({ dims: t.dims, data: t.data as Float32Array })) + ) + const timings = `extract ${(extracted - start).toFixed(1)}ms; preprocess ${(prepared - extracted).toFixed(1)}ms; inference ${(inferred - prepared).toFixed(1)}ms; decode ${(performance.now() - inferred).toFixed(1)}ms` + trace(`frame ${id}: completed; ${timings}`) + send({ type: 'result', faces, width, height, id, timings }) + } finally { + for (const output of Object.values(outputs)) output.dispose() + } + } finally { + preparedPixels.fill(0) + input.dispose() + trace(`frame ${id}: tensors disposed`) + } + } finally { + bitmap.close() + trace(`frame ${id}: bitmap released`) + } + } + } catch { + // Report the failed stage without exposing runtime buffers or model outputs. + const message = 'Detector operation failed. Check the pinned model installation and browser WASM support.' + send({ type: 'error', stage, message }) + } finally { + busy = false + } +} diff --git a/apps/authenticator/src/server/http.server.ts b/apps/authenticator/src/server/http.server.ts index 8cd4cc6..d658bc6 100644 --- a/apps/authenticator/src/server/http.server.ts +++ b/apps/authenticator/src/server/http.server.ts @@ -4,19 +4,6 @@ import { POST as issueSelfie } from "./selfie-credential.server"; import { GET as lookupRp } from "./staging-rp.server"; const DEFAULT_STATIC_ROOT = resolve(process.cwd(), "apps/authenticator/dist"); -const DEFAULT_MEDIAPIPE_ROOT = resolve( - process.cwd(), - "node_modules/@mediapipe/tasks-vision/wasm", -); -const MEDIAPIPE_RUNTIME_FILES = new Set([ - "vision_wasm_internal.js", - "vision_wasm_internal.wasm", - "vision_wasm_module_internal.js", - "vision_wasm_module_internal.wasm", - "vision_wasm_nosimd_internal.js", - "vision_wasm_nosimd_internal.wasm", -]); - function headers(contentType?: string): Headers { const result = new Headers(AUTHENTICATOR_APP_SECURITY_HEADERS_V0); if (contentType !== undefined) result.set("Content-Type", contentType); @@ -25,7 +12,7 @@ function headers(contentType?: string): Headers { function contentType(pathname: string): string { if (pathname.endsWith(".html")) return "text/html; charset=utf-8"; - if (pathname.endsWith(".js")) return "text/javascript; charset=utf-8"; + if ((pathname.endsWith(".js") || pathname.endsWith(".mjs"))) return "text/javascript; charset=utf-8"; if (pathname.endsWith(".css")) return "text/css; charset=utf-8"; if (pathname.endsWith(".svg")) return "image/svg+xml"; if (pathname.endsWith(".png")) return "image/png"; @@ -34,27 +21,6 @@ function contentType(pathname: string): string { return "application/octet-stream"; } -async function serveMediapipeRuntime( - pathname: string, - mediapipeRoot: string, -): Promise { - const name = pathname.replace(/^\/mediapipe\//, ""); - if (!MEDIAPIPE_RUNTIME_FILES.has(name)) { - return new Response("Not found", { - status: 404, - headers: headers("text/plain; charset=utf-8"), - }); - } - const file = Bun.file(resolve(mediapipeRoot, name)); - if (!(await file.exists())) { - return new Response("Not found", { - status: 404, - headers: headers("text/plain; charset=utf-8"), - }); - } - return new Response(file, { headers: headers(contentType(name)) }); -} - async function serveStatic(pathname: string, staticRoot: string): Promise { let decoded: string; try { @@ -80,9 +46,8 @@ async function serveStatic(pathname: string, staticRoot: string): Promise => { const url = new URL(request.url); let response: Response; @@ -99,8 +64,7 @@ export function createAuthenticatorHttpHandler(options: { staticRoot?: string; m response = Response.json({ error: "Not found" }, { status: 404 }); } else if (request.method !== "GET" && request.method !== "HEAD") { response = new Response("Method not allowed", { status: 405 }); - } else if (url.pathname.startsWith("/mediapipe/")) { - response = await serveMediapipeRuntime(url.pathname, mediapipeRoot); + } else { response = await serveStatic(url.pathname, staticRoot); } diff --git a/apps/authenticator/src/walkthrough/live-face-guidance.ts b/apps/authenticator/src/walkthrough/live-face-guidance.ts deleted file mode 100644 index 41b4725..0000000 --- a/apps/authenticator/src/walkthrough/live-face-guidance.ts +++ /dev/null @@ -1,322 +0,0 @@ -import { LIVE_GUIDANCE_MODEL_V1 } from "./model-provenance"; - -export const LIVE_FACE_GUIDANCE_CODES_V1 = Object.freeze([ - "loading", - "unavailable", - "face_not_found", - "multiple_faces", - "move_closer", - "move_farther", - "move_left", - "move_right", - "move_up", - "move_down", - "turn_left", - "turn_right", - "improve_lighting", - "reduce_lighting", - "hold_steady", -] as const); - -export type LiveFaceGuidanceCodeV1 = - (typeof LIVE_FACE_GUIDANCE_CODES_V1)[number]; - -export interface LiveFaceGuidanceV1 { - readonly code: LiveFaceGuidanceCodeV1; - readonly text: string; -} - -export interface NormalizedFacePointV1 { - readonly x: number; - readonly y: number; - readonly z?: number; -} - -export const LIVE_FACE_GUIDANCE_COPY_V1: Readonly< - Record -> = Object.freeze({ - loading: "Place your face in the oval", - unavailable: "Place your face in the oval", - face_not_found: "Move your face into the oval", - multiple_faces: "Keep only one face in view", - move_closer: "Move closer", - move_farther: "Move farther away", - move_left: "Move slightly left", - move_right: "Move slightly right", - move_up: "Move slightly up", - move_down: "Move slightly down", - turn_left: "Turn slightly left", - turn_right: "Turn slightly right", - improve_lighting: "Move to brighter, even light", - reduce_lighting: "Move away from very bright light", - hold_steady: "Great position, hold steady", -}); - -function guidance(code: LiveFaceGuidanceCodeV1): LiveFaceGuidanceV1 { - return Object.freeze({ code, text: LIVE_FACE_GUIDANCE_COPY_V1[code] }); -} - -function usablePoint(point: NormalizedFacePointV1 | undefined): point is NormalizedFacePointV1 { - return point !== undefined && - Number.isFinite(point.x) && - Number.isFinite(point.y) && - point.x >= -0.25 && - point.x <= 1.25 && - point.y >= -0.25 && - point.y <= 1.25; -} - -export function classifyLiveFaceGuidanceV1( - faces: readonly (readonly NormalizedFacePointV1[])[], - meanLuma: number | null, -): LiveFaceGuidanceV1 { - if (faces.length === 0) return guidance("face_not_found"); - if (faces.length > 1) return guidance("multiple_faces"); - const face = faces[0]; - const nose = face?.[1]; - const leftCheek = face?.[234]; - const rightCheek = face?.[454]; - if ( - face === undefined || - !usablePoint(nose) || - !usablePoint(leftCheek) || - !usablePoint(rightCheek) - ) return guidance("unavailable"); - - let minX = 1; - let minY = 1; - let maxX = 0; - let maxY = 0; - for (const point of face) { - if (!usablePoint(point)) continue; - minX = Math.min(minX, point.x); - minY = Math.min(minY, point.y); - maxX = Math.max(maxX, point.x); - maxY = Math.max(maxY, point.y); - } - const width = maxX - minX; - const height = maxY - minY; - if (width <= 0 || height <= 0) return guidance("unavailable"); - - if (meanLuma !== null && Number.isFinite(meanLuma)) { - if (meanLuma < 52) return guidance("improve_lighting"); - if (meanLuma > 222) return guidance("reduce_lighting"); - } - - const faceAreaRatio = width * height; - if (faceAreaRatio < 0.14) return guidance("move_closer"); - if (faceAreaRatio > 0.56) return guidance("move_farther"); - - const sourceCenterX = (minX + maxX) / 2; - const visualCenterX = 1 - sourceCenterX; - const centerY = (minY + maxY) / 2; - if (visualCenterX < 0.40) return guidance("move_right"); - if (visualCenterX > 0.60) return guidance("move_left"); - if (centerY < 0.37) return guidance("move_down"); - if (centerY > 0.63) return guidance("move_up"); - - const cheekMidpoint = (leftCheek.x + rightCheek.x) / 2; - const visualNoseOffset = -(nose.x - cheekMidpoint) / width; - if (visualNoseOffset > 0.055) return guidance("turn_left"); - if (visualNoseOffset < -0.055) return guidance("turn_right"); - return guidance("hold_steady"); -} - -interface FaceLandmarkerResultV1 { - readonly faceLandmarks: readonly (readonly NormalizedFacePointV1[])[]; -} - -interface FaceLandmarkerV1 { - detectForVideo(video: HTMLVideoElement, timestampMs: number): FaceLandmarkerResultV1; - close(): void; -} - -export type FaceLandmarkerFactoryV1 = () => Promise; - -async function createFaceLandmarkerV1(): Promise { - const { FaceLandmarker, FilesetResolver } = await import("@mediapipe/tasks-vision"); - const fileset = await FilesetResolver.forVisionTasks( - LIVE_GUIDANCE_MODEL_V1.wasmBasePath, - ); - return FaceLandmarker.createFromOptions(fileset, { - baseOptions: { - modelAssetPath: LIVE_GUIDANCE_MODEL_V1.modelPath, - delegate: "CPU", - }, - runningMode: "VIDEO", - numFaces: 2, - minFaceDetectionConfidence: 0.55, - minFacePresenceConfidence: 0.55, - minTrackingConfidence: 0.5, - outputFaceBlendshapes: false, - outputFacialTransformationMatrixes: false, - }); -} - -class PreviewLumaReaderV1 { - private readonly canvas = document.createElement("canvas"); - private readonly context: CanvasRenderingContext2D | null; - - constructor() { - this.canvas.width = 48; - this.canvas.height = 48; - this.context = this.canvas.getContext("2d", { willReadFrequently: true }); - } - - read(video: HTMLVideoElement): number | null { - const context = this.context; - if (context === null || video.videoWidth <= 0 || video.videoHeight <= 0) return null; - try { - if (this.canvas.width !== 48 || this.canvas.height !== 48) { - this.canvas.width = 48; - this.canvas.height = 48; - } - context.drawImage(video, 0, 0, this.canvas.width, this.canvas.height); - const image = context.getImageData(0, 0, this.canvas.width, this.canvas.height); - let sum = 0; - let count = 0; - for (let index = 0; index < image.data.length; index += 16) { - sum += 0.2126 * image.data[index] + - 0.7152 * image.data[index + 1] + - 0.0722 * image.data[index + 2]; - count += 1; - } - image.data.fill(0); - context.clearRect(0, 0, this.canvas.width, this.canvas.height); - return count === 0 ? null : sum / count; - } catch { - context.clearRect(0, 0, this.canvas.width, this.canvas.height); - return null; - } - } - - clear(): void { - this.context?.clearRect(0, 0, this.canvas.width, this.canvas.height); - this.canvas.width = 1; - this.canvas.height = 1; - } -} - -export interface LiveFaceGuidanceControllerOptionsV1 { - readonly createLandmarker?: FaceLandmarkerFactoryV1; - readonly requestFrame?: (callback: FrameRequestCallback) => number; - readonly cancelFrame?: (handle: number) => void; - readonly now?: () => number; - readonly readMeanLuma?: (video: HTMLVideoElement) => number | null; - readonly minimumIntervalMs?: number; -} - -export class LiveFaceGuidanceControllerV1 { - private generation = 0; - private frameHandle?: number; - private landmarker?: FaceLandmarkerV1; - private lastAnalysisAt = -Infinity; - private lastVideoTime = -1; - private candidateCode?: LiveFaceGuidanceCodeV1; - private candidateCount = 0; - private emittedCode?: LiveFaceGuidanceCodeV1; - private readonly lumaReader = new PreviewLumaReaderV1(); - private readonly createLandmarker: FaceLandmarkerFactoryV1; - private readonly requestFrame: (callback: FrameRequestCallback) => number; - private readonly cancelFrame: (handle: number) => void; - private readonly now: () => number; - private readonly readMeanLuma: (video: HTMLVideoElement) => number | null; - private readonly minimumIntervalMs: number; - - constructor( - private readonly getVideo: () => HTMLVideoElement | null, - private readonly onGuidance: (result: LiveFaceGuidanceV1) => void, - options: LiveFaceGuidanceControllerOptionsV1 = {}, - ) { - this.createLandmarker = options.createLandmarker ?? createFaceLandmarkerV1; - this.requestFrame = options.requestFrame ?? requestAnimationFrame.bind(globalThis); - this.cancelFrame = options.cancelFrame ?? cancelAnimationFrame.bind(globalThis); - this.now = options.now ?? (() => performance.now()); - this.readMeanLuma = options.readMeanLuma ?? ((video) => this.lumaReader.read(video)); - this.minimumIntervalMs = options.minimumIntervalMs ?? 125; - } - - start(): void { - this.stop(); - const generation = ++this.generation; - this.emit("loading", true); - void this.createLandmarker().then((landmarker) => { - if (generation !== this.generation) { - landmarker.close(); - return; - } - this.landmarker = landmarker; - this.schedule(generation); - }).catch(() => { - if (generation === this.generation) this.emit("unavailable", true); - }); - } - - stop(): void { - this.generation += 1; - if (this.frameHandle !== undefined) this.cancelFrame(this.frameHandle); - this.frameHandle = undefined; - this.landmarker?.close(); - this.landmarker = undefined; - this.lastAnalysisAt = -Infinity; - this.lastVideoTime = -1; - this.candidateCode = undefined; - this.candidateCount = 0; - this.emittedCode = undefined; - this.lumaReader.clear(); - } - - private schedule(generation: number): void { - this.frameHandle = this.requestFrame(() => this.runFrame(generation)); - } - - private runFrame(generation: number): void { - if (generation !== this.generation || this.landmarker === undefined) return; - const now = this.now(); - const video = this.getVideo(); - if ( - video === null || - video.readyState < HTMLMediaElement.HAVE_CURRENT_DATA || - video.currentTime === this.lastVideoTime || - now - this.lastAnalysisAt < this.minimumIntervalMs - ) { - this.schedule(generation); - return; - } - this.lastAnalysisAt = now; - this.lastVideoTime = video.currentTime; - try { - const result = this.landmarker.detectForVideo(video, now); - const classified = classifyLiveFaceGuidanceV1( - result.faceLandmarks, - this.readMeanLuma(video), - ); - this.emit(classified.code); - } catch { - this.emit("unavailable", true); - this.stop(); - return; - } - this.schedule(generation); - } - - private emit(code: LiveFaceGuidanceCodeV1, immediate = false): void { - if (immediate) { - this.candidateCode = code; - this.candidateCount = 2; - if (this.emittedCode === code) return; - this.emittedCode = code; - this.onGuidance(guidance(code)); - return; - } - if (this.candidateCode === code) this.candidateCount += 1; - else { - this.candidateCode = code; - this.candidateCount = 1; - } - if (this.candidateCount >= 2 && this.emittedCode !== code) { - this.emittedCode = code; - this.onGuidance(guidance(code)); - } - } -} diff --git a/apps/authenticator/src/walkthrough/model-provenance.ts b/apps/authenticator/src/walkthrough/model-provenance.ts index e2a6e83..556289a 100644 --- a/apps/authenticator/src/walkthrough/model-provenance.ts +++ b/apps/authenticator/src/walkthrough/model-provenance.ts @@ -1,12 +1,12 @@ +import model from "../face/rgbnet-model.json"; + export const LIVE_GUIDANCE_MODEL_V1 = Object.freeze({ - runtimePackage: "@mediapipe/tasks-vision", - runtimeVersion: "1.0.1", - modelKind: "MediaPipe Face Landmarker float16", - modelPath: "/models/face_landmarker.task", - modelSource: - "https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/1/face_landmarker.task", - modelSha256: "64184e229b263107bc2b804c6625db1341ff2bb731874b0bcc2fe6544e0bc9ff", - wasmBasePath: "/mediapipe", + runtimePackage: "onnxruntime-web", + runtimeVersion: "1.30.0", + modelKind: "Face Engine RGBNet face detector", + modelPath: model.url, + modelSource: model.source, + modelSha256: model.sha256, purpose: "ephemeral_capture_ux_only", securityDecision: false, sendsMeasurementsToServer: false, diff --git a/apps/authenticator/test/app.test.tsx b/apps/authenticator/test/app.test.tsx index e0c1574..b2442f2 100644 --- a/apps/authenticator/test/app.test.tsx +++ b/apps/authenticator/test/app.test.tsx @@ -6,6 +6,7 @@ import { AuthenticatorAppV1 } from "../src/App"; import { signedRequest } from "../../../tests/integration/fixtures/request"; import type { IncomingRequest } from "../src/lib/requests/incoming-request"; import type { WalletKit, CredentialMetadata } from "../src/lib/walletkit"; +import type { DetectorResponse } from "../src/face/rgbnet.worker"; beforeAll(() => GlobalRegistrator.register({ url: "http://localhost:4173/" })); afterAll(() => GlobalRegistrator.unregister()); @@ -93,6 +94,39 @@ test("missing camera APIs show an actionable failure without crashing the flow", } }); +test("camera preview consumes ONNX results and releases camera and worker on close", async () => { + let stopped = 0, terminated = 0, time = 0; + const media = new MediaStream(); + Object.defineProperty(media, "getTracks", { value: () => [{ stop: () => { stopped++; } }] }); + const worker = { + onmessage: undefined as ((event: { data: DetectorResponse }) => void) | undefined, + postMessage: (request: { type: string; id?: number }) => queueMicrotask(() => worker.onmessage?.({ data: request.type === "init" + ? { type: "ready" } + : { type: "result", id: request.id!, width: 640, height: 480, timings: "inference 1ms", faces: [{ box: [0.35, 0.2, 0.65, 0.8], landmarks: [], score: 0.99 }] } })), + terminate: () => { terminated++; }, + }; + const replacements = [ + [globalThis, "Worker", function () { return worker; }], + [globalThis, "createImageBitmap", async () => ({ close: () => {} })], + [navigator, "mediaDevices", { getUserMedia: async () => media }], + ] as const; + const saved = replacements.map(([object, key]) => Object.getOwnPropertyDescriptor(object, key)); + replacements.forEach(([object, key, value]) => Object.defineProperty(object, key, { value, configurable: true })); + const play = spyOn(HTMLMediaElement.prototype, "play").mockImplementation(function (this: HTMLMediaElement) { + Object.defineProperties(this, { readyState: { value: 2 }, currentTime: { get: () => ++time }, clientWidth: { value: 260 }, clientHeight: { value: 364 } }); + return Promise.resolve(); + }); + try { + const view = render(); + expect(await view.findByText("Face positioned")).toBeTruthy(); + view.unmount(); + expect(terminated).toBe(1); expect(stopped).toBe(1); + } finally { + cleanup(); play.mockRestore(); + replacements.forEach(([object, key], i) => { const descriptor = saved[i]; if (descriptor) Object.defineProperty(object, key, descriptor); else Reflect.deleteProperty(object, key); }); + } +}); + test("dev mode is opt-in, inspects metadata and refreshes without issuing", async () => { const f = await fixture(11, true); const view = render(); diff --git a/apps/authenticator/test/face-detector.test.ts b/apps/authenticator/test/face-detector.test.ts new file mode 100644 index 0000000..bf18348 --- /dev/null +++ b/apps/authenticator/test/face-detector.test.ts @@ -0,0 +1,141 @@ +import { test } from 'bun:test' +import assert from 'node:assert/strict' +import { startFaceDetector } from '../src/face/face-detector' + +async function withWorker(run: (h: ReturnType) => Promise) { + const h = harness() + const replacements = { + Worker: h.Worker, + createImageBitmap: () => h.capture(), + setTimeout: h.setTimeout, + clearTimeout: h.clearTimeout, + } + const saved = new Map(Object.keys(replacements).map(key => [key, Object.getOwnPropertyDescriptor(globalThis, key)])) + for (const [key, value] of Object.entries(replacements)) + Object.defineProperty(globalThis, key, { value, configurable: true }) + try { + await run(h) + } finally { + for (const [key, descriptor] of saved) { + if (descriptor) Object.defineProperty(globalThis, key, descriptor) + else Reflect.deleteProperty(globalThis, key) + } + } +} + +function harness() { + const worker = { + onmessage: undefined as ((event: { data: unknown }) => void) | undefined, + onerror: undefined as (() => void) | undefined, + onmessageerror: undefined as (() => void) | undefined, + postMessage: (data: { type: string }) => { + messages.push(data.type) + }, + terminate: () => { + terminated++ + }, + } + const messages: string[] = [], + errors: string[] = [], + logs: string[] = [] + const timers = new Map void; ms: number }>() + let terminated = 0, + captures = 0, + closed = 0, + nextTimer = 0 + const bitmap = { + close: () => { + closed++ + }, + } as ImageBitmap + const h = { + Worker: function () { + return worker + }, + worker, + messages, + errors, + logs, + timers, + capture: () => { + captures++ + return Promise.resolve(bitmap) + }, + bitmap, + setTimeout: (fn: () => void, ms: number) => { + const id = ++nextTimer + timers.set(id, { fn, ms }) + return id + }, + clearTimeout: (id: number) => { + timers.delete(id) + }, + counts: () => ({ terminated, captures, closed }), + start: (signal: AbortSignal) => + startFaceDetector( + { readyState: 2, currentTime: 1 } as HTMLVideoElement, + signal, + false, + () => {}, + message => logs.push(message), + message => errors.push(message) + ), + emit: (data: unknown) => worker.onmessage?.({ data }), + } + return h +} + +test('detector waits for a result before capturing again and abort terminates pending inference', async () => { + await withWorker(async h => { + const controller = new AbortController() + h.start(controller.signal) + assert.deepEqual(h.messages, ['init']) + h.emit({ type: 'ready' }) + await Promise.resolve() + assert.deepEqual(h.messages, ['init', 'frame']) + assert.equal(h.counts().captures, 1) + assert.deepEqual( + [...h.timers.values()].map(t => t.ms), + [10_000] + ) + controller.abort() + assert.equal(h.counts().terminated, 1) + assert.equal(h.timers.size, 0) + }) +}) + +test('late bitmap capture after cancellation is closed and never sent to the terminated worker', async () => { + await withWorker(async h => { + let finish!: (image: ImageBitmap) => void + h.capture = () => + new Promise(resolve => { + finish = resolve + }) + const controller = new AbortController() + h.start(controller.signal) + h.emit({ type: 'ready' }) + controller.abort() + finish(h.bitmap) + await Promise.resolve() + assert.deepEqual(h.messages, ['init']) + assert.equal(h.counts().closed, 1) + }) +}) + +test('startup timeout and worker errors are surfaced and release the worker', async () => { + await withWorker(async h => { + h.start(new AbortController().signal) + const startup = [...h.timers.values()][0] + assert.equal(startup.ms, 45_000) + startup.fn() + assert.match(h.errors[0], /startup timed out/) + assert.equal(h.counts().terminated, 1) + assert.equal(h.timers.size, 0) + }) + await withWorker(async h => { + h.start(new AbortController().signal) + h.emit({ type: 'error', stage: 'model integrity', message: 'SHA-256 mismatch' }) + assert.match(h.errors[0], /model integrity: SHA-256 mismatch/) + assert.equal(h.counts().terminated, 1) + }) +}) diff --git a/apps/authenticator/test/fixtures/rgbnet-decode.json b/apps/authenticator/test/fixtures/rgbnet-decode.json new file mode 100644 index 0000000..72b1707 --- /dev/null +++ b/apps/authenticator/test/fixtures/rgbnet-decode.json @@ -0,0 +1,65 @@ +{ + "rows": [ + { + "anchor": 0, + "box": [0, 0, 1, 1], + "score": 0.91, + "landmarks": [0.1, -0.2, 0.1, -0.2, 0.1, -0.2, 0.1, -0.2, 0.1, -0.2] + }, + { + "anchor": 1, + "box": [0, 0, 0, 0], + "score": 0.85, + "landmarks": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + }, + { + "anchor": 1500, + "box": [0.5, -0.3, -0.2, 0.4], + "score": 0.99, + "landmarks": [ + -2.0, -1.5555555555555556, -1.1111111111111112, -0.6666666666666667, -0.22222222222222232, + 0.22222222222222232, 0.6666666666666665, 1.1111111111111107, 1.5555555555555554, 2.0 + ] + }, + { + "anchor": 2048, + "box": [0, 0, 0, 0], + "score": 0.9, + "landmarks": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + }, + { + "anchor": 2687, + "box": [1, 1, 0.5, 0.5], + "score": 0.95, + "landmarks": [3, -3, 3, -3, 3, -3, 3, -3, 3, -3] + } + ], + "expected": [ + { + "box": [0.4195004105567932, 0.6897153258323669, 0.4945620894432068, 0.7743471264839172], + "landmarks": [ + 0.4375, 0.7222222089767456, 0.4444444477558136, 0.7291666865348816, 0.4513888955116272, + 0.7361111044883728, 0.4583333432674408, 0.7430555820465088, 0.4652777910232544, 0.75 + ], + "score": 0.9900000095367432 + }, + { + "box": [0.5308802127838135, 0.5308802127838135, 1.0, 1.0], + "landmarks": [1.0, 0.66796875, 1.0, 0.66796875, 1.0, 0.66796875, 1.0, 0.66796875, 1.0, 0.66796875], + "score": 0.949999988079071 + }, + { + "box": [0.0, 0.0, 0.06333604454994202, 0.06333604454994202], + "landmarks": [ + 0.01640624925494194, 0.01406249962747097, 0.01640624925494194, 0.01406249962747097, 0.01640624925494194, + 0.01406249962747097, 0.01640624925494194, 0.01406249962747097, 0.01640624925494194, 0.01406249962747097 + ], + "score": 0.9100000262260437 + }, + { + "box": [0.0, 0.0, 0.134765625, 0.134765625], + "landmarks": [0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125], + "score": 0.8999999761581421 + } + ] +} diff --git a/apps/authenticator/test/fixtures/rgbnet-resize.json b/apps/authenticator/test/fixtures/rgbnet-resize.json new file mode 100644 index 0000000..6d1c419 --- /dev/null +++ b/apps/authenticator/test/fixtures/rgbnet-resize.json @@ -0,0 +1,32 @@ +[ + { + "width": 256, + "height": 256, + "sha256": "d73337980d213a1761f50095b862405aef1d2907a3501fc1f2917d8902c5c9c7" + }, + { + "width": 640, + "height": 480, + "sha256": "a2b2126f83aa313df1b5ef572e2c2b9edc6809647fe2c82cedfa532d8fb075f6" + }, + { + "width": 720, + "height": 1280, + "sha256": "e692d07bace56720a085f88c5e3edf30ddcaeaf01f563822a3a5e4bbfb485c1d" + }, + { + "width": 17, + "height": 31, + "sha256": "aaafe38835cd786ead02cd582f9dbd483f2e29e6dc5c1b2a394fc9479b60127f" + }, + { + "width": 1, + "height": 1, + "sha256": "fa774c69dc768f36ef04d4def9d9f09f3578f12a828ab67f6d700b45779f6943" + }, + { + "width": 257, + "height": 193, + "sha256": "5faba04fb349809489ba32dfdecbbef4a51a499cd348f5b76954bf88d1e78aeb" + } +] diff --git a/apps/authenticator/test/hold-steady-progress.test.ts b/apps/authenticator/test/hold-steady-progress.test.ts new file mode 100644 index 0000000..ec2112c --- /dev/null +++ b/apps/authenticator/test/hold-steady-progress.test.ts @@ -0,0 +1,13 @@ +import { expect, test } from "bun:test"; +import { CAPTURE_HOLD_DOT_COUNT_V1, captureHoldProgressV1 } from "../src/walkthrough/hold-steady-progress"; + +test("fills exactly 64 progress dots during one continuous hold", () => { + expect(CAPTURE_HOLD_DOT_COUNT_V1).toBe(64); + expect(captureHoldProgressV1(0)).toBe(0); + expect(captureHoldProgressV1(37.4)).toBe(0); + expect(captureHoldProgressV1(37.5)).toBe(1 / 64); + expect(captureHoldProgressV1(1_200)).toBe(0.5); + expect(captureHoldProgressV1(2_400)).toBe(1); + expect(captureHoldProgressV1(20_000)).toBe(1); + expect(captureHoldProgressV1(Number.NaN)).toBe(0); +}); diff --git a/apps/authenticator/test/live-face-guidance.test.ts b/apps/authenticator/test/live-face-guidance.test.ts deleted file mode 100644 index 1307070..0000000 --- a/apps/authenticator/test/live-face-guidance.test.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { afterAll, beforeAll, describe, expect, test } from "bun:test"; -import { GlobalRegistrator } from "@happy-dom/global-registrator"; -import { - LiveFaceGuidanceControllerV1, - classifyLiveFaceGuidanceV1, - type NormalizedFacePointV1, -} from "../src/walkthrough/live-face-guidance"; -import { - CAPTURE_HOLD_DOT_COUNT_V1, - captureHoldProgressV1, -} from "../src/walkthrough/hold-steady-progress"; - -beforeAll(() => GlobalRegistrator.register()); -afterAll(() => GlobalRegistrator.unregister()); - -function face(options: { - readonly centerX?: number; - readonly centerY?: number; - readonly width?: number; - readonly height?: number; - readonly noseOffsetRatio?: number; -} = {}): NormalizedFacePointV1[] { - const centerX = options.centerX ?? 0.5; - const centerY = options.centerY ?? 0.5; - const width = options.width ?? 0.5; - const height = options.height ?? 0.64; - const points = Array.from({ length: 478 }, () => ({ x: centerX, y: centerY })); - points[10] = { x: centerX, y: centerY - height / 2 }; - points[152] = { x: centerX, y: centerY + height / 2 }; - points[234] = { x: centerX - width / 2, y: centerY }; - points[454] = { x: centerX + width / 2, y: centerY }; - points[1] = { - x: centerX + (options.noseOffsetRatio ?? 0) * width, - y: centerY, - }; - return points; -} - -describe("ephemeral live face guidance", () => { - test("fills exactly 64 progress dots during one continuous hold", () => { - expect(CAPTURE_HOLD_DOT_COUNT_V1).toBe(64); - expect(captureHoldProgressV1(0)).toBe(0); - expect(captureHoldProgressV1(37.4)).toBe(0); - expect(captureHoldProgressV1(37.5)).toBe(1 / 64); - expect(captureHoldProgressV1(1_200)).toBe(0.5); - expect(captureHoldProgressV1(2_400)).toBe(1); - expect(captureHoldProgressV1(20_000)).toBe(1); - expect(captureHoldProgressV1(Number.NaN)).toBe(0); - }); - - test("maps face count, distance, centering, pose, lighting, and ready states", () => { - expect(classifyLiveFaceGuidanceV1([], 120).code).toBe("face_not_found"); - expect(classifyLiveFaceGuidanceV1([face(), face()], 120).code).toBe("multiple_faces"); - expect(classifyLiveFaceGuidanceV1([face({ width: 0.25, height: 0.4 })], 120).code) - .toBe("move_closer"); - expect(classifyLiveFaceGuidanceV1([face({ width: 0.8, height: 0.8 })], 120).code) - .toBe("move_farther"); - expect(classifyLiveFaceGuidanceV1([face({ centerX: 0.7 })], 120).code) - .toBe("move_right"); - expect(classifyLiveFaceGuidanceV1([face({ centerX: 0.3 })], 120).code) - .toBe("move_left"); - expect(classifyLiveFaceGuidanceV1([face({ centerY: 0.25 })], 120).code) - .toBe("move_down"); - expect(classifyLiveFaceGuidanceV1([face({ centerY: 0.75 })], 120).code) - .toBe("move_up"); - expect(classifyLiveFaceGuidanceV1([face({ noseOffsetRatio: -0.1 })], 120).code) - .toBe("turn_left"); - expect(classifyLiveFaceGuidanceV1([face({ noseOffsetRatio: 0.1 })], 120).code) - .toBe("turn_right"); - expect(classifyLiveFaceGuidanceV1([face()], 20).code).toBe("improve_lighting"); - expect(classifyLiveFaceGuidanceV1([face()], 240).code).toBe("reduce_lighting"); - expect(classifyLiveFaceGuidanceV1([face()], 120)).toEqual({ - code: "hold_steady", - text: "Great position, hold steady", - }); - }); - - test("emits only a stable guidance code and closes the model on stop", async () => { - const scheduled: FrameRequestCallback[] = []; - const results: string[] = []; - let closed = 0; - let timestamp = 0; - const video = { - readyState: 2, - currentTime: 1, - videoWidth: 640, - videoHeight: 480, - } as HTMLVideoElement; - const controller = new LiveFaceGuidanceControllerV1( - () => video, - (result) => results.push(result.code), - { - createLandmarker: async () => ({ - detectForVideo: () => ({ faceLandmarks: [face()] }), - close: () => { closed += 1; }, - }), - requestFrame: (callback) => { - scheduled.push(callback); - return scheduled.length; - }, - cancelFrame: () => undefined, - now: () => ++timestamp * 200, - readMeanLuma: () => 120, - minimumIntervalMs: 0, - }, - ); - - controller.start(); - await Promise.resolve(); - await Promise.resolve(); - expect(results).toEqual(["loading"]); - scheduled.shift()?.(timestamp); - video.currentTime = 2; - scheduled.shift()?.(timestamp); - expect(results).toEqual(["loading", "hold_steady"]); - video.currentTime = 3; - scheduled.shift()?.(timestamp); - expect(results).toEqual(["loading", "hold_steady"]); - controller.stop(); - expect(closed).toBe(1); - expect(Object.keys({ code: results.at(-1) })).toEqual(["code"]); - }); -}); diff --git a/apps/authenticator/test/rgbnet.test.ts b/apps/authenticator/test/rgbnet.test.ts new file mode 100644 index 0000000..e4f54dc --- /dev/null +++ b/apps/authenticator/test/rgbnet.test.ts @@ -0,0 +1,90 @@ +import { test } from 'bun:test' +import assert from 'node:assert/strict' +import { createHash } from 'node:crypto' +import resizeReference from './fixtures/rgbnet-resize.json' +import decodeReference from './fixtures/rgbnet-decode.json' +import { + prepareRgbnet, + decodeRgbnet, + previewPoint, + faceGuidance, + ANCHOR_COUNT, + type ModelOutput, +} from '../src/face/rgbnet' + +function outputs(): ModelOutput[] { + return [4, 2, 10].map(n => ({ dims: [1, ANCHOR_COUNT, n], data: new Float32Array(ANCHOR_COUNT * n) })) +} + +test('RGBNet preprocessing matches native fast_image_resize reference tensors byte for byte', () => { + for (const { width, height, sha256 } of resizeReference) { + const rgba = Uint8ClampedArray.from( + { length: width * height * 4 }, + (_, i) => (i * 37 + Math.floor(i / 13)) % 256 + ) + const tensor = prepareRgbnet(rgba, width, height) + assert.equal( + createHash('sha256').update(new Uint8Array(tensor.buffer)).digest('hex'), + sha256, + `${width}x${height}` + ) + } +}) + +test('RGBNet decode matches native Rust boxes, landmarks and suppression with shuffled output heads', () => { + const heads = outputs() + for (const row of decodeReference.rows) { + heads[0].data.set(row.box, row.anchor * 4) + heads[1].data.set([1 - row.score, row.score], row.anchor * 2) + heads[2].data.set(row.landmarks, row.anchor * 10) + } + const actual = decodeRgbnet([heads[2], heads[0], heads[1]]) + assert.equal(actual.length, decodeReference.expected.length) + actual.forEach((face, i) => { + const expected = decodeReference.expected[i] + for (const key of ['box', 'landmarks'] as const) + face[key].forEach((value, j) => assert.ok(Math.abs(value - expected[key][j]) < 1e-7)) + assert.ok(Math.abs(face.score - expected.score) < 1e-7) + }) +}) + +test('invalid frames and missing, malformed or non-finite output heads fail explicitly', () => { + assert.throws(() => prepareRgbnet(new Uint8ClampedArray(4), 0, 1), /dimensions/) + assert.throws(() => prepareRgbnet(new Uint8ClampedArray(4), 2, 2), /dimensions/) + assert.throws(() => decodeRgbnet([]), /Missing/) + const heads = outputs() + assert.throws(() => decodeRgbnet([heads[0], heads[0], heads[2]]), /Unexpected/) + heads[0].data[0] = NaN + assert.throws(() => decodeRgbnet(heads), /non-finite/) + heads[0].data[0] = 0 + heads[0].dims = [1, 4] + assert.throws(() => decodeRgbnet(heads), /shape/) +}) + +test('empty detections and confidence boundary do not report a positioned face', () => { + const heads = outputs() + heads[1].data[1] = 0.8 + assert.deepEqual(decodeRgbnet(heads), []) + assert.equal(faceGuidance([], 640, 480), 'No face detected') +}) + +test('preview projection accounts for mirror and object-cover crop in landscape and portrait', () => { + assert.deepEqual(previewPoint(0.5, 0.5, 1920, 1080), [0.5, 0.5]) + const [x, y] = previewPoint(0.25, 0.25, 1920, 1080) + assert.ok(Math.abs(x - 0.9444444444) < 1e-8) + assert.equal(y, 0.25) + const portrait = previewPoint(0.25, 0.25, 1080, 1920) + assert.equal(portrait[0], 0.75) + assert.ok(Math.abs(portrait[1] - 0.0555555556) < 1e-8) +}) + +test('guidance uses the portrait oval crop rather than a square preview', () => { + const face = { box: [0.29, 0.2, 0.71, 0.8] as [number, number, number, number], landmarks: [], score: 0.99 } + assert.equal(faceGuidance([face], 640, 480), 'Face positioned') + assert.equal(faceGuidance([face], 640, 480, 260, 364), 'Face positioned') + face.box = [0.25, 0.2, 0.75, 0.8] + assert.equal(faceGuidance([face], 640, 480), 'Face positioned') + assert.equal(faceGuidance([face], 640, 480, 260, 364), 'Move farther away') + assert.equal(faceGuidance([face, face], 640, 480, 260, 364), 'Keep only one face in view') + assert.equal(faceGuidance([face], 640, 480, 0, 0), 'Waiting for camera preview') +}) diff --git a/bun.lock b/bun.lock index 5adb7cb..307d9c4 100644 --- a/bun.lock +++ b/bun.lock @@ -5,9 +5,9 @@ "": { "name": "@world-id/web-authenticator-clean-start", "dependencies": { - "@mediapipe/tasks-vision": "1.0.1", "@worldcoin/walletkit-web": "0.27.1", "lossless-json": "4.3.1", + "onnxruntime-web": "1.30.0", "react": "19.2.8", "react-dom": "19.2.8", "viem": "2.56.0", @@ -121,8 +121,6 @@ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], - "@mediapipe/tasks-vision": ["@mediapipe/tasks-vision@1.0.1", "", {}, "sha512-rvRE2FmAZ6ZxKSw7wq+e+jQDpN3t1B/tD2mJz9SmAzb1msoDkd4dMoE4wAh8Z30Um0PQwLiHr9QtomhmXk3aUQ=="], - "@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], "@noble/curves": ["@noble/curves@1.9.1", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA=="], @@ -133,6 +131,24 @@ "@playwright/test": ["@playwright/test@1.62.1", "", { "dependencies": { "playwright": "1.62.1" }, "bin": { "playwright": "cli.js" } }, "sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ=="], + "@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="], + + "@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="], + + "@protobufjs/codegen": ["@protobufjs/codegen@2.0.5", "", {}, "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g=="], + + "@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.1", "", {}, "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg=="], + + "@protobufjs/fetch": ["@protobufjs/fetch@1.1.1", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1" } }, "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw=="], + + "@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="], + + "@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="], + + "@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="], + + "@protobufjs/utf8": ["@protobufjs/utf8@1.1.2", "", {}, "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug=="], + "@rolldown/binding-android-arm-eabi": ["@rolldown/binding-android-arm-eabi@1.2.7", "", { "os": "android", "cpu": "arm" }, "sha512-EypzgnYCwyVY4NDHKzGmNJT5b+XaQEBniHxsMdeIQLB/tcCzZnhqrzHpZFbX9iaxx+5RiB8caATBtfvZP7zVxQ=="], "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.2.7", "", { "os": "android", "cpu": "arm64" }, "sha512-l17HE9EweWaqJZhuUuNBN/FzM62xw+DECVnJyvMsxn8vJFAGLy5QfLDoYAcronkAN8VxKZHezDpulHDPx95vFw=="], @@ -385,6 +401,8 @@ "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], + "flatbuffers": ["flatbuffers@25.9.23", "", {}, "sha512-MI1qs7Lo4Syw0EOzUl0xjs2lsoeqFku44KpngfIduHBYvzm8h2+7K8YMQh1JtVVVrUvhLpNwqVi4DERegUJhPQ=="], + "flatted": ["flatted@3.4.4", "", {}, "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q=="], "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], @@ -417,6 +435,8 @@ "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], + "guid-typescript": ["guid-typescript@1.0.9", "", {}, "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ=="], + "happy-dom": ["happy-dom@20.13.2", "", { "dependencies": { "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", "@types/ws": "^8.18.1", "buffer-image-size": "^0.6.4", "entities": "^7.0.1", "whatwg-mimetype": "^3.0.0", "ws": "^8.21.0" } }, "sha512-VC9HoEaT3Jf3K/1g/GjMYGAZCCg+ULgGVcXJlAeSzdTj8mIoPJRp14KVclP5gpUcF/kauuaVB2ri2/WxXbl4vg=="], "has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="], @@ -553,6 +573,8 @@ "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], + "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="], + "lossless-json": ["lossless-json@4.3.1", "", {}, "sha512-SqD/Bg3ZfltBJ2Z14hJ/BihnvtV553WO4g9/ePtlp4lrnl9jF3AdIJt53A/Wkg/0Li+LMfxaBqgx1MiFZdQlpQ=="], "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -581,6 +603,10 @@ "object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="], + "onnxruntime-common": ["onnxruntime-common@1.30.0", "", {}, "sha512-7fdVWjAID1dVhH/G8qK3APARunV4VkBFoCQAP7qp4Wkab0mrorvmc+sqiT+mKXOzDqdjN5j+/Z9nb4gzNPWcyA=="], + + "onnxruntime-web": ["onnxruntime-web@1.30.0", "", { "dependencies": { "flatbuffers": "^25.1.24", "guid-typescript": "^1.0.9", "long": "^5.2.3", "onnxruntime-common": "1.30.0", "platform": "^1.3.6", "protobufjs": "^7.2.4" } }, "sha512-q0y+JrrtukXSzsBWEMccVfqX25LRmosXHF+CaRJmg8pZClzcV7svNc4rKY3jL02Vb7QmRMDs1SigqR4CXAfKYQ=="], + "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], "own-keys": ["own-keys@1.0.2", "", { "dependencies": { "call-bound": "^1.0.4", "get-intrinsic": "^1.3.0", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg=="], @@ -601,6 +627,8 @@ "picomatch": ["picomatch@4.0.7", "", {}, "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="], + "platform": ["platform@1.3.6", "", {}, "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="], + "playwright": ["playwright@1.62.1", "", { "dependencies": { "playwright-core": "1.62.1" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg=="], "playwright-core": ["playwright-core@1.62.1", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw=="], @@ -613,6 +641,8 @@ "pretty-format": ["pretty-format@27.5.1", "", { "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" } }, "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ=="], + "protobufjs": ["protobufjs@7.6.6", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.5", "@protobufjs/eventemitter": "^1.1.1", "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", "long": "^5.3.2" } }, "sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg=="], + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], "react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], diff --git a/docs/review/dev-desktop.png b/docs/review/dev-desktop.png index 09e2a21961323657c8f91979bc6a685510e6c168..390a1b8d8011521bf179f3cf5be22a84db228aa8 100644 GIT binary patch delta 50168 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 delta 45561 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 Ak^lez diff --git a/docs/review/dev-mobile.png b/docs/review/dev-mobile.png index cf6b33f685b6adee3fb6f19d46b63cc7570c5980..023ca12ea979d06a5cdc71d8f34382d727fec4b0 100644 GIT binary patch delta 68374 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 delta 64228 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.8 and applies pixel-space NMS at 0.4. + +The mirrored object-cover projection accounts for the actual oval preview aspect +ratio. The worker receives at most one frame at a time; another frame is captured +100 ms after completion, with no video queue. Downloads have a 20-second deadline, +startup 45 seconds, and capture/inference 10 seconds. Closing or hiding the preview +terminates the worker and camera tracks. Extracted pixels and input tensors are +cleared after use, and bitmaps and tensors are released. + +The preview’s **ONNX processing status** disclosure shows startup stages and +periodic extraction/preprocessing/inference/decoding timings. It never displays +frames, tensors, landmarks or embeddings. Per-frame diagnostic traces are disabled +by default. Runtime assets are bundled and served from the same origin; no model +token or external model CDN is used. [ONNX Runtime configuration reference](https://onnxruntime.ai/docs/tutorials/web/env-flags-and-session-options.html). + +## Checks + +Ported native reference fixtures validate resize tensor hashes and decoded boxes, +landmarks and suppression. Unit tests also cover malformed outputs, projection, +worker cancellation and deadlines. Browser tests exercise the built worker with +the pinned model on a blank frame and reject missing model downloads. These checks +do not establish biometric accuracy or mobile performance. diff --git a/package.json b/package.json index 8a5271f..7e068cc 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "build:selfie-helper": "cargo build --locked --config services/staging-issuance/face-enrollment-helper/build-config.toml --manifest-path services/staging-issuance/face-enrollment-helper/Cargo.toml" }, "dependencies": { - "@mediapipe/tasks-vision": "1.0.1", + "onnxruntime-web": "1.30.0", "react": "19.2.8", "react-dom": "19.2.8", "@worldcoin/walletkit-web": "0.27.1", diff --git a/scripts/setup-rgbnet.ts b/scripts/setup-rgbnet.ts new file mode 100644 index 0000000..d4cf5f7 --- /dev/null +++ b/scripts/setup-rgbnet.ts @@ -0,0 +1,14 @@ +import { resolve } from 'node:path' +import { createHash } from 'node:crypto' +import { mkdir, readFile, writeFile } from 'node:fs/promises' +import model from '../apps/authenticator/src/face/rgbnet-model.json' + +const source = process.argv[2] +if (!source) throw new Error('Usage: bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx') +const bytes = await readFile(source) +if (bytes.length !== model.bytes || createHash('sha256').update(bytes).digest('hex') !== model.sha256) + throw new Error('RGBNet does not match the pinned model. Review model provenance before changing the manifest.') +const destination = resolve(import.meta.dir, '../apps/authenticator/public/models/rgbnet.onnx') +await mkdir(resolve(import.meta.dir, '../apps/authenticator/public/models'), { recursive: true }) +await writeFile(destination, bytes) +console.info(`Installed verified RGBNet (${bytes.length} bytes) at ${destination}`) diff --git a/tests/integration/browser/rgbnet.browser.spec.ts b/tests/integration/browser/rgbnet.browser.spec.ts new file mode 100644 index 0000000..1be0b41 --- /dev/null +++ b/tests/integration/browser/rgbnet.browser.spec.ts @@ -0,0 +1,42 @@ +import { expect, test } from "@playwright/test"; +import { existsSync, readdirSync } from "node:fs"; +import type { DetectorResponse } from "../../../apps/authenticator/src/face/rgbnet.worker"; + +if (!("bun" in process.versions)) { + for (const missing of [false, true]) { + test(`built RGBNet worker ${missing ? "reports missing weights" : "runs real ONNX inference"}`, async ({ page }) => { + test.skip(!missing && !existsSync("apps/authenticator/dist/models/rgbnet.onnx"), "Install the pinned RGBNet artifact to exercise real inference"); + test.setTimeout(60_000); + const asset = readdirSync("apps/authenticator/dist/assets").find(name => /^rgbnet\.worker-.*\.js$/.test(name)); + expect(asset).toBeTruthy(); + if (missing) await page.route("**/models/rgbnet.onnx", route => route.fulfill({ status: 404, body: "Not found" })); + await page.goto("/"); + const result = await page.evaluate(async ({ url, missing }) => { + return new Promise((resolve, reject) => { + const worker = new Worker(url, { type: "module" }); + const timer = setTimeout(() => { worker.terminate(); reject(new Error("Detector test timed out")); }, 45_000); + const finish = (value: DetectorResponse) => { clearTimeout(timer); worker.terminate(); resolve(value); }; + worker.onerror = () => { clearTimeout(timer); worker.terminate(); reject(new Error("Built worker failed to load")); }; + worker.onmessage = ({ data }: MessageEvent) => { + if (data.type === "error" || data.type === "result") finish(data); + if (data.type === "ready") { + if (missing) { clearTimeout(timer); worker.terminate(); reject(new Error("Missing weights must not initialize")); return; } + const canvas = new OffscreenCanvas(256, 256); + const context = canvas.getContext("2d"); + if (!context) { clearTimeout(timer); worker.terminate(); reject(new Error("Test canvas unavailable")); return; } + context.fillRect(0, 0, 256, 256); + const bitmap = canvas.transferToImageBitmap(); + worker.postMessage({ type: "frame", id: 1, bitmap }, [bitmap]); + } + }; + worker.postMessage({ type: "init", diagnostics: false }); + }); + }, { url: `/assets/${asset}`, missing }); + if (missing) expect(result).toMatchObject({ type: "error", stage: "model download" }); + else { + expect(result).toMatchObject({ type: "result", id: 1, width: 256, height: 256, faces: [] }); + if (result.type === "result") expect(result.timings).toContain("inference"); + } + }); + } +} diff --git a/tsconfig.tools.json b/tsconfig.tools.json index 30787e5..aa2944e 100644 --- a/tsconfig.tools.json +++ b/tsconfig.tools.json @@ -4,5 +4,5 @@ "lib": ["ES2022"], "types": ["bun", "node"] }, - "include": ["*.config.ts", "vite.config.ts"] + "include": ["*.config.ts", "vite.config.ts", "scripts/**/*.ts"] } diff --git a/vite.config.ts b/vite.config.ts index 41ed613..cc666e8 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -36,6 +36,7 @@ export default defineConfig({ root: appRoot, plugins: [rejectServerModulesFromBrowser(), react()], publicDir: "public", + worker: { format: "es" }, resolve: { alias: { "@clean-start/browser-admission": path("./packages/browser-admission/src/index.ts"), From f20f69f25b98dacd329fec6cc6d3e544a650c1ea Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Fri, 9 Oct 2026 13:59:07 -0700 Subject: [PATCH 10/38] Move selfie preview above setup instructions --- apps/authenticator/src/App.tsx | 5 ++--- apps/authenticator/src/styles/app.css | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/authenticator/src/App.tsx b/apps/authenticator/src/App.tsx index f3f0136..4325020 100644 --- a/apps/authenticator/src/App.tsx +++ b/apps/authenticator/src/App.tsx @@ -180,10 +180,10 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof return

      {message}

      ONNX processing status

      {detectorStatus || "Waiting for camera frames."}

      -

      Framing preview only. Images stay in this browser; the staging issuer uses synthetic input.

      +

      Framing preview only. Images stay in this browser; no enrollment is submitted.

      ; } diff --git a/apps/authenticator/src/components/DeveloperPanel.tsx b/apps/authenticator/src/components/DeveloperPanel.tsx index f69ef09..3b2c7ad 100644 --- a/apps/authenticator/src/components/DeveloperPanel.tsx +++ b/apps/authenticator/src/components/DeveloperPanel.tsx @@ -5,7 +5,7 @@ import { credentialRequirementsLabel } from "../lib/requests/proof-request"; import { LIVE_GUIDANCE_MODEL_V1 } from "../walkthrough/model-provenance"; function credentialDescription(schema: bigint) { - if (schema === 11n) return { name: "Selfie Check", description: "Schema 11. A proof can disclose the uniqueness score. Credentials issued by this local flow use synthetic face data." }; + if (schema === 11n) return { name: "Selfie Check", description: "Schema 11. A proof can disclose the uniqueness score. Enrollment is not available in this app." }; if (schema === 1n) return { name: "Orb", description: "Schema 1. Used for requests accepting Orb verification. Orb enrollment and transfer are not available here." }; if (schema === 128n) return { name: "Faux", description: "Schema 128. A development credential; it does not establish face verification." }; return { name: "Credential", description: "No description is available for this issuer schema." }; @@ -13,13 +13,11 @@ function credentialDescription(schema: bigint) { function date(value: bigint) { return new Date(Number(value) * 1000).toLocaleString(); } -export function DeveloperPanel({ records, unlocked, disabled, incoming, canIssue, configurationError, preview, onRefresh, onDelete }: { +export function DeveloperPanel({ records, unlocked, disabled, incoming, preview, onRefresh, onDelete }: { records: CredentialMetadata[]; unlocked: boolean; disabled: boolean; incoming: IncomingRequest | null; - canIssue: boolean; - configurationError: boolean; preview: boolean; onRefresh: () => void; onDelete: (id: bigint) => void; @@ -54,8 +52,8 @@ export function DeveloperPanel({ records, unlocked, disabled, incoming, canIssue {incoming ?
      Requesting RP
      {incoming.label}
      Action
      {incoming.actionLabel || "No action label"}
      Accepted credentials
      {credentialRequirementsLabel(incoming.proof)}
      Expires
      {date(BigInt(incoming.proof.expires_at))}
      :

      No RP request loaded. Open a request from the separate demo app.

      }

      Camera & issuance

      -
      Preview
      {preview ? "Open — local camera guidance" : "Closed"}
      Guidance model
      {LIVE_GUIDANCE_MODEL_V1.modelKind}
      Runtime
      {LIVE_GUIDANCE_MODEL_V1.runtimePackage} · {LIVE_GUIDANCE_MODEL_V1.runtimeVersion} · CPU / WASM
      Staging issuance
      {configurationError ? "Configuration unavailable" : canIssue ? "Available · synthetic face input" : "Unavailable on this server"}
      TEE face verification
      Not connected
      -

      RGBNet face boxes drive face-count, centering and distance instructions. Inference runs in a dedicated worker, one frame at a time. Camera frames stay in this tab; they are not used by the staging issuer.

      +
      Preview
      {preview ? "Open — local camera guidance" : "Closed"}
      Guidance model
      {LIVE_GUIDANCE_MODEL_V1.modelKind}
      Runtime
      {LIVE_GUIDANCE_MODEL_V1.runtimePackage} · {LIVE_GUIDANCE_MODEL_V1.runtimeVersion} · CPU / WASM
      Staging issuance
      Not implemented
      TEE face verification
      Not connected
      +

      RGBNet face boxes drive face-count, centering and distance instructions. Inference runs in a dedicated worker, one frame at a time. Camera frames stay in this tab; they are not submitted for enrollment.

      ; } diff --git a/apps/authenticator/src/lib/selfie-issuance.ts b/apps/authenticator/src/lib/selfie-issuance.ts deleted file mode 100644 index 85c7816..0000000 --- a/apps/authenticator/src/lib/selfie-issuance.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { parse } from 'lossless-json' -import type { WalletKit } from './walletkit' -import { selfieResumeToken } from '../wallet/persistence' -import { readBounded } from './requests/bridge' -import { abortable } from './async' - -export class SelfieWalletTimeout extends Error {} - -export async function issueSelfieCredential( - wallet: WalletKit, - signal: AbortSignal, - progress: (message: string) => void -) { - const deadline = AbortSignal.any([signal, AbortSignal.timeout(300_000)]) - async function walletCall(promise: Promise): Promise { - const walletDeadline = AbortSignal.any([deadline, AbortSignal.timeout(90_000)]) - try { - return await abortable(promise, walletDeadline) - } catch (error) { - if (walletDeadline.aborted) { - wallet.terminate() - throw new SelfieWalletTimeout( - 'WalletKit timed out or was interrupted. Unlock again, then resume selfie issuance.' - ) - } - throw new Error('The encrypted wallet operation failed. Unlock again to resume issuance.', { cause: error }) - } - } - progress('Checking the encrypted vault for an active selfie credential…') - const existing = (await walletCall(wallet.listCredentials())).find( - record => record.issuerSchemaId === BigInt(11) && !record.isExpired - ) - if (existing) { - progress('An active selfie credential is already stored.') - return existing - } - progress('Preparing the schema-11 subject with WalletKit…') - const { sub, blindingFactor } = await walletCall(wallet.prepareCredential(BigInt(11))) - // The OPRF derives the subject/factor for this account and schema again on resume. - // Only an opaque issuer-operation capability is persisted, never the factor or seed. - const token = selfieResumeToken(sub) - progress('Preparing encrypted synthetic shares and staging identity authentication…') - for (;;) { - deadline.throwIfAborted() - const response = await fetch('/api/selfie-credential', { - method: 'POST', - headers: { 'content-type': 'application/json' }, - body: JSON.stringify({ sub, token }), - signal: deadline, - }) - const text = await readBounded(response, 131_072) - if (text.length > 131_072) throw new Error('Selfie issuer response exceeded its size limit.') - const result = JSON.parse(text) - if (!response.ok) - throw new Error(typeof result.error === 'string' ? result.error : `Selfie issuer HTTP ${response.status}`) - if (result.status === 'pending') { - progress(result.stage) - await abortable(new Promise(resolve => setTimeout(resolve, 3000)), deadline) - continue - } - if (result.status !== 'issued' || typeof result.credential !== 'string') - throw new Error('Selfie issuance did not return a credential.') - progress('Staging issued the credential. Issuer signature and subject checked; storing in the vault…') - const bytes = Uint8Array.from(atob(result.credential), character => character.charCodeAt(0)) - const credential = parse(new TextDecoder().decode(bytes)) as { - sub?: unknown - issuer_schema_id?: unknown - expires_at?: unknown - } - if ( - !credential || - String(credential.sub).toLowerCase() !== sub.toLowerCase() || - String(credential.issuer_schema_id) !== '11' || - BigInt(String(credential.expires_at)) <= BigInt(Math.floor(Date.now() / 1000)) - ) - throw new Error('Issued selfie credential does not match this subject/schema or is expired.') - const stored = await walletCall(wallet.storeCredential(bytes, blindingFactor)) - if (stored.issuerSchemaId !== BigInt(11)) throw new Error('Unexpected stored credential schema.') - progress('Selfie credential stored in the encrypted vault. Synthetic staging enrollment complete.') - return stored - } -} diff --git a/apps/authenticator/src/server/http.server.ts b/apps/authenticator/src/server/http.server.ts index d658bc6..e8627b1 100644 --- a/apps/authenticator/src/server/http.server.ts +++ b/apps/authenticator/src/server/http.server.ts @@ -1,6 +1,5 @@ import { resolve, relative, sep } from "node:path"; -import { AUTHENTICATOR_APP_SECURITY_HEADERS_V0, allowsSyntheticIssuance } from "../../../../config/authenticator-app-v0"; -import { POST as issueSelfie } from "./selfie-credential.server"; +import { AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "../../../../config/authenticator-app-v0"; import { GET as lookupRp } from "./staging-rp.server"; const DEFAULT_STATIC_ROOT = resolve(process.cwd(), "apps/authenticator/dist"); @@ -51,15 +50,8 @@ export function createAuthenticatorHttpHandler(options: { staticRoot?: string } return async (request: Request): Promise => { const url = new URL(request.url); let response: Response; - if (url.pathname === "/api/capabilities" && request.method === "GET") { - const probe = new Request(request.url, { headers: { origin: url.origin } }); - response = Response.json({ environment: "staging", syntheticSelfieIssuance: allowsSyntheticIssuance(probe) }); - } else if (url.pathname === "/api/staging-rp" && request.method === "GET") { + if (url.pathname === "/api/staging-rp" && request.method === "GET") { response = await lookupRp(request); - } else if (url.pathname === "/api/selfie-credential" && request.method === "POST") { - response = allowsSyntheticIssuance(request) - ? await issueSelfie(request) - : Response.json({ error: "Synthetic staging issuance is available only on the local authenticator." }, { status: 403 }); } else if (url.pathname.startsWith("/api/")) { response = Response.json({ error: "Not found" }, { status: 404 }); } else if (request.method !== "GET" && request.method !== "HEAD") { diff --git a/apps/authenticator/src/server/selfie-credential.server.ts b/apps/authenticator/src/server/selfie-credential.server.ts deleted file mode 100644 index e540678..0000000 --- a/apps/authenticator/src/server/selfie-credential.server.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { EnrollmentError, issueOrPollSelfie } from './selfie-issuer.server' - -export async function POST(request: Request) { - const url = new URL(request.url) - if (!['localhost', '127.0.0.1', '[::1]'].includes(url.hostname) || request.headers.get('origin') !== url.origin) - return Response.json( - { error: 'Synthetic staging issuance is available only from this localhost authenticator.' }, - { status: 403 } - ) - if (request.headers.get('content-type')?.split(';')[0].trim() !== 'application/json') - return Response.json({ error: 'Expected JSON.' }, { status: 415 }) - let body: { sub: string; token: string } - try { - const reader = request.body?.getReader() - if (!reader) throw new Error('Missing body') - let text = '' - try { - for (;;) { - const { done, value } = await reader.read() - if (done) break - text += new TextDecoder().decode(value) - if (text.length > 1024) { - await reader.cancel() - throw new Error('Body too large') - } - } - } finally { - reader.releaseLock() - } - body = JSON.parse(text) - if (!body || typeof body.sub !== 'string' || typeof body.token !== 'string' || !/^0x[0-9a-f]{64}$/.test(body.sub) || !/^[0-9a-f]{64}$/.test(body.token)) - throw new Error('Invalid input') - } catch { - return Response.json({ error: 'Expected a schema-11 subject and resume token.' }, { status: 400 }) - } - try { - const result = await issueOrPollSelfie( - body.sub, - body.token, - AbortSignal.any([request.signal, AbortSignal.timeout(170_000)]) - ) - return Response.json(result, { headers: { 'Cache-Control': 'no-store' } }) - } catch (error) { - const status = error instanceof EnrollmentError ? error.status : 502 - // eslint-disable-next-line no-console -- Operational failure; no request or identity material. - console.warn('staging_selfie_issuance_failed', { status, operation: 'issue_or_poll' }) - return Response.json( - { - error: - error instanceof EnrollmentError - ? error.message - : 'Staging enrollment could not complete. Retry resumes the saved operation without enrolling again.', - }, - { status, headers: { 'Cache-Control': 'no-store' } } - ) - } -} diff --git a/apps/authenticator/src/server/selfie-issuer.server.ts b/apps/authenticator/src/server/selfie-issuer.server.ts deleted file mode 100644 index 7718b77..0000000 --- a/apps/authenticator/src/server/selfie-issuer.server.ts +++ /dev/null @@ -1,298 +0,0 @@ -import { join } from 'node:path' -import { homedir } from 'node:os' -import { constants } from 'node:fs' -import { execFile } from 'node:child_process' -import { createPublicClient, http, parseAbi } from 'viem' -import { createHash, randomBytes, randomUUID } from 'node:crypto' -import { access, mkdir, readFile, rename, writeFile } from 'node:fs/promises' - -const FACE = 'https://app.stage.face.worldcoin.org' -const UA = 'WorldApp/1.0.0 Oxide/1.0.0 iOS' -const HELPER = process.env.STAGING_FACE_HELPER ?? join(process.cwd(), 'services/staging-issuance/face-enrollment-helper/target/debug/staging-face-crypto') -const ROOT = process.env.STAGING_SELFIE_STATE_DIR ?? join(homedir(), '.local/state/web-authenticator/synthetic-selfie-issuance') -const VERIFIER = '0x703a6316c975DEabF30b637c155edD53e24657DB' -const client = createPublicClient({ - transport: http('https://worldchain-mainnet.g.alchemy.com/public', { timeout: 20_000, retryCount: 0 }), -}) -const abi = parseAbi([ - 'function getCredentialSchemaIssuerRegistry() view returns (address)', - 'function issuerSchemaIdToPubkey(uint64) view returns ((uint256 x, uint256 y))', -]) - -type Operation = { - version: 1 - commitmentEncoding?: 'hex' - sub: string - tokenHash: string - seed: string - captureId: string - phase: 'prepared' | 'submitting' | 'submitted' | 'rejected' - rejection?: number -} -export class EnrollmentError extends Error { - constructor( - message: string, - public status = 502 - ) { - super(message) - } -} - -// Bound local cryptographic work. Persisted submission state also prevents a -// restarted process from re-enrolling an operation with an unknown outcome. -let busy = false -const hash = (value: string) => createHash('sha256').update(value).digest('hex') - -async function cryptoHelper(input: object, signal: AbortSignal): Promise { - signal.throwIfAborted() - return new Promise((resolve, reject) => { - const child = execFile(HELPER, [], { timeout: 90_000, maxBuffer: 262_144, signal }, (error, stdout) => { - if (error) return reject(new EnrollmentError('The local staging cryptography helper failed or timed out.')) - try { - resolve(JSON.parse(stdout) as T) - } catch { - reject(new EnrollmentError('The staging cryptography helper returned an invalid response.')) - } - }) - // Secrets travel over stdin, never process arguments or logs. - child.stdin?.on('error', () => { - /* execFile reports process/pipe failure through its callback. */ - }) - child.stdin?.end(JSON.stringify(input)) - }) -} - -async function boundedText(response: Response, limit: number): Promise { - if (!response.body) throw new EnrollmentError('Staging returned an empty response.') - const reader = response.body.getReader() - const chunks: Uint8Array[] = [] - let length = 0 - try { - for (;;) { - const { done, value } = await reader.read() - if (done) return Buffer.concat(chunks).toString('utf8') - length += value.length - if (length > limit) { - await reader.cancel() - throw new EnrollmentError('Staging response exceeded its size limit.') - } - chunks.push(value) - } - } finally { - reader.releaseLock() - } -} -async function remote(path: string, init: RequestInit, signal: AbortSignal) { - return fetch(path, { - ...init, - cache: 'no-store', - redirect: 'error', - signal: AbortSignal.any([signal, AbortSignal.timeout(20_000)]), - }) -} -async function auth(operation: Operation, kind: 'getidentity' | 'usercentricenrollment', signal: AbortSignal) { - const result = await cryptoHelper<{ identityCommitment: string; header: string }>( - { - operation: 'authenticate', - seed: operation.seed, - kind, - }, - signal - ) - if (!/^0x[0-9a-f]{64}$/.test(result.identityCommitment)) - throw new EnrollmentError( - 'The enrollment helper returned an invalid identity commitment. Rebuild it before retrying.', - 503 - ) - return result -} -async function save(path: string, operation: Operation) { - const temporary = `${path}.${randomUUID()}.tmp` - await writeFile(temporary, JSON.stringify(operation), { mode: 0o600, flag: 'wx' }) - await rename(temporary, path) -} - -export async function issueOrPollSelfie(sub: string, token: string, signal: AbortSignal) { - if (busy) throw new EnrollmentError('A staging enrollment operation is already running. Try again shortly.', 409) - busy = true - try { - try { - await access(HELPER, constants.X_OK) - } catch { - throw new EnrollmentError( - 'Build the local staging helper with bun run build:selfie-helper before issuing.', - 503 - ) - } - await mkdir(ROOT, { recursive: true, mode: 0o700 }) - const path = join(ROOT, `${hash(sub)}.json`) - let operation: Operation - try { - operation = JSON.parse(await readFile(path, 'utf8')) as Operation - if (operation.version !== 1 || operation.sub !== sub || operation.tokenHash !== hash(token)) - throw new EnrollmentError( - 'An enrollment already exists for this subject, but its resume token is unavailable. No new enrollment was submitted.', - 409 - ) - } catch (error) { - if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error - operation = { - version: 1, - commitmentEncoding: 'hex', - sub, - tokenHash: hash(token), - seed: randomBytes(32).toString('hex'), - captureId: randomUUID(), - phase: 'prepared', - } - await save(path, operation) - } - // The original helper sent decimal idComm, which the handler rejects - // before storing enrollment. Only that explicit 400 can be retried after - // this encoding fix; ambiguous submissions remain poll-only. - if (!operation.commitmentEncoding && operation.phase === 'rejected' && operation.rejection === 400) { - operation.commitmentEncoding = 'hex' - operation.phase = 'prepared' - delete operation.rejection - await save(path, operation) - } - if (operation.phase === 'rejected') - throw new EnrollmentError( - `Staging rejected this enrollment (HTTP ${operation.rejection}). It will not be resubmitted.`, - 422 - ) - if (operation.phase === 'prepared') { - operation.commitmentEncoding = 'hex' - const keys = await Promise.all( - [0, 1, 2].map(async index => { - const response = await remote( - `https://pki-face-ampc-stage.worldcoin.dev/public-key-${index}`, - {}, - signal - ) - if (!response.ok) { - await response.body?.cancel() - throw new EnrollmentError(`Staging share-key download failed (HTTP ${response.status}).`) - } - return boundedText(response, 1024) - }) - ) - const { shares } = await cryptoHelper<{ shares: string[] }>( - { operation: 'shares', public_keys: keys }, - signal - ) - if (shares.length !== 3 || shares.some(share => typeof share !== 'string' || share.length > 16_384)) - throw new EnrollmentError('Invalid encrypted shares.') - const proof = await auth(operation, 'usercentricenrollment', signal) - const body = new FormData() - const fields = { - capture_id: operation.captureId, - timestamp: Math.floor(Date.now() / 1000).toString(), - face_embedding_shares_0: shares[0], - face_embedding_shares_1: shares[1], - face_embedding_shares_2: shares[2], - face_embedding_version: '2.0.0', - face_embedding_type: 'ghostfacenet_flipped_mean', - face_embedding_inference_backend: 'face-engine', - pcp_version: '2.5', - sub, - // Orb Tools staging fixture: no recoverable PCP and no attested hash binding. - associated_data_hash: `0x${randomBytes(31).toString('hex').padStart(64, '0')}`, - } - for (const [key, value] of Object.entries(fields)) body.set(key, value) - signal.throwIfAborted() - operation.phase = 'submitting' - await save(path, operation) - const response = await remote( - `${FACE}/api/v1/identity?idComm=${encodeURIComponent(proof.identityCommitment)}`, - { - method: 'PUT', - body, - headers: { - 'user-agent': UA, - 'x-zkp-proof': proof.header, - 'integrity-token': 'staging-test-token', - 'integrity-signature': 'staging-test-token', - }, - }, - signal - ) - await response.body?.cancel() - if (!response.ok) { - if (response.status >= 400 && response.status < 500 && ![408, 409, 429].includes(response.status)) { - operation.phase = 'rejected' - operation.rejection = response.status - await save(path, operation) - } - throw new EnrollmentError( - operation.phase === 'rejected' - ? `Staging rejected the enrollment request (HTTP ${response.status}). No credential was issued; the request needs correcting before another submission.` - : `Staging enrollment returned HTTP ${response.status}. Retry checks the saved operation; it does not submit again.`, - operation.phase === 'rejected' ? 422 : 502 - ) - } - operation.phase = 'submitted' - await save(path, operation) - return { status: 'pending' as const, stage: 'Enrollment submitted. Waiting for staging issuance…' } - } - const proof = await auth(operation, 'getidentity', signal) - const response = await remote( - `${FACE}/api/v1/identity?idComm=${encodeURIComponent(proof.identityCommitment)}`, - { headers: { 'user-agent': UA, 'x-zkp-proof': proof.header } }, - signal - ) - if (!response.ok) { - await response.body?.cancel() - throw new EnrollmentError( - `Staging enrollment status failed (HTTP ${response.status}). Retry resumes the same operation.` - ) - } - const result = JSON.parse(await boundedText(response, 131_072)) - const enrollment = result.enrollment_status - if (!enrollment || enrollment.capture_id !== operation.captureId) - return { - status: 'pending' as const, - stage: 'Waiting for this capture. No duplicate enrollment will be submitted.', - } - if (['ENROLLMENT_FAILED', 'ENROLLMENT_NOT_UNIQUE'].includes(enrollment.status)) - throw new EnrollmentError( - `Staging enrollment finished with ${enrollment.status}. No credential was stored.`, - 422 - ) - if (enrollment.status === 'ENROLLMENT_IN_PROGRESS') - return { status: 'pending' as const, stage: 'Staging is processing the synthetic enrollment…' } - if ( - enrollment.status !== 'ENROLLMENT_UNIQUE_SUCCESSFUL' || - typeof enrollment.credential !== 'string' || - !/^[A-Za-z0-9+/]+={0,2}$/.test(enrollment.credential) || - enrollment.credential.length > 90_000 - ) - throw new EnrollmentError('Staging returned an invalid credential issuance response.') - if ((await client.getChainId()) !== 480) throw new EnrollmentError('Unexpected staging verifier chain.') - const registry = await client.readContract({ - address: VERIFIER, - abi, - functionName: 'getCredentialSchemaIssuerRegistry', - }) - const key = await client.readContract({ - address: registry, - abi, - functionName: 'issuerSchemaIdToPubkey', - args: [BigInt(11)], - }) - const verification = await cryptoHelper<{ verified: boolean }>( - { - operation: 'verify', - credential: enrollment.credential, - sub, - public_key: [key.x.toString(), key.y.toString()], - }, - signal - ) - if (verification.verified !== true) - throw new EnrollmentError('Staging credential signature verification failed.') - return { status: 'issued' as const, credential: enrollment.credential } - } finally { - busy = false - } -} diff --git a/apps/authenticator/src/wallet/persistence.ts b/apps/authenticator/src/wallet/persistence.ts index eeac4f2..4f364f5 100644 --- a/apps/authenticator/src/wallet/persistence.ts +++ b/apps/authenticator/src/wallet/persistence.ts @@ -13,15 +13,3 @@ export function registrationState(credentialId: string): RegistrationState | nul export function saveRegistrationState(credentialId: string, state: RegistrationState): void { window.localStorage.setItem(`world-id-staging-registration-v1:${credentialId}`, state); } - -/** An opaque issuer operation capability, never a passkey secret or blinding factor. */ -export function selfieResumeToken(sub: string): string { - const key = `world-id-staging-selfie-resume:${sub}`; - let token = window.localStorage.getItem(key); - if (token === null) { - token = Array.from(crypto.getRandomValues(new Uint8Array(32)), b => b.toString(16).padStart(2, "0")).join(""); - window.localStorage.setItem(key, token); - } - if (!/^[0-9a-f]{64}$/.test(token)) throw new Error("The saved selfie enrollment resume token is invalid."); - return token; -} diff --git a/apps/authenticator/test/app.test.tsx b/apps/authenticator/test/app.test.tsx index b2442f2..6540366 100644 --- a/apps/authenticator/test/app.test.tsx +++ b/apps/authenticator/test/app.test.tsx @@ -10,12 +10,11 @@ import type { DetectorResponse } from "../src/face/rgbnet.worker"; beforeAll(() => GlobalRegistrator.register({ url: "http://localhost:4173/" })); afterAll(() => GlobalRegistrator.unregister()); -let restore: (() => void) | undefined; -afterEach(() => { cleanup(); restore?.(); }); +afterEach(() => cleanup()); async function fixture(schema: number, available = false) { const { payload } = await signedRequest(schema); let records = available ? [{ credentialId: 1n, issuerSchemaId: BigInt(schema), isExpired: false, expiresAt: BigInt(Math.floor(Date.now()/1000)+3600), genesisIssuedAt: 0n } as CredentialMetadata] : []; - const calls = { prove: 0, issue: 0, deliver: [] as string[], failDelivery: false, listed: 0, deleted: [] as bigint[], failDelete: false, terminated: 0 }; + const calls = { prove: 0, deliver: [] as string[], failDelivery: false, listed: 0, deleted: [] as bigint[], failDelete: false, terminated: 0 }; const incoming: IncomingRequest = { proof: payload.proof_request, label: "rp_1", actionLabel: payload.action, validate: async () => {}, cancel: async () => {}, @@ -30,20 +29,18 @@ async function fixture(schema: number, available = false) { load: async () => incoming, open: async () => wallet, prove: async () => { calls.prove++; return JSON.stringify({ id: "test-request", responses: [{}] }); }, - issue: async () => { calls.issue++; records = [{ credentialId: 1n, issuerSchemaId: 11n, isExpired: false, expiresAt: BigInt(Math.floor(Date.now()/1000)+3600), genesisIssuedAt: 0n } as CredentialMetadata]; return { credentialId: 1n, issuerSchemaId: 11n }; }, }; - const mocked = spyOn(globalThis, "fetch").mockResolvedValue(Response.json({ environment: "staging", syntheticSelfieIssuance: true })); - restore = () => mocked.mockRestore(); return { services, calls, incoming }; } -test("Selfie-only requests lead to enrollment, then return for separate proof approval", async () => { +test("missing Selfie credentials show unavailable enrollment without an issuance action", async () => { const f = await fixture(11); const view = render(); fireEvent.click(await view.findByRole("button", { name: "Create or unlock with passkey" })); expect(await view.findByRole("heading", { name: "Set up Selfie Check" })).toBeTruthy(); - expect(view.getByText(/real staging credential using synthetic face data/)).toBeTruthy(); - fireEvent.click(view.getByRole("button", { name: "Issue staging Selfie credential" })); - await waitFor(() => expect((view.getByRole("button", { name: "Approve and share proof" }) as HTMLButtonElement).disabled).toBe(false)); - expect(f.calls.issue).toBe(1); expect(f.calls.prove).toBe(0); + expect(view.getByText(/Selfie Check enrollment is not available/)).toBeTruthy(); + expect(view.queryByRole("button", { name: /Issue.*credential/ })).toBeNull(); + fireEvent.click(view.getByRole("button", { name: "Back to wallet" })); + expect((view.getByRole("button", { name: "Approve and share proof" }) as HTMLButtonElement).disabled).toBe(true); + expect(f.calls.prove).toBe(0); }); test("Orb-only requests never offer Selfie enrollment", async () => { const f = await fixture(1); const view = render(); @@ -60,7 +57,6 @@ test("either-credential requests wait for the user's choice", async () => { fireEvent.click(await view.findByRole("button", { name: "Create or unlock with passkey" })); expect(await view.findByRole("button", { name: "Set up Selfie Check" })).toBeTruthy(); expect(view.queryByRole("heading", { name: "Set up Selfie Check" })).toBeNull(); - expect(f.calls.issue).toBe(0); }); test("delivery retries reuse the proof and show success only after the bridge accepts it", async () => { const f = await fixture(11, true); f.calls.failDelivery = true; @@ -140,7 +136,7 @@ test("dev mode is opt-in, inspects metadata and refreshes without issuing", asyn expect(view.getByText(/CPU \/ WASM/)).toBeTruthy(); fireEvent.click(view.getByRole("button", { name: "Refresh vault" })); await waitFor(() => expect(f.calls.listed).toBe(2)); - expect(f.calls.issue).toBe(0); expect(f.calls.prove).toBe(0); + expect(f.calls.prove).toBe(0); fireEvent.click(view.getByRole("switch", { name: "Dev mode" })); expect(view.queryByRole("complementary", { name: "Developer tools" })).toBeNull(); }); diff --git a/apps/authenticator/test/http-server.test.ts b/apps/authenticator/test/http-server.test.ts index 5e45817..b25ff1d 100644 --- a/apps/authenticator/test/http-server.test.ts +++ b/apps/authenticator/test/http-server.test.ts @@ -2,7 +2,7 @@ import { expect, test } from "bun:test"; import { createAuthenticatorHttpHandler } from "../src/server/http.server"; import { AUTHENTICATOR_APP_CONFIG, AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "../../../config/authenticator-app-v0"; const handler = createAuthenticatorHttpHandler(); -const origin = AUTHENTICATOR_APP_CONFIG.localOrigin; +const origin = `http://localhost:${AUTHENTICATOR_APP_CONFIG.port}`; const post = (body: unknown, headerOrigin = origin, pathOrigin = origin) => handler(new Request(`${pathOrigin}/api/selfie-credential`, { method: "POST", headers: { origin: headerOrigin, "content-type": "application/json" }, body: JSON.stringify(body), })); @@ -11,15 +11,12 @@ test("embedded demo routes and simulated endpoints are gone", async () => { expect((await handler(new Request(origin + path))).status).toBe(404); } }); -test("synthetic issuance rejects other origins and non-loopback hosts before issuing", async () => { +test("synthetic enrollment is absent even for valid localhost requests", async () => { const body = { sub: "0x" + "a".repeat(64), token: "b".repeat(64) }; - expect((await post(body, "https://other.example")).status).toBe(403); - expect((await post(body, "https://auth.example", "https://auth.example")).status).toBe(403); -}); -test("issuance rejects malformed subjects, tokens, types and oversized bodies", async () => { - for (const body of [null, {}, { sub: ["0x" + "a".repeat(64)], token: "b".repeat(64) }, { sub: "0x01", token: "abc" }, { excess: "x".repeat(2000) }]) { - expect((await post(body)).status).toBe(400); - } + expect((await post(body)).status).toBe(404); + expect((await post(body, "https://other.example")).status).toBe(404); + expect((await post(body, "https://auth.example", "https://auth.example")).status).toBe(404); + expect((await handler(new Request(origin + "/api/capabilities"))).status).toBe(404); }); test("RP lookup rejects malformed identifiers without a remote call", async () => { expect((await handler(new Request(origin + "/api/staging-rp?id=bad"))).status).toBe(400); diff --git a/config/authenticator-app-v0.ts b/config/authenticator-app-v0.ts index 22ea9aa..c32c33f 100644 --- a/config/authenticator-app-v0.ts +++ b/config/authenticator-app-v0.ts @@ -38,37 +38,7 @@ function envPort(): number { return port; } -function envOrigin(name: string, fallback: string): string { - const raw = envValue(name); - if (raw === undefined) return fallback; - let url: URL; - try { - url = new URL(raw); - } catch { - throw new TypeError(`${name}_invalid: ${raw}`); - } - if ( - (url.protocol !== "https:" && url.protocol !== "http:") || - url.pathname !== "/" || url.search !== "" || url.hash !== "" || - url.username !== "" || url.password !== "" - ) { - throw new TypeError(`${name}_must_be_a_bare_origin: ${raw}`); - } - return url.origin; -} - -const port = envPort(); export const AUTHENTICATOR_APP_CONFIG = Object.freeze({ host: envValue("AUTHENTICATOR_HOST") ?? "127.0.0.1", - port, - publicOrigin: envOrigin("AUTHENTICATOR_PUBLIC_ORIGIN", `http://127.0.0.1:${port}`), - localOrigin: envOrigin("AUTHENTICATOR_LOCAL_ORIGIN", `http://localhost:${port}`), + port: envPort(), }); - -export function allowsSyntheticIssuance(request: Request): boolean { - const url = new URL(request.url); - const origins = [AUTHENTICATOR_APP_CONFIG.publicOrigin, AUTHENTICATOR_APP_CONFIG.localOrigin]; - return ["127.0.0.1", "::1", "localhost"].includes(AUTHENTICATOR_APP_CONFIG.host) && - ["127.0.0.1", "[::1]", "localhost"].includes(url.hostname) && origins.includes(url.origin) && - request.headers.get("origin") === url.origin; -} diff --git a/eslint.config.mjs b/eslint.config.mjs index 6fe59c2..43b3db5 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -8,6 +8,9 @@ export default tseslint.config( { ignores: [ "experiments/**", + "demo/**", + "**/.next/**", + "**/target/**", "**/dist/**", "**/dist-server/**", "**/dist-static/**", @@ -115,5 +118,13 @@ export default tseslint.config( ], }, }, + { + files: ["apps/**/src/**/*.{ts,tsx}", "packages/**/src/**/*.{ts,tsx}", "services/**/*.{ts,tsx}", "config/**/*.ts"], + rules: { + "no-restricted-imports": ["error", { + patterns: [{ group: ["**/experiments/**", "**/fixtures/**"], message: "Product code must not import experiments or test fixtures." }], + }], + }, + }, { files: ["apps/authenticator/src/wallet/flow-logging.ts"], rules: { "no-console": "off" } }, ); diff --git a/package.json b/package.json index 9cf7276..84b6634 100644 --- a/package.json +++ b/package.json @@ -16,14 +16,13 @@ "lint": "eslint -c eslint.config.mjs . --max-warnings=0", "start:authenticator": "bun apps/authenticator/src/server/main.ts", "start:authenticator:tunnel": "bun --env-file=.env.tunnel apps/authenticator/src/server/main.ts", - "test": "bun test apps packages services config tests", - "test:authenticator": "bun test apps/authenticator/test", - "test:browser": "bun run build:authenticator && playwright test -c playwright.integration.config.ts", - "test:integration": "bun test tests/integration", + "test": "bun test ./apps ./packages ./config ./tests", + "test:authenticator": "bun test ./apps/authenticator/test", + "test:browser": "bun run build:authenticator && playwright test -c tests/e2e/playwright.config.ts", + "test:integration": "bun test ./tests/integration", "typecheck": "tsc -p tsconfig.client.json --noEmit && tsc -p tsconfig.server.json --noEmit && tsc -p tsconfig.test.json --noEmit && tsc -p tsconfig.tools.json --noEmit", "dev": "concurrently -k -n client,server \"vite build --watch --config vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", - "start": "bun apps/authenticator/src/server/main.ts", - "build:selfie-helper": "cargo build --locked --config services/staging-issuance/face-enrollment-helper/build-config.toml --manifest-path services/staging-issuance/face-enrollment-helper/Cargo.toml" + "start": "bun apps/authenticator/src/server/main.ts" }, "dependencies": { "onnxruntime-web": "1.30.0", diff --git a/services/staging-issuance/face-enrollment-helper/Cargo.lock b/services/staging-issuance/face-enrollment-helper/Cargo.lock deleted file mode 100644 index c9bbe93..0000000 --- a/services/staging-issuance/face-enrollment-helper/Cargo.lock +++ /dev/null @@ -1,9727 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "ab_glyph" -version = "0.2.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" -dependencies = [ - "ab_glyph_rasterizer", - "owned_ttf_parser", -] - -[[package]] -name = "ab_glyph_rasterizer" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" - -[[package]] -name = "acir_field" -version = "1.0.0-beta.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "750990cd3514b93fbeacaa3e9e34cf1f61f02b340e3688d61a65992c64d8ee47" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "cfg-if", - "hex", - "num-bigint", - "serde", -] - -[[package]] -name = "addr2line" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[package]] -name = "aead" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" -dependencies = [ - "crypto-common 0.1.7", - "generic-array", -] - -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures 0.2.17", -] - -[[package]] -name = "aes-prng" -version = "0.2.1" -source = "git+https://github.com/tf-encrypted/aes-prng.git?branch=dragos%2Fdisplay#ebe79b1173ab6698c69d18dc464294f1893b44bb" -dependencies = [ - "aes", - "byteorder", - "rand 0.8.8", -] - -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" -dependencies = [ - "memchr", -] - -[[package]] -name = "aligned" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685" -dependencies = [ - "as-slice", -] - -[[package]] -name = "aligned-vec" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" -dependencies = [ - "equator", -] - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "alloy" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5a08ebfa51fdc243e0c6a662f5cf3428f04d1ad858e3fe77238cc78063eb86d" -dependencies = [ - "alloy-core", - "alloy-signer", - "alloy-signer-local", -] - -[[package]] -name = "alloy-consensus" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727016fed834c2392d014dd697ea473f3e47bcec31ba31ccffa9c1d18ed904e5" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-trie", - "alloy-tx-macros", - "auto_impl", - "borsh", - "c-kzg", - "derive_more", - "either", - "k256 0.13.4", - "once_cell", - "rand 0.8.8", - "secp256k1 0.30.0", - "serde", - "serde_json", - "serde_with", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-consensus-any" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea5ae60bbb3ce9dc52685a70a3755ad4432045fd38079b763cfe5127c706134" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-core" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6a70852055d66af821d28497e690c95950020ed1ee4c7a0ab9b02a01ac75ee3" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", -] - -[[package]] -name = "alloy-eip2124" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "crc", - "serde", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-eip2930" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64579d931b3f8eacc7c9ab0b220e87e9c4816e5c724ede1947b55c2f8e92ae5" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "borsh", - "serde", -] - -[[package]] -name = "alloy-eip7702" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "borsh", - "serde", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-eip7928" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a12e1dc70236cfb8e79b96dd8544aed47c39e2f45dc6b51c3703e969e052faa" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "borsh", - "once_cell", - "serde", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-eip8141" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36422c14bd57dcd638e276c8c9d7ac09eb16598e3a9dbd34e4b55267d4565b5e" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "borsh", - "serde", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-eips" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01905444bd2fc330673f11d2466c0f54e8488f7ce3132b6a5e6497916fca765" -dependencies = [ - "alloy-eip2124", - "alloy-eip2930", - "alloy-eip7702", - "alloy-eip7928", - "alloy-eip8141", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "auto_impl", - "borsh", - "c-kzg", - "derive_more", - "either", - "serde", - "serde_with", - "sha2 0.10.9", -] - -[[package]] -name = "alloy-json-abi" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "858acd7fdad1e4a7057fd9c1b39c1f2cd6bcd57ebf3c56e2853c02ead049e816" -dependencies = [ - "alloy-primitives", - "alloy-sol-type-parser", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-json-rpc" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff9cb760601d352d1e59aab5803c3fb6dc99824b6883f5c7a781aacd4b54c66" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", - "http", - "serde", - "serde_json", - "thiserror 2.0.21", - "tracing", -] - -[[package]] -name = "alloy-network" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e11dfba13dac9e54576bf41e1b7461491367e0bce6a2a4293b9e40ffa3ebd5e9" -dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-json-rpc", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-any", - "alloy-rpc-types-eth", - "alloy-serde", - "alloy-signer", - "alloy-sol-types", - "async-trait", - "auto_impl", - "derive_more", - "futures-utils-wasm", - "serde", - "serde_json", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-network-primitives" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3819bf6794d25f679d42c3f2b168e12cae08c56bb41d393cb6249b55e6d5933e" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-primitives" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5e9dbd49258ac3ab893a481d46be29b58be7f734dcac46cd80b6b13ee36566c" -dependencies = [ - "alloy-rlp", - "bytes", - "cfg-if", - "const-hex", - "derive_more", - "fixed-cache", - "foldhash 0.2.0", - "hashbrown 0.17.1", - "indexmap 2.14.2", - "itoa", - "k256 0.13.4", - "keccak-asm", - "paste", - "proptest", - "rand 0.9.5", - "rapidhash", - "ruint", - "rustc-hash", - "secp256k1 0.31.1", - "serde", - "sha3 0.11.0", -] - -[[package]] -name = "alloy-rlp" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24671b1f62edcf0f9b62994c7bf72cd621a04a4b99f5020ece1a647b40e2f103" -dependencies = [ - "alloy-rlp-derive", - "arrayvec", - "bytes", -] - -[[package]] -name = "alloy-rlp-derive" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d4311c03125e8a18296504560b9de3d75ecbd0dcda7f71e6cf2a196d57e6fba" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "alloy-rpc-types-any" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c5d320312e4a9481b18185429e57fa161dbf9468414ba5667aff4ebe7bd37e7" -dependencies = [ - "alloy-consensus-any", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-rpc-types-eth" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c475e21fe8a8caa02166b326ed22207a1a0597fc9b0dcdfb46e2fe6f80dadf" -dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-sol-types", - "alloy-trie", - "itertools 0.14.0", - "serde", - "serde_json", - "serde_with", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-serde" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f44f297d3b9e3ca2c3039e3c0ed69acde9b35edda15381cf78f725b7263fbe2" -dependencies = [ - "alloy-primitives", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-signer" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7de6fd34b5ba1789d482fa800dd97219b34765d6b07633a989a24d2dace770e" -dependencies = [ - "alloy-primitives", - "async-trait", - "auto_impl", - "either", - "elliptic-curve 0.13.8", - "k256 0.13.4", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-signer-local" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6909c09d586c7b55eced688754d57dde8a6bcbae2b83e69a9b9250e74cfd79e" -dependencies = [ - "alloy-consensus", - "alloy-network", - "alloy-primitives", - "alloy-signer", - "async-trait", - "k256 0.13.4", - "rand 0.8.8", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-sol-macro" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60dd79f578c3912f1fc2a150dbeb8110b8cfb976c60f98ebf6de9d5da5965a2b" -dependencies = [ - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "proc-macro-error3", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "alloy-sol-macro-expander" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edb8520f2f94275e1caa73c85207dcc78ec402a9a4c429240f9a0783a8f16c0" -dependencies = [ - "alloy-sol-macro-input", - "const-hex", - "heck", - "indexmap 2.14.2", - "proc-macro-error3", - "proc-macro2", - "quote", - "sha3 0.11.0", - "syn 2.0.119", - "syn-solidity", -] - -[[package]] -name = "alloy-sol-macro-input" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66af2d9344882172993be5f5cbfd349fdfa52cb548f7af8715b446fb35ef6001" -dependencies = [ - "const-hex", - "dunce", - "heck", - "macro-string", - "proc-macro2", - "quote", - "syn 2.0.119", - "syn-solidity", -] - -[[package]] -name = "alloy-sol-type-parser" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c2a8abc3334044013b23d5e438cc5dc802e5544cc42b713d0840d5185967cc" -dependencies = [ - "serde", - "winnow 1.0.4", -] - -[[package]] -name = "alloy-sol-types" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e6f87cf007caa54e95455875fbd25879b008d0d9c7c340a2c258b3a3400a28c" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-macro", - "serde", -] - -[[package]] -name = "alloy-trie" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94e3e0a88f8db47250ac8a95fb825d020719f833eb1dc661bd3609c3bbece7d" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "derive_more", - "nybbles", - "serde", - "smallvec 1.16.2", - "thiserror 2.0.21", - "tracing", -] - -[[package]] -name = "alloy-tx-macros" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60fa90c57738ace5b38106c9f743f3d6d47de09a82e82ecfc42702c1acf116ee" -dependencies = [ - "darling 0.23.0", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ampc-secret-sharing" -version = "0.1.0" -source = "git+https://github.com/worldcoin/ampc-common.git?rev=3062538f0307471ed0dd2be8258952c807747141#3062538f0307471ed0dd2be8258952c807747141" -dependencies = [ - "aes-prng", - "bytemuck", - "eyre", - "itertools 0.13.0", - "num-traits", - "rand 0.8.8", - "rand_distr", - "serde", -] - -[[package]] -name = "android_system_properties" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" -dependencies = [ - "libc", -] - -[[package]] -name = "anstream" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" - -[[package]] -name = "anstyle-parse" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" -dependencies = [ - "anstyle", - "once_cell_polyfill", - "windows-sys 0.61.2", -] - -[[package]] -name = "anyhow" -version = "1.0.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" - -[[package]] -name = "anymap2" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" - -[[package]] -name = "anymap3" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5dfbc6d8d2675589ccbe4d0fd61df2419075625f8c1a62325e718e2b0049f9" - -[[package]] -name = "approx" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" -dependencies = [ - "num-traits", -] - -[[package]] -name = "aquamarine" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" -dependencies = [ - "include_dir", - "itertools 0.10.5", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" -dependencies = [ - "derive_arbitrary", -] - -[[package]] -name = "arg_enum_proc_macro" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-bn254" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" -dependencies = [ - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-bn254" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bc66f96ebe2a17a499475b4f94791d379817592ef494171586967ffdc6f95db" -dependencies = [ - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-r1cs-std", - "ark-std 0.6.0", -] - -[[package]] -name = "ark-crypto-primitives" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0c292754729c8a190e50414fd1a37093c786c709899f29c9f7daccecfa855e" -dependencies = [ - "ahash", - "ark-crypto-primitives-macros", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-relations 0.5.1", - "ark-serialize 0.5.0", - "ark-snark 0.5.1", - "ark-std 0.5.0", - "blake2 0.10.6", - "derivative", - "digest 0.10.7", - "fnv", - "merlin", - "sha2 0.10.9", -] - -[[package]] -name = "ark-crypto-primitives" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b3409b1846fe459d19c95df039481575ac6d5842ae63858ad75cc31219bfc1" -dependencies = [ - "ahash", - "ark-crypto-primitives-macros", - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-r1cs-std", - "ark-relations 0.6.0", - "ark-serialize 0.6.0", - "ark-snark 0.6.0", - "ark-std 0.6.0", - "blake2 0.10.6", - "blake3", - "derivative", - "digest 0.10.7", - "fnv", - "merlin", - "num-bigint", - "rayon", - "sha2 0.10.9", -] - -[[package]] -name = "ark-crypto-primitives-macros" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-ec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-poly 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe", - "fnv", - "hashbrown 0.15.5", - "itertools 0.13.0", - "num-bigint", - "num-integer", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8352a2b2aedf6ba2cc38f7520fc51191d518dde96175c729af19f2d059f191c4" -dependencies = [ - "ahash", - "ark-ff 0.6.0", - "ark-poly 0.6.0", - "ark-serialize 0.6.0", - "ark-std 0.6.0", - "educe", - "fnv", - "hashbrown 0.17.1", - "itertools 0.14.0", - "num-bigint", - "num-integer", - "num-traits", - "rayon", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" -dependencies = [ - "ark-ff-asm 0.3.0", - "ark-ff-macros 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.3.3", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" -dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "digest 0.10.7", - "itertools 0.10.5", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.4.1", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" -dependencies = [ - "ark-ff-asm 0.5.0", - "ark-ff-macros 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "educe", - "itertools 0.13.0", - "num-bigint", - "num-traits", - "paste", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7a806ac6c8307b929df4645776290a50ee2aac754ad09d8bdf73391309e43af" -dependencies = [ - "ark-ff-asm 0.6.0", - "ark-ff-macros 0.6.0", - "ark-serialize 0.6.0", - "ark-std 0.6.0", - "digest 0.10.7", - "educe", - "num-bigint", - "num-traits", - "rayon", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" -dependencies = [ - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-ff-asm" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1479009684adc073dff49a1025d3a7065b317a9ead25aaaca38cdc70058ba8a2" -dependencies = [ - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-ff-macros" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" -dependencies = [ - "num-bigint", - "num-traits", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-ff-macros" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0691ed21ef00ef89c1e9bda832eba493dda3ec2f8d892fb25b705f73f06bb8" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-groth16" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88f1d0f3a534bb54188b8dcc104307db6c56cdae574ddc3212aec0625740fc7e" -dependencies = [ - "ark-crypto-primitives 0.5.0", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-poly 0.5.0", - "ark-relations 0.5.1", - "ark-serialize 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-groth16" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a293328aa422e65527e285614ce5d1dceb0bd7b8b18d18b1b63191ee1f74cb41" -dependencies = [ - "ark-crypto-primitives 0.6.0", - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-poly 0.6.0", - "ark-relations 0.6.0", - "ark-serialize 0.6.0", - "ark-snark 0.6.0", - "ark-std 0.6.0", - "rayon", -] - -[[package]] -name = "ark-poly" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe", - "fnv", - "hashbrown 0.15.5", -] - -[[package]] -name = "ark-poly" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f55af10b672002b8d953e230282c51206842e20e5791a94432219b4201de5c" -dependencies = [ - "ahash", - "ark-ff 0.6.0", - "ark-serialize 0.6.0", - "ark-std 0.6.0", - "educe", - "fnv", - "hashbrown 0.17.1", - "rayon", -] - -[[package]] -name = "ark-r1cs-std" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291f1c6628bfcac79b0dc2adbe401aa9100e2e96daa971645e0b18fc94de9a98" -dependencies = [ - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-relations 0.6.0", - "ark-std 0.6.0", - "educe", - "itertools 0.14.0", - "num-bigint", - "num-integer", - "num-traits", - "tracing", -] - -[[package]] -name = "ark-relations" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" -dependencies = [ - "ark-ff 0.5.0", - "ark-std 0.5.0", - "tracing", -] - -[[package]] -name = "ark-relations" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4c11c797a64b8a23e22bf4e77bf582ac27bb21395e3183a9a506ba2561e9f9" -dependencies = [ - "ark-ff 0.6.0", - "ark-poly 0.6.0", - "ark-serialize 0.6.0", - "ark-std 0.6.0", - "foldhash 0.1.5", - "indexmap 2.14.2", - "rayon", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" -dependencies = [ - "ark-std 0.3.0", - "digest 0.9.0", -] - -[[package]] -name = "ark-serialize" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" -dependencies = [ - "ark-std 0.4.0", - "digest 0.10.7", - "num-bigint", -] - -[[package]] -name = "ark-serialize" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" -dependencies = [ - "ark-serialize-derive 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "num-bigint", -] - -[[package]] -name = "ark-serialize" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a74dd304fd536fb95d0a328e72be759209cc496a9da094c5bc56e5fea4f9e86b" -dependencies = [ - "ark-serialize-derive 0.6.0", - "ark-std 0.6.0", - "digest 0.10.7", - "num-bigint", - "rayon", - "serde_with", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f153690697a2b91e5e1251ff98411ee5371500a111a0fd317a70e588eb300f9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-snark" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d368e2848c2d4c129ce7679a7d0d2d612b6a274d3ea6a13bad4445d61b381b88" -dependencies = [ - "ark-ff 0.5.0", - "ark-relations 0.5.1", - "ark-serialize 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-snark" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bdb461d2be9b2bd6f303c79fffc89f5858790a7b4d33257bca3178e2c071fb9" -dependencies = [ - "ark-ff 0.6.0", - "ark-relations 0.6.0", - "ark-serialize 0.6.0", - "ark-std 0.6.0", -] - -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand 0.8.8", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand 0.8.8", -] - -[[package]] -name = "ark-std" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" -dependencies = [ - "num-traits", - "rand 0.8.8", -] - -[[package]] -name = "ark-std" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "367c9c827ed431bff6868b7aa926e05b16eb46603cc8b6e768e4a5553fa1d155" -dependencies = [ - "num-traits", - "rand 0.8.8", - "rayon", -] - -[[package]] -name = "arrayref" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" - -[[package]] -name = "arrayvec" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -dependencies = [ - "serde", - "zeroize", -] - -[[package]] -name = "as-slice" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" -dependencies = [ - "stable_deref_trait", -] - -[[package]] -name = "askama" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6024d73179f43f15ccd2b881bfea6fee7f3a46ec53f33b52210dea749ebebaa4" -dependencies = [ - "askama_macros", - "itoa", - "percent-encoding", - "serde", - "serde_json", -] - -[[package]] -name = "askama_derive" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071ee5ebf2138e3ad180e0aacf6940c2cab5e6d8333741d9925c7bee2b153f39" -dependencies = [ - "askama_parser", - "basic-toml", - "glob", - "memchr", - "proc-macro2", - "quote", - "rustc-hash", - "serde", - "serde_derive", - "syn 3.0.6", -] - -[[package]] -name = "askama_macros" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643e1c7cbb6aec1d920332fe51a7c0d8219e273dcb8602db03f5263e4d16487b" -dependencies = [ - "askama_derive", -] - -[[package]] -name = "askama_parser" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c5ae75772275d268b03ab8bdccdd12117b6169ee23256942b34e46c9f476583" -dependencies = [ - "rustc-hash", - "serde", - "serde_derive", - "unicode-ident", - "winnow 1.0.4", -] - -[[package]] -name = "async-compat" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c97d7ff3c25d6c10d64170c12acaf5d4245e76dece3779c1d92b153a64f11df" -dependencies = [ - "futures-core", - "futures-io", - "once_cell", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "async-lock" -version = "3.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" -dependencies = [ - "event-listener", - "event-listener-strategy", - "pin-project-lite", -] - -[[package]] -name = "async-trait" -version = "0.1.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "atomic-polyfill" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" -dependencies = [ - "critical-section", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "attestation-gateway-types" -version = "0.1.0" -source = "git+https://github.com/worldcoin/attestation-gateway?rev=f5d1f53#f5d1f53db6d1158b82c62dc02348c0e314d0b6ce" -dependencies = [ - "hex", - "http", - "serde", - "sha2 0.10.9", - "thiserror 2.0.21", -] - -[[package]] -name = "auto_impl" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "autocfg" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" - -[[package]] -name = "av-scenechange" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394" -dependencies = [ - "aligned", - "anyhow", - "arg_enum_proc_macro", - "arrayvec", - "log", - "num-rational", - "num-traits", - "pastey", - "rayon", - "thiserror 2.0.21", - "v_frame", - "y4m", -] - -[[package]] -name = "av1-grain" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8" -dependencies = [ - "anyhow", - "arrayvec", - "log", - "nom 8.0.0", - "num-rational", - "v_frame", -] - -[[package]] -name = "avif-serialize" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7178fe5f7d460b13895ebb9dcb28a3a6216d2df2574a0806cb51b555d297f38" -dependencies = [ - "arrayvec", -] - -[[package]] -name = "axum" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" -dependencies = [ - "axum-core", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "serde_core", - "sync_wrapper", - "tower", - "tower-layer", - "tower-service", -] - -[[package]] -name = "axum-core" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "sync_wrapper", - "tower-layer", - "tower-service", -] - -[[package]] -name = "backtrace" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide 0.8.9", - "object", - "rustc-demangle", - "windows-link", -] - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base16ct" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "base64" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" - -[[package]] -name = "base64ct" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" - -[[package]] -name = "basic-toml" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a" -dependencies = [ - "serde", -] - -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - -[[package]] -name = "bit_field" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" - -[[package]] -name = "bitcoin-consensus-encoding" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9daa31138eb443d5751b207f3f64154e2bb09cd59960562ccc7a7112be38147f" -dependencies = [ - "bitcoin-internals", - "hex-conservative 1.3.0", - "serde", -] - -[[package]] -name = "bitcoin-internals" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8bea3a9f0cfece4564e37cb49a38cc245ca5184719e50d7d0dda3268722c4e2" - -[[package]] -name = "bitcoin-io" -version = "0.1.101" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb5de036369d1ac59d3c1819ebc4d850f89466f5401c571a285b6ed564a4cb78" -dependencies = [ - "bitcoin-consensus-encoding", -] - -[[package]] -name = "bitcoin_hashes" -version = "0.14.101" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca4c7abb40c8817d77403c880988cfd484f23ab2365726afb2f798363e2c4a2" -dependencies = [ - "bitcoin-io", - "hex-conservative 0.2.3", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06" - -[[package]] -name = "bitstream-io" -version = "4.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f" -dependencies = [ - "no_std_io2", -] - -[[package]] -name = "bitvec" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddcec3d12c579d40898fe0a9a358a803c23e9c52ca3c425707f81c9436211837" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "blake2" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "blake2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b5d4d889834ee8ecfc0f8426ad30faf7cdcb10f741a8e6d7224d95325479f6f" -dependencies = [ - "digest 0.11.3", -] - -[[package]] -name = "blake3" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if", - "constant_time_eq", - "cpufeatures 0.2.17", - "digest 0.10.7", - "zeroize", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "block-buffer" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" -dependencies = [ - "hybrid-array", -] - -[[package]] -name = "block-padding" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" -dependencies = [ - "generic-array", -] - -[[package]] -name = "blst" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20659f9bbee16cbbd2f7393e40ab6309f5a98f76a2eb57a995ec508b72387fe" -dependencies = [ - "cc", - "glob", - "threadpool", - "zeroize", -] - -[[package]] -name = "borsh" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "553c5d846a6ba5150c65e3b1b8ec073bcf1abc20f9b7220de384a4443ea4e20a" -dependencies = [ - "borsh-derive", - "bytes", - "cfg_aliases", -] - -[[package]] -name = "borsh-derive" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cdfe656708a01f89b451a7d36466e6fe6c414de0aa18fc54f864f6f9ca9f56" -dependencies = [ - "once_cell", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "brillig" -version = "1.0.0-beta.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f985dfdc4f40039725ee3032e235900797db5987a99e1f8adbc5a449a67ef22" -dependencies = [ - "acir_field", - "itertools 0.14.0", - "serde", -] - -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "built" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c0e531d93d39c34eef561e929e8a7f86d77a5af08aac4f6d6e39976c51858e9" - -[[package]] -name = "bumpalo" -version = "3.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" - -[[package]] -name = "by_address" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" - -[[package]] -name = "byte-slice-cast" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" - -[[package]] -name = "bytemuck" -version = "1.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a1f896587b6f2c069c73d2f0913e2d590c3990285cd2f0b6aa02b786b4c679c" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "byteorder-lite" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" - -[[package]] -name = "bytes" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" -dependencies = [ - "serde", -] - -[[package]] -name = "c-kzg" -version = "2.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d04308254695569fdb9bfe3bacc1c91837a670d0806605eb82d63748fbd3a6" -dependencies = [ - "blst", - "cc", - "glob", - "hex", - "libc", - "once_cell", - "serde", -] - -[[package]] -name = "camino" -version = "1.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbad30e4b4c14a39e3cc8aed085a12a327257c316619c93581e017bc52be591" -dependencies = [ - "serde_core", -] - -[[package]] -name = "cargo-platform" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0061da739915fae12ea00e16397555ed4371a6bb285431aab930f61b0aa4ba" -dependencies = [ - "serde", - "serde_core", -] - -[[package]] -name = "cargo_metadata" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9" -dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.28", - "serde", - "serde_json", - "thiserror 2.0.21", -] - -[[package]] -name = "cbc" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" -dependencies = [ - "cipher", -] - -[[package]] -name = "cc" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f360145194ee8e21db5ee7f3fcd4fe52210864c75c985dae33218202c8bbe040" -dependencies = [ - "find-msvc-tools", - "jobserver", - "libc", - "shlex 2.0.1", -] - -[[package]] -name = "cfg-if" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" - -[[package]] -name = "cfg_aliases" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" - -[[package]] -name = "chacha20" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures 0.2.17", -] - -[[package]] -name = "chacha20" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" -dependencies = [ - "cfg-if", - "cpufeatures 0.3.1", - "rand_core 0.10.1", -] - -[[package]] -name = "chrono" -version = "0.4.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" -dependencies = [ - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-link", -] - -[[package]] -name = "ciborium" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" - -[[package]] -name = "ciborium-ll" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" -dependencies = [ - "ciborium-io", - "half", -] - -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common 0.1.7", - "inout", - "zeroize", -] - -[[package]] -name = "clang" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ed30b30e1e17966b55ddd0b9dd2758fd824f0a6da6875c8abb17e6aba47c28" -dependencies = [ - "clang-sys", - "libc", -] - -[[package]] -name = "clang-sys" -version = "1.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a" -dependencies = [ - "glob", - "libc", - "libloading", -] - -[[package]] -name = "clap" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "clap_lex" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486" - -[[package]] -name = "cmov" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" - -[[package]] -name = "cobs" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" -dependencies = [ - "thiserror 2.0.21", -] - -[[package]] -name = "codespan" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583f52b0658b321b25fd6b209b6c76cf058f433071297de64e5980c3d9aad937" -dependencies = [ - "codespan-reporting", - "serde", -] - -[[package]] -name = "codespan-reporting" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681" -dependencies = [ - "serde", - "termcolor", - "unicode-width", -] - -[[package]] -name = "color-eyre" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d" -dependencies = [ - "backtrace", - "color-spantrace", - "eyre", - "indenter", - "once_cell", - "owo-colors", - "tracing-error", -] - -[[package]] -name = "color-spantrace" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427" -dependencies = [ - "once_cell", - "owo-colors", - "tracing-core", - "tracing-error", -] - -[[package]] -name = "colorchoice" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" - -[[package]] -name = "colorutils-rs" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2fc25857fa523662de5cae84225b0e7bfb24a2a3f9ed8802fecf03df7252b1" -dependencies = [ - "erydanos", - "half", - "num-traits", - "rayon", -] - -[[package]] -name = "combine" -version = "4.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfc320937d09e6de266b31b9afb480f197d7a861be86be7cb2ea7e5d1bfffc5e" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "const-hex" -version = "1.19.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e59eef12462b0f9b0a3620219be5d639afd79fe39dff0a42c3997061f9298b4" -dependencies = [ - "cfg-if", - "cpufeatures 0.2.17", - "proptest", - "serde_core", -] - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "const-oid" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" - -[[package]] -name = "const_format" -version = "0.2.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4481a617ad9a412be3b97c5d403fef8ed023103368908b9c50af598ff467cc1e" -dependencies = [ - "const_format_proc_macros", - "konst", -] - -[[package]] -name = "const_format_proc_macros" -version = "0.2.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "constant_time_eq" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" - -[[package]] -name = "convert_case" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "core-foundation" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cpubits" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "cpufeatures" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" -dependencies = [ - "libc", -] - -[[package]] -name = "crc" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853" - -[[package]] -name = "crc32fast" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a7799fd6b852db0e61728dde9a204c423b44d689dbd432522543614b490e78" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "critical-section" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" - -[[package]] -name = "crossbeam-deque" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622f3fc73690be383c7214310406f28a90e6edeadc3cea882f9d71e495b9711a" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc74980687109a3b14c72fd458107bf0baa1da1a1a805e178d15501ba9b86d9d" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6" - -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-bigint" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" -dependencies = [ - "cpubits", - "ctutils", - "getrandom 0.4.3", - "hybrid-array", - "num-traits", - "rand_core 0.10.1", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", -] - -[[package]] -name = "crypto-common" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" -dependencies = [ - "getrandom 0.4.3", - "hybrid-array", - "rand_core 0.10.1", -] - -[[package]] -name = "crypto_box" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16182b4f39a82ec8a6851155cc4c0cda3065bb1db33651726a29e1951de0f009" -dependencies = [ - "aead", - "blake2 0.10.6", - "crypto_secretbox", - "curve25519-dalek", - "salsa20", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto_secretbox" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d6cf87adf719ddf43a805e92c6870a531aedda35ff640442cbaf8674e141e1" -dependencies = [ - "aead", - "cipher", - "generic-array", - "poly1305", - "salsa20", - "subtle", - "zeroize", -] - -[[package]] -name = "ctutils" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" -dependencies = [ - "cmov", - "subtle", -] - -[[package]] -name = "curve25519-dalek" -version = "4.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" -dependencies = [ - "cfg-if", - "cpufeatures 0.2.17", - "curve25519-dalek-derive", - "fiat-crypto", - "rustc_version 0.4.1", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "cxx-build" -version = "1.0.202" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fde53ca86b9704a943fef0f1e1d836239a6aedca5de3c65fa9f97ec0bd46d39" -dependencies = [ - "cc", - "codespan-reporting", - "indexmap 2.14.2", - "proc-macro2", - "quote", - "scratch", - "syn 3.0.6", -] - -[[package]] -name = "darling" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" -dependencies = [ - "darling_core 0.23.0", - "darling_macro 0.23.0", -] - -[[package]] -name = "darling" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed17f5901b6630b993ca003def43f2f8ef4014fc13b047b57aad617ff32bc2ec" -dependencies = [ - "darling_core 0.24.1", - "darling_macro 0.24.1", -] - -[[package]] -name = "darling_core" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" -dependencies = [ - "ident_case", - "proc-macro2", - "quote", - "serde", - "strsim", - "syn 2.0.119", -] - -[[package]] -name = "darling_core" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6837e2cf7485aaae18f86181d2f0e9a7ed297a025e220aeabf63fdebd3a2ddff" -dependencies = [ - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 3.0.6", -] - -[[package]] -name = "darling_macro" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" -dependencies = [ - "darling_core 0.23.0", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "darling_macro" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ac7135c3ef02b2f7833bbeb1be5ba7f966dcde8a87c6b87f65a778d71a02785" -dependencies = [ - "darling_core 0.24.1", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "data-encoding" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06" - -[[package]] -name = "deep_learning_backends" -version = "0.1.0" -source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" -dependencies = [ - "flexi_logger", - "image", - "log", - "ndarray", - "ndarray-stats", - "num-traits", - "ort", - "ort-tract", - "serde", - "thiserror 1.0.69", - "tracing", -] - -[[package]] -name = "defmt" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" -dependencies = [ - "bitflags 1.3.2", - "defmt-macros", -] - -[[package]] -name = "defmt-macros" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" -dependencies = [ - "defmt-parser", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "defmt-parser" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" -dependencies = [ - "thiserror 2.0.21", -] - -[[package]] -name = "der" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" -dependencies = [ - "const-oid 0.9.6", - "pem-rfc7468 0.7.0", - "zeroize", -] - -[[package]] -name = "der" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a878c850e9e421b20262e9b41f9c860e4785fa07541c266b62ff9d1ef998a80a" -dependencies = [ - "const-oid 0.10.2", - "pem-rfc7468 1.0.0", - "zeroize", -] - -[[package]] -name = "deranged" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" -dependencies = [ - "serde_core", -] - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "derive-new" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3418329ca0ad70234b9735dc4ceed10af4df60eff9c8e7b06cb5e520d92c3535" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "derive-where" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e2b94854e8576378ccda7c8de8a66ed8b4e8acbd2c50ec3418ea6c8aaf4b567" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "derive_arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "derive_more" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version 0.4.1", - "syn 2.0.119", - "unicode-xid", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer 0.10.4", - "const-oid 0.9.6", - "crypto-common 0.1.7", - "subtle", -] - -[[package]] -name = "digest" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" -dependencies = [ - "block-buffer 0.12.1", - "const-oid 0.10.2", - "crypto-common 0.2.2", - "ctutils", -] - -[[package]] -name = "displaydoc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "doc-comment" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9" - -[[package]] -name = "document-features" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" -dependencies = [ - "litrs", -] - -[[package]] -name = "downcast-rs" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" - -[[package]] -name = "dryoc" -version = "0.6.2" -source = "git+https://github.com/brndnmtthws/dryoc?rev=e0e0ef0#e0e0ef0e77c483eabcc266bd06ff058fd330de92" -dependencies = [ - "bitflags 2.13.2", - "chacha20 0.9.1", - "curve25519-dalek", - "generic-array", - "lazy_static", - "libc", - "rand_core 0.6.4", - "salsa20", - "sha2 0.10.9", - "subtle", - "winapi", - "zeroize", -] - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "dyn-hash" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15401da73a9ed8c80e3b2d4dc05fe10e7b72d7243b9f614e516a44fa99986e88" - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der 0.7.10", - "digest 0.10.7", - "elliptic-curve 0.13.8", - "rfc6979 0.4.0", - "serdect 0.2.0", - "signature 2.2.0", - "spki 0.7.3", -] - -[[package]] -name = "ecdsa" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" -dependencies = [ - "der 0.8.2", - "digest 0.11.3", - "elliptic-curve 0.14.1", - "rfc6979 0.6.0", - "signature 3.0.0", - "spki 0.8.0", - "zeroize", -] - -[[package]] -name = "educe" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" -dependencies = [ - "enum-ordinalize", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "either" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34" -dependencies = [ - "serde", -] - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct 0.2.0", - "crypto-bigint 0.5.5", - "digest 0.10.7", - "ff 0.13.1", - "generic-array", - "group 0.13.0", - "pem-rfc7468 0.7.0", - "pkcs8 0.10.2", - "rand_core 0.6.4", - "sec1 0.7.3", - "serdect 0.2.0", - "subtle", - "zeroize", -] - -[[package]] -name = "elliptic-curve" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" -dependencies = [ - "base16ct 1.0.0", - "crypto-bigint 0.7.5", - "crypto-common 0.2.2", - "digest 0.11.3", - "ff 0.14.0", - "group 0.14.0", - "hybrid-array", - "pem-rfc7468 1.0.0", - "pkcs8 0.11.0", - "rand_core 0.10.1", - "sec1 0.8.1", - "subtle", - "zeroize", -] - -[[package]] -name = "embed-doc-image" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af36f591236d9d822425cb6896595658fa558fcebf5ee8accac1d4b92c47166e" -dependencies = [ - "base64 0.13.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "embedded-io" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" - -[[package]] -name = "embedded-io" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" - -[[package]] -name = "enum-as-inner" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "enum-ordinalize" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89dd01549b09589510cf0647475075d12071456586d70f5c75c98ae2a5537677" -dependencies = [ - "enum-ordinalize-derive", -] - -[[package]] -name = "enum-ordinalize-derive" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a65863d15a4ce2888bd2f0f543cc963d3879c3a022c8ee43f6141d479a3ac815" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "equator" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" -dependencies = [ - "equator-macro", -] - -[[package]] -name = "equator-macro" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "erydanos" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cbdc4987ed8e9ece64845393c2d53596b3a4ccbfb3948d799d58f6450e89fb1" -dependencies = [ - "num-traits", -] - -[[package]] -name = "event-listener" -version = "5.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2" -dependencies = [ - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener", - "pin-project-lite", -] - -[[package]] -name = "exr" -version = "1.74.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711fe42c9964295e01ee3fba3f9fe0e1d24b98886950d68efe81b1c76e21adf3" -dependencies = [ - "bit_field", - "half", - "lebe", - "miniz_oxide 0.8.9", - "num-complex", - "pulp", - "rayon-core", - "smallvec 1.16.2", - "zune-inflate", -] - -[[package]] -name = "eyre" -version = "0.6.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08309dbcc659c5549a24ddb9b27027640641b282ef5768267c7e675558986a3" -dependencies = [ - "autocfg", - "indenter", - "once_cell", -] - -[[package]] -name = "face-engine" -version = "2.20.0" -source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" -dependencies = [ - "approx", - "aquamarine", - "async-lock", - "cfg-if", - "deep_learning_backends", - "fast_image_resize", - "flexi_logger", - "graph", - "image", - "imageproc", - "inventory", - "itertools 0.13.0", - "log", - "nalgebra", - "ndarray", - "ndarray-stats", - "num-traits", - "schemars 0.8.22", - "serde", - "serde_json", - "serde_with", - "serde_yaml", - "thiserror 1.0.69", - "tracing", - "uniffi", - "utils", - "utils_macros", -] - -[[package]] -name = "fast_image_resize" -version = "5.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc7fe45cf92b43817ff62a3723e862b85bd1d06288f63007f7645d1d2f7a060" -dependencies = [ - "bytemuck", - "cfg-if", - "document-features", - "image", - "num-traits", - "rayon", - "thiserror 2.0.21", -] - -[[package]] -name = "fastrand" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" - -[[package]] -name = "fastrlp" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "fastrlp" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "fdeflate" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "ff" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "ff" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" -dependencies = [ - "rand_core 0.10.1", - "subtle", -] - -[[package]] -name = "fiat-crypto" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" - -[[package]] -name = "filetime" -version = "0.2.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759" -dependencies = [ - "cfg-if", - "libc", -] - -[[package]] -name = "find-msvc-tools" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484" - -[[package]] -name = "fixed-cache" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fe63500644ef0269fe6b744e7e5dc5c20b5eebf3d881bc2be53f194636f6583" -dependencies = [ - "equivalent", - "rapidhash", -] - -[[package]] -name = "fixed-hash" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "byteorder", - "rand 0.8.8", - "rustc-hex", - "static_assertions", -] - -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - -[[package]] -name = "flate2" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb" -dependencies = [ - "crc32fast", - "miniz_oxide 0.9.1", - "zlib-rs", -] - -[[package]] -name = "flexi_logger" -version = "0.28.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cca927478b3747ba47f98af6ba0ac0daea4f12d12f55e9104071b3dc00276310" -dependencies = [ - "chrono", - "glob", - "log", - "nu-ansi-term", - "thiserror 1.0.69", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foldhash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "fs-err" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91aa448ca50d7e79433bdf3ee8d99215430d2ec02ade5aefab2a073a1822e8a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" - -[[package]] -name = "futures-executor" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" - -[[package]] -name = "futures-macro" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "futures-sink" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" - -[[package]] -name = "futures-task" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" - -[[package]] -name = "futures-util" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "slab", -] - -[[package]] -name = "futures-utils-wasm" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "r-efi 5.3.0", - "wasip2", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "r-efi 6.0.0", - "rand_core 0.10.1", - "wasm-bindgen", -] - -[[package]] -name = "gimli" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" - -[[package]] -name = "glob" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" - -[[package]] -name = "goblin" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" -dependencies = [ - "log", - "plain", - "scroll", -] - -[[package]] -name = "graph" -version = "0.1.0" -source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" -dependencies = [ - "graph_macros", - "inventory", - "log", - "schemars 0.8.22", - "serde", - "serde_with", - "serde_yaml", - "thiserror 1.0.69", - "tracing", -] - -[[package]] -name = "graph_macros" -version = "0.1.0" -source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" -dependencies = [ - "inventory", - "once_cell", - "proc-macro2", - "quote", - "serde", - "serde_yaml", - "syn 2.0.119", -] - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff 0.13.1", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "group" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" -dependencies = [ - "ff 0.14.0", - "rand_core 0.10.1", - "subtle", -] - -[[package]] -name = "h2" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8e5e5a340588f4452631496976cf8636d4a7ecf600239fdc27615d2530bc16" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http", - "indexmap 2.14.2", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "half" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" -dependencies = [ - "cfg-if", - "crunchy", - "num-traits", - "zerocopy", -] - -[[package]] -name = "hash32" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", -] - -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "allocator-api2", - "foldhash 0.1.5", -] - -[[package]] -name = "hashbrown" -version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" -dependencies = [ - "allocator-api2", - "foldhash 0.2.0", - "serde", - "serde_core", -] - -[[package]] -name = "heapless" -version = "0.7.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" -dependencies = [ - "atomic-polyfill", - "hash32", - "rustc_version 0.4.1", - "serde", - "spin 0.9.9", - "stable_deref_trait", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17592d60ebacc7d5e169f4663c5f84f9161cc90328abcfe8456f41e4dfcb284" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hex-conservative" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3fef046dca3ca91ee1408a8c1b80ab777e80a4d308d1bf4e7adb3fcb047e08" -dependencies = [ - "arrayvec", -] - -[[package]] -name = "hex-conservative" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271e0d19bcb473b6675739a2b536076b24a082316cb5199ad918edce10c599e8" -dependencies = [ - "arrayvec", -] - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - -[[package]] -name = "histogram_equalization" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cba4fb49502d10e699c8907af302e4ecdd930773a1cd63a9fce6a9ab8223d93" -dependencies = [ - "colorutils-rs", - "num-traits", - "rayon", - "yuv", -] - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "hmac" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" -dependencies = [ - "digest 0.11.3", -] - -[[package]] -name = "http" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" -dependencies = [ - "bytes", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "hybrid-array" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27f864f10dfb56725ce5ce5472bc52252c8f93a4ab86327122cebf62c5f59a17" -dependencies = [ - "subtle", - "typenum", - "zeroize", -] - -[[package]] -name = "hyper" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b501faa50e7a26c3d3560ca625132f4078a17771f4810baf70475ae48cbe43" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "smallvec 1.16.2", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa8e654703247911e29c23fbeaa261834bd9bb74efba2f9acddc37bfb127f53" -dependencies = [ - "http", - "hyper", - "hyper-util", - "rustls", - "tokio", - "tokio-rustls", - "tower-service", - "webpki-roots", -] - -[[package]] -name = "hyper-timeout" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" -dependencies = [ - "hyper", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc03d96684f9226b8a787cdb71488417b53ab5ea8fdb1dac946cb9431cc8bff" -dependencies = [ - "base64 0.23.1", - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "httparse", - "hyper", - "ipnet", - "libc", - "percent-encoding", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" -dependencies = [ - "displaydoc", - "potential_utf", - "utf8_iter", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec 1.16.2", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" - -[[package]] -name = "icu_properties" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" - -[[package]] -name = "icu_provider" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec 1.16.2", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "ignition" -version = "1.0.0" -source = "git+https://github.com/diego-a-orellana/ignition.git?branch=main#2693b9aa50ac7f94939809076926f76539775845" -dependencies = [ - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "image" -version = "0.25.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" -dependencies = [ - "bytemuck", - "byteorder-lite", - "exr", - "moxcms", - "num-traits", - "png", - "ravif", - "rayon", - "zune-core", - "zune-jpeg", -] - -[[package]] -name = "imageproc" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602b4e8a4cc3e98372b766cd184ab532999bc0e839b7469e759511ccabc65d77" -dependencies = [ - "ab_glyph", - "approx", - "getrandom 0.2.17", - "image", - "itertools 0.12.1", - "nalgebra", - "num", - "rand 0.8.8", - "rand_distr", - "rayon", -] - -[[package]] -name = "imgref" -version = "1.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e44b0a4eaa4c82f441d50a963f2d5f05a787240aeee097597033e72accfd22f" - -[[package]] -name = "impl-codec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "include_dir" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" -dependencies = [ - "include_dir_macros", -] - -[[package]] -name = "include_dir_macros" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "indenter" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855" -dependencies = [ - "equivalent", - "hashbrown 0.17.1", - "serde", - "serde_core", -] - -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "block-padding", - "generic-array", -] - -[[package]] -name = "interpolate_name" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "inventory" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" -dependencies = [ - "rustversion", -] - -[[package]] -name = "ipnet" -version = "2.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791930b43c0d5973160d90a8f3894509f2b273430f5c5c73b668636d0287c5c0" - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" - -[[package]] -name = "jiff" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1baf72f08796de0260609515130699b890ac25f30e610ad894bc5856cafdb" -dependencies = [ - "defmt", - "jiff-core", - "jiff-static", - "jiff-tzdb-platform", - "log", - "portable-atomic", - "portable-atomic-util", - "serde_core", - "windows-link", -] - -[[package]] -name = "jiff-core" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e52fe76043ccecc9005d2305ebaadf7d7fc0cc89ca6baa10a94d6bc68c7128c" -dependencies = [ - "defmt", - "log", -] - -[[package]] -name = "jiff-static" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "378268a1116ad67ae6228701118ac9f491d78fda38a40a1f1a9e1348de6f7212" -dependencies = [ - "jiff-core", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "jiff-tzdb" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e" - -[[package]] -name = "jiff-tzdb-platform" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" -dependencies = [ - "jiff-tzdb", -] - -[[package]] -name = "jobserver" -version = "0.1.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" -dependencies = [ - "getrandom 0.4.3", - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5" -dependencies = [ - "cfg-if", - "futures-util", - "wasm-bindgen", -] - -[[package]] -name = "k256" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" -dependencies = [ - "cfg-if", - "ecdsa 0.16.9", - "elliptic-curve 0.13.8", - "once_cell", - "serdect 0.2.0", - "sha2 0.10.9", -] - -[[package]] -name = "k256" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" -dependencies = [ - "cpubits", - "ecdsa 0.17.0", - "elliptic-curve 0.14.1", - "primeorder 0.14.0", - "sha2 0.11.0", - "signature 3.0.0", - "wnaf", -] - -[[package]] -name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "keccak" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f198d1db720e4940b5a493201d199d9f24f568f8f746bd13706243a2f71598" -dependencies = [ - "cfg-if", - "cpufeatures 0.3.1", -] - -[[package]] -name = "keccak-asm" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f32890f646914a263e39064295005972f0e95b928254061b2aca98445f304ee9" -dependencies = [ - "cfg-if", - "digest 0.10.7", - "sha3-asm", -] - -[[package]] -name = "konst" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128133ed7824fcd73d6e7b17957c5eb7bacb885649bd8c69708b2331a10bcefb" -dependencies = [ - "konst_macro_rules", -] - -[[package]] -name = "konst_macro_rules" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" - -[[package]] -name = "kstring" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a09b82a7f771ed02dc0dd9b27130a0fa5499fa15ed3027116c1e5e4e591bd9e" -dependencies = [ - "serde", - "static_assertions", -] - -[[package]] -name = "lazy_static" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20870f649af7073d53e38067b2a84312175d56ea15217e1b15bc83506ec50afb" -dependencies = [ - "spin 0.9.9", -] - -[[package]] -name = "lebe" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" - -[[package]] -name = "libc" -version = "0.2.189" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" - -[[package]] -name = "libfuzzer-sys" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2" -dependencies = [ - "arbitrary", - "cc", -] - -[[package]] -name = "libloading" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" -dependencies = [ - "cfg-if", - "windows-link", -] - -[[package]] -name = "libm" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" - -[[package]] -name = "linux-raw-sys" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" - -[[package]] -name = "liquid" -version = "0.26.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9338405fdbc0bce9b01695b2a2ef6b20eca5363f385d47bce48ddf8323cc25" -dependencies = [ - "doc-comment", - "liquid-core", - "liquid-derive", - "liquid-lib", - "serde", -] - -[[package]] -name = "liquid-core" -version = "0.26.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb8fed70857010ed9016ed2ce5a7f34e7cc51d5d7255c9c9dc2e3243e490b42" -dependencies = [ - "anymap2", - "itertools 0.13.0", - "kstring", - "liquid-derive", - "num-traits", - "pest", - "pest_derive", - "regex", - "serde", - "time", -] - -[[package]] -name = "liquid-derive" -version = "0.26.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b51f1d220e3fa869e24cfd75915efe3164bd09bb11b3165db3f37f57bf673e3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "liquid-lib" -version = "0.26.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee1794b5605e9f8864a8a4f41aa97976b42512cc81093f8c885d29fb94c6c556" -dependencies = [ - "itertools 0.13.0", - "liquid-core", - "once_cell", - "percent-encoding", - "regex", - "time", - "unicode-segmentation", -] - -[[package]] -name = "litemap" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" - -[[package]] -name = "litrs" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" - -[[package]] -name = "loop9" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" -dependencies = [ - "imgref", -] - -[[package]] -name = "lru-slab" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4050469837a6ff301cd14c1f8f24f88549e6d548f24f64e2148eb0f72cebc51f" - -[[package]] -name = "lzma-sys" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "mach2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" -dependencies = [ - "libc", -] - -[[package]] -name = "macro-string" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a9dbbfc75d2688ed057456ce8a3ee3f48d12eec09229f560f3643b9f275653" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "matchit" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" - -[[package]] -name = "matrixmultiply" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f607c237553f086e7043417a51df26b2eb899d3caff94e6a67592ff992fedc7" -dependencies = [ - "autocfg", - "rawpointer", -] - -[[package]] -name = "maybe-rayon" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" -dependencies = [ - "cfg-if", - "rayon", -] - -[[package]] -name = "memchr" -version = "2.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" - -[[package]] -name = "memmap2" -version = "0.9.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - -[[package]] -name = "merlin" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" -dependencies = [ - "byteorder", - "keccak 0.1.6", - "rand_core 0.6.4", - "zeroize", -] - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "miniz_oxide" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "mio" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8" -dependencies = [ - "libc", - "wasi", - "windows-sys 0.61.2", -] - -[[package]] -name = "mmap-rs" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86968d85441db75203c34deefd0c88032f275aaa85cee19a1dcfff6ae9df56da" -dependencies = [ - "bitflags 1.3.2", - "combine", - "libc", - "mach2", - "nix", - "sysctl", - "thiserror 1.0.69", - "widestring", - "windows 0.48.0", -] - -[[package]] -name = "moxcms" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" -dependencies = [ - "num-traits", - "pxfm", -] - -[[package]] -name = "multimap" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" - -[[package]] -name = "nalgebra" -version = "0.32.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5c17de023a86f59ed79891b2e5d5a94c705dbe904a5b5c9c952ea6221b03e4" -dependencies = [ - "approx", - "matrixmultiply", - "nalgebra-macros", - "num-complex", - "num-rational", - "num-traits", - "serde", - "simba", - "typenum", -] - -[[package]] -name = "nalgebra-macros" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ndarray" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" -dependencies = [ - "matrixmultiply", - "num-complex", - "num-integer", - "num-traits", - "portable-atomic", - "portable-atomic-util", - "rawpointer", - "serde", -] - -[[package]] -name = "ndarray-stats" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ebbe97acce52d06aebed4cd4a87c0941f4b2519b59b82b4feb5bd0ce003dfd" -dependencies = [ - "indexmap 2.14.2", - "itertools 0.13.0", - "ndarray", - "noisy_float", - "num-integer", - "num-traits", - "rand 0.8.8", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - -[[package]] -name = "nix" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset", - "pin-utils", -] - -[[package]] -name = "no_std_io2" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418abd1b6d34fbf6cae440dc874771b0525a604428704c76e48b29a5e67b8003" -dependencies = [ - "memchr", -] - -[[package]] -name = "noisy_float" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c16843be85dd410c6a12251c4eca0dd1d3ee8c5725f746c4d5e0fdcec0a864b2" -dependencies = [ - "num-traits", -] - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "nom" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" -dependencies = [ - "memchr", -] - -[[package]] -name = "noop_proc_macro" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" - -[[package]] -name = "nu-ansi-term" -version = "0.50.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "num" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" -dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" -dependencies = [ - "num-integer", - "num-traits", - "rand 0.8.8", -] - -[[package]] -name = "num-bigint-dig" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" -dependencies = [ - "lazy_static", - "libm", - "num-integer", - "num-iter", - "num-traits", - "rand 0.8.8", - "smallvec 1.16.2", - "zeroize", -] - -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "bytemuck", - "num-traits", - "serde", -] - -[[package]] -name = "num-conv" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" - -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "num-integer" -version = "0.1.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" -dependencies = [ - "num-bigint", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_cpus" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "nybbles" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d49ff0c0d00d4a502b39df9af3a525e1efeb14b9dabb5bb83335284c1309210" -dependencies = [ - "alloy-rlp", - "cfg-if", - "proptest", - "ruint", - "serde", - "smallvec 1.16.2", -] - -[[package]] -name = "object" -version = "0.37.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" - -[[package]] -name = "once_cell_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" - -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - -[[package]] -name = "opencv" -version = "0.98.1" -source = "git+https://github.com/diego-a-orellana/opencv-rust.git?branch=release%2Fv0.98.1b#201cbc77bbb7ad246e128d42d80fe6ad1dce83c9" -dependencies = [ - "cc", - "dunce", - "ignition", - "jobserver", - "libc", - "num-traits", - "opencv-binding-generator", - "pkg-config", - "semver 1.0.28", - "shlex 1.3.0", - "vcpkg", - "windows 0.62.2", -] - -[[package]] -name = "opencv-binding-generator" -version = "0.100.0" -source = "git+https://github.com/diego-a-orellana/opencv-rust.git?branch=release%2Fv0.98.1b#201cbc77bbb7ad246e128d42d80fe6ad1dce83c9" -dependencies = [ - "clang", - "clang-sys", - "dunce", - "percent-encoding", - "regex", - "shlex 1.3.0", -] - -[[package]] -name = "openssl-probe" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" - -[[package]] -name = "orb-qr-link" -version = "0.1.0" -source = "git+https://github.com/worldcoin/orb-software?rev=8b0a781db62b04ff0351cd3350b1a9f8d49f07a3#8b0a781db62b04ff0351cd3350b1a9f8d49f07a3" -dependencies = [ - "blake3", - "data-encoding", - "serde", - "thiserror 1.0.69", - "uuid", -] - -[[package]] -name = "orb-relay-messages" -version = "0.0.0" -source = "git+https://github.com/worldcoin/orb-relay-messages.git?rev=9bc83771b15cbf22796e93a7276040db4d63a64d#9bc83771b15cbf22796e93a7276040db4d63a64d" -dependencies = [ - "blake3", - "prost 0.14.4", - "prost-build", - "prost-types", - "tonic", - "tonic-prost", - "tonic-prost-build", -] - -[[package]] -name = "ordered-float" -version = "5.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c9e0d9b23589f26070720bac724174bfec1083e82f7854cdd0267518343c0" -dependencies = [ - "num-traits", - "rand 0.8.8", - "serde", -] - -[[package]] -name = "ort" -version = "2.0.0-rc.10" -source = "git+https://github.com/diego-a-orellana/ort.git?branch=release%2Fv2.0.0-rc.10b#7937928d62b3f8e447231f165eb0bec863235757" -dependencies = [ - "half", - "ndarray", - "ort-sys", - "smallvec 2.0.0-alpha.10", - "tracing", -] - -[[package]] -name = "ort-sys" -version = "2.0.0-rc.10" -source = "git+https://github.com/diego-a-orellana/ort.git?branch=release%2Fv2.0.0-rc.10b#7937928d62b3f8e447231f165eb0bec863235757" -dependencies = [ - "pkg-config", -] - -[[package]] -name = "ort-tract" -version = "0.1.0+0.21" -source = "git+https://github.com/diego-a-orellana/ort.git?branch=release%2Fv2.0.0-rc.10b#7937928d62b3f8e447231f165eb0bec863235757" -dependencies = [ - "ort-sys", - "parking_lot", - "tract-onnx", -] - -[[package]] -name = "owned_ttf_parser" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" -dependencies = [ - "ttf-parser", -] - -[[package]] -name = "owo-colors" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c45bb4a6ae1280ec0803b1ef9d3455eb50f01efbbe1447ab020f1d54fba9d8" - -[[package]] -name = "oxide" -version = "0.75.0" -source = "git+https://github.com/worldcoin/oxide.git?rev=329274a32be02be0bb39ca02adc4e4e4e438ada0#329274a32be02be0bb39ca02adc4e4e4e438ada0" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", - "ampc-secret-sharing", - "async-trait", - "attestation-gateway-types", - "base64 0.22.1", - "blake3", - "bytes", - "cc", - "chrono", - "ciborium", - "crypto_box", - "dryoc", - "face-engine", - "flate2", - "futures", - "hex", - "http", - "image", - "k256 0.13.4", - "log", - "orb-qr-link", - "orb-relay-messages", - "p256 0.13.2", - "prost 0.14.4", - "rand 0.8.8", - "reqwest", - "rsa", - "ruint", - "semaphore-rs", - "semaphore-rs-poseidon", - "semaphore-rs-trees", - "semaphore-rs-utils", - "serde", - "serde_json", - "sha2 0.10.9", - "strum 0.27.2", - "tar", - "thiserror 2.0.21", - "tokio", - "uniffi", - "uuid", - "world-id-primitives 0.13.0", - "zeroize", - "zip", -] - -[[package]] -name = "p256" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" -dependencies = [ - "ecdsa 0.16.9", - "elliptic-curve 0.13.8", - "primeorder 0.13.6", - "sha2 0.10.9", -] - -[[package]] -name = "p256" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c9239b2dbc807adbbe147e8cf72ea7450c3a0aabe62cb8e75ff4ec22e1f72a" -dependencies = [ - "ecdsa 0.17.0", - "elliptic-curve 0.14.1", - "primefield", - "primeorder 0.14.0", - "sha2 0.11.0", -] - -[[package]] -name = "p3-challenger" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7d2d45f5a51dc3f965e8d6da60a6c26c807e88657863d56da275eaa05ad36f1" -dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", - "tracing", -] - -[[package]] -name = "p3-dft" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beabb40bc8ac7f5f95870f271fb844c7e2e1ebb7f0761a8eebb2614b56c6b1c1" -dependencies = [ - "itertools 0.14.0", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", - "spin 0.10.1", - "tracing", -] - -[[package]] -name = "p3-field" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4819a3e4c1882431a63d4847ffa10d110017aee4cb9cf4319ca6dca191930969" -dependencies = [ - "itertools 0.14.0", - "num-bigint", - "p3-maybe-rayon", - "p3-util", - "paste", - "rand 0.9.5", - "serde", - "tracing", -] - -[[package]] -name = "p3-koala-bear" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfb02789fca0950e246123d652bd78e75a76e3b90a651fd88dbb215cd3e81f5a" -dependencies = [ - "p3-challenger", - "p3-field", - "p3-monty-31", - "p3-poseidon2", - "p3-symmetric", - "rand 0.9.5", -] - -[[package]] -name = "p3-matrix" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6fde449bd2963d394284ec46db8c647e6a5602d90601117b76752072ab54168" -dependencies = [ - "itertools 0.14.0", - "p3-field", - "p3-maybe-rayon", - "p3-util", - "rand 0.9.5", - "serde", - "tracing", -] - -[[package]] -name = "p3-maybe-rayon" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54afab3883d8a14676b492709d6c4e9fa535c36718b737db0817aacfaaaa11f6" - -[[package]] -name = "p3-mds" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3895055d735ac96d010747b3aaabd4c2645b9fd80226960550318db2e25afb75" -dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", - "rand 0.9.5", -] - -[[package]] -name = "p3-monty-31" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fe0be661891af1f703ceaf57334fcbd540804988984dc2b500dd99740e7c81" -dependencies = [ - "itertools 0.14.0", - "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon2", - "p3-symmetric", - "p3-util", - "paste", - "rand 0.9.5", - "serde", - "spin 0.10.1", - "tracing", -] - -[[package]] -name = "p3-poseidon2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6fc2368447576283f8b3849a36095017f25addf06eab9e33b0ce7f96b0b99d" -dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", - "rand 0.9.5", -] - -[[package]] -name = "p3-symmetric" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a14456a42a7d9e65f13999706f1bca2832175935169b3a54286e18331cf1d82f" -dependencies = [ - "itertools 0.14.0", - "p3-field", - "serde", -] - -[[package]] -name = "p3-util" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "911154accf66034b0eec4452956c088f92a200b37a8225c1caed74cfbd38cc8d" -dependencies = [ - "serde", - "transpose", -] - -[[package]] -name = "palette" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddeed8580d347d2abf3dcf06a5f0b3dc020258338526b277847cd4248a70fc64" -dependencies = [ - "approx", - "palette_derive", - "palette_math", - "phf", -] - -[[package]] -name = "palette_derive" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88537020289b719d81be994ccf1bbf4990f477e2f69ee52fe3e45f43a02e56be" -dependencies = [ - "by_address", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "palette_math" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e6eb142958d64335fb0e345c5b9ead2ecd6fc438c307e9d7d3c4fd428dbaf12" - -[[package]] -name = "parity-scale-codec" -version = "3.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "const_format", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "rustversion", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec 1.16.2", - "windows-link", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "pastey" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" - -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - -[[package]] -name = "pem-rfc7468" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6305423e0e7738146434843d1694d621cce767262b2a86910beab705e4493d9" -dependencies = [ - "base64ct", -] - -[[package]] -name = "percent-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "pest" -version = "2.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45d3aca230fad2e6f6317ca0a72724338c4960cb97168a85cdee66df4a9a21a8" -dependencies = [ - "memchr", - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284b60557f2c4a2e72ad3f2d34d42685a2fa4a6a61d0d2a10c0ae2a5e916c2cf" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9d1f08a115309ee99268cf85e5228e0e56aa9caf8841ec12866b6be07c3109" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "pest_meta" -version = "2.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed93ba1a9ffcca32130a5188701c81c0c49cf00d4b7c5007d5148951d743adcb" -dependencies = [ - "pest", -] - -[[package]] -name = "petgraph" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" -dependencies = [ - "fixedbitset", - "hashbrown 0.15.5", - "indexmap 2.14.2", -] - -[[package]] -name = "phf" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" -dependencies = [ - "phf_shared", -] - -[[package]] -name = "phf_shared" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project" -version = "1.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" - -[[package]] -name = "pin-utils" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13bee6c73da26345c729282832b60b0363cf3dd9f4bfd81d8551b7a1c889a113" - -[[package]] -name = "pkcs1" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" -dependencies = [ - "der 0.7.10", - "pkcs8 0.10.2", - "spki 0.7.3", -] - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der 0.7.10", - "spki 0.7.3", -] - -[[package]] -name = "pkcs8" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" -dependencies = [ - "der 0.8.2", - "spki 0.8.0", -] - -[[package]] -name = "pkg-config" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" - -[[package]] -name = "plain" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" - -[[package]] -name = "png" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" -dependencies = [ - "bitflags 2.13.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide 0.8.9", -] - -[[package]] -name = "poly1305" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" -dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", - "universal-hash", -] - -[[package]] -name = "portable-atomic" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" - -[[package]] -name = "portable-atomic-util" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10ab3eb7f3becc3a1cbc4f2c6f20267996cfc1a6467a873763411b136a122715" -dependencies = [ - "portable-atomic", -] - -[[package]] -name = "postcard" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" -dependencies = [ - "cobs", - "embedded-io 0.4.0", - "embedded-io 0.6.1", - "heapless", - "serde", -] - -[[package]] -name = "potential_utf" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn 2.0.119", -] - -[[package]] -name = "primal-check" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0d895b311e3af9902528fbb8f928688abbd95872819320517cc24ca6b2bd08" -dependencies = [ - "num-integer", -] - -[[package]] -name = "primefield" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" -dependencies = [ - "crypto-bigint 0.7.5", - "crypto-common 0.2.2", - "ff 0.14.0", - "rand_core 0.10.1", - "subtle", - "zeroize", -] - -[[package]] -name = "primeorder" -version = "0.13.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" -dependencies = [ - "elliptic-curve 0.13.8", -] - -[[package]] -name = "primeorder" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" -dependencies = [ - "elliptic-curve 0.14.1", - "once_cell", - "primefield", - "serdect 0.4.3", - "wnaf", -] - -[[package]] -name = "primitive-types" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" -dependencies = [ - "fixed-hash", - "impl-codec", - "uint", -] - -[[package]] -name = "proc-macro-crate" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" -dependencies = [ - "toml_edit 0.25.15+spec-1.1.0", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr3" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82366fd7d8b7a440d66d13418820c69df9b3908bcb1a0476d7f5ce5d12f5a04d" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error3" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b511283ea8a74b4b39447b128c5d00f03a356b7424554b13e298a5550100d9ac" -dependencies = [ - "proc-macro-error-attr3", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "proc-macro2" -version = "1.0.107" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "profiling" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" -dependencies = [ - "profiling-procmacros", -] - -[[package]] -name = "profiling-procmacros" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb" -dependencies = [ - "quote", - "syn 2.0.119", -] - -[[package]] -name = "proptest" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744" -dependencies = [ - "bitflags 2.13.2", - "num-traits", - "rand 0.9.5", - "rand_chacha 0.9.0", - "rand_xorshift", - "regex-syntax", - "unarray", -] - -[[package]] -name = "prost" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" -dependencies = [ - "bytes", - "prost-derive 0.11.9", -] - -[[package]] -name = "prost" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528ac67416ff8646872a3c02cad9cc4ee5dc9f9540c9b10771855c95cb2e5ae1" -dependencies = [ - "bytes", - "prost-derive 0.14.4", -] - -[[package]] -name = "prost-build" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03da047801ff44bb6a4d407d4860c05fd70bb81714e6b2f3812603d5b145b042" -dependencies = [ - "heck", - "itertools 0.14.0", - "log", - "multimap", - "petgraph", - "prettyplease", - "prost 0.14.4", - "prost-types", - "pulldown-cmark", - "pulldown-cmark-to-cmark", - "regex", - "syn 2.0.119", - "tempfile", -] - -[[package]] -name = "prost-derive" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" -dependencies = [ - "anyhow", - "itertools 0.10.5", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "prost-derive" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf" -dependencies = [ - "anyhow", - "itertools 0.14.0", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "prost-types" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f94967dc7688f3054c7fac87473ffae4cc4c3904800e2d9f5b857246d8963b0a" -dependencies = [ - "prost 0.14.4", -] - -[[package]] -name = "provekit-common" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd137e327416256ac7281b7c0eed960d59ab5cd10d805ae4ee0e5241a8e01938" -dependencies = [ - "anyhow", - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "base64 0.22.1", - "bytes", - "ciborium", - "getrandom 0.2.17", - "hex", - "itertools 0.14.0", - "postcard", - "provekit-spongefish", - "provekit-spongefish-pow", - "provekit-whir", - "provekit_acir", - "provekit_noirc_abi", - "rayon", - "ruint", - "serde", - "serde_json", - "sha2 0.10.9", - "sha3 0.10.9", - "tracing", - "xz2", - "zerocopy", - "zstd", -] - -[[package]] -name = "provekit-spongefish" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a705ff6cb8bc4566a2d1a9f665243db958cbd90a852c3eef0dcc8dc8879ce5" -dependencies = [ - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "blake3", - "digest 0.10.7", - "keccak 0.1.6", - "p3-koala-bear", - "rand 0.8.8", - "sha2 0.10.9", - "sha3 0.10.9", - "zeroize", -] - -[[package]] -name = "provekit-spongefish-pow" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef05687e1ea5d63b54f03c86cf2ddd2cd3752a70151921619d0c66d129e6f309" -dependencies = [ - "blake3", - "bytemuck", - "keccak 0.1.6", - "provekit-spongefish", - "rand 0.8.8", - "rayon", -] - -[[package]] -name = "provekit-whir" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35334259c6ad5b1287ecef6bfb3deb3dbb963c9366091951316bdb33c2080fe6" -dependencies = [ - "approx", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "blake3", - "ciborium", - "clap", - "const-oid 0.9.6", - "derive-where", - "digest 0.10.7", - "hex", - "hex-literal", - "itertools 0.14.0", - "ordered-float", - "provekit-spongefish", - "rayon", - "serde", - "serde_json", - "sha2 0.10.9", - "sha3 0.10.9", - "static_assertions", - "tracing", - "zerocopy", - "zeroize", -] - -[[package]] -name = "provekit_acir" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d8c433b4ec3fda649e7740d8afd5d0abbea77a096e5e9ee832028598ae1f15d" -dependencies = [ - "acir_field", - "base64 0.22.1", - "brillig", - "flate2", - "num-bigint", - "num-traits", - "num_enum", - "provekit_noirc_span", - "rmp-serde", - "serde", - "serde-big-array", - "strum 0.26.3", - "strum_macros 0.28.0", - "thiserror 2.0.21", -] - -[[package]] -name = "provekit_acvm" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9513cb6fc2dd4a5e61b6606c23d50b0c8b11634ef66a1a04dddf46103645af" -dependencies = [ - "indexmap 2.14.2", - "itertools 0.14.0", - "provekit_acir", - "provekit_acvm_blackbox_solver", - "provekit_brillig_vm", - "rustc-hash", - "serde", - "thiserror 2.0.21", - "tracing", -] - -[[package]] -name = "provekit_acvm_blackbox_solver" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "007a76b3874b05c09f651fd912a2bf7e4bde640a99b2863053f61b37a4851e47" -dependencies = [ - "aes", - "blake2 0.11.0", - "blake3", - "cbc", - "k256 0.14.0", - "keccak 0.2.2", - "log", - "p256 0.14.0", - "provekit_acir", - "sha2 0.11.0", - "thiserror 2.0.21", -] - -[[package]] -name = "provekit_brillig_vm" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64856dccbb0a86ac44df84954be6546184f8fe69a2fc2c89f427facc1a903768" -dependencies = [ - "itertools 0.14.0", - "num-bigint", - "num-traits", - "provekit_acir", - "provekit_acvm_blackbox_solver", - "thiserror 2.0.21", -] - -[[package]] -name = "provekit_iter-extended" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c36f1bbf749df7298cb7edfb342a2979b45b6f3e121a49f298c4df03776902c4" - -[[package]] -name = "provekit_noirc_abi" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "351d040825214dd67fd402bd19ad19ee0833d20482b0d5ddcbd50f91af4d5d88" -dependencies = [ - "itertools 0.14.0", - "num-bigint", - "num-traits", - "provekit_acvm", - "provekit_iter-extended", - "provekit_noirc_printable_type", - "serde", - "serde_json", - "thiserror 2.0.21", - "toml 0.8.23", -] - -[[package]] -name = "provekit_noirc_printable_type" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39accb3c40ee64ded0fa2798f83cee2f7a970b8e0d94eea230ede9dc6b866fef" -dependencies = [ - "itertools 0.14.0", - "provekit_acvm", - "provekit_iter-extended", - "serde", - "serde_json", -] - -[[package]] -name = "provekit_noirc_span" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88568fabd82cc3dca3d3e67e830459a1a402ce538e8d6a759fa41f65ef6280bd" -dependencies = [ - "codespan", - "serde", -] - -[[package]] -name = "pulldown-cmark" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e" -dependencies = [ - "bitflags 2.13.2", - "memchr", - "unicase", -] - -[[package]] -name = "pulldown-cmark-to-cmark" -version = "22.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84bbb29c624230c4bd1047bbdb2aa47e41c860e9665ce62ba9504eebe91bf867" -dependencies = [ - "pulldown-cmark", -] - -[[package]] -name = "pulp" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046aa45b989642ec2e4717c8e72d677b13edd831a4d3b6cf37d9a3e54912496a" -dependencies = [ - "bytemuck", - "cfg-if", - "libm", - "num-complex", - "paste", - "pulp-wasm-simd-flag", - "raw-cpuid", - "reborrow", - "version_check", -] - -[[package]] -name = "pulp-wasm-simd-flag" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d8f70e07b9c3962945a74e59ca1c511bba65b6419468acc217c457d93f3c740" - -[[package]] -name = "pxfm" -version = "0.1.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea" - -[[package]] -name = "quick-error" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" - -[[package]] -name = "quinn" -version = "0.11.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4051e23e9185c255a7e33ef59cdbca87a22d359052eecd22fc6b901fb37d9d11" -dependencies = [ - "bytes", - "cfg_aliases", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash", - "rustls", - "socket2", - "thiserror 2.0.21", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-proto" -version = "0.11.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e750cca55fe4f0439a15d0bb529da9651e79993e8e72c61a899a36d462befbe" -dependencies = [ - "bytes", - "getrandom 0.4.3", - "lru-slab", - "rand 0.10.3", - "rand_pcg", - "ring", - "rustc-hash", - "rustls", - "rustls-pki-types", - "slab", - "thiserror 2.0.21", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af66907df18639dcf4db56ca65490cabc4b27a97dbadd96f2926cca73298f016" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2", - "tracing", - "windows-sys 0.61.2", -] - -[[package]] -name = "quote" -version = "1.0.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "r-efi" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e058c7de0b26af77780c769414d6257830bb240f3c38477dbc2c16e5f54d6d4c" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", - "serde", -] - -[[package]] -name = "rand" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.5", - "serde", -] - -[[package]] -name = "rand" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" -dependencies = [ - "chacha20 0.10.2", - "getrandom 0.4.3", - "rand_core 0.10.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.5", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.17", - "serde", -] - -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", - "serde", -] - -[[package]] -name = "rand_core" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" - -[[package]] -name = "rand_distr" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" -dependencies = [ - "num-traits", - "rand 0.8.8", -] - -[[package]] -name = "rand_pcg" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" -dependencies = [ - "rand_core 0.10.1", -] - -[[package]] -name = "rand_xorshift" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" -dependencies = [ - "rand_core 0.9.5", -] - -[[package]] -name = "rapidhash" -version = "4.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5da7e78a036ce858e8d55b7e7dc8ba3a88b78350fd2155d3591bbd966b58589e" -dependencies = [ - "rustversion", -] - -[[package]] -name = "rav1e" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b" -dependencies = [ - "aligned-vec", - "arbitrary", - "arg_enum_proc_macro", - "arrayvec", - "av-scenechange", - "av1-grain", - "bitstream-io", - "built", - "cfg-if", - "interpolate_name", - "itertools 0.14.0", - "libc", - "libfuzzer-sys", - "log", - "maybe-rayon", - "new_debug_unreachable", - "noop_proc_macro", - "num-derive", - "num-traits", - "paste", - "profiling", - "rand 0.9.5", - "rand_chacha 0.9.0", - "simd_helpers", - "thiserror 2.0.21", - "v_frame", - "wasm-bindgen", -] - -[[package]] -name = "ravif" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45" -dependencies = [ - "avif-serialize", - "imgref", - "loop9", - "quick-error", - "rav1e", - "rayon", - "rgb", -] - -[[package]] -name = "raw-cpuid" -version = "11.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" -dependencies = [ - "bitflags 2.13.2", -] - -[[package]] -name = "rawpointer" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" - -[[package]] -name = "rayon" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "reborrow" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags 2.13.2", -] - -[[package]] -name = "ref-cast" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e440fb4e4b4147295338efb76001ab9e4efc0e5839df2c47fc5ac2381d365c3" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecd8964f8453721699a1ed72037b0db49ce2f5a5138486ee89bed6f67cdf3a" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "regex" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" - -[[package]] -name = "reqwest" -version = "0.12.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", - "js-sys", - "log", - "mime_guess", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-rustls", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots", -] - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac 0.12.1", - "subtle", -] - -[[package]] -name = "rfc6979" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" -dependencies = [ - "crypto-bigint 0.7.5", - "hmac 0.13.0", -] - -[[package]] -name = "rgb" -version = "0.8.53" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" - -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.17", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rlp" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" -dependencies = [ - "bytes", - "rustc-hex", -] - -[[package]] -name = "rmp" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba8be72d372b2c9b35542551678538b562e7cf86c3315773cae48dfbfe7790c" -dependencies = [ - "num-traits", -] - -[[package]] -name = "rmp-serde" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f81bee8c8ef9b577d1681a70ebbc962c232461e397b22c208c43c04b67a155" -dependencies = [ - "rmp", - "serde", -] - -[[package]] -name = "rsa" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" -dependencies = [ - "const-oid 0.9.6", - "digest 0.10.7", - "num-bigint-dig", - "num-integer", - "num-traits", - "pkcs1", - "pkcs8 0.10.2", - "rand_core 0.6.4", - "sha2 0.10.9", - "signature 2.2.0", - "spki 0.7.3", - "subtle", - "zeroize", -] - -[[package]] -name = "ruint" -version = "1.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2973657b5127d510e230f5c63d2d106af9c8f79393d8b9f4647323e8196bdde5" -dependencies = [ - "alloy-rlp", - "ark-ff 0.3.0", - "ark-ff 0.4.2", - "ark-ff 0.5.0", - "ark-ff 0.6.0", - "bytemuck", - "bytes", - "fastrlp 0.3.1", - "fastrlp 0.4.0", - "num-bigint", - "num-integer", - "num-traits", - "parity-scale-codec", - "primitive-types", - "proptest", - "rand 0.8.8", - "rand 0.9.5", - "rlp", - "ruint-macro", - "serde_core", - "valuable", - "zeroize", -] - -[[package]] -name = "ruint-macro" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" - -[[package]] -name = "rustc-demangle" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb" - -[[package]] -name = "rustc-hash" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver 1.0.28", -] - -[[package]] -name = "rustfft" -version = "6.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21db5f9893e91f41798c88680037dba611ca6674703c1a18601b01a72c8adb89" -dependencies = [ - "num-complex", - "num-integer", - "num-traits", - "primal-check", - "strength_reduce", - "transpose", -] - -[[package]] -name = "rustix" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d" -dependencies = [ - "bitflags 2.13.2", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustls" -version = "0.23.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634" -dependencies = [ - "log", - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-native-certs" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" -dependencies = [ - "openssl-probe", - "rustls-pki-types", - "schannel", - "security-framework", -] - -[[package]] -name = "rustls-pki-types" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96" -dependencies = [ - "web-time", - "zeroize", -] - -[[package]] -name = "rustls-webpki" -version = "0.103.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" - -[[package]] -name = "ryu" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" - -[[package]] -name = "safe_arch" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "salsa20" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" -dependencies = [ - "cipher", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scan_fmt" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b53b0a5db882a8e2fdaae0a43f7b39e7e9082389e978398bdf223a55b581248" -dependencies = [ - "regex", -] - -[[package]] -name = "schannel" -version = "0.1.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "schemars" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" -dependencies = [ - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.119", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "scratch" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d68f2ec51b097e4c1a75b681a8bec621909b5e91f15bb7b840c4f2f7b01148b2" - -[[package]] -name = "scroll" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" -dependencies = [ - "scroll_derive", -] - -[[package]] -name = "scroll_derive" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1783eabc414609e28a5ba76aee5ddd52199f7107a0b24c2e9746a1ecc34a683d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct 0.2.0", - "der 0.7.10", - "generic-array", - "pkcs8 0.10.2", - "serdect 0.2.0", - "subtle", - "zeroize", -] - -[[package]] -name = "sec1" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" -dependencies = [ - "base16ct 1.0.0", - "ctutils", - "der 0.8.2", - "hybrid-array", - "subtle", - "zeroize", -] - -[[package]] -name = "secp256k1" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" -dependencies = [ - "bitcoin_hashes", - "rand 0.8.8", - "secp256k1-sys 0.10.1", - "serde", -] - -[[package]] -name = "secp256k1" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" -dependencies = [ - "bitcoin_hashes", - "rand 0.9.5", - "secp256k1-sys 0.11.0", -] - -[[package]] -name = "secp256k1-sys" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" -dependencies = [ - "cc", -] - -[[package]] -name = "secp256k1-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38" -dependencies = [ - "cc", -] - -[[package]] -name = "secrecy" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" -dependencies = [ - "zeroize", -] - -[[package]] -name = "security-framework" -version = "3.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" -dependencies = [ - "bitflags 2.13.2", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semaphore-rs" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f890beebbc8378b63bc84558afa165db97a6bd5087207e3de3d483badd13dc97" -dependencies = [ - "ark-bn254 0.6.0", - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-groth16 0.6.0", - "ark-relations 0.6.0", - "ark-std 0.6.0", - "bytemuck", - "color-eyre", - "hex", - "hex-literal", - "itertools 0.13.0", - "lazy_static", - "num-bigint", - "once_cell", - "rand 0.8.8", - "rayon", - "ruint", - "semaphore-rs-ark-circom", - "semaphore-rs-ark-zkey", - "semaphore-rs-depth-config", - "semaphore-rs-depth-macros", - "semaphore-rs-hasher", - "semaphore-rs-keccak", - "semaphore-rs-poseidon", - "semaphore-rs-proof", - "semaphore-rs-storage", - "semaphore-rs-trees", - "semaphore-rs-utils", - "semaphore-rs-witness", - "serde", - "sha2 0.10.9", - "thiserror 1.0.69", - "tiny-keccak", - "zeroize", -] - -[[package]] -name = "semaphore-rs-ark-circom" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b7086229a7c6ae2ca6f43a342f98eec747c73b41258620f0a2ed1ab37cd1e1" -dependencies = [ - "ark-bn254 0.6.0", - "ark-crypto-primitives 0.6.0", - "ark-ff 0.6.0", - "ark-groth16 0.6.0", - "ark-poly 0.6.0", - "ark-relations 0.6.0", - "ark-serialize 0.6.0", - "ark-std 0.6.0", - "byteorder", - "num-bigint", - "num-traits", - "ruint", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "semaphore-rs-ark-zkey" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d232b793bb44d2194c86047bac6905bc63294677bdf295b1dc415d7beb82abf7" -dependencies = [ - "ark-bn254 0.6.0", - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-groth16 0.6.0", - "ark-relations 0.6.0", - "ark-serialize 0.6.0", - "color-eyre", - "memmap2", - "semaphore-rs-ark-circom", -] - -[[package]] -name = "semaphore-rs-depth-config" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1182bb2e1c3eafc62896cbb557e7e3e5701f302aca7e0a7be4d64afdadf0bac" - -[[package]] -name = "semaphore-rs-depth-macros" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2f8c729ddc394204515cbfb8ad92c6f7ecae84e476bc83154dc0d29abbedc7a" -dependencies = [ - "itertools 0.13.0", - "proc-macro2", - "quote", - "semaphore-rs-depth-config", - "syn 2.0.119", -] - -[[package]] -name = "semaphore-rs-hasher" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0048be8cc87ca0176d0fb63bbe1dea1bedd585e21a06b5698b72c77991dc5965" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "semaphore-rs-keccak" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abbea1cf1a5c4268743222d23c09c6e9e8456d4907483302055b34b5690aedaf" -dependencies = [ - "semaphore-rs-hasher", - "tiny-keccak", -] - -[[package]] -name = "semaphore-rs-poseidon" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a33bc286ea7609af279bfd0558a9f44e67ae7e12c831b75ed9713a4b40b4ba0" -dependencies = [ - "ark-bn254 0.6.0", - "ark-ff 0.6.0", - "once_cell", - "ruint", - "semaphore-rs-hasher", -] - -[[package]] -name = "semaphore-rs-proof" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6394dbd24c5a6e61c468a78340e1595f2f9814c200120f26f967cbfd493e9534" -dependencies = [ - "alloy-core", - "ark-bn254 0.6.0", - "ark-ec 0.6.0", - "ark-groth16 0.6.0", - "getrandom 0.2.17", - "hex", - "lazy_static", - "ruint", - "semaphore-rs-ark-circom", - "semaphore-rs-utils", - "serde", - "serde_json", -] - -[[package]] -name = "semaphore-rs-storage" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58c20585a4f3a0a112a539b8d10df3da4adb181185ce5a4ad9fbd4891c110c0" -dependencies = [ - "bytemuck", - "color-eyre", - "mmap-rs", - "tempfile", -] - -[[package]] -name = "semaphore-rs-trees" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ca17f302fb03333d0e47ff8556e26ed2ab45ebc3ddf75525f7c5a3e2836e40" -dependencies = [ - "ark-bn254 0.6.0", - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-groth16 0.6.0", - "ark-relations 0.6.0", - "ark-std 0.6.0", - "bytemuck", - "color-eyre", - "derive-where", - "getrandom 0.2.17", - "hex", - "hex-literal", - "itertools 0.13.0", - "mmap-rs", - "once_cell", - "rayon", - "ruint", - "semaphore-rs-ark-circom", - "semaphore-rs-hasher", - "semaphore-rs-storage", - "serde", - "thiserror 1.0.69", - "tiny-keccak", -] - -[[package]] -name = "semaphore-rs-utils" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04ce32cd02f3217ea3096e2d07d7ac99317e6a1d5388c838eeddacdbc01bbbfe" -dependencies = [ - "hex", - "serde", - "tiny-keccak", -] - -[[package]] -name = "semaphore-rs-witness" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1abbd35e58c2f6fee33fa6c961e59e99849e25cca44c4599daf4556cb8b09c25" -dependencies = [ - "ark-bn254 0.6.0", - "ark-ff 0.6.0", - "ark-serialize 0.6.0", - "byteorder", - "color-eyre", - "cxx-build", - "hex", - "postcard", - "rand 0.8.8", - "ruint", - "serde", - "serde_json", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" -dependencies = [ - "serde", - "serde_core", -] - -[[package]] -name = "semver-parser" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" -dependencies = [ - "pest", -] - -[[package]] -name = "serde" -version = "1.0.229" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde-big-array" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_core" -version = "1.0.229" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.229" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "serde_json" -version = "1.0.151" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_spanned" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" -dependencies = [ - "serde_core", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df9adc193c780ef8f159aee8b61e2d5801aaa555e6eb0947fe45530ec506296f" -dependencies = [ - "base64 0.23.1", - "bs58", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.14.2", - "jiff", - "schemars 0.9.0", - "schemars 1.2.2", - "serde_core", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17bbc68e28663bbbb90df47e058aa7eda4fb445b89fe70457bb94fbccf6e49" -dependencies = [ - "darling 0.24.1", - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" -dependencies = [ - "indexmap 2.14.2", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - -[[package]] -name = "serdect" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" -dependencies = [ - "base16ct 0.2.0", - "serde", -] - -[[package]] -name = "serdect" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" -dependencies = [ - "base16ct 1.0.0", - "serde", -] - -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures 0.2.17", - "digest 0.10.7", - "sha2-asm", -] - -[[package]] -name = "sha2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" -dependencies = [ - "cfg-if", - "cpufeatures 0.3.1", - "digest 0.11.3", -] - -[[package]] -name = "sha2-asm" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b845214d6175804686b2bd482bcffe96651bb2d1200742b712003504a2dac1ab" -dependencies = [ - "cc", -] - -[[package]] -name = "sha3" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" -dependencies = [ - "digest 0.10.7", - "keccak 0.1.6", -] - -[[package]] -name = "sha3" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be176f1a57ce4e3d31c1a166222d9768de5954f811601fb7ca06fc8203905ce1" -dependencies = [ - "digest 0.11.3", - "keccak 0.2.2", -] - -[[package]] -name = "sha3-asm" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "471668161349031e3d415412f996b030c477488eec267cc3cadae3d06c0a367f" -dependencies = [ - "cc", - "cfg-if", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "shlex" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] - -[[package]] -name = "signature" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" -dependencies = [ - "digest 0.11.3", - "rand_core 0.10.1", -] - -[[package]] -name = "simba" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae" -dependencies = [ - "approx", - "num-complex", - "num-traits", - "paste", - "wide", -] - -[[package]] -name = "simd-adler32" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" - -[[package]] -name = "simd_helpers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" -dependencies = [ - "quote", -] - -[[package]] -name = "siphasher" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33f4fe9184a62d842c9ef383018f3306d8ba224fd9d836f56d7288308847c256" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - -[[package]] -name = "smallvec" -version = "1.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9395f0f0eee849a9b707b2f06bb92a6a422090e2123bb2ef8e87a0e61892a8e" -dependencies = [ - "serde", -] - -[[package]] -name = "smallvec" -version = "2.0.0-alpha.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d44cfb396c3caf6fbfd0ab422af02631b69ddd96d2eff0b0f0724f9024051b" - -[[package]] -name = "smawk" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8e2fb0f499abb4d162f2bedad68f5ef91a1682b5a03596ddb67efd37768d100" - -[[package]] -name = "socket2" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "spin" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" -dependencies = [ - "lock_api", -] - -[[package]] -name = "spin" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3" -dependencies = [ - "lock_api", -] - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der 0.7.10", -] - -[[package]] -name = "spki" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" -dependencies = [ - "base64ct", - "der 0.8.2", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "staging-face-crypto" -version = "0.1.0" -dependencies = [ - "ampc-secret-sharing", - "anyhow", - "base64 0.22.1", - "crypto_box", - "oxide", - "rand 0.8.8", - "serde", - "serde_json", - "taceo-ark-babyjubjub 0.5.3", - "tokio", - "world-id-primitives 0.14.0", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strength_reduce" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" - -[[package]] -name = "string-interner" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07f9fdfdd31a0ff38b59deb401be81b73913d76c9cc5b1aed4e1330a223420b9" -dependencies = [ - "cfg-if", - "hashbrown 0.14.5", - "serde", -] - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" - -[[package]] -name = "strum" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" -dependencies = [ - "strum_macros 0.27.2", -] - -[[package]] -name = "strum_macros" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "strum_macros" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.119" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "3.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn-solidity" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb6a2e3c7f7a3e4e83d1752cec5d1e357ced0cf96e85419b6a07f227db3def3a" -dependencies = [ - "paste", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "sysctl" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea" -dependencies = [ - "bitflags 2.13.2", - "byteorder", - "enum-as-inner", - "libc", - "thiserror 1.0.69", - "walkdir", -] - -[[package]] -name = "taceo-ark-babyjubjub" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55b5a2cc31c90e79778c4f6375e5d9828171d320db3f8c911a8ad47af4a70069" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "taceo-ark-babyjubjub" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14ecf2df99fec8b65be444d27f4ac20d75486be15423b4cd507517683312a4b0" -dependencies = [ - "ark-bn254 0.6.0", - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-std 0.6.0", -] - -[[package]] -name = "taceo-ark-serde-compat" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fcd6f55fec9dd131019bdc0319db2271915056607b75bf8b8bc0a6ec496347" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "num-bigint", - "serde", - "taceo-ark-babyjubjub 0.5.3", -] - -[[package]] -name = "taceo-ark-serde-compat" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7a255d21a01f083cf373ff6b4903f9dafad1e0a2a1a2119a4cee971d1bb995" -dependencies = [ - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-serialize 0.6.0", - "num-bigint", - "serde", - "taceo-ark-babyjubjub 0.6.0", -] - -[[package]] -name = "taceo-circom-types" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4ae56552ed9a44722d293640d5aedd90b9940284bf1f1bf4df727b3ce5bc34b" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-groth16 0.5.0", - "ark-poly 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "byteorder", - "serde", - "serde_json", - "taceo-ark-serde-compat 0.5.0", - "thiserror 2.0.21", - "tracing", -] - -[[package]] -name = "taceo-eddsa-babyjubjub" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10becbd559ee21d8376a4c2e18f0e38257ec1b5bfff3dcb2cb2945ca1db38906" -dependencies = [ - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "blake3", - "eyre", - "num-bigint", - "rand 0.8.8", - "serde", - "taceo-ark-babyjubjub 0.5.3", - "taceo-ark-serde-compat 0.5.0", - "taceo-poseidon2 0.2.1", - "zeroize", -] - -[[package]] -name = "taceo-oprf" -version = "0.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c10bf82ba41bbc8a6693362d67738145c77bdcec36345d85d4a86d2fb7dc44dc" -dependencies = [ - "taceo-oprf-types 0.15.1", -] - -[[package]] -name = "taceo-oprf" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "617cc21e04912e2b4989a110459e07b072ccac250d666f65bba5ffccc5b90795" -dependencies = [ - "taceo-oprf-types 0.16.1", -] - -[[package]] -name = "taceo-oprf-core" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f66b5a67d71a6022abb42198d87184aebbac1f45538b5858d22c87d0958a805" -dependencies = [ - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-serialize 0.6.0", - "blake3", - "itertools 0.15.0", - "num-bigint", - "rand 0.8.8", - "serde", - "subtle", - "taceo-ark-babyjubjub 0.6.0", - "taceo-ark-serde-compat 0.6.1", - "taceo-poseidon2 0.3.0", - "uuid", - "zeroize", -] - -[[package]] -name = "taceo-oprf-types" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de73b98dd21ab1048ffb869f09dac92d9f70e0f93f5956f3d3e9873640a78b3" -dependencies = [ - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "async-trait", - "eyre", - "http", - "ruint", - "serde", - "taceo-ark-babyjubjub 0.5.3", - "taceo-ark-serde-compat 0.5.0", - "taceo-oprf-core", - "uuid", -] - -[[package]] -name = "taceo-oprf-types" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d344eb6f0dc1a872a4cdf389099d4556a4633bc5c9e037bd4583ee810df981" -dependencies = [ - "ark-ff 0.6.0", - "ark-serialize 0.6.0", - "async-trait", - "eyre", - "http", - "ruint", - "serde", - "taceo-ark-babyjubjub 0.6.0", - "taceo-ark-serde-compat 0.6.1", - "taceo-oprf-core", - "uuid", -] - -[[package]] -name = "taceo-poseidon2" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac59d3df4c827b3496bff929aebd6440997a5c2e946f46ff4fdd76f318447581" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "ark-std 0.5.0", - "num-bigint", - "num-traits", -] - -[[package]] -name = "taceo-poseidon2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c167df5e799207335a7acfec5404aa8fae59fad877c6cd20205815d690ba7157" -dependencies = [ - "ark-bn254 0.6.0", - "ark-ff 0.6.0", - "ark-std 0.6.0", - "num-bigint", - "num-traits", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tar" -version = "0.4.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840" -dependencies = [ - "filetime", - "libc", - "xattr", -] - -[[package]] -name = "tempfile" -version = "3.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" -dependencies = [ - "fastrand", - "getrandom 0.4.3", - "once_cell", - "rustix", - "windows-sys 0.61.2", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "textwrap" -version = "0.16.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ecfad6c3abc80a577f2b91c1e412ee57e7a060d430b553c1b0c940974ebcd49" -dependencies = [ - "smawk", - "unicode-width", -] - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09e52cb86a36cede5cb101bf8908837b3e4c6e5e59fe7fd85c23fb56200d189e" -dependencies = [ - "thiserror-impl 2.0.21", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "thread_local" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - -[[package]] -name = "time" -version = "0.3.55" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" -dependencies = [ - "deranged", - "num-conv", - "powerfmt", - "serde_core", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" - -[[package]] -name = "time-macros" -version = "0.2.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinystr" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinyvec" -version = "1.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee" - -[[package]] -name = "tokio" -version = "1.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" -dependencies = [ - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "tokio-macros", - "windows-sys 0.61.2", -] - -[[package]] -name = "tokio-macros" -version = "2.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9cc2678c2cdd569ef8215e2afd7954ada2ae20b4fdd2c5fe6139a3b02d105db" -dependencies = [ - "rustls", - "tokio", -] - -[[package]] -name = "tokio-stream" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "libc", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_edit 0.22.27", -] - -[[package]] -name = "toml" -version = "1.1.6+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "920602543f0911ab71da12c50d59701da54c196d1a2bf5cb4b75667f137a406a" -dependencies = [ - "indexmap 2.14.2", - "serde_core", - "serde_spanned 1.1.1", - "toml_datetime 1.1.1+spec-1.1.0", - "toml_parser", - "toml_writer", - "winnow 1.0.4", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "1.1.1+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap 2.14.2", - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_write", - "winnow 0.7.15", -] - -[[package]] -name = "toml_edit" -version = "0.25.15+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1340ea94a5856333492c9064b02c778b191dd2c853778d9609debdcdfea3a614" -dependencies = [ - "indexmap 2.14.2", - "toml_datetime 1.1.1+spec-1.1.0", - "toml_parser", - "winnow 1.0.4", -] - -[[package]] -name = "toml_parser" -version = "1.1.3+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" -dependencies = [ - "winnow 1.0.4", -] - -[[package]] -name = "toml_write" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" - -[[package]] -name = "toml_writer" -version = "1.1.2+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" - -[[package]] -name = "tonic" -version = "0.14.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac2a5518c70fa84342385732db33fb3f44bc4cc748936eb5833d2df34d6445ef" -dependencies = [ - "async-trait", - "axum", - "base64 0.22.1", - "bytes", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-timeout", - "hyper-util", - "percent-encoding", - "pin-project", - "rustls-native-certs", - "socket2", - "sync_wrapper", - "tokio", - "tokio-rustls", - "tokio-stream", - "tower", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tonic-build" -version = "0.14.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68f61875ac5293cf72e6c8cf0158086428c82c37229e98c840878f1706b0322" -dependencies = [ - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "tonic-prost" -version = "0.14.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50849f68853be452acf590cde0b146665b8d507b3b8af17261df47e02c209ea0" -dependencies = [ - "bytes", - "prost 0.14.4", - "tonic", -] - -[[package]] -name = "tonic-prost-build" -version = "0.14.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "654e5643eff75d7f8c99197ce1440ed19a3474eada74c12bbac488b2cafdae27" -dependencies = [ - "prettyplease", - "proc-macro2", - "prost-build", - "prost-types", - "quote", - "syn 2.0.119", - "tempfile", - "tonic-build", -] - -[[package]] -name = "tower" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" -dependencies = [ - "futures-core", - "futures-util", - "indexmap 2.14.2", - "pin-project-lite", - "slab", - "sync_wrapper", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-http" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" -dependencies = [ - "bitflags 2.13.2", - "bytes", - "futures-util", - "http", - "http-body", - "pin-project-lite", - "tower", - "tower-layer", - "tower-service", - "url", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-error" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" -dependencies = [ - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" -dependencies = [ - "nu-ansi-term", - "sharded-slab", - "smallvec 1.16.2", - "thread_local", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "tract-core" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7b5347639690871b124593a8c8903f1f369531498b8abaebd18eb5c58163971" -dependencies = [ - "anyhow", - "anymap3", - "bit-set", - "derive-new", - "downcast-rs", - "dyn-clone", - "lazy_static", - "log", - "maplit", - "ndarray", - "num-complex", - "num-integer", - "num-traits", - "paste", - "rustfft", - "smallvec 1.16.2", - "tract-data", - "tract-linalg", -] - -[[package]] -name = "tract-data" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a3f476a1804e05708e9bc5e2d29dcab82bad531e357d3d14d7da80fbba0b6d" -dependencies = [ - "anyhow", - "downcast-rs", - "dyn-clone", - "dyn-hash", - "half", - "itertools 0.12.1", - "lazy_static", - "maplit", - "ndarray", - "nom 7.1.3", - "num-integer", - "num-traits", - "parking_lot", - "scan_fmt", - "smallvec 1.16.2", - "string-interner", -] - -[[package]] -name = "tract-hir" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dca047ba1151fe3446fb0194d4b6ddb9ae8f361337c47a267870c53605fbafb" -dependencies = [ - "derive-new", - "log", - "tract-core", -] - -[[package]] -name = "tract-linalg" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb8e0703eb53ef1bbf77050ff261675818dd5f0d6c27044c6e48ede9b845f9e0" -dependencies = [ - "byteorder", - "cc", - "derive-new", - "downcast-rs", - "dyn-clone", - "dyn-hash", - "half", - "lazy_static", - "liquid", - "liquid-core", - "liquid-derive", - "log", - "num-traits", - "paste", - "rayon", - "scan_fmt", - "smallvec 1.16.2", - "time", - "tract-data", - "unicode-normalization", - "walkdir", -] - -[[package]] -name = "tract-nnef" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72cb88a4367ec2c695610223cf886f01fc1deb5c9a82c7a74b1a5d32dc0b1466" -dependencies = [ - "byteorder", - "flate2", - "log", - "nom 7.1.3", - "tar", - "tract-core", - "walkdir", -] - -[[package]] -name = "tract-onnx" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5830aa672b2aa4dc98a97a36e5988eaf77b3ecee65e2601619588d2ca557008" -dependencies = [ - "bytes", - "derive-new", - "log", - "memmap2", - "num-integer", - "prost 0.11.9", - "smallvec 1.16.2", - "tract-hir", - "tract-nnef", - "tract-onnx-opl", -] - -[[package]] -name = "tract-onnx-opl" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121d3d224c806ba3d941f4bb50943ad33b59d1da5ae704d0e4e76d2808221f96" -dependencies = [ - "getrandom 0.2.17", - "log", - "rand 0.8.8", - "rand_distr", - "rustfft", - "tract-nnef", -] - -[[package]] -name = "transpose" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e" -dependencies = [ - "num-integer", - "strength_reduce", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "ttf-parser" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" - -[[package]] -name = "typenum" -version = "1.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" - -[[package]] -name = "ucd-trie" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" - -[[package]] -name = "uint" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] - -[[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicase" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" - -[[package]] -name = "unicode-ident" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954" - -[[package]] -name = "unicode-normalization" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" - -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "uniffi" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76407f5f396a2c949a069eff4a9fca9ce462410eb872bffef4c2b7b89804a77a" -dependencies = [ - "anyhow", - "cargo_metadata", - "uniffi_bindgen", - "uniffi_core", - "uniffi_macros", - "uniffi_pipeline", -] - -[[package]] -name = "uniffi_bindgen" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df3ced8f0eda3de99f6d50820e8628f443da8e4f447f477d1403ceba29dacbd" -dependencies = [ - "anyhow", - "askama", - "camino", - "cargo_metadata", - "fs-err", - "glob", - "goblin", - "heck", - "indexmap 2.14.2", - "once_cell", - "serde", - "tempfile", - "textwrap", - "toml 1.1.6+spec-1.1.0", - "uniffi_internal_macros", - "uniffi_meta", - "uniffi_pipeline", - "uniffi_udl", -] - -[[package]] -name = "uniffi_core" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7530ae8efeaaa488622865966763fe0294832779fff80508c36d69c6a874a6a" -dependencies = [ - "anyhow", - "async-compat", - "bytes", - "once_cell", - "static_assertions", -] - -[[package]] -name = "uniffi_internal_macros" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4bad017164375d99450d70495014810d15a84ba9da6ed14b9628b1424223ba" -dependencies = [ - "anyhow", - "indexmap 2.14.2", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "uniffi_macros" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b855a58da153739ce6e863f6e296edc3716a093768c4d3d957f17f5e4317c60" -dependencies = [ - "camino", - "fs-err", - "once_cell", - "proc-macro2", - "quote", - "serde", - "syn 2.0.119", - "toml 1.1.6+spec-1.1.0", - "uniffi_meta", -] - -[[package]] -name = "uniffi_meta" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af0c88664a9cb9559856f5a250283c9708923b303170e2e5c7db8f4ad65e9459" -dependencies = [ - "anyhow", - "siphasher", - "uniffi_internal_macros", - "uniffi_pipeline", -] - -[[package]] -name = "uniffi_pipeline" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d00f5c044b4a3dca0b1226c92ddaeea626f337470e22180dd182160c87a06b0b" -dependencies = [ - "anyhow", - "heck", - "indexmap 2.14.2", - "tempfile", - "uniffi_internal_macros", -] - -[[package]] -name = "uniffi_udl" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55dfd9c778d6b39cb5acd541d9ff63431974035d2bad83c897b766a6ee3152ac" -dependencies = [ - "anyhow", - "textwrap", - "uniffi_meta", - "weedle2", -] - -[[package]] -name = "universal-hash" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" -dependencies = [ - "crypto-common 0.1.7", - "subtle", -] - -[[package]] -name = "unsafe-libyaml" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", - "serde_derive", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "utils" -version = "0.1.0" -source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" -dependencies = [ - "approx", - "bincode", - "data-encoding", - "fast_image_resize", - "histogram_equalization", - "image", - "imageproc", - "inventory", - "itertools 0.13.0", - "log", - "nalgebra", - "ndarray", - "ndarray-stats", - "num-traits", - "opencv", - "palette", - "rustfft", - "schemars 0.8.22", - "serde", - "serde_yaml", - "sha2 0.10.9", - "thiserror 1.0.69", - "tracing", - "uniffi", -] - -[[package]] -name = "utils_macros" -version = "0.1.0" -source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "uuid" -version = "1.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ef6dac1e96601b4fb3acccccff2139741fcb757cb9a36089bf5be91cfb285ce" -dependencies = [ - "getrandom 0.4.3", - "js-sys", - "serde_core", - "wasm-bindgen", -] - -[[package]] -name = "v_frame" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" -dependencies = [ - "aligned-vec", - "num-traits", - "wasm-bindgen", -] - -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.4+wasi-0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.129" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cbab34de2d982e9b48e18d216d04c4a6f641066ff19ffb699980f591ee3610e" -dependencies = [ - "js-sys", - "tokio", - "wasm-bindgen", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.129" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.129" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn 3.0.6", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.129" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "web-sys" -version = "0.3.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88261b9deccee56594c11a3460c462c41f58d148598fe70ad77070126a68aba4" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "weedle2" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "998d2c24ec099a87daf9467808859f9d82b61f1d9c9701251aea037f514eae0e" -dependencies = [ - "nom 7.1.3", -] - -[[package]] -name = "wide" -version = "0.7.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" -dependencies = [ - "bytemuck", - "safe_arch", -] - -[[package]] -name = "widestring" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" -dependencies = [ - "windows-collections", - "windows-core", - "windows-future", - "windows-numerics", -] - -[[package]] -name = "windows-collections" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" -dependencies = [ - "windows-core", -] - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-future" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" -dependencies = [ - "windows-core", - "windows-link", - "windows-threading", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-numerics" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" -dependencies = [ - "windows-core", - "windows-link", -] - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-threading" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" -dependencies = [ - "memchr", -] - -[[package]] -name = "wit-bindgen" -version = "0.57.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" - -[[package]] -name = "wnaf" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "795ca18b3fdb5e62bf982199278341ddcf7ebf7d32e25e212ad05d496e95f6fa" -dependencies = [ - "ff 0.14.0", - "group 0.14.0", - "hybrid-array", - "primefield", -] - -[[package]] -name = "world-id-primitives" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7430d4229c914b7136a028ad478dacc7983a8bfb926af9f5a4e5e31550d4f1cf" -dependencies = [ - "alloy", - "alloy-primitives", - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "arrayvec", - "embed-doc-image", - "eyre", - "getrandom 0.3.4", - "hex", - "provekit-common", - "rand 0.8.8", - "ruint", - "secrecy", - "serde", - "serde_json", - "sha2 0.11.0", - "sha3 0.10.9", - "strum 0.27.2", - "taceo-ark-babyjubjub 0.5.3", - "taceo-ark-serde-compat 0.5.0", - "taceo-circom-types", - "taceo-eddsa-babyjubjub", - "taceo-oprf 0.17.2", - "taceo-poseidon2 0.2.1", - "thiserror 2.0.21", - "url", - "uuid", -] - -[[package]] -name = "world-id-primitives" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76ac44fcbb959d6460462b29ee8798ef28baa13cea47ac8e2e9ea4edb22be3b" -dependencies = [ - "alloy", - "alloy-primitives", - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "arrayvec", - "embed-doc-image", - "eyre", - "getrandom 0.3.4", - "hex", - "provekit-common", - "rand 0.8.8", - "ruint", - "secrecy", - "serde", - "serde_json", - "sha2 0.11.0", - "sha3 0.10.9", - "strum 0.27.2", - "taceo-ark-babyjubjub 0.5.3", - "taceo-ark-serde-compat 0.5.0", - "taceo-circom-types", - "taceo-eddsa-babyjubjub", - "taceo-oprf 0.18.2", - "taceo-poseidon2 0.2.1", - "thiserror 2.0.21", - "url", - "uuid", -] - -[[package]] -name = "writeable" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "xattr" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" -dependencies = [ - "libc", - "rustix", -] - -[[package]] -name = "xz2" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" -dependencies = [ - "lzma-sys", -] - -[[package]] -name = "y4m" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" - -[[package]] -name = "yoke" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", - "synstructure", -] - -[[package]] -name = "yuv" -version = "0.8.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a295923535c00a4e72a50a0a1130097f93160b39892dd4d2d006b1e2b90d6bf9" -dependencies = [ - "num-traits", -] - -[[package]] -name = "zerocopy" -version = "0.8.59" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6df92bf3d9227be3d53173901ddbffac2babc27ae50f397776ffd6dc33f800cb" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.59" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac4f328cf2f05d084e496c3e9c3f33ed0a183656a16e1fcec4d464d8373aec82" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "zerofrom" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "zerotrie" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "zip" -version = "2.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" -dependencies = [ - "arbitrary", - "crc32fast", - "crossbeam-utils", - "displaydoc", - "flate2", - "indexmap 2.14.2", - "memchr", - "thiserror 2.0.21", - "zopfli", -] - -[[package]] -name = "zlib-rs" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b268e58e7c693d7c271f93ffc4ba3b380412554231c85bf61ca7af91042a4112" - -[[package]] -name = "zmij" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" - -[[package]] -name = "zopfli" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" -dependencies = [ - "bumpalo", - "crc32fast", - "log", - "simd-adler32", -] - -[[package]] -name = "zstd" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "7.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d80649ab6db9d9f6f9c80a40becd948eda4714a0a5ac8c4d157a32231c7882" -dependencies = [ - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.1.0+zstd.1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef0a8027ec3ee71300ab3bcbcd0393f434aa72b91ca6d635a39941deae8eea0" -dependencies = [ - "cc", - "pkg-config", -] - -[[package]] -name = "zune-core" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56377fd46368984a170bc5aac5567e52ca5da874caa60bea39fcbca78fb658b" - -[[package]] -name = "zune-inflate" -version = "0.2.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "zune-jpeg" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" -dependencies = [ - "zune-core", -] diff --git a/services/staging-issuance/face-enrollment-helper/Cargo.toml b/services/staging-issuance/face-enrollment-helper/Cargo.toml deleted file mode 100644 index 00bf367..0000000 --- a/services/staging-issuance/face-enrollment-helper/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "staging-face-crypto" -version = "0.1.0" -edition = "2021" -publish = false - -[dependencies] -ampc-secret-sharing = { git = "https://github.com/worldcoin/ampc-common.git", rev = "3062538f0307471ed0dd2be8258952c807747141" } -oxide = { git = "https://github.com/worldcoin/oxide.git", rev = "329274a32be02be0bb39ca02adc4e4e4e438ada0" } -tokio = { version = "1", features = ["rt-multi-thread", "macros", "time"] } -crypto_box = { version = "0.9.1", features = ["seal"] } -base64 = "0.22" -rand = "0.8" -serde = { version = "1", features = ["derive"] } -serde_json = "1" -anyhow = "1" -world-id-primitives = "=0.14.0" -ark-babyjubjub = { package = "taceo-ark-babyjubjub", version = "0.5" } - -[profile.dev] -opt-level = 2 diff --git a/services/staging-issuance/face-enrollment-helper/build-config.toml b/services/staging-issuance/face-enrollment-helper/build-config.toml deleted file mode 100644 index ff08484..0000000 --- a/services/staging-issuance/face-enrollment-helper/build-config.toml +++ /dev/null @@ -1,7 +0,0 @@ -# Native dependency settings from pinned Oxide .cargo/config.toml. -# Cargo does not inherit a git dependency's workspace configuration. -[env] -IGNITION_BUCKET_URL = "https://wld-ml-face-engine-public.worldcoin.org" -IGNITION_CACHE_PATH = "cache" -IGNITION_DIRECTORY_PATH = "assets/dependencies" -OPENCV_LINK_LIBS = "libopencv_imgproc,libopencv_core" diff --git a/services/staging-issuance/face-enrollment-helper/src/main.rs b/services/staging-issuance/face-enrollment-helper/src/main.rs deleted file mode 100644 index 5535b41..0000000 --- a/services/staging-issuance/face-enrollment-helper/src/main.rs +++ /dev/null @@ -1,144 +0,0 @@ -//! Local staging adapter; no WalletKit custody. Oxide owns enrollment authentication. -//! Share serialization/sealing follows Oxide's face_embedding_shares.rs. -//! ZKP challenge fetching and header construction call Oxide directly. -use anyhow::{ensure, Context, Result}; -use base64::{engine::general_purpose::STANDARD as B64, Engine}; -use serde::Deserialize; -use serde_json::json; -use std::io::{self, Read}; -use std::str::FromStr; - -#[derive(Deserialize)] -#[serde(tag = "operation", rename_all = "snake_case", deny_unknown_fields)] -enum Input { - Shares { - public_keys: [String; 3], - }, - Authenticate { - seed: String, - kind: AuthenticationKind, - }, - Verify { - credential: String, - sub: String, - public_key: [String; 2], - }, -} - -#[derive(Deserialize)] -#[serde(rename_all = "lowercase")] -enum AuthenticationKind { - GetIdentity, - UserCentricEnrollment, -} - -fn shares(public_keys: [String; 3]) -> Result { - // A fresh synthetic int4 embedding. Never accepts a user's biometric input. - let mut rng = rand::thread_rng(); - let embedding = ampc_secret_sharing::FaceVector::random_normalized(&mut rng); - let shares = embedding - .secret_share(&mut rng) - .map_err(|_| anyhow::anyhow!("create AMPC shares"))?; - let mut encrypted = Vec::new(); - for (share, key) in shares.iter().zip(public_keys) { - let bytes: Vec = share - .0 - .iter() - .flat_map(|value| value.to_le_bytes()) - .collect(); - let encoded = - serde_json::to_vec(&json!({"version": "2.5", "share_data": B64.encode(bytes)}))?; - let key = B64.decode(key.trim()).context("decode staging PKI key")?; - let key = crypto_box::PublicKey::from_slice(&key).context("parse staging PKI key")?; - let sealed = key - .seal(&mut rng, &encoded) - .map_err(|_| anyhow::anyhow!("seal AMPC share"))?; - encrypted.push(B64.encode(sealed)); - } - Ok(json!({"shares": encrypted})) -} - -async fn authenticate(seed: String, kind: AuthenticationKind) -> Result { - ensure!( - seed.len() == 64 && seed.bytes().all(|c| c.is_ascii_hexdigit()), - "invalid enrollment seed" - ); - // Preserve the existing UTF-8 hex seed and identity_trapdoor domain. - // Switching to IdentityContext::Face would change saved enrollment identities. - let identity = - oxide::identity::Identity::new(seed, oxide::identity_context::IdentityContext::Orb); - let challenge_type = match kind { - AuthenticationKind::GetIdentity => oxide::ChallengeType::GetIdentity, - AuthenticationKind::UserCentricEnrollment => oxide::ChallengeType::UserCentricEnrollment, - }; - let authentication = oxide::ZkpAuthentication::new( - "https://app.stage.face.worldcoin.org".into(), - "WorldApp/1.0.0 Oxide/1.0.0 iOS".into(), - ); - let header = tokio::time::timeout( - std::time::Duration::from_secs(80), - authentication.create_header(&identity, challenge_type), - ) - .await - .context("enrollment authentication deadline expired")? - .context("Oxide enrollment authentication failed")?; - Ok(json!({"identityCommitment": identity.commitment().to_string(), "header": header})) -} - -fn verify(credential: String, sub: String, public_key: [String; 2]) -> Result { - let credential: world_id_primitives::Credential = - serde_json::from_slice(&B64.decode(credential)?)?; - let sub: world_id_primitives::FieldElement = sub - .parse() - .map_err(|_| anyhow::anyhow!("invalid subject"))?; - let x = ark_babyjubjub::Fq::from_str(&public_key[0]) - .map_err(|_| anyhow::anyhow!("invalid issuer key"))?; - let y = ark_babyjubjub::Fq::from_str(&public_key[1]) - .map_err(|_| anyhow::anyhow!("invalid issuer key"))?; - let point = ark_babyjubjub::EdwardsAffine::new_unchecked(x, y); - ensure!( - !point.is_zero() && point.is_on_curve() && point.is_in_correct_subgroup_assuming_on_curve(), - "invalid issuer key" - ); - let key = world_id_primitives::EdDSAPublicKey { pk: point }; - ensure!( - credential.issuer_schema_id == 11 && credential.sub == sub && credential.issuer == key, - "credential binding mismatch" - ); - ensure!( - credential - .verify_signature(&key) - .map_err(|_| anyhow::anyhow!("credential signature verification failed"))?, - "invalid credential signature" - ); - Ok(json!({"verified": true})) -} - -async fn run() -> Result<()> { - let mut text = String::new(); - io::stdin().take(262_145).read_to_string(&mut text)?; - ensure!(text.len() <= 262_144, "input too large"); - let output = match serde_json::from_str::(&text)? { - Input::Shares { public_keys } => shares(public_keys)?, - Input::Authenticate { seed, kind } => authenticate(seed, kind).await?, - Input::Verify { - credential, - sub, - public_key, - } => verify(credential, sub, public_key)?, - }; - println!("{}", serde_json::to_string(&output)?); - Ok(()) -} - -#[tokio::main] -async fn main() { - if let Err(error) = run().await { - // Do not print serde input, identity material, or proof data on failure. - let _ = error; - eprintln!( - "Staging face cryptography failed; check the helper input and pinned dependencies." - ); - std::process::exit(1); - } -} diff --git a/playwright.integration.config.ts b/tests/e2e/playwright.config.ts similarity index 74% rename from playwright.integration.config.ts rename to tests/e2e/playwright.config.ts index 14b91c0..a40d30a 100644 --- a/playwright.integration.config.ts +++ b/tests/e2e/playwright.config.ts @@ -1,12 +1,15 @@ import { defineConfig } from "@playwright/test"; +import { resolve } from "node:path"; + +const repositoryRoot = resolve(import.meta.dirname, "../.."); export default defineConfig({ - testDir: "./tests/integration/browser", - outputDir: "./test-results", + testDir: resolve(repositoryRoot, "tests/integration/browser"), + outputDir: resolve(repositoryRoot, "test-results"), fullyParallel: false, forbidOnly: true, retries: 0, - reporter: [["list"], ["html", { outputFolder: "./playwright-report", open: "never" }]], + reporter: [["list"], ["html", { outputFolder: resolve(repositoryRoot, "playwright-report"), open: "never" }]], use: { baseURL: "http://127.0.0.1:4194", trace: "off", @@ -15,13 +18,11 @@ export default defineConfig({ }, webServer: { command: "bun run start:authenticator", - cwd: import.meta.dirname, + cwd: repositoryRoot, env: { ...process.env, AUTHENTICATOR_HOST: "127.0.0.1", PORT: "4194", - AUTHENTICATOR_PUBLIC_ORIGIN: "http://127.0.0.1:4194", - AUTHENTICATOR_LOCAL_ORIGIN: "http://localhost:4194", }, port: 4194, reuseExistingServer: false, diff --git a/tsconfig.tools.json b/tsconfig.tools.json index aa2944e..08fa88c 100644 --- a/tsconfig.tools.json +++ b/tsconfig.tools.json @@ -4,5 +4,5 @@ "lib": ["ES2022"], "types": ["bun", "node"] }, - "include": ["*.config.ts", "vite.config.ts", "scripts/**/*.ts"] + "include": ["*.config.ts", "vite.config.ts", "scripts/**/*.ts", "tests/e2e/playwright.config.ts"] } diff --git a/vite.config.ts b/vite.config.ts index cc666e8..53ad8d4 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -13,6 +13,8 @@ function rejectServerModulesFromBrowser(): Plugin { const forbidden = [ path("./apps/authenticator/src/server/"), path("./services/"), + path("./experiments/"), + path("./tests/"), path("./packages/biometric-verification-port/"), path("./packages/staging-issuance-port/"), ]; From 0bb4ad5980e2f045b5b57aea3b513e039cdb21a1 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 10:42:42 -0700 Subject: [PATCH 14/38] Group build tooling and remove obsolete staging helper references --- README.md | 68 +++++++++---------- index.html | 13 ---- package.json | 10 +-- .../face-enrollment-helper/README.md | 16 ----- .../eslint.config.mjs | 0 tooling/tsconfig.client.json | 22 ++++++ .../tsconfig.server.json | 6 +- tooling/tsconfig.test.json | 23 +++++++ tooling/tsconfig.tools.json | 17 +++++ vite.config.ts => tooling/vite.config.ts | 7 +- tsconfig.client.json | 22 ------ tsconfig.test.json | 15 ---- tsconfig.tools.json | 8 --- 13 files changed, 108 insertions(+), 119 deletions(-) delete mode 100644 index.html delete mode 100644 services/staging-issuance/face-enrollment-helper/README.md rename eslint.config.mjs => tooling/eslint.config.mjs (100%) create mode 100644 tooling/tsconfig.client.json rename tsconfig.server.json => tooling/tsconfig.server.json (59%) create mode 100644 tooling/tsconfig.test.json create mode 100644 tooling/tsconfig.tools.json rename vite.config.ts => tooling/vite.config.ts (85%) delete mode 100644 tsconfig.client.json delete mode 100644 tsconfig.test.json delete mode 100644 tsconfig.tools.json diff --git a/README.md b/README.md index 11aa31b..7c4697d 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,22 @@ # World ID Web Authenticator -Staging authenticator built on PR #9 with published `@worldcoin/walletkit-web@0.27.1`. +Staging-only product implementation built on PR #9 with published `@worldcoin/walletkit-web@0.27.1`. +Production enrollment is not yet available. The relying-party demo belongs in its own website. This repository consumes its requests; it does not host an RP demo, generate RP requests, or verify proofs for the RP. +## Repository layout + +- `apps/authenticator/`: browser app, its HTML entry point and server. +- `config/`: authenticator runtime settings and HTTP security policy. +- `tooling/`: Vite, ESLint and environment-specific TypeScript configuration. +- `tests/e2e/playwright.config.ts`: browser test runner configuration. +- `tests/integration/`: integration fixtures and browser tests. +- `experiments/`: isolated demo implementations, excluded from the product build. + +Package metadata, lockfile, ignore files and shared `tsconfig.json` stay at the root. +`vercel.json` also stays at the root to keep automatic Vercel deployments disabled. + ## Run ```sh @@ -34,8 +47,9 @@ request creation and final verification remain on that website/server. action binding, RP signer and OPRF key against the staging registry. 2. Show the RP ID, action and exact AND/OR credential requirements before opening a passkey. New wallets register on staging; existing wallets unlock their vault. -3. Check the requested issuer schemas and date bounds. Selfie-only requests can - enter enrollment; Orb-only requests require an existing Orb credential. An +3. Check the requested issuer schemas and date bounds. Selfie-only requests with + missing credentials show that enrollment is unavailable; Orb-only requests + require an existing Orb credential. An either-credential request asks the user to choose, without selecting Selfie automatically. 4. On explicit approval, revalidate the request and use WalletKit to generate the proof from the original requirements. Selfie proofs include the existing @@ -49,32 +63,19 @@ production requests are not implemented. Closing/reloading the page discards the bridge response capability; reopen a fresh request from the RP. Bridge keys are removed from browser history and never persisted by the app. -## Selfie issuance +## Selfie enrollment status -The local flow uses the **existing real staging issuer with synthetic face input**. -It obtains a schema-11 subject/blinding factor through WalletKit, creates encrypted -synthetic AMPC shares in a native helper, submits/polls Face staging, verifies the -issuer signature and subject, and stores the issued credential in the encrypted vault. +The default app does not issue Selfie credentials. Missing-credential requests show +an unavailable enrollment state; existing eligible staging credentials can still be +used for proofs. Camera positioning remains available as local guidance only. -```sh -bun run build:selfie-helper -``` +Synthetic enrollment is isolated in [`experiments/tee-demo`](experiments/README.md). +It submits random face embeddings to the real staging signup service using its +integrity exception. The main app has no synthetic submission route, native helper, +or integrity placeholders. Root build/start commands do not include the experiment. -The helper has pinned private Oxide/AMPC dependencies and needs their repository -access and native dependencies. See its [README](services/staging-issuance/face-enrollment-helper/README.md). -`STAGING_FACE_HELPER=/absolute/path/to/staging-face-crypto` can select an existing -build of this same helper for local development. Missing helpers return an actionable -503; there is no fake-success fallback. The web build does not build the native helper. - -Issuance is allowed only with a loopback server binding, an allowed localhost -request origin, and matching `Origin` header. Remote deployments cannot enable -this synthetic enrollment route by changing browser input. Interrupted submissions -are saved and polled instead of automatically submitted again. The server retains -operations under `~/.local/state/web-authenticator/synthetic-selfie-issuance` with -private filesystem permissions; the browser retains an opaque resume capability. -Set `STAGING_SELFIE_STATE_DIR` to a separate persistent directory when running -multiple local checkouts. Run one issuer process per directory; the in-memory -concurrency guard is not a distributed lock. +Previously saved vaults, enrollment-operation files and resume tokens are left in +place. This cleanup does not delete server enrollments or revoke credentials. The optional camera preview runs Face Engine’s RGBNet detector locally through ONNX Runtime Web (CPU/WASM, dedicated worker). It provides face-count, centering @@ -87,7 +88,7 @@ bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx The model is ignored by Git; install it before building a deployable preview. See [RGBNet setup and processing](docs/rgbnet-browser.md). -It does **not** supply the issuer input or establish liveness. TEE capture, challenge +It does **not** submit an enrollment or establish liveness. TEE capture, challenge verification and production Selfie Check issuance remain separate integrations. The **Dev mode** switch is off by default and resets on reload. It opens a side @@ -105,8 +106,9 @@ are unchanged. Reloading at the **same origin** reopens that passkey's encrypted WalletKit vault. PRF output and seed/database-key buffers are erased after opening. No plaintext key fallback is available. Close other wallet tabs before unlocking. -Registration status and the opaque issuance resume capability are additional -browser metadata. A submission of unknown outcome is never automatically +Registration status is additional browser metadata. Legacy synthetic-issuance +resume tokens may remain in storage but are no longer read by this app. A +submission of unknown outcome is never automatically registered again; unlocking checks whether that account became available. Ports/hostnames are separate browser origins. The earlier development checkout @@ -121,10 +123,9 @@ not implemented. bun run lint bun run typecheck bun run build -bun test +bun run test bun x playwright install chromium webkit bun run test:browser -cargo fmt --manifest-path services/staging-issuance/face-enrollment-helper/Cargo.toml -- --check ``` Browser tests run a separate server on port 4194. Unit and browser tests use fixture @@ -140,9 +141,8 @@ publishing disabled. Server bindings/origins and the explicit CSP allowlist live ## Provenance PR #9 migrated the browser UX from `worldcoin/web-authenticator-experiments` -commit `b4139268da213a680e89bf5877c29fcafb145f25`. This branch replaces its embedded -RP scenario, simulated session gateway and simulated issuers with the existing -development checkout's WalletKit, bridge and staging issuance integrations. +commit `b4139268da213a680e89bf5877c29fcafb145f25`. The product app uses WalletKit +and the bridge; embedded RP scenarios, simulated sessions and synthetic enrollment are isolated in the experiment. The original UI assets and passkey vault format are retained. Camera guidance now uses the pinned RGBNet model described above. ## Local integration branch diff --git a/index.html b/index.html deleted file mode 100644 index 089c0d8..0000000 --- a/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - World ID Authenticator - - -
      - - - diff --git a/package.json b/package.json index 84b6634..4660940 100644 --- a/package.json +++ b/package.json @@ -10,18 +10,18 @@ ], "scripts": { "build": "bun run build:authenticator && bun run build:authenticator-server", - "build:authenticator": "vite build --config vite.config.ts", + "build:authenticator": "vite build --config tooling/vite.config.ts", "build:authenticator-server": "bun build apps/authenticator/src/server/main.ts --target=bun --outdir apps/authenticator/dist-server", - "dev:authenticator": "concurrently -k -n client,server \"vite build --watch --config vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", - "lint": "eslint -c eslint.config.mjs . --max-warnings=0", + "dev:authenticator": "concurrently -k -n client,server \"vite build --watch --config tooling/vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", + "lint": "eslint -c tooling/eslint.config.mjs . --max-warnings=0", "start:authenticator": "bun apps/authenticator/src/server/main.ts", "start:authenticator:tunnel": "bun --env-file=.env.tunnel apps/authenticator/src/server/main.ts", "test": "bun test ./apps ./packages ./config ./tests", "test:authenticator": "bun test ./apps/authenticator/test", "test:browser": "bun run build:authenticator && playwright test -c tests/e2e/playwright.config.ts", "test:integration": "bun test ./tests/integration", - "typecheck": "tsc -p tsconfig.client.json --noEmit && tsc -p tsconfig.server.json --noEmit && tsc -p tsconfig.test.json --noEmit && tsc -p tsconfig.tools.json --noEmit", - "dev": "concurrently -k -n client,server \"vite build --watch --config vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", + "typecheck": "tsc -p tooling/tsconfig.client.json --noEmit && tsc -p tooling/tsconfig.server.json --noEmit && tsc -p tooling/tsconfig.test.json --noEmit && tsc -p tooling/tsconfig.tools.json --noEmit", + "dev": "concurrently -k -n client,server \"vite build --watch --config tooling/vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", "start": "bun apps/authenticator/src/server/main.ts" }, "dependencies": { diff --git a/services/staging-issuance/face-enrollment-helper/README.md b/services/staging-issuance/face-enrollment-helper/README.md deleted file mode 100644 index e05aeca..0000000 --- a/services/staging-issuance/face-enrollment-helper/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Local staging face enrollment helper - -This Rust executable supports the localhost-only selfie issuance route. It creates -and encrypts AMPC shares from synthetic input, obtains enrollment authentication -through Oxide, and verifies returned credential signatures and subject binding. -It is a server-side process, not a browser/WASM module or a face capture engine. - -Build from the repository root with `bun run build:selfie-helper`. The crate and -binary retain the name `staging-face-crypto`; the server invokes -`target/debug/staging-face-crypto` inside this directory. Build artifacts are ignored. - -Dependencies are pinned in `Cargo.toml` and `Cargo.lock`. The build command supplies -`build-config.toml` for Oxide's native dependency settings. Requests are bounded JSON -on stdin; successful responses are JSON on stdout, with failures on stderr and a -nonzero exit status. Never log the input or output payloads: they can contain -identity material and enrollment authentication headers. diff --git a/eslint.config.mjs b/tooling/eslint.config.mjs similarity index 100% rename from eslint.config.mjs rename to tooling/eslint.config.mjs diff --git a/tooling/tsconfig.client.json b/tooling/tsconfig.client.json new file mode 100644 index 0000000..162b019 --- /dev/null +++ b/tooling/tsconfig.client.json @@ -0,0 +1,22 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "lib": [ + "DOM", + "DOM.Iterable", + "ES2022" + ], + "types": [ + "vite/client" + ] + }, + "include": [ + "../apps/authenticator/src/**/*.ts", + "../apps/authenticator/src/**/*.tsx", + "../packages/browser-admission/src/**/*.ts" + ], + "exclude": [ + "../apps/authenticator/src/server/**", + "../apps/authenticator/src/**/*.server.*" + ] +} diff --git a/tsconfig.server.json b/tooling/tsconfig.server.json similarity index 59% rename from tsconfig.server.json rename to tooling/tsconfig.server.json index 3d650a2..ac2357c 100644 --- a/tsconfig.server.json +++ b/tooling/tsconfig.server.json @@ -1,5 +1,5 @@ { - "extends": "./tsconfig.json", + "extends": "../tsconfig.json", "compilerOptions": { "lib": [ "ES2022", @@ -11,7 +11,7 @@ ] }, "include": [ - "apps/authenticator/src/server/**/*.ts", - "config/**/*.ts" + "../apps/authenticator/src/server/**/*.ts", + "../config/**/*.ts" ] } diff --git a/tooling/tsconfig.test.json b/tooling/tsconfig.test.json new file mode 100644 index 0000000..a9043e0 --- /dev/null +++ b/tooling/tsconfig.test.json @@ -0,0 +1,23 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "lib": [ + "DOM", + "DOM.Iterable", + "ES2022" + ], + "types": [ + "bun", + "node", + "vite/client" + ] + }, + "include": [ + "../apps/authenticator/test/**/*.ts", + "../apps/authenticator/test/**/*.tsx", + "../config/**/*.test.ts", + "../packages/**/*.test.ts", + "../services/**/*.test.ts", + "../tests/**/*.ts" + ] +} diff --git a/tooling/tsconfig.tools.json b/tooling/tsconfig.tools.json new file mode 100644 index 0000000..cd030dc --- /dev/null +++ b/tooling/tsconfig.tools.json @@ -0,0 +1,17 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "lib": [ + "ES2022" + ], + "types": [ + "bun", + "node" + ] + }, + "include": [ + "./*.config.ts", + "../scripts/**/*.ts", + "../tests/e2e/playwright.config.ts" + ] +} diff --git a/vite.config.ts b/tooling/vite.config.ts similarity index 85% rename from vite.config.ts rename to tooling/vite.config.ts index 53ad8d4..888d95b 100644 --- a/vite.config.ts +++ b/tooling/vite.config.ts @@ -2,11 +2,12 @@ import react from "@vitejs/plugin-react"; import { defineConfig, type Plugin } from "vite"; import { fileURLToPath, URL } from "node:url"; -const cleanRoot = fileURLToPath(new URL(".", import.meta.url)); -const appRoot = fileURLToPath(new URL("./apps/authenticator", import.meta.url)); +const repositoryUrl = new URL("../", import.meta.url); +const cleanRoot = fileURLToPath(repositoryUrl); +const appRoot = fileURLToPath(new URL("./apps/authenticator", repositoryUrl)); function path(relativePath: string): string { - return fileURLToPath(new URL(relativePath, import.meta.url)); + return fileURLToPath(new URL(relativePath, repositoryUrl)); } function rejectServerModulesFromBrowser(): Plugin { diff --git a/tsconfig.client.json b/tsconfig.client.json deleted file mode 100644 index b0078bf..0000000 --- a/tsconfig.client.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "lib": [ - "DOM", - "DOM.Iterable", - "ES2022" - ], - "types": [ - "vite/client" - ] - }, - "include": [ - "apps/authenticator/src/**/*.ts", - "apps/authenticator/src/**/*.tsx", - "packages/browser-admission/src/**/*.ts" - ], - "exclude": [ - "apps/authenticator/src/server/**", - "apps/authenticator/src/**/*.server.*" - ] -} diff --git a/tsconfig.test.json b/tsconfig.test.json deleted file mode 100644 index 8fa57a4..0000000 --- a/tsconfig.test.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "lib": ["DOM", "DOM.Iterable", "ES2022"], - "types": ["bun", "node", "vite/client"] - }, - "include": [ - "apps/authenticator/test/**/*.ts", - "apps/authenticator/test/**/*.tsx", - "config/**/*.test.ts", - "packages/**/*.test.ts", - "services/**/*.test.ts", - "tests/**/*.ts" - ] -} diff --git a/tsconfig.tools.json b/tsconfig.tools.json deleted file mode 100644 index 08fa88c..0000000 --- a/tsconfig.tools.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "lib": ["ES2022"], - "types": ["bun", "node"] - }, - "include": ["*.config.ts", "vite.config.ts", "scripts/**/*.ts", "tests/e2e/playwright.config.ts"] -} From 87d22b019e9912b28d33a874a0f3dad72936cea9 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 10:47:49 -0700 Subject: [PATCH 15/38] Restore conventional config locations and clarify system README --- README.md | 248 +++++++++--------- .../eslint.config.mjs => eslint.config.mjs | 0 package.json | 10 +- tooling/tsconfig.client.json | 22 -- tooling/tsconfig.test.json | 23 -- tooling/tsconfig.tools.json | 17 -- tsconfig.client.json | 22 ++ ...config.server.json => tsconfig.server.json | 6 +- tsconfig.test.json | 15 ++ tsconfig.tools.json | 8 + tooling/vite.config.ts => vite.config.ts | 7 +- 11 files changed, 177 insertions(+), 201 deletions(-) rename tooling/eslint.config.mjs => eslint.config.mjs (100%) delete mode 100644 tooling/tsconfig.client.json delete mode 100644 tooling/tsconfig.test.json delete mode 100644 tooling/tsconfig.tools.json create mode 100644 tsconfig.client.json rename tooling/tsconfig.server.json => tsconfig.server.json (59%) create mode 100644 tsconfig.test.json create mode 100644 tsconfig.tools.json rename tooling/vite.config.ts => vite.config.ts (85%) diff --git a/README.md b/README.md index 7c4697d..a79026f 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,35 @@ # World ID Web Authenticator -Staging-only product implementation built on PR #9 with published `@worldcoin/walletkit-web@0.27.1`. -Production enrollment is not yet available. -The relying-party demo belongs in its own website. This repository consumes its -requests; it does not host an RP demo, generate RP requests, or verify proofs for the RP. +## Overview -## Repository layout +A browser authenticator for World ID. Users unlock an encrypted credential vault +with a passkey, review requests from relying-party apps, and approve World ID +proofs. The browser exchanges encrypted requests and responses through the World +ID bridge; the requesting app verifies the returned proof. -- `apps/authenticator/`: browser app, its HTML entry point and server. -- `config/`: authenticator runtime settings and HTTP security policy. -- `tooling/`: Vite, ESLint and environment-specific TypeScript configuration. -- `tests/e2e/playwright.config.ts`: browser test runner configuration. -- `tests/integration/`: integration fixtures and browser tests. -- `experiments/`: isolated demo implementations, excluded from the product build. +The current application connects to World ID staging in the US region and supports +uniqueness proofs using existing Orb and Selfie credentials. Selfie enrollment, +user-presence verification and credential recovery are not yet implemented. -Package metadata, lockfile, ignore files and shared `tsconfig.json` stay at the root. -`vercel.json` also stays at the root to keep automatic Vercel deployments disabled. +| Component | Technology | Purpose | +| --- | --- | --- | +| Runtime and package manager | Bun 1.4.2 | HTTP server, workspace dependencies and unit tests | +| UI | React 19.2.8, TypeScript 5.9.3 | Request review, passkeys and credential management | +| World ID | `@worldcoin/walletkit-web` 0.27.1 | Account registration, encrypted vault and proof generation | +| Browser build | Vite 8.2.2 | App assets and Web Workers | +| Registry access | viem 2.56.0 | Read the staging RP registry on World Chain | +| Camera guidance | ONNX Runtime Web 1.30.0 with RGBNet | Local face positioning in a Web Worker | +| Browser tests | Playwright 1.62.1 | Chromium and WebKit integration tests | -## Run +Versions are pinned in [package.json](package.json) and [bun.lock](bun.lock). +The [Bun server](apps/authenticator/src/server/main.ts) serves the app and its +registry API. [GitHub Actions](.github/workflows/ci.yml) runs tests, lint, type +checks and builds. Automatic Vercel deployment is disabled in +[vercel.json](vercel.json); this repository does not configure a deployment pipeline. + +## Quick Start + +Install Bun 1.4.2, then run from the repository root: ```sh bun install --frozen-lockfile @@ -25,136 +37,118 @@ bun run build bun run start ``` -Open **http://localhost:4173**. Use localhost or HTTPS for passkeys. -`bun run dev` watches the browser build and Bun server. Use `PORT=4193 bun run dev` -when another checkout already occupies the default port. - -## Request and proof flow +Open **http://localhost:4173**. Use a browser and passkey provider supporting +WebAuthn PRF. Passkeys and camera access require localhost or HTTPS. -The external website sends its normal World ID connector link to this authenticator: +For development, `bun run dev` watches the browser build and restarts the Bun +server on changes. It uses the same localhost address. -```text -http://localhost:4173/?i=&k=&b=https%3A%2F%2Fstaging-bridge.worldcoin.org -``` - -`b` is optional and defaults to `https://bridge.worldcoin.org`. Only those two -World ID bridge origins are accepted. `t=wld` and a validated `return_to` URL are -also supported. The encrypted request's callback takes precedence and conflicting -callbacks are rejected. Configure the external demo's authenticator base URL; -request creation and final verification remain on that website/server. - -1. Fetch and decrypt the bridge request. Validate staging environment, timestamps, - action binding, RP signer and OPRF key against the staging registry. -2. Show the RP ID, action and exact AND/OR credential requirements before opening - a passkey. New wallets register on staging; existing wallets unlock their vault. -3. Check the requested issuer schemas and date bounds. Selfie-only requests with - missing credentials show that enrollment is unavailable; Orb-only requests - require an existing Orb credential. An - either-credential request asks the user to choose, without selecting Selfie automatically. -4. On explicit approval, revalidate the request and use WalletKit to generate the - proof from the original requirements. Selfie proofs include the existing - schema-11 uniqueness-score disclosure. -5. Encrypt and upload the response to the bridge. Failed delivery retains the same - proof in memory for retry. The UI reports delivery, not successful RP verification. - -Only staging World ID 4 uniqueness requests are supported. User-presence and -identity-attribute requests fail closed. Orb enrollment/import, recovery, and -production requests are not implemented. Closing/reloading the page discards the -bridge response capability; reopen a fresh request from the RP. Bridge keys are -removed from browser history and never persisted by the app. - -## Selfie enrollment status - -The default app does not issue Selfie credentials. Missing-credential requests show -an unavailable enrollment state; existing eligible staging credentials can still be -used for proofs. Camera positioning remains available as local guidance only. - -Synthetic enrollment is isolated in [`experiments/tee-demo`](experiments/README.md). -It submits random face embeddings to the real staging signup service using its -integrity exception. The main app has no synthetic submission route, native helper, -or integrity placeholders. Root build/start commands do not include the experiment. - -Previously saved vaults, enrollment-operation files and resume tokens are left in -place. This cleanup does not delete server enrollments or revoke credentials. - -The optional camera preview runs Face Engine’s RGBNet detector locally through -ONNX Runtime Web (CPU/WASM, dedicated worker). It provides face-count, centering -and distance guidance. MediaPipe and its head-turn/lighting heuristics are removed. -Install the pinned model before using the preview: - -```sh -bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx -``` +### Server configuration -The model is ignored by Git; install it before building a deployable preview. -See [RGBNet setup and processing](docs/rgbnet-browser.md). -It does **not** submit an enrollment or establish liveness. TEE capture, challenge -verification and production Selfie Check issuance remain separate integrations. +| Setting | Default | Configuration | +| --- | --- | --- | +| Listen address | `127.0.0.1` | `AUTHENTICATOR_HOST` | +| Port | `4173` | `PORT`, falling back to `AUTHENTICATOR_PORT` | +| Static assets | `apps/authenticator/dist` | Generated by the browser build | +| Request body limit | 1 KiB | Set in the server entry point | +| Idle timeout | 180 seconds | Set in the server entry point | -The **Dev mode** switch is off by default and resets on reload. It opens a side -panel (below the authenticator on narrow screens) with credential descriptions, -IDs, dates, vault refresh and confirmed local deletion, plus request and runtime -details. Unlock the wallet before inspecting credentials. Vault mutations are -disabled during active operations and pending proof delivery. The inspector never -shows secret keys, PRF output, blinding factors or proof payloads. Deleting a local -credential does not delete the passkey, account registration or issuer record. +For example, `PORT=3100 bun run start` serves the app at **http://localhost:3100**. +Listener settings and HTTP security headers are defined in +[config/authenticator-app-v0.ts](config/authenticator-app-v0.ts). -## Storage +`bun run build` also produces `apps/authenticator/dist-server/main.js`. To run the +bundled server, use `bun apps/authenticator/dist-server/main.js` from the repository +root, with the browser build present. Set `AUTHENTICATOR_HOST=0.0.0.0` when the +server needs to listen on all interfaces behind an HTTPS ingress. -PR #9's public profile (`world-id-wallet-v1`), PRF input, HKDF labels and OPFS path -are unchanged. Reloading at the **same origin** reopens that passkey's encrypted -WalletKit vault. PRF output and seed/database-key buffers are erased after opening. -No plaintext key fallback is available. Close other wallet tabs before unlocking. +### HTTP routes -Registration status is additional browser metadata. Legacy synthetic-issuance -resume tokens may remain in storage but are no longer read by this app. A -submission of unknown outcome is never automatically -registered again; unlocking checks whether that account became available. +| Method | Route | Purpose | +| --- | --- | --- | +| `GET`, `HEAD` | `/` | Load the authenticator or inspect its response headers | +| `GET`, `HEAD` | Existing asset paths | Serve built JavaScript, CSS, WASM, images and models | +| `GET` | `/api/staging-rp?id=rp_` | Look up an RP's signer and OPRF key ID in the staging registry | -Ports/hostnames are separate browser origins. The earlier development checkout -also used a different key derivation/storage format; this branch does not import -its vault. A synced passkey alone does not back up OPFS. Clearing site data loses -local vault/profile data; cross-device backup, passkey rotation and recovery are -not implemented. +The registry API returns `{ "signer": "0x…", "oprfKeyId": "0x…" }` for an active +RP. It returns `400` for an invalid ID, `422` for an inactive or uninitialized RP, +and `502` if the registry lookup fails. IDs contain one to sixteen hexadecimal +digits after `rp_`. Unknown API routes return `404`. -## Validation +Check the server and request validation locally: ```sh -bun run lint -bun run typecheck -bun run build -bun run test -bun x playwright install chromium webkit -bun run test:browser +curl -I http://localhost:4173/ +curl -i 'http://localhost:4173/api/staging-rp?id=invalid' ``` -Browser tests run a separate server on port 4194. Unit and browser tests use fixture -RP signatures, mocked upstream registry/bridge responses and mocked account/issuer -boundaries; they do not submit staging registrations or enrollments. Chromium also -exercises a virtual PRF passkey and the real WalletKit worker/vault against a failed -upstream registration. This is not physical-passkey or live end-to-end issuance evidence. +The first request returns the app headers; the second should return `400`. +Registration, vault operations and proof generation run through WalletKit in the +browser, rather than additional local HTTP endpoints. + +### Test an authentication request -No automatic deployment is configured. PR #9's `vercel.json` keeps Vercel Git -publishing disabled. Server bindings/origins and the explicit CSP allowlist live in -[`config/authenticator-app-v0.ts`](config/authenticator-app-v0.ts). +Configure the relying-party app to use `http://localhost:4173` as its authenticator +URL. Open the connector link created by that app: -## Provenance +```text +http://localhost:4173/?i=&k=&b=https%3A%2F%2Fstaging-bridge.worldcoin.org +``` -PR #9 migrated the browser UX from `worldcoin/web-authenticator-experiments` -commit `b4139268da213a680e89bf5877c29fcafb145f25`. The product app uses WalletKit -and the bridge; embedded RP scenarios, simulated sessions and synthetic enrollment are isolated in the experiment. -The original UI assets and passkey vault format are retained. Camera guidance now uses the pinned RGBNet model described above. +The authenticator loads and validates the request, asks the user to unlock their +wallet, and generates a proof after approval. `b` selects the bridge and defaults +to `https://bridge.worldcoin.org` when omitted. Both official bridge origins are +accepted; the request itself must target staging. -## Local integration branch +Without a connector link, `/` opens wallet management. **Dev mode** exposes +credential metadata, vault refresh, local credential deletion and runtime details. +Keep the same browser origin when reopening a wallet: its encrypted storage is +local to that origin. -`integration/authenticator-demo` is the consolidated working branch. The default -app is `apps/authenticator`, with the responsive UI and published WalletKit 0.27.1. -Run `bun run build` then `PORT=3100 bun run start` for localhost:3100. +### Camera preview -The earlier TEE experiment is preserved under `experiments/tee-demo`; its local -WalletKit #604 integration is not yet wired into the main UI. Existing legacy -demo passkeys retain their original derivation, vault namespace, and registration -status. Registration and initialization share one unlocked session. +Install the RGBNet model before building if you want to use camera positioning: + +```sh +bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx +bun run build:authenticator +``` -Browser diagnostics use `authenticator_step` events with step names, timings, and -safe failure categories; they omit key material and raw dependency errors. +The installer checks the model against the pinned hash. Camera frames are processed +locally for positioning guidance. See [RGBNet setup](docs/rgbnet-browser.md). + +## Development and Testing + +| Command | What it checks or runs | +| --- | --- | +| `bun run dev` | Browser build watcher and Bun server | +| `bun run lint` | ESLint rules, including browser/server and experiment boundaries | +| `bun run typecheck` | Browser, server, test and script types | +| `bun run test` | Product unit and integration tests | +| `bun run test:authenticator` | Authenticator component, wallet, request and server tests | +| `bun run test:browser` | Build the browser app and run Chromium/WebKit tests on port `4194` | +| `bun run build` | Build browser assets and the Bun server bundle | + +Install the browser test runtimes once with +`bun x playwright install chromium webkit`. Playwright covers request review, +proof delivery, passkey/vault behavior, camera workers and accessibility using +controlled upstream responses. Its configuration is in +[tests/e2e/playwright.config.ts](tests/e2e/playwright.config.ts). + +## Repository Structure + +| Path | Contents | +| --- | --- | +| `apps/authenticator/src` | React app, wallet integration, request handling and Bun server | +| `apps/authenticator/test` | Authenticator regression tests | +| `packages` | Shared contracts and browser-admission policy | +| `config` | Server listener settings and HTTP security headers | +| `scripts` | Model installation and other developer utilities | +| `tests` | Integration fixtures, browser tests and Playwright configuration | +| `experiments` | Standalone demos excluded from the main app build | +| `docs` | Design notes and integration references | + +Project configuration stays at the root: `vite.config.ts` defines the browser +build, `eslint.config.mjs` defines lint rules, and `tsconfig.json` provides shared +compiler settings. The client, server, test and tools TypeScript configurations +select the files and runtime types for each environment. diff --git a/tooling/eslint.config.mjs b/eslint.config.mjs similarity index 100% rename from tooling/eslint.config.mjs rename to eslint.config.mjs diff --git a/package.json b/package.json index 4660940..a24f869 100644 --- a/package.json +++ b/package.json @@ -10,18 +10,18 @@ ], "scripts": { "build": "bun run build:authenticator && bun run build:authenticator-server", - "build:authenticator": "vite build --config tooling/vite.config.ts", + "build:authenticator": "vite build --config vite.config.ts", "build:authenticator-server": "bun build apps/authenticator/src/server/main.ts --target=bun --outdir apps/authenticator/dist-server", - "dev:authenticator": "concurrently -k -n client,server \"vite build --watch --config tooling/vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", - "lint": "eslint -c tooling/eslint.config.mjs . --max-warnings=0", + "dev:authenticator": "concurrently -k -n client,server \"vite build --watch --config vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", + "lint": "eslint . --max-warnings=0", "start:authenticator": "bun apps/authenticator/src/server/main.ts", "start:authenticator:tunnel": "bun --env-file=.env.tunnel apps/authenticator/src/server/main.ts", "test": "bun test ./apps ./packages ./config ./tests", "test:authenticator": "bun test ./apps/authenticator/test", "test:browser": "bun run build:authenticator && playwright test -c tests/e2e/playwright.config.ts", "test:integration": "bun test ./tests/integration", - "typecheck": "tsc -p tooling/tsconfig.client.json --noEmit && tsc -p tooling/tsconfig.server.json --noEmit && tsc -p tooling/tsconfig.test.json --noEmit && tsc -p tooling/tsconfig.tools.json --noEmit", - "dev": "concurrently -k -n client,server \"vite build --watch --config tooling/vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", + "typecheck": "tsc -p tsconfig.client.json --noEmit && tsc -p tsconfig.server.json --noEmit && tsc -p tsconfig.test.json --noEmit && tsc -p tsconfig.tools.json --noEmit", + "dev": "concurrently -k -n client,server \"vite build --watch --config vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", "start": "bun apps/authenticator/src/server/main.ts" }, "dependencies": { diff --git a/tooling/tsconfig.client.json b/tooling/tsconfig.client.json deleted file mode 100644 index 162b019..0000000 --- a/tooling/tsconfig.client.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "lib": [ - "DOM", - "DOM.Iterable", - "ES2022" - ], - "types": [ - "vite/client" - ] - }, - "include": [ - "../apps/authenticator/src/**/*.ts", - "../apps/authenticator/src/**/*.tsx", - "../packages/browser-admission/src/**/*.ts" - ], - "exclude": [ - "../apps/authenticator/src/server/**", - "../apps/authenticator/src/**/*.server.*" - ] -} diff --git a/tooling/tsconfig.test.json b/tooling/tsconfig.test.json deleted file mode 100644 index a9043e0..0000000 --- a/tooling/tsconfig.test.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "lib": [ - "DOM", - "DOM.Iterable", - "ES2022" - ], - "types": [ - "bun", - "node", - "vite/client" - ] - }, - "include": [ - "../apps/authenticator/test/**/*.ts", - "../apps/authenticator/test/**/*.tsx", - "../config/**/*.test.ts", - "../packages/**/*.test.ts", - "../services/**/*.test.ts", - "../tests/**/*.ts" - ] -} diff --git a/tooling/tsconfig.tools.json b/tooling/tsconfig.tools.json deleted file mode 100644 index cd030dc..0000000 --- a/tooling/tsconfig.tools.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "lib": [ - "ES2022" - ], - "types": [ - "bun", - "node" - ] - }, - "include": [ - "./*.config.ts", - "../scripts/**/*.ts", - "../tests/e2e/playwright.config.ts" - ] -} diff --git a/tsconfig.client.json b/tsconfig.client.json new file mode 100644 index 0000000..b0078bf --- /dev/null +++ b/tsconfig.client.json @@ -0,0 +1,22 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "lib": [ + "DOM", + "DOM.Iterable", + "ES2022" + ], + "types": [ + "vite/client" + ] + }, + "include": [ + "apps/authenticator/src/**/*.ts", + "apps/authenticator/src/**/*.tsx", + "packages/browser-admission/src/**/*.ts" + ], + "exclude": [ + "apps/authenticator/src/server/**", + "apps/authenticator/src/**/*.server.*" + ] +} diff --git a/tooling/tsconfig.server.json b/tsconfig.server.json similarity index 59% rename from tooling/tsconfig.server.json rename to tsconfig.server.json index ac2357c..3d650a2 100644 --- a/tooling/tsconfig.server.json +++ b/tsconfig.server.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "./tsconfig.json", "compilerOptions": { "lib": [ "ES2022", @@ -11,7 +11,7 @@ ] }, "include": [ - "../apps/authenticator/src/server/**/*.ts", - "../config/**/*.ts" + "apps/authenticator/src/server/**/*.ts", + "config/**/*.ts" ] } diff --git a/tsconfig.test.json b/tsconfig.test.json new file mode 100644 index 0000000..8fa57a4 --- /dev/null +++ b/tsconfig.test.json @@ -0,0 +1,15 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "types": ["bun", "node", "vite/client"] + }, + "include": [ + "apps/authenticator/test/**/*.ts", + "apps/authenticator/test/**/*.tsx", + "config/**/*.test.ts", + "packages/**/*.test.ts", + "services/**/*.test.ts", + "tests/**/*.ts" + ] +} diff --git a/tsconfig.tools.json b/tsconfig.tools.json new file mode 100644 index 0000000..08fa88c --- /dev/null +++ b/tsconfig.tools.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "lib": ["ES2022"], + "types": ["bun", "node"] + }, + "include": ["*.config.ts", "vite.config.ts", "scripts/**/*.ts", "tests/e2e/playwright.config.ts"] +} diff --git a/tooling/vite.config.ts b/vite.config.ts similarity index 85% rename from tooling/vite.config.ts rename to vite.config.ts index 888d95b..53ad8d4 100644 --- a/tooling/vite.config.ts +++ b/vite.config.ts @@ -2,12 +2,11 @@ import react from "@vitejs/plugin-react"; import { defineConfig, type Plugin } from "vite"; import { fileURLToPath, URL } from "node:url"; -const repositoryUrl = new URL("../", import.meta.url); -const cleanRoot = fileURLToPath(repositoryUrl); -const appRoot = fileURLToPath(new URL("./apps/authenticator", repositoryUrl)); +const cleanRoot = fileURLToPath(new URL(".", import.meta.url)); +const appRoot = fileURLToPath(new URL("./apps/authenticator", import.meta.url)); function path(relativePath: string): string { - return fileURLToPath(new URL(relativePath, repositoryUrl)); + return fileURLToPath(new URL(relativePath, import.meta.url)); } function rejectServerModulesFromBrowser(): Plugin { From bc70d674be3a440708f19c85e3cd7e15cc3a3ad7 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 10:51:27 -0700 Subject: [PATCH 16/38] Simplify README around local setup and testing --- README.md | 172 +++++++++++++++++------------------------------------- 1 file changed, 53 insertions(+), 119 deletions(-) diff --git a/README.md b/README.md index a79026f..fba0b11 100644 --- a/README.md +++ b/README.md @@ -2,153 +2,87 @@ ## Overview -A browser authenticator for World ID. Users unlock an encrypted credential vault -with a passkey, review requests from relying-party apps, and approve World ID -proofs. The browser exchanges encrypted requests and responses through the World -ID bridge; the requesting app verifies the returned proof. - -The current application connects to World ID staging in the US region and supports -uniqueness proofs using existing Orb and Selfie credentials. Selfie enrollment, -user-presence verification and credential recovery are not yet implemented. - -| Component | Technology | Purpose | -| --- | --- | --- | -| Runtime and package manager | Bun 1.4.2 | HTTP server, workspace dependencies and unit tests | -| UI | React 19.2.8, TypeScript 5.9.3 | Request review, passkeys and credential management | -| World ID | `@worldcoin/walletkit-web` 0.27.1 | Account registration, encrypted vault and proof generation | -| Browser build | Vite 8.2.2 | App assets and Web Workers | -| Registry access | viem 2.56.0 | Read the staging RP registry on World Chain | -| Camera guidance | ONNX Runtime Web 1.30.0 with RGBNet | Local face positioning in a Web Worker | -| Browser tests | Playwright 1.62.1 | Chromium and WebKit integration tests | - -Versions are pinned in [package.json](package.json) and [bun.lock](bun.lock). -The [Bun server](apps/authenticator/src/server/main.ts) serves the app and its -registry API. [GitHub Actions](.github/workflows/ci.yml) runs tests, lint, type -checks and builds. Automatic Vercel deployment is disabled in -[vercel.json](vercel.json); this repository does not configure a deployment pipeline. +A browser authenticator for World ID. Users unlock their credential vault with a +passkey, review requests from apps, and approve proofs sent through the World ID +bridge. It currently supports staging uniqueness proofs with existing Orb and +Selfie credentials. Selfie enrollment, user presence and recovery are not yet implemented. + +Built with React, TypeScript and Vite, served by Bun. WalletKit handles account +registration, encrypted storage and proof generation; viem reads the RP registry. +ONNX Runtime Web runs RGBNet for local camera positioning. Dependencies are pinned +in [package.json](package.json). + +The app lives in [apps/authenticator](apps/authenticator). +[CI](.github/workflows/ci.yml) runs checks and builds; automatic Vercel deployments +are disabled in [vercel.json](vercel.json). Standalone demos live in `experiments/` +and are excluded from the app build. ## Quick Start -Install Bun 1.4.2, then run from the repository root: +Install Bun 1.4.2, then run: ```sh bun install --frozen-lockfile -bun run build -bun run start +bun run dev ``` -Open **http://localhost:4173**. Use a browser and passkey provider supporting -WebAuthn PRF. Passkeys and camera access require localhost or HTTPS. - -For development, `bun run dev` watches the browser build and restarts the Bun -server on changes. It uses the same localhost address. - -### Server configuration - -| Setting | Default | Configuration | -| --- | --- | --- | -| Listen address | `127.0.0.1` | `AUTHENTICATOR_HOST` | -| Port | `4173` | `PORT`, falling back to `AUTHENTICATOR_PORT` | -| Static assets | `apps/authenticator/dist` | Generated by the browser build | -| Request body limit | 1 KiB | Set in the server entry point | -| Idle timeout | 180 seconds | Set in the server entry point | +Open **http://localhost:4173**. The command watches the browser build and Bun +server. Use a browser and passkey provider with WebAuthn PRF support. -For example, `PORT=3100 bun run start` serves the app at **http://localhost:3100**. -Listener settings and HTTP security headers are defined in -[config/authenticator-app-v0.ts](config/authenticator-app-v0.ts). +The server binds to `127.0.0.1`. Override it with `AUTHENTICATOR_HOST`, or change +the port with `PORT=3100 bun run dev` (`AUTHENTICATOR_PORT` is also supported). +See [server settings](config/authenticator-app-v0.ts) for security headers and +[the server entry point](apps/authenticator/src/server/main.ts) for request limits. -`bun run build` also produces `apps/authenticator/dist-server/main.js`. To run the -bundled server, use `bun apps/authenticator/dist-server/main.js` from the repository -root, with the browser build present. Set `AUTHENTICATOR_HOST=0.0.0.0` when the -server needs to listen on all interfaces behind an HTTPS ingress. +To run a built version, use `bun run build` followed by `bun run start`. +Hosting outside localhost requires HTTPS for passkeys and camera access. -### HTTP routes +### Routes -| Method | Route | Purpose | -| --- | --- | --- | -| `GET`, `HEAD` | `/` | Load the authenticator or inspect its response headers | -| `GET`, `HEAD` | Existing asset paths | Serve built JavaScript, CSS, WASM, images and models | -| `GET` | `/api/staging-rp?id=rp_` | Look up an RP's signer and OPRF key ID in the staging registry | - -The registry API returns `{ "signer": "0x…", "oprfKeyId": "0x…" }` for an active -RP. It returns `400` for an invalid ID, `422` for an inactive or uninitialized RP, -and `502` if the registry lookup fails. IDs contain one to sixteen hexadecimal -digits after `rp_`. Unknown API routes return `404`. - -Check the server and request validation locally: +- `GET /` opens the authenticator; `HEAD /` checks its response headers. +- `GET` and `HEAD` on asset paths serve the browser build. +- `GET /api/staging-rp?id=rp_` returns an active RP's `signer` and `oprfKeyId`. ```sh curl -I http://localhost:4173/ -curl -i 'http://localhost:4173/api/staging-rp?id=invalid' +curl -i 'http://localhost:4173/api/staging-rp?id=invalid' # Expected: 400 ``` -The first request returns the app headers; the second should return `400`. -Registration, vault operations and proof generation run through WalletKit in the -browser, rather than additional local HTTP endpoints. +Registration, vault access and proof generation run in the browser through +WalletKit. The [HTTP handlers](apps/authenticator/src/server/http.server.ts) +define the server routes. -### Test an authentication request +### Trying a request -Configure the relying-party app to use `http://localhost:4173` as its authenticator -URL. Open the connector link created by that app: +Set the requesting app's authenticator URL to `http://localhost:4173`, then open +its generated connector link: ```text http://localhost:4173/?i=&k=&b=https%3A%2F%2Fstaging-bridge.worldcoin.org ``` -The authenticator loads and validates the request, asks the user to unlock their -wallet, and generates a proof after approval. `b` selects the bridge and defaults -to `https://bridge.worldcoin.org` when omitted. Both official bridge origins are -accepted; the request itself must target staging. - -Without a connector link, `/` opens wallet management. **Dev mode** exposes -credential metadata, vault refresh, local credential deletion and runtime details. -Keep the same browser origin when reopening a wallet: its encrypted storage is -local to that origin. +Unlock the wallet, review the request and approve the proof. The requesting app +verifies the response. Opening `/` without a request shows wallet management; +**Dev mode** adds credential inspection, refresh and local deletion. Reuse the same +browser origin to reopen its stored wallet. -### Camera preview +For camera positioning, install the model before building with +`bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx`. +See [RGBNet setup](docs/rgbnet-browser.md). -Install the RGBNet model before building if you want to use camera positioning: +## Testing ```sh -bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx -bun run build:authenticator +bun run lint +bun run typecheck +bun run test + +bun x playwright install chromium webkit # First run +bun run test:browser ``` -The installer checks the model against the pinned hash. Camera frames are processed -locally for positioning guidance. See [RGBNet setup](docs/rgbnet-browser.md). - -## Development and Testing - -| Command | What it checks or runs | -| --- | --- | -| `bun run dev` | Browser build watcher and Bun server | -| `bun run lint` | ESLint rules, including browser/server and experiment boundaries | -| `bun run typecheck` | Browser, server, test and script types | -| `bun run test` | Product unit and integration tests | -| `bun run test:authenticator` | Authenticator component, wallet, request and server tests | -| `bun run test:browser` | Build the browser app and run Chromium/WebKit tests on port `4194` | -| `bun run build` | Build browser assets and the Bun server bundle | - -Install the browser test runtimes once with -`bun x playwright install chromium webkit`. Playwright covers request review, -proof delivery, passkey/vault behavior, camera workers and accessibility using -controlled upstream responses. Its configuration is in +`test` runs product unit and integration tests. `test:browser` builds the app and +starts a separate server on port **4194**, testing request handling, passkeys, +camera workers and accessibility in Chromium and WebKit. Browser tests use +controlled upstream responses. Configure them in [tests/e2e/playwright.config.ts](tests/e2e/playwright.config.ts). - -## Repository Structure - -| Path | Contents | -| --- | --- | -| `apps/authenticator/src` | React app, wallet integration, request handling and Bun server | -| `apps/authenticator/test` | Authenticator regression tests | -| `packages` | Shared contracts and browser-admission policy | -| `config` | Server listener settings and HTTP security headers | -| `scripts` | Model installation and other developer utilities | -| `tests` | Integration fixtures, browser tests and Playwright configuration | -| `experiments` | Standalone demos excluded from the main app build | -| `docs` | Design notes and integration references | - -Project configuration stays at the root: `vite.config.ts` defines the browser -build, `eslint.config.mjs` defines lint rules, and `tsconfig.json` provides shared -compiler settings. The client, server, test and tools TypeScript configurations -select the files and runtime types for each environment. From 7aca3dab437c84b8083229ae175efbd781fa0a69 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 11:03:42 -0700 Subject: [PATCH 17/38] Clarify product and experiment boundaries --- README.md | 5 +++- apps/authenticator/README.md | 11 -------- config/README.md | 19 +++++++++----- docs/code-boundaries.md | 47 ++++++++++++++++++++++++++++++++++ docs/production-gaps.md | 8 ++++-- docs/selfie-enrollment.md | 5 ++++ docs/selfie-flow-comparison.md | 5 ++++ docs/selfie-pr-integration.md | 5 ++++ docs/wasm-upstream-plan.md | 19 +++++++++----- experiments/README.md | 24 ++++++++++++++++- experiments/tee-demo/README.md | 5 ++++ 11 files changed, 125 insertions(+), 28 deletions(-) delete mode 100644 apps/authenticator/README.md create mode 100644 docs/code-boundaries.md diff --git a/README.md b/README.md index fba0b11..b7d365a 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,10 @@ registration, encrypted storage and proof generation; viem reads the RP registry ONNX Runtime Web runs RGBNet for local camera positioning. Dependencies are pinned in [package.json](package.json). -The app lives in [apps/authenticator](apps/authenticator). +The app lives in [apps/authenticator](apps/authenticator): `src/` contains the +React UI, browser wallet and proof flows; `src/server/` contains the Bun HTTP +server and RP registry lookup. Both ship together, with separate browser and +server builds. [CI](.github/workflows/ci.yml) runs checks and builds; automatic Vercel deployments are disabled in [vercel.json](vercel.json). Standalone demos live in `experiments/` and are excluded from the app build. diff --git a/apps/authenticator/README.md b/apps/authenticator/README.md deleted file mode 100644 index 4739fdc..0000000 --- a/apps/authenticator/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Browser authenticator - -See the [root README](../../README.md) for setup, external RP integration and limits. - -- `src/App.tsx`: request review, wallet unlock, enrollment and explicit proof approval. -- `src/wallet/session.ts`: PR #9 passkey derivation and encrypted WalletKit vault. -- `src/wallet/registration.ts`: register once or reopen an existing staging account. -- `src/lib/requests`: bridge encryption, request validation, credential routing and proof generation. -- `src/lib/selfie-issuance.ts`: resumable staging issuance and vault storage. -- `src/server`: static assets, RP registry lookup and localhost-only staging issuer. -- `src/components/CameraPreview.tsx`: local camera guidance, separate from synthetic issuance. diff --git a/config/README.md b/config/README.md index 714d5e1..4c11441 100644 --- a/config/README.md +++ b/config/README.md @@ -1,15 +1,20 @@ # Authenticator server configuration +This directory currently belongs only to `apps/authenticator`. Its server entry +point reads the listener settings; its HTTP handler applies the security headers +to every response. It contains no wallet secrets, biometric data or demo fixtures. +Vite, ESLint and TypeScript configuration live at the repository root. Playwright +configuration lives in `tests/e2e/`. + `AUTHENTICATOR_HOST` defaults to `127.0.0.1`; `PORT`/`AUTHENTICATOR_PORT` defaults -to 4173. `AUTHENTICATOR_PUBLIC_ORIGIN` defaults to `http://127.0.0.1:` and -`AUTHENTICATOR_LOCAL_ORIGIN` to `http://localhost:`. Origins must be bare -HTTP(S) origins; invalid configuration fails startup. +to 4173. Invalid ports fail startup. Security headers apply to all responses. The browser CSP permits only this origin, the two official World ID bridges and WalletKit's US staging gateway/indexer/OPRF endpoints. Staging addresses and the WalletKit version are pinned together; review -that allowlist when upgrading the SDK. +that allowlist when upgrading the SDK. These are real staging trust configuration, +not production configuration. -Synthetic issuance additionally requires a loopback listener, a loopback request -host and a matching allowed Origin. Binding a container to `0.0.0.0` disables it. -There are no selectable demo scenarios or RP identities in configuration. +There is no synthetic enrollment route or configuration switch in the product app. +The former `AUTHENTICATOR_PUBLIC_ORIGIN`, `AUTHENTICATOR_LOCAL_ORIGIN`, +`STAGING_FACE_HELPER` and `STAGING_SELFIE_STATE_DIR` settings are not used by it. diff --git a/docs/code-boundaries.md b/docs/code-boundaries.md new file mode 100644 index 0000000..13f610d --- /dev/null +++ b/docs/code-boundaries.md @@ -0,0 +1,47 @@ +# Code boundaries and readiness + +The default app is a staging-only product implementation. No directory is labeled +“production ready”: production enrollment, recovery and deployment validation are +still incomplete. A file's location states its role, not its security approval. + +| Location | Role | Current status | +| --- | --- | --- | +| `apps/authenticator/src` | Product browser app and server | Real staging registration, vault, bridge and proof flow; no Selfie enrollment | +| `config` | Reviewed runtime configuration | Staging network/trust destinations and security headers | +| `packages` | Shared libraries and contracts | Per-package validation required; current admission policy/contracts are not wired into the app | +| `tests` and `*/test` | Regression tests and fixtures | Mocks are test inputs, not live-service validation | +| `experiments/tee-demo` | Preserved standalone demo | Synthetic enrollment, placeholder integrity, local TEE integration; never a product dependency | +| `docs` | Current architecture and historical investigations | Historical enrollment/integration notes are explicitly marked | + +## Enforced separation + +- Root tests use explicit directory paths, so Bun does not also select experiment tests by substring. +- Root build/start commands target only `apps/authenticator`; experiments are outside workspaces. +- ESLint rejects product imports from experiments and fixture directories. +- Vite rejects experiment/test modules entering the browser build, alongside server-only modules. +- HTTP regression tests require the removed synthetic enrollment/capability routes to return 404, including on localhost. +- UI regression tests require missing Selfie credentials to leave proof approval unavailable, without offering synthetic issuance. + +The synthetic adapter and identical Rust helper were removed from product paths; +the existing experiment retains them. Root commands cannot enable them via an +environment flag. Existing vaults, operation files, resume tokens and backend +records are not deleted. Previously issued staging credentials remain usable under +the existing staging verification rules. + +## Requirements before real enrollment can enter product code + +- Resolve a durable enrollment identity and its ownership proof separately from the WalletKit credential subject. +- Obtain accepted capture/model output and exact encrypted AMPC shares with verified binding. +- Construct actual PCP associated data and its canonical hash; implement custody and recovery. +- Agree and implement signup-service verification of the Gateway/TEE integrity bundle, expiry and replay protection. +- Take embedding metadata from the verified pipeline output rather than fixture constants. +- Validate real enrollment, failure/recovery paths and production trust configuration before enabling issuance. + +Endpoint addresses, schema identifiers, protocol versions and resource limits may +legitimately be fixed. Synthetic biometric input, fabricated hashes and test +integrity tokens may not stand in for missing production behavior. + +Keeping experiments tracked means a merge still contains demo source, even though +it is excluded from runtime builds. If main must contain no demo source at all, +remove `experiments/` in a separate, explicit cleanup; do not call this separation +production certification. diff --git a/docs/production-gaps.md b/docs/production-gaps.md index 851b45e..406317b 100644 --- a/docs/production-gaps.md +++ b/docs/production-gaps.md @@ -1,3 +1,7 @@ +> **Historical demo assessment.** The product now uses published WalletKit 0.27.1 +> without a local package patch. Synthetic enrollment is excluded from the main +> app. See [current boundaries and readiness](code-boundaries.md). + # Demo → production gaps ## Validated milestone @@ -74,8 +78,8 @@ question, not a claim that the current iOS selfie flow already sends that proof. requirement, not merely a missing hardcoded field. Implementation references: [selfie enrollment](selfie-enrollment.md), -[enrollment adapter](../src/lib/selfie-issuer-server.ts), and -[WalletKit wrapper patch](../walletkit-patches/walletkit-web@0.22.1.patch). +[preserved enrollment adapter](../experiments/tee-demo/src/lib/selfie-issuer-server.ts), and +[current WalletKit adapter](../apps/authenticator/src/lib/walletkit.ts). The RP verifier and replay ledger described above belong to the separate local playground under ignored `demo/`; their implementation is not included in this branch. diff --git a/docs/selfie-enrollment.md b/docs/selfie-enrollment.md index 6687e3e..7e4ef09 100644 --- a/docs/selfie-enrollment.md +++ b/docs/selfie-enrollment.md @@ -1,3 +1,8 @@ +> **Historical demo/integration notes.** Synthetic enrollment and the TEE demo +> are preserved under `experiments/tee-demo`; they are not part of the default app. +> Paths and validation below describe that earlier implementation. For current +> runtime boundaries and readiness, see [code boundaries](code-boundaries.md). + # Selfie enrollment integration ## Implemented synthetic staging issuance diff --git a/docs/selfie-flow-comparison.md b/docs/selfie-flow-comparison.md index a83537c..3ba82ac 100644 --- a/docs/selfie-flow-comparison.md +++ b/docs/selfie-flow-comparison.md @@ -1,3 +1,8 @@ +> **Historical demo/integration notes.** Synthetic enrollment and the TEE demo +> are preserved under `experiments/tee-demo`; they are not part of the default app. +> Paths and validation below describe that earlier implementation. For current +> runtime boundaries and readiness, see [code boundaries](code-boundaries.md). + # Selfie Check: browser demo versus iOS Source review: October 1, 2026. Browser diagrams describe this working tree, diff --git a/docs/selfie-pr-integration.md b/docs/selfie-pr-integration.md index bea1307..bf542c7 100644 --- a/docs/selfie-pr-integration.md +++ b/docs/selfie-pr-integration.md @@ -1,3 +1,8 @@ +> **Historical demo/integration notes.** Synthetic enrollment and the TEE demo +> are preserved under `experiments/tee-demo`; they are not part of the default app. +> Paths and validation below describe that earlier implementation. For current +> runtime boundaries and readiness, see [code boundaries](code-boundaries.md). + # Selfie enrollment integration snapshot Updated on 2026-10-09. The product now installs the locally built #604 candidate. diff --git a/docs/wasm-upstream-plan.md b/docs/wasm-upstream-plan.md index 35995f7..6db1fbb 100644 --- a/docs/wasm-upstream-plan.md +++ b/docs/wasm-upstream-plan.md @@ -1,5 +1,12 @@ # Browser/WASM dependencies and upstream PR plan +> **Historical dependency snapshot (October 1).** The product now uses published +> `@worldcoin/walletkit-web@0.27.1` without a local package patch. The old patch +> directory is removed; current app integration lives in the +> [WalletKit adapter](../apps/authenticator/src/lib/walletkit.ts). +> Synthetic enrollment remains in `experiments/tee-demo`. See +> [current boundaries](code-boundaries.md) before acting on the upstream work below. + Checked October 1, 2026 against this authenticator's source, dependency pins, and the linked GitHub PRs. Proposed PR titles below are a plan, not opened PRs. @@ -9,13 +16,13 @@ and attests the bound enrollment output. The browser handles capture, encrypted transport and user custody. This is the implementation target agreed for this project, not a claim that the upstream services already implement it. -## What the authenticator uses today +## What the authenticator used at the time of review | Capability | Current implementation | Upstream action | | -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Registration, credential preparation/storage, proof generation | `walletkit-web@0.22.1`, from the open WalletKit #480 → #522 → #523 stack | Finish/rebase the existing stack and support package releases; do not duplicate it. | | Binding generation | The package build pins UniFFI 0.31.2 and patches UBRN's wasm-bindgen processing/generated TypeScript | Track UBRN #409, then update and validate WalletKit's generator/toolchain together. This is a build compatibility workaround, not new cryptography. | -| Credential listing/deletion | Our `walletkit-patches/` patch adds worker messages and TypeScript methods around existing Rust APIs | WalletKit: add the missing public worker APIs above #523. No new Rust implementation is needed just to expose these methods. | +| Credential listing/deletion | The former local package patch added worker messages and TypeScript methods around existing Rust APIs | WalletKit: add the missing public worker APIs above #523. No new Rust implementation is needed just to expose these methods. | | Credential subject binding on import | Our worker patch checks the imported credential's subject against this authenticator and its blinding factor | WalletKit: preserve this invariant in the supported import API. | | Selfie score disclosure | Our worker patch fetches schema 11 and attaches its first claim to proof JSON | WalletKit/authenticator: expose deliberate claim access tied to the selected credential. Keep disclosure policy in the authenticator and provide accepted response integrity. Appended JSON is not authenticated by the ZK proof. | | AMPC share creation/encryption | Native helper creates a synthetic vector, secret-shares it using `ampc-secret-sharing`, and seals shares to party keys | Flamingo/TEE: replace this job with attested enrollment output using existing Rust AMPC primitives. Quantization, share generation and party encryption are not browser/WASM requirements. Preserve the exact same shares in enrollment and PCP custody data. | @@ -23,10 +30,10 @@ project, not a claim that the upstream services already implement it. | Issued credential verification | Native helper validates schema, subject, issuer key and signature with protocol primitives | WalletKit: expose/reuse verified credential import or verification through the worker. Preserve trusted issuer-key selection and all binding checks. | | Enrollment submission/polling | Next.js routes and a staging-only integrity exception; associated-data hash is currently synthetic | Oxide + face signup service: implement the real evidence/binding contract. This is not solved by compiling the helper to WASM. Browser networking/CORS or a deliberate relay also needs integration. | -Sources: [helper](../src/server/face-enrollment-helper/src/main.rs), -[helper pins](../src/server/face-enrollment-helper/Cargo.toml), -[server adapter](../src/lib/selfie-issuer-server.ts), -[worker patch](../walletkit-patches/walletkit-web@0.22.1.patch). +Sources: [preserved helper](../experiments/tee-demo/src/server/face-enrollment-helper/src/main.rs), +[helper pins](../experiments/tee-demo/src/server/face-enrollment-helper/Cargo.toml), +[preserved server adapter](../experiments/tee-demo/src/lib/selfie-issuer-server.ts). +The historical worker patch is no longer present or applied. Passkeys, PRF/HKDF derivation, bridge AES-GCM and request UI use browser APIs and TypeScript. They are not missing WASM ports. Encrypted browser credential storage diff --git a/experiments/README.md b/experiments/README.md index 505e692..3e5b373 100644 --- a/experiments/README.md +++ b/experiments/README.md @@ -1,4 +1,4 @@ -# Preserved TEE experiment +# Demo and experimental code `tee-demo/` preserves the earlier localhost demo, including the local WalletKit #604 adapter and TEE routes. It is not the default application. Its source and @@ -7,3 +7,25 @@ local-package dependency are retained for the next TEE integration step. The canonical UI and registration flow now live in `apps/authenticator`. Use the repository-root commands for that app. The pre-convergence checkpoint is `ae0b178`; no legacy passkey state or local secrets were deleted. + +## Boundary + +Everything under this directory is **demo/experimental**, excluded from root +workspaces and the product build. It is still tracked source and would be included +in a merge unless explicitly removed. Keeping it here does not mark it ready for +production or make the entire branch production-ready. + +`tee-demo` preserves the synthetic enrollment adapter, native helper, placeholder +integrity headers and simulated flows. The duplicate adapter/helper formerly in +`apps/authenticator` and `services/staging-issuance` have been removed. The Rust +helper source and lockfile were identical to the preserved copy. + +To work on the experiment, explicitly change into `experiments/tee-demo` and use +its own README/package scripts. Its local WalletKit tarball dependency must be +available; root installation does not prepare it. Run its helper build command +from that directory if needed. No live enrollment was run during this separation. + +Promote individual implementations only after replacing test inputs and evidence, +adding regression checks and documenting real integration validation. Product code +must not import this directory. Do not copy the synthetic adapter back as a +production enrollment implementation. diff --git a/experiments/tee-demo/README.md b/experiments/tee-demo/README.md index 4c62edd..0504390 100644 --- a/experiments/tee-demo/README.md +++ b/experiments/tee-demo/README.md @@ -1,3 +1,8 @@ +> **Demo/experimental only.** This app is excluded from the root product build. +> Run the commands below from `experiments/tee-demo`, not the repository root. +> It requires the local WalletKit tarball referenced by its `package.json`. +> Synthetic enrollment uses random face input and test integrity headers. + # Web Authenticator This repo contains the browser experience and the current staging demo. Real selfie enrollment through a TEE is still being built. From 1905d14958d46c9e9837db6abcc883d0a1612fba Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 11:03:42 -0700 Subject: [PATCH 18/38] Simplify authenticator header and wallet copy --- apps/authenticator/src/App.tsx | 3 +-- apps/authenticator/src/styles/app.css | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/apps/authenticator/src/App.tsx b/apps/authenticator/src/App.tsx index b1d155b..915beac 100644 --- a/apps/authenticator/src/App.tsx +++ b/apps/authenticator/src/App.tsx @@ -156,7 +156,7 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof }); return
      -

      World ID · Staging

      +

      World ID

      {preview && screen === "enroll" ? : } @@ -182,7 +182,6 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof : "Your wallet does not meet the requested credential and date requirements."}

      } } {screen === "enroll" &&

      Selfie Check enrollment is not available in this app yet. You can preview camera positioning, but it will not issue a credential.

      } - {!wallet && supported && !loading && !finished && screen !== "delivery" &&

      New wallets register an account on staging. Your passkey also unlocks encrypted credential storage on this browser.

      }
      {progress && !finished &&

      {progress}

      } {error &&

      {error}

      } diff --git a/apps/authenticator/src/styles/app.css b/apps/authenticator/src/styles/app.css index 0830fec..fb3cbd0 100644 --- a/apps/authenticator/src/styles/app.css +++ b/apps/authenticator/src/styles/app.css @@ -67,7 +67,7 @@ button:disabled { background: var(--surface-page); } -.staging-banner { +.brand-label { z-index: 5; align-self: center; max-width: 100%; @@ -80,7 +80,7 @@ button:disabled { text-align: center; } -.app-main--has-top-close .staging-banner { +.app-main--has-top-close .brand-label { align-self: flex-end; max-width: calc(100% - 72px); } @@ -523,7 +523,7 @@ h1:focus { .dev-notice, .dev-confirm { background: #f5f5f5; padding: 12px; border-radius: 10px; } @media (min-width: 768px) { .dev-mode-bar { padding: 20px 40px; } - .staging-banner { font-size: 15px; } + .brand-label { font-size: 15px; } .authenticator-shell .app-main { min-height: calc(100svh - 84px); min-height: calc(100dvh - 84px); padding: 64px 40px; justify-content: center; } .screen-content { flex: 0; padding: 0; } .centered-layout { max-width: 560px; gap: 28px; padding-inline: 0; } From ee9d6aa19a756084918673d9598adae4c65a1103 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 11:08:46 -0700 Subject: [PATCH 19/38] Split browser and Bun API into separate workspaces --- .gitignore | 11 ++--- README.md | 16 +++---- apps/api/README.md | 35 +++++++++++++++ apps/api/package.json | 19 ++++++++ .../api/src/config.ts | 0 .../server/http.server.ts => api/src/http.ts} | 7 +-- .../src/server => api/src}/main.ts | 4 +- .../src/routes/staging-rp.ts} | 0 .../test/http-server.test.ts | 27 ++++++++++- .../api/tsconfig.json | 5 +-- apps/{authenticator => web}/index.html | 0 apps/web/package.json | 24 ++++++++++ .../public/assets/figma/capture-check.svg | 0 .../assets/figma/capture-ring-complete.svg | 0 .../assets/figma/capture-ring-ready.svg | 0 .../assets/figma/capture-ring-sampling.svg | 0 .../public/assets/figma/close.svg | 0 .../public/assets/figma/disclosure-check.svg | 0 .../public/assets/figma/disclosure-x.svg | 0 .../public/assets/figma/human-emblem.svg | 0 .../public/assets/figma/person-circle.svg | 0 .../public/assets/figma/person-key-blue.svg | 0 .../assets/figma/person-key-disabled.svg | 0 .../public/assets/figma/person-key.svg | 0 .../public/assets/figma/selfie-emblem.svg | 0 .../assets/figma/simulation-progress.svg | 0 .../public/assets/figma/success-emblem.svg | 0 .../assets/figma/verification-complete.svg | 0 apps/{authenticator => web}/src/App.tsx | 6 +-- .../src/assets/capture-oval-geometry.ts | 0 .../src/assets/provenance.ts | 0 .../src/components/CameraPreview.tsx | 0 .../src/components/DeveloperPanel.tsx | 4 +- .../src/face/face-detector.ts | 0 .../src/face/rgbnet-model.json | 0 .../{authenticator => web}/src/face/rgbnet.ts | 0 .../src/face/rgbnet.worker.ts | 0 apps/{authenticator => web}/src/lib/async.ts | 0 .../src/lib/walletkit.ts | 0 apps/{authenticator => web}/src/main.tsx | 0 .../src/lib => web/src}/requests/bridge.ts | 0 .../src/lib => web/src}/requests/connector.ts | 0 .../src}/requests/incoming-request.ts | 4 +- .../lib => web/src}/requests/proof-request.ts | 2 +- .../src/lib => web/src}/requests/prove.ts | 4 +- .../{authenticator => web}/src/styles/app.css | 0 apps/web/src/vite-env.d.ts | 1 + .../src/walkthrough/hold-steady-progress.ts | 0 .../src/walkthrough/model-provenance.ts | 0 .../src/wallet/errors.ts | 0 .../src/wallet/flow-logging.ts | 0 .../src/wallet/legacy-passkey-secrets.ts | 0 .../src/wallet/legacy-profile.ts | 0 .../src/wallet/persistence.ts | 0 .../src/wallet/prf-result.ts | 0 .../src/wallet/registration.ts | 0 .../src/wallet/session.ts | 0 apps/{authenticator => web}/test/app.test.tsx | 2 +- apps/web/test/build-boundary.test.ts | 33 ++++++++++++++ .../test/face-detector.test.ts | 0 .../test/fixtures/rgbnet-decode.json | 0 .../test/fixtures/rgbnet-resize.json | 0 .../test/hold-steady-progress.test.ts | 0 .../test/legacy-profile.test.ts | 0 .../test/prf-result.test.ts | 0 .../test/registration.test.ts | 0 .../test/requests.test.ts | 8 ++-- .../test/rgbnet.test.ts | 0 .../test/selfie-routing.test.ts | 2 +- .../test/wallet-session.test.ts | 0 .../test/walletkit.test.ts | 0 apps/web/tsconfig.json | 17 +++++++ vite.config.ts => apps/web/vite.config.ts | 29 +++++------- bun.lock | 45 +++++++++++++------ config/README.md | 20 --------- docs/code-boundaries.md | 21 +++++++-- docs/connector-bridge.md | 2 +- docs/production-gaps.md | 2 +- docs/rgbnet-browser.md | 5 +-- docs/selfie-flow-comparison.md | 6 +-- docs/wasm-upstream-plan.md | 2 +- eslint.config.mjs | 37 +++++++++++---- experiments/README.md | 4 +- package.json | 38 +++++----------- scripts/setup-rgbnet.ts | 6 +-- tests/e2e/playwright.config.ts | 2 +- .../browser/rgbnet.browser.spec.ts | 6 +-- tests/integration/fixtures/request.ts | 2 +- tsconfig.client.json | 22 --------- tsconfig.json | 8 +--- tsconfig.test.json | 20 ++++++--- tsconfig.tools.json | 15 +++++-- 92 files changed, 333 insertions(+), 190 deletions(-) create mode 100644 apps/api/README.md create mode 100644 apps/api/package.json rename config/authenticator-app-v0.ts => apps/api/src/config.ts (100%) rename apps/{authenticator/src/server/http.server.ts => api/src/http.ts} (92%) rename apps/{authenticator/src/server => api/src}/main.ts (56%) rename apps/{authenticator/src/server/staging-rp.server.ts => api/src/routes/staging-rp.ts} (100%) rename apps/{authenticator => api}/test/http-server.test.ts (58%) rename tsconfig.server.json => apps/api/tsconfig.json (60%) rename apps/{authenticator => web}/index.html (100%) create mode 100644 apps/web/package.json rename apps/{authenticator => web}/public/assets/figma/capture-check.svg (100%) rename apps/{authenticator => web}/public/assets/figma/capture-ring-complete.svg (100%) rename apps/{authenticator => web}/public/assets/figma/capture-ring-ready.svg (100%) rename apps/{authenticator => web}/public/assets/figma/capture-ring-sampling.svg (100%) rename apps/{authenticator => web}/public/assets/figma/close.svg (100%) rename apps/{authenticator => web}/public/assets/figma/disclosure-check.svg (100%) rename apps/{authenticator => web}/public/assets/figma/disclosure-x.svg (100%) rename apps/{authenticator => web}/public/assets/figma/human-emblem.svg (100%) rename apps/{authenticator => web}/public/assets/figma/person-circle.svg (100%) rename apps/{authenticator => web}/public/assets/figma/person-key-blue.svg (100%) rename apps/{authenticator => web}/public/assets/figma/person-key-disabled.svg (100%) rename apps/{authenticator => web}/public/assets/figma/person-key.svg (100%) rename apps/{authenticator => web}/public/assets/figma/selfie-emblem.svg (100%) rename apps/{authenticator => web}/public/assets/figma/simulation-progress.svg (100%) rename apps/{authenticator => web}/public/assets/figma/success-emblem.svg (100%) rename apps/{authenticator => web}/public/assets/figma/verification-complete.svg (100%) rename apps/{authenticator => web}/src/App.tsx (98%) rename apps/{authenticator => web}/src/assets/capture-oval-geometry.ts (100%) rename apps/{authenticator => web}/src/assets/provenance.ts (100%) rename apps/{authenticator => web}/src/components/CameraPreview.tsx (100%) rename apps/{authenticator => web}/src/components/DeveloperPanel.tsx (97%) rename apps/{authenticator => web}/src/face/face-detector.ts (100%) rename apps/{authenticator => web}/src/face/rgbnet-model.json (100%) rename apps/{authenticator => web}/src/face/rgbnet.ts (100%) rename apps/{authenticator => web}/src/face/rgbnet.worker.ts (100%) rename apps/{authenticator => web}/src/lib/async.ts (100%) rename apps/{authenticator => web}/src/lib/walletkit.ts (100%) rename apps/{authenticator => web}/src/main.tsx (100%) rename apps/{authenticator/src/lib => web/src}/requests/bridge.ts (100%) rename apps/{authenticator/src/lib => web/src}/requests/connector.ts (100%) rename apps/{authenticator/src/lib => web/src}/requests/incoming-request.ts (96%) rename apps/{authenticator/src/lib => web/src}/requests/proof-request.ts (99%) rename apps/{authenticator/src/lib => web/src}/requests/prove.ts (94%) rename apps/{authenticator => web}/src/styles/app.css (100%) create mode 100644 apps/web/src/vite-env.d.ts rename apps/{authenticator => web}/src/walkthrough/hold-steady-progress.ts (100%) rename apps/{authenticator => web}/src/walkthrough/model-provenance.ts (100%) rename apps/{authenticator => web}/src/wallet/errors.ts (100%) rename apps/{authenticator => web}/src/wallet/flow-logging.ts (100%) rename apps/{authenticator => web}/src/wallet/legacy-passkey-secrets.ts (100%) rename apps/{authenticator => web}/src/wallet/legacy-profile.ts (100%) rename apps/{authenticator => web}/src/wallet/persistence.ts (100%) rename apps/{authenticator => web}/src/wallet/prf-result.ts (100%) rename apps/{authenticator => web}/src/wallet/registration.ts (100%) rename apps/{authenticator => web}/src/wallet/session.ts (100%) rename apps/{authenticator => web}/test/app.test.tsx (99%) create mode 100644 apps/web/test/build-boundary.test.ts rename apps/{authenticator => web}/test/face-detector.test.ts (100%) rename apps/{authenticator => web}/test/fixtures/rgbnet-decode.json (100%) rename apps/{authenticator => web}/test/fixtures/rgbnet-resize.json (100%) rename apps/{authenticator => web}/test/hold-steady-progress.test.ts (100%) rename apps/{authenticator => web}/test/legacy-profile.test.ts (100%) rename apps/{authenticator => web}/test/prf-result.test.ts (100%) rename apps/{authenticator => web}/test/registration.test.ts (100%) rename apps/{authenticator => web}/test/requests.test.ts (94%) rename apps/{authenticator => web}/test/rgbnet.test.ts (100%) rename apps/{authenticator => web}/test/selfie-routing.test.ts (99%) rename apps/{authenticator => web}/test/wallet-session.test.ts (100%) rename apps/{authenticator => web}/test/walletkit.test.ts (100%) create mode 100644 apps/web/tsconfig.json rename vite.config.ts => apps/web/vite.config.ts (50%) delete mode 100644 config/README.md delete mode 100644 tsconfig.client.json diff --git a/.gitignore b/.gitignore index 0957063..bfc34d0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ node_modules/ -apps/authenticator/dist/ -apps/authenticator/dist-server/ -apps/authenticator/dist-static/ +apps/*/dist/ +apps/*/dist-server/ +apps/*/dist-static/ .artifacts/ .runtime/ playwright-report/ @@ -16,11 +16,8 @@ coverage/ .vercel/ .wrangler/ -services/staging-issuance/face-enrollment-helper/target/ -services/staging-issuance/face-enrollment-helper/cache/ -services/staging-issuance/face-enrollment-helper/assets/ -apps/authenticator/public/models/rgbnet.onnx +apps/web/public/models/rgbnet.onnx .next/ demo/ diff --git a/README.md b/README.md index b7d365a..42f2fcc 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,11 @@ Selfie credentials. Selfie enrollment, user presence and recovery are not yet im Built with React, TypeScript and Vite, served by Bun. WalletKit handles account registration, encrypted storage and proof generation; viem reads the RP registry. -ONNX Runtime Web runs RGBNet for local camera positioning. Dependencies are pinned -in [package.json](package.json). +ONNX Runtime Web runs RGBNet for local camera positioning. Dependencies are pinned in each app’s `package.json`. -The app lives in [apps/authenticator](apps/authenticator): `src/` contains the -React UI, browser wallet and proof flows; `src/server/` contains the Bun HTTP -server and RP registry lookup. Both ship together, with separate browser and -server builds. +The browser app lives in [apps/web](apps/web), and the Bun server lives in +[apps/api](apps/api). They have separate dependencies and builds, and ship together +from one origin. [CI](.github/workflows/ci.yml) runs checks and builds; automatic Vercel deployments are disabled in [vercel.json](vercel.json). Standalone demos live in `experiments/` and are excluded from the app build. @@ -34,8 +32,8 @@ server. Use a browser and passkey provider with WebAuthn PRF support. The server binds to `127.0.0.1`. Override it with `AUTHENTICATOR_HOST`, or change the port with `PORT=3100 bun run dev` (`AUTHENTICATOR_PORT` is also supported). -See [server settings](config/authenticator-app-v0.ts) for security headers and -[the server entry point](apps/authenticator/src/server/main.ts) for request limits. +See [server settings](apps/api/src/config.ts) for security headers and +[the server entry point](apps/api/src/main.ts) for request limits. To run a built version, use `bun run build` followed by `bun run start`. Hosting outside localhost requires HTTPS for passkeys and camera access. @@ -52,7 +50,7 @@ curl -i 'http://localhost:4173/api/staging-rp?id=invalid' # Expected: 400 ``` Registration, vault access and proof generation run in the browser through -WalletKit. The [HTTP handlers](apps/authenticator/src/server/http.server.ts) +WalletKit. The [HTTP handlers](apps/api/src/http.ts) define the server routes. ### Trying a request diff --git a/apps/api/README.md b/apps/api/README.md new file mode 100644 index 0000000..a3edc90 --- /dev/null +++ b/apps/api/README.md @@ -0,0 +1,35 @@ +# Authenticator API + +Bun serves the web build and `/api/staging-rp` from the same origin. The RP lookup +reads the staging registry; passkeys, WalletKit and proof generation run in the +browser. Promon sessions and Redis are not implemented yet. + +Run `bun run dev` from the repo root to watch both apps. For the compiled app, +run `bun run build` followed by `bun run start`. + +## Configuration + +[`src/config.ts`](src/config.ts) reads the listener settings and defines response +security headers. `AUTHENTICATOR_HOST` defaults to `127.0.0.1`; `PORT` defaults to +`4173` (`AUTHENTICATOR_PORT` is also accepted). Invalid ports fail startup. + +The CSP allows the official World ID bridges and WalletKit's staging endpoints. +Review it when changing SDK versions or network destinations. Server configuration +and credentials must never be imported by `apps/web`. + +## Container + +From the repo root: + +```sh +docker build -t web-authenticator . +docker run --rm -p 127.0.0.1:4173:4173 web-authenticator +``` + +The image runs as a non-root user and contains the compiled API and web assets. +It listens on `0.0.0.0:4173` inside the container. Hosting beyond localhost requires +HTTPS for camera and passkey access. Install the [RGBNet model](../../docs/rgbnet-browser.md) +before building if camera guidance is needed. + +This packages the app; AWS hosting, Redis and secrets belong in deployment +configuration and are not provisioned by this Dockerfile. diff --git a/apps/api/package.json b/apps/api/package.json new file mode 100644 index 0000000..d1c1a4a --- /dev/null +++ b/apps/api/package.json @@ -0,0 +1,19 @@ +{ + "name": "@web-authenticator/api", + "private": true, + "type": "module", + "scripts": { + "build": "bun build src/main.ts --target=bun --outdir dist", + "dev": "bun --watch src/main.ts", + "start": "bun dist/main.js", + "test": "bun test ./test", + "typecheck": "tsc -p tsconfig.json --noEmit" + }, + "dependencies": { + "viem": "2.56.0" + }, + "devDependencies": { + "@types/bun": "1.3.11", + "@types/node": "20.19.25" + } +} diff --git a/config/authenticator-app-v0.ts b/apps/api/src/config.ts similarity index 100% rename from config/authenticator-app-v0.ts rename to apps/api/src/config.ts diff --git a/apps/authenticator/src/server/http.server.ts b/apps/api/src/http.ts similarity index 92% rename from apps/authenticator/src/server/http.server.ts rename to apps/api/src/http.ts index e8627b1..8fe8650 100644 --- a/apps/authenticator/src/server/http.server.ts +++ b/apps/api/src/http.ts @@ -1,8 +1,9 @@ import { resolve, relative, sep } from "node:path"; -import { AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "../../../../config/authenticator-app-v0"; -import { GET as lookupRp } from "./staging-rp.server"; +import { fileURLToPath } from "node:url"; +import { AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "./config"; +import { GET as lookupRp } from "./routes/staging-rp"; -const DEFAULT_STATIC_ROOT = resolve(process.cwd(), "apps/authenticator/dist"); +const DEFAULT_STATIC_ROOT = fileURLToPath(new URL("../../web/dist/", import.meta.url)); function headers(contentType?: string): Headers { const result = new Headers(AUTHENTICATOR_APP_SECURITY_HEADERS_V0); if (contentType !== undefined) result.set("Content-Type", contentType); diff --git a/apps/authenticator/src/server/main.ts b/apps/api/src/main.ts similarity index 56% rename from apps/authenticator/src/server/main.ts rename to apps/api/src/main.ts index fec24e1..8962a81 100644 --- a/apps/authenticator/src/server/main.ts +++ b/apps/api/src/main.ts @@ -1,5 +1,5 @@ -import { AUTHENTICATOR_APP_CONFIG } from "../../../../config/authenticator-app-v0"; -import { createAuthenticatorHttpHandler } from "./http.server"; +import { AUTHENTICATOR_APP_CONFIG } from "./config"; +import { createAuthenticatorHttpHandler } from "./http"; Bun.serve({ hostname: AUTHENTICATOR_APP_CONFIG.host, diff --git a/apps/authenticator/src/server/staging-rp.server.ts b/apps/api/src/routes/staging-rp.ts similarity index 100% rename from apps/authenticator/src/server/staging-rp.server.ts rename to apps/api/src/routes/staging-rp.ts diff --git a/apps/authenticator/test/http-server.test.ts b/apps/api/test/http-server.test.ts similarity index 58% rename from apps/authenticator/test/http-server.test.ts rename to apps/api/test/http-server.test.ts index b25ff1d..868197e 100644 --- a/apps/authenticator/test/http-server.test.ts +++ b/apps/api/test/http-server.test.ts @@ -1,11 +1,34 @@ import { expect, test } from "bun:test"; -import { createAuthenticatorHttpHandler } from "../src/server/http.server"; -import { AUTHENTICATOR_APP_CONFIG, AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "../../../config/authenticator-app-v0"; +import { mkdtemp, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { createAuthenticatorHttpHandler } from "../src/http"; +import { AUTHENTICATOR_APP_CONFIG, AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "../src/config"; const handler = createAuthenticatorHttpHandler(); const origin = `http://localhost:${AUTHENTICATOR_APP_CONFIG.port}`; const post = (body: unknown, headerOrigin = origin, pathOrigin = origin) => handler(new Request(`${pathOrigin}/api/selfie-credential`, { method: "POST", headers: { origin: headerOrigin, "content-type": "application/json" }, body: JSON.stringify(body), })); +test("serves web assets and HEAD responses with security headers", async () => { + const staticRoot = await mkdtemp(join(tmpdir(), "authenticator-assets-")); + try { + await writeFile(join(staticRoot, "index.html"), "

      Authenticator

      "); + await writeFile(join(staticRoot, "app.js"), "export const ready = true;"); + const serve = createAuthenticatorHttpHandler({ staticRoot }); + const page = await serve(new Request(origin)); + expect(page.status).toBe(200); + expect(page.headers.get("content-type")).toBe("text/html; charset=utf-8"); + expect(await page.text()).toContain("Authenticator"); + const head = await serve(new Request(origin + "/app.js", { method: "HEAD" })); + expect(head.status).toBe(200); + expect(head.headers.get("content-type")).toBe("text/javascript; charset=utf-8"); + expect(head.headers.get("x-content-type-options")).toBe("nosniff"); + expect(await head.text()).toBe(""); + expect((await serve(new Request(origin + "/missing.js"))).status).toBe(404); + } finally { + await rm(staticRoot, { recursive: true, force: true }); + } +}); test("embedded demo routes and simulated endpoints are gone", async () => { for (const path of ["/demo", "/returned", "/api/v0/bootstrap", "/api/v0/session/create"]) { expect((await handler(new Request(origin + path))).status).toBe(404); diff --git a/tsconfig.server.json b/apps/api/tsconfig.json similarity index 60% rename from tsconfig.server.json rename to apps/api/tsconfig.json index 3d650a2..0f0041a 100644 --- a/tsconfig.server.json +++ b/apps/api/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "./tsconfig.json", + "extends": "../../tsconfig.json", "compilerOptions": { "lib": [ "ES2022", @@ -11,7 +11,6 @@ ] }, "include": [ - "apps/authenticator/src/server/**/*.ts", - "config/**/*.ts" + "src/**/*.ts" ] } diff --git a/apps/authenticator/index.html b/apps/web/index.html similarity index 100% rename from apps/authenticator/index.html rename to apps/web/index.html diff --git a/apps/web/package.json b/apps/web/package.json new file mode 100644 index 0000000..c3b1519 --- /dev/null +++ b/apps/web/package.json @@ -0,0 +1,24 @@ +{ + "name": "@web-authenticator/web", + "private": true, + "type": "module", + "scripts": { + "build": "vite build", + "dev": "vite build --watch", + "test": "bun test ./test", + "typecheck": "tsc -p tsconfig.json --noEmit" + }, + "dependencies": { + "onnxruntime-web": "1.30.0", + "react": "19.2.8", + "react-dom": "19.2.8", + "@worldcoin/walletkit-web": "0.27.1", + "viem": "2.56.0" + }, + "devDependencies": { + "@types/react": "19.2.18", + "@types/react-dom": "19.2.5", + "@vitejs/plugin-react": "6.1.1", + "vite": "8.2.2" + } +} diff --git a/apps/authenticator/public/assets/figma/capture-check.svg b/apps/web/public/assets/figma/capture-check.svg similarity index 100% rename from apps/authenticator/public/assets/figma/capture-check.svg rename to apps/web/public/assets/figma/capture-check.svg diff --git a/apps/authenticator/public/assets/figma/capture-ring-complete.svg b/apps/web/public/assets/figma/capture-ring-complete.svg similarity index 100% rename from apps/authenticator/public/assets/figma/capture-ring-complete.svg rename to apps/web/public/assets/figma/capture-ring-complete.svg diff --git a/apps/authenticator/public/assets/figma/capture-ring-ready.svg b/apps/web/public/assets/figma/capture-ring-ready.svg similarity index 100% rename from apps/authenticator/public/assets/figma/capture-ring-ready.svg rename to apps/web/public/assets/figma/capture-ring-ready.svg diff --git a/apps/authenticator/public/assets/figma/capture-ring-sampling.svg b/apps/web/public/assets/figma/capture-ring-sampling.svg similarity index 100% rename from apps/authenticator/public/assets/figma/capture-ring-sampling.svg rename to apps/web/public/assets/figma/capture-ring-sampling.svg diff --git a/apps/authenticator/public/assets/figma/close.svg b/apps/web/public/assets/figma/close.svg similarity index 100% rename from apps/authenticator/public/assets/figma/close.svg rename to apps/web/public/assets/figma/close.svg diff --git a/apps/authenticator/public/assets/figma/disclosure-check.svg b/apps/web/public/assets/figma/disclosure-check.svg similarity index 100% rename from apps/authenticator/public/assets/figma/disclosure-check.svg rename to apps/web/public/assets/figma/disclosure-check.svg diff --git a/apps/authenticator/public/assets/figma/disclosure-x.svg b/apps/web/public/assets/figma/disclosure-x.svg similarity index 100% rename from apps/authenticator/public/assets/figma/disclosure-x.svg rename to apps/web/public/assets/figma/disclosure-x.svg diff --git a/apps/authenticator/public/assets/figma/human-emblem.svg b/apps/web/public/assets/figma/human-emblem.svg similarity index 100% rename from apps/authenticator/public/assets/figma/human-emblem.svg rename to apps/web/public/assets/figma/human-emblem.svg diff --git a/apps/authenticator/public/assets/figma/person-circle.svg b/apps/web/public/assets/figma/person-circle.svg similarity index 100% rename from apps/authenticator/public/assets/figma/person-circle.svg rename to apps/web/public/assets/figma/person-circle.svg diff --git a/apps/authenticator/public/assets/figma/person-key-blue.svg b/apps/web/public/assets/figma/person-key-blue.svg similarity index 100% rename from apps/authenticator/public/assets/figma/person-key-blue.svg rename to apps/web/public/assets/figma/person-key-blue.svg diff --git a/apps/authenticator/public/assets/figma/person-key-disabled.svg b/apps/web/public/assets/figma/person-key-disabled.svg similarity index 100% rename from apps/authenticator/public/assets/figma/person-key-disabled.svg rename to apps/web/public/assets/figma/person-key-disabled.svg diff --git a/apps/authenticator/public/assets/figma/person-key.svg b/apps/web/public/assets/figma/person-key.svg similarity index 100% rename from apps/authenticator/public/assets/figma/person-key.svg rename to apps/web/public/assets/figma/person-key.svg diff --git a/apps/authenticator/public/assets/figma/selfie-emblem.svg b/apps/web/public/assets/figma/selfie-emblem.svg similarity index 100% rename from apps/authenticator/public/assets/figma/selfie-emblem.svg rename to apps/web/public/assets/figma/selfie-emblem.svg diff --git a/apps/authenticator/public/assets/figma/simulation-progress.svg b/apps/web/public/assets/figma/simulation-progress.svg similarity index 100% rename from apps/authenticator/public/assets/figma/simulation-progress.svg rename to apps/web/public/assets/figma/simulation-progress.svg diff --git a/apps/authenticator/public/assets/figma/success-emblem.svg b/apps/web/public/assets/figma/success-emblem.svg similarity index 100% rename from apps/authenticator/public/assets/figma/success-emblem.svg rename to apps/web/public/assets/figma/success-emblem.svg diff --git a/apps/authenticator/public/assets/figma/verification-complete.svg b/apps/web/public/assets/figma/verification-complete.svg similarity index 100% rename from apps/authenticator/public/assets/figma/verification-complete.svg rename to apps/web/public/assets/figma/verification-complete.svg diff --git a/apps/authenticator/src/App.tsx b/apps/web/src/App.tsx similarity index 98% rename from apps/authenticator/src/App.tsx rename to apps/web/src/App.tsx index 915beac..41abceb 100644 --- a/apps/authenticator/src/App.tsx +++ b/apps/web/src/App.tsx @@ -5,9 +5,9 @@ import { openAuthenticator } from "./wallet/session"; import { walletOpenErrorMessage } from "./wallet/errors"; import { abortable } from "./lib/async"; import type { WalletKit, CredentialMetadata } from "./lib/walletkit"; -import { loadIncomingRequest, type IncomingRequest } from "./lib/requests/incoming-request"; -import { credentialAvailability, credentialRequirementsLabel } from "./lib/requests/proof-request"; -import { createProof } from "./lib/requests/prove"; +import { loadIncomingRequest, type IncomingRequest } from "./requests/incoming-request"; +import { credentialAvailability, credentialRequirementsLabel } from "./requests/proof-request"; +import { createProof } from "./requests/prove"; const defaults = { open: openAuthenticator, load: loadIncomingRequest, prove: createProof }; type Screen = "review" | "enroll" | "delivery" | "done" | "cancelled"; diff --git a/apps/authenticator/src/assets/capture-oval-geometry.ts b/apps/web/src/assets/capture-oval-geometry.ts similarity index 100% rename from apps/authenticator/src/assets/capture-oval-geometry.ts rename to apps/web/src/assets/capture-oval-geometry.ts diff --git a/apps/authenticator/src/assets/provenance.ts b/apps/web/src/assets/provenance.ts similarity index 100% rename from apps/authenticator/src/assets/provenance.ts rename to apps/web/src/assets/provenance.ts diff --git a/apps/authenticator/src/components/CameraPreview.tsx b/apps/web/src/components/CameraPreview.tsx similarity index 100% rename from apps/authenticator/src/components/CameraPreview.tsx rename to apps/web/src/components/CameraPreview.tsx diff --git a/apps/authenticator/src/components/DeveloperPanel.tsx b/apps/web/src/components/DeveloperPanel.tsx similarity index 97% rename from apps/authenticator/src/components/DeveloperPanel.tsx rename to apps/web/src/components/DeveloperPanel.tsx index 3b2c7ad..645381b 100644 --- a/apps/authenticator/src/components/DeveloperPanel.tsx +++ b/apps/web/src/components/DeveloperPanel.tsx @@ -1,7 +1,7 @@ import { useState } from "react"; import type { CredentialMetadata } from "../lib/walletkit"; -import type { IncomingRequest } from "../lib/requests/incoming-request"; -import { credentialRequirementsLabel } from "../lib/requests/proof-request"; +import type { IncomingRequest } from "../requests/incoming-request"; +import { credentialRequirementsLabel } from "../requests/proof-request"; import { LIVE_GUIDANCE_MODEL_V1 } from "../walkthrough/model-provenance"; function credentialDescription(schema: bigint) { diff --git a/apps/authenticator/src/face/face-detector.ts b/apps/web/src/face/face-detector.ts similarity index 100% rename from apps/authenticator/src/face/face-detector.ts rename to apps/web/src/face/face-detector.ts diff --git a/apps/authenticator/src/face/rgbnet-model.json b/apps/web/src/face/rgbnet-model.json similarity index 100% rename from apps/authenticator/src/face/rgbnet-model.json rename to apps/web/src/face/rgbnet-model.json diff --git a/apps/authenticator/src/face/rgbnet.ts b/apps/web/src/face/rgbnet.ts similarity index 100% rename from apps/authenticator/src/face/rgbnet.ts rename to apps/web/src/face/rgbnet.ts diff --git a/apps/authenticator/src/face/rgbnet.worker.ts b/apps/web/src/face/rgbnet.worker.ts similarity index 100% rename from apps/authenticator/src/face/rgbnet.worker.ts rename to apps/web/src/face/rgbnet.worker.ts diff --git a/apps/authenticator/src/lib/async.ts b/apps/web/src/lib/async.ts similarity index 100% rename from apps/authenticator/src/lib/async.ts rename to apps/web/src/lib/async.ts diff --git a/apps/authenticator/src/lib/walletkit.ts b/apps/web/src/lib/walletkit.ts similarity index 100% rename from apps/authenticator/src/lib/walletkit.ts rename to apps/web/src/lib/walletkit.ts diff --git a/apps/authenticator/src/main.tsx b/apps/web/src/main.tsx similarity index 100% rename from apps/authenticator/src/main.tsx rename to apps/web/src/main.tsx diff --git a/apps/authenticator/src/lib/requests/bridge.ts b/apps/web/src/requests/bridge.ts similarity index 100% rename from apps/authenticator/src/lib/requests/bridge.ts rename to apps/web/src/requests/bridge.ts diff --git a/apps/authenticator/src/lib/requests/connector.ts b/apps/web/src/requests/connector.ts similarity index 100% rename from apps/authenticator/src/lib/requests/connector.ts rename to apps/web/src/requests/connector.ts diff --git a/apps/authenticator/src/lib/requests/incoming-request.ts b/apps/web/src/requests/incoming-request.ts similarity index 96% rename from apps/authenticator/src/lib/requests/incoming-request.ts rename to apps/web/src/requests/incoming-request.ts index b41f368..1040dd2 100644 --- a/apps/authenticator/src/lib/requests/incoming-request.ts +++ b/apps/web/src/requests/incoming-request.ts @@ -1,6 +1,6 @@ import { openBridge } from './bridge' -import type { WalletKit } from '../walletkit' -import { abortable } from '../async' +import type { WalletKit } from '../lib/walletkit' +import { abortable } from '../lib/async' import { parseConnector, returnUrl } from './connector' import { credentialAvailability, diff --git a/apps/authenticator/src/lib/requests/proof-request.ts b/apps/web/src/requests/proof-request.ts similarity index 99% rename from apps/authenticator/src/lib/requests/proof-request.ts rename to apps/web/src/requests/proof-request.ts index 392f8aa..7ae051f 100644 --- a/apps/authenticator/src/lib/requests/proof-request.ts +++ b/apps/web/src/requests/proof-request.ts @@ -1,4 +1,4 @@ -import type { CredentialMetadata } from '../walletkit' +import type { CredentialMetadata } from '../lib/walletkit' import { hexToBytes, keccak256, stringToHex, verifyMessage, type Hex } from 'viem' export type Requirement = { diff --git a/apps/authenticator/src/lib/requests/prove.ts b/apps/web/src/requests/prove.ts similarity index 94% rename from apps/authenticator/src/lib/requests/prove.ts rename to apps/web/src/requests/prove.ts index d1230d9..9eb5c11 100644 --- a/apps/authenticator/src/lib/requests/prove.ts +++ b/apps/web/src/requests/prove.ts @@ -1,5 +1,5 @@ -import { abortable } from "../async"; -import type { WalletKit } from "../walletkit"; +import { abortable } from "../lib/async"; +import type { WalletKit } from "../lib/walletkit"; import { checkRequestCredentials, type IncomingRequest } from "./incoming-request"; import { checkExpiry } from "./proof-request"; diff --git a/apps/authenticator/src/styles/app.css b/apps/web/src/styles/app.css similarity index 100% rename from apps/authenticator/src/styles/app.css rename to apps/web/src/styles/app.css diff --git a/apps/web/src/vite-env.d.ts b/apps/web/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/apps/web/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/apps/authenticator/src/walkthrough/hold-steady-progress.ts b/apps/web/src/walkthrough/hold-steady-progress.ts similarity index 100% rename from apps/authenticator/src/walkthrough/hold-steady-progress.ts rename to apps/web/src/walkthrough/hold-steady-progress.ts diff --git a/apps/authenticator/src/walkthrough/model-provenance.ts b/apps/web/src/walkthrough/model-provenance.ts similarity index 100% rename from apps/authenticator/src/walkthrough/model-provenance.ts rename to apps/web/src/walkthrough/model-provenance.ts diff --git a/apps/authenticator/src/wallet/errors.ts b/apps/web/src/wallet/errors.ts similarity index 100% rename from apps/authenticator/src/wallet/errors.ts rename to apps/web/src/wallet/errors.ts diff --git a/apps/authenticator/src/wallet/flow-logging.ts b/apps/web/src/wallet/flow-logging.ts similarity index 100% rename from apps/authenticator/src/wallet/flow-logging.ts rename to apps/web/src/wallet/flow-logging.ts diff --git a/apps/authenticator/src/wallet/legacy-passkey-secrets.ts b/apps/web/src/wallet/legacy-passkey-secrets.ts similarity index 100% rename from apps/authenticator/src/wallet/legacy-passkey-secrets.ts rename to apps/web/src/wallet/legacy-passkey-secrets.ts diff --git a/apps/authenticator/src/wallet/legacy-profile.ts b/apps/web/src/wallet/legacy-profile.ts similarity index 100% rename from apps/authenticator/src/wallet/legacy-profile.ts rename to apps/web/src/wallet/legacy-profile.ts diff --git a/apps/authenticator/src/wallet/persistence.ts b/apps/web/src/wallet/persistence.ts similarity index 100% rename from apps/authenticator/src/wallet/persistence.ts rename to apps/web/src/wallet/persistence.ts diff --git a/apps/authenticator/src/wallet/prf-result.ts b/apps/web/src/wallet/prf-result.ts similarity index 100% rename from apps/authenticator/src/wallet/prf-result.ts rename to apps/web/src/wallet/prf-result.ts diff --git a/apps/authenticator/src/wallet/registration.ts b/apps/web/src/wallet/registration.ts similarity index 100% rename from apps/authenticator/src/wallet/registration.ts rename to apps/web/src/wallet/registration.ts diff --git a/apps/authenticator/src/wallet/session.ts b/apps/web/src/wallet/session.ts similarity index 100% rename from apps/authenticator/src/wallet/session.ts rename to apps/web/src/wallet/session.ts diff --git a/apps/authenticator/test/app.test.tsx b/apps/web/test/app.test.tsx similarity index 99% rename from apps/authenticator/test/app.test.tsx rename to apps/web/test/app.test.tsx index 6540366..effda1b 100644 --- a/apps/authenticator/test/app.test.tsx +++ b/apps/web/test/app.test.tsx @@ -4,7 +4,7 @@ import { cleanup, fireEvent, render, waitFor } from "@testing-library/react"; import { CameraPreview } from "../src/components/CameraPreview"; import { AuthenticatorAppV1 } from "../src/App"; import { signedRequest } from "../../../tests/integration/fixtures/request"; -import type { IncomingRequest } from "../src/lib/requests/incoming-request"; +import type { IncomingRequest } from "../src/requests/incoming-request"; import type { WalletKit, CredentialMetadata } from "../src/lib/walletkit"; import type { DetectorResponse } from "../src/face/rgbnet.worker"; diff --git a/apps/web/test/build-boundary.test.ts b/apps/web/test/build-boundary.test.ts new file mode 100644 index 0000000..d69a38a --- /dev/null +++ b/apps/web/test/build-boundary.test.ts @@ -0,0 +1,33 @@ +import { afterEach, expect, test } from "bun:test"; +import { mkdtemp, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { resolve } from "node:path"; +import { build } from "vite"; + +const temporaryDirectories: string[] = []; +afterEach(async () => { + await Promise.all(temporaryDirectories.splice(0).map(path => rm(path, { recursive: true, force: true }))); +}); + +for (const mode of ["static", "dynamic", "worker"] as const) { + test(`browser build rejects API code through a ${mode} import`, async () => { + const directory = await mkdtemp(resolve(tmpdir(), "authenticator-boundary-")); + temporaryDirectories.push(directory); + const entry = resolve(directory, "entry.js"); + const apiConfig = resolve(import.meta.dir, "../../api/src/config.ts"); + if (mode === "worker") { + await writeFile(resolve(directory, "worker.js"), `import ${JSON.stringify(apiConfig)};`); + await writeFile(entry, 'new Worker(new URL("./worker.js", import.meta.url), { type: "module" });'); + } else { + await writeFile(entry, mode === "static" + ? `import ${JSON.stringify(apiConfig)};` + : `import(${JSON.stringify(apiConfig)});`); + } + await expect(build({ + configFile: resolve(import.meta.dir, "../vite.config.ts"), + publicDir: false, + logLevel: "silent", + build: { write: false, rollupOptions: { input: entry } }, + })).rejects.toThrow("Browser builds cannot import API, experiment, or test modules"); + }); +} diff --git a/apps/authenticator/test/face-detector.test.ts b/apps/web/test/face-detector.test.ts similarity index 100% rename from apps/authenticator/test/face-detector.test.ts rename to apps/web/test/face-detector.test.ts diff --git a/apps/authenticator/test/fixtures/rgbnet-decode.json b/apps/web/test/fixtures/rgbnet-decode.json similarity index 100% rename from apps/authenticator/test/fixtures/rgbnet-decode.json rename to apps/web/test/fixtures/rgbnet-decode.json diff --git a/apps/authenticator/test/fixtures/rgbnet-resize.json b/apps/web/test/fixtures/rgbnet-resize.json similarity index 100% rename from apps/authenticator/test/fixtures/rgbnet-resize.json rename to apps/web/test/fixtures/rgbnet-resize.json diff --git a/apps/authenticator/test/hold-steady-progress.test.ts b/apps/web/test/hold-steady-progress.test.ts similarity index 100% rename from apps/authenticator/test/hold-steady-progress.test.ts rename to apps/web/test/hold-steady-progress.test.ts diff --git a/apps/authenticator/test/legacy-profile.test.ts b/apps/web/test/legacy-profile.test.ts similarity index 100% rename from apps/authenticator/test/legacy-profile.test.ts rename to apps/web/test/legacy-profile.test.ts diff --git a/apps/authenticator/test/prf-result.test.ts b/apps/web/test/prf-result.test.ts similarity index 100% rename from apps/authenticator/test/prf-result.test.ts rename to apps/web/test/prf-result.test.ts diff --git a/apps/authenticator/test/registration.test.ts b/apps/web/test/registration.test.ts similarity index 100% rename from apps/authenticator/test/registration.test.ts rename to apps/web/test/registration.test.ts diff --git a/apps/authenticator/test/requests.test.ts b/apps/web/test/requests.test.ts similarity index 94% rename from apps/authenticator/test/requests.test.ts rename to apps/web/test/requests.test.ts index f111b9f..a5d9948 100644 --- a/apps/authenticator/test/requests.test.ts +++ b/apps/web/test/requests.test.ts @@ -1,9 +1,9 @@ import { afterEach, expect, spyOn, test } from "bun:test"; import { signedRequest, encryptedRequest } from "../../../tests/integration/fixtures/request"; -import { loadIncomingRequest } from "../src/lib/requests/incoming-request"; -import { parseConnector, returnUrl } from "../src/lib/requests/connector"; -import { parsePayload } from "../src/lib/requests/proof-request"; -import { createProof } from "../src/lib/requests/prove"; +import { loadIncomingRequest } from "../src/requests/incoming-request"; +import { parseConnector, returnUrl } from "../src/requests/connector"; +import { parsePayload } from "../src/requests/proof-request"; +import { createProof } from "../src/requests/prove"; import type { WalletKit } from "../src/lib/walletkit"; let restore: (() => void) | undefined; diff --git a/apps/authenticator/test/rgbnet.test.ts b/apps/web/test/rgbnet.test.ts similarity index 100% rename from apps/authenticator/test/rgbnet.test.ts rename to apps/web/test/rgbnet.test.ts diff --git a/apps/authenticator/test/selfie-routing.test.ts b/apps/web/test/selfie-routing.test.ts similarity index 99% rename from apps/authenticator/test/selfie-routing.test.ts rename to apps/web/test/selfie-routing.test.ts index fdb98ee..e7141dc 100644 --- a/apps/authenticator/test/selfie-routing.test.ts +++ b/apps/web/test/selfie-routing.test.ts @@ -6,7 +6,7 @@ import { credentialRequirementsLabel, type ProofRequest, type Constraint, -} from '../src/lib/requests/proof-request' +} from '../src/requests/proof-request' const request = (constraints?: Constraint): ProofRequest => ({ id: 'test', diff --git a/apps/authenticator/test/wallet-session.test.ts b/apps/web/test/wallet-session.test.ts similarity index 100% rename from apps/authenticator/test/wallet-session.test.ts rename to apps/web/test/wallet-session.test.ts diff --git a/apps/authenticator/test/walletkit.test.ts b/apps/web/test/walletkit.test.ts similarity index 100% rename from apps/authenticator/test/walletkit.test.ts rename to apps/web/test/walletkit.test.ts diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json new file mode 100644 index 0000000..7287f61 --- /dev/null +++ b/apps/web/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "lib": [ + "DOM", + "DOM.Iterable", + "ES2022" + ], + "types": [ + "vite/client" + ] + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx" + ] +} diff --git a/vite.config.ts b/apps/web/vite.config.ts similarity index 50% rename from vite.config.ts rename to apps/web/vite.config.ts index 53ad8d4..4c04ea9 100644 --- a/vite.config.ts +++ b/apps/web/vite.config.ts @@ -2,32 +2,30 @@ import react from "@vitejs/plugin-react"; import { defineConfig, type Plugin } from "vite"; import { fileURLToPath, URL } from "node:url"; -const cleanRoot = fileURLToPath(new URL(".", import.meta.url)); -const appRoot = fileURLToPath(new URL("./apps/authenticator", import.meta.url)); +const repositoryRoot = fileURLToPath(new URL("../../", import.meta.url)); +const appRoot = fileURLToPath(new URL("./", import.meta.url)); function path(relativePath: string): string { - return fileURLToPath(new URL(relativePath, import.meta.url)); + return fileURLToPath(new URL(relativePath, new URL("../../", import.meta.url))); } function rejectServerModulesFromBrowser(): Plugin { const forbidden = [ - path("./apps/authenticator/src/server/"), - path("./services/"), + path("./apps/api/"), path("./experiments/"), path("./tests/"), - path("./packages/biometric-verification-port/"), - path("./packages/staging-issuance-port/"), ]; return { - name: "clean-start-browser-server-boundary", + name: "browser-server-boundary", enforce: "pre", load(id) { const normalized = id.split("?")[0] ?? id; if ( forbidden.some((prefix) => normalized.startsWith(prefix)) || - /(?:^|\/)apps\/authenticator\/src\/.*\.server\.[cm]?[jt]sx?$/.test(normalized) + (!normalized.includes("/node_modules/") && normalized.startsWith(repositoryRoot) && + /(?:\.server\.[cm]?[jt]sx?$|\/(?:test|fixtures)\/)/.test(normalized)) ) { - throw new Error("Server-only clean-start module entered the browser graph"); + throw new Error(`Browser builds cannot import API, experiment, or test modules: ${normalized}`); } return null; }, @@ -38,21 +36,16 @@ export default defineConfig({ root: appRoot, plugins: [rejectServerModulesFromBrowser(), react()], publicDir: "public", - worker: { format: "es" }, - resolve: { - alias: { - "@clean-start/browser-admission": path("./packages/browser-admission/src/index.ts"), - }, - }, + worker: { format: "es", plugins: () => [rejectServerModulesFromBrowser()] }, server: { host: "127.0.0.1", port: 4173, strictPort: true, - fs: { allow: [cleanRoot] }, + fs: { allow: [repositoryRoot] }, }, build: { target: "es2022", - outDir: path("./apps/authenticator/dist"), + outDir: path("./apps/web/dist"), emptyOutDir: true, sourcemap: false, }, diff --git a/bun.lock b/bun.lock index 307d9c4..20c57fa 100644 --- a/bun.lock +++ b/bun.lock @@ -3,15 +3,7 @@ "configVersion": 1, "workspaces": { "": { - "name": "@world-id/web-authenticator-clean-start", - "dependencies": { - "@worldcoin/walletkit-web": "0.27.1", - "lossless-json": "4.3.1", - "onnxruntime-web": "1.30.0", - "react": "19.2.8", - "react-dom": "19.2.8", - "viem": "2.56.0", - }, + "name": "@worldcoin/web-authenticator", "devDependencies": { "@eslint/js": "9.39.4", "@happy-dom/global-registrator": "20.13.2", @@ -21,9 +13,6 @@ "@testing-library/user-event": "14.6.7", "@types/bun": "1.3.11", "@types/node": "20.19.25", - "@types/react": "19.2.18", - "@types/react-dom": "19.2.5", - "@vitejs/plugin-react": "6.1.1", "axe-core": "4.13.0", "concurrently": "9.2.1", "eslint": "9.39.4", @@ -32,6 +21,32 @@ "globals": "16.4.0", "typescript": "5.9.3", "typescript-eslint": "8.68.0", + "viem": "2.56.0", + }, + }, + "apps/api": { + "name": "@web-authenticator/api", + "dependencies": { + "viem": "2.56.0", + }, + "devDependencies": { + "@types/bun": "1.3.11", + "@types/node": "20.19.25", + }, + }, + "apps/web": { + "name": "@web-authenticator/web", + "dependencies": { + "@worldcoin/walletkit-web": "0.27.1", + "onnxruntime-web": "1.30.0", + "react": "19.2.8", + "react-dom": "19.2.8", + "viem": "2.56.0", + }, + "devDependencies": { + "@types/react": "19.2.18", + "@types/react-dom": "19.2.5", + "@vitejs/plugin-react": "6.1.1", "vite": "8.2.2", }, }, @@ -233,6 +248,10 @@ "@vitejs/plugin-react": ["@vitejs/plugin-react@6.1.1", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "oxc-transform-react": "^0.145.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler", "oxc-transform-react"] }, "sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw=="], + "@web-authenticator/api": ["@web-authenticator/api@workspace:apps/api"], + + "@web-authenticator/web": ["@web-authenticator/web@workspace:apps/web"], + "@world-id/web-authenticator-browser-admission": ["@world-id/web-authenticator-browser-admission@workspace:packages/browser-admission"], "@world-id/web-authenticator-contracts": ["@world-id/web-authenticator-contracts@workspace:packages/contracts"], @@ -575,8 +594,6 @@ "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="], - "lossless-json": ["lossless-json@4.3.1", "", {}, "sha512-SqD/Bg3ZfltBJ2Z14hJ/BihnvtV553WO4g9/ePtlp4lrnl9jF3AdIJt53A/Wkg/0Li+LMfxaBqgx1MiFZdQlpQ=="], - "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], "lz-string": ["lz-string@1.5.0", "", { "bin": { "lz-string": "bin/bin.js" } }, "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ=="], diff --git a/config/README.md b/config/README.md deleted file mode 100644 index 4c11441..0000000 --- a/config/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# Authenticator server configuration - -This directory currently belongs only to `apps/authenticator`. Its server entry -point reads the listener settings; its HTTP handler applies the security headers -to every response. It contains no wallet secrets, biometric data or demo fixtures. -Vite, ESLint and TypeScript configuration live at the repository root. Playwright -configuration lives in `tests/e2e/`. - -`AUTHENTICATOR_HOST` defaults to `127.0.0.1`; `PORT`/`AUTHENTICATOR_PORT` defaults -to 4173. Invalid ports fail startup. - -Security headers apply to all responses. The browser CSP permits only this origin, -the two official World ID bridges and WalletKit's US staging gateway/indexer/OPRF -endpoints. Staging addresses and the WalletKit version are pinned together; review -that allowlist when upgrading the SDK. These are real staging trust configuration, -not production configuration. - -There is no synthetic enrollment route or configuration switch in the product app. -The former `AUTHENTICATOR_PUBLIC_ORIGIN`, `AUTHENTICATOR_LOCAL_ORIGIN`, -`STAGING_FACE_HELPER` and `STAGING_SELFIE_STATE_DIR` settings are not used by it. diff --git a/docs/code-boundaries.md b/docs/code-boundaries.md index 13f610d..cd122a0 100644 --- a/docs/code-boundaries.md +++ b/docs/code-boundaries.md @@ -6,8 +6,8 @@ still incomplete. A file's location states its role, not its security approval. | Location | Role | Current status | | --- | --- | --- | -| `apps/authenticator/src` | Product browser app and server | Real staging registration, vault, bridge and proof flow; no Selfie enrollment | -| `config` | Reviewed runtime configuration | Staging network/trust destinations and security headers | +| `apps/web/src` | React UI, browser wallet, camera and proof requests | Real staging registration, vault, bridge and proof flow; no Selfie enrollment | +| `apps/api/src` | Bun server, routes and server configuration | Serves web assets and staging RP lookup; Promon and Redis are not implemented | | `packages` | Shared libraries and contracts | Per-package validation required; current admission policy/contracts are not wired into the app | | `tests` and `*/test` | Regression tests and fixtures | Mocks are test inputs, not live-service validation | | `experiments/tee-demo` | Preserved standalone demo | Synthetic enrollment, placeholder integrity, local TEE integration; never a product dependency | @@ -16,9 +16,11 @@ still incomplete. A file's location states its role, not its security approval. ## Enforced separation - Root tests use explicit directory paths, so Bun does not also select experiment tests by substring. -- Root build/start commands target only `apps/authenticator`; experiments are outside workspaces. +- `apps/web` and `apps/api` have separate dependencies, TypeScript configurations and builds. Bun serves both outputs from one origin. +- Root build/start commands target these two apps; experiments are outside workspaces. - ESLint rejects product imports from experiments and fixture directories. -- Vite rejects experiment/test modules entering the browser build, alongside server-only modules. +- ESLint rejects browser imports of API modules and server imports of browser implementation code. +- Vite rejects API, experiment and test modules in browser and worker builds, including dynamic imports. - HTTP regression tests require the removed synthetic enrollment/capability routes to return 404, including on localhost. - UI regression tests require missing Selfie credentials to leave proof approval unavailable, without offering synthetic issuance. @@ -28,6 +30,17 @@ environment flag. Existing vaults, operation files, resume tokens and backend records are not deleted. Previously issued staging credentials remain usable under the existing staging verification rules. +## Where new code belongs + +Promon validation, session storage and rate limiting belong in `apps/api/src`. +Browser integration belongs in `apps/web/src`. Add shared API schemas under +`packages` only when both apps need them; neither app currently depends on the +legacy admission/contracts packages. Those packages retain their own regression +coverage. The root package owns shared development tools and cross-app tests. + +One container contains both builds. Separate workspaces do not require separate +services. Deployment infrastructure belongs in the deployment repo. + ## Requirements before real enrollment can enter product code - Resolve a durable enrollment identity and its ownership proof separately from the WalletKit credential subject. diff --git a/docs/connector-bridge.md b/docs/connector-bridge.md index b27aaaa..4c1413f 100644 --- a/docs/connector-bridge.md +++ b/docs/connector-bridge.md @@ -4,7 +4,7 @@ The authenticator accepts World ID connector query parameters at `/`. Old `/verify` links redirect to `/`, preserving their connector parameters. This code is independent of the relying-party demo's request generation. -- `src/lib/requests/connector.ts`: strict `i`/`k` parsing, official bridge allowlist, +- `src/requests/connector.ts`: strict `i`/`k` parsing, official bridge allowlist, safe explicit return URLs. Only ordinary URL/QR links are supported, not invite codes. - `bridge.ts`: bounded fetch, browser-only AES-256-GCM decryption, fresh-IV encrypted response upload with PUT. The bridge key never goes to our server or browser storage. diff --git a/docs/production-gaps.md b/docs/production-gaps.md index 406317b..17e8253 100644 --- a/docs/production-gaps.md +++ b/docs/production-gaps.md @@ -79,7 +79,7 @@ question, not a claim that the current iOS selfie flow already sends that proof. Implementation references: [selfie enrollment](selfie-enrollment.md), [preserved enrollment adapter](../experiments/tee-demo/src/lib/selfie-issuer-server.ts), and -[current WalletKit adapter](../apps/authenticator/src/lib/walletkit.ts). +[current WalletKit adapter](../apps/web/src/lib/walletkit.ts). The RP verifier and replay ledger described above belong to the separate local playground under ignored `demo/`; their implementation is not included in this branch. diff --git a/docs/rgbnet-browser.md b/docs/rgbnet-browser.md index 082edf4..85d30c7 100644 --- a/docs/rgbnet-browser.md +++ b/docs/rgbnet-browser.md @@ -7,8 +7,7 @@ five landmarks; the UI uses boxes for face count, centering and distance, with t consecutive matching results before changing instructions. These are positioning heuristics, not identity, eye tracking, head-pose or liveness verification. -Camera guidance does not gate passkey setup, synthetic staging issuance or RP -proof generation. Camera frames are not sent to the server. TEE validation remains +Camera guidance does not gate passkey setup or RP proof generation. Camera frames are not sent to the server. TEE validation remains unconnected. A detector error leaves the camera preview available with an explicit error; close and reopen it to retry. @@ -20,7 +19,7 @@ bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx bun run dev ``` -The setup script installs `apps/authenticator/public/models/rgbnet.onnx` after +The setup script installs `apps/web/public/models/rgbnet.onnx` after checking its 1,720,022-byte size and SHA-256 against `src/face/rgbnet-model.json` inside the authenticator app. The worker repeats those checks before inference. Model weights are ignored by Git; install them before building a deployed preview. diff --git a/docs/selfie-flow-comparison.md b/docs/selfie-flow-comparison.md index 3ba82ac..56dce0d 100644 --- a/docs/selfie-flow-comparison.md +++ b/docs/selfie-flow-comparison.md @@ -16,7 +16,7 @@ outcomes, Mini Apps, or DeepFace challenge flow. No iOS build was run. flowchart TD RP["RP / IDKit creates request and deeplink"] Entry["src/main.tsx
      AuthenticatorScreen + CredentialRequestSheet"] - Load["src/lib/requests/incoming-request.ts
      loadIncomingRequest()
      parseConnector → openBridge → parsePayload → validateSignature"] + Load["src/requests/incoming-request.ts
      loadIncomingRequest()
      parseConnector → openBridge → parsePayload → validateSignature"] Consent["RequestPreflight.tsx
      Share → passkey unlock / wallet initialization"] Session["AuthenticatorSession.tsx
      wallet + incoming request retained in this tab"] Check{"checkRequestCredentials()
      credentialAvailability()"} @@ -158,8 +158,8 @@ work; this diagram does not claim a deployed Promon evidence contract. - Browser request/UI: [CredentialRequestSheet](../src/components/CredentialRequestSheet.tsx), [SelfieCheckScreen](../src/components/selfie-check/SelfieCheckScreen.tsx), - [incoming request](../src/lib/requests/incoming-request.ts), - [bridge](../src/lib/requests/bridge.ts). + [incoming request](../src/requests/incoming-request.ts), + [bridge](../src/requests/bridge.ts). - Browser issuance: [issueSelfieCredential](../src/lib/selfie-issuance.ts), [server adapter](../src/lib/selfie-issuer-server.ts), [native helper](../src/server/face-enrollment-helper/src/main.rs). diff --git a/docs/wasm-upstream-plan.md b/docs/wasm-upstream-plan.md index 6db1fbb..4244fb0 100644 --- a/docs/wasm-upstream-plan.md +++ b/docs/wasm-upstream-plan.md @@ -3,7 +3,7 @@ > **Historical dependency snapshot (October 1).** The product now uses published > `@worldcoin/walletkit-web@0.27.1` without a local package patch. The old patch > directory is removed; current app integration lives in the -> [WalletKit adapter](../apps/authenticator/src/lib/walletkit.ts). +> [WalletKit adapter](../apps/web/src/lib/walletkit.ts). > Synthetic enrollment remains in `experiments/tee-demo`. See > [current boundaries](code-boundaries.md) before acting on the upstream work below. diff --git a/eslint.config.mjs b/eslint.config.mjs index 43b3db5..b34e9b2 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -37,7 +37,7 @@ export default tseslint.config( }, }, { - files: ["apps/authenticator/**/*.{ts,tsx}"], + files: ["apps/*/**/*.{ts,tsx}"], plugins: { "jsx-a11y": jsxA11y, "react-hooks": reactHooks, @@ -58,8 +58,7 @@ export default tseslint.config( }, }, { - files: ["apps/authenticator/src/**/*.{ts,tsx}"], - ignores: ["apps/authenticator/src/server/**"], + files: ["apps/web/src/**/*.{ts,tsx}"], languageOptions: { globals: globals.browser, }, @@ -87,7 +86,7 @@ export default tseslint.config( }, }, { - files: ["apps/authenticator/src/wallet/session.ts", "apps/authenticator/src/wallet/persistence.ts"], + files: ["apps/web/src/wallet/session.ts", "apps/web/src/wallet/persistence.ts"], rules: { "no-restricted-properties": ["error", { object: "document", property: "cookie" }, @@ -97,8 +96,7 @@ export default tseslint.config( }, { files: [ - "apps/authenticator/src/server/**/*.{ts,tsx}", - "apps/authenticator/src/**/*.server.{ts,tsx}", + "apps/api/src/**/*.{ts,tsx}", ], languageOptions: { globals: { @@ -119,12 +117,35 @@ export default tseslint.config( }, }, { - files: ["apps/**/src/**/*.{ts,tsx}", "packages/**/src/**/*.{ts,tsx}", "services/**/*.{ts,tsx}", "config/**/*.ts"], + files: ["apps/**/src/**/*.{ts,tsx}", "packages/**/src/**/*.{ts,tsx}"], rules: { "no-restricted-imports": ["error", { patterns: [{ group: ["**/experiments/**", "**/fixtures/**"], message: "Product code must not import experiments or test fixtures." }], }], }, }, - { files: ["apps/authenticator/src/wallet/flow-logging.ts"], rules: { "no-console": "off" } }, + { + files: ["apps/web/src/**/*.{ts,tsx}"], + rules: { + "no-restricted-imports": ["error", { + paths: ["bun", "fs", "path", "crypto", "http", "https", "net", "tls", "child_process"], + patterns: [ + { group: ["node:*", "bun:*", "@web-authenticator/api", "@web-authenticator/api/*", "**/api/**", "**/*.server", "**/*.server.*"], message: "Browser code must not import server modules." }, + { group: ["**/experiments/**", "**/test/**", "**/fixtures/**"], message: "Product code must not import experiments or tests." }, + ], + }], + }, + }, + { + files: ["apps/api/src/**/*.ts"], + rules: { + "no-restricted-imports": ["error", { + patterns: [ + { group: ["@web-authenticator/web", "@web-authenticator/web/*", "**/web/src/**"], message: "API code must not import browser implementation modules." }, + { group: ["**/experiments/**", "**/test/**", "**/fixtures/**"], message: "Product code must not import experiments or tests." }, + ], + }], + }, + }, + { files: ["apps/web/src/wallet/flow-logging.ts"], rules: { "no-console": "off" } }, ); diff --git a/experiments/README.md b/experiments/README.md index 3e5b373..754a0e4 100644 --- a/experiments/README.md +++ b/experiments/README.md @@ -4,7 +4,7 @@ #604 adapter and TEE routes. It is not the default application. Its source and local-package dependency are retained for the next TEE integration step. -The canonical UI and registration flow now live in `apps/authenticator`. +The canonical UI and registration flow now live in `apps/web`. Use the repository-root commands for that app. The pre-convergence checkpoint is `ae0b178`; no legacy passkey state or local secrets were deleted. @@ -17,7 +17,7 @@ production or make the entire branch production-ready. `tee-demo` preserves the synthetic enrollment adapter, native helper, placeholder integrity headers and simulated flows. The duplicate adapter/helper formerly in -`apps/authenticator` and `services/staging-issuance` have been removed. The Rust +`apps/web` and `services/staging-issuance` have been removed. The Rust helper source and lockfile were identical to the preserved copy. To work on the experiment, explicitly change into `experiments/tee-demo` and use diff --git a/package.json b/package.json index a24f869..20fc740 100644 --- a/package.json +++ b/package.json @@ -5,32 +5,21 @@ "packageManager": "bun@1.4.2", "workspaces": [ "apps/*", - "services/*", "packages/*" ], "scripts": { - "build": "bun run build:authenticator && bun run build:authenticator-server", - "build:authenticator": "vite build --config vite.config.ts", - "build:authenticator-server": "bun build apps/authenticator/src/server/main.ts --target=bun --outdir apps/authenticator/dist-server", - "dev:authenticator": "concurrently -k -n client,server \"vite build --watch --config vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", + "dev": "concurrently -k -n web,api \"bun run --cwd apps/web dev\" \"bun run --cwd apps/api dev\"", + "build": "bun run build:web && bun run build:api", + "build:web": "bun run --cwd apps/web build", + "build:api": "bun run --cwd apps/api build", + "start": "bun run --cwd apps/api start", + "start:tunnel": "bun --env-file=.env.tunnel apps/api/dist/main.js", "lint": "eslint . --max-warnings=0", - "start:authenticator": "bun apps/authenticator/src/server/main.ts", - "start:authenticator:tunnel": "bun --env-file=.env.tunnel apps/authenticator/src/server/main.ts", - "test": "bun test ./apps ./packages ./config ./tests", - "test:authenticator": "bun test ./apps/authenticator/test", - "test:browser": "bun run build:authenticator && playwright test -c tests/e2e/playwright.config.ts", - "test:integration": "bun test ./tests/integration", - "typecheck": "tsc -p tsconfig.client.json --noEmit && tsc -p tsconfig.server.json --noEmit && tsc -p tsconfig.test.json --noEmit && tsc -p tsconfig.tools.json --noEmit", - "dev": "concurrently -k -n client,server \"vite build --watch --config vite.config.ts\" \"bun --watch apps/authenticator/src/server/main.ts\"", - "start": "bun apps/authenticator/src/server/main.ts" - }, - "dependencies": { - "onnxruntime-web": "1.30.0", - "react": "19.2.8", - "react-dom": "19.2.8", - "@worldcoin/walletkit-web": "0.27.1", - "viem": "2.56.0", - "lossless-json": "4.3.1" + "typecheck": "bun run --cwd apps/web typecheck && bun run --cwd apps/api typecheck && tsc -p tsconfig.test.json --noEmit && tsc -p tsconfig.tools.json --noEmit", + "test": "bun test ./apps ./packages ./tests", + "test:web": "bun run --cwd apps/web test", + "test:api": "bun run --cwd apps/api test", + "test:browser": "bun run build && playwright test -c tests/e2e/playwright.config.ts" }, "devDependencies": { "@eslint/js": "9.39.4", @@ -41,9 +30,6 @@ "@testing-library/user-event": "14.6.7", "@types/bun": "1.3.11", "@types/node": "20.19.25", - "@types/react": "19.2.18", - "@types/react-dom": "19.2.5", - "@vitejs/plugin-react": "6.1.1", "axe-core": "4.13.0", "concurrently": "9.2.1", "eslint": "9.39.4", @@ -52,6 +38,6 @@ "globals": "16.4.0", "typescript": "5.9.3", "typescript-eslint": "8.68.0", - "vite": "8.2.2" + "viem": "2.56.0" } } diff --git a/scripts/setup-rgbnet.ts b/scripts/setup-rgbnet.ts index d4cf5f7..6b2f254 100644 --- a/scripts/setup-rgbnet.ts +++ b/scripts/setup-rgbnet.ts @@ -1,14 +1,14 @@ import { resolve } from 'node:path' import { createHash } from 'node:crypto' import { mkdir, readFile, writeFile } from 'node:fs/promises' -import model from '../apps/authenticator/src/face/rgbnet-model.json' +import model from '../apps/web/src/face/rgbnet-model.json' const source = process.argv[2] if (!source) throw new Error('Usage: bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx') const bytes = await readFile(source) if (bytes.length !== model.bytes || createHash('sha256').update(bytes).digest('hex') !== model.sha256) throw new Error('RGBNet does not match the pinned model. Review model provenance before changing the manifest.') -const destination = resolve(import.meta.dir, '../apps/authenticator/public/models/rgbnet.onnx') -await mkdir(resolve(import.meta.dir, '../apps/authenticator/public/models'), { recursive: true }) +const destination = resolve(import.meta.dir, '../apps/web/public/models/rgbnet.onnx') +await mkdir(resolve(import.meta.dir, '../apps/web/public/models'), { recursive: true }) await writeFile(destination, bytes) console.info(`Installed verified RGBNet (${bytes.length} bytes) at ${destination}`) diff --git a/tests/e2e/playwright.config.ts b/tests/e2e/playwright.config.ts index a40d30a..3d8da46 100644 --- a/tests/e2e/playwright.config.ts +++ b/tests/e2e/playwright.config.ts @@ -17,7 +17,7 @@ export default defineConfig({ screenshot: "only-on-failure", }, webServer: { - command: "bun run start:authenticator", + command: "bun run start", cwd: repositoryRoot, env: { ...process.env, diff --git a/tests/integration/browser/rgbnet.browser.spec.ts b/tests/integration/browser/rgbnet.browser.spec.ts index 1be0b41..272b78d 100644 --- a/tests/integration/browser/rgbnet.browser.spec.ts +++ b/tests/integration/browser/rgbnet.browser.spec.ts @@ -1,13 +1,13 @@ import { expect, test } from "@playwright/test"; import { existsSync, readdirSync } from "node:fs"; -import type { DetectorResponse } from "../../../apps/authenticator/src/face/rgbnet.worker"; +import type { DetectorResponse } from "../../../apps/web/src/face/rgbnet.worker"; if (!("bun" in process.versions)) { for (const missing of [false, true]) { test(`built RGBNet worker ${missing ? "reports missing weights" : "runs real ONNX inference"}`, async ({ page }) => { - test.skip(!missing && !existsSync("apps/authenticator/dist/models/rgbnet.onnx"), "Install the pinned RGBNet artifact to exercise real inference"); + test.skip(!missing && !existsSync("apps/web/dist/models/rgbnet.onnx"), "Install the pinned RGBNet artifact to exercise real inference"); test.setTimeout(60_000); - const asset = readdirSync("apps/authenticator/dist/assets").find(name => /^rgbnet\.worker-.*\.js$/.test(name)); + const asset = readdirSync("apps/web/dist/assets").find(name => /^rgbnet\.worker-.*\.js$/.test(name)); expect(asset).toBeTruthy(); if (missing) await page.route("**/models/rgbnet.onnx", route => route.fulfill({ status: 404, body: "Not found" })); await page.goto("/"); diff --git a/tests/integration/fixtures/request.ts b/tests/integration/fixtures/request.ts index 7c812cd..9936455 100644 --- a/tests/integration/fixtures/request.ts +++ b/tests/integration/fixtures/request.ts @@ -1,6 +1,6 @@ import { keccak256, stringToHex, hexToBytes, type Hex } from "viem"; import { privateKeyToAccount } from "viem/accounts"; -import type { Payload } from "../../../apps/authenticator/src/lib/requests/proof-request"; +import type { Payload } from "../../../apps/web/src/requests/proof-request"; // Public, deterministic test-only signing key. Never used against an actual registry. const signer = privateKeyToAccount(`0x${"1".padStart(64, "0")}`); diff --git a/tsconfig.client.json b/tsconfig.client.json deleted file mode 100644 index b0078bf..0000000 --- a/tsconfig.client.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "lib": [ - "DOM", - "DOM.Iterable", - "ES2022" - ], - "types": [ - "vite/client" - ] - }, - "include": [ - "apps/authenticator/src/**/*.ts", - "apps/authenticator/src/**/*.tsx", - "packages/browser-admission/src/**/*.ts" - ], - "exclude": [ - "apps/authenticator/src/server/**", - "apps/authenticator/src/**/*.server.*" - ] -} diff --git a/tsconfig.json b/tsconfig.json index 67f8b9e..466d7bd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,13 +12,7 @@ "resolveJsonModule": true, "isolatedModules": true, "skipLibCheck": true, - "types": [], - "baseUrl": ".", - "paths": { - "@clean-start/browser-admission": [ - "packages/browser-admission/src/index.ts" - ] - } + "types": [] }, "files": [] } diff --git a/tsconfig.test.json b/tsconfig.test.json index 8fa57a4..5a09ad6 100644 --- a/tsconfig.test.json +++ b/tsconfig.test.json @@ -1,15 +1,21 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "lib": ["DOM", "DOM.Iterable", "ES2022"], - "types": ["bun", "node", "vite/client"] + "lib": [ + "DOM", + "DOM.Iterable", + "ES2022" + ], + "types": [ + "bun", + "node" + ] }, "include": [ - "apps/authenticator/test/**/*.ts", - "apps/authenticator/test/**/*.tsx", - "config/**/*.test.ts", - "packages/**/*.test.ts", - "services/**/*.test.ts", + "apps/web/src/vite-env.d.ts", + "apps/*/test/**/*.ts", + "apps/*/test/**/*.tsx", + "packages/**/*.ts", "tests/**/*.ts" ] } diff --git a/tsconfig.tools.json b/tsconfig.tools.json index 08fa88c..761ef01 100644 --- a/tsconfig.tools.json +++ b/tsconfig.tools.json @@ -1,8 +1,17 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "lib": ["ES2022"], - "types": ["bun", "node"] + "lib": [ + "ES2022" + ], + "types": [ + "bun", + "node" + ] }, - "include": ["*.config.ts", "vite.config.ts", "scripts/**/*.ts", "tests/e2e/playwright.config.ts"] + "include": [ + "apps/web/vite.config.ts", + "scripts/**/*.ts", + "tests/e2e/playwright.config.ts" + ] } From db1995af1f44947a6ee4e266bd5c7a91d659a89a Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 11:08:46 -0700 Subject: [PATCH 20/38] Package web and API builds in one Bun container --- .dockerignore | 16 ++++++++++++++++ .github/workflows/ci.yml | 9 +++++++++ Dockerfile | 24 ++++++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..7a93159 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,16 @@ +.git +**/node_modules +**/dist +**/dist-server +**/dist-static +**/.env +**/.env.* +**/*.pem +**/*.tsbuildinfo +**/test +**/tests +.artifacts +.runtime +experiments +playwright-report +test-results diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2e1a52d..04f528d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,3 +43,12 @@ jobs: - name: Browser regression tests run: bunx playwright test -c tests/e2e/playwright.config.ts + + - name: Build and smoke-test container + run: | + docker build -t web-authenticator:test . + docker run --detach --name authenticator-test -p 127.0.0.1:4195:4173 web-authenticator:test + trap 'docker logs authenticator-test; docker rm --force authenticator-test' EXIT + curl --fail --retry 10 --retry-connrefused --retry-delay 1 --max-time 5 http://127.0.0.1:4195/ > /dev/null + status=$(curl --silent --show-error --output /dev/null --write-out '%{http_code}' --max-time 5 'http://127.0.0.1:4195/api/staging-rp?id=invalid') + test "$status" = 400 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1b9370a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM oven/bun:1.4.2 AS build +WORKDIR /app + +COPY package.json bun.lock ./ +COPY apps/web/package.json apps/web/package.json +COPY apps/api/package.json apps/api/package.json +COPY packages/contracts/package.json packages/contracts/package.json +COPY packages/browser-admission/package.json packages/browser-admission/package.json +RUN bun install --frozen-lockfile + +COPY tsconfig.json ./ +COPY apps/web apps/web +COPY apps/api apps/api +RUN bun run build + +FROM oven/bun:1.4.2-slim AS runtime +WORKDIR /app +COPY --from=build --chown=bun:bun /app/apps/web/dist apps/web/dist +COPY --from=build --chown=bun:bun /app/apps/api/dist apps/api/dist +ENV AUTHENTICATOR_HOST=0.0.0.0 +ENV PORT=4173 +USER bun +EXPOSE 4173 +CMD ["bun", "apps/api/dist/main.js"] From 201d3c269e48e92d154962b7a351a8458ed36824 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 11:09:04 -0700 Subject: [PATCH 21/38] Shorten README around setup and everyday commands --- README.md | 87 ++++++++++++++----------------------------------------- 1 file changed, 21 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index 42f2fcc..2e304d3 100644 --- a/README.md +++ b/README.md @@ -1,89 +1,44 @@ # World ID Web Authenticator -## Overview +Unlock your World ID wallet with a passkey and approve requests from apps. +Currently uses staging and supports proofs with existing Orb and Selfie +credentials. Selfie enrollment, user presence and recovery are still to come. -A browser authenticator for World ID. Users unlock their credential vault with a -passkey, review requests from apps, and approve proofs sent through the World ID -bridge. It currently supports staging uniqueness proofs with existing Orb and -Selfie credentials. Selfie enrollment, user presence and recovery are not yet implemented. +## Run locally -Built with React, TypeScript and Vite, served by Bun. WalletKit handles account -registration, encrypted storage and proof generation; viem reads the RP registry. -ONNX Runtime Web runs RGBNet for local camera positioning. Dependencies are pinned in each app’s `package.json`. - -The browser app lives in [apps/web](apps/web), and the Bun server lives in -[apps/api](apps/api). They have separate dependencies and builds, and ship together -from one origin. -[CI](.github/workflows/ci.yml) runs checks and builds; automatic Vercel deployments -are disabled in [vercel.json](vercel.json). Standalone demos live in `experiments/` -and are excluded from the app build. - -## Quick Start - -Install Bun 1.4.2, then run: +Install [Bun](https://bun.sh) **1.4.2**, then: ```sh bun install --frozen-lockfile bun run dev ``` -Open **http://localhost:4173**. The command watches the browser build and Bun -server. Use a browser and passkey provider with WebAuthn PRF support. - -The server binds to `127.0.0.1`. Override it with `AUTHENTICATOR_HOST`, or change -the port with `PORT=3100 bun run dev` (`AUTHENTICATOR_PORT` is also supported). -See [server settings](apps/api/src/config.ts) for security headers and -[the server entry point](apps/api/src/main.ts) for request limits. - -To run a built version, use `bun run build` followed by `bun run start`. -Hosting outside localhost requires HTTPS for passkeys and camera access. - -### Routes - -- `GET /` opens the authenticator; `HEAD /` checks its response headers. -- `GET` and `HEAD` on asset paths serve the browser build. -- `GET /api/staging-rp?id=rp_` returns an active RP's `signer` and `oprfKeyId`. - -```sh -curl -I http://localhost:4173/ -curl -i 'http://localhost:4173/api/staging-rp?id=invalid' # Expected: 400 -``` - -Registration, vault access and proof generation run in the browser through -WalletKit. The [HTTP handlers](apps/api/src/http.ts) -define the server routes. +Open **http://localhost:4173** in a browser with WebAuthn PRF support. +Both apps rebuild on changes; refresh the page to see frontend updates. +Use `PORT=3100 bun run dev` if port 4173 is taken. -### Trying a request +For camera guidance, [install the RGBNet model](docs/rgbnet-browser.md). +Wallet and proof flows work without it. -Set the requesting app's authenticator URL to `http://localhost:4173`, then open -its generated connector link: +## Where things live -```text -http://localhost:4173/?i=&k=&b=https%3A%2F%2Fstaging-bridge.worldcoin.org -``` - -Unlock the wallet, review the request and approve the proof. The requesting app -verifies the response. Opening `/` without a request shows wallet management; -**Dev mode** adds credential inspection, refresh and local deletion. Reuse the same -browser origin to reopen its stored wallet. +- [`apps/web`](apps/web): React UI, passkeys, wallet, camera and proof requests. +- [`apps/api`](apps/api): Bun server, API routes and server configuration. +- [`tests`](tests): browser tests and shared integration fixtures. +- [`experiments`](experiments): older demos, excluded from the app build. -For camera positioning, install the model before building with -`bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx`. -See [RGBNet setup](docs/rgbnet-browser.md). +Each app owns its dependencies. Bun serves the frontend and API from one origin. +See [code boundaries](docs/code-boundaries.md) for the remaining packages and planned work. -## Testing +## Check your changes ```sh bun run lint bun run typecheck bun run test - -bun x playwright install chromium webkit # First run +bun x playwright install chromium webkit # First run only bun run test:browser ``` -`test` runs product unit and integration tests. `test:browser` builds the app and -starts a separate server on port **4194**, testing request handling, passkeys, -camera workers and accessibility in Chromium and WebKit. Browser tests use -controlled upstream responses. Configure them in -[tests/e2e/playwright.config.ts](tests/e2e/playwright.config.ts). +To run the compiled app: `bun run build && bun run start`. +[Container instructions](apps/api/README.md#container) · [App request format](docs/connector-bridge.md) From 3496b815f1ca41ceef167ae6db1bc652e76db3dd Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 11:10:00 -0700 Subject: [PATCH 22/38] Add authenticator favicon from the existing emblem --- apps/web/index.html | 1 + apps/web/public/favicon.svg | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 apps/web/public/favicon.svg diff --git a/apps/web/index.html b/apps/web/index.html index 0cdb906..01c74d3 100644 --- a/apps/web/index.html +++ b/apps/web/index.html @@ -5,6 +5,7 @@ + World ID diff --git a/apps/web/public/favicon.svg b/apps/web/public/favicon.svg new file mode 100644 index 0000000..16ba7cc --- /dev/null +++ b/apps/web/public/favicon.svg @@ -0,0 +1,7 @@ + + + + + + + From e8715d9b3fa769738aeebb493dbeec32f3ec4ca2 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 11:10:59 -0700 Subject: [PATCH 23/38] Trim local setup instructions --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 2e304d3..f905ea3 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,6 @@ bun run dev ``` Open **http://localhost:4173** in a browser with WebAuthn PRF support. -Both apps rebuild on changes; refresh the page to see frontend updates. -Use `PORT=3100 bun run dev` if port 4173 is taken. For camera guidance, [install the RGBNet model](docs/rgbnet-browser.md). Wallet and proof flows work without it. From 9fba61f91d49c54f512c5f88e7c6792e63a2aa2c Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 11:19:29 -0700 Subject: [PATCH 24/38] Flatten web and API workspaces at the repository root --- .gitignore | 9 +++---- Dockerfile | 14 +++++------ README.md | 6 ++--- {apps/api => api}/README.md | 6 ++--- {apps/api/src => api}/config.ts | 0 {apps/api/src => api}/http.ts | 8 +++---- {apps/api/src => api}/main.ts | 0 {apps/api => api}/package.json | 4 ++-- {apps/api/src/routes => api}/staging-rp.ts | 0 {apps/api => api}/test/http-server.test.ts | 4 ++-- {apps/api => api}/tsconfig.json | 4 ++-- bun.lock | 24 +++++++++---------- docs/code-boundaries.md | 10 ++++---- docs/production-gaps.md | 2 +- docs/rgbnet-browser.md | 4 ++-- docs/wasm-upstream-plan.md | 2 +- eslint.config.mjs | 20 +++++++++------- experiments/README.md | 4 ++-- package.json | 21 ++++++++-------- scripts/setup-rgbnet.ts | 6 ++--- .../browser/rgbnet.browser.spec.ts | 6 ++--- tests/integration/fixtures/request.ts | 2 +- tsconfig.test.json | 7 +++--- tsconfig.tools.json | 2 +- {apps/web/src => web}/App.tsx | 10 ++++---- {apps/web/src/styles => web}/app.css | 0 .../src => web}/components/CameraPreview.tsx | 4 ++-- .../src => web}/components/DeveloperPanel.tsx | 6 ++--- {apps/web => web}/index.html | 2 +- .../lib/asset-provenance.ts | 0 {apps/web/src => web}/lib/async.ts | 0 {apps/web/src/requests => web/lib}/bridge.ts | 0 .../lib}/capture-oval-geometry.ts | 0 .../web/src/requests => web/lib}/connector.ts | 0 .../web/src/face => web/lib}/face-detector.ts | 0 .../src/wallet => web/lib}/flow-logging.ts | 0 .../lib}/hold-steady-progress.ts | 0 .../requests => web/lib}/incoming-request.ts | 4 ++-- .../lib}/legacy-passkey-secrets.ts | 0 .../src/wallet => web/lib}/legacy-profile.ts | 2 +- .../lib}/model-provenance.ts | 2 +- .../web/src/wallet => web/lib}/prf-result.ts | 0 .../src/requests => web/lib}/proof-request.ts | 2 +- {apps/web/src/requests => web/lib}/prove.ts | 4 ++-- .../src/face => web/lib}/rgbnet-model.json | 0 {apps/web/src/face => web/lib}/rgbnet.ts | 0 .../web/src/face => web/lib}/rgbnet.worker.ts | 0 .../errors.ts => web/lib/wallet-errors.ts | 0 .../lib/wallet-persistence.ts | 2 +- .../lib/wallet-registration.ts | 8 +++---- .../session.ts => web/lib/wallet-session.ts | 10 ++++---- {apps/web/src => web}/lib/walletkit.ts | 0 {apps/web/src => web}/main.tsx | 2 +- {apps/web => web}/package.json | 0 .../public/assets/figma/capture-check.svg | 0 .../assets/figma/capture-ring-complete.svg | 0 .../assets/figma/capture-ring-ready.svg | 0 .../assets/figma/capture-ring-sampling.svg | 0 .../web => web}/public/assets/figma/close.svg | 0 .../public/assets/figma/disclosure-check.svg | 0 .../public/assets/figma/disclosure-x.svg | 0 .../public/assets/figma/human-emblem.svg | 0 .../public/assets/figma/person-circle.svg | 0 .../public/assets/figma/person-key-blue.svg | 0 .../assets/figma/person-key-disabled.svg | 0 .../public/assets/figma/person-key.svg | 0 .../public/assets/figma/selfie-emblem.svg | 0 .../assets/figma/simulation-progress.svg | 0 .../public/assets/figma/success-emblem.svg | 0 .../assets/figma/verification-complete.svg | 0 {apps/web => web}/public/favicon.svg | 0 {apps/web => web}/test/app.test.tsx | 12 +++++----- {apps/web => web}/test/build-boundary.test.ts | 2 +- {apps/web => web}/test/face-detector.test.ts | 2 +- .../test/fixtures/rgbnet-decode.json | 0 .../test/fixtures/rgbnet-resize.json | 0 .../test/hold-steady-progress.test.ts | 2 +- {apps/web => web}/test/legacy-profile.test.ts | 4 ++-- {apps/web => web}/test/prf-result.test.ts | 6 ++--- {apps/web => web}/test/registration.test.ts | 6 ++--- {apps/web => web}/test/requests.test.ts | 12 +++++----- {apps/web => web}/test/rgbnet.test.ts | 2 +- {apps/web => web}/test/selfie-routing.test.ts | 4 ++-- {apps/web => web}/test/wallet-session.test.ts | 2 +- {apps/web => web}/test/walletkit.test.ts | 2 +- {apps/web => web}/tsconfig.json | 9 ++++--- {apps/web/src => web}/vite-env.d.ts | 0 {apps/web => web}/vite.config.ts | 8 +++---- 88 files changed, 152 insertions(+), 144 deletions(-) rename {apps/api => api}/README.md (88%) rename {apps/api/src => api}/config.ts (100%) rename {apps/api/src => api}/http.ts (90%) rename {apps/api/src => api}/main.ts (100%) rename {apps/api => api}/package.json (76%) rename {apps/api/src/routes => api}/staging-rp.ts (100%) rename {apps/api => api}/test/http-server.test.ts (97%) rename {apps/api => api}/tsconfig.json (73%) rename {apps/web/src => web}/App.tsx (97%) rename {apps/web/src/styles => web}/app.css (100%) rename {apps/web/src => web}/components/CameraPreview.tsx (96%) rename {apps/web/src => web}/components/DeveloperPanel.tsx (95%) rename {apps/web => web}/index.html (88%) rename apps/web/src/assets/provenance.ts => web/lib/asset-provenance.ts (100%) rename {apps/web/src => web}/lib/async.ts (100%) rename {apps/web/src/requests => web/lib}/bridge.ts (100%) rename {apps/web/src/assets => web/lib}/capture-oval-geometry.ts (100%) rename {apps/web/src/requests => web/lib}/connector.ts (100%) rename {apps/web/src/face => web/lib}/face-detector.ts (100%) rename {apps/web/src/wallet => web/lib}/flow-logging.ts (100%) rename {apps/web/src/walkthrough => web/lib}/hold-steady-progress.ts (100%) rename {apps/web/src/requests => web/lib}/incoming-request.ts (96%) rename {apps/web/src/wallet => web/lib}/legacy-passkey-secrets.ts (100%) rename {apps/web/src/wallet => web/lib}/legacy-profile.ts (93%) rename {apps/web/src/walkthrough => web/lib}/model-provenance.ts (88%) rename {apps/web/src/wallet => web/lib}/prf-result.ts (100%) rename {apps/web/src/requests => web/lib}/proof-request.ts (99%) rename {apps/web/src/requests => web/lib}/prove.ts (94%) rename {apps/web/src/face => web/lib}/rgbnet-model.json (100%) rename {apps/web/src/face => web/lib}/rgbnet.ts (100%) rename {apps/web/src/face => web/lib}/rgbnet.worker.ts (100%) rename apps/web/src/wallet/errors.ts => web/lib/wallet-errors.ts (100%) rename apps/web/src/wallet/persistence.ts => web/lib/wallet-persistence.ts (92%) rename apps/web/src/wallet/registration.ts => web/lib/wallet-registration.ts (89%) rename apps/web/src/wallet/session.ts => web/lib/wallet-session.ts (97%) rename {apps/web/src => web}/lib/walletkit.ts (100%) rename {apps/web/src => web}/main.tsx (91%) rename {apps/web => web}/package.json (100%) rename {apps/web => web}/public/assets/figma/capture-check.svg (100%) rename {apps/web => web}/public/assets/figma/capture-ring-complete.svg (100%) rename {apps/web => web}/public/assets/figma/capture-ring-ready.svg (100%) rename {apps/web => web}/public/assets/figma/capture-ring-sampling.svg (100%) rename {apps/web => web}/public/assets/figma/close.svg (100%) rename {apps/web => web}/public/assets/figma/disclosure-check.svg (100%) rename {apps/web => web}/public/assets/figma/disclosure-x.svg (100%) rename {apps/web => web}/public/assets/figma/human-emblem.svg (100%) rename {apps/web => web}/public/assets/figma/person-circle.svg (100%) rename {apps/web => web}/public/assets/figma/person-key-blue.svg (100%) rename {apps/web => web}/public/assets/figma/person-key-disabled.svg (100%) rename {apps/web => web}/public/assets/figma/person-key.svg (100%) rename {apps/web => web}/public/assets/figma/selfie-emblem.svg (100%) rename {apps/web => web}/public/assets/figma/simulation-progress.svg (100%) rename {apps/web => web}/public/assets/figma/success-emblem.svg (100%) rename {apps/web => web}/public/assets/figma/verification-complete.svg (100%) rename {apps/web => web}/public/favicon.svg (100%) rename {apps/web => web}/test/app.test.tsx (96%) rename {apps/web => web}/test/build-boundary.test.ts (94%) rename {apps/web => web}/test/face-detector.test.ts (98%) rename {apps/web => web}/test/fixtures/rgbnet-decode.json (100%) rename {apps/web => web}/test/fixtures/rgbnet-resize.json (100%) rename {apps/web => web}/test/hold-steady-progress.test.ts (92%) rename {apps/web => web}/test/legacy-profile.test.ts (89%) rename {apps/web => web}/test/prf-result.test.ts (91%) rename {apps/web => web}/test/registration.test.ts (90%) rename {apps/web => web}/test/requests.test.ts (92%) rename {apps/web => web}/test/rgbnet.test.ts (99%) rename {apps/web => web}/test/selfie-routing.test.ts (98%) rename {apps/web => web}/test/wallet-session.test.ts (93%) rename {apps/web => web}/test/walletkit.test.ts (98%) rename {apps/web => web}/tsconfig.json (56%) rename {apps/web/src => web}/vite-env.d.ts (100%) rename {apps/web => web}/vite.config.ts (85%) diff --git a/.gitignore b/.gitignore index bfc34d0..f33c4f4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,8 @@ node_modules/ -apps/*/dist/ -apps/*/dist-server/ -apps/*/dist-static/ +web/dist/ +api/dist/ +web/dist-server/ +web/dist-static/ .artifacts/ .runtime/ playwright-report/ @@ -17,7 +18,7 @@ coverage/ .wrangler/ -apps/web/public/models/rgbnet.onnx +web/public/models/rgbnet.onnx .next/ demo/ diff --git a/Dockerfile b/Dockerfile index 1b9370a..c4a5bb2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,23 +2,23 @@ FROM oven/bun:1.4.2 AS build WORKDIR /app COPY package.json bun.lock ./ -COPY apps/web/package.json apps/web/package.json -COPY apps/api/package.json apps/api/package.json +COPY web/package.json web/package.json +COPY api/package.json api/package.json COPY packages/contracts/package.json packages/contracts/package.json COPY packages/browser-admission/package.json packages/browser-admission/package.json RUN bun install --frozen-lockfile COPY tsconfig.json ./ -COPY apps/web apps/web -COPY apps/api apps/api +COPY web web +COPY api api RUN bun run build FROM oven/bun:1.4.2-slim AS runtime WORKDIR /app -COPY --from=build --chown=bun:bun /app/apps/web/dist apps/web/dist -COPY --from=build --chown=bun:bun /app/apps/api/dist apps/api/dist +COPY --from=build --chown=bun:bun /app/web/dist web/dist +COPY --from=build --chown=bun:bun /app/api/dist api/dist ENV AUTHENTICATOR_HOST=0.0.0.0 ENV PORT=4173 USER bun EXPOSE 4173 -CMD ["bun", "apps/api/dist/main.js"] +CMD ["bun", "api/dist/main.js"] diff --git a/README.md b/README.md index f905ea3..1cbe83b 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,8 @@ Wallet and proof flows work without it. ## Where things live -- [`apps/web`](apps/web): React UI, passkeys, wallet, camera and proof requests. -- [`apps/api`](apps/api): Bun server, API routes and server configuration. +- [`web`](web): React UI, passkeys, wallet, camera and proof requests. +- [`api`](api): Bun server, API routes and server configuration. - [`tests`](tests): browser tests and shared integration fixtures. - [`experiments`](experiments): older demos, excluded from the app build. @@ -39,4 +39,4 @@ bun run test:browser ``` To run the compiled app: `bun run build && bun run start`. -[Container instructions](apps/api/README.md#container) · [App request format](docs/connector-bridge.md) +[Container instructions](api/README.md#container) · [App request format](docs/connector-bridge.md) diff --git a/apps/api/README.md b/api/README.md similarity index 88% rename from apps/api/README.md rename to api/README.md index a3edc90..0886817 100644 --- a/apps/api/README.md +++ b/api/README.md @@ -9,13 +9,13 @@ run `bun run build` followed by `bun run start`. ## Configuration -[`src/config.ts`](src/config.ts) reads the listener settings and defines response +[`config.ts`](config.ts) reads the listener settings and defines response security headers. `AUTHENTICATOR_HOST` defaults to `127.0.0.1`; `PORT` defaults to `4173` (`AUTHENTICATOR_PORT` is also accepted). Invalid ports fail startup. The CSP allows the official World ID bridges and WalletKit's staging endpoints. Review it when changing SDK versions or network destinations. Server configuration -and credentials must never be imported by `apps/web`. +and credentials must never be imported by `web`. ## Container @@ -28,7 +28,7 @@ docker run --rm -p 127.0.0.1:4173:4173 web-authenticator The image runs as a non-root user and contains the compiled API and web assets. It listens on `0.0.0.0:4173` inside the container. Hosting beyond localhost requires -HTTPS for camera and passkey access. Install the [RGBNet model](../../docs/rgbnet-browser.md) +HTTPS for camera and passkey access. Install the [RGBNet model](../docs/rgbnet-browser.md) before building if camera guidance is needed. This packages the app; AWS hosting, Redis and secrets belong in deployment diff --git a/apps/api/src/config.ts b/api/config.ts similarity index 100% rename from apps/api/src/config.ts rename to api/config.ts diff --git a/apps/api/src/http.ts b/api/http.ts similarity index 90% rename from apps/api/src/http.ts rename to api/http.ts index 8fe8650..41dabac 100644 --- a/apps/api/src/http.ts +++ b/api/http.ts @@ -1,9 +1,9 @@ -import { resolve, relative, sep } from "node:path"; -import { fileURLToPath } from "node:url"; +import { resolve, relative, sep, basename } from "node:path"; import { AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "./config"; -import { GET as lookupRp } from "./routes/staging-rp"; +import { GET as lookupRp } from "./staging-rp"; -const DEFAULT_STATIC_ROOT = fileURLToPath(new URL("../../web/dist/", import.meta.url)); +// Source files live in api/; the bundled server lives in api/dist/. +const DEFAULT_STATIC_ROOT = resolve(import.meta.dir, basename(import.meta.dir) === "dist" ? "../../web/dist" : "../web/dist"); function headers(contentType?: string): Headers { const result = new Headers(AUTHENTICATOR_APP_SECURITY_HEADERS_V0); if (contentType !== undefined) result.set("Content-Type", contentType); diff --git a/apps/api/src/main.ts b/api/main.ts similarity index 100% rename from apps/api/src/main.ts rename to api/main.ts diff --git a/apps/api/package.json b/api/package.json similarity index 76% rename from apps/api/package.json rename to api/package.json index d1c1a4a..83ae221 100644 --- a/apps/api/package.json +++ b/api/package.json @@ -3,8 +3,8 @@ "private": true, "type": "module", "scripts": { - "build": "bun build src/main.ts --target=bun --outdir dist", - "dev": "bun --watch src/main.ts", + "build": "bun build main.ts --target=bun --outdir dist", + "dev": "bun --watch main.ts", "start": "bun dist/main.js", "test": "bun test ./test", "typecheck": "tsc -p tsconfig.json --noEmit" diff --git a/apps/api/src/routes/staging-rp.ts b/api/staging-rp.ts similarity index 100% rename from apps/api/src/routes/staging-rp.ts rename to api/staging-rp.ts diff --git a/apps/api/test/http-server.test.ts b/api/test/http-server.test.ts similarity index 97% rename from apps/api/test/http-server.test.ts rename to api/test/http-server.test.ts index 868197e..8df66e9 100644 --- a/apps/api/test/http-server.test.ts +++ b/api/test/http-server.test.ts @@ -2,8 +2,8 @@ import { expect, test } from "bun:test"; import { mkdtemp, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { createAuthenticatorHttpHandler } from "../src/http"; -import { AUTHENTICATOR_APP_CONFIG, AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "../src/config"; +import { createAuthenticatorHttpHandler } from "../http"; +import { AUTHENTICATOR_APP_CONFIG, AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "../config"; const handler = createAuthenticatorHttpHandler(); const origin = `http://localhost:${AUTHENTICATOR_APP_CONFIG.port}`; const post = (body: unknown, headerOrigin = origin, pathOrigin = origin) => handler(new Request(`${pathOrigin}/api/selfie-credential`, { diff --git a/apps/api/tsconfig.json b/api/tsconfig.json similarity index 73% rename from apps/api/tsconfig.json rename to api/tsconfig.json index 0f0041a..47e6a05 100644 --- a/apps/api/tsconfig.json +++ b/api/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", "compilerOptions": { "lib": [ "ES2022", @@ -11,6 +11,6 @@ ] }, "include": [ - "src/**/*.ts" + "*.ts" ] } diff --git a/bun.lock b/bun.lock index 20c57fa..d261290 100644 --- a/bun.lock +++ b/bun.lock @@ -24,7 +24,7 @@ "viem": "2.56.0", }, }, - "apps/api": { + "api": { "name": "@web-authenticator/api", "dependencies": { "viem": "2.56.0", @@ -34,7 +34,15 @@ "@types/node": "20.19.25", }, }, - "apps/web": { + "packages/browser-admission": { + "name": "@world-id/web-authenticator-browser-admission", + "version": "0.0.0", + }, + "packages/contracts": { + "name": "@world-id/web-authenticator-contracts", + "version": "0.0.0", + }, + "web": { "name": "@web-authenticator/web", "dependencies": { "@worldcoin/walletkit-web": "0.27.1", @@ -50,14 +58,6 @@ "vite": "8.2.2", }, }, - "packages/browser-admission": { - "name": "@world-id/web-authenticator-browser-admission", - "version": "0.0.0", - }, - "packages/contracts": { - "name": "@world-id/web-authenticator-contracts", - "version": "0.0.0", - }, }, "packages": { "@adraffy/ens-normalize": ["@adraffy/ens-normalize@1.11.1", "", {}, "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ=="], @@ -248,9 +248,9 @@ "@vitejs/plugin-react": ["@vitejs/plugin-react@6.1.1", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "oxc-transform-react": "^0.145.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler", "oxc-transform-react"] }, "sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw=="], - "@web-authenticator/api": ["@web-authenticator/api@workspace:apps/api"], + "@web-authenticator/api": ["@web-authenticator/api@workspace:api"], - "@web-authenticator/web": ["@web-authenticator/web@workspace:apps/web"], + "@web-authenticator/web": ["@web-authenticator/web@workspace:web"], "@world-id/web-authenticator-browser-admission": ["@world-id/web-authenticator-browser-admission@workspace:packages/browser-admission"], diff --git a/docs/code-boundaries.md b/docs/code-boundaries.md index cd122a0..6098ae4 100644 --- a/docs/code-boundaries.md +++ b/docs/code-boundaries.md @@ -6,8 +6,8 @@ still incomplete. A file's location states its role, not its security approval. | Location | Role | Current status | | --- | --- | --- | -| `apps/web/src` | React UI, browser wallet, camera and proof requests | Real staging registration, vault, bridge and proof flow; no Selfie enrollment | -| `apps/api/src` | Bun server, routes and server configuration | Serves web assets and staging RP lookup; Promon and Redis are not implemented | +| `web` | React UI, browser wallet, camera and proof requests | Real staging registration, vault, bridge and proof flow; no Selfie enrollment | +| `api` | Bun server, routes and server configuration | Serves web assets and staging RP lookup; Promon and Redis are not implemented | | `packages` | Shared libraries and contracts | Per-package validation required; current admission policy/contracts are not wired into the app | | `tests` and `*/test` | Regression tests and fixtures | Mocks are test inputs, not live-service validation | | `experiments/tee-demo` | Preserved standalone demo | Synthetic enrollment, placeholder integrity, local TEE integration; never a product dependency | @@ -16,7 +16,7 @@ still incomplete. A file's location states its role, not its security approval. ## Enforced separation - Root tests use explicit directory paths, so Bun does not also select experiment tests by substring. -- `apps/web` and `apps/api` have separate dependencies, TypeScript configurations and builds. Bun serves both outputs from one origin. +- `web` and `api` have separate dependencies, TypeScript configurations and builds. Bun serves both outputs from one origin. - Root build/start commands target these two apps; experiments are outside workspaces. - ESLint rejects product imports from experiments and fixture directories. - ESLint rejects browser imports of API modules and server imports of browser implementation code. @@ -32,8 +32,8 @@ the existing staging verification rules. ## Where new code belongs -Promon validation, session storage and rate limiting belong in `apps/api/src`. -Browser integration belongs in `apps/web/src`. Add shared API schemas under +Promon validation, session storage and rate limiting belong in `api`. +Browser integration belongs in `web`. Add shared API schemas under `packages` only when both apps need them; neither app currently depends on the legacy admission/contracts packages. Those packages retain their own regression coverage. The root package owns shared development tools and cross-app tests. diff --git a/docs/production-gaps.md b/docs/production-gaps.md index 17e8253..c6ea7cb 100644 --- a/docs/production-gaps.md +++ b/docs/production-gaps.md @@ -79,7 +79,7 @@ question, not a claim that the current iOS selfie flow already sends that proof. Implementation references: [selfie enrollment](selfie-enrollment.md), [preserved enrollment adapter](../experiments/tee-demo/src/lib/selfie-issuer-server.ts), and -[current WalletKit adapter](../apps/web/src/lib/walletkit.ts). +[current WalletKit adapter](../web/lib/walletkit.ts). The RP verifier and replay ledger described above belong to the separate local playground under ignored `demo/`; their implementation is not included in this branch. diff --git a/docs/rgbnet-browser.md b/docs/rgbnet-browser.md index 85d30c7..9971a3d 100644 --- a/docs/rgbnet-browser.md +++ b/docs/rgbnet-browser.md @@ -19,8 +19,8 @@ bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx bun run dev ``` -The setup script installs `apps/web/public/models/rgbnet.onnx` after -checking its 1,720,022-byte size and SHA-256 against `src/face/rgbnet-model.json` +The setup script installs `web/public/models/rgbnet.onnx` after +checking its 1,720,022-byte size and SHA-256 against `web/lib/rgbnet-model.json` inside the authenticator app. The worker repeats those checks before inference. Model weights are ignored by Git; install them before building a deployed preview. Without them, the preview reports a model-download failure; wallet/proof operations diff --git a/docs/wasm-upstream-plan.md b/docs/wasm-upstream-plan.md index 4244fb0..76b0690 100644 --- a/docs/wasm-upstream-plan.md +++ b/docs/wasm-upstream-plan.md @@ -3,7 +3,7 @@ > **Historical dependency snapshot (October 1).** The product now uses published > `@worldcoin/walletkit-web@0.27.1` without a local package patch. The old patch > directory is removed; current app integration lives in the -> [WalletKit adapter](../apps/web/src/lib/walletkit.ts). +> [WalletKit adapter](../web/lib/walletkit.ts). > Synthetic enrollment remains in `experiments/tee-demo`. See > [current boundaries](code-boundaries.md) before acting on the upstream work below. diff --git a/eslint.config.mjs b/eslint.config.mjs index b34e9b2..48dc1d3 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -37,7 +37,7 @@ export default tseslint.config( }, }, { - files: ["apps/*/**/*.{ts,tsx}"], + files: ["web/**/*.{ts,tsx}", "api/**/*.{ts,tsx}"], plugins: { "jsx-a11y": jsxA11y, "react-hooks": reactHooks, @@ -58,7 +58,8 @@ export default tseslint.config( }, }, { - files: ["apps/web/src/**/*.{ts,tsx}"], + files: ["web/**/*.{ts,tsx}"], + ignores: ["web/test/**", "web/vite.config.ts"], languageOptions: { globals: globals.browser, }, @@ -86,7 +87,7 @@ export default tseslint.config( }, }, { - files: ["apps/web/src/wallet/session.ts", "apps/web/src/wallet/persistence.ts"], + files: ["web/lib/wallet-session.ts", "web/lib/wallet-persistence.ts"], rules: { "no-restricted-properties": ["error", { object: "document", property: "cookie" }, @@ -96,7 +97,7 @@ export default tseslint.config( }, { files: [ - "apps/api/src/**/*.{ts,tsx}", + "api/*.{ts,tsx}", ], languageOptions: { globals: { @@ -117,7 +118,7 @@ export default tseslint.config( }, }, { - files: ["apps/**/src/**/*.{ts,tsx}", "packages/**/src/**/*.{ts,tsx}"], + files: ["packages/**/src/**/*.{ts,tsx}"], rules: { "no-restricted-imports": ["error", { patterns: [{ group: ["**/experiments/**", "**/fixtures/**"], message: "Product code must not import experiments or test fixtures." }], @@ -125,7 +126,8 @@ export default tseslint.config( }, }, { - files: ["apps/web/src/**/*.{ts,tsx}"], + files: ["web/**/*.{ts,tsx}"], + ignores: ["web/test/**", "web/vite.config.ts"], rules: { "no-restricted-imports": ["error", { paths: ["bun", "fs", "path", "crypto", "http", "https", "net", "tls", "child_process"], @@ -137,15 +139,15 @@ export default tseslint.config( }, }, { - files: ["apps/api/src/**/*.ts"], + files: ["api/*.ts"], rules: { "no-restricted-imports": ["error", { patterns: [ - { group: ["@web-authenticator/web", "@web-authenticator/web/*", "**/web/src/**"], message: "API code must not import browser implementation modules." }, + { group: ["@web-authenticator/web", "@web-authenticator/web/*", "**/web/**"], message: "API code must not import browser implementation modules." }, { group: ["**/experiments/**", "**/test/**", "**/fixtures/**"], message: "Product code must not import experiments or tests." }, ], }], }, }, - { files: ["apps/web/src/wallet/flow-logging.ts"], rules: { "no-console": "off" } }, + { files: ["web/lib/flow-logging.ts"], rules: { "no-console": "off" } }, ); diff --git a/experiments/README.md b/experiments/README.md index 754a0e4..9cb8e25 100644 --- a/experiments/README.md +++ b/experiments/README.md @@ -4,7 +4,7 @@ #604 adapter and TEE routes. It is not the default application. Its source and local-package dependency are retained for the next TEE integration step. -The canonical UI and registration flow now live in `apps/web`. +The canonical UI and registration flow now live in `web`. Use the repository-root commands for that app. The pre-convergence checkpoint is `ae0b178`; no legacy passkey state or local secrets were deleted. @@ -17,7 +17,7 @@ production or make the entire branch production-ready. `tee-demo` preserves the synthetic enrollment adapter, native helper, placeholder integrity headers and simulated flows. The duplicate adapter/helper formerly in -`apps/web` and `services/staging-issuance` have been removed. The Rust +`web` and `services/staging-issuance` have been removed. The Rust helper source and lockfile were identical to the preserved copy. To work on the experiment, explicitly change into `experiments/tee-demo` and use diff --git a/package.json b/package.json index 20fc740..4eb0f6f 100644 --- a/package.json +++ b/package.json @@ -4,21 +4,22 @@ "type": "module", "packageManager": "bun@1.4.2", "workspaces": [ - "apps/*", + "web", + "api", "packages/*" ], "scripts": { - "dev": "concurrently -k -n web,api \"bun run --cwd apps/web dev\" \"bun run --cwd apps/api dev\"", + "dev": "concurrently -k -n web,api \"bun run --cwd web dev\" \"bun run --cwd api dev\"", "build": "bun run build:web && bun run build:api", - "build:web": "bun run --cwd apps/web build", - "build:api": "bun run --cwd apps/api build", - "start": "bun run --cwd apps/api start", - "start:tunnel": "bun --env-file=.env.tunnel apps/api/dist/main.js", + "build:web": "bun run --cwd web build", + "build:api": "bun run --cwd api build", + "start": "bun run --cwd api start", + "start:tunnel": "bun --env-file=.env.tunnel api/dist/main.js", "lint": "eslint . --max-warnings=0", - "typecheck": "bun run --cwd apps/web typecheck && bun run --cwd apps/api typecheck && tsc -p tsconfig.test.json --noEmit && tsc -p tsconfig.tools.json --noEmit", - "test": "bun test ./apps ./packages ./tests", - "test:web": "bun run --cwd apps/web test", - "test:api": "bun run --cwd apps/api test", + "typecheck": "bun run --cwd web typecheck && bun run --cwd api typecheck && tsc -p tsconfig.test.json --noEmit && tsc -p tsconfig.tools.json --noEmit", + "test": "bun test ./web/test ./api/test ./packages ./tests", + "test:web": "bun run --cwd web test", + "test:api": "bun run --cwd api test", "test:browser": "bun run build && playwright test -c tests/e2e/playwright.config.ts" }, "devDependencies": { diff --git a/scripts/setup-rgbnet.ts b/scripts/setup-rgbnet.ts index 6b2f254..2cf5135 100644 --- a/scripts/setup-rgbnet.ts +++ b/scripts/setup-rgbnet.ts @@ -1,14 +1,14 @@ import { resolve } from 'node:path' import { createHash } from 'node:crypto' import { mkdir, readFile, writeFile } from 'node:fs/promises' -import model from '../apps/web/src/face/rgbnet-model.json' +import model from '../web/lib/rgbnet-model.json' const source = process.argv[2] if (!source) throw new Error('Usage: bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx') const bytes = await readFile(source) if (bytes.length !== model.bytes || createHash('sha256').update(bytes).digest('hex') !== model.sha256) throw new Error('RGBNet does not match the pinned model. Review model provenance before changing the manifest.') -const destination = resolve(import.meta.dir, '../apps/web/public/models/rgbnet.onnx') -await mkdir(resolve(import.meta.dir, '../apps/web/public/models'), { recursive: true }) +const destination = resolve(import.meta.dir, '../web/public/models/rgbnet.onnx') +await mkdir(resolve(import.meta.dir, '../web/public/models'), { recursive: true }) await writeFile(destination, bytes) console.info(`Installed verified RGBNet (${bytes.length} bytes) at ${destination}`) diff --git a/tests/integration/browser/rgbnet.browser.spec.ts b/tests/integration/browser/rgbnet.browser.spec.ts index 272b78d..e8b2ed9 100644 --- a/tests/integration/browser/rgbnet.browser.spec.ts +++ b/tests/integration/browser/rgbnet.browser.spec.ts @@ -1,13 +1,13 @@ import { expect, test } from "@playwright/test"; import { existsSync, readdirSync } from "node:fs"; -import type { DetectorResponse } from "../../../apps/web/src/face/rgbnet.worker"; +import type { DetectorResponse } from "../../../web/lib/rgbnet.worker"; if (!("bun" in process.versions)) { for (const missing of [false, true]) { test(`built RGBNet worker ${missing ? "reports missing weights" : "runs real ONNX inference"}`, async ({ page }) => { - test.skip(!missing && !existsSync("apps/web/dist/models/rgbnet.onnx"), "Install the pinned RGBNet artifact to exercise real inference"); + test.skip(!missing && !existsSync("web/dist/models/rgbnet.onnx"), "Install the pinned RGBNet artifact to exercise real inference"); test.setTimeout(60_000); - const asset = readdirSync("apps/web/dist/assets").find(name => /^rgbnet\.worker-.*\.js$/.test(name)); + const asset = readdirSync("web/dist/assets").find(name => /^rgbnet\.worker-.*\.js$/.test(name)); expect(asset).toBeTruthy(); if (missing) await page.route("**/models/rgbnet.onnx", route => route.fulfill({ status: 404, body: "Not found" })); await page.goto("/"); diff --git a/tests/integration/fixtures/request.ts b/tests/integration/fixtures/request.ts index 9936455..9024a7a 100644 --- a/tests/integration/fixtures/request.ts +++ b/tests/integration/fixtures/request.ts @@ -1,6 +1,6 @@ import { keccak256, stringToHex, hexToBytes, type Hex } from "viem"; import { privateKeyToAccount } from "viem/accounts"; -import type { Payload } from "../../../apps/web/src/requests/proof-request"; +import type { Payload } from "../../../web/lib/proof-request"; // Public, deterministic test-only signing key. Never used against an actual registry. const signer = privateKeyToAccount(`0x${"1".padStart(64, "0")}`); diff --git a/tsconfig.test.json b/tsconfig.test.json index 5a09ad6..0a5cc7b 100644 --- a/tsconfig.test.json +++ b/tsconfig.test.json @@ -12,9 +12,10 @@ ] }, "include": [ - "apps/web/src/vite-env.d.ts", - "apps/*/test/**/*.ts", - "apps/*/test/**/*.tsx", + "web/vite-env.d.ts", + "web/test/**/*.ts", + "web/test/**/*.tsx", + "api/test/**/*.ts", "packages/**/*.ts", "tests/**/*.ts" ] diff --git a/tsconfig.tools.json b/tsconfig.tools.json index 761ef01..cac5658 100644 --- a/tsconfig.tools.json +++ b/tsconfig.tools.json @@ -10,7 +10,7 @@ ] }, "include": [ - "apps/web/vite.config.ts", + "web/vite.config.ts", "scripts/**/*.ts", "tests/e2e/playwright.config.ts" ] diff --git a/apps/web/src/App.tsx b/web/App.tsx similarity index 97% rename from apps/web/src/App.tsx rename to web/App.tsx index 41abceb..69d6579 100644 --- a/apps/web/src/App.tsx +++ b/web/App.tsx @@ -1,13 +1,13 @@ import { useEffect, useRef, useState } from "react"; import { CameraPreview } from "./components/CameraPreview"; import { DeveloperPanel } from "./components/DeveloperPanel"; -import { openAuthenticator } from "./wallet/session"; -import { walletOpenErrorMessage } from "./wallet/errors"; +import { openAuthenticator } from "./lib/wallet-session"; +import { walletOpenErrorMessage } from "./lib/wallet-errors"; import { abortable } from "./lib/async"; import type { WalletKit, CredentialMetadata } from "./lib/walletkit"; -import { loadIncomingRequest, type IncomingRequest } from "./requests/incoming-request"; -import { credentialAvailability, credentialRequirementsLabel } from "./requests/proof-request"; -import { createProof } from "./requests/prove"; +import { loadIncomingRequest, type IncomingRequest } from "./lib/incoming-request"; +import { credentialAvailability, credentialRequirementsLabel } from "./lib/proof-request"; +import { createProof } from "./lib/prove"; const defaults = { open: openAuthenticator, load: loadIncomingRequest, prove: createProof }; type Screen = "review" | "enroll" | "delivery" | "done" | "cancelled"; diff --git a/apps/web/src/styles/app.css b/web/app.css similarity index 100% rename from apps/web/src/styles/app.css rename to web/app.css diff --git a/apps/web/src/components/CameraPreview.tsx b/web/components/CameraPreview.tsx similarity index 96% rename from apps/web/src/components/CameraPreview.tsx rename to web/components/CameraPreview.tsx index ebb370b..720a1f8 100644 --- a/apps/web/src/components/CameraPreview.tsx +++ b/web/components/CameraPreview.tsx @@ -1,6 +1,6 @@ import { useEffect, useRef, useState } from "react"; -import { startFaceDetector } from "../face/face-detector"; -import { faceGuidance } from "../face/rgbnet"; +import { startFaceDetector } from "../lib/face-detector"; +import { faceGuidance } from "../lib/rgbnet"; /** Local framing guidance only. No camera data is submitted for enrollment. */ export function CameraPreview() { diff --git a/apps/web/src/components/DeveloperPanel.tsx b/web/components/DeveloperPanel.tsx similarity index 95% rename from apps/web/src/components/DeveloperPanel.tsx rename to web/components/DeveloperPanel.tsx index 645381b..e8bcff9 100644 --- a/apps/web/src/components/DeveloperPanel.tsx +++ b/web/components/DeveloperPanel.tsx @@ -1,8 +1,8 @@ import { useState } from "react"; import type { CredentialMetadata } from "../lib/walletkit"; -import type { IncomingRequest } from "../requests/incoming-request"; -import { credentialRequirementsLabel } from "../requests/proof-request"; -import { LIVE_GUIDANCE_MODEL_V1 } from "../walkthrough/model-provenance"; +import type { IncomingRequest } from "../lib/incoming-request"; +import { credentialRequirementsLabel } from "../lib/proof-request"; +import { LIVE_GUIDANCE_MODEL_V1 } from "../lib/model-provenance"; function credentialDescription(schema: bigint) { if (schema === 11n) return { name: "Selfie Check", description: "Schema 11. A proof can disclose the uniqueness score. Enrollment is not available in this app." }; diff --git a/apps/web/index.html b/web/index.html similarity index 88% rename from apps/web/index.html rename to web/index.html index 01c74d3..fe32fd2 100644 --- a/apps/web/index.html +++ b/web/index.html @@ -10,6 +10,6 @@
      - + diff --git a/apps/web/src/assets/provenance.ts b/web/lib/asset-provenance.ts similarity index 100% rename from apps/web/src/assets/provenance.ts rename to web/lib/asset-provenance.ts diff --git a/apps/web/src/lib/async.ts b/web/lib/async.ts similarity index 100% rename from apps/web/src/lib/async.ts rename to web/lib/async.ts diff --git a/apps/web/src/requests/bridge.ts b/web/lib/bridge.ts similarity index 100% rename from apps/web/src/requests/bridge.ts rename to web/lib/bridge.ts diff --git a/apps/web/src/assets/capture-oval-geometry.ts b/web/lib/capture-oval-geometry.ts similarity index 100% rename from apps/web/src/assets/capture-oval-geometry.ts rename to web/lib/capture-oval-geometry.ts diff --git a/apps/web/src/requests/connector.ts b/web/lib/connector.ts similarity index 100% rename from apps/web/src/requests/connector.ts rename to web/lib/connector.ts diff --git a/apps/web/src/face/face-detector.ts b/web/lib/face-detector.ts similarity index 100% rename from apps/web/src/face/face-detector.ts rename to web/lib/face-detector.ts diff --git a/apps/web/src/wallet/flow-logging.ts b/web/lib/flow-logging.ts similarity index 100% rename from apps/web/src/wallet/flow-logging.ts rename to web/lib/flow-logging.ts diff --git a/apps/web/src/walkthrough/hold-steady-progress.ts b/web/lib/hold-steady-progress.ts similarity index 100% rename from apps/web/src/walkthrough/hold-steady-progress.ts rename to web/lib/hold-steady-progress.ts diff --git a/apps/web/src/requests/incoming-request.ts b/web/lib/incoming-request.ts similarity index 96% rename from apps/web/src/requests/incoming-request.ts rename to web/lib/incoming-request.ts index 1040dd2..39ae87f 100644 --- a/apps/web/src/requests/incoming-request.ts +++ b/web/lib/incoming-request.ts @@ -1,6 +1,6 @@ import { openBridge } from './bridge' -import type { WalletKit } from '../lib/walletkit' -import { abortable } from '../lib/async' +import type { WalletKit } from './walletkit' +import { abortable } from './async' import { parseConnector, returnUrl } from './connector' import { credentialAvailability, diff --git a/apps/web/src/wallet/legacy-passkey-secrets.ts b/web/lib/legacy-passkey-secrets.ts similarity index 100% rename from apps/web/src/wallet/legacy-passkey-secrets.ts rename to web/lib/legacy-passkey-secrets.ts diff --git a/apps/web/src/wallet/legacy-profile.ts b/web/lib/legacy-profile.ts similarity index 93% rename from apps/web/src/wallet/legacy-profile.ts rename to web/lib/legacy-profile.ts index 3fb2cb4..706a779 100644 --- a/apps/web/src/wallet/legacy-profile.ts +++ b/web/lib/legacy-profile.ts @@ -1,4 +1,4 @@ -import { WalletOpenError } from './errors'; +import { WalletOpenError } from './wallet-errors'; export function parseLegacyProfile(raw: string) { const value = JSON.parse(raw); diff --git a/apps/web/src/walkthrough/model-provenance.ts b/web/lib/model-provenance.ts similarity index 88% rename from apps/web/src/walkthrough/model-provenance.ts rename to web/lib/model-provenance.ts index 556289a..e5d6547 100644 --- a/apps/web/src/walkthrough/model-provenance.ts +++ b/web/lib/model-provenance.ts @@ -1,4 +1,4 @@ -import model from "../face/rgbnet-model.json"; +import model from "./rgbnet-model.json"; export const LIVE_GUIDANCE_MODEL_V1 = Object.freeze({ runtimePackage: "onnxruntime-web", diff --git a/apps/web/src/wallet/prf-result.ts b/web/lib/prf-result.ts similarity index 100% rename from apps/web/src/wallet/prf-result.ts rename to web/lib/prf-result.ts diff --git a/apps/web/src/requests/proof-request.ts b/web/lib/proof-request.ts similarity index 99% rename from apps/web/src/requests/proof-request.ts rename to web/lib/proof-request.ts index 7ae051f..0a1a26e 100644 --- a/apps/web/src/requests/proof-request.ts +++ b/web/lib/proof-request.ts @@ -1,4 +1,4 @@ -import type { CredentialMetadata } from '../lib/walletkit' +import type { CredentialMetadata } from './walletkit' import { hexToBytes, keccak256, stringToHex, verifyMessage, type Hex } from 'viem' export type Requirement = { diff --git a/apps/web/src/requests/prove.ts b/web/lib/prove.ts similarity index 94% rename from apps/web/src/requests/prove.ts rename to web/lib/prove.ts index 9eb5c11..3366a8d 100644 --- a/apps/web/src/requests/prove.ts +++ b/web/lib/prove.ts @@ -1,5 +1,5 @@ -import { abortable } from "../lib/async"; -import type { WalletKit } from "../lib/walletkit"; +import { abortable } from "./async"; +import type { WalletKit } from "./walletkit"; import { checkRequestCredentials, type IncomingRequest } from "./incoming-request"; import { checkExpiry } from "./proof-request"; diff --git a/apps/web/src/face/rgbnet-model.json b/web/lib/rgbnet-model.json similarity index 100% rename from apps/web/src/face/rgbnet-model.json rename to web/lib/rgbnet-model.json diff --git a/apps/web/src/face/rgbnet.ts b/web/lib/rgbnet.ts similarity index 100% rename from apps/web/src/face/rgbnet.ts rename to web/lib/rgbnet.ts diff --git a/apps/web/src/face/rgbnet.worker.ts b/web/lib/rgbnet.worker.ts similarity index 100% rename from apps/web/src/face/rgbnet.worker.ts rename to web/lib/rgbnet.worker.ts diff --git a/apps/web/src/wallet/errors.ts b/web/lib/wallet-errors.ts similarity index 100% rename from apps/web/src/wallet/errors.ts rename to web/lib/wallet-errors.ts diff --git a/apps/web/src/wallet/persistence.ts b/web/lib/wallet-persistence.ts similarity index 92% rename from apps/web/src/wallet/persistence.ts rename to web/lib/wallet-persistence.ts index 4f364f5..8e582d1 100644 --- a/apps/web/src/wallet/persistence.ts +++ b/web/lib/wallet-persistence.ts @@ -1,4 +1,4 @@ -import { WalletOpenError } from "./errors"; +import { WalletOpenError } from "./wallet-errors"; export type RegistrationState = "submitting" | "finalized"; diff --git a/apps/web/src/wallet/registration.ts b/web/lib/wallet-registration.ts similarity index 89% rename from apps/web/src/wallet/registration.ts rename to web/lib/wallet-registration.ts index b4a38dc..dbe6706 100644 --- a/apps/web/src/wallet/registration.ts +++ b/web/lib/wallet-registration.ts @@ -1,8 +1,8 @@ import { logFlowStep } from './flow-logging'; -import { WalletOpenError } from "./errors"; -import type { WalletKit } from "../lib/walletkit"; -import { abortable, pause } from "../lib/async"; -import { registrationState, saveRegistrationState } from "./persistence"; +import { WalletOpenError } from "./wallet-errors"; +import type { WalletKit } from "./walletkit"; +import { abortable, pause } from "./async"; +import { registrationState, saveRegistrationState } from "./wallet-persistence"; export async function activateStagingWallet( wallet: WalletKit, diff --git a/apps/web/src/wallet/session.ts b/web/lib/wallet-session.ts similarity index 97% rename from apps/web/src/wallet/session.ts rename to web/lib/wallet-session.ts index d092ea5..14898fa 100644 --- a/apps/web/src/wallet/session.ts +++ b/web/lib/wallet-session.ts @@ -1,13 +1,13 @@ import { logFlowStep } from './flow-logging'; import { parseLegacyProfile } from './legacy-profile'; import { derivePasskeySecrets, AUTHENTICATOR_SALT, STORAGE_SALT } from './legacy-passkey-secrets'; -import { registrationState, saveRegistrationState } from './persistence'; +import { registrationState, saveRegistrationState } from './wallet-persistence'; import { initializeWalletKit, type CredentialStore, type WalletKit } from "@worldcoin/walletkit-web"; -import { WalletKit as AccountWallet } from "../lib/walletkit"; -import { activateStagingWallet } from "./registration"; -import { abortable } from "../lib/async"; +import { WalletKit as AccountWallet } from "./walletkit"; +import { activateStagingWallet } from "./wallet-registration"; +import { abortable } from "./async"; import { prfBytes } from "./prf-result"; -import { WalletOpenError } from "./errors"; +import { WalletOpenError } from "./wallet-errors"; const PROFILE_KEY = "world-id-wallet-v1"; const PRF_INPUT = new TextEncoder().encode("world-id/web-authenticator/prf/v1"); diff --git a/apps/web/src/lib/walletkit.ts b/web/lib/walletkit.ts similarity index 100% rename from apps/web/src/lib/walletkit.ts rename to web/lib/walletkit.ts diff --git a/apps/web/src/main.tsx b/web/main.tsx similarity index 91% rename from apps/web/src/main.tsx rename to web/main.tsx index 44c5ae9..1b484f5 100644 --- a/apps/web/src/main.tsx +++ b/web/main.tsx @@ -1,6 +1,6 @@ import { createRoot } from "react-dom/client"; import { AuthenticatorAppV1 } from "./App"; -import "./styles/app.css"; +import "./app.css"; const rootElement = document.getElementById("root"); if (rootElement === null) throw new TypeError("authenticator_root_missing"); diff --git a/apps/web/package.json b/web/package.json similarity index 100% rename from apps/web/package.json rename to web/package.json diff --git a/apps/web/public/assets/figma/capture-check.svg b/web/public/assets/figma/capture-check.svg similarity index 100% rename from apps/web/public/assets/figma/capture-check.svg rename to web/public/assets/figma/capture-check.svg diff --git a/apps/web/public/assets/figma/capture-ring-complete.svg b/web/public/assets/figma/capture-ring-complete.svg similarity index 100% rename from apps/web/public/assets/figma/capture-ring-complete.svg rename to web/public/assets/figma/capture-ring-complete.svg diff --git a/apps/web/public/assets/figma/capture-ring-ready.svg b/web/public/assets/figma/capture-ring-ready.svg similarity index 100% rename from apps/web/public/assets/figma/capture-ring-ready.svg rename to web/public/assets/figma/capture-ring-ready.svg diff --git a/apps/web/public/assets/figma/capture-ring-sampling.svg b/web/public/assets/figma/capture-ring-sampling.svg similarity index 100% rename from apps/web/public/assets/figma/capture-ring-sampling.svg rename to web/public/assets/figma/capture-ring-sampling.svg diff --git a/apps/web/public/assets/figma/close.svg b/web/public/assets/figma/close.svg similarity index 100% rename from apps/web/public/assets/figma/close.svg rename to web/public/assets/figma/close.svg diff --git a/apps/web/public/assets/figma/disclosure-check.svg b/web/public/assets/figma/disclosure-check.svg similarity index 100% rename from apps/web/public/assets/figma/disclosure-check.svg rename to web/public/assets/figma/disclosure-check.svg diff --git a/apps/web/public/assets/figma/disclosure-x.svg b/web/public/assets/figma/disclosure-x.svg similarity index 100% rename from apps/web/public/assets/figma/disclosure-x.svg rename to web/public/assets/figma/disclosure-x.svg diff --git a/apps/web/public/assets/figma/human-emblem.svg b/web/public/assets/figma/human-emblem.svg similarity index 100% rename from apps/web/public/assets/figma/human-emblem.svg rename to web/public/assets/figma/human-emblem.svg diff --git a/apps/web/public/assets/figma/person-circle.svg b/web/public/assets/figma/person-circle.svg similarity index 100% rename from apps/web/public/assets/figma/person-circle.svg rename to web/public/assets/figma/person-circle.svg diff --git a/apps/web/public/assets/figma/person-key-blue.svg b/web/public/assets/figma/person-key-blue.svg similarity index 100% rename from apps/web/public/assets/figma/person-key-blue.svg rename to web/public/assets/figma/person-key-blue.svg diff --git a/apps/web/public/assets/figma/person-key-disabled.svg b/web/public/assets/figma/person-key-disabled.svg similarity index 100% rename from apps/web/public/assets/figma/person-key-disabled.svg rename to web/public/assets/figma/person-key-disabled.svg diff --git a/apps/web/public/assets/figma/person-key.svg b/web/public/assets/figma/person-key.svg similarity index 100% rename from apps/web/public/assets/figma/person-key.svg rename to web/public/assets/figma/person-key.svg diff --git a/apps/web/public/assets/figma/selfie-emblem.svg b/web/public/assets/figma/selfie-emblem.svg similarity index 100% rename from apps/web/public/assets/figma/selfie-emblem.svg rename to web/public/assets/figma/selfie-emblem.svg diff --git a/apps/web/public/assets/figma/simulation-progress.svg b/web/public/assets/figma/simulation-progress.svg similarity index 100% rename from apps/web/public/assets/figma/simulation-progress.svg rename to web/public/assets/figma/simulation-progress.svg diff --git a/apps/web/public/assets/figma/success-emblem.svg b/web/public/assets/figma/success-emblem.svg similarity index 100% rename from apps/web/public/assets/figma/success-emblem.svg rename to web/public/assets/figma/success-emblem.svg diff --git a/apps/web/public/assets/figma/verification-complete.svg b/web/public/assets/figma/verification-complete.svg similarity index 100% rename from apps/web/public/assets/figma/verification-complete.svg rename to web/public/assets/figma/verification-complete.svg diff --git a/apps/web/public/favicon.svg b/web/public/favicon.svg similarity index 100% rename from apps/web/public/favicon.svg rename to web/public/favicon.svg diff --git a/apps/web/test/app.test.tsx b/web/test/app.test.tsx similarity index 96% rename from apps/web/test/app.test.tsx rename to web/test/app.test.tsx index effda1b..7d11403 100644 --- a/apps/web/test/app.test.tsx +++ b/web/test/app.test.tsx @@ -1,12 +1,12 @@ import { afterAll, afterEach, beforeAll, expect, spyOn, test } from "bun:test"; import { GlobalRegistrator } from "@happy-dom/global-registrator"; import { cleanup, fireEvent, render, waitFor } from "@testing-library/react"; -import { CameraPreview } from "../src/components/CameraPreview"; -import { AuthenticatorAppV1 } from "../src/App"; -import { signedRequest } from "../../../tests/integration/fixtures/request"; -import type { IncomingRequest } from "../src/requests/incoming-request"; -import type { WalletKit, CredentialMetadata } from "../src/lib/walletkit"; -import type { DetectorResponse } from "../src/face/rgbnet.worker"; +import { CameraPreview } from "../components/CameraPreview"; +import { AuthenticatorAppV1 } from "../App"; +import { signedRequest } from "../../tests/integration/fixtures/request"; +import type { IncomingRequest } from "../lib/incoming-request"; +import type { WalletKit, CredentialMetadata } from "../lib/walletkit"; +import type { DetectorResponse } from "../lib/rgbnet.worker"; beforeAll(() => GlobalRegistrator.register({ url: "http://localhost:4173/" })); afterAll(() => GlobalRegistrator.unregister()); diff --git a/apps/web/test/build-boundary.test.ts b/web/test/build-boundary.test.ts similarity index 94% rename from apps/web/test/build-boundary.test.ts rename to web/test/build-boundary.test.ts index d69a38a..7be9aa4 100644 --- a/apps/web/test/build-boundary.test.ts +++ b/web/test/build-boundary.test.ts @@ -14,7 +14,7 @@ for (const mode of ["static", "dynamic", "worker"] as const) { const directory = await mkdtemp(resolve(tmpdir(), "authenticator-boundary-")); temporaryDirectories.push(directory); const entry = resolve(directory, "entry.js"); - const apiConfig = resolve(import.meta.dir, "../../api/src/config.ts"); + const apiConfig = resolve(import.meta.dir, "../../api/config.ts"); if (mode === "worker") { await writeFile(resolve(directory, "worker.js"), `import ${JSON.stringify(apiConfig)};`); await writeFile(entry, 'new Worker(new URL("./worker.js", import.meta.url), { type: "module" });'); diff --git a/apps/web/test/face-detector.test.ts b/web/test/face-detector.test.ts similarity index 98% rename from apps/web/test/face-detector.test.ts rename to web/test/face-detector.test.ts index bf18348..85d5c40 100644 --- a/apps/web/test/face-detector.test.ts +++ b/web/test/face-detector.test.ts @@ -1,6 +1,6 @@ import { test } from 'bun:test' import assert from 'node:assert/strict' -import { startFaceDetector } from '../src/face/face-detector' +import { startFaceDetector } from '../lib/face-detector' async function withWorker(run: (h: ReturnType) => Promise) { const h = harness() diff --git a/apps/web/test/fixtures/rgbnet-decode.json b/web/test/fixtures/rgbnet-decode.json similarity index 100% rename from apps/web/test/fixtures/rgbnet-decode.json rename to web/test/fixtures/rgbnet-decode.json diff --git a/apps/web/test/fixtures/rgbnet-resize.json b/web/test/fixtures/rgbnet-resize.json similarity index 100% rename from apps/web/test/fixtures/rgbnet-resize.json rename to web/test/fixtures/rgbnet-resize.json diff --git a/apps/web/test/hold-steady-progress.test.ts b/web/test/hold-steady-progress.test.ts similarity index 92% rename from apps/web/test/hold-steady-progress.test.ts rename to web/test/hold-steady-progress.test.ts index ec2112c..0f53114 100644 --- a/apps/web/test/hold-steady-progress.test.ts +++ b/web/test/hold-steady-progress.test.ts @@ -1,5 +1,5 @@ import { expect, test } from "bun:test"; -import { CAPTURE_HOLD_DOT_COUNT_V1, captureHoldProgressV1 } from "../src/walkthrough/hold-steady-progress"; +import { CAPTURE_HOLD_DOT_COUNT_V1, captureHoldProgressV1 } from "../lib/hold-steady-progress"; test("fills exactly 64 progress dots during one continuous hold", () => { expect(CAPTURE_HOLD_DOT_COUNT_V1).toBe(64); diff --git a/apps/web/test/legacy-profile.test.ts b/web/test/legacy-profile.test.ts similarity index 89% rename from apps/web/test/legacy-profile.test.ts rename to web/test/legacy-profile.test.ts index a2b4236..25e9c6e 100644 --- a/apps/web/test/legacy-profile.test.ts +++ b/web/test/legacy-profile.test.ts @@ -1,6 +1,6 @@ import { expect, test } from 'bun:test'; -import { parseLegacyProfile } from '../src/wallet/legacy-profile'; -import { derivePasskeySecrets } from '../src/wallet/legacy-passkey-secrets'; +import { parseLegacyProfile } from '../lib/legacy-profile'; +import { derivePasskeySecrets } from '../lib/legacy-passkey-secrets'; import { createHmac } from 'node:crypto'; test('legacy passkey preserves credential bytes and registration status', () => { diff --git a/apps/web/test/prf-result.test.ts b/web/test/prf-result.test.ts similarity index 91% rename from apps/web/test/prf-result.test.ts rename to web/test/prf-result.test.ts index a1dcf21..566f182 100644 --- a/apps/web/test/prf-result.test.ts +++ b/web/test/prf-result.test.ts @@ -1,8 +1,8 @@ import { expect, test } from "bun:test"; import { runInNewContext } from "node:vm"; -import { prfBytes } from "../src/wallet/prf-result"; -import { deriveWalletKeys } from "../src/wallet/session"; -import { WalletOpenError, walletOpenErrorMessage } from "../src/wallet/errors"; +import { prfBytes } from "../lib/prf-result"; +import { deriveWalletKeys } from "../lib/wallet-session"; +import { WalletOpenError, walletOpenErrorMessage } from "../lib/wallet-errors"; test("provider arrays, typed arrays and native buffers derive the same PR9 wallet keys", async () => { const bytes = Array.from({ length: 32 }, (_, index) => index); diff --git a/apps/web/test/registration.test.ts b/web/test/registration.test.ts similarity index 90% rename from apps/web/test/registration.test.ts rename to web/test/registration.test.ts index d8439cc..7d0db25 100644 --- a/apps/web/test/registration.test.ts +++ b/web/test/registration.test.ts @@ -1,8 +1,8 @@ import { afterAll, beforeAll, beforeEach, expect, test } from "bun:test"; import { GlobalRegistrator } from "@happy-dom/global-registrator"; -import { activateStagingWallet } from "../src/wallet/registration"; -import { registrationState, saveRegistrationState } from "../src/wallet/persistence"; -import type { WalletKit } from "../src/lib/walletkit"; +import { activateStagingWallet } from "../lib/wallet-registration"; +import { registrationState, saveRegistrationState } from "../lib/wallet-persistence"; +import type { WalletKit } from "../lib/walletkit"; beforeAll(() => GlobalRegistrator.register()); afterAll(() => GlobalRegistrator.unregister()); diff --git a/apps/web/test/requests.test.ts b/web/test/requests.test.ts similarity index 92% rename from apps/web/test/requests.test.ts rename to web/test/requests.test.ts index a5d9948..d11592e 100644 --- a/apps/web/test/requests.test.ts +++ b/web/test/requests.test.ts @@ -1,10 +1,10 @@ import { afterEach, expect, spyOn, test } from "bun:test"; -import { signedRequest, encryptedRequest } from "../../../tests/integration/fixtures/request"; -import { loadIncomingRequest } from "../src/requests/incoming-request"; -import { parseConnector, returnUrl } from "../src/requests/connector"; -import { parsePayload } from "../src/requests/proof-request"; -import { createProof } from "../src/requests/prove"; -import type { WalletKit } from "../src/lib/walletkit"; +import { signedRequest, encryptedRequest } from "../../tests/integration/fixtures/request"; +import { loadIncomingRequest } from "../lib/incoming-request"; +import { parseConnector, returnUrl } from "../lib/connector"; +import { parsePayload } from "../lib/proof-request"; +import { createProof } from "../lib/prove"; +import type { WalletKit } from "../lib/walletkit"; let restore: (() => void) | undefined; afterEach(() => { restore?.(); }); diff --git a/apps/web/test/rgbnet.test.ts b/web/test/rgbnet.test.ts similarity index 99% rename from apps/web/test/rgbnet.test.ts rename to web/test/rgbnet.test.ts index e4f54dc..51e1cc9 100644 --- a/apps/web/test/rgbnet.test.ts +++ b/web/test/rgbnet.test.ts @@ -10,7 +10,7 @@ import { faceGuidance, ANCHOR_COUNT, type ModelOutput, -} from '../src/face/rgbnet' +} from '../lib/rgbnet' function outputs(): ModelOutput[] { return [4, 2, 10].map(n => ({ dims: [1, ANCHOR_COUNT, n], data: new Float32Array(ANCHOR_COUNT * n) })) diff --git a/apps/web/test/selfie-routing.test.ts b/web/test/selfie-routing.test.ts similarity index 98% rename from apps/web/test/selfie-routing.test.ts rename to web/test/selfie-routing.test.ts index e7141dc..5546b7e 100644 --- a/apps/web/test/selfie-routing.test.ts +++ b/web/test/selfie-routing.test.ts @@ -1,12 +1,12 @@ import { test } from 'bun:test' import assert from 'node:assert/strict' -import type { CredentialMetadata } from '../src/lib/walletkit' +import type { CredentialMetadata } from '../lib/walletkit' import { credentialAvailability, credentialRequirementsLabel, type ProofRequest, type Constraint, -} from '../src/requests/proof-request' +} from '../lib/proof-request' const request = (constraints?: Constraint): ProofRequest => ({ id: 'test', diff --git a/apps/web/test/wallet-session.test.ts b/web/test/wallet-session.test.ts similarity index 93% rename from apps/web/test/wallet-session.test.ts rename to web/test/wallet-session.test.ts index 9e6acd2..075fcb0 100644 --- a/apps/web/test/wallet-session.test.ts +++ b/web/test/wallet-session.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { deriveWalletKeys, parseWalletProfile } from "../src/wallet/session"; +import { deriveWalletKeys, parseWalletProfile } from "../lib/wallet-session"; describe("passkey wallet key boundary", () => { test("rejects malformed metadata instead of silently creating a replacement wallet", () => { diff --git a/apps/web/test/walletkit.test.ts b/web/test/walletkit.test.ts similarity index 98% rename from apps/web/test/walletkit.test.ts rename to web/test/walletkit.test.ts index 2648038..f9391bc 100644 --- a/apps/web/test/walletkit.test.ts +++ b/web/test/walletkit.test.ts @@ -1,6 +1,6 @@ import { test } from 'bun:test' import assert from 'node:assert/strict' -import { WalletKit } from '../src/lib/walletkit' +import { WalletKit } from '../lib/walletkit' import type { WalletKit as PublishedWalletKit, CredentialStore } from '@worldcoin/walletkit-web' function fixture(actualSubject = '0x01') { diff --git a/apps/web/tsconfig.json b/web/tsconfig.json similarity index 56% rename from apps/web/tsconfig.json rename to web/tsconfig.json index 7287f61..4275167 100644 --- a/apps/web/tsconfig.json +++ b/web/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", "compilerOptions": { "lib": [ "DOM", @@ -11,7 +11,10 @@ ] }, "include": [ - "src/**/*.ts", - "src/**/*.tsx" + "App.tsx", + "main.tsx", + "vite-env.d.ts", + "components/**/*", + "lib/**/*" ] } diff --git a/apps/web/src/vite-env.d.ts b/web/vite-env.d.ts similarity index 100% rename from apps/web/src/vite-env.d.ts rename to web/vite-env.d.ts diff --git a/apps/web/vite.config.ts b/web/vite.config.ts similarity index 85% rename from apps/web/vite.config.ts rename to web/vite.config.ts index 4c04ea9..7886780 100644 --- a/apps/web/vite.config.ts +++ b/web/vite.config.ts @@ -2,16 +2,16 @@ import react from "@vitejs/plugin-react"; import { defineConfig, type Plugin } from "vite"; import { fileURLToPath, URL } from "node:url"; -const repositoryRoot = fileURLToPath(new URL("../../", import.meta.url)); +const repositoryRoot = fileURLToPath(new URL("../", import.meta.url)); const appRoot = fileURLToPath(new URL("./", import.meta.url)); function path(relativePath: string): string { - return fileURLToPath(new URL(relativePath, new URL("../../", import.meta.url))); + return fileURLToPath(new URL(relativePath, new URL("../", import.meta.url))); } function rejectServerModulesFromBrowser(): Plugin { const forbidden = [ - path("./apps/api/"), + path("./api/"), path("./experiments/"), path("./tests/"), ]; @@ -45,7 +45,7 @@ export default defineConfig({ }, build: { target: "es2022", - outDir: path("./apps/web/dist"), + outDir: path("./web/dist"), emptyOutDir: true, sourcemap: false, }, From 72b0c53d8140a940d80aae4d124b1692c4b27d3b Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 11:19:49 -0700 Subject: [PATCH 25/38] Document published package boundary and refresh UI review captures --- README.md | 2 ++ docs/review/README.md | 10 ++++++---- docs/review/authenticator-desktop.png | Bin 41161 -> 30417 bytes docs/review/authenticator-mobile.png | Bin 31888 -> 22764 bytes docs/review/dev-desktop.png | Bin 134231 -> 121225 bytes docs/review/dev-mobile.png | Bin 112420 -> 100514 bytes docs/review/request-desktop.png | Bin 52898 -> 42277 bytes docs/review/request-mobile.png | Bin 42700 -> 33665 bytes experiments/README.md | 2 ++ 9 files changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1cbe83b..8a4f5f8 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ Unlock your World ID wallet with a passkey and approve requests from apps. Currently uses staging and supports proofs with existing Orb and Selfie credentials. Selfie enrollment, user presence and recovery are still to come. +The app uses published packages, including WalletKit `0.27.1`. + ## Run locally Install [Bun](https://bun.sh) **1.4.2**, then: diff --git a/docs/review/README.md b/docs/review/README.md index fd354db..faa10df 100644 --- a/docs/review/README.md +++ b/docs/review/README.md @@ -1,5 +1,7 @@ -# Request review screenshots +# UI review screenshots -Chromium at 393×852 and 1280×900. Captured from the built authenticator using -a test-only signed Orb request and mocked registry/bridge endpoints. These images -show responsive UI validation, not a live staging enrollment or RP verification. +Captured from the built app on October 14, 2026, in Chromium: home at 393×852 +and 1280×900, developer mode at 320×852 and 1280×900, and requests at 393×852 +and 1280×900. Request screenshots use a test-only signed Orb request and mocked +registry/bridge endpoints. These images show responsive UI validation, not a +live staging enrollment or RP verification. diff --git a/docs/review/authenticator-desktop.png b/docs/review/authenticator-desktop.png index 96e00003bfef457e3ecfe41280591b70776d6277..ec7614e159a2098a22c6a026e3d346e7ae81b37e 100644 GIT binary patch literal 30417 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 Pi|7CY6aAZOY>)jHYDYvM literal 41161 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 diff --git a/docs/review/authenticator-mobile.png b/docs/review/authenticator-mobile.png index 29e86193ae6d8596f2218912804b848b98ecfc7f..ebabedc29657529a5aa9321aa9ff68890aa19bc6 100644 GIT binary patch literal 22764 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 XX7Pf4YfWb_a7PY{c6F>q`6d4kL%D+^ literal 31888 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 diff --git a/docs/review/dev-desktop.png b/docs/review/dev-desktop.png index 7ab8f698d8fb4740488b2c4d3132e38987c95e24..f7c185c2c39fd35e481311b14235b0a402dfd60d 100644 GIT binary patch literal 121225 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

      !lvftXEEr51)s+Obx{|P5MUwpWVv8lRLVrj z1KT!VSzbf}!9#0}nLl|z4RYNKXxxepKX7a}#iIkDoNz1*3J3sRsCK0$cU!Eqti{St z69t}4PEykPs^qnSpjI<@Ld|;qURRWCabeaf$l>h`6TM`Joi*^WruD>C#=RsK)Xj~d z>f&gw0qP#T1&sMaX4d$Vr$-zrM5c%!d-)1>2;5Nfh%+7{sagn+m`%Ob{S2IFnF1nT z#WKM-QPAU8r#I0=WYvX@^7O2E|9ej*f#R)y4f`#^RtNd=gugAkFcyAZ;>8jEnwbWh zh$@pF4QvFjFfDSzZFyE@{Vv%~$0aBq~`O}9^^;N?&A}tUk9yT34 zlcej1ck2180!=o>m7W~_==#0XhG9Rn{HV{%tj|l!D7@);!2K6TnX`mdgZn-ABCuz5 zTPa7?vH@gvx9axi+J)JHDzF{drxZ{+W<@#6q=?mHwpZrQT@pe<_zGHylTcIg%y0Gp_nmGck@y!J^vbXH@R@StUv%kkWUKt|c|3#jXk@kWVPYkhokbm(%}tMwZBKE998gX7np^hH7`>oO=ZZmPa z2t03@4?7XUUr9If_j?4*J%sZ&^aH>^WaVIi6t@gGB%~(|600J;G9ZO5`wk9)f2H^0 z2jvch$L08!j=U@14x6KcI|o2t=@jcL0Pw)`q-|bhy$h)=e_~w!u?!2&k(4(i@HQ`T z-xT`%PMz>~Azk*WnKOq!s$w^@`aoNY3vW17Gp15wA_GlTyw>tm>H}l32|^tvMJso^ z(*G%$N!zCfzU-qIPX}+pAnKw4Fy|^4;Z;YnkTpA?!BIlj4lEMbHc8zozeIt7SO$tJ z8owh1(ZN)TWL@GVBw{?x0{x+A?b9;koV`S*6$V3!IR&wHIJPwXAjHhONNUVuVaUBF z_B-aEhE{fAIXAPNUhQO|apY_la9n@#3}G7X>4whNxat%55Xa+{<`ZF~nP*q*$z&c% z$}6rCv%Xau+*Ex3p>BoXLf@kd0WbJ!ietzA54q$2FC)`ua;k0reIZ3M`JMPHCUu)K z>3n~AIX~()W)JGNG{`boj&Ex_@nIiZ^B!iFYaaLf*si^~r(abxu@+uzFB)9#lsr~6 zy5OvxJaDu{Hwlk8)XJbgbjG2$E_AQ>soOBzBkt1^T%eG0Flqw!k2mDr2Hds`{j{Vf zDw+qbNx`>nM)E#fjz_RM?GRoyt0^F3<4COxeSV`to{Yk9`Nenu=&h7TbFk zP?3QfdhaR5c|{tS#d*qg|L+a(tv&iv8YJwCSrl|+eXgAoMEafEDBUSDX?J42Lu5zV z0-v6>?e06y1zrRf}vvN`=eoFN>B65h&TmSoIj^JjIiY!d|d}pSVi>eZi$UaZagwd z?6Zf2c<*n#D`uce(4Ib!_$_|qzkfHL>Wf?_yiK(|cw+56$kJ2sfM_0Vx&W>ZJYEq0 z(Nt+u?Iy|auf7L)3IB#_g+F@p&XhZsci|K!3}`xGcNcc7Hh+}d{?!$;HlEzVXxj|* z&Fu1@wrYI==c3BZi$z>)4eYqAQClyczUBhdu8(O2fbf*bQ`jb6iD~$i>OES0t@G1Cw+T%9@9%rB4$(n z z58>9o!ayy4HFuLof@c1kbPID?v9tq8M^c9DZd&tJlz^|Pnn&Zx&p^9?M0SF!-*CQD zlwX%^8dyNWr%y;kJiUEKj^moZDaLur3BQ{_ylp1B$MpAU^9^KfaNvUo@-TAXbZ(X7 zQVW%E-;{z^_PEEDNo)h%wypF%v4j#Nb>g4Oi>G!T(Un^Dd;wT*vyq}02N>?>fuI2- zY2GgYM82|!lt<*0dlX5IqwLp=BGKaPSBl3{CnVBKt}a3QVT51`z|woKoV~hT`k3Fj z!-IPmp4}rrmsgSwjED^d2|=(icnxJa!TZ}n720;KA10Y^o7=0qGbFmKk?)7RBE4hK zQxJ^}1_$wjWFMh%WK#?hpwr+?%!%-u43uDOoWd+Q?J=>i~nQ=RPd0qc-LuKD{I2 zyPjV7r6}UMZHHYkZBY4|o5|bw&yv}n(LQ#;WYc-7@iG!rbC|YD$OkuiM}6YG99aGG zHI^XGT)TATXG2~AG@pv6{5`y`EP%O9$0;H*vxJq%vN^#ulq$L;f3Gh zPwF;nildP~c(snIZynq1QuaSsSmt`R_P8WhGxkI^wE<_!b@_QDu*yoEJ83}sUIK5Y zv`6}L8OOc=WqgEDV%v{jo9cW9`zEn?97Q4Ob4mDHXD zS+=S1NRsaLwaL;&8`U`A3`k#v7*L$g{b+h;Z8uy;+gL+cRDml5Xa=XyoFZifI;DR84 zLi@(W!2->S9Y1#?>0(RqV(C5J*g{KhnM+n_cg#<3bolP5{Q%OQoU6h;%mTj(`uV=G zK3}%(%zk@6LrN=uJ0lO)qUh12F-V90@p@z72mO$!-Q?|k5)DL;k8Lyq!C!M9#*}bR z4o3LCVO1VS-2P-i>=%n+lnT4AE5J!CovartPWr0wH&bSOG<~O?l{>B?yyxBgTaz2V zamb&~d`7fWIWIz9swUhwZV9zwj}6#&9xqHy0gx4XirvuI9Wo{kD#M0f>=# zcIKUog@&__O4+N2M&R1G+ZQnhT+?Wsqi%h5YXZPITl$CTo(7vgWl0ct2>@p zraYJ)sPnDj18;QD$G1i3FN)AybZ=N5rljywGvy2BPd6F%!~g!&rDTlQG9}^T-LZ$A zXE2~`4#QLWuI#GX^+)AC~g-n~1@JxdaQf43~D3bZ{(x4qW%gxG&d zuiw^Gx^$G+o3BsrJdAF=Y@|=Xap$IuUVGW@JX*nZ_u-{!R$RGhcGoxda6Se%pM0bJ zTFofs_;APW2@j*J99{@xlm}{u2pfd#8qB|)3BK_B`lLycUEX*-~G5k%2xukF% zsUcvjpu@X^b2_*QJ($$DKf2}bMsvLQrVZo2AIj}JTP^I9Pm%xn?8_}G|Gq!svfE=k zp|+wE@bHY&DirLXybmGXqj!lYQD@z;G7H89QM;R#Kt=a@L1jb;w=f8_XPG{?q7is; z;;X__(VcRs7Qe)AJyl7ATn2@!3VNRC>p|j98a8{=9N?;%7D7&^n{PsYh2JCpy+>mB z&7b|*`hMBsIJ(GgE#+NrH*7dGaWwiQ=dUQPjh}aV+SVV`qqfb%h@KA>n<9IF6xGL~ z>n&7PxH@%Df8JR4_&t3rcfvNsURc<)5v4eMkZaRWhH;ZIB7{^9*2eZyW-5b4+{ESj zecxNR)wc-G?tO_>ckjiKwKUjv?!vy z*(?>x(HA<35M@T9Bd#dSLw_MLl$hN;oHOEx1lo5-_|zjR{#j8VSEKhRz!2yFWLrKn zy0wel%%}Ny@wCmyvORqM+h|;9-JUUjm|?sJ>vqNvM}fW^f!j|Db9bWmS?s~1u9k=)5?LNR>1f)@x}kmdlmaeQ2}a4Ss@Fva1^wCf zjlih#JX9R8)1)yXbRJo7(sAlfdrwbgJg^`s=<;ui)%rwh%@1LtMY>+>`Or52QBLkw zJV{@de-K(dDRudoPwAjMKQi44Uk#-`BI~HafgXzpD@kI`TgJYf-Qf~1@&imfGD?Q` za<;h@*ZUtJRoBdfUc;nEv{27^j)iTV6I=e|_B+%6`-hpHYhOJq-kKpvJ?9z<*ZiL96^22RPmpdAxZA>%3m0LD;FW!`CLz3Xc zRWi}r?GgVBSP9*Kf2s1Qqv+P&t@j}jbxYd1v>siKD&u#apKaq;tULVbPRUN;_}#Lb zzh{o;e-ZbVVO6$U+o&{1hjce8-HkM&2#C^1O9_)uKu|y?-Gb5$7J`H{NOy;VfOK~W zh{QMMv!3TQ&|69lM5t;M8uWO8Pjx!*MHRuTU;X_DyQKMB!R#$J%_s3TK zq~cY15E*g#X2Kj{q$|8^8cAM+^&Vdg=D`)H#%Kv;=TvBrNE6@@B z^9P}L?C`UiN&oqy5`WC%D!Viw)4@v%1$+|5{}=}8Ac>N_=T?Ju$ z1V+bTwE!vs7#4ldw@ZX20ORa_BTV2pPXGJ^NM&>b6MEGcM$;<99NmPca!Y(%;(U_`$bNux{esRFcG7F1t!>c0`W&v#nNWie8D+l)o@p*z zajy!a&_Ti~U@k2rBQ0Y{nvnvRyJe?4>NCZy!Y8E)fLgH*Yz4S!enO{>(oB_@W+?=q zn&db7W^g-2vh^pTlw~kvos=tX|AP4dE-dIGfif8hYs+?0Mdc2dA-qe$Ifs$28Ej&d zrI&G8$T$HDJ%_D1t8!y0ip&c$kYrdQ3i~QTMxZh(U{SkZLQ9PsMJ+fFb;`B%atW+~ zMti}D9ithr36!}F%5x|&2=OztQvFHQ}{TCo?(F*HyW^`1Ls4xA?{??IREvGL;x zjIaGRO_@jRb^`>uRKy&Fi{WLoOr=Cj3PYZiV}{G0OIVwK=Oj7?WQ%g4Qp16h0j} z-=&V3iS%0&h?PyRPY6vpl9X_`y{i!ekFf#36aD0tc`^-8Lf4xwWHRRX)nN>UVlKb4lEq z(=|AJVY_8^hFj^eI2ritH|(A&xe_Tq!cZ(iYgX!Xyf)I|W(?ms{33zIamzgsjrX0X z5-2{PVJAkDgoVPYn$}Mbi3`NAvrJt-G~4;ixi zD1XjB%c(S2LRE*@wUIAoyjRj;uB!of#2|)xURbN#ls@9b`etYbOAs7%lwB*#$;ABx zRvmCD1iNlQlL$4Ct%d`Wc;WYKl7ZjYXTz3GH@LaLl&?EeUS6pY{HX)bR(UI@bfK^U zr#J|$fQy|()7l(XDV;+=42x~zpy9-#ivjLL>XS>~9k@2hE#vR8zP}@U%OO&kQ~-8^ zEsy*CC4hYi29d=^yxVSDaNEZN%6_>2()AWdUm|*9fqxt`CVy)bE6Q z^CL%%0RSsji$!xGBi#e0#K7Pm@Pvb-)D6SoAg@URT$cNP8!pd@d2bh?f7%92DBlh? zRq0fUvQ}sS+iQZoB^aEXLr#3$%_4Xhn)j`^bqDk`%BTgF2zb;TOh#h=#9Yj~Z2~G& zl`y4PG3GGrR~_g6f#=f(s7sWGNNF@STUC%!i^1%MPO^FwzX*<18%yGP=+2`Usvl|; zgHB@;wn5zaYF*LdFEK@{fuN(E1Z2aPmyxO;Xwi!m{Tz?qZ^GU(RNm~3FyaG?^ zuiUf)7*NQz9Qv;N&nCE?pYjzQKRiI6hDt+M)vF^WuHvnnrb7Y?nddSWM|rz?M#75XYAI*0Ip1;$*Qf-CB-(ih z%8UV$NJJCzERdcO!Q!fluI{{PIUV1L8_+xWF#blyA^aZ0Whr|U#`Jewj*Mt(?FMBE z_)bHb$!J<-$BQ3pfq*O~c19c(Zy#>H2Xqtz8aR$C9RI}7c0>~lH&d{%N zN0+EFnnLn@04LW6d?VKV7Lo&)s9$cp`Dg~yT^J?|0yh+SN4Y4$SPH8RICsK zagfd8?KEhkMxH{PWuk3_?kxAaUvr2FSEHgUIMPq(tt>mXnt%Gh=`)l7+u$$XSQ(_` zvA+?F?6uq{9;JJ#NIvk}a%wX_5S>LXj>dc8gd?+4%V{M~juN!;4i)8I^Rpw> zUN5%lDuU9V?@aV4Z1Uc&7FL(y;PelCLqLHZQ4VCTfW<+>r!cZoQ&s1%t9<1ID5gLQBJ{I{G0?YyQ)3Az;(Nkzq;*)CbmE{ zGXu)_wI@}+vPs!acXeVYq&1sr1zSKm9VgLW!PzZ%$jRWBZh_t}*eeQ5S_rUW$e`yf zi#nqrOsk>~&t;Tl+Ds&Zm8ZUs<|S{@*hvkQ>$A8J2ip*M#(tSC#lRIa^aFPHD z<~8VO-t%s)<<%WJ8&xS0t`|4jnWYS$n`PV*?v~!JBa?m`@=8R|c;vGM)dEe7yB20C z^8TQr)8IXI6TOfrIXg_resFuwBVN`TBNxlXLjG!} zSQOq9+$an}=DA2?Y8C`@uz;?@tCUcc^5G1b{Z2NKH+r~R_Yg&!AXWKosi%am(S9fY z49b7x4FT8J7B@W?TWtrh6PsP5?2xhOerx3zoKhCGc~33Pl{UhE%3m0B&on& zYDU60f4NYMzCRX*OZ_aG2C?=>3}f92WiCICVyT8O09vhnPO6&zpWe0VmUDGG5V>cGzigoEY}Edp3dworm8IE+MT;J8LglZl3Ta* zbB!Ey7%9Eq&cHYRRYpxbUHS0-d)7Rs@&Lkt)NRdcLl1RTSL(9XI&M9geCXp+w}+h` z6(q3E3!EY@$(!FEHxz#qIw9kg^EThq+WPbUA???)#Tj8VW-)qwWx?55H!Gf2$H%ph z>8z|07b?CSDtC$2>g_tDWhUq`kM^bv^0e`h9j(IXQSH+ znC=oPb1I(CmM(WGT1ju;z@|WZvmHgWSHS#GlE2~_Up*l${g_5i`kLW4C9=EmWU{a{ zTZ;5j+2oHY?2DYez@y0|Nc|IhFcBCN*7t1hL|9HBpZ2cLwf!S=e;YQ_v&jln{Cf0; zfa}x{SHl#U8S50mbOjCV;E~x#hk4Lru2XSzWR-5#V}WCcIl{147DsZV+x9U&>-fz& ztSbxRt7(B2S6Mxgn~^7iVXXP%bV4>1SY7*9CMN#A?6FrDAg8+VkRZ+9IpNsX8p>3m zT%_F2Vk^Gg*l-(7$2BjooJiWf>I@pyn6xY}dsS_dLm}vMau%{qU{Y1(AL2ClOKEbo zgW;>d?!qQg*iz8Ync2|3+|B|OwymOIXko`@CDKXova@(WEQ}z^sgM0?&sy*N&aE)+ zF_1y-t?E7-NTi-)#5Lqyem^HPNlhUmkA}hcIbV?UQc_{o{j~{L_}5CtCAL& zU|ml;A||en*{!cSWu%A$rw2*m@4Jm zaf^%k&*Yj2C#)A0opu{Ri~E-3bBNfN@5E8pn}cOWhH|eL-hCILHagVmN@=9CbNA|n z(@bv9*|{yNJe#8cb)c0xT^1HO3>hQZG^E4EA>Fe3Csa|AbXKA zvJw&alWif7n7#7km0^g|TXZY>l()jV^w(!uI3|7jj%)NMG&jk@6C=4`X?Bf$UZS* z&$1xoGr7fT?F?=WqP*1Houlbmyl)#$&tk^hO?|e?Go(RfdvUPT)A0b8S_N4b`qF7S zAk2?Q-0FrnVQBaQMR$f{>5wYiP~Q{mch@E zTtA;-)e$+|RTZc>)LZFKcYPg;J5Wu|Fzq9HAtST&O1{r5Z;zf+wQ=S^^QY@yycFul zpsF?PX5cs(G=7pH?5f-NNrx?{U(_4lFkJOQ5nO-`uHQVf0(l7JjMrm1Hk|_FGa# zr(>w1oF}f{W%sMOhct)cu4sLx0%DqN(-kUcQbm`%5=KDS19a<#Q3g<@c9AHTujs$4 zd%YL1%KYlat>EI2G&8jsm0&j=C~Wmaj`#7=WuyF^Qro%xW30KW&EEAjr4nBcxS1w= z>qa(zH;hr1QY3BK`)U^g!ja1>^!N*tJD1d@=xeiw_K#s#bX&7OD3{~?mu&l->z`@Q z2X{{ocHZ2Wk|ilJqW7#v>AGU~t|x|N@GUw~@xO4V) zsiq|gj*NT{OreWe(M)>%73rcdil^&XDKx{yl#c{5Ybp7~$b{v#2#s&zxn#x-z3$7NV z;JwWAt?7DcPjgrbzy>75MryH8g@~rZcee=#zJ{f){P^}>(#M437>@l{V`i6X*&1Ub z1Y^Bfc6|f@`u8_x2EItfMqt4mLuz*K0V+?^#d|kRK6AFY>PK*Jp?&#l6gQxx^;dG| z=xPCZ%=C>fb@P3DwlZ6H8Q$Nuwd;>s`7;e5UGJmXgrlBL(Qe6`imgn&PlNA|$>;%= z{hlMzmum#EcV`b*;KA9%2LUhK=v6LNB86#P(-L>vK*Q4FpVpiStA zM`>vWS!EA;g}=5e;$TrbRsL=n>5kWoaBzt;=U8m&_}&{fI6b`(vl2^5=0md|^K$Sl zT^>Gjsh?PQ$lW_-m9|d%oqz_02PFg(1*sCP-ID3B>eS6L+Iu4AnSGno$E>UY#oVYA znlKUo_@cs<;x2v1JN39`*9L?Rbj)gu-pIGzGY!-xj@?=@$-u{7Y48+J+daP0Mr_Ed z{sZhMhYJUJfW#4&+aANj)HgaM;ZiZH5n5GXcx4++KqLxgkhY-L;uLUa$tB>-czav{tb=<|0Ti!N|7 z4Bxf*6dNzHK#Y2g+uogz!lvf(+%ZxKHLC=*@vR;UPQ2E~j-iZ+?`xUcd-rtrUWqyK z9Ol0ZNKWssHlKO0&uKbBHiW6>eUtbSSTA;Fj)AwtyqWJ}pNiyCAJqwggkwxzt6cb0 z-g!~p1)1QQQ8riatjuNoC1TvM@`osP!#X{O7>6xzNizzgms4-QTanxGjFjc3sPP0| zWhe(So&#dKu6O@Ek}A5MI&UKt|A_DFdk(v%+)DzhG%70Ixy(shs!sW}#810=0Qi(flRadLxeRK9$&)hELhJ^2_XJ>14)M@U7Q=G>pbS z3P8DLn>F{`;$-(I<%(_b#+&HyW?h61GJqtJ;bYI;Ul*&$*Yx%aQQjUk!}aXepk%UK*a|T>b@hrRB zoOKF#9t&{HGO(-|F$5-kw1XB zgJ;F7x36r|k5a^_0z#%2TphreMP8^~MRmnPQ3jcm_1Tb}K9DQ z4bL=1#y4cY-v7#+W(R&Rb8j2220Qy>F9CqiA)vYdzA?bZs%3L{~K zqXaHPNYY8pv+TUqQ@Q zaIO0*p+kuCM-Wv*b;#>bd8JCif*S9t(}C!!k$LMbte;3aXhTlMPTF>RAIw&?*2w}f zq5T{-b*?7vs&T9;ALeEgpYRnE@#obsy8gJXn>j@Ny_tV3$Y`FXHI6QpNS0)PNA36K z&yj~=1pcYVL3bC&lw@?xw9%G$={pb zQOej081c}i%W#*bk4sGesPW*6u8xe|be*Goq#X~g5??U7!Jg#R14>)D_CXW1n-AHe z$-i^TrHP}?40EIoXClTIiD%rG`|Kjk1o!s3yyDR%NX;lx&+Icz=3nn6<_Lv81KH`)H$ut$Hgdhlg|+A*fuu(5N8>NhgE_Q5=m%^f(#-9G{ku3TF6#W` zh~71V{&DF2V2sa7K98yv?AyBuybTEI?T6KIpZn$IR?b`bpB+5TIC}eTV7bpt*Vs8+ z4lBD^>@G(X3tdGp2OmzagPmA}39PMS`Gpr;^IeO-j17*Ch`Fg=fHmdhkDVo|4S|5U z+f5veOOBZ@nML(tALYg6!!?<7@rsesla+z#$w!rCkI00&=Vdy`O6~-v8kQQd8`5~C zb1yLY{%Ku0G16-#&7CM#kR8`&Ubdv;df$7ba3nx^Vyso(s+nCkb_-{XHxqh#j%Km*hIqF%UQo& zKx{g{HR9Q@|0&)ddQ;b;tH<8dEd6+`*sA=OZum*2_CfV)vPpC_ zqOdDV`q66ZBE)Gm>7LE3<&{&cX2dFDER$pV&XWF4m7nAzY~M&)zmvHT|2F}#?|_PS z5Ik#ps#5Fb)JPW?`QCf<$-8{2(4ns&)0uAR4ZNGW(O0u5Sn(8#p)y}VO)y%ydt%Zv zX`Y%RwXW&!ArRZaO@<;hxqOpU_gz3%*xuWCjtgLYSsfU~k?WC0y;~?sUE=*|GcK;U z=273qLOn84z~X{_9obZ4lPblfKm9?L`2u>a=vyhllc_l^V&x%(qO%do*t+paA2@fO zFkx_U{UEG0)59w5yG)kY4giCRaktAV`s&sxNnk2;!uk<$ajyKW>S#^T@n_*dZsE@8 z$M`~R%bCEr#0{GQN3u*uYnS-f=)cIqhrZpswqM7xfdDXg{6(i9l1Nn1n{8&CfB|}k zW|KvuHid}ciu%I`xTcdm`4)E+nCykW!H%%y(YDggH^N5FGFPj=*W4CsLu*IBm0S7! zT()hu?KRB#$TTaKu`vH@&g3?Gvgg82ochf^>!O>I)~S!9hEXL9WN{**NtNf5TCLD# zF)=y2So2=H=5#U+=5AXUpIJPAt-lpbNUc>cmo9ckX;i-@D4eNA{%=%~NpO=6wk zr%+!_wQsV(roR2ac&LhXir7RHn?9p0gjHLLo^)#6#4)&eeA8*O-@BSiP;COsCNCns z>7Wwd^(CSV%h&vD*tMHuN+{~3os+kdPVkQ;^ZviETPqX{!@j9J^tqTM0Q#F8j#%4yu= z6N~_nyl6(TWr)t78GK_y1EyuT5YRw2Tfvlgz->%MW2Oz#HG6%`V6adlSy6~ z74aH;HyhGqLALM8;j@_bZcy*Oe{8Yj@Z7{_T%M6@KQ%?0$Q^&G(0Q<2o3GN+s);=) zh($0HkPs7W2kJL?OubBS3fZLPU%VbtTgB;L^2SZ~=E!JX!|S_OQtL5zA(cnar?3;a z>;$LR8)?aUy~pNMstclU%N=~Y334|dDZOHB(LI311Sd5uJyf*Od&{O!bF6ERdDqu9 z+&!g{se0d=orXQAN4Q1$)Wy$xZKzABQ$=|o72p1gL~JhlHja$xI1wrpW{1H%IH@Xd zSJ=n-S>U^*(hw0BJl7%Fp}!pQqWl>x;L4eyf%7Cg6&lU@!p~Ir8{j{hSm(zqt=x{a9ES_Ra*#-So6w_AobR)<1_w96T`C}ax>EX8VUUrY11@nl*jluD+B4kAcdW4 z@;EHlz%GA&?(D-s@cg*mB!1>t%4}l-Dlz^Na5tTAXYMqp4EnvXpaVMwNjIc)>?Hr9 z^%$=EzEudQc2hJi=KJHR^uu9`yq7kt>N+_CypEOQHW!v0u9sQ?l!~F|DDKTaJRTMx z>Zo&fvj3mab^gQSX~iUK{Fl+gVu}7=s;oNj{Qg2p)>4`@;J@h*i0f_v?I6lWAErCc zc|rgWj35Vs%`yXApQGs|hyOHeLZT>Wy5O)Q`qL4fe}nS8z5h!W!t*zggQ%lJu$E_( z@fw``3q2Za?-#)GT^nSf_!Qg%5QB(+351w499SB^0LE5R7^HNKMJ}h~TLE+nOZ`)z z$ftQJflogQtl(ygfs94~8?*@GwH?gC;SR77srO3opuPhX;LktHXIPpC#xmgS5h_G_ z>D}^cYb9lQN$p=|6Z;jnm3~tY@&Xmu&F3$)bfDX?sEzf8C;!2?k}rT@5G=lx zkU;-xl|HK7`L>|2cozb3L2aN?!La8CA`U0$Nx_$4z4bcY2W)I&Mj7WRiIrF0V7~@t zPSJhb-6un7$0j3nXDGT<>z`f7vNb!gt~Q78&Py=O9mG+KZvWWj4|JT8R-jKO0-cu5 zr7ms;RBflwx?85z11|)GEWpeIentf}lD)uR0d^1&_VO}(9Mm563;r$m{$8s?1Rs#*DAMu~G|X~*8(^MCZU)p5pg;mQT zFI zne+RK%|9a`7M1nH_u-j9Ow?i?KiVeoUo4=t zy>SW1Vv)YHKtcQGAqx^r1kS+ihB`JV*YVzl#5swa)%605jvA3!dN5ELp2dWBAku}V zUJn?Qc?`4z=(SKDfxT(%0L!ZkzYA~a9UyqYi1-v(P2?HClmb~Zpb2f7SNno@QOyug z#s5T5kAp!~r6+i40GH{RNnE6;J1|1nU!6gK#v~N&K=*4x80z?W6YvaR;`X_7h2C+m zOFnoM>;T-?foDd}Ta^dYeWFjqHbIkM&%CGH6U&0JR*e5t?W&V6{M%K~5dC%5q)A05 z8+HB8bA1&;KD67WYYB-lpu})w`HxAN{rwT{035(%p zsq&O>G-u(49Q+Wfgmi>kc`E`S%V{64Z4p0&m^m;=FH<<^oe$-IHY($adYQZJ76>jTR~`{}wr zVB{1T@y2Zl9G6VqT!7MvJqZ%g$p%tHZ^Q-eU>1Du^h{7|^yZDFRk(t(Q3R1r8}8D* z_{W65d&tAX@_@q*u9dcj^Q{=KrQp&mA|YTaHWqjM5ov)865zIA4{>h+4kRh|=McCx zZS?vOC>=_%&QowToR=XX432RG@*(QZ>%^7#s2)qGHxkRDL}COfCOZIt`tP&Ew$qGJ zO3i`vrm;RuOVyL~0^FHOOMqLR>Rc1n0C%eb@foaZlxj>st`S#;+&+bXn~^*XCC_5N z%L^bH=CYiVHrx0&bQS{7Iynl4y7&ir;_q8@!X|0Dl)b+B{sG1{x$iKFfo|UPYI%kI z1qJ@}Q)_m=xFD#TR)Om(<4K%({wHo4G=%m%%%feBbnrdA=-g!S=LzLuCE^E*E(Qru z%mJ}oM|hQWKlp>vhLNj`1PNM<@C+YvW;Wt+#wfifCk3T-+8HIp%_!lj-zaC=CLwBA z|5R|b2B8N#On8i0@EGf+K*_@dBEYp&wbLdXrdH8#n>kQL;Ceq5f^a<{dX>H?Fg=jp zMr*Fd05SCdj{vuJ6s``Y*qlUwU?SolZ&s8;EF=xtB>8Y!zuDKM-;@AEmY3%edfPcp zIWJ^S87acd_~L3o{R8Pl=EjbQA)HF#ir^5_;$UqnEt!9)uJfeFwG!}1Um2{;_mQjm zgXBv;x}b^P^Q=!neyZdHtqa`%OA41nKL)Xk`8pNC-IY}YBZIH?8R)FW&B`6#EZi2V zGycFodFIjT~pPs1k8L2m$I@dOx zX}IEhdz$Wk$D?w7tTtn0h*IJZVlCNwDt4}&Heu@Xbe%>p-Ibc#r$_r@q$o!eiP$x= zns3tS-Ll{eyb&$as2Hk=|7;1RKZQmkGx*l?=Eh3ZhM(n$^=ja2 z0&gc^Yy$;6>|-fVC8^6$VO67?X6PO1ElLC7-sMmjlWMyB8pW@n{0KpsTEmwkh`#Zw z_81gu2!=r#ua%tp?D9ZVOa^b)5J2GuTDgRwUe|#LretU03OElv$tgw3bjVo8qtc1#8$KD2cz;Y{)59~jBXj`AQLg_Xph ze6ujY!MaS%%ER?-vHAcq03UHcC7YA z+3yf&l{)$f48kS6_;+5hPlAu0bQgFVC7Wy4#@CNo<{#p z%R9?BK(rc)H2iAC^{g&ju${6jD_z@L3)-uZUJ1<)6u$t1`%@EqT%~BZjgpVQ_gqhW zy@%~xjP@pR0P)~<#>znEJ?E|LDua39s+X*-*4z&u1ITS0%ugM{)G#vZ-1A{DS2QtN zJtJv^fu&8+i6vi(VJX(dAo-cfu^XS* zuHxjUjOpR%3oD&B9=6mmeTMM&mN!A-19?vYKH2d1JyZw^H}8Ie6p8Q8ZLHu~ewcyC z)+97!zUnb};H>-QU%!5>>3ofX5{p`&v9x4>{`ycC zD!`zdhf*l(=bR&3+s2y@PpR^RR!(7hUA2>;Ss>-ZV7Wy*#1zLYOY~{d!~V)@0qg@; zdJ+dX`@ov=n)K%fY=-$Usxd=q`X6O(j&z>nAPg+cMUuG zT94DOn_9oXZaf(6BH5DD4osI+#iKF^j=L~MrLp5stpOi3X~ef2a`sFu3gitV1;P_z zJn!m}d`$=&5iEF88a0r4^V&^=K}j{pa2bg8uT9*;W;g{l3#f7;MA=~lMeU5M_SK!Q zT|H@RYvj=)(zicVoS5xp)%B(8!a^v?JP-f+SOe~n_kz4jT3i>w?-u`XnS(nh{jyi- z`L$aYXsFU~pQ%t%arDA6s=d{@d(b4kq9*s&J=KtN*hr`*OSGiNu2W4`{6>5C5>4~E zEMuRA=+(b4jwWI%`Of$)(dx) zO7#ObAAGpKN`=A+ezDA{`Z zIklON1dLjTteCy&czAs`c_p72*I@WQ6uY0Ib+ru)U{v&w^*NRrL&fBTeM&q2c%?8p zOyAa`MEi61KIkp1&dj+j>Y5I3OCT?g8!rDGD0NqDA~wpMf2H&b8e9qK@n^y>d1Or{ znH|F>+Dh$>8=5I%ue;fB$k}FEOyy;3_uOKA@GK29$ly`00bS$AaOjkvwEq=rkz_7M z{8Tz%yWsg2c4tTB;d%glj!X5OaaxJQ!kWb-G0wYS*%#z^FvC^9yFP37_ z1by&qOk^(g&JyGj37&$d4~DmWLFyIS7}YbtX;5+tEv=h<9@_&>qX-W$-|W zxr0d`kxT>H{oE~hMRW06qreS4Iqh2q|8oFaq6m}f31U{Ux?YPP^fgXIZN8^?#&@dk zVzC0aLInBH$B|T+HmNWI{I1y%bdB3>am+z;U~aCee&7inxk(@JT0<0eIva`bOH>w2 zGGvojn0@L+<&h-w`^8W!Vfd2V^M~PJxNP>V%#LmB_LVT|;T=a1R)r_nt&$7#$sRn+Lv_&- zr<Zxoks>+y^*OTl59^N<~`oJ*SdJj;R3w_aZwK&x0 zLl-hJmmblub_>#&GM7@4YMIJHWI|ph=%b+CVRtBNS@C9on>9?rPL3_ifm>xb(Ikqk z)FN;CgGk+eE+S3?IAx#PlQNs1wf=dzUwt(xHa~PZPXnl16aremH;~W5ED`Qnm3AVS znc`Xk))ISoD8!EgM{T42cp5IK88B7zfMH}B=bYpzz#i@W>pS+l?i1*ElvNP&_T?6_ zfdo6cm>|k9Vt4xFsY%H7W{Jh5EO^>5sWzw6>89I)!D8yV)#pbI(~}ig*N2W)O14!n z2fu!JB-1kOQI*Y&rukni09t#VyerS9&}Jg|P>lfsLv==u`JFfMH^|uHVYEhz3mok#+{k z(n`cm8uc)b4I5y~s1LteQUh`lO6 z&-CI@2h?F;%F&Lx5M9F|2D$|L8WuJ-+M#IxQy`sz@L~ln$jNUr>Xm&i&>!i3K%7n;RIstZ8^S-(|>_^H5$RO1d2Q3HK*4{;6Q`Kq3ie! z83^AYvc$J~96e1NUs(6fIw6*`qaF~>_MlW&#^6k(i0FJ%<@k?4a_IV?VrY*tR0e1n zQ1ph_0=t~+LryI69UwEavX?&|V65vK z`b8Kr1uZS@a1Bz>mwa^|F2h8I+nV_xD~Nx8`n2q~#<U#Bap|E;T&Ku;N#CNGzEsh&Pp3QR#fZ6vaK0dK(}!FbI6r zlK=7_lw1admM6XibB>?KOH4kSf`3g4|08bI$3)!@`B*c{&|U`79e`gI!Lfzxe!9<159|x^(M*5N0XQ?K<-&^c6SPBHAFa%b=7f?08 z+tveVb0|7|_pPq6U+{x)QN0VuDV;&>3lACyRj8Cw@J`&*QuBgh43K~!;3RO~C1Bi&mJ4M6 z=Sv{NmT-a8pmgw~2L3zq{k?gRdkj7!WRjBsUl}KQuv-V`0?%Jh_2I-1wScg;#`r5ByfB#o41|@Aw0Cr zYaqWB`giNWYJu|NnBZFa!>gOu34pZY9NZRyzwuF+7wC-T{w$K4G=*AB)p@;mG6ugv z$f*q*jGwJD(6&HvLj^W~sbK^Hgmv>~M_M5mKT+l!8&$&-V26eHALk4L_|2DRU~TPz zH~}2QA$kTxZz%{uPl*N)BtJEgWZ3sG^Qyvy??L%9hJZfKN&vbv zQDTK72yN;wxDzBsK0hp+pyGq4whm}8>Z=m5&r8Ha2^l4xmXokf=Xm~St)$$X1&kUa)dm#Qtc^mk)HQ`-lnU~i;hj$HH0n|BK>G@YaZ^8$<`B*@-J9n1g(&X#Yg^Co83{-s9k5yMY^x;ti%`6S2B0IBnE!jUm z7x38sms0&dfAGIueZg-c_+PswxP1OU3E}_${qeVS)k2dV1406#ZByt>VQ~Zv@C%^u z!ALF%Uq?7M6lah+MbpD5<*^Fu z3wTax_;58o1=9tT8XG`KP~xwloZpe58u0KyQY@wheT*zwBP%7?OCuoPBA#8t4RRgf z|K`I6RCWv63|K4vhGmj8G=OjjLy@nh(I`u>_-3FVs)aKRu3xWDuPK^<#tYTSz}*9b zz&$X%CRKztG4&#`odws@YhgV$?BZJ*)OKGKO{Y? zHY%!2Zuu?#tE@-;+pNJK;55L$2cHI9BJohaBwD9=dkWNDa1*0qU}v4vQV# z1-6y_9Jv69pls;+N!?)I=PA41+@3F%8eCfoaVWP#mRhNeFg05-!DP-Gbn#%E5X>`5 z3dkHm;2M~e${!9YMM{F-=QjMZNf7jf%FA&=Il4jY000cI0mSzM54JkE!DB=I)i&RQ zZZ$0oqL_%%)4<_1dMqSGPJ+dc@%}II|IP@dN8o3(~7jkc8(nZ3TtT1%>CQ?^B_i@~ zbSH@Ay`Y*AGs!vOx#_|66gI#&)nhQnn^sqUG~uYsc?Kn*#L#}x7dSoOkB&B9znRFIfQdw!KLQfCo$Zd|SiI<+;xNi~#`#Z3cn5uQBMYnuBf>1ZZGXR)oBEXG7qFaT&zf&SA z7Uc#2N@0lt$+$O(J!-c?mDJ(DZeDMM>l>8TlFb|63syXxaXMydo)#1i$IzvvSS-Lf z1jntg?_@NMmur}$rMCVJY^sr2M3Qg+I>5sABDX4986e0yD#au8qBtB?`r6g8+R;xB zdW2VzpXvG2Y7-E!#pL5Uhi)=-psZ1L8S#RjtC@4ViLHT z>{ZQa{Dr3vefUOI3ML+Krg`+}YXqUXhGs$=56&Fka7UqqHeALEv&>o(G;4V*BR&BfUt7!;H^%tdaQ-Z!`&k8rM=t-WFW7XDLlhrsu_ zP#{7LL?ifvimf1?GcsW7^B`h82^UnzADpiIQX}U zJLDnk>*SsYl~JhX)gq%i)6vqGtc@MD&^ej};ZB5@Le6#xkRR2w2pc$_6F(3G0!0FW z+MHC&R%A}?a*88K{>w4gw4dWzu)&dAy@Tw4OHz#ymkX;|;}gtVNH#6?$DnY-C2QWB zm{YP^0LZ!xP5qS95%?rlZt9G7;@ye-F_lkX9GVXK0j?|2U-3H;$W5#<0`!=ZG-%1E zqNOqFz;WY)bht)_j%Q>RTxagEF@O$y=dH2xtwXS$Yj(BK1=>PiYPX>x-=}7sck6M_ zV3DqL{2F~hkb=iv4!jc*@C$8p=^q4#vYx}LO)s6>U#~!(^qrDI8&xggGyi&Og{4x zJUSVUm9n8xR2;Mvo^LJ$jhe%IGQh5X!j`{(UOQ^k3`#%il-C|5o_SnSc1S$xvUjD% zqU6zSO;d*&g8`yp2d7BG%QPgp)4uw7(2YQ zWK=fvqsdvnvM7`Xwd>h47@)px1m&G;qYQj7G~+;=E0~ z--$`e7@Vv2n<4s`z0^BIG7_JZJ{Dpm4Z1P#ZYbw6PF13J&#erfbQ)4pC`fg~9h84! zudu@&v?73Lam*wdMuuxbUABw7u6y_T*yK62WnXjNz3p4qfva~YAFWpK74`t>DJAPq zr{Xg3W)XWB%)(Hw^KWuL)>^N+L3PT8ETHj`9xKq8Z2Y!H)u<=u@U}(~4+`mVr;6JW zG8=rKyyX{<_^}nAaFskfAt( z^xjrfFt0L$X(t-pOX^${omb*BB4i%fszlAgb5_~Z#TtMh$Z?KJSEee!`WA|*oQfwy;F;E;gNb6*#*n98ow?&eAgKm2l@zY)LJHguD5yA9e0aYFr zp1t&W&DOq%QDqHQo+0&jS6qEw0w}q<2+FZp@(TMdG?N!k*)Xr-!|86w*|z=Vz|*HMYiZ#RHc!ljKfr8+{w3W z*>KZCv#jFIy?W{;kLIr9Tvm`Tw?8vkc=aSH={UMAehMmqv=}W60?U^h1A)IEEn?ni zfe}x6t!j(3UaOUkf0~uJSUt@gJ@4trN;HyW53`+v`nO>6qbV${Ad(^fPffUOBl>U= zLW#;w01b~HjFsv4SwGO~-FK%ld4_9mtbNrLa4yvYn)!DN$1voU=T{@*Q`8m4XLWmk zIx#&2y`>w9Z^kfI89edzn3p%RBA|eB?8a~#@&{mP8Z-PoxdUeE+jR$8r2(m9X(V8gnkRf z^-}ym<8uDwoufS^Sd&^!Pv{{rmA6=rCV#PClP47{9 z`>V_&JNQZcj!bdmNV0YIDeps{t`#d%^%uNjO8^>&dWc&2EKdFEWHt(?RWDbxE^=CUIKQW>I>2a z7$@oN!m@lrBk91C$_gaf%O5~Yy#fuES{djwaQUaaAM;c9U~k_lZPJ)5cMQ?4G@S8z z(M2sL-Fod6j-Vzs#ir~TD|m?(~RSCMfg5uOobBpY9&8Q|@9 z2bI&Ak?r`h2^gF!{G2FxC`|D-<(6|c2Cs~XuZK_thVfvJ>w5*ZHbCp{IV#<_KVq*5`fZlmA8DcR=<0|NmB2gS7V^ND85; zJxP;78%ZcF+O$&|DiTc+Qna_yR#p@(r9G7PPO1BN`+lAO|K4-&J?EZt?>*<9`#ZmL ze7|2*pZEJUp3ld6{`y=Z5W+73AUAcdOp0Ci>m?G0x<|Yi&bkjN-w0Uii(P@&Y`W)B zND$Ekb-3$!TUOPrpt?+!p3)|cq#s)>H`9KO2YBnK6#b3gWI@T0T&mJ7go%%Rfac}T zm&3>StXUW`Im4CPmM0BPDSdWC6}f973R7)Yw~@A!C$f)y%C&_ED5+0315>Ja$l4Xo zwioZ??s4US+}hygwI0-A{VL>+htr*HaA(t6ksDnKoHhe~EHY?6&AHfY`1RqkHf>ow z5p%2GarZk#S`+ypdXv9!QYL@RqGD1S_oxrcUb22IDurb-n>h!6|)ed1nBIe^OL z;(d0EGgfGJQ;Jo8E7$7ZRuB;(!L?)S3-M`Z-o$iYdA}VhN?UR>T3*vB)#zlDEf{q& zBfN?#aH&W(!Sxg5xB9@9&Rk5EtPBl^{QmU5^hA2?4`K#p67sXBdKR@QRJ7XJs%}he z=D$Z~xby5OZBMTr1nfzk-1wbc%ELiPJayap%9}>}sUAh@X~Se``CWTrHhg4y_+VVb zoXRqeZc{5)o&JG>dc%rr-u@(q>03l)F=sXqll>{vibN~?$NcM?HEz{quR=Hp=}upt z6`HAsbX5l0MZQ}ubS;->=Eyvn$dK$c5$Ma@wbHqt$)DimxexTbspbt8c;mw9Dbh#4 zrUK$`!a3jPia?zll(a87cHbE?>RsyO4(-{@r}z3_HubH(^J?Qw^L{!Gu9*O{JY5C8 z;WX~5^LsfWyM?LM=g4Hp7{mwaQdbYrWEe_`r;u-DmJbeDl+Y#}i9h+VN3M1}*yR_} z`KFSjO+0H}Ua#AA-#(f?qlZ+*&87B8#rPsbQjq1kLPT7-_r{h^R{*VV!Z_rcGan0m z=9{jpZ+gulsPz+10Z9FOO@Kc^-VD@vGW-5GAqh=Vz=RoB82Y^Cp+RoBR~PbuMZ?0lIbVkMhmxs z`WRZzS#{IRvQVT89-F&qX6f`EU_czD|5w1Ui_0!J=3@Q9x{oO z+ksa`^K7&~JV5kH+WV1@Y@ElDiP4=8rZZznn1b))5?Td<@&}Hs8C0Jn2~nv9S8~>K zZ5G&|-6-nvZfHM^2^M`G!EX*R%2RTAJbe@dg$8Vzd1i%@&q4XXJpQx{0b&)6Aq!EZ zme7i`Y}Uzq$tsBnQ6TWztUjT?TZCN1qMx`K*|!5=26?dxeJT2i`2{J-loS<`jC%dqT(GI6SM0s)v$RWDNjnHsq9$NIBL+ zn~NKmSqy`c4UyC(O+j}j1+#f9dk4JoHNk=5{C;=D+-;C?-Dl}z+X}v4M>nD8UBzYl zR;B<^l6QU2;p6GtVqMjvtTWw3AT;^MBbrf$PY}An13GD)Sp7#+{J6|vL zh18q|G)rXiDws@gC@o>x+wn?XTMn_US`)wYHK-giZz6b|9e;)D!3Doq%e_ak$FJLO zPrZfd0e9%N{l7>`vO8;S*~)@?gqw({*j<}`tgDn9kji~o5Al30z8XY-r<{yOyQ8;$ zg5gz!W!IB(G;M*@obOo2OFqR*eX)|;0_=9T{*I4861ymz_#+vF=%3-v?(#Vy$BQ1r z>1;HV?Em>yfn|tidHN?c#)R@z@^d`>ANnd*P<7(}QGBYDCt9$2;y@Ds*y4#JB1HiS z<}N~vBGGBDjGIOGxbvQO!+1K%)p)5S`450a4;*9%w3j2)5+A;ep2${KcRAk>5B+`h z4+TpB%3<(o)b+#1bz}qBR5b4RfUM(N1xyftvAOjQF^xLCNI1NS8!pPRf_aMEGP5vC zPAFw*`{b#EUI=%nXQ|UarrExIS=}r7x5hX$jCZN$LmJe}vtzdM$5HSKEg%w(nC4zz z>a7CZu?VZ>PVL!6qWr#A(`CaE$)R^&3Tw61a`C3$?V@MXLbW)iWv57=Qt$RS=)8! zT4%r*%d_5DrapH-ziiuXZ_i*a979{?;^Pv7)&14(aMAYm4OTs3JB3b8VUweIvgB zqeDbBmW=c;`3+5Kfs>NroUQAuG>=e7?jV0FK6*F#!B+A1+c&J(X+vDCGDWIFj~-m{ z^(n{`8mzCi$Q%PI$+6hMvMPtDA*LYrJVE`BeBNCPeP|IMbjI?PirZg{%$XKT}m6_w9J8`-sfJzT4o%sYYksB;PM{{;c6zO~?)vG72g;^WD65CeCZ6 zNptV%&8X3RzFjpj9Z*I5O6%CvY(kjnTOZC;uaF5?u}jUd97(tL(hK*kQq z8%#%wnCl%cA9&)&TezdP@$J{de)mwHqdk1$7n?SU7y-}&LnocFY2&9^G#$Zw}g3Zl`ka zQ!=d^?Ic{jO<(@aUXtk!3rGly_NC;|gy-d$l7$fK`L(TZyUV=#q#kF@_{y-p?AlU^vy zQ$i}EG(&6+Ypo@rI|0F|b-{nc2~H~@2$eM>Ci~iS-W~ynyq`uUm|R--Rv<-Nu?ZyV zgxdD%^98yuwY9HofTsqBT^$NY)nB}y!j*5! zF=h`>zC3b^#_Qm0fON*I=Hpj)Y}Tj@rgp#55u`T0MOksmi?6th=I8eMQBcq?l*qH0 z&nqi22MDug3Y9cWGS4e?@e54{@KK#Ci5LUBZS&p*Hm~o+ZA-G%UA|@@KC4!a8uXuA zNB@GVr*5!%+0LUFH|j}kbfM*QmI#hXkt<*7qhi>z_=yPhZ?4O>Qx?3kd$k0cGXI=I z7XR(%yRNWrmW{L%D3})DM~WvK4;$CeDKpad4lyyvksj6n_gXrR=?0^6N9|F@yzwKj3Mu|AW;w%@p)Syr#EHha~gn$NZaZD2zxh1Jgb6@Cb@0+lx-Y zM0_%g+R5o)=B{4bbuYrK4#VgqCz4e(O<9yDy+!d_-;UC^o&awaVV22NQrQ8TyW$mL!Z!~gIAFZ@Q&h(g_ccIi#xZx&? zG-Zt?ytNN>KRt3NJpvSAN9V<_k42(vLX2>*ETL%2b}KL1uiSNwz-;uTCGI1lbONse^m+dzO$N0i^L&WF zn=0Gmb&>g@VdUHZD6ZJ|5rMd&JngDQE;axk5L4Y#BynG>EZm-7YGQ69-J`Ve1pD}b z{cE*3EOsyaCFOMs?hovfIjg2}wJ{1ELUo5`VU?&&<*A+fmzP`paC`nd#;y0R*52aV zzJ8m!pE36{gPU0fHvUyj7O!Xrfs^TtL?vXn%cXkqG=%IegoP zOGZpKlV4O2Or>7$dX&~y-{gv|q2WpaVv-6DkECG($7OZY{jxEg(0vT}2`Q@=_}Tyz z!a%e|8I{i~s? zl5&*t;nW2=k>Iv(dXd?a;@?qRpW>!nEf{MlZo<7ze=f*5u1J;jx$Fwt9RqUhi$_%y zBf@KHE=@>@+csbRkhjVg1@Q`tiJHf@wtHCxwjLufGzSkSnAm5q+>y%I^Nj7ca>CQHHJG|DRh0hjQh#*z-aqdHwXyVvR|Jw$eozJzqUgdB z7s<$-1)a}CS7+R8y#hL<%ZJ6%X_Da^N>iscJX4;Bpj#LJdUr%qQFr`z? zQplivYJ5ZLBqT%ie#}X)n}i+fZ(k04)u}*Te4$=ok)@T>N&Z5%e!s@lm9G)Kom?&R z=e+CyWmFsqKDOy9!;gONE_-P4{|icy-#P(WK1nOae1wb%a59*j|_JhX^Yt5KEL=<_w}Tm<^m z8CTYqh~#tHpq))Zx&| zg;_PZmX(Hx{tPBF2;Ds!ZH6%>Bn6$Jy4=XZ3#A|DST68f5hCvw7`?NEU|g0|9J%2# z1C(n`bQDJND$)h_nGDWsfwj1XVw2iNVK%yHP)5@iB$bK}PZf!IKRmkM>$B9EZxZj7 z&{MwMT}XP;|L2d)Y@EA~y4riLqH!EjI7~tAVNy4jX&DzsD)`~aGyb~vD#q>gTfe_7 z{^&73T6?a$Z_^~2878rIEmI!@ZGZcoF1FTyUE=L zNN#q>>}#mRy0TMcE+>hs?~?BP7Nj2wEqQB^n(YNA-uaFy zQxE~Uz_N=vAqDY$+nhl=apf+Z_~khf-vWS*3@OkpoD%+VUGm=R`{996O^v$i8oHlu z+Ntty5@0>b72S+b zTaG4o_E&FJ+cY4LH74FDt?dz8zsR#i z>~9@xw-xjj=GX1mD&%Wk&#a`f{o@SI@rz1&y7%434{cMTc`!$Hz~op0Tb_rRN61jh z_t|HGwfhi8+2(n14iv2y1WBmiJ-D-}NPZ?>Z~cwgec~Odjc|L$Z3v~Mf5LX9CAxn> zW-bj%+m6a&b-x62$-Rx;xxxF@TQt0!8zHMq}9GR#e#S}ia9{v4VQJx_w zRz(0vW!%!7`kdlbV{7(24z){Zf)7uUx$EaKx#i~QZjkib-2h#AS zYVz<(=JsPZYt3Ys4#;wfGB^A>TEkV+5Vting_viUu-~m*nGCiDP*o;NoTmK_yvt>6j@Xfkl3b3J;tq!Hp$2LRmOA}?yR)4>Av!C z3kTe;&-P``!_1&z{$bF9-*O4|rZX)xqAv9=mZ_IKTwbJ5B{O{4;Fkd(HX5Ao4mVi^ zein6q?HL+&;L&n-{;*}}+!VP>_03YxtsCqw=eCZ~cFr#79qVz|GYyrsXR&|bW!vbA zQ9v3tpKqxixFg=^*PvLH@P+qaLKme0=@C`4J5mb6k{J$-!M@)`8;YxGhLy}-&-9y* zOOfmzn3382eB44=dCp!$=^H2c;@(%B3Pl$+L-{{FPV}=Ac%!!U(T_9{t)Gw1v8vsJ zwx=`u&?eTR4)geI%t?$cWDX87Zr+-+G&gp9c(d=9FJYC!jQxxQ&+~NVq$XM^q1U*c zv2gX%+l9Z`qr+z{o=dG?H%_$VC$|W_UEotl|8b;fwuk}DYK z$~i-mT)EcSso|@=6ZwnYzSaFE$KM%OZO9L{5A2?Q~;8`!?;|YkPT~d%?|F9;%W#ul-#DNfOuE`IS0qoyJ8rpSkJrtNn8P zr_7Prqh}^XJTlD#Yv|LvG#eJQL=}i&nmSZN#IwqLgqxhTeyk^k=V6qfBMT)PeA+U#rQf_UIQWA0_BTSr2yp8@v zOc!657Fv*XdCzYbw-<5ukg9RG-Z1oFZYbcJ{xTP7H~H3^WuqguoquA7y?@&MYGX3?#7gn<^9bq;r`s`O;z&H`O z-EDd5W^QYFVmpLtw(MUv=s!5F6MJw3PM0^v6C!0ypJ2}njzHzb*&olZVxwTLA;FX+ zTXFvl>qCLNH>RVi$g9`Ql4<(%EfROF^eG&?D{9J?;2l9g$&DniA*W%{&L#zpv}Sh0 ztWlY{=u6S1AwbF{PA|V%%mS(+NXjpv7V#n51PtG*YlH}q*cMw&l>{eJc`idgSb}+t?Bf%^EMCjvw|sZ^Ie?v1t;zgP^#k>h z=YY7S%2=ip9{dVf88L@#Mjmo%0YO2weHPvbr|JV~Ouya>6k(!#{YK4hZPT2iJW=b#sxius2#K>1^5uE3MmXhbWJ5&^%b3Y|Hj5F)edH#2R#9-FfH3!6N$4KD34} z$X|Do(xUMuypTsL+l6Rjys3P6B~4sSPOq%L_w9L9OWl-z`Q*f|fsAI}m}|iF+sFt# z;9f^a#uME~g+xguyvukwOg{9m%MA=Vb2f<03WWOrb+HD*y#=JJZ0r)SRPH`fMg0sDsW)@rt!=)h zM)qgCSO(F`cfHY$e8b#*iOP9`Aun^ym9m#1!gZR{PpS(K0rB-wKjv=^F)noe$_E89 zMA$F3F<+&Ths!{5!(#;{X@5Nij`=@R(t?LR%H_wqE>kSAB`q>5&Vbv&hojo&XQljd zQyqoNo?n#AXMs@BbiwOJWG>NDu1h@8)mnH^0a~i1{WV#iT-y7P zZd)$Td6kF2_3qi<-M2+7qFOU}oJZ0_KwJ2hw%S4Gk*0v3=O>PfN_6#jmpZ6Yg7k-) zPk`IN=S0C*-*Uh6z4vyE#>$)_G9GVn%s6gQ_kbdxG08Pis1X>w?pG+&Z_{vz(QdyY zRkOP!CZq|l`McUv%-wt6_yQ)4a!);-`&9n*_juCTq;ZBnh1~6DBT%TS=f&(bPrN{x zZ^PJDa_w@cipdwSFJ~TC*3b{DEV@=1Ot)X;sd4i&m?r`PhORRLhdpc&qU!w#HfXdnz4zDo9V5ds9pGp6wEszhFYcD_N&|1>sLSzJXcOOCxR6U@AAyD$SPA zb~wk!YyXP(zVgtmgTbs3V{Q!Fq^@iKvIKK&El_j&{1`%ienDgRN6xdov)oI5n9?ks zHPQ?DE8e~jRgm7uL(d`We%DiN!Sdl3mVUkTF7x=e8ip&cl}Qlvq7B2#T+&+s%@Z*% z4H=IOyyyHN#Jq0Y5?QV6`{50Z-&0T_ds%0xmhjW*_f|@@5pI_+aj%3;6yx_vcow~9 zo{$@e%@JNA4gO@!XdNl}D2xRF6ttmqr9rUJnA~9bbY>>z7bBk>y}s`b7Yb^fKDrCX z`tEz}wR{);idw#_#~!{x=3^yOZnm^d+w1V?B;RZ*Pt|go*U1S}kgSdVAjm^A&!~H` z(OSvqgwAj2376}fF0Wnc>xWCkcb~q+!zNqxorTnY&o%$4`icgStdd>yCcGhE%MbTyC;j>THLf!3K2g8-O#|aq ztD@%xC+`7c*2X+UfC!xsoAAc;JW1@M*!338x@qEVZAYCwky?aZR-d*>^E21pjg;NULa2EUs9AZKZ*tZDZ|-anFfc$tuQVu(Dn zY}_uRxi77zX`lvC#3qYDH1^DvJlE9W`^3`JKawB8d@o5a^qnwY~(6 z4L*d)M^9o>Umqi(CT9Y>HPM#c57+`s_zy5TwFDNqbORIEpy3ySVL&m&f`XTh@{e>M zb04d}q-T^+3XTzfv_j55DEK8r*x@w$17S|#dxTMLXJcSNBPOO3Ml+mxQ08AnMg~52 zLjb`m1NtQ->;sYN_)Y!So^JRanBxcI6rMxX16hv+{TT3ogqjpwmHf5QyGX!#q=D)g zw}M?!Zy??k0I@Q_Sj1>9+*b6L$y@<}wtal;wSWf}{;>>{;XzJ4F0qSEDVVM__%W^( z+M^SBk~e9zX_@hpU|=DoZZ43^Ff$TvDaQfa8|C8#9m&iUXhWW#cpilh!_4^-wz7XL zDE~3ukir{GF6f*s&#dv_q0_=h(u-tup{&QDu}5jogt_WCnEm&dl@`H)sY1xu@dGRE zI0V?1nD8YD)T2A^B0VpT3NwJLQ$KUcpd-Y+j32!#$p}P&dMFER1hvQ854f?$_TF@T z-(!nOlmLjFdtk`mOXAcRK$dkf1O7Ifta~26f6>9e7N4aC=s-}B5Ty+kFR~+?h&jx| zNnYAZxHA5epDVQmKS(P^irXhcC>1`AJ7J5!JR%1QE;Um=Uq;Urn=0qIw69#F19BZD5_5S3gjCRSj&W2$h64*Ox_QKi-Cp- zJV}7#fXWhK$3tJHab~P78wRa6W$|E;ui7A7dmSgfwWFqQPzNpys5)+zbA-D{RJ9Xj zZf6ya#Z1GOY`t)&^3S5Lq5C`bvQMVS5|{BZs;E9TS^J&}z@!o8i~uV?3*{MfDC$N3rp}k zXw~USvBBV-QkEPigv(*HdHGuwHifE=V5-UV;r+_iQ^W5QAr(SEo{JE5aKt{#@W#ZI1uo7akVD|YC&Ap;<&FI~OwUy^= zCRza8z^YdYbAzn=+^*9(0*w(*VG&c$|5l8vKCtEx=au_Tt`HsIiJm(LH5Stir0Edm z5|ko@kYW-wB45()rRjbf;P{;kOOW1boq_8{P=Pp%uqlI z{DlNKDL7kUHhFyV_mKyCW50gRz$;;c|2aS&L;wW&3WK6%r7Z1ZNq(F&V|OQ@)E@c@ z&y>Qb#|%q-1vU{^MkyMzzg{%j?n>4W>Fb|1HJ-wGXMA`WW8G)eg>@e)Kv9PEH;bWm zQ;Tr?5^kFfQA%}v=GUQ_!$?@)#prEU9dWofR$#mCR8+E`4QJV(jCz=`p@g~yN=0mq zcqn*wxC~}Dj9S)SCA`v*?u@Bc(uM!}O;{LFiC|Q;cBLBZ3HL!sRIT*I@d;GN+d)Gf+YN_kut18~=~HAOB}h_s2T=>G(-p5 zz@f*DQMWdr_wIbgY+NFGww-5|p^}y_5<>JpYh8l`l>x{)X`2*Cf{-17yL%l7J|wN( zsKF8VNcgjgn;^LkUIlLP>4-Nf$iNS|L{p(2R1*S!rbMlF;@50w}S5c*R{ZXv_f zy^J4%dH0D_s0la1<4LZk<%(!ixXvUHy{EbDx^d-s)LWp#EcV`<8}DEqDRLUtu0mOQ zBv0u0(=38-UO6BSora7v{$BjubA>kTN=xATg~+{dK21Y{NBIA`c!3I3Ju!KxK-x!q z?g9Vm$3hneET@ytsq>s(ID6>+{&SmsR^2n^ktlZOE3|E#ymb6C|5)XNHdf$AUanm< zhH{Y#Rd6koc0N6pE6{PJeui$XpPO3J5+8Ck`A6F;WWpV9WFn>xug;S>+(70?GO9BT z6U{RvRJ~AE%7aK3qG z8vheXM6Y`T*}>WkE$2xU;81q{ig`63>;|ILG?;j8l_c;!!qc;f{*;hiRbII{W-o

      n24tzDJ1XSwLm7vSB)=Z$$MM;jDOi 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 literal 134231 zcmdSBby!sE+b@o~F;GB-5k&zDg+V~21O!yNbA|>*>5}dcMG-|*Lb`JX7`jUogRWs{ z1SE%0x;gjK{e7?Z?{mH9oZs)d_TISn24<~iJRvBZl%%Pt7^x^ID5zy+B-AJ< zDB+L)%pcwlUzlpnOi)l9r;wGntKk|mJ9sFft83`%?`!f4RkBsSNrw-!Rk6#U-n|J3 zIIqSj6Y_>vQiA@3>OUvg_shMzD0AY(JA>4+$1)V>we%i?3P&k`MqfE{S`%v`ul(Hb)Q`QP-nU_J}#3nZ87>J!CyFu zB8%s+P*{R*q^OsBn1A-^mw#60{Bb5R@9i%^XV2Vxq_SM}I5>mRbD}Bovh4duEit`; zZhu#3e`B_82@Uh@h#L>TXk@Bsm(p?>RJzV|We$`%d@W28`m>&QD9YSdW?s@=wTG)c zcg||0`pD6v!jFI43BRWOo>ktY{`B8#dol_ihf|pN_U=>N0lTTTM1{zk^)aRrbblV( zKmQQDTVn)6cubX!(zcC!deNCG&mcZid%No_EXbV!7jkzt-BqQx-YmC?{lP3^%#4f{ z^%Q@9v)%B=r-vNI8;maq{cMTds(o?*d#skV4Oz+2TbT19R}>p~;*;C!Uoj92YnbP1 zfU(hghq{>gWF2duhcAS2{7rEj6cXtL96rJ=k(2)%Iz%qjYQNl9O;xkEyCu!y z#ryb2tsmvlC_xs_UmxRrb_FfE*tT+}V4KI>cC)X0cEr0lvuC4OU^oL8C*t8;65J9m zMhMP_vvK30)Z{j7Fr|1=uhrS!DDTNwm({s`(+RkZ^}Mgl96E(&%~5<~^{?v8{a!I} zuTFPP{`mNG!g_Ognor8%Ze@A8s@U((bT(eUhT#ytVG_n>>+pHmUW2=!5Y?}8=QC~y z-Mv=kFsY=@sjkxk59j%@Gg+tapsJOSB^?lyesiunR>)&@b~4^)-Xjv$g#;%9E)89_ z^Xn6>oHDkHy@3yIsN;}Ps?584UnQS32GX>j@;!<|r;s>xi+lFD!aj2!%zg0mNNtJj zF!n@|UYULO&QH&S5oxG66gOX<*VZaEm(R|M=Gy$=j!kPv9X#$5BL~U;k~aL%7~Jw~@6ue!a2%gyI7(78N3Xp& zir;$1O1UHgFJlZHKl$(Tc_JnyW?en!|D%zb_MWJRjzb*Cgz2k_jK!RPTK?$c8Q7 zyjC@_yLQ{OB}OukzHE#LHQd+tBqQU@-b!n#{D(L(pIz8B)$60LW_t@+8HO^8=Tp-`w`vbZk$OJW9`&P--{&`DL)!?)u0Jmg1!Ol40*xj%S!oFfnjM zNlX%dQI#BJ;L>OaV&IM|yR4tCrD4bCpmDA{=4zblJ;EVc=5qoz15jM)t|(*}!%2Hc zMMh^Zi+SIM=P#6jyNoZLu`*0&F=>s|6?l*9sPBo2l`;wKK z=d(3eg7!_9c{f@_GKdy(vhb%uF$&mZ74fQ%Z2$Zo0z1*7Bjx3;*G#-I+@zuR#`t8M zM@yEd%e)@-Hf+h6@2|M4*T+8?!o~3QDH|f)kX9>nf9?r-`cMH|gPre#P+X=v(_z(m z?e(*8jG1zdfv>Fli!nlNEIm33PTY-7_~hM)h3@QVi~G*Po9c!>PDyG{4zm}-btdSVbNI)KG*eMBUc`vnb@}2 zRMvTt=K4#v)(a(How7)W12x$aTcB6+21D>ipL{<`At1} z54{Q}l;^IyA9(C2`Vaa0)p(6=zLG{Lkys)L&Y*#VLX}4S14(JtJCuT6b2KcXSr0oC z?jG-&tM8hOB75~KD zZ2k^50q%-WZLry5t|GMO2!{(QPt@-y6I-bG8;i!Qy0Pi)MvN2CJC|vdSvYkHWjc{& zTi}0`VRtGyxG-hoFg&2cY%a%rsdvs8=0B1}Oe%x_w~fAswD7zDE#xj*c0tpa$I2L$o<+se!oC39AMsm1)BxdLoX| zgavYQw7{SV?y-nf&vk3fkz(VN@k*su{`rIv*=3<+{ za`@{MQX|}1l6DP>Rrz&oZk4CBf^G)}BF;>ITg zUhfZP=SLT7tCj#XTACeKjOJ&L&fqnk;3&(u5(9-v66@b_+ij7pJ>xdH_a06ov+3D> zf4K$|A=M;_wDMxxVNq7UgoN`vhW=R826EI^5xi#7M>iqV21RQW$~muBu3meWP4^*I zcBflO%3*qo6U}6P_4dJ>BmFgV7F?;thfwXsS>Fciw0GkICJaA!Xj8M^30q%@ZJR#c ztjeT?QCI&5d%9Rp_#5Xw^qW4h{8_$pXbQ6Mh(flv0n37{UDwjCt=9!A1}?qCd;S64 z4f9C_!tx)uc9uJpq2=4;_&BS%Vpnu0ZFwKZ9#_lYUxIBoUD3{JKF&{P{6eRk;T}dIOBC zay4nbR%Ud)`NllKLPE~75e;=Fb)L{+b*fg$BxSqrffrZWq$vz4oU^GsaO6Hx&nXV9 z0`XQoFUQR6$ynOe}erIbJ zwB@&Nk2kJVnxzgyHTQ(h31``Uw@>|}A7v{*Fdy5A?8zG5VR{mDD1o^fjVptJGc(BD z$DBy*SHuVjJ^tZKbsuPl?QnI~z59S5d20Z7062@_HSd6O$8Xi6QercR;=pR<{7llx z!R4=hGE0_d#^nfmZ?8K{ws0C$YHg@*-20fQl6cQTedPfqi$7&S?gWQW&^bZ1rK0Vv zg&IJvmSO@wlWk1P=C2ZKuLAJSH%BmU4wCLtkazhx$!f=fb z^!{*`(Ayt4b<+az7P-;<)80_{m|cV z8S!-!$_a_Q^ju@8VDEJacMoq9G1F~nVs5CaVlh3bDCwg-cU8(yqcSe~xxOO&ZXC(+ z=|So@fZnjAZG$TJ$PIu3J_}WA*Y+ahik8r-SDQ8WeAY(}@eNhD*fu(u8pDbH=RyN zObRwBGBUaRM+?x!7|!WFiY4(2*Jue*C)1%fg=UstuM$pX=4bQ^v<8V*x&BTn^EAZ& zY>nRo0Q9P3`rOXZ_L&2RXbKnh$wcvH4xwLJ=upmWu8_$Usk_QCxANfZioc*Cwk^M_ zp5Gjb_PMaRN>*rvZ-C8)TTm&oAkL=8_wNYM8N5i2$o@$%%MKA=nIWoQ7@Q*|!fN|c zyt}4-6J@)Td4!tzcF))JFn#({@2@J)A3JYb=BhsqT%<7F(D6oRYw4|Y)Lq36e!vkx z6U~T+=}IFMY|5AwvT<1*V?k#HVj898sEe)pySc7-2)Qq3?5|NemGLd>^r&Yy!E3T$ zyqvbT`f4v8kl9A(jUdhR(^+OGe_s0dl^6X2y(l?t^+YN?DW@ZUValU*I)Pc(SwWlE zX{O7D#lNg)?Lv&Oi_-8(uYx&BD5N>)!j{fQjp2&60#-c<1;XeVY^GX$ydpOM41Y4P z#_6+JCFqDfC~AS9ad=&1SNZlV8<;ZL-=EsTEyf&uqHIpssfQqex+w95=rYwrFLb%C5T-EeFIY-n;}F zCt}^li?Vk*IQ~wWIa9a9CX~y*2Uc%;V`*hv362ERXA2?@m0A&i(1BZH@Jw;nMV8yd zv9(Y#T%p7O4}3VN4#y(;`UAf*GLIUvaLWM;1%h)`=dXFt>SwIvaWKbq3(aH6|l*8 z4v$1pc<{uBO0`ImsPxP+IN=)S%Uw|^55Uv`+qG${@=ff`38_Eu2BR~|JU;W zPm8TaL7>4Il-bvpGt|}9Axh2Gsx^6j0Pk#t99+Ax=T5;H4`&QyWCEOmp@z;gJJY(> zj{d2LuS-C)1nM+U?j+v{m1-Jj%a_+@P@;yOza>jp<-^d#yob^}P^Su6yw^v7x+_KA zOs%RV;x$3TD+i@0LB$`l zQ5KE7{@`B9+$|s}{IrMAS)@3j^&cvBYC-ey%{Yuw7 zey`~cRz;9S5J{{lT7Y2w2zEY*KfIlApa|IPs7;e0gexMlrfx}28Zei{s;&x`1&~WD zbV2mooKBB#GEx><31w6ORH17L;$)5{!2rtE9F3)f7t{ez4WK&296$=S^8|>_ygTuG z+tU5Sa+7pmjICuUn+dzRcbdeJXLm;-eL&cA{jp>axcJ z(?AE@7=6Xf8w+>qQ4ivcPL7rqr~^D#d3iO=6;bW9V%ygNDfbs!d+hD3!6o*k$kH{U zR0jF8DYVNS&BsMbl)XyEG%{2Y;T|~zW;&q=nq8a8K2i(9*axFZ*&1LuJFw^mZsTE~ zn@Bx`LS!^t?Zs!od7nS_sxouEcXqYSpb#}btlX7^zIsziRn}H$yX-qNb08mdxj8L@ zVkitC{QWAjP^27doyKs^=%i}*)L0(p*&d)*w*d&I#TxqTUrQ7u6I(<9md8yHpW>8o@JDRq}VVcxqc|ar&dJ#2}~Y)|4eaIVacATR5K5Nl8QM7_p)PQz+X*j7*x-}77dfjp5S7uL|b z1PUyhR+?jsbEmiD{#6_O$8++=D?Lx#0wNbnd+V ztVsv=enTGsAgVl+AC|ytd8!>YR{yvhODJ=^>*x{6x=$}?LA&j1(s+zfpYBL4U{HTj z0=m-)z9hA5`vfo5!sb0^KR-WapKUv1eMP)0{&ePu)lj9jZCD^tydYwV;2Na9;9Uk8v7G)gF+Oq z?7qcVm!a=r93O(m;kW`?$dOB>o@3x__m#~ zU@;+6(d}QK(9z`3y8r`R06jR*YE7n#ZU1_@8f?FqaQErWN8j$3`OQc1S<+7st4H&m zKjfO>9~8D5eTLeXIxo9-e&^zqO9)6gpQi54tIUHn&cFZB4>o@VI4KK;%r{+Ham%=M z9nkg_Iap@+l;dt+)#Kgic^E9RHsBC>(>R}dJV@r%DNg$IudmNMY<;OFOe?bdc7IA> zUSPHR*0)Q+8GJ;|Ski5L!d&Igbs*4ba#pRXYM}JnKrs)kN>_}Yu&Pl_mTKsjNwKeH zssoX%!hOY}(P`;1RPxXfL>ec&2gUjwSFEs0x7I9XS%+XCGRM25H#O|DH|Ux2BiqV~ zkn@Z1p5R4${kZNQqK+^&~JgqFC5&CiN)+c1FyR9Nsr9V%3Z3Lwy1i z^58v$xuV{Op@W%4aDD|Ry~i8E2K(CCDaL(J=CLbU&4qe3pHd7E7IeFE1{^0iuzS$- zy51xa+)qyjb;9+iDq)-Wx90pA3{>OBG^3BaX6Y5KrpNc)! z@!x8z>P2dyFa%8BG-+A~?HdX>38BB^o6~)wUYn(yW83?NKmi0^-x#VJM1?|cua5=8 ze;^fhGu?a?fR3NInZEcz0@ z93Lb0@XN7A%);DYMG5J>JvgdG;)N+y=KcM)HG_%bFF<9wXQwYdRAi~Sx4Y9U-4}kd z7YcA%1qN#q{6=aM+<=Z@LtftUVTLr#>t7`gEQX8B2M; z(dp?Lo$~E=aFFNr9WAx|`&4X@TY;yAxNSo%pf=Og9zAs}ck-;IK4=-KF)@H@uEu-X zcV(zfTuRjwrT`q_4yVzdd%@v+%1^D z$Iz_7#kZl&qc{_S$fYaR9vdrMI1i50ex6HAvAWTWnO~-gUNo$(8u2#^+KoztK0lty zDxwGr36I*wOKWryFg;n~Ddhmu-@TTliPK>B&|&QayTRg~U1KCIc)X!tSo3)OsC@$H zegiZ_@RL=&I+`@@6)@~BwTjJ6Bc2rjT`1H^u*hBw1X7-d&x*Tu?_OWAHTl@H)xadP zwTWn3cZ0XH3N^*RI6ivwhlwRS=!zsQTb2dRv>5cNrO2E}y)e*wpPGr!bkn*kqrIS2 z)UpQDzAbP`IDgFl?ImPrL=A6z!tquanqmHPf{DG2>rH_u2iN#dnK zH3}mPaK|id`7;_fL(sU#*CUqL`i>( zPTbl45-$AP3a>5aRuq)ZG#U+oFE({bkvc*`o@B zu%$bP+O8+_J`-ln$}*_xi^EEKeS3QWPPyIgDiQk5f87VeZBTnwmw}RK1Qss5o`e1Z zPIz7W|&FFs9U4@Vl#zk$Qh)Wux zG8}$>8(Fz%eO~TwJzD`LY%E5pqmjtBBHoWV25k#E++vc#&_NbDL8K&Z(X2X;bYR7%-Dec45x8;fpp{Xl>$;!?A2 zxj_8^12%F43T*xdAcevGI$z%~y_&KHBQ8el?z!oy`M5pt(t?kD^o|%A!`%BH5lBl_ z%+m@`N5^y@qz{btx%`QQ`Sw^tK|FBqSnhDttMIVTvx2Z|Ec=VIce)2IWF6UBa}E64 zm_i0laq2uebYEEO6k6k(!4C8?cGaY3JJ|MlKvq$R7)_c-aq4t=b9DhrG&Ve)m1503 zwsENh`heHQ_=l%{e!NW3WITNxppC_rG)f7T3y*nX3;tXwBUKZ+hWyjt*&|shs8AE* zy0;1#WpCG`pf(W2ak#crUT;4&0@zI!hN_??^gw0>YI+}>1#mpJE{$u^`63EfIu=Dc z7i|JCH}jvZXYznTnia;sgRaqgv_BgtYl}iggGKA?a7~SVq+XFlSh0}~#0qevp+4n| zlh(h1YewCI>;PziRa_6*e!n?=V-!vYxMQbpJx=fvDM0t5=cLRXcMBGTig(wP^!Hvo zHhszm0BN!G)#@tneuCX-n8@y-91K2uv*7;6{T@#si>F&VnD~bqmEI{rjBD`3Lsnye zfC%}d$&5UPXXh+B3zY|C<~e1IQ=yN=x5q95c5oMKn|?2SKH0bHAndZgu`rH{o6 zXX>9|Zn5xNMJNeG2+FO?jh%Yz@-HlE8qAFg)xqp-&la@OON$V)y{1z?KtELlUw@J= zk-nAw(`~}>91wp*vd2NP8sFxv;%);tYa74B zi9!<4%*+fB&Ah1eV5OS_pl^%G#23tgGeMbfsv&JA1Fqbhe35l$nj#sTsz^X-_JF~N zBe1zZ^WAW@&vzn7o0d`Kf^1(7U;_N*o5l@~HbkBY8*~KmdqH8L-Zlt2eErYDm2%`= zr1(k|x36daV`aM|yl_eXJ=!Us0QmK>X6Zkh24&tmn;@_>Il`t!#OQsc>FZ4Qk#Co} zu1w6Q7!de#692!GCH;e$e#G^{x-L(5icBINCM4&&cX&Zo8?11#Gy-VEfz8TI`UJi| zI4Tn!XDZ@p)m&ZIp@{tPOkzQeN3>D^Tv%S}e_a0LL4CCn0Bu1q?+MB)96&ZuEdmSs zZ)PFKZwj`3g_(vm-f@jhAgUI&?fHO%VX97yM(rs$V>(W!Z&N zR@SVs9xvuoz0*BEx#PUKY)-ud#Ve}%@yI=R_+V>39Q1$t_AUH3%h#ZM7BT<0^O*L8 zFJkq4^8%WPWH%19TAKlg3q`~d_G#AX+E&qF4yd!3^+M)bte(_MU>Zd! zg3n}4?%)xO2@HS z9PY~rKO^jH1z}(Z-&&{n5o48Bqv)9Kr;zrZdIJxi=x8}_j^!7=ya zFdTfT2Q{;G#m%mwkU{B8CP1o*B( zgCe}o=JeHq+|A^h`TkRX($;sZlAfhq6SC~ShFS}?zM>G33tnWSlX#jR{vy7v35u|y zgleDakOxGr!ais`8>sQAQOhW!aRc-RyH?F!{T^hCeeVrIgX1-PmFX`P#F%M<|Djpq z?ImeBo(J0=*}%Z(AZ}4090KuDKyA7?k5dQCOu+TVj2ofO600Ch8r73&V@VDtn`n$@ zfLsdoISoi7zyp;G2b$|3AJ0TbVkZXjjbD}hz@CuT7J^6zAoIjJEdU^jC{l_rf!8xN z9~29`t(+Gui@MZGpJ_DdOS4Va%uLy8u5&4qG0~6aErH@iXdK~wiQ*_HPEycU9aZXTuol2gY`=gA z@SyNCojJsGm`PEQO_khsSuS)6eAM=m`oc`sqP-&3*c;~ES&pZF721N9WRKy$2c ziT~8`VI%}(6b-D8g9@#;1Dpu`D;z>k{=JaO1X3ydpzayfg_h04QT$6Ta3nNU=OKlu z!i+u2UA6o^KX8Jh7d-?8qa46opzixa1^>|k90G4py$I)6$~fo&s1r67EWGv{N26fH zJIIdmNZaAnQsq{+k(66{CJ!1N)t9i-4(o=Y!MJkFspT2fLm*M8zY8)xAStF6f$oMI z7u(zB0bP7%2q+SsvdfyXt>!n zd;4s|ffPK-slsUxI>>J?h%3}x)5^UMfOUY;6O=a;CDCm%2d|#~<|6(IlG{+prq}?1 z(M{xH3-cA_IK7V;>My}8hS}^=;PBl4kq4ehB|5NBk^lC}Hl$<6ha9m*$aqqHc zjfdWhwz>_1XzT5z*ZNkW&`2YWuxeq3LeZ#r{_=>%^dL||pwae~RpP2$oHKD9gh-Xy z8+>=7-@osO9UX>x%K;8emAjM2wN>efrjvd7;vkif5->75}eWNcc*nOWyt)if$$P)Q{%KGnHS2l2ODJ8^5`PnOx@Q`O`T{4W&IQTs!2OY2l#g0ot&lXk zef?jsE#;)?q0?TkkTI|ZJQv9u<38}4cSsm3c$^_Vi*4kHj0jD=zTGCq$ZwUQVKRZQ zH5;TfJ-pl(>Q_$Hh!#Ua=MW6)gM{~z`Zyc$GzRjpzkqsU^TFbK$9^{IeHyM8dbF6+ zOz2|ek+&yQMZ54KQbf&R*RddIc3WEY(qqn6Zx|N##GjQp_MS-(6XO)?k#3F)m zQoGwv?_Km_t~zq0XKr2GLre00tnV$a&B8v7=I-5ZWlq8x(qOrN-eBSpmZ&#is=(l} znblrDznzGE*X|Yx<l(EK+de%*IxtAJ6cNH@Z3Pa^4-dB8w6}+01y|w<$;XAT@GgQT+T_H-O zQ5pxr9%Qj&8#CxX zH*>RJg7#+44PyA`W1R)9sup@p2AF;PAeMxanf2#x5agq-KG`_le!`9mLGacx`))yu zptoPcJhQrZs0iK|D3>*tB*}>JdDly5kHrwMy6|T;VLJDm!b#CC3&2q$199O+hFO^4Osd z=ws;n>2HUgZI*6`ge-ZNbiumZ)9HavaGT)ZEd!{7{ZQk%k^l0Y67C$N zEA&=$S=szW>hGot08Uj6|R@*1p__&0) z6LN4ySv{4|UWG-<5$5doTUl&}UiCJACG&~N{YWbABe59hW#Yr1dUk%VR@2q&TH{0% zM??U=xMP?_J=b&liyaRangTjjgZ9cJoqpLd=@FDki*3-k*ma9%AzyE~kq(p--1T#} z9{&I~oVtq;Z^}oFkd`Ss)_j9?7%I$EE`Xi#Aq%&?S52jwf7g^>_5AW?G3*}n2H+x+ z{UBM`X5iM=;=}PCmm#-Fpl4KhAPlL#>1ZMucqqCl{qappUM@XLlgXWk;xrgUInMsreT)WjruV_nI*8ZPVk*>Kas~? zi*K`to6FK~srA*g7RNfA#Xq)wqu-sSO`HTaa8)^O zz&@6$y`_Zw#r3-1fVVTa3={z;F*jE}RH1k>EErFoG(ty)lcyz+-qDNIo`P8p4*-r9k~o}L7MN?@ zRdmeEyMr#n`ZeA=Fm<9BaXm4ZwMaomM&|M3#}Ek4-fB9Ay+m~7Jb(YMGHwZarU}qU zAIRna>5p?A1$9>L_U`&vw+MnGK`F1^n227eTzccQU^P&h2V6Jm8{o+>G{*CqAPo5c zX#lUt1(dUHFDz(xpl}sh_2#=Q44pduS9%Cwg45WU`#^ka4nA$U4?YJJ!$Xvm+BcqW z7C?K0uIdb=))r+39|wrF2!!UYz;`)7r7N7R6*E4~6jOfI|7(rxhoXwGQa(tj=7T6D z3W_*YEfD4%7z;rrTC%ixIKJEhN-BiSy?=KJI|wO*Vcrwm2FJX1mB6AB%6bViDLQvz zzKG`{oBJp-z=+ncFd8Ve112+~Yg?5{p_id@p&9Z?eg>1x(QB2BFqzj2S^-dG$QWuZ zArWZ*l~t&W^Dx{2_ocJ3bq3nDCsn9yzAn?DY^7#NC(wT(@(!LBh(evlGcMN(UIN&xC6BD7{BNLQB(F>Cr z>UC^~es1^H1 z+5XlN%5H)oL6hh$AIkP%0>Uv8XOzuVI)VHP!W17cMBbe~OG0FZC%Kz5Rajjh`~VkN z+>tP82+c0^>Rd4W&9EoUI$wa@f%~7mF)??N0VP9R2XnId`H<@vwRM-h{=M6t>%V}W z7=M3X@A=5YLgy$f?58G;t1EpV(7@V68pCEy9LNdCY0J5nM|#3>KbpuF4nw9E_Y!p+ z@*yh&%nwMZWLK15&Z$PoY;G(AT1aD3ywzU=lTbLa^U)+4-8<(b|0t_B24O$ZH}U=k z#vwS#acs@mPLyB!`!5)t(D=v?krl`jHBXToQ3BqDI(@zc@iu!EHCfN$ZDXHd5&Vb$^76Il083r)$C7_XaIs&_m zZAORS51@$%6Q#;XyBgSVWyk}L2AVJRB}BbuR$!xFSt8*zmB)uOiYH`+rF(}IIF$N# z4vk*^`$%BUt62iHiA(xgFL{BUh2wu(29`(inDQs8Zm1LBbWqdM3NTz204)nb7Ez~R zfCW+;vr@Cx2g!dIq3!AS#270t2TV$K*b)wCFe_523$Dn-haXwvK&f z{d?{l%k0N*(m|#-*l`2~ougmE#6ZMLkVpg>u4`V2KD_}+k%&n2kkE%4zqN+Ex2z{U zF;C|xVqo*|yt^b#16HRPY~nc(-k0pjG9qA^n%q0H1*k5Z{JjG>(XZH|ga6$8)02$K zK|cl^$qH5&{nL4VK)W8pV_0v1u?b<7PkUs>ZMAn<4GiF>XW=(Kto$7~R&nY>qPD>b zafP>;ePbZ>W;_VqP47r=Ry3>psYy(mYO0zw$V9xVc!&w|S>i?^XBQ$v>To4@W%2-? zhSLgu;BYv3(^O1X*k`vg^8Dokr`G;tYp|{pk*3S;a4bPTWBcd%^XFWUEdP$>0n+!Q z@=%Wn*Rx{1)E{+RFF@>rDN8s@r_PG#EtAT9iTUqGZQIlBZZWZIn0t{XhC6`W|6R^B~2 z2wesj@~vnSbi6@okXu0Pb%~&Ul9Ht+goFF{k8=Hc=0Vd$Yy*%7S{?Hy@!R;|%AEJ- z@A`o=N5jZ#2B!faJCcQT8?Xa!Wu*@($8&v|To(DMXT!9vDn_ML>Vw^eiZ4nE*SK2> z;56+ZSsXM~kPb5T+k?Ij>Ca8XgkymSSFJ)9C?8N$CJu#ct3rM;s7u2R+~7w!N7e?T z%8@}6MHm_+x{O(rL7xb0pwmCaZP4V9dt6f$34PqTmVh4r%HlHsxhW6{`+35CLw_;# zrtYa;?3HELJOlR3020Oyz;uvdz6Nx|Yb5cM&}WL4QG_pHwsX!9nYs>M9N0!WIfnPu z7OxprSE6e{hAb5LDfpm^U^rZDDRAvtQ(1)345DU)VhosWyXF>9E-{K#e_#yj*g_^+ z(&ml~X9EhB_}J6b-nO~6u+XdP(YKwD7fC})TjF~Q9k3t({o{|W-$X2?eN9yW`kqGE zO>k_ybL{5_%G%mg>UCOUvVxInXn1f|$`W2LpvSRU!x`N{AepQ%tb?$JoC!X%RM{Nthf6s0^dgGk2Y|L}_${x_k?@vqsCivSxd zsua9RXlXDdaeuJr*RNktB9M`Ns>=}RFf4b>bRq$}x&gEMEJtSnxj^2wd&dP17CfJI zgDbe$myV9%t%RfJJ;U-8$^!&Vbu=;RNK@zF^S{!;vX?!QgV@=U`EU8gjljT6)1V&>rYp1f*9M##Dl}IIV3oCH3)UTo7NqH8 zB^xb6Qbj!P-n1-kUT$V9d7$I{bgT=s*T;o3e)Bi8(l0%jIV67d`f&nqk8H z(cn?sV|1^3i)OVKV44-gi-M47x@?FE$l|s&JH?_xj#DaN2*KFD?Z(w4#n0BjCXvo= zmIm%QuIj@@Nh*#s`&EA2JaKA1EjFU&Me@;qAulv-Dtb0VN?vjXm03KEmr?m!2ncN5+U z0HY3B7oEYD4Q3KH=_ba&*tYOAxkEZ*=m$dq7nfa0rRHSd)dv(L@Hv-Ve3`H^kzuse&V$(>W1=LP)(^%Zr#3aYQKk z1ENmztVId=ximqix`%R=4^CSqBxW7}p`+{hZ4#eXn{L6YLOjv50Bj=<05ztJU9x8; z?~h&o+xPYv(+Y=iYUTc@XE5wynfKZL{bC5-U!Y9@%W@MO(Xiuiw2~9FN*_PK7-Rl< zmGKc=jJ;^vYE@>HgDUnAY<*#ZzRYHRSw1`q#C|z?6WLTz&g9ofVjt40y`1O3{{RgE zM4Owk;=~_d69@_cA8;7?$(bVWrK>5XVd zF1@@OcUsi5l<{}p15|ui6H34EC7gD12OEDg%FBEi4u=}dH#HJl=;M*Y_F4cyC5RT% zJMg5U_&T>~Mc41tTPuP+_sPCq#=iq35Hs>j@M4NNmR%=O(Zj%81&@!v;uUFP3L&Rh zf*JCL4~M={u$USk>aV0`)&=%OrxEgo1;hx$d%)QwI-}(H0^z81_wLCYI^BLZIO8gu zj1Ezxqe+EA>tFf0R58-6+uVLaRZ;7OmLkNM+8^n&2!DL7bQBpI7S@|C0rNWUtlHCw ztY`N!-JK?y&P=8|3r{pAT-yB^qKr)T!?WtsH>u{&PAq~=1bZ52PM47lIZ8Ccw$BMH zpsNv`Tsn6=3>v2_H|n5&!0frsEF{#hdJKPUf=bX8$O|5;xFe_TDKuxY`T~Y+ou=M#wHzJZIAnuG$;bL$7ssA37#V2U z1LGP?OC%yd1-wMY3T)RChEt7PG*(`8a&uS zCQ@ldG)veC&Qoo7=^!Gj5`)!Iinu-k_4C%FZ^sM5rLrGRI_byOtGEr=hh<@?v2})J z_NgZcgKl$s&=7R?`Tj|zYSrEzlj|LWXM-+B7qhc@LqZX!-77#r4tA}-5JrVTX`IHI zz0OE7HVTt_koMejri;DNNd)&YKQ5FS65itVXSd#K_^{2Rdmw*d4u}bb*2n~dkWk)ARj*ws8 z@N!iLcMe@{c~7>#NrR~KslE45f$w<3vx!UU8@vpfctwv0Aq$A16kSZ~!u>|S&veWb zFNV%jftN}-ux!^>wfd7#v#WLtyUDlYgstPD@JL;@yaHyj5tq=fJh~X@9LH6oH)*1e ztf-6dV%7rKehOcuH*S{UJIAvJ!y=tG7Rz%)Z_=UPN2iNh>h>+IvPT2X(SGu;!Ezqt z2vAlF<&vRS^4MwmG>}(77*$7OzZL2k%Mw+?1VTGCBKU&MRvS|2jkDpwT3!T1jPr>y zSDw=grG-;YpvsOF-%iY*Gx{LP1)jP}k^|TMc^rnlRZwjU+Yh7j!%V06a^8WRxf~=g zq>{1$jJzX7_F>5>$Qfa87P+;QjH$p*E%NwOS9eWQYDKSJg4<)`gMquOx#75;B4FDt z1JPTzdKP6R?bVqu(;b%;N+$Uwh3>$K5`@cCyzypy% z7WyG;%wEf?Rs6O?x51GMC!grmsn6yof8RL9`4B2Pnw_APS2ti$0lB#n3C3xP9kHoZ znszL`x*~m7#?C@^v~d3srM~jA!nM{FNVNan%TM~K518I zTeQ}c+P+FxIePog3!Hp=65+*K4feSDUWS9387g<}R6q96SJNLx9YtgoCSm9G>O|Er zA!0~T6Tmbeh#T`23pj5x?{At;GO35d&J5;1^J|88g{0Bk^6}{b58{PEx+vr<) zf5EI)#5m@NrWi4+%o0f(PONIMXjEe-0eC5IZ4krB9fnmFnp3ylfC;j6q4gb2+ulTsP5hgX%@W1ctbvL0tGfk+?QPcvCo z)~%C99(8d@qzTGv)?zIBKD?6%i5!76!AY`?L^rU@yY2?QM|)E#fnKk6fh1^nMq%YU zV84#)7u_mtOxN%GzE4pL+)S%{5a&2v{1OJ=B?LD>gv9h|$Y9ax11smMNi;xJE1(%c z4EFir>yFU!NvsIgZn0vaTK%JX5IzJ*s(|tn=lSD}POoMIPFwz0p%6sbtV>qpxeVyTej-nD25P|&Md$v4Yi_4ONoY` z6PgL3twpGkQx}=;OB@nOii>a#&4~AyFSD)QNP~VJF3>XM?rp)9@y79L>B`5D>g(X# z#Z{jcs!5=u2J_1?=XCo_i?UPKa#7a@=@(Ms>NYOA0!cdwFE5Bc_k>+3w5+2~hrNH8 z3fLjAG+*J=MHA3Hvrmsf(`~rwZSWG{Y0}Afw}0|N%GA5Q4o1hpHK(eKti*Ky27p%_ z)y-WhQ5>+h8!Ddhc>yyLs82C2U);YNylecA7NAz9Rly2{HC!2?nk)l0wB1rfT>^u5 zbiP~4AV0lGSEwmV*E)dv+rfUE9s8uF6QbkHQYJ#BH9W}dadz3@v0LG%yo+eHRd5cu7b@AnW`Oc^E|_ z0s}=R(#uH@HBJw2)*PIR9>ai{2(RRNygIAx(E_8Eg?lie`e4N8-^*d+f>-NVK_m@+ zydX)2595y^$H_sA8mQIc%yml_14Sp2td4`gfheMb1=5vM!y-fM#{eb2%dK*WKOdk5LDQ;4d3 zB=t`wKN5GL#DXZ-XnEc_RpXP!2`xHMkC_GSQ~0wf4ZKz`spknECa~XhqzsaFBwWH6gEiWZ1B7d=+h`!!O?_X(?(tfA^Il2KLZLEUNwVu;u7UOryr0S8m#gt znc&vW|Lp08@Hj4`we9y)hrPj!)RA|fe_eD|QJo6J-x5+eV{DaqI=Cb_yP&>G;^VG> zQT%H9m!v0Vw}6!)#{ZepzLK*r4wEMJNOHCLcPI!0KuV#(HtLBHMnFAJ1~Vl}6vjKN z&-P`k2ES2-;qBnLs2v`s84b=X5%YSGZ&sbvENhZj49K7-!22kel8eH_C4CsH4e z)Zv0NPvh%BOhYyU1Xe)qM&eVDW88(Ao-nCpQYG%Ij^=OiS1>T(At$`~ss;cgGO_)? zIQ#0TD%vqx15c~y=qzpqa1mSc`JVMWn@v%mh(NmkR=RN67d4d%s!3cN}Bm`Qs9Z6gD zuqoyu=-~xbc2#$&B)13%a|py$5ECafPvJ%7I`>juHK(2r(~}#$y+!iExNr}~N8F+z z_7K>CE3kdr4wfP2Kz^WofCxz4&Fd+rX%E?byiGbtNH6H5xSGoZORiUJDG>wj5xp@> zqCX4Xe2NfMRRTE+m)8G?k+ai2C(n8Z_CAPPmb1C7F(apja4m;y%P^3rKJ13!5i&UE zTC*eU(0)R6-sHH=&JKjljy*U*vr8`%Cy+ocKGqde-`AARFR}!emPR4aFj9)AYDL1= z_Y>@w9|k=L0jB}_?tcBD*dE!2b%vu}>4d3TjEXx{`qdwX9=}t4;bv3Z;APg781*?I zsQKEA1dfOB0WIBxH9f9#-9RNk)45#EWYIdpPT3Ww-|xb6%=@3}EJQi|K-^@YvUflC zZ!R@44DY;?f@7Y5zgK5+;DVbbDg`O&&csS-nbG?0zpvELbVihuGx32>Egyk14=dH8{IhAAgb07g zryd^)#7bx(fHw-TCoK?&V5jp1j+=4PEP=4+(U=7*|hn%P?33yNq? zXg9m%^@&b?IoQF1c&f(SnzXjuE~}a_6RHi2$yiFdrRg@lQ1jT!De-6AC%q(Pjz$|P zeTsX)I|N3Hg7i*xn$y>M)`y+@_AKWI=f9#X2t_Uj=y5rk0ryxQvZ(uWGM`elSJ@y? zbqJxGMXJuOChN6afWq4%&O?Dzse4TZct(LSsZo<=vccp}TuEjA6>}w7zH?(@!=35h zN<4frGe*&8@6x>DX%>+n(I~A`adICmAUB;Z`e=!k-0*NU4Ir75?bU3TB!3FhDLTuN zH0|1c&0_4R>1pX{Ruxdk(vV%q7xgg1+`Qn}Y>VSvM3bPFrf2su=~U_S>=&LkoOQ|8 z%r;Sq)0czu!ewU-pLy}h*+i+3MLb8lec91lqTlh(N~2xKoO}2(YO<8(P1Y3xj~OQT zw#UfgKo0dB3JE{mk!!cYe_HdYQ`@4PombJ9-*%W~fS5xA5+sNhLA`|xwruAT%ohp* zg}BvHKBD(sb%^6m8XqFAT^&9q8Z?m2HU!9_#Q{6Bjattn7T6tsF_i#nY;Wp6rjsApL@u6fQ@ovTJE#nD z7PC>0^OzW~D7s9RLup0V9S$ldZ%d9{dgW93n7$7b8`b?y7AKpp$Z=?Ha}u=EI>P=F z5ONnlxp)>57pYApPIX(y^}}ztl9T$;L!&6rc2yjlgn40o&$q`OF!*R3jdf)oWMw!c zW3eD!DZgL|`%tJ)5bxiOf7qy1zhZ(~&qz9HD81yGei~(#qyF;tZ6Sn?*hMY5$%Ug6 z^GnW6AtggOeqeo&q84$agT$P39r?1<>NP!(-cr&n3qBMJ=^^1|>YVlqSy}ue#j#o{ zBrp7J=#BT1aK6(`%Yf4{<2FUN7+9`SS7Y{tNz2dos7X&cT8fE zuJu~bqryMw5$#3ucxyQdn?ievS)F>2<-ICo`~Yvzz6Dgaks#ifPhGLe*#pLH|6$c_5>)o&Xg(qL@Kz)8 zb-=L>2BJG+h`c>{Qjg?{?Bn+H^X9mH<>e5_$%P3wcPXWQQAg*AQjv$9`>?5%D5|sI z41O9JU!pq=S1;qy&P~nYb1`1?*eryJ)lk8^1*6c0NP=EPb_uHotQ=JsE1SL&xbc3N z{!37ZleyD%3lZwU_aIDFhMGazn+{MU=P=|PA$8B(;!nFb3VvBse6?KD!0h$3=(lh9 z3YM2FYy@Y}b3@Apk7&`U2R5fIdqV-Zcd$%e5(A%Cm=yaUW6RB>3%fZRhFu;=bUsZ1 z`>m{WOE`m-0I&Je3Ri77e!2HGuF!|fs()+S@xxG-?FKa!+fj0J8fwxN)Soqtw`PJx z94x0y3Hq4XB05(VQD$@Wght_UvC78auJ~*F-#{-sg<>6(;PO~6q#;fjNAd46bmwwJ z`cp7Y*GxaMbN&x$r*W@n?{0d^P!G;cQeXn_#q3vNDq^Z}*=W&T4Xcr)nCk))P7?fA zxnO~lYfjd=%y!vI{v>fI@^VfDzsh-y&~c+7a)7gxOE=`vc`ojdBSNO9As#!whcB~_2T|2_6_5{#p!Wg!P~|7V@Y$_;RjotywH~~0K}FF{FKQ<$ zdz-cNzdF1>r%y3k{h_!ME1Fc09uQB9NN$2Y3EcMv8%%ad zvkN;du~^WZPZ)o%=KN5+Q;^X;c19-ro0GtWZ!La(r_Zk%yZ!jnGB7*AE|01z_4mdy z4+a8tK&@Yb9FFN(JHzkXHP(<=9$kBgkgX4!dCg2RtopfiviQ!m?wL3~_pCHtZhYq5 zL~GvD-pI1jBhmqnLRJ`!sHr>xWk@wh!4M9#&M%TGOW=z%r|WgG>moQTsi!2mS8h{Q zSEq*aAV`vhXs6FT}Q?48T2Majip>bcLn`&+0 z&Ha7$3juXzP70-yE-R69;q!A6A?)e-o$SMC;mhvBdyVn;sfZ!Z~@ zBhLq|x-b0LJltkT*p_F~Qtvz)*=f7fD{@YcXZu%omY?Mto%$c&(Q5^z?(8OM;(LVd zKV|ph%WH)o&M(7-MDFcF_fMlMT4B{2R>C$vxx;d4kCT<3JKB5$2DJQV=N|lgM0J|Y zN3`D3`lyP)O{!&UQG7S^zuztV%cPapvV9|k=d`Qg_tN8@bzKu^3n`86JM_` z;A5!2)^*Z*X7qqQb^iR5PP`^};R}2`SLl)4I{$0rygm9W>)5J@_AS)a=s4amCjR|g z_r6Ew$*e50f2>pQWm^h)&HksvzRJmYg;Kt_^0cD6YPCo$VB#7}h0|&TEtOY0#+fG_ zCvOZNBdpaxUpRR2iI?qH}0-4kvicbtDtth#sF zOi;#7b-QJ$7XN6!$5zFdJ#ptxa7-WjireC!0C)AI@Z*Ws2i@02pRREY5 zW@>*MYUx&DUIlK7j^kQ4li>f{;b1&$cle+xQQVbM%#*Di4dv@@TLfP znROxTc=#ob9yQ0qCZ+=enEhS_g~@2;zXrxZ3noy!0NY`zu_bJ@aqF>aA#o6xkJ4td zzPui%s_LLKw|)>v1#hq?KnjK&8*~|H(ukoaa3^n1K!5^aj+mz(#}Kb7gDn_!%Q-pnTO1uaOaCN8evQ)9yQojD@Gui$Fnr|Aw!z!sI6Uptlwoyir0_yLayrfuYiKw{!nKeChew%c=haUa&vK%SGyH}CPqO>34$r= z<##yrJnc8DX*N}iin*^W5q!!tPA>>ov@T%uk=J8pL!WIarZn541y+TKgITL)x^RIL zb_Z;>m_}PTisIPmx6Um%jKp? z^Bq3hk1N7dItg2n&*JhR@Tup<&c`sZNYJ4ZG&U@Ol z;gg;NxQ!jpm(}Q0ngTC;7L< zy3r%F@^*ZGduRGL`07EhX>294$t1cAQc4TH9^;5%a8y#^IR8;yNh?J=-H!(UUrNcV z&bw2qjQ+><_4*xnN4n^|rVxV1C3;er$HMp~Ua@alT~_?#eW9;Y-g8IIZq-xLiUm67 z3~km49rv?Wrfs`%RZg|K#_Aw-nQPP+v%~%t%;N<4)wFq34ct_~MWn+7o+p%il3SW9 zC;36j0SizVk};v!e_>q}i=mjYR=QR?)+-c)<=~WJT~sf%ZMLO3{{tf53}O3nHC2IB zmI~fq)+0i6mLQ{62m34jI??OiDdGNmD1&g^Z-2@e5h9uPDj+-HE(GD`;>tN{Nu7E; z=oo6(0f9?XcecTlmi8ch*~(ata|*_^=h7qezU`tfcYfMBpOl-pg=aZ9PgnzBGRaPN zjgqn;X!l1VLQM147|*+IV0?pT^8FaeAVqCu-!k^|d^!Y&0BiYPhzquXl{|w#U7nddws&g_PBS@Oq02o(f z)!=AE7b)VLm>lozm;7S|%ClrW?gTy@WxR0}l;!m#=v8J8YN_*2q@bMdfrpP}g(F2m#wd+s(`5f@O&HqAIKXmiI>) zw{MUC*jMnz&-MG!QU+=of+$%gc2%Dyjm~Wy9o48GT7_V`ejd4yjkcsigc1mD4gL%i zE9Q*>Kf!Z7cir|Giij2I^Zo0jrNvlP|n+6WKYs zgn}Yp+Fw0@F2KD9Y=<~LTGc8$x@r7M{>y03pvpR(6+8Jd`8{_wTo=vpOQW5`hLs57 zQ8ZsyiM<3@A^pU5A|pIIPxMj&>BPR1!p!p-tj7bKS)!1DCP3ZDpHY0A0&o?!_TLhQ z5~8n4GPUM`7*Es!tmCXb=9q{j0cJwWOeD+Wmg9Y^;b*AtCvMDA?ka0t0Kht)+*9l$b)7I!`kgA*;O z#Z~YK8p7G(c}YJOyb8X|khv5Hp#s?;)TXo%!{ID%1l)%G-%OvOiY7L#5Tfis4}5tN z*T!4BiAQ%ggxQJu`-;k1vMGsEh+=9)FCze%nHehK7W-J?DfGyk|E$n1$M zmCSg`vg;3QETBTT+Zq&aXmi~Rxh}xGba7OKg#m6yIq*s1luJ@2zTwRe=C!w*t!9!f z4?z=@_6Ubi$siRr5j0a6VW3W4AVVp|El9~f%U(HR%hwr$2QpC@9qbr2QCSj#rb z>6|WTOwp+?lOd1)50;k5i|9C?mD5aT7i&4EWTa==(ZC zJ3kgK*-reBvZ$I8c#j)T5X%#8%zt0q|80NE%Xqn`<&M3AKMt)NUE|^G5pj;jWBup( zPN`Fdr!qEzo@1OhV;=<;&sEDX7`uoNmi&hqWq}}!DC2o}$+Vi~Z-y_Z@ zkfU^Hb?i&sKI*dN6IaVTyxd;Ro>R^tbcUF(O_BKqG!8u+(fjW96S5#`v(K~RY(5|C zrTY5(SDPcxe#`!>NAt#&&Nlk$@I{GQUYZR@83ynd^PQIh*6sTqT3{sjN8G&qu87d` zj=Ijlm6{_fWaH<#;o0;?Z_ynwHjXo!P~Gj%@avNjXDG><=E+-iD7l$ObbD?;rWDE5 z9}ZsV4Ru(&n1~k3W2Yx9IMzO2LryzVxIt?QbgW_rhH`Ic+8r1vSRA zzLm;LjVm3#d1Zb2TWUte{I$E!n!jf^rlKj2+tWw-{79(LswcZ8U-*6h?e0DmS>a_D zk?3h2Z3Qje9X%^=xOa5mlYL@dGF-P$vABrSWvsxxcb1dgN}=M9L#SIu_gis2$4)n} z-@o}ke7~TdCcR=|{hR*S1MsrF&Y|+(ut7vYTR(OFbjGRUTLpf%7YVP)pByip^A+G? z7D#%(DzUrp*8A@lRX)Zq&#XqI3vaE>IDmHW6C=RMwGWt5R^&>9{Inxl@;g@-mJ3&V zsdRXISF;CPhIKaKgVp=cpYX^(E-LC$`3fBmJ_6UaUJKG}ODRS3+-hgwRKm-V2x&0m z&t}KaY}z-vNQt!T`@E{K+Z(X{p5q2z2#uRI-+}fCPjtyG) zsb2eu_tNDsx*&FED@oK>c@)2juc4Rq{Q02N$E%{dcjGUeq(;l#E4u9n@~yZd3@A2ied zGy)_ZJ)h`vSLPmBo!QRDJlz}O7BR2DSoaQJ?sfOxhmZ45W$+Wb3eXQ4)&w`xcMky(lS1O|NJy?Z~F51u&_za+5k@6eAjn6EXY`l>ZU_8QIw67ibMcmU*7_gv`>F;V*m90*p4L_F9gf>*f3V!%v1ec4X1+ zoAv2&uf?Uu&$5lx-}jHFK*hvY8cVa!((AK(y(sP9r^`yc)9XrfCXMVrgKg0>^?&x6 z{57ll|6tHlTL5zd=#?F9iH-qSbGAVgaw1$FDhhovd+&ngj>3GTyQtOM5e5(o(0FUs zTcC14VfJQJEB0e%DHZiUgUd5Nkg)!sVh^)HiMs&N60pH96X^KQ9%DELkeKF50j9a@0Y)IXXxEc5S?Ptqp1g!9#}X9VlO@$_ zA}t{j`QR;_cfD`#GxgaW`>4wQvQqNT8(!QvSBnt_Qg~9aKa@FnzJ%?uFR^0-QxW%I zf^Gn`5mFl?sR&ez##OJw2dj=F>J?nD6opb}7W zCX*WUk^V7hNdlNU|A^h~4LJf1Td1J5G68|f+=qLLt@Z>yECfxTF%O^!X~m=d=FaS} zL05PhEQ3ZE#FjJ#Zzse~n00IF@wV9!Im%R9OSw_Y98A!mm&xroXL)9AtpV=^C)*xy?i|<)bxjV^hMN5x8sn~pMZ$`xx-DbUpT!BW4%yqkqB$YbD;@OHCFoE%rtz~vzEXcoYJ?)AnR|CkbUo%980gM}iAB49 zeTtu1%W$odq^cPX^-U-m{8O`q`ZG~W*$=nKML?KHxR}@W;|biN<(A8~>eYL%unlA! zbtde(nVX))v}mHZN_D2TNT*fE>RoRn1?vD5U8Rtg}qzs$PR8b9MXfQO=hNc1QHGdX7XTvEr zJySkIv`2Lp267@^@qA0xO8FTbma#86XM{D*h_^NA5i}Y%(||-=%~BO))d5)CH3#?Zf>K$=-Lp>9ury z`oFxm4nEWUGn*5$xJ@y!!SKg1JY=Yv6Q3W*qkfDx#+TWM zSu|UTT}(Y(RlqJp6GF3+6~J`#<^*F9eU9LPW-FF2sB~t(U0~2mpBy~sD;oWHb%`t? zBkipLh+@uM|CSOZ@t(!YD4En=*u%b3-`Ua$kj}(G=(YM!Vr|V~nb*fG)OLaDfeRsb zH67&_%!U9&P!1|Oif!)*8gc|l1&C|n^zWmWxWAZs1YZL2J2%<`{({P^`)XPzg9&3& zjxsQzO!n#dszbO)%(?6Drj}{FY&~u<{7n*f&pV#| zdTtxN5C9jIsOtGah=*{_udP>t`N6Pimr5}BJbsr|l-tW?c{&5XMOVg>2mIriovu=wb*fDSG&Z{W5L@5s?Ji;;!V1_|7u18K9@z@ZbYsNmM~ z^(;(FP5e8u!~Gd{xm!~FBPi&Ev+TKJkdVcv?2hSoV)XCt@DqQgt~&qQH)>24@&~(p z)!Hh#f+H7?;^sYOl4#)%%P+2MDSAA;k#UgfC)+=Z z*1b`CZ=+Ht?rY0q}NDeW=bfJ?MGR&oZB>u?Zm-@FYh*CJ_-13_Jq5 zNxqH&T&h=h{;dlcnydAgaN{Nty2MG}*_V1@&I*l8o)#a6GZjfHIk&>N6vK4Hh*gg@ zE*uw}83H{)pIYQL4;JUypYkC|_IKUHq>AKn=3tql+lx&_ADLzvs~zl{C7nWC&)B{! z7ccm}C^B-m;rQ9uHBX%X<)vp3vLC^yCfel2k&{yAIGzIMSj;Mvv3G~2Mp?i3&T86L z$g-vE2oWfO+X96X12@6U@>R-Sf~HGw0dknn6cr|ZBF`t@U}*`48;fl)ul6aGpQI>- zG}u|IvGS)3&j5ftb!`Cl&fK3g)7LA`HyYD+!=mVtT+)^#OJdzE0S*2+XC-&Clq8Ek9`O*y_QBJeZ4`_-e7=Yy%kkmYLt)? zM7BVqr;t-FfqdT>U(?s<$Veg5u#h$gViB!w@!*}_)_tGulyex9?D#dtYW0??*Ysyx ziuMdJ-?s{X#Pz>F*F-2RUe<|>6=xx?Lj&gv4k9RO1h`~l7bl%YJP&Sv?izfv7M&hK z0W0MXQ3%(0&iy>xZN6ttwWeZ7uI@;1ZsVT~#qLYCO#XIcv@ zrRev|D9Ttu7)($M1K5BUjVeUc*kvKu^I{!kKlg?da>s+OncQq^+!0mzNyo?pg8I&l={c<~>z5L4n+|;yQ zN-`%VDo!q>#U)l{6SwWn)tmcvU&RTUej&e|uyZZC1)@@L#=*qjqd)I}Q)dh~H`!j8 zJ)ZKp;EC_bPB;s71Ehpy|1@C-48&~AQSLU}m>ez|UxY7cp3D60fQhiVJHsKVS#%vw zf#Wp^v6jp%S6#HM_^^F&N7*nHOROFDFBmQ5{y6ZLBJ^VeM+DIDl=FW8=JEIv8bKI; zC%cjol7@xbcO(VVu{?(_;Pto{_yIgSvr(p@w++rXk#sbzGFa6VtsuoK+ZXqhD8_`@+(3}dVOPDa1Cl8uw=O!itjOW-l}l7>lJ$}|2&3jx(IhSF>{1T- zwgTF1LM>SHcDd*6>}C`bg#7n6@7nySVxl2aQB%8@o>r+Y&H30iC3o`Wc#f3 zfn}OItdVL$@GL+Tl$Ouw)l0t~Q`7D<;2MKmJSH^NDYPO2M=3QW&1(J=e}1B1rB@2? zQ?cN-UU1XNN7 z(*6IvCEFM8^RZNher=@5(hj+Q`*(I6XLHY?xg{;I;`8huA9By%-fu!*V3iBt!&%uK zd-v{TX1;-La@tC0_wl>&G@JeqPV#_`LrlYxoIu)jJ?et035?iI*&~>hV*V?>T^y4= zKxfsqI80eLz8ZA1qjTxP(zqb3Ju<}5G3ITq9o`~Feu0BH0dWcuJry4aD;DS3)Sy}b z_OQAV-812jy;~?>+BR0~+WmH&Wjw(_y{45J@h%%dh+8NBMBGj)20b)2GpkkGJv8K3 zU#0!VZXp*z50=Rc+ zH6s`VeH`bFXH(%&%tj@$|6&Vt4t@F{W<06$_gyW|xZDRc~~6Wqk| zb#sfQYS8uX1Rzd)Qc_ATwuo#z`4tHcN#Fv1+K*hCH?&j?Iyh7_t$+gT8%p(;d2*v! zsCSNY;8%poHoF&t>r>GjsOsT)aEcs?j+j5%6N^>)UG`|xjISZG2UM?5ckv$v8{Inz zLh`VxK4c`d5p~#yJ4=G@4Cy2_21m_q&i$1vJPUt*AMrS&;4XIL^2-N%PI|OSts2c7 zKi$!o0S4mP*vi+(O9657FC)iFW(OLVPa@IY>?tm2^+bParC{ukNpleoS>LgrWzj-I zqYYdxVh0Iyj*BbTuERGB%j}v`SPmvVu__nhp6Y0{T+_5_ifU5En4`KAab3HlJy%}`PBDtmoM3zmL2X-O@&vSDL|qZ?gEdH9 z7PWxqoiHlRaG39WtQ8Kz56^REPQ^$xh~ZN+JD!*gAQRi^T^7fv0Aeb&48892o4$dC zjdFMyL@O{Lo;fq{u3;ShJvR8~*mkNvPgA5lE^)rWOWqebwNO2Ip*8IF}>oQaV%qvO3r1g!H6GE%B2pT{e>4Tfu@kZ1k?)@ zGzGlhU3vm0I|*bU{`FB!sC#$hd4`>)f*7Kja&HLTIS7`980*!RHj(b(IZR-?Y#=s{ z=e3A~p$%xHT(%TEd(g_i4TFVQ9SWaQ@rH^ABVcu)SS0*@#g1S~frb?wxdX8XNa_)> zgatE>S^hj?DJjLq-I7%Z&lZmszd9B=3orUh;?J>6L>a*c=D9ru)-XL9_}zS4%nz!Q zcD>V4el(aN2sC1zOKf#Tgb8TuiuRukEZ9^xBAn6Pco-AYBJk^-FQUrV;|<6Xc)hJ@}OQbVk6A%I$e(~NTazk`1_`-H+?L7^)`=V{YHa5uho)- zncHlmech^{5c^}~WCNrYMj^6FFpECv{S~x}Hg^e9RwJZIifpGGFSIKglJa&I!0y1A zSn`&eK+<>e1it@k1>3xEsgAOh#P zokZBXa7Hc2&vKF;nvPwY;`ui8#CX3F%X$6@nB!>l{62c0yrzWtm($#6nkC^w8=msJ zDn9Icj>&wCk2s|oCE8ybe1<%Q7~7_$kpvdGzbCi40wL;`>W16miS3%QSvm}{ zIT4-yaQq4g;8ssJcORO+eyKLwoJ_r3lKwWKwX`*iSUQ7tL~7bc1e@r*8+wPqgBq7D zJ=MRKh0b+#dSW>S`pA}>EIqErGrT8k>cq%FF`?P+SUtzmteUo7{#tXz&s36D(+j(h zq~igV#qW-{lfE~d^!~jV$?FuaAM!GMXlU+NK@z&ug;^)LQh8J#N}Icc$l|Pc4y|kP zo@u$uJoLjI2Z9JyzwB_GK{-D-(|+l2jYRnrgv;Yw6AF#VnT$Tw7nSe6s8AEYmyr`H zJFSL-a@2W4cwu35U6BH~rplQSR{0Vtq^ zMe4?uw7zq79zJFZB+HSwzR3qV_;C@;(<2E%keGT9@Xw$-2xikW-(KS8+!7aZfzvTJ zD~Q46#iU0fw!godpVMDQVGM|znIY8ntWR*@VwY0Q2Md&n4rl?)MQkR#bk}z~o+Vvt zVQZPoLKG5S2sxdQtPPpviHK zH4LDt%TrJ)u)+dDOn(>~xysUo0N4Ho%}7NilV1VeD9A7E1U(@uLhB~1UAQGXZ4S_v zA(}h9YxaVHCF|nDK9Hhf0Q}VUXrrEG_1v+!7HWY!u{(9SmL z+v_vgrn~N{jm0c#^Dyibm+Z~cPPtAW0c`w@m~_7)?fFFtaw3IF6hmxdiUY#tY@MN? zMaMM4F~m?g#|uZ%KcSpB=)^aLe!#zXB+vVvR;ydevB8v?CqDhjQk|LeKx$kd=}Y@^ z$IThcTjTW9Q_~bu1jR^DV4KI-_r&?ey2XVI%vnF#!yxfb9CnS*W_w@35uVj1kF^9> z!d%Z98M}IKe;r!l&W&e|CxeQ1FUUIO?Xx|nYaPpT5TMCG>m6z{*(>{FOJ{(kkJR-J z(_7W{9#Gpih=qOprAb@?_4wSzQtZa>LHP&s}Yf=i8;wRKm zsq5vj26G_*czK>_<7c;&dv6N9sb|RCpLOy37RnPZ8#D=)-z~iZqf1+bxm3Z2U zR5#m+*stMGLFvQ>Z~kQ&xSOzir{uw8N9As7p_Me{{pw8=0dcagb`8XHiYM~{bDGY2KA1^zz#@BJ_wj{G^ z_`)OpQ=QCXF?qqP^#@ZM3)-w|W`<_-s&2D}Z3xcBvWkaO9vue?J%n(TYV(v9gbYp# zQ~z2bLf=E~kDV*mwimHW^J=XKf+Vc*z}bV^J>ZzG6M}=0Rza)k^U%5uF1YcCrCmz$ z&MdgEL``hqgP71>T&ewCBFX)&NFE`n=b^D=HYs^{yI6c@!hc)n z{?&80drCsV2yj;;jO>xob3kDQsE@L3;$;>3Rk+-d7jIS0g^(2nI##A4R@)B33@B%1 z?jad6seG}zuLDcX?Bs0T=nXpn2QRYC6#bf|*rl`!bJ$KS)QgFl)ldGt9|zW6Ez_Uf z7Q(AerKYCjX$C0W=-G-B7$bQ$jw}x-(tlt#aBjZcam^du1NJLl)1A~M%Qe1Y)#y|j zIb!4;`-fk@o@j`l_vx3htY`5+-EOELy+EbM`V4^dr@EWD?Bk8ahfwP?x&E3BX?Rt! zt+e=|wgT8Q_Rcz4##M8ngo|}lPotQ`e}AMUcG2${M2glIdaG0VqNt)gy}O;geZ*Kt zbCuaUtj;Glqioa0jW(7ayfqXRpHCG?GcCI%Ni6jyPN^(vwlH{@dDLoO3sZP7Ym0~m zJDiJStW|T*r9E`Y**C|J#N521O5HNG$ulA}Xz0B)TNu#A zufuDiyFk>Jp3W)A2<6c4?bTD5`;5!->H%iD3ADt`c~a8GP8v>9Fy3Iue?bYXKt$;kvi(!F+AmGUR#yRzO(-o7&&cL zcJIohX*D$KgJNJ>HQu6aRX|$pGE3IG((Zjh@8in|^?kh;P!hjQz@DD1^>h0VkFRzP z59qPxh>X^WE&WaXOu(w6_hEU@?AX29kkfT56U}H2IpjmzZ051At0Ub0urQfFdggWB zlyWt=x>`)uE0$&`Q(e2%c5^kij|^fsCpo<_1#(We@w#Wwq+`NXd*tf;vAe;&O(zA? zku)9k7KdDx0%sJsv`H%D@Kvy4OLDDRDeODRy6u)?4h@{gRu5{qwYS|S>4YtQleU^! zK0faYLQn66($s%nRjN&rPp8PTu65Zf^KtqggARq&HF~p4xPfXrLih>U8LbH!%AVy< zj6-4GqHBHFMydwoex1#(=DbcQhQ%~0Z=>oBgOW^4dJq8l#dqqN3B+6~M?Nu&1u%T< zR9;wE-ri2Mi-02TR575$e>=*wNY@w5m*m=95(02y`%(q)Ld))(D_!2HRvA;%59W^7 zs{98FP)?T*zH^Mw%Yu9q{^yZQmxD`_%N+lI!p+~`A@7+>oj;H$v6&_nOa6dY+c;!? zg{r_Ca6_CA3pJ|_ zxf6A+)|?mp%i0?~7!i`2KRmo`gpy(;PtdIC%_uE7pv+Bgkupmm>{QXbgxL^|d49WR zwOKRZ$I)G*G}Vn9@-Gg7%^)cUs&^N`c<-dFR}EFIu_=1mGH+`VgGi433rJ;t)!LqS zkuTu7f6TKR^d&;eR2Wp^0uUf{Vx|`J_yiOxvz<6JT#q=VIb;JB-&+Cgp0x=aEE+A^T03F0mQ@-+ZcBx4}A(gurn{kDLrM&?=DGn ztT|FFEX^D&ykY7FMVGNVYxz095{qs{9AW-**I{*|Flwd@*!VB2k<>i1Q5K|FVdcCY z&Ii$Px)T$@ryYe@q=#U=gN=b*TxWkN9A#m01ke9xCM|Rgn1YS!LZL zc_OuXIBB?IH67CMz=0kIL9{Mroa@tHuWeT?+v^u`PPtYG>d;spt|l&b;RxaFFMx}2 zeeG;MpR=0gW3wwP%DRP)a@XHMX);ejIr!~TeAa%XpVN(1x&l!GkYTfHIY>)umXpz+ zb=VB#-_gB;mUC`syIQ~}%1!EN4%IW+ItrI&kDe2m8EHpBwVFNmMh!lK8Lb>FPcUtE z93Fk96}#**{+ zI^}S;q@V0$s!u?qp9;lTUT#>=r1#x2r0}lCW1_g0o%D>{D|Vl@9MRnJbec|^yNo;3 zSuE>k>{!Tbpe|eK&zS9|5;6Y@6_yQUXZ;J7qsA5;^i^|{;SaS8Z{mojiO-Umqe}k} zOu-DtcoBug`8z077=r^fNkRqg(I?o-zYKgBY8r2$?#n_JWslhP(#)! zzqu&S#JhLU8xf<0iU9Ak3lNoHaUn9s^i6^8W1YfodW2@?OUpW^G#M+mvv2G~r4IFhQ(UIgfMzHC>K& z^^^@bkSX?V7qTl+#*&K{I_f^-zNB?0ek2z=x5vvTUmbQ44X|^Nu5pk^Tb%t@W1m}D zdb8GJJyDTW__DXA^e@B(p>{{+Z7GZZZas?u5p23RP{bvt6^Qk5Z6{V%0mFlA4PVzIzVs`ZUb_V~hg~(NJLQjV@hPoXrCHg7M+_OfxHp@tpk$e$b8=}6x zI9Rc~(yc|={Pa@BZvS`AxV3Zc-30Nb6MPv>N)S9|e{)JMP)b6G_r|_ddUzkz;Hu=b zZxunR`nSUNJj7Dk*8j(fE#eRVKbB_EG@;_dtDpK?xbq4KWFwj&zvLLa!RNYJjDhRz zkX1Mj!PxA5p_OHU#@S8(mI{S70L6nT31Ng%4CDE@o?Nr$%Hqu%H}WV(dJGWy2Sg~? z87(7)ELpig0|BU`E6*yT()BL=Q;Y>EK7a;-MNQ z8P;Lt6^P;7_jPe#5SWPyC>s7yhL~7R0HT}v_4Q{c)YfQpT9cQ-{vDQQ#RL>~9?&H> zFs8PRp-DPkJbv$RAu>M7P2|z$bX{kB#)+SP=NK*ijf3MiZrQTZ6oL#>7^lyrSDZhi zFdBeDxLFpmEK&yIeZx(379;&w-U~kd%>YlB0>=cu337xpDew>$8+cX3^_UG1tSdb0 zzr-CxpJJOB93`-R4Twd9+Wi!Q(_Diy=Z=fJ(3IvEzA^Cx0hJFQ40s{f$b5yAMRFph z3m^eN^+TLw?ewcjv`u8RsW(@MX;#osfpF@&=G599ZF{f?HDuQ%Tq@TcSD^?>GRnCD zkqc#uvxPmTby~`crNC|%ObFZ6dEjWoW)`cQqE}eSE`%`z4CWRPhMMs_ieQ1NpTLGa z8aJrx2@NC^iSq4l0h?IzgXqFMFLG?{l%Gj)Ws|YBpJa@ zE#Nmajhs;B!8;cM$JW0&j^)L!5#(Y9f0HaI%D-2&l;&Dk8O0Zh6O)npx z(c9R&!aIjsiMt$b{JKvS0#BTq(UVdk39=-R>QwavH5UlnWGU-FBxNWE7ozfk)-p00 z&V9u}-AF`vr<(=IjlnUW775o4ffo2ImN%m!L7ZL%-2gText;Y(=ukPYxWh?jXdYaz zfH)SJ0RHBC{mE`T-^{E`MuO9^+mR&`ovSGiu2g1xYpP~Ut5>k#G){F6NQZtP7;OK6 z_rNpZ2DCKz6jR5}lLnFqo;gdwzttYnnRBGV)7Dnd1~bC`X<5RB%K<5QhiH>^YB!8Q7d zM_t}VmO2Y^z*5xka48O*>C~FCd4jc(zo$1Zhgiuvs*85DjJC z3YR$^gGvU6jQ@Daev&wth8k zaeHV#Bj26piZ&vqH#)NLL`Q`j)g1r|*k%iG5A8)U3GIa1WOO8`vrG)yUyM{z>tQ5} zLpS%k{$K+K?!6Vw8%K;&0=)}mJiN__Jv3u>HGb)Mpa~{<_7pAS1=o?xilgcr^Qa1t z38xDe0Epr^8nP9evx!mcJ#8d6CMqYZvpgcXSYmzc`FBpl=A3|gKg)dxA6b^Nu)2&~ zA~j%|s}+Z6G}MM+N?bft^E<+5za>;gAXKSPw@>ZxaP>*ltm7cpjdT5@Bo zLc}{{=ir?ZZpAdlz|P?4l{l257vKgvbrd3pG8B~5R0)S#)j2jqSOYU;6|@#9)r9sq zCjuxII=5txE{LAIE>i6FF$oSA`~ohRbZ;KRj>YN0m}z*A9L(a)e7)Y_-aZ>YVH`AT z;}zeMtWADD{`A;y+rW4cfL*R3}Ji}wdk@~`w_BFVR3>fM?*ub>60omj1g&r-RLY@|C zZbxFmvVH!~A4Nw7^?f{*>o3s0iRSdiKU??ROQBL@=J*q}aVxWw(!YQF8Sm0x{m*|e zb4W(gX#CfoFiX)f!5;U&|K|C%+#W3d`J4aOFYDQb>s5%0PuRqTi!F|{^IvdWg}d@q z48jl?Fi!W0T6-My!&68Q2d{#qYKc+;j`=6drQfi!@acgjD{5KINkem}L|o*yJWWw>ZN& zNFwY&PUVBbfp~=Ot1ARQd~$JN0fliC^05m@?fBr&IHP9fCAR&+F-zU&gYd@9bqLG=3KW%zeU}j>hFRT-}7(n+e}#lURQ%zFwzjWG2sk4wKkKj2cqzH z!KTO?`%+972LeW`?sAD}!Q10G$vOpm5e)|pnDTyj-RL^nB{X!o$b|Kljmf?BUFFZM zU%b8DFJmT^sakzax{flVUNOr^I%E5rF+!OpqTzIx?)ocz7{YQw0e~ufWDw=j_h~WL zg(jJKoYtg}>5~jh`}T-T+P!&wQQ(Ys#DtLhif9D3`*g?*Lb~1TvuSFp1K$bX&$9?u zi5{UM+@I+Lmp*hWRARpN*yCFIn@D2SW!oG!2OW7F%53muoj(2Lgwx=|WT^T!c#R{M z=&-2<%f|eE8hVt^MxJg2NK_)7nBTr9n7&kwMO|?oWm`&zwN%7pP5+L^bkc4DsRr$A z!nTP`xu}ESP!P>CIb~@0UHj+}|E*qSXje87p@41|E(Hz!N6F7!n?CGqK+Ua<#XukT z4oo@$6CpBal5#)FE+D9jLn#?MY5DTA*A+c+MQ9~lXHW(FL|eLPVpl??^oY-&8%Mpu zqaFaP2A+f`m0lZgZA2sLJniQkz&0jLiA)Etu4VXXM-CMi7sr6;#tlb+A4qfY3K8M^ zufkh$rw2i#Ls-C)5Ro-%S1#>)l~@LEh37HwA`rWOg;-7KTc2``TwijX-(N!TOwDENR5$`Q%>7rQQ-|M7gZvtd8is{%Hf z0HnHwhacaCcMiK&%7Y?s)Vi)%hU zp!?{nf!9CShDyPIk@m!WBo_Yo<^xzD-#Py@I>qL8T1qf%V5{{K4cxr(GoGmtD8Te> zB8hQ4h`bURKy_<%#Z^}K*Mlkr6|5i$yzX!@^kLE(R74d!pPk!d1v1y?tItkyJmX|z zT63nDFL!fe*HxDmG?W_}t4I`>p7L-oI;lG{KX6S(0lIag4us z&Cf5oUq7ww{_rJ0)I}8lFR-GM@^LZ`Xnt-G^RT-A#+Gv%#|70ShBd?JSn6e@_2HVc zzTn<^>w zKMx%+vgUhihSl$v-#?Arzv(Rp-&%Tiy6z9!^1JSBp71yuFg3c%d6{*5>etp^`m${o zDU4)f#OoDG+FaDvE|w$DeLS^Jd||EO`6aQYijbW&-16S88;b|q!ehAYc~rKdpEbN6 ze!uLes(1A^#nN9#B(q<0ZF(d;F2ye!^4j{cw?^uNFI5}vd^U7R6nbk9Ok(m??zjxU zlIx@#SWG)IY%g(Nr2S)dLP?5Vg1LI}`R~!!>qVDh8MoUG0-d%t(atgJe{)cu$BDLv zAcF9&3H{1^{sBOE_V;JPWilSmi>eNU>bQ9;^T|Foj04G`M){n^wkNHI90^Zs4MW#| z;nqyU1{bEA`jgrbm1V8hb{)B@!3#9tqThK$jCvy!F*c-gYa&!0dOUPIX(PYQ(dXp7 z^s~P8pZ6Tzbd5J=kLI!SReMDJkJg{<*Q#=*V^Y?9(69YJD0}a4uKV_XJW_~cWoHv5 z*%@VzjLJ%gvQsHDJ5jPi_R0v6N>(bH?3GzU*`z^sM#J~6E9_vhWRiRuZ6VKllPN)$|$ftAiC|fys7dPpX3A>Cs`WtpWdd4$>{$ncN zFMydr$6QC-Bsw6vm4x&J!@02sxWg*GMfsa{nZr&P3`XK^HUQKM}I%^>;{S{oh2z(_rb_Wz2}zM=g0MV7i9{3mqZt5cxwKJc$s*Q zzg>v$_z|$fPM&y1=o=&A_$`voREz1%rk<+^JWH1LW;h{qcWL!n|GC%K&1>XFFVZ|D zbiqn2H~iywL<{I~H&h+(o_Wl4y$S>f%I=1a9+E9wj+rimY!KhvF}G+=J8 zi(W#WV{iT$oOxZ(@_BCTcv+Ve^M>t*#MDWXu&>Kv7E$pHL0?a29D9O>cTJGTrD1iy zT5h|G?mYybHZKx)^I30*&^B4Ujp3uTOm zSMJVj$`I?u5X&6tjVK1O;buOSd=~~XX>|#1Ervo_60K3B%KiovDfQdn)}`YaW{=Wt zPVVScdmYVbeC>52zvI$JnuZ^dUu1%o2S!Muj(PSMBL%^-?EX`-Bf+^huUS<$6-el$ zO=aewIZ|Thxf<<7e=m<=;higqO-zS4`y>xVc=Dt12k4n)*-rC{HjBkbqy6;#6Ft*> zOUby}TT&3`Zt6{i487^uGhyo%=_`M37%y=tT>UX!>RV2dEUmb1Dkw1zGP`8HT-)ah zJ4PCd$4wg8mVC2)o#%x@8lsOwIoXU(Z1U<^d^==X!HCP=!d&wubRX$xUv3n9?P;CZ4}|e_`q)}XN7o(07sSp3byIV5yuvFnv zhH}Drr{Xuq?o$4qTa+yBeplAefD0Hh?zU0WaVEKPX6FyThir=o0{zY&;>G`ty5jfm zNs-48mVRaLkkPGSdG>2IU=x{Nw$XvCon#uqd4ExPWRe zaD8WyId+~`F)zdWMa&O4AHtfiW~L7#@fD*loF$DV~ zfPb+pC|F%uDy9WYIEJp7YaduGhjpfTkGI&3$&-HH>_f1Sk_Z7o--@Gg2c`~R*!2xk zuY#DDU$!v+P_9>hN)-KqVQ8L;@{Yqd#bnA==397&d#_BP3!IxWl*#%tq5gBqTYz~b zb*~A{wIpq}8CjL`IU^yKS?#oH)q%=LW^r`}b(Y*K+^uC-9B)Px?}|`fw=&~Npgyh7 z8I(?HZ;YwC1;jCAX zJzmohu%lUobN=Nb+j|TgD}s(Qy;?znS$iHB^KtS39hX9f4BIVda-)QME;{}y_@!x! z8%csE)JUQd>1(`J?4Ie=td+2R(DwViq(QX~*)78%!;`YdwbF_8+y<;;G3&74MEb5n zbEcbd2dm$oMro-ayukUM|hzoCPW=eCi{A@wo?|ZwA?5yzJx9KP3 z40a=O<_P4@Anj8ZcFi+4w}4a33?!^bMWiu$(sZe7ELNKA-fW7C^W=A1cjT*S^6Iue zMj#Mp=w@8`zSGYnv`Y70A>}%Uo)WQ0gkk5T?mq5DB84-;BToS8gH1db17%3Fu{9&j z&U!HHG8Aswlzo^z#C|M*M7BJA2_VfKvVGWsHSv%r+){D)>cl0(=q;4RgF;m<7eZ*q zl)}w|U3y}D&kS9~a9MK%8JKF7D`w=cB0%z*B6mUU`M4lYq(OyQV70}Wl*TT}YF z0ITM3!ET3G4PobYPwoDs^6@g42j2g;n0oA3rj(RMUd|K#7-PgTqYoMWz#;ZDUBr@D zMPKv{Q*7~(4{yXG3B(UmspUa#CQ5@}qW-aG(h3dYtjO{bj_L5;B@(v2-WK|*#nSqbz?7fOe$(5|kEX-v4iduinE1|!zPY)D$^p1a zxMfXOY^U?Pqf-vwLtnDx!IV<+b}?m;mTvbL)AfNPm7gRDQz_Maj8CTX; zt~s`O#%#pG`s;GRxI@FUi-f8RI z$9#Q-U}+RN)$l01qvfM_$c`2uACZ-gZ{-4x5|16Fnkd}$JN-`gIoh=J`V&~5RhzYGqJVQ%u? zXeARNs?A9_5cmcx`XXzz3iM+h$t^P^!PHSN=4RW}x;_1*&ZyG)?75byqmUuLHX!PI zu-bHy`mBP&S|`SNr|WvPWp9Nsl!y}h{@J;lv$DH}%#lXD`^~!VQIFsUBCMaA8WxQH zun_&Kb}?ZlzT0xIu%nc!Fk}MdjAh%L)uH8q+~vcV3A9B1VdQ`9fJedMR%tn^)iUzp z_8n?zJ0L0&%2I|PX#Tf((cLk=~nELR27Y6|bu>1qqCwuvN+DRwz zAENUmJN-S|K2qrA-i?X@&K4AS{Off95Z*O+mxHHq$Zy>E!S)<5R?p6_e!`5E-o~*U zE^t*c*TAtCadHh?wcOIg%RrfQ$jp!HfGs3b+_8aaX{Ob5aq)Y(# zm3F1k{{O}5$?K1Mui9g3LtEe6Vh8X6fUP)jC*bE}4uj)d4QM7&dahNGRtXMue={Lq z^bk`vSAtYO07bO;sHE`uKTvg@PLUv3dPn0HyUw$adHww@bFmcuUREWx{dNEOCABPq zqdjQPISiKq(ewe*RN*`ov{cLtAtWfQz1w&46y<@48jez-<-%=XU&c)A1Jz}-Pu&Hv zvxr5_a%ER|cF7q>3ISzah{QY5{^IStv}!ji425{3_I!Wd;VG8W2V5T)o8`iPewXEG z@{6UA=-ns8f@s4Pg%g3loR|ckRE$Sc&05a)AnMAX|YP=)*pIbpJ z2ag0z$1xZss|ZQdReun_$J>Bjj}SeElNpy9Sdszl5DM8%Fai)k%h)-(3Az~T)y(~7iCN}A3K1Q_~gS5ThIPX8j z;u7gfYiC0I4+se6Q(qL4ietP$MfT}y5&A}6+0_d^dj*5feD#Uz2MGhl&p5vE`{%Mg z#b@G#U=;BF%kzVbF22Z$Z+ zDBYNtNX0B;sU9w-P=^d@XXP+8Z$gp;Y$Ny@#L@6*eFm=q4Ulk#{w7%F;sB}G!$0|nCUPc8bK(_pv0<}jg?8*c3k>7?k%!jIso-wb(( ztI+i-sHN|DK1RwG)a2^V>iTccYkJw1D!Va@WKMhdzn+6lE#$)QG5rxF36a;B5tHQXKS6migne_y*QEMGX3+Gd8g=3(RZ8>Ttq^8XE88S? zNp3dn={Q95G`hDQPpSCTk3A%$ZUvv zzEfwOAQt-fU+#LUE=8S{N9HSD&Lv)<+}HG1O(u|nv1|A{^q+8Kl?>>8ymc;`Ig0~h zL(}2(qaHbR=lFMew^dwl!KBJUp*Zj6}IW3<01vLc@ZU~0iCzT*%&B|P{>84OcX z0bdotf!e^(0FYj{_bD*Aixm;s(kt2 zG3#c^!*J!xW72#5*MabA9DSqhHb~t@zpb!XgG86Vn6H0bsHv&RdXrkbdZ+A~0IA?X zL}(e;fc1`ZJAUD6B1DKEwTr0CVfxdK0qgwQ{C2Vls>v$rD=5d3Ph4u2YRqXYRFUIq zvJD$hA$N&?aNjyesRWcdGweEot!!y&^#c>J(Gl4a0@)&-s>xOn#@DgynbkmzVQ2ZPH#=?+R1L&5$vOl^ zldrBdYzVq9f4i{%VgXk*LTT?tKwCcPZDLpGZ=oof#b@ILOMxtXNxl(5lew!<+L6gW zsN9n@Q4+h`^@R%3KHcBK89nGxqK(ev=fc=Fgliq=BM;YiigzWJPnz<)f|K7q$>V)} z;A)XvvkSD9i|f=8IQr;lzLbz$o&&GMqkRQq@?3$=ue)!$dW0k2*OPP?p+-VkS2`du z^u~Nzppmryqez5D17*Hpj4_Rvwdi zB**v}hbbWff`@VyV9BIH4UH$0`DZojr9^8^Hm&xo1 zUTBLrGi?N8wA3_*VW0UA?Nb|%Elm^SAZ3#IBrpTe#3nW?N%m!sGy{Rk@7pk77PShz z;iE1y0K6)PU%$*uj+are_|3Mgmre92x>MoMAeo4_^hbBmvNa2^F}4gkH33KrVISJ~ z1uyE0hWaBoIHJg}5bf^;gXp)oNipsbb1nEd8oQb999%qs0GyNW3oni#uLd2!Ce3xM z-N12+4eUdiDx{rf|324MmA>&?n&*)F!sxZH)Pg_JVd20gm=U4WYwcbr4}OX~xsVUg zRLC5+kyN@(64yD#e5k9UshCvvrf~?4z?hEsk$C?dpSMFAqLbZvlc_9rP71g0P5yMC z05uS$jJt{?VnIa#IPs05q(u=8N^(T9hPI3AZbp4sicSDZ!Q^z&6c(`y zTtRX)9HwH4Z|eLrL(KHT!-V0O;9=f6q(Y{887%JJmA@A#Q(NJgVNU53X?UR?FUV@= z#grg&eQCwA%X2{@HuBW9p^l36^Sb|P`2u6E0;7_xL5Yg*(3Q2Ku_)FJ~4Q0uHH(E}VaEDrt8<*%wHegj(C)gGZ7Ia!a9^iH>mY zgC6E5_ z3{1r%1`WRKJx^fv`y`j(o)yFP^McK0vW%mQ4-Fr>+wPpla8xU z7`_V-$y&;HeUrhz{Z2LA1=$WKUm-nnlkoUhGu#optWKY5@YfYDxQn6vp{fGoB$kXAFqL&S~WaHQ!<+k5xWuD=c5DiDqWn z&aku;5J<=h0#m5frEEqjE7!U==2vY3J$ z5F^0Y*E9HppLY~lU!r@IirA0T*@!47ZjM05LMvJ-s@A5!%t~MH6h_2gdZ5-c)utY~ zH183A(UGH}bIhp+C$&#aL_(H8yIf#fC8YB8WcjVb+$2T8$2$wM4x3%rzC7{$d&fop zwL+UW62fw_W;-1AcR2s48aOwe$T2^WpTE(s%Hm}bqWvk}f4BNmud-JwFGD-FO(=37 zhlZEk^Q$i(ck0^J=iZ(v7R318Jyd12M;d-8H+d8Hr0`s)?)&CNQ>V1s6pN|$IyalM z9ap(G*p&IWSHFv=Z@42!MD4T%L51i-)x_s!eOk4se7ErdC@LM$e~WAqiz zOaYaKcg;aEGS_VFN|G-QB0k5{L^}3|@b>Yj%Dgd*KBmV^ZM>N>UIE2U$Z;4;{OWt* z`TMKk)=6I_{#Hr{mtWw&|2+7-FKht={S*->+8E6u&a%X$8)42GYrm8J`fn}J{=?29 z$CdqZbBbG@Z;N|T6VugE$s`N5j9IuVj%Ec9>Af!mD56F}*X^aNmHxialEq$l*Z$f~ zz(n-ltDX2BYexjUA`jVG(f$%!mj)Sw^}L5{@N- zNe7kdw0dpPotP_R6|ZOrmq;JpBpw8^hIpntht?^uku=MI(n9Y%>CRO z?aN`r8Ut1_bkET4>ieZiJKJp41wfKHWr0PnHn=-er=s3KOXqw^<3FQxpfLfaS{{XJ zP&0^<8PUHfi03pL!`rGUn{^#>Yz)q?zN`42F251X3n+EOwBBvD>%h_b0{3gA5jXhB zR;x}|jj7UCSrL~M#*I;|yGr~fp&rfz#Zl2?2zdvF6I#Ax&L5zh-Elit?GM4iW13VA zg;F9hQ&00=ouVP=0$)QNf$>?oY~Vk5RM>@``2y|14REJLqL zCiY=CKG#QJi5jZ@4s5yM1PJnIywAard5`hRiP0SyuZluDeve`MDTW|eM;voF)3L{w zV1#e*wSR+Y4AiCoN43{V^WW(mGHkq>fk5?+{`l zWIp1gdGh!M#8Fmfp%N8YIA@te@qFIY{GS+?FA&&jmH-EF+$BtZ_;Wr>mHfNu5R!Hv zBYA`th2X3J5a4V=SopJQ12tE~_Vf~xujqt!R(b;Sa*U}1&%K!PqBw7DH@on6<&?QJ+O%98il{vM(gP86p z;tfDniQ9E5vRmhHf1`9YSpb8QrEy;#ZyNftbVN@BNjmn|ry?!mTp!TAn`ntnwg5N; zHn8iIoJHLZuZrxIns+4g=8%np)pZrJIcQ36P9Py0s_wprclTX9+;Js29#KP}HIFA6p!G5Cg88JqS zGVdMyZ+Wi^IIV8N5yghz8xHd2c8z62S}Xhiye9%%Y$&PnO!y0V&|Sdx(l{>H?W1{0 z`}XrP|KGBdpiLo?sps%|iWcN2RvN@&44BX(c&NHECYNgb{tT<=ApxrC+Rv48imr{V ztv>fek9lsfFRlt1m5NQRZK`(~s>^h{hn&AwRawH+h2vvzHRB zC>0E zaSs8MuDS>{U;-{aK`Y#qR*9DVpF+9n%m5r#cq8{Q6E+h95lqA85V9KBQoCKLM~~pY z#kEae^7Djg0>f{z&at>{!m2)1b%yq#awwG{A)Rqg;wWYbU?3pMRTmef2tNSwYXGtp zX6ODPcMDNSRUBG)zd*^ehUXO>;5*Or@UujL_(xtdQ$ReFf}G0{`GMnl=GL6C~$or<5w|Ij3Z*_NJ`aT>1!01IN<%9ncX{l=H2rQPPl z&js3l@wt8JAuPJeB-}}kKuk*BUDQWRB}xN2TIzk;;GwfkGI~*1SQvcOIBvWJ4-Q(v z2dG74G~7%acMyxttCJ)G^oMj(z|t|e)`DZ&}qVA;5CPzkV)$%qgmH~ zhNkk&1F48JPcA{ch40SiMOcZ7mqcqk8{6Fwm!aH;W?#{|4f|jzs_ef%L|sFQxX9O} zVgc7#)3#!uBsu~5#bCHPG&aH@lef93Rm31J_gXnc!Dag7p);Qee6=TAWC?1iJi+u> zO-|n>!+qDtsRl2U&CKk()@;)G|G{qAvhX}6Ok6Ho*!iPgx$d%9sNrSMe_bBiIeEYU z@YtP?d@)0Rq1hY!FHO3FF)6|#N2 z7g1kOb_nrYqeuoWU{rHO@HZ|@Ysg+5@o>Sw0Q$R%F*k8&o=%321YTVqjAS^$zC5H( zRZ4IQ0fLt(pjSV#^IPvT(AO-G;x}c{>4pO+hX0d2x7Y@3m3X|8`9p~)i4gs#!465d z-e9Kou28W^L|qFcDcSS3|Jk{teKZLuVRkKG()EaG4ONAn;yTt4vQ#1VCl5JZ&`l&W zfb#{G_`WJH*F*e=X7F&>KL)0$H-U#tkIv-8_fLChpBxg5tNRE|fqvv4YMeEN5JccK zg+V890KN4a_}HWL1vI;Q(Nds!N#s`BqrHQt51;ys>)c(ZJ<`s2R4y@2n*byDJ-1W1 z;Wi1Mn;UuV?mSvohA+OsNz{kK>UD9Je84<;HaU%bM;CGWuzs#io91t@F^H{OC|YE_wv9bDfQ{1*5MtZU#;2>q!%f+b z@xCF|7RE0zmeCQ-($-X&6-zp=N*r8x3)Sy2L=;jc<8;!z^l-E9OrA&+O0lUJP~%ql zZDRIGy1ajNkx&`5EJ#n>IWKA7!)YczN-z>8>4ndsW4f9oOt8itaJMAM0NAVkyOoww zROejfl6^qd!$C-gZAF#1+wXiIDaKF+OrDFjr_P>zPVCiz<%c^3_lQT#BRP}vBmqE1 zf;Wjej(APb==;x>Fg$^HK?->jAt!`vNi0EkQHvY>cT?mnbB8(tTcsyR$snLTGsMVl3rth%#@thSLkumPmmlH>Azc;)9SSO6r>FtWlBD z^Q2P({{f*jOSL(9uR?ya$eI%&L1cTEiwzk#4ezwkO{g;>t%t>OZfZ(pm%Wg>?CI?4 zpi(lL4h?&kQSMz$8f!hIW*YpUz|XB#Mbrhnj;{ol9L z9pRU6pXJ2Srf@c^?yx=~vv7MogrOvTcd)0Epg&=Wk{cN-Af8Yfo}iT@cjqiR5v0ue zCn!Do@hVOq!-1E>O82su^Td^5gXG3ZAQ?*b83iBiw!7JA^@yM8imeQIPabHGpbUB< z9xa>Yml@Rt{*o%mxZ}}Y1NT0O<*5{{Juxvs*4-5jx09k^LQq&F_>W0gS(3Iac8Q~J^9I`Y0P%mQi7*9EE+9<`<-kbvInMFHtLn@Ke!^l*JZ)GUls-da+f8GWS;VUo4oDuHoG!S2q#mA=ja5B`yasH$GT(|c6%Fx%6 zAd`YuYD6r#+n-bS@;C$4Wx9^NB0{wtD?TEQycqX(|Ij#ib(l>hl3cO_JkguSJy zuC}VBEd>=^eoc z$q41ojnPU8;=i%s1UAj88{ZjD42<$oVr8#`@i{6|ng8YW0}d2-iQJfZe*bd0_A@l0JWA{feHs3Qsbv`s!^0^ zoN4cdjxAfw*-X#gp1mW$?ZY0!!=rYQ~&c|0lO^Rb>^$IEU@9{KAu!pFKV+l1$*1+6YBuFnM?@m!M@^3pq@V8YYTH_zQ1K;fUF;7G;N{$&?1)fw7Fs$+mo$3rZZ-|XoCfXV=o%_bxYkkrf}z^SQzYKimw5kwEsJq=RLzD^{OQ_L zzSZ*xNreHWbyx5YMQ_4-a^Tb$ZdRR6?%Gt|k;G^Ue)m(#K8p>P3>xGY@US8zUUi$AFGbygAom1~-u+y0l~#Z5 zl)F-bH47b4!)k)pJR(|iBro@o{91?MeU>Lh(atnr>!p!~b<{G=nh-)@U-%r&a0wft zI9~$9Gv-I;zA{RR8@YLywt>3LgX;&N;BsNd9PK{Rn8PliFYf$y^~gtQ5*_MA4=2C2 zQetc>`aY0$HziYDTtLI5Q-fKm&cQ~%*FT!)i1wNHQdJNV1TkpDYu}yebK|~$q|-NI z&G4E@-04)k4PPZQdHZ25dEr_OjsyQI{Ghe~Pnkz1q}9kyyfbZlIbA*Bp%vTx6{-Kw z$3M|~V3_Mletx!)s?z#)CNtKWUfB-mJzfZ1&?|lAU@CJQUATb53&#WPl}@Ac6Rstv zZ8hbO2vi(k`Ft~;?aFtvO`t`VJNt}Dj-QIERD^1|7G0PFqk!%>L95Jz7vmAM24%>^ zvzO|84{`}Uq~7w&L0&S4xk-;`B?F*fKH)8)F@5CjyXWT_iv#-_bohJC4VuWPkiA+B_p1lyvAsJ$>+5yHgLC>sX0|uT-r|Mt6UJzUB|4e+ z9DY%GL8C3?n(w(PtGSC61!Z5{lf*bR*ozx+8fbsf6G4;Xqi{v)liIlB z+zYkA5zGst@hy3$am7>{(?I#hR9&Z>Lhg4g^lBW8TbU~Q4=hCA=WGLHuMe4eY_yoYfhi?2R-pJPs|fs=Opq4#jiAEi(_ z&dGRSKwI3u_SUxio_-~*&8;n$5Dfp7LVK>dfp)@t%C}GEKnVmINjpPHmOt%jsH#b% z&95~6HAFIX>*$T$pLrH}PZVnUEshg~4Q~pSeJ6DA+z~hLz4-b=k++>KU`4pA1!=j$ zHCq_hW(qF*DIc~k3+}Yx+(=LCksDv;^$u!d1X0lG6fBd1J8p1d)=lo`2FY)q)vn%3 z#s5xDL1#`?wIw4w!;2pnRWx7afYoV7vW>hEC5{3d#AuwLG(wnm!i1!7j{LX!oL>h9 z8W-<5@l%Bk-VqkBG%TMuMY-T)PyBZgQz#Ua-)7GaiMdXM&!4EVeZy~~BC7aJVz&UV@?CT>Z7N>%L^2^|+p>WnGVK>=g83n2a9*F%ICQY5G( z&!f~pwp5Z*R<&dKPQdlH#G_--$eYWD&+b$t88zKgqY|P5T^M1z%;LtF1-U-N<25CF zOv!ow4e^9q%ctnuN|?h1h?E>}=ll<{5SA54_P=Ke{*H_IzdxJMm4+z(W6}TPBc|p4 z-`)pb{Qvzj$fuT-yZ~L}?ZNq&-94sHuja)OxM%-21e}mVmXaj0#aKxAv5|Q@^L@#p zD#06rT%Oral>hCV9{tRTH~WMXUJRTm_&a)tD+1pJAw^A#3V5{!F%r{=0H2X?{j7s~ z%F|PXUKcVmX04D}Kt7N!iTzE)_;4TTMtB^8ww*tG+^PRL7$Sh>QA+`|>f%)w2{PVI z|HX!m?xPCzL0KdeF@vput8mZYxVFE!g;(P6&J_4YoLB) z8EXh0i52y_GLMA|(CwgRSdy?nG+O}?`%&@k2gepLVyTny=cy9baswb(`yh-71;U-| zhWszsM~d3%1h3aoieior=8o%*$sFwa>)Lo|=68!5tgH*ELaNjn+EE?o@ zIK^2gB0&J0U;+$L7m!whY#6%cAskLVm_*TeBY0OAI3JD@(7x*|F z2wMUQnvoVPBrL)I6E^y-^@THBfHpYf-1A-IKb`geZ9IUx!C#H(9xQ+CDuh_L77<1k zG3TYqc1q7ea?@t7e1MQw1=S*6<0YD<3FDZEP2xxagWb4ZCA7&NOyYKwzi5T`EioUv z&US>a8vG6n%GO58eNV37A2c5?3t!^SV}F_Tmo4i*GdtH3C_LniKU9-Q-5KqItg>90 zR+ZGpI?0n}RCj-GeP@!IsQ#}mps-3yVvfQ;?ZIa;Vt2Fj>we}kBxfh71LH=&Y|fQw z&mQy!v&ohyMJs$d>x6mx8mayb>S&ecGsM_5=x;8EP8lb1Ny}AKX@5dDyqM6d4d_>SICF`&7!MjACbe9` zqm5J1IA>+_kPTE$Xgr~QCkM} z3V>LZtMxttF3}n^lp6^j_Aga@if{7-9ia|UQQ`FCzvxD;eJT?TW|wi{9ZEev4B?j{ zNBf?SzL->O?$Pk`>%7D+n@*RP=a7o6CK`NSXllSt~^2-^eDs}{eYTH46j`?68> zniFg2|CM&!LfzNl#vgO5jzzrC#^k z`P|+mToD&M)LCO==8{t%nr>5`>$^=%v zm=aF20<>+02tz~Ryc<a!g ztmnMyp#_RHKY|=(zce}JnZ0V{TRq7hbAxa4QYJhxFxnWVAsJM`L-o#tGvW!>QOTT= ziDJWuhZH3-qLXLFBijzAcc$;jMz7{!<%5s3;`jK_rG@|Cu0}wM1Ewu5JVjMEap-!F z10YeY2;9p$;2Pg!j#MQLge??_-t_h5*GcjZD!t@%j%bwoH4136IuvnF4n2L)U}#7~nPBy0m>2z-B>MhjeRh3NU=SVZ-YfeHSmJ^_@j-2UWU0#VRu`brmggvKv>r zno)g!lz5X_uyBWkj8M=EaLRRMC@7%ztL`>e9ihHqZ+4M8tG(}U(ZrDu)P14u6qmiq?{qIY* zcPgX&nWv`#q^Z!+(Cc3UU!=srnZ|C6l_6Abj!IdohHw{YwvgCW1j=JqVHePBd}`f8 zIvLK)`WM<7j-LhtBDjf){DVQ>xa`@BaVN9#KWFiV@Xn3eVg_%%*`|zEPJ*^s8Oi}De*oh;r>~L}m;ypS9RL$N=5H#356r``*hEOuX z(j@oR@g7B%WjI%?Ubmk&jLN&{@jjcp)xx=!Pu}n=ig-}@PbNJZll)ZO>DRWNd-4d& z8?DB(AChJN$;P97UT!(eKJK;Ewtk#SCjtG~>}`m6+{HHR+HW@b!%h5t9bxAI--%4} z{d7cgzV50zvX47rG*6%KPLDu8$oyH1$mFr&T7J>P?X+jJ!jEv*_~r%@iT`|kyu-Hf*vy&#`N17vJ6pv}N1S2r z?znlvbCJ`w`5xoGt27$te%KQ5^4+UJPh6?(2qcK)GqOkMXt|!xPy+y{ugNCHtV;hZ zIcu8O6c*}1Kizg!yL-A556OO^|NkgnmhUgu*r9e;pNci90HflKuAr6>b#60Epr{$U zE&=OT zvqLa8Y>bxu2vUf4q5j>;!}NKdWMqN8MZ;=x&ePO(a4`m?$zO`UeHDK6ZWE(??yKb- z>RQ=x>6R9iE=)ck9O78S+LYrqu8`~|%0Ko-f0Uw2+zAJ7yN1TC)OZW>sb84yf&b^= z<6+2@ah@a*7Okh`>Gk2EAdpLlN;Ld}{t6w=MT{H3bNNn2?Knmoedlj?+pq3ify!gsJWh9s5 zAjI9Hs#2237dH2>FpOTXugFs69br)(GH+7R8IfBf!WYf&A>r$&$$BpYPOKheKN^Zp z?IHZue68r$;N5n^!V3px?o6xvc(HWIH2!2Z= zkA~(w^E>q@ibBG@bJcIm``NfHT4ugR;wk}I;T?V#U~iCv(}3wO$$~6Wk5)$^CFoTF zSEy(lwTka4LwD>^zn49KS}Z&F5?8tnxcq|#Qa_a2O>#>?CLK889hdUa@%EpA!TaAY z*;N>!Jd*BZaho5OoFp6ovrRuacKvsF(dya#$Dcfu?1^qB@zh^T|7)P`AdofM?O5Q~ zavnAkp;iQ@dX~4AH6(V$DiF1jiK56|E64fUO$|`9BU>Xy{MhXbhow_XuL*xFDu%DymJr z>kvF(#f+I>ERYl~qZu9vUQzlC!uCIWd_Zd=nTq~UGg699`MP<$S6ShqxGaBKuzjo| zDqdPwW%bD8Q06_6Gn{5JyHxkb-*r&0GC9~gQHIN&CVx{lA5!n;SwMf|U>-AXM(XjkD`WWncir17>KHUP7#=n! zlUfGdc1-wmWG#SttG0v*FJND@a8Op&RVPn^{fmd%3B5AO!B^Ag#}@W- zFok|`I?BhvkpUuMxG;~N>7;_^qGD-S24|GOP>l|wB^}H*hV2c(`x=tVK7KIYb-a`t zEGqktJ$6a^B$ThoPJ3OmGXJ2pvyJ~X^NPRg+GlJ^TNpjzYj?U4Zw5^ry31mP3n67o zuG0l-&|GKg2pK7KXNSv-O(wo2JeT7|_d5Fj^zn|@7Py(Go}E3UCoSq`%zDPQ)p0>w zSmj%x@VC8PEo*eSo_W6GHV zieUPgN?=P6gd-tO4?QtKe}I1E#57lZ*K0+}3E%M~l0_%To8jR9hLbSDgLH-8w+W$> zSI(d_q6+;N$woEmd-%>kz&`+KiFSXTR+OrdaA%6-ceD*up-Rqr4Hyv#+X#FG-74uABX}Gro0>@@HFxYI7@mN15aOjhk%tn^1L%XWZgfo`4WqsIzOxS%iM+-i z{R1PkIB`>GOPR%NLS|b`{g@zA%Jxhidf-6i^=W=G_3ztbV|Wo89^9;MZ1^$y;n4W6 z-P6VkHifT4?yNKaj-Ll4(S}X74X0RkGG(Cb0yo7*hL4!I;^=ig!_F|Zo_|UfV4UKek5>O5}kpl`zU1ESh@r&<_E5|?KhgpAmk9;?D!7clB&=rxQRrCRDjbB~VYuV=arEgK3 zO1I&hS-FhI8Cxmqe<0)306CRUW)Td5rLLuD=^-}Ag)<~;+K2%zR1>QhEN#OH z!6 z?ullf;rdJnrvkzcz#@cIDVx!@GpSfLls1U`iXaV z8!*orcdM0hpK(IyicUJH8eNtnC6UT|4gjy%UG~a(qmeK6P<2OCgwi~oK|R%z zG~Z*6@2&|6gp`0K*WWS`wjNVH&)DSG2xPU$AA4eOkmN}A`N+wFSHjO4b(1F65MQXZ zhqcv^epkbHfI6AQ%qrQ}AZNdPl$89?8PnMi0XCbDxPPDkTY8w&R02Zws)ksO`d&nSXN=EP`W~j}el-+?q0w{BaCiK9 ztVW-<+Cp1s}rkPGg?26}%s z;*pcu&v|I6^?B3EGH0=9{gPojngpa8+a@W$W2f`EruPW%CBHn5NVIT#^)ave4vxgz zwahSk$ftIAx=7)j_XD(u*VBczx7ba2*edCa?le6Q#fe5jWMQ7cw=pPf@F!*#^Uh!KS^Khbzn2ts1)0JlM`W7K2S4=a-J{Ci9xJ3x2ILB45O34v(U^p{qc18>LxBqCuX+NtP$nN! zEz9SIFH5;h&fLzT*&+icOT!J`baztrN6UIzEyKi6jqdkVDmUq;v*aU8vTpW`56Dic zZ+@{{JygKL;}|YSd11DXnrrTAl5DVx?$OENo7hcluV=`hMSd=sr-Vy`5_`3p(^O>a z#pg<}GK^{{sPAF2;qJFWr16Ki!t%~SL^4y*OW22vSAgdDq;n>l6Ri0sxx=(Soi_Bw zoTk_1a$nc#?uT}DO!lB#TBeC@hu78iO(UpVY--A~(Xw6dj4ETVI$gUnYEQ(RDrtrG zC6~ZgoMF?(gWhD;RP&q7t&JSPsnQ{QA=JuLGL4N?Z!DWLaVUD$x^PN-gG*(`tWxN$ zrN^xJ>AeT2X2sG4&XYX4aYeeLQ@6|^t|N&M+t*SC9E*E4gzIMABE>iLTPo$nrz9IS z-5IZRgCONMXpHp;;_t{-`tm;2jO`u5{hG|joQ7gg+dpi$xPEt`ob4T(p99gn+v2!NkH!84b&*I9h#Pp zxCjeu&(GlCup)|LS zPSql>O@FqE2!RVVWHFP%@6u;k^2+7buI{%=;^Gr4`CI>=>)+^(@=&#$!>~pHEBY;X z(qFx*nqhtW9kk+LV$tG$>(9gr8U7u%H140?x7XXAvPs@?QRgu0M@RzP{+j%gQ2*!J zFN@s1L|^IlRsT1gW^~T0@TwVZ&7lN6dBJeorOUk;OjTs@IOMIzESV-(q~qo;*)><5 z)S4!F%7gGM&t57Do+HN%+cqDDPXWo}`u+_4c6eL(hI6Z3+ipXN!Y|a{iNfjcHL31a z|0c%3Xrs8Wqig@u@JxjWs}K%2oIokaQr65+8@-*OPKuzCEWQ(Ek7C8L<4GNP7~|3O zFME{=x^9fVVv?|@enH80dvKDk-P=4gb7kWA8;+@vS9eH!|7V zxmX>aXK$FK9J}<%oRH<(8IUwrl;Wr`pARC%D5)vO8)l%f7ayTX(!>-N{h--jCv{kHV$l!@%(j#V*$PLddDU!$3@bVDosz zv-oP`*_4yMb2*xn^VNEK^m1rw|9*bpm`~nf;VuoqD#JvY6aw{3q zpV=gFYe_AxGf^{2D0Nye19a|f(ARg~&I@|!5M!lwXfXrA@E~+bqTI9d$ihwaXdzb( zOB8?eo*}2}``>dl2kq#~0%NsAKpBb9?KSarp%GGUdllGy1Ni`ALJB zigA>Fl|o)Qr2wCY51i}vl%5)x_|#-@{iT{h+}(BQu%wEg@vqY}6}nR-@5vk}-!jKK zlD`_KBRX_DW@aq0uk@Hfla5@@dtken$8e*=Intuh5a9zyVLm zROp}AD~}U;L7u0(RsKn+8U|gRVjB0Z5}}n>Q<+8#!rg@Ylg*G})2F}Cis@WI5Lz4J ziT8K1{lPYM4xMPf@dmgWED7d@H$=PhA+me%7+7Lp@Bbn1yW_d;`?e!xBw1x=uZpZ> z@0C$jC1sP6viB-vmmLZrAyG&}G>kG6krlG35GqmBbA0POulv4VulxD)`Rn=TI$zg$ zCcoeJ`}w@b@ji~@{Sl;5l=u<8r(m4A<5FOFWQ4i&ujAFQZ9j5?V{_J(FsDY3lP|wU zk+)0>J(8nNQ#5^}o+@N;TcYF~-<3(^Ewg_@*=jJEI%8;i>YXDtyQP;P^SFKjTsO>Y?QX*B(= zwW{8t=)=1}#SfBoRtN^HNay-y1l#UaVimLA zz-cpA0jSPew;=H8K7w9Oa%e5_J-8zdG_9*YXNWg?rYSTmEN4L25e0t;-r;U{j%d0mODK^@_Y|y z@HNHg((tv@i>tbDeOY*4CWp1)p{`zi#J;bI4=`Z1xjc^9!7lUNsNqj-D>ed+3pLDW zVWNS8_sbtrgO8QE_?vdIUYw4zIrs|@Ki3B8&s--oHkWfJvp#Y{m`!8O+Y!Z0qOnV- z?Zst}w1YDV>LD4ld0?C#qvJY7OeYJ=vjhxSOVrX@-R7cc#LEd+;@F7?V__f90DsJ` znSQfpFv~5nzA9F5DBFAP{j=+J2(wXady3z#%8ya+EBrn`aDNK}y&{yayQT7H-JwUx z-?QCg|L@T2r$5KctBE|!=aC6-603gP8qMq|ln?9d*{CBLC2uC*6dpSCxSDu%)v=}D zO6_T4IX(;{v4UQ31U-0$9uGx?-_8uyD0=>wZt~SvHDRrOTem6p$R$)?ZBqRBGM@8w zTAC9<;5Fw%C#tuyYmu!QbZ*!zEZv9FgD+ZN^vn1cAoxq11aVnH%&y6$4hfB3K;I1J z-F_$X0&j6*`zY+FgY}wED!$D0lcTcv5f=j1=73pjoy-Y15~QCvcx4ZZGEG|;8}M{D zHQD&y?ffH6lJ2A%p<1yv`*6--NuK1xMdpQH1^du22)*y^?Ol2ggzjP{WRAs-BzBRX zC4P4S(W~OuTd6?<3ODogVTrf0VuTj<1{dVg-c_|K*CP?)qF zbGIq8zXL;zaY>)=q2A{+=;RKdj-JfqF)%u>qboE<9Kbc!`0^1Gh>dWYbBIcmSa<^5jLM`L%e)7 z7n4xzRh`iJcFus{s>LZy;t0XFS+x0 z0EdxK%o2$qxf$hD;CbInX=-%<$*D$ z^YOH$w^{x^%q?Gf0=}I|zqI7Cd)8OxN_E#q(V?Y9_JrFv)-RI#)oZ&1eJl9qDax`3 zZ#trdILn+oH&o3uITa|s-=`stB{>N5=$8w0BoU+fZ6YqeMY`{fDs}(*D7$0+aYFSQ zv?afTud!2A`FzffyN99Oi0V44Wo4&@!OBvw*tgq4svH`^J)+8n&`LkS9fYc&#POcw z8G+t8Nw=31)}S}6yx~rTN)QH)B*)%hn}!vb3sHM5b}$5QAhtAsD5c>AS{k)S6*-$e zMaw4Dq8VUB_vk>DKybDbmRERq$S8#?5=a~6gM7WTJ4kPMNt!<-1gy`!3pkxmwp~n- z`CXQRAN?1W&uO{Y-}l$5l@Rj|oobXDW3LFAIJ*4{wL2TMlLR-AZ(bmNpRVidYd>Sg zNjsaN=&W9LS$FF>U4Lk6VUsXrFZ3l0x`k){-*(xqz?G#(WPbAWs592`M6Ll1^F^JG z@*4|~cv;fpc8Xb__o7Vju=^JakolBIzGUjHi?soiW8hq*jOe>Fs8c@0q?O=#ynIKG zRCT70$#>;t0|k2^%xB%Ro&ixM`I*Y-eB7t?Vd3ZgdxdDzbb649Bn3}J+fNT&`kno1 z>fEc?)L-7Qw#1lc#v+F>ECc$OLo(JgFpQ;Cdz`(kVJyO2hbH0^_$b#s0)Ygo?`mb> zq&C?G*@*f%fxAMwWg7ode(0sJSzsJ253p)peu8ic_2hh}AWAuWORi~1YuK}sW|9z~ z4fe?b@__(G&S!ph)O%Y85E7L~-dgaB_-iNu;7qq82cR{oGMGA@0yc+{p9R*})PG2H zL4!?fEJSnAKLsEzzbCnwT{rnF>J^Lt$Tfq$&s)TB0O|WCBp;bHIY&@sPCPn)bj|y< zj3MLXcwW3J1}_(;#dQdLjw6UVX-R2CEMBz&TO3q@7AaVzeR?0sD8W}?=5p@X@4L~( zR+^M~;2;r5H9{PJjh}mZ$aTHQ>Q9p!->GFVy)^fyS>dP6!+?r$a!&OJ z7GnO2-TQQ5Dwt0-7SlfC0n2zQmx!24_baw~fofWA7mHBCqe#RT3 z?fyQqKm~#`_Im|DqT>6XofeyweFBe?`^U=pTJ7KKv3Wtoa{kv2ZNKXH=c|i5f63*N zI6tb_{xzrfxrWrmr-Lv)_Soz~wYboEyn7*w9po<@RIYH`;ZZTNd#emzF{1qnzB!oHOET9o< zZN!qPCL61lUBqrETv&OpkBqSAqk)1^lqTgb;8}=GM58K4E&zsW!y|`f6{u1ks3<`I zMy5XlBkoFm%vns8Fi@yyMeqk?9tc4iaB9caE2Us%&DLEY9GJ1V0BUz$oOIJ11QxvV zD;DsBlfxVc%>^hau~Q~2x(naF8Dz=r(~icwAXZ=;%+zT|;}Efh=^TFA83)`IN5FIn zc2UKkIl)NmW+lp2qU1%hZJL8yH{VWL4Lkj4=9e+sZzH-IhXg3z3Pe3oI)xqA4^hzL zeSZ5Q^oxphZp^fz7kjrFKAd}7y#0moZSZxHboS?D;|q=p0m!pw+U7okuhRV+RUuIL(%?^jcze4Sm#S!k+Z_<{ThkwvtYJ`3V9!s3ezHz& ze*tV%a1RF8BOWQ>WUBE&Hz>q!D4Z6D-XB;f3@7+xD-} zceY(u=JaY*d0#AO9GOXR@Z}_dmtM@-n0OI%Jo}$81|dXmB_ZQ4x6*_k9O;0#jsO9R zH&B9R#jdr0e)b2x^l7HXA5bTC#87|5QlyvjS2hq9q{ig@TGC{K*WUzIfNIYWeGOm& zI4;J-e4#=i{MABlZD3S=gLaXVXUe={!^H1 zq{)0BmL_EV$G)?IGI;h6dL_}$&Ljii#svQILnJxuND@_Jd@?sG^lK~YoIg$os?ClB z+*3gseR6P4l26gP;_Z;6j7GH+ANqTVU1MFqDQwD-n% z)9o10oLt?p(%(FJO|xi~l;@P}vl@O0_5p4IaoYyhV}1o}ef+?OzS4eFDUk`%NUy`! zIdF6|&ci9a%Gx;0(m?OS=1i;C7L&-7vr!SSp5o3G3l&&4+}%<=2EkI`;jIMgCtmJ( z%-D8nmc_fwOFSoOt(&-CzV9iV$v`&4JZ0y4{c%R7dItr?%`>Mo$+Qq{6AuJ7BwQU; z8h7z)P2YLCCH)t~`I?%^p*x>5sPC7M(w-anCL4E8IH8{4K8nk^2s>g`L(kbFLx((T zLYsc#F4`(_??QnY{u=o=x0H+N!w$}O#VX_obvhR%!dHTq^cLkNxD_#-w#H4RV{_)s z7iKx2|0yBOeGh$eSfFMkmlZz+GMLs{&bnc0zAIP836+6dadw`zc>;+vDWDc$b1{l& z((8^2bh;~8t3hFtfA13YOZKTpa4cGKO?gPcYWzy{%ht?b<2becWD ztumD?6AvHIZ#cqVvs|a>xl=fNxrNlZ&Flf%djZl2%Sx;*lP;U@pBi+dh=wTGKw{P?GL4;+d_Q{vupDVj^&4wp?v6=Ac#-4U0s$4DInxCd%?vD(bL+ zx(u+nS^6XtaV+o$<+@%@(g_w^=C)6s9*Na6ln={^n=L zqc%L}vrqm>b@cX__zGEG2y(pC$)Ybmc%0eh`Rx;ZK|S_=bsmR)BXX-n|8ud0knNt^#`cT zSw$Sv>0`OfdgR`8_lMD!p5mahuPyda6u#8^2m1ZGD}phEc9^QRHNKRN9_S{+4b0#65m-O_lA}f`u zTupHWMXAAHna4ufbQ}~bPrj11q&&PwP(|5Qz_3enBuevSv)B5j2P9Yxh@38gN zo8C5dOwR4_pILoS*y?b__ZhQ6d)kQsn-xO%js)4ljhlU`&6@G@f!Or8?YnnyVkwRz zO#lQ%O#@ntHXr4BO*Af6Hr;%_;pdCn&f|xnKxQFn%Qd1o63c$|xzVY#(Oncp6ndFl z0!FzJr#)d@)05pV8$o|o`IGRg+UJ!#&!x$iri6ycUv2aqz*I<(bXyS2d{Y2~Hg#Im zX(KC-oANviAgAU?Y8Kx=)k#`~qDXtK4Gn*S`==feMhjU6s@cEjCPx3K zIAYIA6`wFYoi0JyXzY9-%}ZU*_%^5*tu6M?Yi{c6y0)LlQMrKlKNd}_#0B;1$PbXL zI!wpx#;3S<&Bg|6UeTc~lM``d9_6msQS~Tz-QPZXhR53{I6oo$vcLJEuKsd6^1C!l zCAuE2`QViE3d`JNkLsExa>&(-7Kf>r%PPy!9W3oo+~e58zY^I!8o)r)Vu?w38vps5 zuG_L2bEU4Hf2?j4tM+m{RdBMU#c7v-;3TqzSq>#V-$I9LKzWgBsFqR1787b@Ku^D; zySB;bnQTLh-z2v&qSQJ0k^tN~u0LiOKAcU8IfYJ0fnA3pSS=N&I(hVi8^kornH)J| zv)kYuX?rfz!~|LQ;ryTRe;yg7r^InQ`fwrjVZ0x)9olMZSWr9sIhLzd=_*w2XitHO z#as)g-wkUl&e0n`e*A!Vn&R}UjzE|MAaLHR+&b=VzfHmynGY$GmoO1S!I?)oqd%xQ z9`Z^^nD*E{KzVD=QO9m$k;q4YuQ<`efr*8>iIL*Ri0%F8_hBXRs4bc)(vcwHGZw6u z-_f}bR#BFO&BlwuttKxHsr%=u*c%8Z5#~~-Hcy;E2n7>_$4iS`m$ry9w9$dOSsHqZ zJ*r=qLH~y6*yq!Lo;=x(=!1`%wA4Xs(reC+U)rInhm3YNQ}>gc{e@LJs?kU6K`4#0 zd-aH!svp_F66AX9IvOcW76GF><>EJj3Zwdft`Bn(vD-Yo3T#u|8zq@m-r!hI&US>9 zurUU7xgIMVdKMD$gN=i5d2Qps(C+;L>r?skB3!C(OY=U#-tHGJhYQ_2)5#C}lz3+E zr|%v_wlI(>**+CUVI5I*MINhVx6JA9!L<2`@* zD*PGYTjF~Sln&5tWSHjfe36-XqTsj0j`keQV?>o`+DMZ@*?C)WX`(h4g*k@3F6q9R z+|gxQ+32r+{#jDV3T;gz?(+K^hq|(h=79VryuTtoUlv<`8Sk&z3MP-#-gz31Bl0}^ z8{CCjJSN?OGJ?wP@S~rQvRyFQPC5Dxi|EhFl68TIzEN#HCnZt{O zPX$;KO=rzGE?V`_k-*yg{oAd5stn2_BR`qn zPr-j{`{Uk~WW zj1r7E%tcNPZGejnzZhZKBSXK>$#ndz>b)ukG0PbK&yqiHtJL0m1TzL8BAOsZr#_*5}||5k1Cr&;i_da$AgnC|)(7h7AhoTYijN7vtOdHnj1DRoLh z9Kl)pwe3U;+9zORZNJ+1>H|-ROl9Yi*`kDdg2Elcsj<+pb=*v=b5#Eb$@&2Fv;=VL z?7e`oH04W(&Omw70|-UA3s@AWaMzEz5CN2P=eip)xc-MA*V-xooGK+g_LmHy$m3>T z=QSPP;vc|Fl+028{!5VAmMlBOVS=X1r4f=z`~)plYvK2SASc%b!4jqE!o8B-KYl3O za20R)SvR@S?$6(R@zk-HXraGR`()0R`ib~W*AQWTh*1A%($FgPxI-rQ(xxE$=t5Jt;Vo5tXoiA~; z5%?X7z}nN%X?GKOT4~oB<0l7UT|;v2w1(}NY~a2ABO4nnYehBlj~YyQi#8AL=Na&< zUN(kB%nnue`W8Nl)gPGvs0e&=;XfiWN0R90)o?ps9G-z)JPs3eh*~LlyvbeRTTLq$ zmE3x(X?7~~foH=To=Xst_r^U|TAfG+SOHi|sHJhk=c8}$(o+ke(FWZ3e{nb$^=XEZ z4TaQ$JX#&Jv8CjC_-aAOj|6d__8sI-v535M@D@O%EVciz?UxLlT)IXmAXFR@`Mj zhhRB-x#(W+dxvj>np(w#I=iJA(iNquyLb0Sx9y2z-KQ&2W(1ctN=B{S+pE!(p`L;r zSaN6hOC`Uh2JSe%yiYI`DfiAC$$O@XM_uW*@#9zwx_2dx8d< zFUF-W7CG_9p2UtMi~3~-r0GFideHvJUCUR}rDx!q^ECs8MG1A(bk!be{9iybYig@n z=vX8b!Tf%kYLQ`X85cCdds`R2%1Pn+eGi8MhVyu^`?tqd{2HB*Rc-zua~k~kKO;aV zdcF=^HY2wgt*1;;*HM~41Rj7)OH+MAN~1k@(QwNta|Jo7%zvF}j1Q5WMQy`8|Bq$) zktxWW5)M-RAYbL)1asXG%rbRIm9B!V${MG^rwg1}IKkPJ(jZh?T7Po&udxddl6e%5 zG9W|&ZcK2cD1&iI2fNV`cNyw>!U-X8_M6W!MW4h(r>5f#d`{0WWXQKmj`>B@!g-mR z3tSH=?9l%h&I0@zQ|V6L<+dkM43>2qLG7Pk-^H$84AB7>8PS|=c&@#{Lu1J`3Y8-7 z8`>v%<{A4`%20Uv>cVqrcSQ{A8(JQft+H-J_wf_F+nBYrM|75ZOe9*}ET-b&CQ`ZO zMU;diJkqzH8b|q4A+MYY zbJ(^XjbgyrGhvjuntAr>o}KqwM-o8KcYgzD=fJCsufkSO*YJ(~=*O*=dQAMehQcShLds46Po(nILi3;bJ_;Qj6*%OMpo; zJ{ld`#<8~}PcJ8RTce=B-+ja_)thfWz>|pZn-(OG{|+3&>>|a0vj7S<%*-E8zgZCJ z3@EAq?2u>Qx8)P{I~GkQX=gKyTSHgb#BIrhok4!xo)x_iMaxa<#g#>`Q&IT76?#}303Z}0*9RWL5qq9MGk^Rv`1Dw@8Q zm7q{q@|ZyoWu2m005Y04e@ehhYe<~Q6(&<9XDoGv%qxXrQY0W3)35F@=Xqh|5GB;|8sHB8mi`0^u3tu;rrW|yFUJZ- z7sk}(XXKSfixgA}c~@R9zNz#a?BgXsQjOq}!_m`^g10jkGwR68Os9y(9f<`a6F&`Q6~NS;F5ZsY z#G|h~SE=6s8Yq+hM$M18LK8PrNjAZcaC^NeN0D|V*~ybo;LQze{%s%~3>$Pypc`Qd zc6MM>7STyh>~fgkbRrSv!QRFUnWKbj;3=c-yEQkL%>44C`-hIL``^j-u%}f>;bnbY zEd7>&B|fUICE1~JCM2IOLRNG?CwCo`A>lk~x^!A8r5*-wP#0mFQL%jCPQ85>qeOFW zFOx&S^9J)b&grE3WW}24Vm3|j0dXptzwH!sJ8%kh?fGh+pNOEa_F3h~kw9aeBO>HT zquYYn?HmiD{GImuJi=^*xO$6qX#7?FBSNDasp_w4>+?V+zvr zJFvpHBKHRZ=j>f?*SMv!h@0d*&s&gECw^ zs<@UBF|2sS`utS+oqY+BRyATa8@KLwPj)emF49b`&-crD>hQevV@VaUC8=HytE)e< z+~HAQU3S+f4a)zPgnsnKw@%oot5KM<`&zbR@CNhgKUMW!K+)YnQD;MZPpXPO!LtV+|-keGHzqc z1rH+zQa*{?%&xd_IQCnNCta==CW$Q%Tirk3o=(E_D#FS7OH9U|LovF9vJi^!=gIlD zzCjee5@i<}iC|b?Sz)9K+rJ>-xUwAxI3R&ItdN^>zCby&0kWTy?v+EE5vY3lXpy1n64$pEX5Rga`2pnS|5;EIDyhRd`}BVr#8i3r zN=99QsGgg;gKtLNKKedmMy_(q82}qFd1y)(A7`=(q{9%Ky&Kpcr1&4;7LSW0PE^mgq}yPE*6T8`K*0mreR@t zLv*>Kx1YKN-D0-n8KbHVW4=M!R~I2Xe#;Dy++uj5zQ*=jE-RdT#28C>8D~|e1ATOh zMWWj|qipcZM-T6+mu_T*iA2kh<1{a zW!wn8x~E0!M{Tw)yIa|lF4doWO^xrkYzrrhdjCxGL#Zo9x>jkXkHmc0+)|7tk$TL? zr--y|cif)Wlk(57dQjw`HAEDhd;}OMbvj9iwnnK^^o8w&z=0&PZ~WENoJ#E5Xys|P zR-t}@-~nWn?Pty*Y|Hr0@GN1lY&_4jNk>3o7@0gr&b3hc66?iam6Hi1ulkFOcj<16cwaxf5J(~lnttkCP|CoB0{bVm5tt zbnL%_4LGlIEjCdxs*qJ&Xh^aX4?4dngWY6mjkC{D9<^McoshX*;R1w;_9TTlk0j=W z$Thmn^Gj?~H%p6D7Z1`sX<9+uKzDZFoXo{;b^A=VN%lU}CwjeVLab9MB$At!xJ2bm z<2wlQ5Hvkx7erNmr`*mN+7vmgWZg#xkk`)-fwy+^oHzSwpA zeJgOxVIH#!V7-tH@*p-Y_1Bk1uaSkc_4XdUlFmAH^To_fR5MTEB=0%>>EHnkgJ#9> zxslDhSJ>wdHk4(qEjM7w=ep)weZQnGoy{yXU#y?o|Gzi?qx zH97&_*n4h@`Oxt@qwT5te|XjP~$1W0>|#WBQtRk)3MsZm{c7MIYa%cltPnw>WR> zFiYEZqeA<+g=v59O$yI6<;v)9J%>n6*BrJlJ5;XdR)~D)q+D6O7Iob3a-!s)&qL$e zU%l3l`?K^vRy!U~7vANLV@V<%o2+ZG)t}94e?CYJ2a2GrkBW|jk_)u~DuZ%KUPpmy zMkMC~M*eIHzGc^$G!Q45QyUZ;*>G}vPU0=3V$Ez?!T@!<4{JO38W1S3WE95J}3(i$p3y|+Q;*# zsN-_I9aM`pOfvXEzJ14R@q?&za2fof-CAJukTa>wtYq3gT zeO>+U{{~qwc6}jgTU6Qb_dG51nc>fJ7kso7uK&g8#-7;rFwupIV1bUR3MUjL9`T^3ic=7sJHCu#lt z%p8aTV+1tUmQH8&1AOv`D&v$CErX`yeFxS zKhV308s;he4y1g3WeZWRGdxOS|MB$8Ay*3}NH5*1H_%Bp2C!|7HiOJegEenA2=J&? zR4ye1Lumxe$gDrX5x4R(yk>StxpZ=$+E&lV-Bbn~fom>7boSlTpn&?CksbHriV}th zD*0&LCg~2lnG9gwpm}k87|XS-uw{w<30ZiF)wArQe36P9BMWXiLlGKk$9<62$kYyJ zI?qWc7ZVyn(a(GN9q7Ynth%#KQ1AJs-Dz`%R~PZIWj>!%);&C^Jk99LN@d{3z|_6w zTNaa{3mpjks7?u;6XfR=X7jiucaD@^&Ab8NCpQJTI{c|-2izC4Be07;v_A&qnR_lU zoiU87^u!3Gfs-a(~y6>X^QkcvsVYDjXB zr!+Yz@q2!so=5NKP?nOE@(1_`^M2?KH{qS^aHQDdHZlPtg1(N!um)YX#CWK}~eXl$rFwE-xry{2q4rnalo;G8-qO^t)aM@1jQ?l$w z>v$xZY34c2V;>(l9(DeHXc}(?lRxF6{?5uP%p*ci5NB-yc&@okt(qUxFE`z!icU-DrY)=m>#e(~SRN_^rrGDz?JB#GhgeLXsP())oU+~sl@hT69no-! zPSLR=M->KuEw-TrBBn*OTl1AbJ)`7QQpmLq-9SF<(A-{lZDw)DdrXJgovpWkQkJD2 zb%t1$&O0E>;rvJ+HfDF*B3vJX?>8Q(QB{$3NlhTixL{{T5kaNmRDNo6@R8vjwyz{| z%2wnpI3Rpo! z)kI0kE@?9&>LPA8_q|nf%=UInb3|d}iAp6kSM$e4UsE|wsD9mPt1>)xpdH@%^SP6X zSDFQw*sjAG-j~TNO*B?6&ukm%$~Bj#iCYH`VjJ-f^2F0~YLXW7I((YXSPE3OzyFEi zFuX1)t!bwt$?OJQ=AnzHwB>B&*$Q^mA92|D+i)pI!RTK5&!p?c=8oE|2iG&)tT&bm zes~}Bo#VcUZ4zK-dy(Q{iy)=nYaUW!92<8tXK24K3p8p0%XzBBk1FMDJ7H3zQDoH| zw!=&CeAc0dWC^F~4y64QIZhLz#^Ap0bhZpj2ZfU&hJM-V6yP0{6O^Tx3X&Tk|RxCtv!>-`VGZiiIQ$*Z28Q&qCSj?A6zx^ zude@kGdy_a>X*>{vF=)1q0c!+KN(}|6Zs(Lbo=2{{zuC@a_4Ei5SgA~+K6#>r}fS& zD&Qz<$5|ar;LqLkv%KVN`_=uUORkSgJ!MUngD;MJ-RG8ZZsnr-MScmQ#P(3cd|gfR z9b1%5D^qw=*D|^-xUk=;uT}_J(kzRtE2eChy&MGe$$NgV`Lb`P7VY2denjt2rn1iC zuq8d;;9Ad3B~?l!lmHm3*&6$8)XYuUa{(@Es)0IE+&yE+DW&pivL{H+Fo~GO_7u+A zrf1)iN$z=U=(mz^k$+BsH_hLi4LINZQO>eoAmH!$t|g&w()%;0JP~dDZXfBq3&RSo z%)A8aZ^AyW_HpC=J-0B&epWMCW6jnw*%%=b*Vk+MR_@H0tDISyF@q&W)zNcM-cxzk zR(c*Kj5Ebghf;W&(T&hZ5izYa+xl&P6-|5LJMQ@IL8?c8y?jsKsP?SiJCj#Yn?m)@ zG_@<{7s1cKeEN9hDI2TlI8Hr&nCPFsI3IY=&4*)n@Iz$gE*?KO zyFFdU+;|hoWSn_|$?TsK>kAOX;pB$8Wf8<-S|5K1pzPJT`#7^&w1u94u^2VX1`U$# zONXHZ9(jGp@FJ7eQ0YX?yVYIb)nDjH&!?#mF%umfe@9V2dOF&`$}2?@$MymJapo&mKlza$P}&AS4zX**as8%X&g2Z`jLOfUTn<;I zAsQBF`;aY_%xgPO(-od)xZnV3#NFcc-|sZWJ0!Nf0XM;)(fz1x(`hUnmhvE3E|k-b zVZ4Rhm`N&k{si~zp#C(?=cTVKQ|pg2?s2iU>B5EPE&Xq@nE6^+{w7muyUYj7swDq* z2)Ya0*g<@1gz)x$7CdxqjfgN~B&x<(x%ToaxH(v9On0D6pYvZV-~;viZPQz!U*UvA z-C@^5+KZ`7t|hEOgk8$BzDzWmRJl7;+Cm;r>pP*bvXx!N6-|V_`j~Nwmxf;`&6p#= z)l=4tQF`jknzfdP4d5-IFMa0Qt?q{6`1_*^J5(iLT!|Jp*QUd{Xy3HL{IaH%4L6u` zWTQ~feMUB6y;G)aLiILW9o9IvaGF|MjtkGhFNQZA^S0esGBKzDlL3~#a8B^%OzLuT2MHoWQa}POi@9>mu*!4IqnQ#yo z*p6{Pjg`O_kScW8k+E%F@6GD6S-;0#XF-&PE7G`VTRSoMqI_ynQr0Q8itqhQe^yU8%xHJ_V zOmJd97<_i`rL8w0p2FZa^>$%S*$`DyNq;8nzWoyc#82pUxC*p?$Te7NJFs){`-v-U zyDtl!D}z2deZT%v$>t}u>Z|iQDMFnJ41q?+rkt$oKau#vd@^B()aXuA@2Kev7qSO= zV9FzCtH+avt!?lQkyzV!c!`TuWYCM6{KSI+^~a8xKk04zxEB#{Hpy82f1<=Pgxt|8-h@p`D3Q9wNeHi$0NVV~R6w)nJx!wZ;pC zjpRAt5H(vc{KRXzb`XsEI~MN@QwXL2Xf9M3k0xxo;(|9hnYbC#v6gDB`N)2pc~INo z|7uJ0`nrb5b@ZV{NAC^;F$5U~dq`8h9{}=?L6ZV(U)7D&HWNM1-(OFLQ8*+HuhECY zFV~*<^&zMw zaNqs=Ok7d4QBFY>QGm>civW6?1dfvu*Ij*>B!K-Ot8SEH-GDX$jpJ0%FC22rbCM5; zfA%?s*&@7O@R^7A;oFY1fjfeR9ZYcpzyg!JwTBEb=>GOH03f~@MkS#=Ki8;r&`u-P z@_+XEcLDsrKdz5%5KZ-Ie62uJ3|F%tRQPLd5r2uwn!nE&Ye4XFSb@o0*bsafEiwcv z^c&zL`TDyMI0S7%-{#&O6+MU5wU!8EFs)4n5ef%2xdH=qIKw2B0!V;CyW6pDRNcEw zi&V1VE`uS?g%qMP0Pcixd0*Q_Ho!Gjm8TM)R6;E-Tm3Xp*8wzi0hj)ps9h?8@G+6F zS}p@B`4;GzlK_!sXAID2l(LPGEUgm{G#hK2zoJ5YJY@(*N*zW^Sf5dbVgV2H;TYr$ zm}U}FX~?RIkCe(mV1=cxU1E-Dc*x7>+`vtwdg~9RBP23O2Os>$~*o%yb$#cO)O@qaSvzPn;PmnabMy@6tJlY+L^>`5Lebq4Z%ggxnY)o`H__s z;SkNAaN(E~rVyCoLH@eJu%{nx70@Ixp7{zu2cS6tU`^b>6e9*qs_mVS!aX-geF)-E z{j(QU_ge^A7zxAAaqcoFy61Ra1%W9}D2icmYw!ag7EZ^-z*J{k#eFs7n2U7lcJH-s zz4GcyC!h|e*URv&(g4v0XGD=WBM|_E4t)-~3EmU_FtJ&gn76vrf~o`|d(-9~FqvzP zty0|X;r76*a=3xh2olk~5WW@$!G4FGrn~RraHl_p(Ctw{9>ISh<0qJy<*k~Zsmie5$4#T$LKGCxD%@^z?i{ZqU}#8098-> zeoHxGd}PCR4$&xCLWGFEwZcYmMhJp44B?)lk3d}Z3xH3_Yi+`s;~nnwj!nS;DOk@y z5WDk_<-k_0EAEn%nv`p>7;iCDV_s8fE_K+BWR6XMV_u+X5+f%}dvyC8q}N7~iN4Og z`wngrit^@c#cCwigD`2(f-MzrR$^$MDI<>mMnS009^gd-T7j(--%S9oLXNuQuBeO% zJ6bTka53U7?=$gRO5M!0zz0@3{f6%VBA!Pav$$auqNlp_yI$*R1-Vir2)0P9YT`A1 zpVX+b2_4$_ohLX}Ot46EwZor`uzjqLV?2GGO?l9eniq{a_Gg@2u_Zf?m1KrGaN4=# zL$Z_5a6>}&ajDD4c=UTMC^1E5;NWhZJllDpB(G*udU;V7K~TW6LhKSY$_sDfmTTi% z8kef&?ax4PC@jeP?acn5uFWu1$BvyMPb|8k59#DM*c4l(e zWxP0?Y35dplx~t@xj>@Y#3LlkRS1+;jXiP*|EueH!Ht*Ld|={*Q*Bf*xYSbLd7y9r zOD&3V+yOTe>VBg=k=8x4K(~?PAbIs;3a=0~H%zg9j`&C{5C`teOO}k6PFSvEP{GP@ z0uU?i|L3)5UogV8d;9~*kmhwbMWz@T?B1I2d`hkr)NCTWt46+|v%p%kUJ5asuwr;U zvf-9||MtzHjt4$@pdj0Kf4j45O({Vz&`|MK;nEI(Cehqpc<0obl%gjPP|(hZ4J(6} zhS6}$wD^uTPwHtEDhcmZVM}qMftaef6ZsVp zOzv)vx6fDb%v~8Hx12BC*M|_uzAh?U8-p_!zVPie+NO4k~L( z{7ywZvcIO@)_;7fKe`6L z4ghp5$4}OxD|8UL5DmE`e6GCE#YNE9jW~V;MD~}Q!wK@FZdu)E4-0)+V(h#TG|FhRRi9HKUa zgBESvFt~c$7+fG=P^c0ecyW^$CBVUHevh*apbd1BYzy>cqCPJ?3-J08Ckj>EjZJ}G z@@M_HE_TbJnsD})J%tQED?fH^@ic}N6C%lDNy;Fc_dG=pn!kPaC(c8M{wG-$Z!ub6 zCPI-p#khic$pV+YoklTmAXi8Un06oH%?VZ-D9yPDQx{Y~&iuAj_qKchtucvF-(px| zKer3pKBtCvctfc`RWG5?H1U&;;=69l_-=W355)^a)mxP0byD7UA~L)1LI@!u;)X!} zqn7ShEeR+pP{h)orQ)6@H1AUrt!eQq3_?n3NyiG6Fj+x%or-cF-j9g|BEAf#95`Aj z`WZl?r3O9uV)E>ly5WyFkT{ZDVO>kgoA1806!G5FimQ2XX~^WJQef z$W}9^Rxx~0vfFUmE(mGi1GZHn!{kI@UG)T>`HNaT5e z=~Ty+ip}q6=g+nh0;^WfCU_I;02?(uq%fKaNj*@VkmbXcOl zq`uQ}VS#dsBrjscRMbwnB!#f>euk>jE$fk%8hh_g9aH0iMq&SdJ^hrCu$4Rn^##dk zOjI#&*(=B5_F^|_0ibqpgA%s4N1QgzGb%qoOwxAFR->Rqoe% zF~5mAu2+x8wzpos<7R|kX#Rr=;{g_@-Nx)$`d_KL#5adNKj1u2DQpf=F?-qZ$rYJ03WVw`5sV_;!`!xU zP?8YJ37TC3VpFnr5wfX9_dBD#ML$-5<9mup=yoBM#iwclI{O0Ez7}4W6*(I%pvqgG z*wTPI_^$qbcglsFEJV$~7)kQud>t%xz0_#?R7?_dXpx zuVa!JQisZyy6Y{f z5;7(=qn9WO_MJKi^Vw$iyhDA2d)fX~*=Z-F&y;0 zv7D95y>eaW+-}VyYsPO;Lg=XIByMrAAXbZ%IG-@_%o<|4uQJRlyr`CVu~A=W8Eybc z?|e$Fo(=o<_GQ_8im=4lZVck@_MOFG9y@vk3%7l-QkvY827ncN$ZKrBoNP|I=!+Y+ zeUskr1E8xpa@t+*(tZBHbmcM1zO*3mzQjhdm~+XXd%os~KAUMzCgwm-QZXtPIU#S& zGBr1e-koUnWiWQ2Jd$%Dj+T1BxQ9NTbzh75`Is39Y-ve1zZiStRfByXHp3}1Ih5xF zwX9$)Zb&fTp4f;wyh9f;6}&~}#meo9p@%M3 z^(Ux5kB{^2ehjL{AaW!oTR_m>4P3kzHmJGI6Ak>8N3SvQev|1NyqCDG2eWbPltIaf z*Lk>HiZFsgX6wDM<~L`yaWspi2^v!5UO7`I-mJdD(5ki)pGu4=1NRV371hsVXEiRN z7#P*&+%U}bjS~_zZNzZ~*d9eE_)x>W07z_LjK11j$%!iZyA`OPpr1!o6YhIWXg4D- zP1${=W9a~2Y(&`v1dAhvCU^BCSp${aUb+v(46HDYZHW+>pgD9($0;goS8tbb)S!He z%?h&dRqO{<{Ih=mnRxn9>f_`eey!- z?yJd%W$g`Bm)u#(2J6fpOy*e`cPs!p^SFcEUe~Bit}whLdgEV?n6iX_#Y5rom!*3d z^3)$AM;Ttw&dT1$WHfL2>V%*9z<0{M@{Y|NHto^z9^1D(CbF%WKOm4}p7QEkuIEky zN_;l`A=!;_zZsn*D;}wyR z{b2x(5@RjshRt3rzpcssem`5%KHX;vnBAO~Qtu!d$SDHv%j6JW9$7vNFqmtijcYpz?8x& zynsxZxkP?k_qdkcI4@Gjt9tU~!RG){T$bDI2zvI(b+inTr#vTaU1zwDCs z9Fy?tNE}TB58YPnaizK<1Hc!W3-@PUiQH8TqtjNjh=9YPP9o{y50hJO4^wJf8-Kjz zz8-AQsWF{ZrNx%w=O+@oc{%!XWshdi zWzf0pw8h*c?)rNgO-ggI5Wz$KCYXFq5G58H`qIUd{H1whY_l+9PqDri&n_#0x0T-3 zc8sf7ePz#KG_!~?PC~k3Y6PgEx(U=Uvi+b82>F;Ar_gFzXTORAn_+qHM<&N=>=EKV zv5s9ZosTUt{_qSqnZ3@ZTI-;1#}*Fk+hGZpSnX|~NC`*JfDeZw4)#g`-593pfhs#a zN`adEg9L9ZAyWs88Qy3sq}#M%D7KI_-BA*?62MTJ!_R2B)xrTP5t1x~2|n;`Lj}>? zCLI3^jU3rd+lDA?V1mJOCF$`NPD+sFm9_tA4A}_CLI6l8NLZH{1TW*4EG0$(xcj&tjEevEhr|R` zL&*@)9cQ995_Um>Dl7d^pdG^dXT;*)zikY$5{G{!8E7PIi)`wM1&K(-t6YH)^P|3z z5BgCFmnLGyt$^>QMh1`wmfc5DJt8>+1Inv$T)EW@muXxI&&fZ2E@ZpDigxHW0Rh_% z?Fz9g9{G*Z6i{`C<)Vp{~GH6w$%6!v4VJLba-fg|1kbnjqG1a6#h>N z?FHhe|M`#qKmAy^_`hE|$`u!vfYt}AzF_WwZ2KCP{9yc`)cM635W>R$;{LPW?=MzY zZ=$%W;!4U*wxu>qePLvW6j|B`eddM>Vd`Z$wV~>+K0d7@5;J0Au2%1df1CLH_CI-* zMaRA1!}m|BcR{f9o-20h87n^IwN*`E5P*irh7B7=&ceQ*?@;#OkLfx1xB&?ly`;Rh zQ1A1e2>CLfLJYcOus9y@B~s}rzpE%dpm9~*a<#_0mUP&}^gIdv4iaLLl%u*)1SRVY z5W+CrF~gt*-4W`~9r!`~wa0#+K@IjM5b95c){UFU$WASp!*uHY`R`26NH%ZSaGsp# z{SM#kuEVS+1S{o%?e5wDD=PyLfT7)=fO7(Dx58?(01z*ViyZKg%y+_t?FulYeE@XO zGi~2%dEyfAF~f2A`lF1$hOrq@h+RU@Yg}|B0Ay|$_*VkLki5Ed)-MuxYUP>UgV&u1 z3~RR>rqm{LC}591L^Y_8KNiuO0)r>(;tIkCwI@n$MGSQNxHHP%;k#9J_ZE zb$qOD3%>1<-+(8%*f-D(s=f!>F%ZPab&2(j zgoBHHV{*t}soW;luC)Na&LSlHMZE%>joHH{$F>8q2+-(4V952{mu>ZQ)B5uG-1uv+ z_O_x?<8vk<(XvW$rL8q09A-JB-F~JU);B_Z+bCg85>h{sHZ<8#oz7ObFT^`4NP zA>&kr>`x%=Lz~cXe{#O=eJrjg#RNXX4M^MY>_@4z$o8=H2%9Fu>?8BhOIPD8rk`B$ zK@_HCO_x_PLcu-n0FJBi1EuYZQ&s)LbAEJdW>is10EE(RquSYL6ty#x*&MWQ0tyWS zO5*{5kc0D*2_n6ylA(T8x$2Q;Qs^uN#U8NsE%1%q@tCnAxe0f^ZydWYFJnT{1;ZBE zd)$6H6b=nWu(jLW@I(8uIUC|_BDe#`ZFL*Ds;80IAxgg&Hnl9mpJnlb?gDBwLpEY> zl);wJ!V}Yhz~9YPYz1b~_?b2C)HONF9IytV+Pf}xX*!7qhRYJ{=tM}cgA;ci!tT!p z-~)o!S*xjpX*)^!4drudr-4V)FTR`|^!OlM5Cnd~U&dQccNHtK;F=!M-2@vdTrW`3 zMzm^T3kFTQKGmDSh-JG;ei6zQ_YV+T(w|8>B4dDQ3CTnWE^}mhW(G}PDICLHhx^@S zCL*mVA^YO=YGG?UMY4-8gj zd_JQ4hsBm@TwQ!W*X+S*lRbhIHHLT2#Gk-aw-HMBQ@M8GXCiojiLgCJrBI;|AqmjF zI`VKQ+o4fwgTseQaY7iUuyyJOltx%gUMp)vi}4(jR7R7w0<+S_SM!>TOJ=mzZ(9V=vSNpyu-2|Y?+KdJ@`ED zuV=5aye2spZ-uKDevU{!=HMzz+?&*=bhcWS&o3+D<4ev(;0naS5ivtMqn8p5e5e^s zV>MZ0;T^LXsa@wZZ3!s*xA3h?fyOqh2JMr+j^Y{gVKLgDj_GoeWA%k#z=^~rxM$GY zQdD)YKWe1FZlYl>y|V6$r7rqrgiJD(--3{h2X*g(OCcfADU~MF!M(;Gi;uDXiHEu6 zh+ricM{vEnVSDKkyN_5pP;IoV=Aq!7+m~+4@tc}|IcdCU!uCy2x1KuLk4sqdAIDi+ z0mWMQevAjVym!n5AP`+tM|7ARLb>u`CpJAAhzf zMgQ2KbJ+W&`VpOVKjB ztHkG(nVPh}y22~>MfDv12n$Qv5#lDXu(+}=C5|vlnaDaKjk2(uzDitbWCgaxAI9RP z!_Tse_yBW5+_d-0E}ux1FgLhuhnSEXcC1^i=!=@N7hD4kaKtqEe`TgLk4=w zR~)i&=L^sWfzCXZEqX%f6(-@ZsO%2%ebSA@HG2LsR3H$nk{`km7omSRghtI%Cv)-} z(8b_jE%44z;AE#mV^gnWayr&>xmYP?=rNu;O%Om}MRi76h1mL%+jk>y`p${Bbt&3`5MkC;0f{SfUei3im zKUq<+3FXdzIv+`ve4hxblO3uR$)I?L~`fbu=Ni@3|P~enB6< zHYv2!vLUq^$r$(9tj0yKQ_n%hy8nIbP4WW9kF+9D39if)>kY@a)w2>qY|+*%tjUYF zx)(1et!<_^`aZGgU}*H5v-{7H=o&@4mA3ju>3AI&Vb$F#{Hc#$=AEih7>ZmA`E7JZ zI~P5JhA~LqV})5S`bzw`FF@44=SmJthpGneDYtQgVriGsk;jkFrR4;QORJS<2=u)PM_xyN|mq1ens~7f{Ux&wNwWR&5aO|g> zr%5}PdOmfEZbB6%B}p!~BFzmO2^>4GVIR10?N+(u*U`Lng%|BNvZC9R(iZphkVS12 z(f-e&oJr%$GG3UaDVq7k>xd=wA`WH+Ee%|;msAQ74Bj>M60sW*1-UveR@jz!hgc=R z>Wg|z4NWPB!ba>TW(@yCV_v8RUCQ;K2Z)7o{M}) z@62#%Zp9ytXM(nwexn=%Jj%L=8|L19r~oPYz5jNV;95I^Kma5JuJ7sXHD7B3$SIXgI+DpBsUKcDsFxkbG}rI`S5A^r5rQyF$U^Kipb55te@ zdM7tCHP+Y})X2yHj^cJ>-4??zp&LkP!lEF^#E!f6Hr``IPhOfFZm2#?NS=1UD8s19 zlyjT&P=LL28&n=qQ~le*g>7G6vJ1UYQ^J*{u|L#BZ>JDGbLh2_5c!BRnOcO)Bwj1& zp7UxEDm}`Rr==WmO_*gE1~!*Oq}!+auyp3AmS&NpA8K(ZBrN+bFAX zj2)qMWL@Plq>-kDQj+15)<6d;pTv2EHxvyDvk2#+AUX9|mQC}%s_!! z3)Xt=?Mu$ZQ`Y3A&8pvTH1LsR#!0*Z{w7awlBq&S!8}I!f_Y0wtsZmZIwT#{kZEX= zXg{fAbp@erm^DLRK6V0Oj;@|~J@#I}B-Kmx@viU|G$PHcy317oY#gL>$os9#ne%V~ z21b76c;XM$(TkSiVOnhx_JM<{pZ9NUyvkH=(8E`AK^SjH{g9?hZ}x!A_vNJ5O@P*7 z|M-$lG;ISw@8(S>d0lJMdn_gN?VF0QpS9F$TVm(iC38@Hsd{>LVyE)dH_733l{lSq z5;$&j`<~qN-xpp#-W{1ZhD@VXjsdu@Uu659`!x%PVJp;4X$#RhQr6J&xwz2Ewe_ey!iDdke@$(%>0%;kn`l0(3x9rZ zU-}uw)Zh6{`8>%7&#mMzN4|PC(@#q*E0X9jiVMZHKpj-JMf+-nJIew2izpDk>}mr& z{*5ND_}yTtDC;PoH%Wt2HD%qNIQzn=$CdJ#H0e6;zN-vD#*IWud}V~00UL9NzweG= zk28Q)PD2yOX-U_=dQf~-7>^6Yp<+-^W7CL_NYgS?(=DfMuG_WM$)V(mUZB+@5~)Mw zj-L9GMkyBShw?+o?5rA(JhE@|=aR6HvNxQ0@%YY{jwd=*+^YwCQ~irdNCoF&jT2up zGGpiJq-a9f3d(O9Mf0Ry2G#2{sC2XmM^$n4ogF&ppeE2M8hqYq%zI{s&^v=Iw-)oc zT1?p}MsBe5=RA}N@rr@FilIen9*Q-+&>zn}7wG}}uAuG`ZD!A3$8L4aCRV-v}Z*FRAak+x(T_FhRa9E#1^+Ge^t_!2oHWHtyZUYQ&lrRj|+ zt8y{)2z)0}On2eieOk6(Rps@0Ii7;QqK+%7YZYqmt^LPvFcATzOIG=jeY?urS-a*- zB$>gLN)=irb#WTcC~x#$gt83CnuKq%Z9k{sV=}`JeBbVGJ|R1}|C4B5xU)&x=C+)- z@(vfUo^!m$e%U)cQ!AR$_;|hPW4r~xfnH3^XDb{PXcS$3(bv$WZ}7u{(11@@$sa-H ze-W6g>;=Zdhyi%W;l=GqWzt@z4CWYhTV zbmdUt#L^vSI~8nnYOaL^HyZ`E(Igw6qfU)85z9rajb@vIc>b+=Om*U`c_jIk=#xwx zEl%1Sjg8u0nk;Ew!K6?T+f}xzcKI>Qw&jJdIqA^4@3EAV%G;U_hdq2wsm|-1bl<)P zBxoS5tNK1!FhQzAxa7gP|l#j_%m30f-5C_28z?`LhZJB`ZTWR(o zP6PXwv!CYt!q{h3(`7eulrKd-y{SR6L)}>;23>qO+EAz_VGJc_T*e~!2=O|fo7nP& zx|SR6Q;Fs!tb!rS|Jaaa#jKny$%3^1%g#gy8ReY&sPL=ABpqQI`O>D|Xs>d!?tUs+ zi%hUWmO56N+lLww>rr-PpFw1UIG=v77;;uqSDKf^(NS|pYGf9#&%ts0c5?@{PqaW{ ziS9s4HnCYie6Qf%>itmmB0AS4khh75!UC*AR$HGML|y5uWj;D%HMz0=Alw7?bc>j` zD8F-*r7I_W*oGm>r1*iSRb0~i1W`t!ZrU9n7QVo8j~r7#kG_`ZK>s||Y#yoSe>3D8 zudpl#Rqb9$AZ+=L<}JDoGX2Nzx9*ckIvW!XabH?$*oQe)QIxQEDb1I&BbUdYAhC^3 zZ?IAW>6CQs0K`f@$KCfLEXLar%o^z?aG1WoRm#bvnv9ZX+P46EQfjp>waxD7sHWZh zFGqX-2d09C#~zO5`=FLdcGw4H7PAv8I`=@J(R*`lxw7T4G>Ve;*IYX(5934!V%-wz zKpm_IMf~;yytJ38Z}}9Z12q-}mT5Fx2AOw(2j>(fEN351H5S zt~nj8z&cJ9Xjn~8wxGD_>$EcTGUG4hINX0bBxzB5WMlnml1!jU)@{7nkkatjGXo%r zY;#fv#IY@wxs$2)v0j$7autDB#uHgmzXK_xeiMEa77ZOxvVujIxs%B30<^rKjI;)t z{QFg2-sQdkWeBoF#tZ~UAAxt8%8RgNm^>O^Mz3!{du_1LcNG23TJIR0`@JuF2A1b$ z)||2Gd$$!b@iIY`U45gKK278EA_`GNDL z!0Y*Pz5@Q8JLKnio95JP0|f>vR98+}-e0LSV_g{*-D75cZDU&wH8Wcw|2F?U^ZOc7 z-q%Q%J(G)oZis(5UPmn`)Qg)UH!ste&^GF!p zPjU_r9MbqVJlfLI(smD2KVadkXHoiC*TrV z2;6%M_rPwgY_oG_nEV#5%yxupt0r;5!5L5tVqNZwRn-yQguJBdV34-=6o3($gs}XL z`k?PE%)zUhZ9eGG1?me{2F4G=>M}l=qHc#FA}_orp(hM`T>yp&l3!}-sY_sZ*Z*~l z4ml?HB^6KB2KX7=<(1MjAjF3t{Odp-qbWx|WF<7NQHI>)jt@^P-T)jX+!G+Hwrbju zB_I|FvkB7{wxE_a0w-2mZbbdLZxD}7$NLbN@tAmp!~-d(7%r^#rUR&^Kx3WYrYX~| zG-a5cP&EcR`ZDniRk$Z6xWPd-xPY>2jythQm1$aN=d%Cxi!(Veqja!MLjA*2JFstL z{v($KaTc5*6@v@JjZYR!ZbG02BWR;R^h(tWv{p4_#3Vi(fsm0XY>H`fT6@*l1^EIL zNy34D0`P=OT`s0!g358J#(Oc<5A1Fvd#Lu_|JoXhNYLw++s}Nq zmhk)K#y;ojH-I174N?TjNMF0h1(Xok852mYpOt$I>Y>iFnc!!P%>!Kfrm=N^x>@Z= z@%69#O#T>}OO9itwx$?J7GCpBwW0U-+Zb5`2c&Q`$WiTFe@imUd`M@ z3?bTJh%=aEJm~WRhYFR^B*f`ECIKf7y!3>`6?btUzLYIiKKBG3QWons7cscDHXYh`XF-$iL>{Xguyf*Q~~oBVMPGu)fN!$u#~%FHU8v0X^yg zLyhr;lQMtL&(Bw;?m8Q4+uSxld_Kp|7iLxk%k8+oY?zx|hC{ZhKVW)`oSQB_Ak+>M zxT)9#1M&zR>&KLA1R^U~?tF{qN%VfA*8%9E5Y_W@E5K5AjKo$eK{^ltUXcqe6tPx55+pgP;$xIPK#sP8>0x)ImD$=pvnntNh7@m&Y085YXY{-@ilj{SOcabofy&FN=utJRA;CwRbl_75Pdi zE#N+F70rbYmM9y-e=vITBwg{!`Z6(G)fF*%PT?D(CqV;%K@1EZycduQ^;HpqA~+0T zzpb*a4lqb3J_-!05jD);27lZ~#SIZB919Utv+(CA!SQpb%2lzb94sGaG)djMfgWut za*pzNmpdvcqy@OBs>sNhJYPoIv2`y}}o zj$b`O{K~b@(B4E$b-`hzEeD5M@Q@+gN=UhZ&1iSAh&>}ddM~N_+LOB%?&#?_+nYKv z=~aOu3E!YlR8cB375nuXk!DC@`qYXXTnNw^+=o4iwBPd+XjO3~yQ|Ul%!TVbIG!V1 zocF0>S@R@>!h0l74-iP{r}(UASf*IW2;&*^eM_R{D1(i3+%s7>O#_j$THV= z4(#IirvFDf8vm`Y^#9UVS(o#3dfFeDR7B!>)Geh~y$bEZYx%8bWX}(F#>w|2W8Z zVg(Xfx#m8XP)UQpEu3?y3=l>#LuF^y6#)yn+sIrBjzB}AES`}L(23^YX?x}Nbay`j zztX?e1rY}|Jvtf3-lYFhVyLrVtNIhUKCss?&PqKGgxe8phC2&fE!dJ@lC;q-le@i`Y#u- z4>u6kT|+;o6_Xy+4ih3e~5EEO|oj9f)3&=#>1vAyu;x5)z_553#6k+2mtYwLYR+R>Gfq1YPDP zgB0ryIgDmQvj8P^-U?ChBIqaqKby(bc_j9tX-H@{#H`L?Omna}7!Ml>jhV`%)#eD+AP-nv3Ovrn zKG`~aDvaO2KUd#=;EX zDAlm)=23e{O&~g27>!(5&3jPY9^E^}wX=<&9qfUC_L;qT-wKAQ>MWqtyc9Av41jz_hvW(RbN!{I8*>u763g0P ztT3w0trqtlkRdD=wMu<|l>D`Z)KdxT2pf&KgH`LFhF82#0PZ{mFJX)y25!$bOo>aE zMxu3RunW zXRG_u#J*URP6l?s5C<^)8JekCEZx8KDi2()KK1uoPrhFdgZUOPM%f9M3&AB7Z;^3% z`?M2{jN#VYcMWf|WzYqbb?ysLE@k|YO+_~nClx=8ASfbaL`A>XVnq;(?w8E zpa{4CU>ZI1<3C3hbSm~Sy8%LA$a(ClCq&foFFQLs*-oP-=&cUx?d`n?kJ^`JV!;y# zAW2R(L4(2o6}C`%RpzpNWGkCcfkco7ySG6i>N)GlE4_1jDzbD322I!UkumzodY$`U zh_7oV|M5Vc9Pa-Bq;3E)DP196@P64o+UT+L0#>h7dq2#{AJ@5^3+PeP9~#-j<6AqC zQJIf2T0&7@5`(U3dvOr!aM}?#6I+tMSHDOa6y@74c$#(!V63>Q+_7yW**kNo6+x1L zDNj1veLT*H|~|b3;!Ok0qRSHFUaGr&GlZO-R8sU;=e)|*=!z^QZ)QwTd9f* zO+D2PJs63?*b~+{34~9hsb|v*W~RrjRrxWl!Y~iDn=mreBy0CIK1Yl)%(2mY3TJB?u;VFe2-^?)3yxRMMoX*xq9?nsYU*29qOrb@mtozw@jpMDlZ!P1#f&byE z@$YySbFAiTc||1tHbZZ*tt;im)8E`6*ByF?-2B6M69bbI~j$4a9IP6EFu=gfG&c?%$Vioy^^V8rtnl>osyPC7HFc>-jsf8Z%J zs7lxldLQb7ZcnUYG>g-Vc09*^x97GV+e~ARKL)zHV?+AAM8;sT!gPE3-l-O0ryFX& zuTgNxtz7zi!(xOUVF4YYlcMQdBe>S3@L|NIyY&f?9t_vyJ@IvPW%ot{%l3k7N(JM< zCLwix&>COPYXhFgxrb%#m)WQd6=XQpmko*{EiB@KS-69@sIchNIttwAA$l z+cHE)ZBoz%7d8*Apjc*sbs$&TwdSZsT3u$Fjek2sG!6XOmrzRa^!IWsyI?l&65xMt z+G0mdu1jG838y_~Um>}!h3HjQ*m~FPvDPm;ZHGs(T~FfPVWkz zmGNBpA%t8E{|{scjQ=pIln7)G@X}RUKEuT+LDN=!xc$xMg@-BgN-0PF1nnR>(a?rm z!-X+m2*C8C$7vgdipb!5i%F?kjhTuD|Ujkr~ zWQSIfa0`Gq2My)3J{<^&plXOEV`#MMu@tG~VReTA{(M>MkKf8G4lNd}owtTA94TxM zG;g3~IC#WgUlyq>qrB&08GcdfMnsSsP_=-M-;Yej_5#Wyj#aA&8|cb>g0bl+%9lP> z;FO38m=Nt!wMBJK;Fm(FVy$fi4PS>aXW?ZLY zhB>+gP+6R7tWyACnB}lA@9yd8DTeXDPv}zWC&9ZJa)BmC5ULRT$KFG)BhJ-ElQ0xo z@Yx{g<+)^0ofTn%l#6KuIA?zXs3S~Bd0;134;iFLUWClWlMk|?d&8`rP2JNscnzEu z#O2oiuC>y+*5FDO#LbMXRuuOfazCR0#2I4!w)l0!ZTYdHDI1c-zbqFg91BEG6HX(keo zeH)T0OI@lk%!3b{w1l`d$ooiDiQ=`_Vqvu4kd~!%yeg@bRn_OOq4>l zt9*-?OPIb+9$q%Q<`>%D3csI1u`6}5-c@A$?|z&J{IhIg zWgtMDfq$==p8uaVQjGEm5wA%W&y|bKi_e`?GGzjjKfib5P~V*0J;yl1i}@JHdh}R2 zE-otGM^4{HSfo!Qg)x`@D@FaEta@D^f+)lp8bXY9slwaFYZ%35sQ$?FkiG(%=(EUf z{e237l~KLC0gn$l78j>8&FC=xlii7n1I7(;FnyjIb~Rto>qKG|W7)E(C1&9u7FVMI z;RbRXqt$?juaU`tqgrDW+1XhX7O@Zu#|U8OCeTATHW0D+BCBH34y4R^u*HZR1!Dvp zN5=wNNr**II0j*_P_#kLti6q14CyQm`hh{*SVFqagAY)Oso*R3!IGj)a$*ow-*m54 z70bNoZ`24fovI0I7hQnWg@qEJ#*3&u(cN<#%10dmZr`jb$QB3q@(jES5XX+QBcSlX zlMNCr(lt^TzH`d)mt6pimh$1wehS|n)EYJ!kK*F=rQ@PO)g`ilFzCZA z_N~Nuo%$MkZ;Vm%Tb=|>mnUKmG0Xe!OEWQq=^=njWc$S{cxi}a)FKIc+H=CA2$0D} z>iGzO17rf|cu3J60>|1**#(urR2q>@#nb0ALMx0Kz7P@8~xv17ND~hcWP$!6RD6$d9#1HfKg&e zYLHk`ZsjX{=_-i-g3#}X#MEWZS}+F#*rN>;##9Z5{P(Q3&Q=)QWA7#WZg6HoB6*YU zv33<7`K3;dLTAIn!viM;<-s7Dov2`w#thZDmZDA1zi%oA zsXwv{Y}dn`YIbv@P^2A(2BbJN7d*%}ga$?ljXRV6NKu;cK+?d74KKYt6>|Q zC`-hz+T-GnG*;toq#9&KO1O0P=sPFFucdi?Tu5DyU6}Xh=H{xmWj}$W4rig=^vIf+ z3FHucmfsw5(IZbOmStrI-I8T^Z~qP9@c#rL*+~?3co1!q-zO&*5LckM_*Ulu4hv

      KO^6JPPSjXOpGq2rP(`#ySur8Z@CD2 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 ZGeeZ8(~9!jCc8jh^K|udS?83{1OOv)8Uz3U diff --git a/docs/review/dev-mobile.png b/docs/review/dev-mobile.png index 0380d2cac27cd77d453987e3aa033f9a4b3996f7..37d5b152b19013b8fe9a5cc3e852b8edac938525 100644 GIT binary patch literal 100514 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

      6NhK7({_RCB>W{k*5l;Ke=yfMB%(i_Wa7U@ zmF7gis+I8y)GFvLyA*Mp%w}l|ifN$jVHy)hHEf@~Nc6sk7sAyvz>YUJ zz1~KKN<5)7@rTJ1CarWm@MI_9TLWsy044Y}ZbgFcrSP^`W==EPmsWy`GQp zkecW2Id0GAyug2jN{*zTzAlB=H|Z^3|8p5^cbEv@cQB*x7eGQhviqAbY$1_ZgJqXP zsOJ~j^T*7epvc46%0QZ(yh|u#{JycvuN&)R$cvUqjrbg>WXT*7&wKm8iy!n9lgutD z1#-4y@~`rl6r&^}kjn7NTtD2Hr)>ldAkA|xT5b63{-0O}o{>mLf1Hv>J__I`tb#^^ z!}dRxOM^r-YAvlKflA|-NmxUka_~wrxox#j&C>Qf0JCb>Z#|w7RI(=*siTBvF~am9 z$-EsB<*D!sy42oRm?y1ohi=NKeXF31 zdmXwRWrm8!6N>ns$K(AU!t}~`|4-z0&0nzOVMjcS;N8!MNETrk(JI_q1uzK; z1Vseu@_-5*)YZMuZx(gaZ~+{c_F-qTX}9Z*A%$wx*dp!&^$MyMDnk39f>yrUlzt)D z7%_aK8So*%d2AY766ve)O!@D$>zsjS0+7Qjc3seXYbX6~1K}Xz0!3;3{I}Ev5c59B z*WgiZA?ADo89NE3tfTfzI~cftJ32|}{5t7{zBdvnJ{t}A>IdN2y{w}TIUa;5FTT*R zYlh@{c6S#jqKj|cFijyX&4WJk&U-)Ps2gaTDvaSSfm}`=0AV2r7=inj&>Qx<_63Ap8`Adq?Zx-q3E+Hv zsqpsJ87Rm|FYeA5LzG_W;!5CgBA6`W`7)+^1ijW-de?7Sj&o1m4*^Gm&S|>7JQt%SwNx0oex8RZRR2AH zXD`B^;Mds7(oh^UZj2z_XuL&a3)t`my@Spcd|wQyLEvYy+y+*tIAQCRXm9GnZ)Cw( z_)*wkdum7iIT_}unHU6HzlziH%}7<4Q&bj6_QAc{ zC|PH^c5M27kFdvR2&mnLfRaM{+f}kXl#Vmj%?D9jDnYAM6T2XVgLmTR60lE#2teDJ zap3a%at9u6(mur?RXN3x#jwL#t(`%s)!VdjA>$h??IKY#Z1!9Oeh;xKOC^oT=ts{To9tt|+Y(xY`HZ>fHNa6(uLmU>v@8g6 z`=z@1@aNG3sM1+P64X{P?nm1~YF0eGeuLXIyV>&r)cV*zuYL`_B=vi@DwfO6>$eXd zbRfLm*fHxSL`MstZkLYTw)wig1?GE6!xW9Qv!AlIC^t*_lq5$qbCih;fo(3z@3WDoGeglL0>!49S&o}W-F0paT;yeb6 zD-yf?@LAg>?a*c>rpRmmzwE#QNo@OZ3HAMN3fs?~#k@-h@9-UA`kaguG9;-g!EAkc zFn<%@b9w#&ZU8#Q_sbhXVv3xW^{n5?!d&Wb^;a{%!9DOA6MaC%vgmR`#zOV2;Iu{z zxS)<+{SutU{kk<7nmYA7h0nUr{&1>Dt~;&5m+syj(A2`#GO1^o@46)VpQlcLa9S5+ zs-M2Q4bfAat{1ef#G~ph+qT@~J6_~DxqA!HY7#{* z4kL!Z(Py~yfoOX|<>AsN@uSK60y$Wx>O*EcbnWK& z>TWHv*5jyX^~FcNaN>KSNxvK;AfRp54EJJ; zaD73yi-OY@?FGg#aJYsUZ|9UzWnr)BMDT$CFKiOPPX3zU$%4KvfVPPzfcA})=oXy{ zI!zzN>YMoi`wO8vU1L*hhH3yJcIB{qhOfz$?BE~uEFff_%Z8lq-5_2_Q=CAwySYe$ z2!oMMveRjjw>?3W(@t62E}BomB%4N@bQPAr*atxNX7Vj=9~w4WhJ$3W!r3r_k8fwLjwNd#_?NV^%qm=+-CsYF2MUm>IlavLg=vlE zNmRC;lZNeHJ+afvIBm_l4DEFVM4DuOBRn>@us%dRBK!VJdL=(dz)D6^$ND;EOsxYU zQfKa9#KlPbYDQ&}shluQ`e-{ssP*|sa2_4v+T&s$<|VB`n<@&q46+&`KSf#I=+V+c zv!UpL4@p|dp0qu0;YB0+(|a}$vGJ4g&TpJSJOTN+5v+^pF5M&x7?pErd$SYq5$Y%I zI@18~rWpFiJJKthfrRC8n}73wS6Ge%q5nf(#$_U6?yOV&Kevx2e`I(ZhY)Z0J|5lE zWPav;731wSc1N0P#UU)#?gPM2yFH2Im#OVtPBSDK5n0sN`3-2g99{KCYzv<4&~EOc zES)#u;Uql1fm6^YOJc9a+(JsE^IV?c?~q{X!}*hqKD&=wd)cyb5Ocf#wOcye-b+-9 zvN=UiUvMeC^H+&QtQIa#!ZE*~6VCfiA0gF;l10MoHYLN<2Px`h>XM0TR=EBavaM;E zv|FL#hnGr)$NQH%S>)xX&>h^LEQvZKu0B2MgpxlHx_Up#N4|y@0f)AHf(&blc%)=$ zyhejc3r3^PDD_lC#z>YJ>wygJo)JgU(vQI7l+MRuSC5Zf@;wmt_NSjEoSJgKq`WK} zz(vTcVxKU%7b+9+ZNhP?vq5QvE0z0|LFMu%o0*dGwe!9m z3LR&pR;VRmG6$cPyZz+DZ=)n1|BHE-O}JsOpbn5#6L00ZkpE=4MAvMLQ_y72q!nN@Q@ld0? z_jRFWP6x!3k+VTN)$d}k0D~}~<*bXT%xDq}VKw}Qb}*7#+MO}9+#!({+f3BT@%tna zD}hj;jKha0X1SpW3@9=UFvQi|;a%R2VGlz^GD16%0plw4m4HCL)ht#nmrRf~wDbI; zxpCn{{06KaGQ+dbEP=1`%oGLlYD5HPSf_))qJ9~bs`nu+AyI?wlRE}ge9AnfvajiP zIGtMoVxwrCw#Mn?F)l5Q79}!=Msv)stjA(`)xR0A0br=g^Z;$(tIPFxizdRdCt}_h zglo{|>oI(G|2dufaw+nt&j!hUrEoGXI~TY9cSDyHJ5rd<5Iu_II>L+smzh));ZW>= zM#)OR%EcVFu7qG7bl}1dk1JWl;9e!-E^96>DdD^k)11Ba*TkC3fK=7GDEKn?`AUBM zw3yuT0qbhgpTwUwxj-A8&gHNp7Qn)(r0myl2C17JVqlfXwS>$1}~xc&oh zM!tN<@WM7&y;Qj{Ey8`InMr7O&5r)?XULVz3rQQuSqiZhiIg10!ynz$JNf}bvIP|! zypOHl!bFKx!qC=%_DL@2V_*v$L?Q_KlKUo5z8Nd!aS{K- zn!>cy3U~}0L~igdh0+?wr7&Y(AHo?=AfLWnHSozT?;%dT@wE(~W|40I(zP-W@4A)3 z=rf_Xdj-(b?N@^!Fj7mRM|DkgAwUT35FDMPHEXuaH?xVXF+2Y0pE4J21Mu)MTgMCZTtLp+GXsqyJ;br8iXd?W~sG^3B{!7C4oQoKR>T{p+ywwqRuxyb0hNs1sra=Wl9neT>@6ZD6^ z&%R4qI{s+ZW&ke=`3M!)8a7SVgIsdDsqNA&L@c?A)*YRf=`!+!(h;ABN6g@MRA4z^ z^DvMNuzQJzPw$5;dNk=4NM|CuST{-fN%^@CZa5Swz~%g0RY_=3XLv+W0BbNDYS&Kw z={dB{WcD^OE?n?D^C1&?YW>#%gU!TO)}z1N@d-? z-z*dwhWQj+4smvTL0A7y8yZXfdfp>ax8njchf$AC#UIpC@XW z#fvxaR_js9n~#gci062k^$)1(x+fe{eX0xgT#d*^`*@Yg>|o?^S_S+~_>l%Bf!)wP zFHg!ldTkl95iioG%!@q8eWzd{nL18pg3L(4hG6m%p6Fh}9(k-#KkmI>r$fqdo8>uQ zo^m*3u?)D}$i!P&2%Ar{&Th@ttb8&$mm0nH`E6o1<%xu*tnmzjuEzFGDMgrLbbE)^ z=-||CBTGW&MP>Q)*2g^dpY4@tT;b)rRh@wmQT7(XwW4LyJnmuTWCzzcqFdK7-*BTd z#v#!D9N>dTNpZID8a^JEfnAJ@Wp&QhE1T;O`nE;>VAJgW8zrB<6pf+56t12WZF0Zd ztG?8y6hkzFs&&McjChDLCL+!GFrlbJ>=ia%E|xqa=7oovDha6y5F1m-$=xI%Od0N& z)<6z*?VV@@`3X&W>9j1qZJk5Z`EuFlu?ZHZL2B(paMkeML_=}8 zaL=^5YZkoLud@Q8KhseYX&mq+^ zGHM*`DLLT)+{a|IFF81a>kR|>GYjW?lwWRP1}ldT<5|)lbv^7TRCBmM41>x}xS74d7N zE&)WP|9r~i?8`sqV9{$IUn8XM?A$BVMa%fbwD(nwx;XM;x8|iJzKD^-rjTv2itaPf zRD5OvPVV^qw94j6StIrK7o%7Dq4gwBWpeMB2*(QL>vQv@RS17SU;T+|BV=2%o=Y8DRpB95)hsL}*GtDU&Yh|+?#liM_`4E_K7$3^K-pm@(gsB8l)@V-LDPo_$@ zRhH=A2t`s6cj)}1OEl}AJK;= zW=~D0cSd=to7Z8<=y1oCGO?T}KqC#5a|5W=pMb6AKmQFp@E+2o6^XD#Qw?S(+g|&@j0+*~!xxKE^$qoRGiyS&Rb}KoL z>yi;a_-tBDZjY>4bh465o`~Y97}**U{Wd8rC;{wuzJ8!q_NjKB6oM~R7S$dx3OmJE zC?7oeoOUDRTcJ0!ETR@)k4*< zn^In^zPZ4qA6Q5E7@L|#1^fd)C&%o9+sgv*Yk6%XN*tMA;CU}TURS==uQOpE^WYn| zYO9k2Qpl#c{uZlpiWVdPw>&nYKp)g)IrOf5hvjMCK^oJ{c`bDh(L?5!e>|Z~yp_K@ zO3ixSHaDR21I3d2eXj}mcmF{x(9}zk6)K>Xbe44(Bp0@Q^-^i??fNLh^Q87+vtTD$ zwg2V(FAr-~7$!qt2nPf9@()VW z^}2s=1=%nTg6ggZE;bS_R;iWO|FOKaaPT$8KRcIV;l&g}^nzo;JsJmZ@6RTk*L#eJ zM)dCG{&!sfuaqi8tbqM77*I>AN=<|g>$bC>^lB(3wePn!9LB&DXOW1a3BjCuC(!X4 z=);jKFr&xA->X06cP$$Tmiz$M7*-6F7*b~ee8K<)K~O=)`8@zlp=P~m8Y`5`3rOwZ zyELl5c{!X@4-e|p@-Nj__7#pIlwa-s?$3fDFsAKuxQ5~^%%z2`2N`J>pbo@xj z|M+=RE&9v6agoeU7GdbES%*V65kE*Z>Py(Ys4WMn5?&hU4{do0Yifh#d;4;9kRkGGTEDV4l1)yYMG}?&3`RbFgXbYpiThzNC{6kH zI;%*jf;d4;%3IwdIoX6|L9Ly)hzWbKoh%)K$VBHFL6JWf4Cc9>npyVcx4C1BDSCzY z+ySUz%%O9ZzD|?1ry}-R(#Rm)B5itsi7Ki}UHGHvU_On-;p9w@lBMj^Ct5cp{_N?X zbc|JVnjSHq)I1ht2S?;&m?}wj4h9jQ9@a=SMmisW{31^_iz=s$6&6 zg8!CfX9%yQmAAqNcB-|jCsSbwSnw3H?=kY)Fvo~U$jB5_Hu|2A_^}qgL_yX4WMAU; z#Zh+0CI<&V+QiColx{D1G~f7}@Z-s%-#U-I6&r#cs`pGZ)-89BH(HZN=T^dd(0;GF zfEt{;=fO=X=AXaqd$zm;M;^_-F;5)rBwa7%`Rqto_ebtNw{$XbZZh*w6lZ`Dw%8DJ z^aWq zXzu41<$YM3Vy?mUHbjV8F6TO`q)Z9C1aXIaiTiSwFf+kaxY!_U_ zN_3s+Y?EEPTFtLBz2g~GxMP-f(*?rtGDK!5QrpbRUob<3>&s68UghXA|0TnVD^1}y z>Y7;uXH0&+H=T-E^_U% zzgGhBt7jxX)>Nn^e?iTb}jv`yF0vO+4-A6I-&^P3Zg zqt!p6M(sDuisq)KEe|n1-;{$uVTmQrh%3gKM>>mDH9RF+*A4)>e*_yaS3n^3?kRVF z=n+)^+%M_JQ_>ak1oTe9xC+`7i2N0FlhQ{4lgj;N*5|8 z+pDX%Klg&h?)lC#VE#Z9V4FR2n8wR@gDK%^`uU~Lq$-tW7N=buYASTw17!pB1HTn6 z4~gYP7(Rf=#p?*{&xPLOQlMLq-p+Bnc-*d&<`2wx3rLIX8LjtF0=^9x;gOP4==^KS zF9Wsmc&;pN|Au$`S>!=)0W>(z9HlU6egcLf&DIJg_dOaVixwT5N1sgR_QDDH|Li>s zK`lA-{qY%Yog17KeLzi7+`BjK;#6{B^rt-y?E|Q5c2{Z5CHU=?QcRE4W`st%^KEk40)U2{-zf#G{2_0JgSqL5Vn z4Cb8>A9kb3 zB_!JDSq8?ElhMKw!-XTB67mHQ$*|+K0fcqd8O6`K3Vq^BUjzB8G7dC^4mA%f|87EQ z@g6_D0FDy4l7C>x#}^aR7g6HuplGjQy+!?IKyG!V&vv2jp6)LP6Bf2Nn z$lVK?okC6^g*J{+y*E;u`(#d39^!bPqCS%ecASkpyo5@;+6+z|_ByJy-)Cu5#zX&vuV~%w z4Y{Zo1oNXVKlw}7H&D5AeI|KZ+1J%4W1fQM^8)}|T)W)5Z@TC~QMU&*iRAy-9pXQ8 zJv2AFBx>8Oj~69wh^Y|y5Y8KYU<;d>SlG=RSjjFlGzdNEEubHdAQxg~cr;^J{`r*) z)$1(Xr^iCMf~u=DsE`)OhlsY>eGnNJXh+yjyz5G{w|QR@d;^F@=f7n=yz8T^W++?0 zP&KTa(GKj+AgeY@o4S$8Ry@?U;Mb`6F-y!qsFy&8->sxc8ohJ?_Z+Fo+HP z36e!cx(P^Fug7GIN(Z-qer_|7R^|g?ih#YcEP1+ z8hu-1MriZj8gYo7r8Z@Xr4RI$`(ddJtmiR)*xmxMgr;gncNvXrcs*VywHRbn45v8P zah5b3Gir0JeRj=9M)Ov48kTyRko5t}JQA=%D2eDvUciLlH_-Qg$Xb@Uf zg^tIA1H=CwmJH5wI;Ya3^3mTd4NuR+92H$0q5WcB7)IT>&rC!t^zTO*E;&*s=9F!_ z{#v$gH>#zkF5ZfpG2F9Y-nQI3c1n6j__0a1tIR;=6A_1tjoEUVDwPeY1^8c{+r_9m z!E*Q$6kr7l7Rb#NI3XbKqe-mv-Kg*W;O+K6e@g+@=D%>O!BS;Q$o%Fq zh=3y#E3!c1SB6sT7AbJam`9Mb0uwBK3OKipM@`hl^j;aX8xT{8h|G@hUG$K6aylyV zQB>;Je;ei%mrYDizwlE^%kUH|>OomlhhLk+Z<^R8Y)+(;Xot~Bt6k6Jt7#qDxXLZz z6(Sm8mD<>>kM~kTkVi}}esjIdcSw8OzRC7UXRv4ooQ+Nr{JmSAO!Fvt2{ZuZOyABH zhr+ULd@Z3V?K-2{i-)h7=EK*$g|dIh^#*e&VwusmnESV(vsZ*~r{)h>(?y4gM%R3v|H){*L_@=o&{R=0 zseK3H-;5`jD}EQoyFGgbQuqJc5dR#8cq>8aenr>Mrk{3yL}qQWYt)$_g^4XDOtIu* zXNPeDld5!FM8YRNKJ;!(7sg{894H-cfg+GTYAC#}k`s+od7)~n3LiO;l{uZR`eBQ# z-yZ0!xZfA196an7Q{&wJq;PfiG3Pe32=g_?HsS%Yn~fCo>M`3UF`{u%b!jRB4$WNt z+*;hbE~I5|vl`}yifDVg9V%R&V}fK$;dhtm&Dx^ZxKE4@2$;9udfEE~%k*K!$Q82* ze-c#Kg`T;bV!D=B#gScLDl=JyVmmLOBk-hdh)bxz)_Y70^8Ie05ZS?LLSvlXf6&@@w=uhK#BQfDDAeC=l>*U>J`XMuwjuVdpCGJ)R=Q!(+*2GhV#VBMmm{WXp(Iu zwE@<$4Bu{7{_4iz#!-P*>%r;Re zF&WbqK?WaO)z~n=h^|#!*S77I%Id*yMmGd z4s6xTYXvxn?+-Np>%+1=aZ{+Eq0=1RY;y~2F-K(DiE_v|QuGMrkTnY!pC6=(l@7B! z8t#+KVkH)inxaXIQJYA=h&66WQFKUl7um#;TGYJM6wVFj%W|UKRu|n~Q+0_;+6exq z-Mp<8E1HSz|6N~&)JoVtd$i|b$cETlnM>wn@by$RAp-vZ%N64hM5&vM#?tLi&g?fn z(&d(Kc7$`6N%xDIP})4o)zZ||;kL>&wQ-=WjN|{m1zls~+G!^)(cUi6GUYH0MQfZH zd{fM}JqhMH5rhu6>6^^puG0`PkWm7!#{hJtS{Zi?w-lzU13fm;AAk$!y+?)MNW8-1 z$glO?yPb}G-RT^j8JS1ld$Zt#^8>R$F~L?B%QLi7gPj!ETFB#ScLi!J{a2~<8o~15 zT5D{3g_c<<{yGgkKNd+Lxe5vvT)IXD$kfNU)KSEYJ%QP)2K0*%Jq2heYbVx1Rz<#F zug-q)1j5oh8PM$_(9~JoC0m5J@h@QEgP}DUB!umqq9&CKHF0GVAOs%nl^nh!(7MCy zqMbe(H`=cf@7^@giOOQ~{|QhEh2Fx0wmoqOq>K(7Y4Cm<&kk!zeTt*Kk>8A^o zFhU!lBy~b0v2J)!?Vu{zF0|}(uT1*jK%0YGsNM*|_`Q~|g@HFV!`bvoaj8$t&ECr= z2__ZB_lWYI8U+9Qs&F+AwfQU>J^LypcEqG2t|SiI6L*7C#9LEHwV~?Ydb~hnKJQ9W zrV@X48Of<&ut}*`xzQ&j)2bNCF3D|D;)fc=uw3Q@GPFFSfoKpW$=FO*r&zzKrt-J5 z%)H7%QT0t_W!&QA6`kQHFVlMbf>2)8Mp*;cA_F7?2L!;}m9Zv9D<5n|uIy!P526%otp z(E3*~+@Bh=h3iZzF|=3Ij4JSXuiIr-c21$0{eSz%sw+%1w5zLch`k$VXlU0^M<^!R Y!PUW@N}jki{0W+-s-8-=!->HC9!VC2z!A+A&Fk0c1@&U9NImghQN$35(d#NIN?m` z!U&E3?><`0h0!Mpb>8TmERt2t75cD4v0HQ|j*EwvyiZZAoW*C>AG0_0iJK6SQ&1wx zY#{EXpxf?XB29!@8jGGra{_hft+lw*(UQQIO_e+mzv~kdJ}!%4sbh=5gzvP}DP2P( zM2o^cm&U49RD%>Tyis282u1Mfp*XK(RC4RtZ!ZNt%Z-WpUY`_5hExCc zrBy?Cw;`rc&7ou994dbqC^Rl~KAJ7ys-)%ogLl^VVp0}Y5W3i4Ka$4!_V!{=IVE4d zLXk|)o?6r>kEh!A=4_$fRyL;{PW1k$_4x7OYL!MHv)Win=^`Jgqt|(B5Z667Q^M!( zjE?8wf&~O+biDmyN^yzq7dJ7cOs~{)CZCI4lR|i3M6E>knca%KfJcFV$NMwar^g4; zhYP%w0NTpZSTX^ZW zx~gI(7aalAu*GfCTSoA`-fk=@e+RgkdH%QM*H?MIXG3it&R4wuu&yuiulhM}^_B+={$y`kG z>7?hm6xSBIY&`jLoy|{r<&RZ)1c`N91oUzF=;%D26ar-*z+*x!;JV!6ZY{=#!xGd2 z_TnQgTz|D@smi#>-9f0(o%|8u48s5IU^15npy(Z$x8Ji4Me)h9k6`kG+o61xH=tY@+w&)oMUz^PDjPlf+Xd4_0vK z?Q5UQgJ##?C)VD7_rcL*a#a_%@PGI_i-|?j`FLxKhPM*}zVqy*;576$F0>_+Q zXEs69923%|RCm(pb-HnuEJ(<#jrH8OD-eD);7QnrWANebO7>+NxI#3+pf`n5kz+Zp ziS9%$YIirv_sVD{-?pT4};`Qql2Lv1_^w-*o{G7-DAFZ z@PwP!0TeT3qSf=bt7}~%5EG~Qi*~cicCN6`2K4@PfWookX2*40nBQ)$N^xycv8|Is zmYBWYZ9G>PYof#N&gnFPzaLpWhJ$?@g-W*q$x^Ct_oFm--_ zqY3bQpofp7GNY=ZH7BY^IFGP4uFc(FZ^rizr9h}^I~`X$j?m*XxveA+mmv3V3r&ek zHxQulcSx$H!nNi@NxRZoSdB$vcAM-tn04=GFqozKoTewCP@SeL_SgC9UJC}%O?a=J zNMc_Zwp_#zb0;9$qn+Jr_-Ta^Z6mjDGYZGB$>_C?6u1ulaU#(XzL=1-KEZw| zSoOnt>b+`pHizG>+k7OstX#fkFv_z7l}%l<+h!Od-?a@jq866x#dNd1?PVVcT`vyv=_pchDmF$CKDAaU&S zEou4IULGzIvg+eM$15oH+|swR1V`yx=cBi$o!G#ea*a^<9&+kk`ZydzO1tVc26?V{ z)zGSrhs#C&6)zg3{xh71sD+Y+Io0PoZY9B7`Un&WPblbc*m2DRrSYzL> zvLt&)uu7L$Uo3Z@Vwo&NEu%dFRuT91XXO%=-Ah}j4+Y{RgG402% z-rb*%XJIy_Q|>`BCPS->KN5M}bH2g|cZRAfLWnj6lG7W8)3iIMWtusuFj(!(gRn4= zi?^SM?%c3P;ftq4aQ0&y^Js`C$e&L-OuV?Ge`v6tq~@U!cva_GYx!faVDuv|W-MH+b7%sER@Pfv*K`6_ zeS<%N5%g_lWCBF5clYOq$g}#*s+{mTZugnVFhX#6&66O7^2TAAlhla4d<`j2bE*|= zAJC{c4&2B4>{mO4@9`w$uznBnsd#0(1TzX)Iy0`C1x2)oUaujR=OXK)_)srqXvb7J zPluO|!VpoZe-W7o84V}ObCIcVoh0p28+CbSpou|QOLYCc@5imzB~pY%I=B4QKh%Ah z6g8%-8Y;FgAS>=ZmrY-%LrybZ&B_0CIbQ@~f7F%YF6^CIy}-wh4zy~8zIVS;mW@T9 zR(+0z%Mob?Z4!}WDSc&f)UiR7ude2sFX8B0$9R&Eqn*F=YLynp-A*T-P~9qX5-pCB z>hn_WN9T&&G?R3!;cZ;?e_fN|Qk@#foz(-Vj;wj5j)p9QjjgaOn==}sM zMIMW$mQfNv?F8Z3fK5ZN8rTjhDUA2xR?VXH^gBLzZAg+E4rs8 zaEN!ts=P0zQFEMQOr(k-EuhpBx#!dfDASO~?I9aSBrnWx);7T>W)b3d!ICOA$wgd; zU?FEhQV{Uus?bh1e$m&w$IF3`CQHyx=jSgJ1CMJmGQB^|o8VTdqo_+RkEV(P2BQ8w z>BA($(wnU>5z_Oj9}z9W-xMFxALZ*Fym}Rrm?P}NcP~yv^p1-rB@#oXK2b3_dH#82 z0`aA*2sP|2>3S?q0f#J8a@gh@T(W{h^fh#2kS~j9^YbuO66q9K3tCu^V`wR*Gdq8u742)~3i3L#CDf^J z)fgUI!4UKd`(jMwVdUEQWR$~GA!5<{OSu*0o6AK<^>eP32$1)eLvQ)jkyT(UVm5{F z5Xas0vPuhLtt>qKQjfLyc=}K3iM9do3j-wQYLw7{!Q^f+%q%b1g%_>r0q%SObETvXf^Jcxg^%H_SmLh96dhTjq>l zD`Ab(H{hPql@3*7X7u@k#qbu#G1s`x0XK$-|>fv<&&v>#%tq5x51B${*lFx+M$KVYK@iMCMKaM>YSDl*zPrE^Rt8(9kIS^2vZKi zU07_yORi##b2T+C;JTv(y(9tOz#Aku<*50jYE6fOO)k^~nk6Z(h&SljzA$#bgE>xX zvRO|=d=n?o%9UkNNrr_C3ZP1$XID7yPc!MMp}pD^cFSISDuD=10)TrNBHT!{Ul8>M9ZNhI$R?I zPtc@Z6Edh|cZDUCH%ygpfE=XvWphy7Vl;zO|M;rEnO;x=BQ&4@JL!L{t^FV9fd8j| zbcpO%#ecDY|EqTVfBItn{{{T_ci=jy?{RZypmU5uzyd#=LxZ^QQ)puVl;3mnCa)oH z)#W6>C(4|g-vHNjpq`1G12FF3 zn~JCkYl=t|UxijZ_UDUA%>-C|ywBI$nf|={Le?P#+GzZf<(>04ve|zRMpOFn$BEC+ zznwFT-CG5;Xj#rAmq+bzL@B~47_V;bGHGrca%W-Rx0c$6;@dNqG>ObU`9IbzU))_D zSlK?l+&$CjzrXfUC^`{M>FOBR)EsZ`yvVk*lC!t0SJG=1!+HK;zvcYdz@zP_yQPnX zitahVC&F%M53y#YV{b2m8vmeLu{YJ~Dvj$uVS7Fuj}eDH6(C*mYaiZvwyGp%gpY)d zsI+SdmuTfa*;5FaG*IwibV{NhI94p3IwDP%7_by&QcI6YT4*4(Yp-iE!XBRSqq8d# z-reX;_5atGV(~ejAZN#$)p-GHy`9CvrT2fqVjpEP+nyXM=g42v1i0k5_Pn@-h9Cd? z+rwKA=^+%~ggm#*q1cYE-TcogpK{gsDj{=MY6y3v{9C-gB3Imd+c=oXU~g3ft@4J4 zGbgux*x~z!cf@Wv7ON1SYkk6ZWO-aIK5A7QGfbRE5-D&#sN3WEvveT(_~|No=25tG zY`3;_423bb4Jn-<3gQ!#Z;P}P9JcY zq5WOy2vO$zq9SQiA{H-DQZX|q$QAc2+2y`C)HoIpTqj9f3HPuQGXCK! zWc7ImOrhiTr>f@uHy_JYrU24;5B2KyZQZ-?{_(qW(bxaS(Yey)iUDQG`+|%t%zksZ zm-k6-!eiNPNxB&uc*4_Gmw0Y*I_`@BsU{o*i_O^2$6~NywKbCP7oW zqMoj@S;GnKrV@r#0U>;}sOwT|9ZRxwIdtHv#`4|M5OV6mg^i9{Z3Rom9jaDjS3dri!c(>pQHVw-s zKJ!jg`1RBH^;VQ768E<+9*R1hTy` z?(x5sU$FHx!u5><@(^6|+cFDpf9-s^rIz4QKf z_xaoLKNT8~@LM^NuD7E1BSr|z{EnRy>RFAa?+|8NcSJum2ehba(khoBtL#(u-+fam!74^;>_+umAW- z@4MN8!R=SaRW50` zTO8*%P?T?iNKr_e*1={qc&@n3XLh7>c?&3Maa{7G*JsWX$&k#cjBR^OVRfnqI3YdG zzN7)oPBCqy2^;IAraKNoPd_iui;K{`Z4F-* zH8WF)oBapCCe;5wVAua2O_s%6=%9E%hQCv;tYOTgM`l9C<_3NxB7MrU9Mg!ooO1;hN)b?95{jLB& zJ)401%$EV6`jN+G$!BRWgVPMaR+rynIRdVh$rmSoDm%Zu>&%VKa%f=!Jf5D(5rF5m$s22Z*0KRVWv7%QSg%#Ckz3?FM9r-#{8wwjb$_<9 z)A9!i-vlP0^zOo}YKHD0ik1ViXY|yFz3)`qf?`7wRi#LW~$v404rr|W$&2sGc0JI9b zwYVt0`Z)ml0KT&c*zh&YUt(Y}Y|-Kqy7Pkpsu1-$N@@dXYU*@z0Py_P{_4Y665fwo z77Em@p@1nq0{Ruh%}5^!f0{7n>=SymN~F#gVL6`j zI-R<&)AC)ndh~JU(~6`Px_IoSF=;1EFj~`ovf69_Z034NO}oQ#%j~;=cChI(xFptH z;O>)3qtT+kYAr^>5Zk=}z85kVDzvR^|3!Wadb4G#u}tpYpVEzLL_s4N`HpqbVmQS) zPu|-G+-*k7`~4tfOrsCmskvE&Bjecu$$&ZmXrDj%56znmV4o?`^9(www-82FUwJDdyV*S(~j2Q?!? z;k#lVdt`o9=%F{yuXF}R0ktEpM{02tEy|zLJqmtfE~X@aG)K4{ z0+LgtkQ|V{0PnDZKqAGB#V~LYNEwQ((PPY*;5q#C0bq{AW7sfHN@=jW2S?mIm~kPB zJ||)(X#eQ!)Ytp+AX0Zu*xYo25KADkdVt(Vsm6NM_gr~mpEC;JL9WNI%gI1*A{X|i zMGBu}0-!XAT-VrtEL)&fI+~zBg}&DdNIqW)@FsZvWRo%+UI02-a|&dcBvIGAn?AyK zLQnVS{X_UJtAs{g-^oeV17kxm3B9E#qWO)x;IiTelNp}BT*((lR9%*dBa@e0vWfok ztz|z|$Eezfk>v8%TSs0M?RW#qNHNbQx4XkeSFQ)UM`9MAh&`0YjZ3a>SI z|0Jl>Y~BM_!bL$~;Ze&UwlR6|)GtSBtg%79H~$gvIx*%%M`~Yh-JUMje7OBf%KJX0 z6p8D7{rj03pKE!sUKCR$$7H8e2gjARW_dZzeKHdDz%R+)19*k@Mv5t(8Dm(5q zXG_+IELeb`gaGG<%DLoLc(sdBNP1;s{VZZ#Ua(tLMwX|Z)Y@KV;D^yaCfyc)tsLZp z2~lwXsd{jN$vTQgHg1r-czea?_-~cYKKhKjWUn_(b_7rkeCC+x5`Kv9Bd}K=D3j49 zAva)Gwf@lNS+@dM`~dx*bYiDy^c|X&eHMA_NNG6Y(f%Or;DC7_Rh~ zoUzJBo}uIl%Z$ug7zb3e$$pMUbvdC=RrEotL7v5#z9-B?s$eXGvxgSzV2LQsxy*G1 z91#<=bEk`;8J%~^;bI(Y1=V)FHu}hB*Yj3+>%oJ?%YIkO;gQ^NF!wx}WKN5WR#Jy1 zcq@n|OD~PR3K4bxGvufq>ffIG(~)Wv&(Fc>C!iZ7GPzmSHpFL)LwQf4n!z0kK@)s1 zs5BB@2r4l1R$aIoV#r&Q2>%!-ZY6!QELj1!ml`xdvnjf*7(7SN6JF> z$z5`^2xhKCLP>w?@=o&A3M38;s*GXIEn#e8T*Il%;h+1d*Y!7#aT}dFoDFCS_zl@x zVufR>-8fx5e&={@6jS|*AW4GBH9I~VuYOVRDh%0}(xMeaZrV(9Qq=f0;#da=$|W%* z-mr$!0ADuP5}TAysk@=ZVq{8ZmuWKu(V5x_8?~waESZY&U5D?Q4b}k2d}w~#438WO z=VgfKk@GfqjsSVD*f%cIFG|UWgqBH!5vA@EBbO{?dZpVRDN4QiY9>ZiO%C%#n*GOM%K{%scg%+G3r70y zO9v94No|ijI&1$I3m9SVG$(cJ<35*KN3$|+$`zAqlV$pvjHP%JpGQML6wTmmxIx!1 zLq1xA4Y{K;q2vs6z9?LDpj-;!sj(jzl^|b4L)M_AezuDy)8`j4f%e)Fg5q$#k$YK3 zN%OZJQU6e-#W?oUAtTGsM=8P#>=C2Q3)Tk3hJeQ#t4(Wy>M~k-79ZraIgiVgAfAvr zs~kah^Byh+3FCdvg&H7~IAZ!Bg9^g;cCU1gf{#dhlNNbbY&7uhluAD&Gu8fdN8GEhjMs?P+eN(OQ&WGLYds~2+_D>H#63XyyGN{ zuT-<9d-W-WM)k;?1DP4_mQ%5MK@Mdj&F~(l;@aX-FegHHRt;*Jc}GooiZ*(W`i=cD z)oYB8$@Khfoq-Bv3>8Z49-D~>4QmM`@+!o>|Fnbhb3!b{?kG2T`R5p{YWxc6nNCJF z2Rfq9Dn~NKR=@l?wLMpS5)>^)=&)z8ki8chbIH};fkWfS08x`G7jKD#Po>ImJyJ*# zK0XFIn0yq4!Sml}&Of1XrC zP{_@2e4!U&(8f=!5t4!?6nB*?np)1Iy`PZy4y27{Qt_O{vMv#pmkK675p!eMv=~Ig zZ4WbrRLz@Sn6CZg4UuLv82cVjecqxT@>eA|E*;f;VJnju-kSpRdy1E_sVJkJVsI2} znRrElmIo}NpR*yUjJB5H*Hpg*0)z@@4*CJDy7AX{`e*%XLn`-W2*?;s?7i$Ydj|A> zlzXf0t2^pQO;+TaaMmD-4tPt>124tLzdyshr1mgZ*cG%zpA0@)`yn_5s}$4Q#F4hj z+LhtU^}yLtYV*UhpWC8fIz6%4K+wHR>Z4t^d)WvI8{{!89IsE*pvING(Yh&mRM z>{+oDD9I;7!}~)ivyR)PcLk_fzbb^jSH*ErvW|r??yCx|1FYSwpb=GU<9`} z%>7d%Q(CGEQeMOLJNg2pUD!%rAdA;F%`fab^wp5a7h~2c<;8_Y-wlj5H7dkypM#8I z1{>ph@{&YX?5h2hPF@{O4%{a{=ZMOC@t6fk+l(!M$7!C^7ZQawt|vFHzwJyk1*p5;kw z@*$R}4L<%T^DsW0|LaKYC9mEbrVvbi8f&EL>|RAs%J$>A+9E;RuiXp2(Y2+>MucI% zjA9RT?5+p0;xpgd0ekq}WLfeLNWy~`D9L%SzJ*cNTFs^nH)CMv*d*yIklH$x@l_X+ z&qiy5b4zYh$J(OXZ$kJb|HL8M3r$L;U3)I{)$i^yLk*uza&-cJ9-fTgHHG5xVDOxd zH4Xz$hftp6ZI?*hrp$yxfrxdXh~F&{gHac@CcX18C=j%`X1_sxFw8QLxBnrX|+cy2}4(%6d$Y;x@YNH#dWtaw3gD;c<46? zLce5jt1!mN^a|L?w2Cpy5mM#qYHzv~M_|d_Jz~P%(%bF&S>;6$aL-vpKc0p~2A%Lr z`C`5y=y|lHG!zBNUK3LZbbs+m>%?oapaogESH-Q&Irq<*kiKH(ncS4Llqti6L(@7+ zt35-)lChvHxfB2Qq-X6w!pHre12Sp7&cHc(QV#v zNM$<^l&iF!5;-J&F%%nWRq0$935+HtMoabYCkv5()Oid|L2N9$hhFARgjcn=|M`{s zN}VK4Affs)q-z+}o^S={)i~bcDV`oM@wEQF7ZV*x+v9sY`ElOjRn{s=+O&20PR)K! z66*M{4xC(|3>k__b{<6>t9mAAdPoo`(TnY4$@YotPROo|fDQp-CZ7`m=UO}}%{ePE zyZO}XV>GErU#@r|IQ)9A0yFfk-C~5`k;bTc=QnUpiA9M3$$^JTX#>N`1=yJGE)OMx zD%&shul~GtM#iO|gxB!dPSt72BZ}rn+bmxMW-9B@-}d`rlyDL7Il-MTWl*5uxsml@ zCM}_F6W-5v28gmsuPl{pY;;!w`y9RukYX5ppZ$-T=>A^>5s7oFGA?EyQoZ&#U^HsG z4)rA#!^Hqi)!klc9tHu+T%j~(QInK2E}HMn?qB`}YsO+wKG?zGlDZREoh6fQ9A( zNM0)0P)^VbM&Erk4_F6((Wt}s!&+l0@`(qqZ~@gmYNNFMg*;BAJ*@M319NV%%A^Mv zs5CEum8VEPnI5#>ivKF%+rl##OCPABzr6WUa?rk&I455LYF_-#BT&@3AF~)VoxF8y zuLp+<7@p4Xf@7RlK(&^vD)Iq@z}X7DY4()%n<4hxfVU7Oo^woSb z@cw{?rvPvZGSIBEns^xVI&J=g8?TSsYC&z8vikKc|5f7(tC9cB_V2s^|NHAx{E^J? z=M1Kc%KzqB|V4o%Ix-*)Yp*g%Yp~&9uHUU3dh_T1Xcfc=&yp*0pwt>WV z;u*xZHJZt7tpPGHQ(pcKh($-*s-S5C(S__&b*sl=VKS&Tjr_TIa>utY7`H%A=6p;n z;6lql@!De)nx~MaQiPB#19KSz97UJ{&;M%K(|$q)8E_Apu~MreU??1aX(J5`mqa3a zpnnaIe$8ZBWj+L1U^ATnG8<`Ss3-|}fj$)kh;SNMFnJc*&&V>?{@3fMVGNRCSh1OXT!J)PhcGNj4u zp)m+hOo0V3m`;@_W1_1w|J!;~P>TLu`yR~iur&CD&!ho%2PJ3{hZgbhycbW^d@Nh9 zV>`Md-!$P@8rIu68vV%F{#a7(6M%~FzutkRCBp5d^V(_?#q~~zDQtRx4*C`tESqrM z^ZCJXc>d3cy7lcGxW4*S-b;k5*>(8dAdn`}E0d^*Eel<*1)qd>eBx)cU+aSLNU5Nd zp}dbE0e;I)KKli!+#qsNeg^~K&1{NhxVNm@?YGMPAhVB{zB_K(7sdH22KP={eS;)l zkdQ?eSQ4cKt*(xi$>j#u1cm<>gX)1sh$A@ z^9XtaT$Q@j-ACmbpQ3c1HzO%VKlWV7bm&wXDPzZ6@P;2bcdb#yxp1ZJ$MUamjOlbz z3Ed?o0ok?HF`e5=CFG4;=e_JTW&EA(0)huu-5Hff4C|6{h;fB=2p~gg;sANr0N_!8 zv|u$?WpXxeoid2{T*z3o|0RmB_r)Lx6%2X4)a#OR0nmiW7pJlOpSc_4^L;O6h_^0Y(<(dp~zf9ESns(0Nb zmV;a$zVjLsYjj+F1jeu=`uqi8$RkB#Vcx3A6}Umsf$V-U}xOa|IUhGN3oacsEb zMh=?^mr5$B;OIDJYaCZaJca|FPrRhQ0G)vOIEbLzM>_BP>a~)MPLb-3by z*);C)3h}JR%kfzbYX-%-pME)1skVV-dQb~)m>V$Rkvcs)Xvkh2fZdT@0&76dvk@Hl z!@lo)Ce?m-9*^U$Yb)#v7_osG|0oX*qCgJ|s=LX?G!8z_3y))QrhHUsC1Hl>O4#hn zKddKG9Gln4&?l{oVb>SA%{Rx^Bn*GVV~nZA@>R`Y-0`G+he70jV~{_m*&&E{Tot3tyuz9*`&6VS1|xw$}v5!izmBnFm6oQr-BCm={8J z$4Yv8Bpo<`r*r(P^WW`+(y=UlM~|o85EO?^>N5)dQOyz@q7T&fJ)K=9NAtA|{!9*8 zuk#2+DI*5kTSa=ez~jrf5&Qb6sRydZZ{RjOP`<;!9oqlN2ze>`M7P0t_UjcA?cNJ! zoDATP#7P7udNE?D>G0PPeY~!Ds@g#l(`Ve^ob@h5MTho|N$^`wz=_6Y47Vq@A%Dke z`Srkps;AZ(n>@sk&Zr(_za*yxrzL;-+{vF>3r~n3;=fqHZ-mJbK#9BI@viIu<4-hT zROi>T_OT^HJu|cBSI`H+V$zzU7Y^7w{m%MrOiGl%?yeRRBkJ6A7V$` zMcw!Do0sH{q&t$IknlnAZwM3xBD8qSU`*q`2nhW+=}emR-9<38)u`x*-dt3A+n^3w z^cakaH(v-|;i>nR6jTwrZ!r4+W0j%OD@<3ZS4m>q03Pti>Bws%x<_+I8ilkIiPf+d z9@D@=O3V#Fo)7C(uCt_RJP8cRP^f!Oj`V^4v#ex9#~Nve;0eNNbm zs4qlsfXDL7;4nxzsNrP%#b8?CnzuM~G!&-$5x!e!0cB%vLQG@+0?Yn)9LR>>VX_p? z7yYD;TcRHfkr1sy#KVc!Yri8*iem|vyUdM{LFAFHLY3G!C}3Yg_Zeyj1F}{zT=D6- zTV?!&oE5IM4WwxKV7L|ta)KnX(ajW_RYAVbH`pXi#XshjQxbLarF6kkZqUEciAVWP z6u8j8*X4q3AT(RWAY2g*>=q#4yvr<>PRaafHi|&ugX6Qi(oM2rQ&@MmxN(+P&eMbu2CS}3 z;DcK>3tTQ5Bp%_6h+=W3fJ6d)kit+w<;Bbp4(0HusG|3%tII^GxP&k@wSWobg0`6A z&><)0kK%7`(8DAfDi%^_mS^VB7(D4@Mu;cneXP@4B3?8Wdxi;P{E6aAByXZlrKyAL zn9-)?Wi?rO1>7p6X9L}J)G^076HRFG8v2xiN+%qPFwCu$c)rjrIng@-)NMkZ=aJ*` zZ1~QNk*iHXBh8_&O*YS#wYWEyDtXaA7&-$&lTy$B?-H+ z!d^#{N;1K~c&|7#8X@y1la(YwkpAX5D`Gr3)G2ThOaHAMNe=P*FlziVQ9^I;FeUh0 zA*G(l1h_0bYN4o?^c>=t;mtM~+O#5UJBxDjFMGXJ$|N&zhv521k9^(hzJ;Ra3Rv+^ zy+(7_lGyHgV7yji-JS@QgVei+vl1e-J+GSqrPyTiTu=V*kjxkH?|91syok|~d$GOo zXGz$*LZoS3?;^vZ<=51j%vacyHoIt_8#mEnDnnWKzCcMH@OoIo1|ioWO*UP|etp#NA4B)F^kn-J7tsR>xX27@BA z_l$`8V%2OBJ_h_Muh6L^r!!VsI)=2K0#584*S5aJmWHr=v<-R=sB*WX!qLyt=c3KW zpds1tr@1IE%{{9q>_x93)5);FXvS^40}|L4!#cB73&jKIBJX~xirPz5wh*C+>ooQX z@5D9DPe;Xq-e$mWXre&!ZG)Xnb|0g_t2fVnzUSYl^QW6Jwq{J&cit&c&NA=3m;nM& zf2?`VM^IkR_oebVuH0`Ws}7$f8XWl_M|~sZFb>4>1_cG5-JFmJ(7MU^nRSY|M5#@M~x3?B_w$r+D>H(l@(+h zfg0;z!;&h{_Gk^YE13XvB47pnIm4rOrEg5oIR^qAH>f~A@SX`v%4NgBKb&4>*R340A1v8PX=De^T5V3VTNS zZzg5>91MgcORFp;r1DJ8o@r`N6`ymP4~nG%by`ArvCc-a@gCIUKp%}y32d93Iob{> zXYj#MIUiT}h{bG5U&&0*nAAIhb&+mJU8P%Xx;p}hN+Ns%L&!Tk98LL3PW>|vXpqDz z)h)+TT3~A63|e8E=e`UO*nl26vYk!oI8*Sl4CN!KneZU3F9R+6rj*?k4v|b=d!N#U{%B#~Y=G|N z@_03mR6cK@dx+~Em6l5?$+xtKCVO?@{UB=>tJ;N=&LY!w7lOYz+ zn?rtqT`t9vz@gCa$55??F|^)x_9Gh3`%DR1(y)WY#^;f;8r3g&WV0oC_}yM3kKynldhP|E8XUnzE)3JWO; zhk`A;X}}am3YE$*+0p;}=8McrqE2w;Hc>&uu?n`#P5Oi_r$L)%idnBzknyrD2GHj< zF&EFEHxEkc7&{x{2=#vy?24pSjq-OYGp$q^O3PyT&0>&cXmcZ3YLM6r!t z>sD@69}Cu3$gJEooO%UvN;c11BAg0j?K4?p%(!`>D1`M1oi#Lz-7$qpt z>>ka~IPQU#f$scgPJY^bLxoow`#TY(sK4bn`DkB1Ik(w<>)Ve?%@;EW6c0wp3^;K8 z&owG;R+Lh>ZF`@OC#iURy*&9EM^T0XL+q&5okc^Bsg32eU2fs+ElScF;sOIyQT=+{ zN@p{)g-fd+{&T^mA(K^J=4qK1qN3Z1oP|YA89gw(+Ne4~)VrAp2qWsu4i zA&x>c7wQ4(-8{cb;ys*JdP-ap#8Cq@hCzOpL6hzeSAwco=;$0Rxr$5YsstG?`>|m8 zx>$`>=~q#uO&?73Etp}CO471|B=BNj8q;;)bzs*L4$5JPOMvQWN;9IwpYQ|rcHzUi(lj-C*9rD*UojJ(4`aud~yt?z<<|l zy#qow8iv}lt*Ob<@&&nOB!rH3E3L?@n+HA*SsiAh z>t7RTBGRYuRW7Be$olLzRAeeMFt_({gd{iugTL@av3}K}*7J5pHVD|onls9zkP2=T zsLxR%$CKd)wFdi|VfsS3?Vo-z@Ij%)kOazSHT0A;SHKOyEh}M^o@gfe!45K(%XJ!s zD-}a)`6GE0XO5-J(EPbh)CII=3XmTyls$$1de8;Cq-ZAuboZsAbL?OpY^+s(QxMPV zA`Tg4OJ&p}E5X|?t!RnxouF32@%0F>?MJl9uW*p}j~Jf7=pFm!fWFIbK-I!{a_S6aJI6T-b)M#87Ff3+bHBizhD*FG(mCDD_U5jR=JR{UHk@*xUpV2 zAzSnBMvFa-kAYECJ)iW!#Pg083(453@;eG*%_QG$+f$HLKqS3k2Hyu1mqLth}uVM zn%&RQ)zs7bY5kGE(5{2EQ+ug&I0dyIyXyq~yC&%ZqikVXh`;kp+}X`TNu>h=Bk6k+ zgcFGA`ikp(KC>i!QtYWLW@;YK|G;!373QNp(i_fJe*P3l>s1RRyp7i54qJSAaz+Fe z26zrjV$YcMo~j~;eCI7pgN0O{Q`nH1;Zpte1}fdjQxWh;LDS04|JmjB@U;_*#eOAZ zNBAkdV2)BHE!7f;A{|(PGTT5t6H!Q@-#>NL(*!m%zDw6MphPoqN^&0AtnPTCt4b>Q zkJ9VHUE=>_WILV{VA~T%XzvS9w2=yVIaN508eY3}Mp=uaADCfLhzOA%|7l&IzhF0DuXPnwF*X2qZj#F0MEmpkd%*m}Y~6>_{|YdTwO{5Z&_xDw!S=3@ih+ zOHjOJvoMbVR_T*)+4AR`WG$F8#pD`Us3RYY9;h=NOrR2Q*|J`4`HLL39R(FP+zsgi zsR$@3nC0dIb270c-;;rG*TWVKQw~e0d4?*%8Wx3~0~}uIY=-9Qw!>70O5O5oG43zk zuoPE7SDTzSL1kAP01zPzb9i_^F9=KlOBkM(Z9jog`bmT%ezO8)oS6S&0q6yQfd4F# zeXhp`_eXgs@feweY0AFK4z zOtC}3k1OX25lhBKn`DRDQF4e#NU*3BqG23@TlR01 zsVruzgOxr$-0N*pmde-@973$lBXaqVEq)o@>}pLXt_4hN_wKke0J!adp%7#V^6-0b z2hZ#oq^ZS{bkVLCV1{+i-1K8CiQnTeH!`!FkUJxuh;NIUd+ zX^YW3QPC5ZnqS~NOVomCeR#Sc#dzGXAs4Nr!ziRs2-HNqKq3?vkv5}~@`KDkHum0# zWJoyZdeN^u*QXZA0pQ$pwVAACafH|Ehu<%+NTQwfrDvXv2i154054EXay_+$@?%V7 zVg4!-^?r#0;Ha7Wjw?VqlQTG8YSv7fmGUzHG&GSBw=Yx-946#RN>@>!$%J8X{gLcQ z*P}a+|LgkO&Vo~`#5K?7NMK&FMe!H2YBK$^i+|neKqf5{y;K~bCvoWn}i{kfheu-)0WZ? zIR+j#`5Y;PhnUD{r@a!6=mLldxu6^4^i*?VMIlK<7qSH_H%JE=EfZQ+>^W(f28C8e6H5 zGBHVa&d8#YI+Kz!xVM+GisjxBKgv89NYy5FO2FWWR?(o7h?NMHfqq95vvD0H z7V-pit_PsE**$>{CYpeiOCD=_9|$EpQHuB?lujTbf|PMMKM&s80KA%6(a(1Nfben$ zJe<`Jprr=Sl)(MXVxwc8Xh4U&)P&-{pqYUO=~R%X5ZT8I&|TxT{WY4!Ki)o2dQ9~Q z9tPlS0Us3lJFN*=J({b;h7QwSkF4JYDWNwI05{6RBnnRj_W7fV#l{5+*wB{(`d;W5 z`2C$pG$6HAuQnp@lvM9D6hay7WdHQ8j_`If1T<+tKTCIPJM9Orr+|35fu`x7Vy!I* z9%azQIs!i}K!w1P8-E}I8ry6j1)}&jfRS}Dn0}wlV>1Q%*CikTzeNcB_o4*g5av|T z9mxc?z!soR#+u##GebJ~0d)=tSe1sYY0WV3>IUJPtz_U8MSEkSLJoo$5DneHpgM$3 zLG2R=nqb__1@yjTz_=?5e9*tZWBK_MypaI}3K~H2-h9!v2PVVctZ6{^>j0C_DYZb_ zX2|s_1icDU9q7^ffM+)oC|TffU-iE`bfK?40)eLnkOR;o|J(=SOd7M!H&76Ri<}3J zYVL8N9)XZQV832Ft#w(X8_N8#HZx8w4rn5C*DIDw1i3)IRDB$TR`8!7Xs65eFwd&t zziB(C8DQycdYxKK#mUKO-~v_%Y{f1Yzz>@e|GMj|u-}Ud{i~`HrOY#sf&RIXxApfH z!3De&_D-P!xrg`f#Q{6;asx+hGtFHjB@nZwYb+F-m;bqwK_*?Wt(@#41ea70PX1BQ zeIMwfLI5VDaa6YLra7)kk%^c(E-THN-CmcfPmdyxczxTD6hC276K)1Rl&O;0gY>ZT~E2DdSX+nh|aY z>w=#Xvb4)JkS*#QmIYN)=ZHl8?*X*YE>(Hyh8nUrTS+l2ahr)PMJTrX59J#UfxNLn zQD6<$AEY8KEBCc2qz&$+VmE@{DM&2iz;OAqOKrBBO)z%&=b}@5Zn)i}Q(i2U$LI5Ntv zrPN7LyvQqns(?lMz~2rz#H0!wnh{kuR_d`Xv#9DXF-yQB95?d{X!>W{Be6xL^6Fx& zp6g_N4d4wY`buQpgzJ_Wu3Lk!5GteW^Ff+;@022j z?cgY^H~-E(PmxUJIG*{UqnalojPYkD%dy0YBmU^sWHNpPn6f>u1qq!ITQ_`RgCX?i zxLZo;*8RO0wrC%6e#1efJbK5ZmVp+XmO;UU zVy&Via*7P~_miQlJ4MfkXWFq!hrv~`kG2!3-pwA0nbYs=_q6r*?Oe-HCbv8iL(s6$%??Im5sko-d2#Qq!<2bdBAy=V&6ock6seRro z%)1P4O&)DWu`qJZ);o~Z$*M5Op53GNtI7bd0e52TtI9U%A8$xA`O-B>C^oXxM+wqq8NRr0wvI#4wIx75b(FCCwD z2>m3(Q(I%?z8R3l7Gt~8^CqgsQ;+R48Yv8gk81}Oqr{Zi4%HT7V}&B7Vu~+Sg6r6T z-+f>`n5BRn#iWwQrv>~N3zHJ3f}}b^3BAtqDQkHmD~^J-CpH*W-`Eowc|BE3!gsLs zC^5yrGNk)OUVc;68t)7ZXF?I8FdufiPW3q-CMw8b;@#FCK-ffYdC_Cpx1^x`MRy2a zb2E_8XFWXE^H}$?m)ZFASMUN%D?O}VtwOuia2_zpRk=)Lp!Yawo~vy*ldoW6X8v`Z zd$0CtNZ95sCJif|#bK@PRKLv~IpXMAt!tB5)Paf+mNaR8HM)NWV%%o$JyeSPWB681 zrma+h4{u-*(yPwI*we8EviSBE-g3+=_Q(ilGa=2LK|_^yO3lKa=hxCrp-)2ZlvfJY zsEWhDlTnM~vuTO{RLh2phrmQLxVlV6`-x&*Mj%#^l;VTSG@(+McGvQnT7qs&7kHFo z_8A5hsZ+HX$C0j;i}+Py^P`7NY`w|$MKuKPWq*{@U&Ca(thpHYv!;InD!6reCLikmUA)mDq)vQ<|;5TW{@bM(!7CPiZC}rEHL^gjuJk9;+YG(_t2L zZ7MONL(~ew{p)_5;Q<^XT0vD?-_cLwYGO0E!Us7d%%gICIM=EOZ&k;qnkLr8{6%~T z0aR!cLO2QJbkZr)4_TRNLq=sY z75W?BS$qr)X>lk-JJl%YiSo^p3bD=LBMmlEcP&vPxAygfxCk?2*thQIEJsP>@0j=^ zABE@dcoQnp|9Ijb{U-j)(6S-gY(o);Bd*KfZps3l3fgmJKP(aHT6M+Gg`1_Bt?G@& z=^ws|e!1JU9UfnY*JfP!vQt4YO5ynaawux1EPp560~u}slAbSYhYHrh{4GsB*oB4R zWGO*Of@_MkT7CuZDQz&WlUK{+ajN666>--)v9Awi2Fv)VIPoFOP>53dHRds8;b4psS20BQ`U{r@Z0@>%o)%B*HA)=X$9Ctc^giR1?I1$fSZH zE&|Cw|mML;LKyU_e@%V7;q z5l|z@BoZJ`xXk?d^&RBruYkq21~WggXNd4PpnkG@S>RvHJdkxKQ&NCtaD#*rqF-Mc z-R>89w{pxt1yL4^*<2pxi3ykcdZsmq744Lt4SMFmP@nVQ5p#1LI8pfR`m67MAav$2 zt+xl+hv(y^*BY0C_wNyrx2Erum-5~M&kr+#qz)n2k&YsXq)qDW2LYVGwfqSO*%Jln zG`6>|Bq3x5a>_Kw8rtjtMcLi60A>Lal>~@-%e=V$rIR;^(gqK%O%zq9ls8xF)FM}5sW^8k=7m?b$b8seOyym-CFRm#WIr| zFg*b~FDq#UofzKEp}9->?II1yJy#i+&**O}GL@-WX6gSmzWQi#|g$8bJ`rPslj&y>AaZ zSv5291hvVVanb-{fjzNA?_@yPa6*qmv9KxdtjNFrXr^`rw80lqCqJi|nd+Bs9dYB$ zMwz|o6TL&(__leo0O|Y#R}2~^{_?P{3!2G$rwLSkrQLBtWZzwzZxayGpp5>`q-FY} zxZD_%^&`}mGMV`qnWF=}m>`(_rfTjh)PO4WXLpvYk&f*Z%oL6=@mJloI3AVw758Ed zy+HGkMXX5VRmtR)jRRff?#XP$Um&7KhO*NKy^82b1QGYmRXm*YS9f zzd~%Mz&kV<%RUPSW4Sj8>3^QonhsM*T#Dq6Za$#xP{R9PQE#Iffh!!%fcTm!N)B{K*(f`S^PMFWj-HNHI^0s@ ze*V$53lIIJDGuXmYTtfI+lI6guwfc49epy8wOd^-`JsD%o52(dEfSi?q{(deZUy0K zGF5c1rR9pVY3338q%%}ANhP&*S&YYL#T%b|72al2@w*eDE0lgO?icW-LHo_0L_cF9 z>pw=Qw-INkp{%uB&9=n`pY!jsp$%#?*3RGDcn?0xAReUjnC9!bGL*}kdW?lD7|lGi z{SVF*n{neBGuDg4*Ccos`#ktj2jG^(t+rqG;#MVU)R@vFD^X-(to>?A?UEa>L{Q4S zi$fa9+_3V!8K*&jFpTKbLStuG_#Z~bGnpr$^puVR2TFa2HLZcqJ%%_LJyMO&ZEdFZ z(~XD^lJ_`gODS>WF}_?QgQ=4hIMR4Gd3b$WN#Mnob7A6KoY*@RY^36~9M)RFGCDE;3L|XB3 zcM%2$^D3q(`pd}wi(%v+mD?m9~OrW%)LeLCnotbmrAsTu`(Jxh!zm0rR=^B z2GmO)TQ*nbW@0h>&x(Q6j-+g&La*;%qEzSRzU(F%}MegcjqzKQFR-4(3{`v9&) zMirSV8M_r%yoCzlGUCjg_>b8}#21v21MqzJBJu+3eVU%Fu2HKPc%UxIze%j3UbW#6 zqX~-Z=)~F#K11Vo{YT$En17~DDycz6-Oze12ji`n%1&xv-?H7(q3O)2p%JARQ$J(q z%9LEJw3Ak^FB5ugW%{D*9k%VK>o`~+NvX4w2oWw!8gDuk41<=tJxgT|7M^QRHO1!P zV)b?&-F}KpyRM6Zm41Ld;3gLlPBskV0}ZM-j-tLN9;e+brGK16#W~>5+^V<>0oLA_ z<>GmTJj8CEP-z`%CGDpod@`mEpC9^7;q;jS2tvha;%PbOIZ>za5^TIIikc_hotTt) z!@{F7bj0z36qfN^(KhtY)voGVs$_i75Ag)Uf=Z|M`BTm}(8Y@tdWY$88&uOgyO~h$ z(X-MAjjaYD>XlL=rqF{l_%wyXhfiUI-u70`c}V@F`z=4;9rnCPD;AA6vXTP*>2E*C z&QaDOemfUd5Z*B*!7elC=CjXoW;qr=X0Uo#XyiXotxAfQ)+c9rdHh9ZhFFtq%A`&4 z=d&2o0aVZRsk6eWTWyMx`U70C!eX-g0Ucx3;VR2KG~6+$1*>6KhH42J!}O2SiA=3$ z7alUx`i zrr3M%$e6^|@TH?D^W(&SS1qGpPI6I6`TFK51<`4QY&}jys3?^^kjuF{e;rOl=`gQ{SA&PLqxu)$SE(&k9Gyi&e&nO1- z-b3b{9z52M1n10x1~|B@!E>y)jheS*8FKl`jSI|Z|+w;c5=r5 zTUqaaxK-v^l00X+fCGl~w zMOp8G?Kyf?;#nhv{H#JIK?eB5qOEXn@*ssD_XF(pmfK|14IiD(4YfsQ4bL+cMHcLIMXk zW4ptBUKFrN(=?(J@X`tJBXoEoQ8y6fP}!GSaL`uM2n4KZge0R;h1%cKy~L>YzdNr7 zz5}m`wzdwB{0XGV0d0rhi=*Yhd`Pp!FI4dx5*KoElF-4Ri~ZxhFR)iMb0|MFLB)c? zvh|-Q?_E}VX6@;s|p;-u+GwL^>h0x1KyI-Kx;6YA9Ih8M7w-v z#sA_gI#@+G>0ARVDYbc5A}Oh~j@VRh=*C zs2PR%GEFStB>}_gQ3t2GJxqr%wa+xTQ2G9ZP*avM(1s+;%C3toMy||85qn;4fULk_ zhjrCN$>hmv`is!|m^dUr0#!!da^a-b)B-&R05PifJB$$~dOzsN zwU+0?CS$`-vZ7xCpNn$c^XJA;%A1@I3=THT1C%b6E6YB6bJ;H@C>996Bv76T5){n` zVp@FR)J}cNW@x~3wJMuc_(+%SNcFI-7`5H3OwG1 zrVmdR>bthN*`y3M{hs7|q%@j?)^vL~r*6J4`8wWz9oa!OxBBzoi=!8Z(ru>y2E8TUcH+WK8 zUpJQ%iw0Lt*flyYNKI*ajSIC8vxaLVbQX~-on_bMc^$X4vb}z&#%Qy|8;zDHV5?yx z6uJiILU?@t4O_u9nWQ|S$jxGK;=kyRIEB(7fvCdrHv=35wSULXSXQ7Xa=d|%3-HITC0t*7eab@W2ovA??U|Xn zCLhlL4#u!MFBW-ZDXEhoQlZZwDq9lI$nWHin)o;&q!BNdR50+1JwbpqCBEjVo%f z$Nkhe`xGteWv}izX@5ewj-$qem8jhLCZn=W{QeRlvMV_!{Hn-(+ilxf@E5e+NhrVp<_rfIb@2`)UHVs7#syS06a2fIWoPnPlJN2A1)YeUP1f>^ z>y4|RIf{iPObmZF-ZR6d-oK@t@{nm!-7K0kPg9;N%~$WX0NGmeo$go}wFq@dfM<;F zADC$bYx_-7GP&&_CS$NOtnn`0h5 zBK#ubG&3w;A|oL-b4JQ!C_lV71kY%!GrCFP6h99GA<)b|0WCaLu7cdQi^YH;Y!3)ECCt9|3vGyOkP|2G#<*x3^O03&__ z?#SgEYlP@hjD}w%y@tn1G%V|6j8B#Ib>ymUSwE@5_^>+dEcfTrqv%=|!Vt>2@0~$x ziY&j}WQ>^@!tgh|IC)sN3ruj8Q01q4_5Wvp!5b1~hQpqr^uU%|(bKaO{on1?596AX zz2HmSlZZhatIMWyiIcf7CM4p4@r4hx?oPJk-~=RS+ujnEN>h69aH`swyhG`T^#EhE zm~~s7f1*Y5(nyZ#S-cCQ&FQDs*v#D>c{Sp}eK|tZk3`aE)=&ir4Uhx5yhwENru}rT zGujcT6amNKJmmGEnGf_#2KYlVw!)iEk-G<^QEcD>M7FrYqtFDmD40Y*=XwK^BXCO_ z0i6KKK;H-fMHOm454B4I% z(Ekp=3Us%C+nQf!eH_d=JgvL+pi_Mp=KeY-UUX5g9-DO}v=ybW{{5*AJ;V1}Dw|gZ zm7|b`g9nHG7C=UX}lJIY&77NgQg_*Z+EJbDNUW4KbN`B%>l*RV~2#6c$XP|z^5cq|GO z;JS_^;Q2XMzAW<$hp5@ zlp(*&;#$F2$Y}*5Dv~*$?Oq+13vzuYO`C z+;ghyj$WA}oPyYH415X5=p}nEH0~#*D1G$be=1m94qsVYz`JGJD$5u;h!Lo z_df=od%etCR>x}OrWA~Qn8kUIP$K5>vb4|UFpXcgvT1RJ)yGg#a=DN z0+?n=sI^ih`7Z$|_00{4YZiI)>3U2`qsNBJx4tv**RRrL3{nI456KnuO2HzAKahAB z*bu`KUEg0P{@YFJ4^!3U6QEHy*p7SDx^SDVsE?|D*irS89L-Gstst>Kjn6nvvDx2V0H6DxJ(jczf=J65!U)~oPQPSxD0 z`yRf;hw^iD22B@a)xUXn)3Rr+K@JUmLu1NC#~|5YN@r7wDxW)xG@~twm=*L=kInm; zu%vD=zup^YyvP>OL>Z3S%WFj{RkwQB6%#%${>ticn@#gcRQEH5Q}cd}gPrEv@b3X-&Y733b+B=a}3lU%xC zM%<^{@(uRkMA?Jsgnuon$zKGX>fyzF8&!(EinTnisP|hmO*t^Ed9K*A(zep#AyQ^C zikafJgLY$r;wAAkY2Gkc7G6e;*=`>wskIQlTal$@3uj>)2$Y)X0p{%fsdbPVqFE@e zaLv+5xlnWHeN;TUC@RS$UBnfhpu_j3zghvWw#%kv}>=;B#?9)7MNI=(WCJv!f>XIg+t}a8_K` z6ptMyZsrNXk(Mmt7-h-zVDxMX;gkPD;U6|1F8GnyGR%Q~rO`yc; zuxPriSR3|%z6tY2CyTu5<;uUS3p<&`y2mWpY>tdt*8k#B!2}u6lxs2#gCNNqAG#>l zF+LaTXNvPVanbcc#|)Z`XBdb@ai?*HP3@$$q!sp|K=-0(M+UK|UR~`t|9Z(Z z)4Y%seOM@nPkft{?z4r5iXKXZ_aU{z54*LqgKccZw7f5(WxJN@`eB%IA2mJ0D3l%# zY>=24+M;)>vcCt5@++#Lv8=00Hm2vd(?SDGG6+l0!`U(~%Ml(kqMXF(8!z(1`(j?T z`J{X9)(WEcXt2#kpYb(nG7RoW7KSmEu#+9miElqsox0W3o2L04s~@dbfzVvB`yDM_ zW!=r6<%Hp%r#jIQk_Va3**7Kmd4W?d3VMZhkC=e8!^4$1e*bL4ndKQ}C51i1tu3sE zc1jYSdb`#80YjCvK3OWidRrP(xV-bfmf2e9v&j*wD@(23vdrQ}&8=ZPc8H<5NAon2 zq@S^uB@n^EZ2ERfUQ>PCx3rr%!@-lu-2PMVhoh|94`-hpxcp=p^LhVfAYHe!oLNDk zBr#GwrJy(Ig=Qur=^QF&I7I?_)GuHj-jyR=PAfVdsBFKn9LNW0;u$V+LL*f>q@L@V zXCVLNfa^V}NxEw~c6Tu~f325EI)3dZX62&h>{nlhD3n|#tCech}1x0mH8A#`CMOn>_u z3}E#_I}o0be2|!zSkJNr^Y?OX8&788G`i8*&2b}3+VFO&jr`}-8>#XuR@>ew|IZCa z|33_A|BJmz{|CRSGKaSwKdjLKOUoPZF#)OpdO*tm0Le%s%cmQrg8~GW8HkfJL&cf{ zz2RHSMRUpCLYXH^EaC`gbO<276KAlOiYK^NrQV3+fu`V-xzuNs9fqT zDP%ERCOhORO|6{#_?M2mK>jJGu1Sb`p?Eu_vAXEfEb)~IExh@M4r2NHz z4On*q(#D096h~tjM1XHE4Ps}Ofw@pFRn=C_-np*yU-p3XzGeg?%2qgdQjwNg@Dbe! zq8KE8K)(Q%BOn4|)%aMlF#5e66ExX;DR4Kw@>0;$Olpow1D=4lJDkkb@6uKSRdBhW<~piV`&qZ_``gRYRq-SPOB@C&a#l zqu*ITfKmVhLY8!_ycR9*!Pi#$Y7Punfc(M*U?osz4g7+*E|8l))YoK6$zx~ytY8@t z&MACE`}ez&9}sEQPLpya-I6NUG>C<{={d;Ja-8E}pM+_q8tPZYksE;EMD)4+JU?rY zkycyE*=}4u&v-rM7`dTsSKDl46uMRh$H4m)T?`b!NCs=-Zs~&=g^};D(n=URz@x}b z1H{?kMs{12O0`@8`~6b20@;~uKQdNDZp@`-?@G0!w5)IN9WA65)Dqy}k+X*pr)^OE zYJrnQ(F#87%#O+##I&K^m*9c)a)b;3bqr95%qC~Pg-BO6Fhoode8n12EIHVq|4$6d zJP(}c&}x~%o>B}H-Vo@0xER?JFc|1aVG+4H<6k&in8U@OF)>e;fD!+s zl&~l}9!5PUyC9T}cd_y_IW9=8{7v?cz_MHFF$u^pzg2X12ExE-RFMq1X~_H^7#lsw zDRjY-@$wc5_67WV3FQ({0PvU*TAZp(-yv8%vhPcJOgZ_(ZL`jnl_`#Fw>hS3NiE{n zR*&{v83*qxW61Wt&PAp@%N6rTSFEj5iO6Oziw*p2J@7uh>xBQ|gW6n}7|fN9cHp-v zQs`yz=xHzJK}^XDSU$Nrfhmn?2>rZi0W$N?>`8)7b{q-=ej)cMK^M;M7W<1HQ3RE= zIs8qSB{sK!W$qE4`t|JbQYm53>FyoNHqlj1VH$Bc*T)WN);7PuTcMh-lt50B$kAva z3uf6L3MYKcheM9R>>hI2}_y3y|10_OF>NE7+L0!PP`yC!~Yg3%{1MoL-$3!&Ls37*>qDjSMLiVhgLX4T@%q* zPb%4*wV^)6eoV>KoJX6uD-O5JF+B61msq!DEzG7SI-xKJ+R)OOpye+p7ZeBX+z|$5 z-JRaIlX38^H99eE{aZK^AAcV}n{lU~2nILn;suF0SKbxQ^Yc`-F1$3UnRB>;Y<})m zQ1J)1-E);|)}^JxqvT?63nw{sN`sOTjZ9AhmL_UG>rU`QaOGUX1lnKMUe;a0j(87& zj(vRWAQrKtEnf8zf`U^pka`-ht0?e2y+k_Rqs#1z&UJQ{6fu>5!#ifX2KHYBL)p>f zm>P{<@RaC7bnU-H)?M_9Y{2PPUBWRIBQq<_gS3Qv{*M)8i_gIe7GCUfq`ZzNpiY40 zYqfd{;TO74BD)~Nh<1%^Bl=S!z(C46^I=l4xtGZOs?UOug2EV%{$d$3`EK;cMtG<{UsB)#@z+8*RLu-89k84DYOx0)kL^ z-_yGi*8g127m0)Rf4s3zSy!^IZ|&A!1&&`RRm~Yzcm)mYVj(`Dla^#8$tjaq#hF1z z7ME~NrkE6A`i8BHw`v~wpXl}WGaV-^i)Lh#uks7A*dV0)qvA!a%-I-}IGkoy3TYz> zCAz&4ElE9OWOTK@`mFlu3t7idxD~CrAUBkJ-P9zQAjTq?wb-ri(4wezO%&slRBV8O#G% zSALRCp;@Q7lSC(y(#*709m-VM94T@ZFROrGE$DuWO8ymKKI%{7b;W6^R~1H;T2D7S zsP6J-9Clx`yo)%_OkpDbRA8fw9nZh1*@KDs-o8|iOmTOCQWCHgTBRu2lp~gb1|vT8Iv5R(mX2V82r*1n$L3^m9%W6fYS*Tg(RxA>?!e$FZx~+_ zcR;!xLyuGU=D{;9KY{SweD#K~1N!WR)UaZE7Y}l~5WnP0;jLa~i13CLbbf5=JY;Q1 z!Nh5J!({4-8YF;+AYrsg{GJ<3@@Ta?Js8%SnkyZjL-f1~tGt1)9$Z++#;@f*`BW50<-5 zqd*7o^nqq$peI*{p}xGArvxb~A+Kq;>$5Q4>@wYVo~$?rA`w~A9?ApIyTgCFKqXM86?Z@EDyOUE}~gGP3~%$^9W2fu#rz za5GD$7k)vuD*Q$^9sOEZ^j}LRj(0i*_6;busAR}|b%J!^Q0U+SylXy>h4|Mln2*3n zb`0+OfT^pEZ8%%+oI`vMsMZp$StCdsz*IHQ+6tVd7wD7VE%UMpaMRGOF%vp1kw{uC zV|s{wy7+fajR1lR0ESz@7Yz@F%jF4F#qol#0OOG5d~lnEA+ zJ~c<8S7eh-k6+_PxWDEGgmw?Y>xz%e+B~P8MI^&-EwWIP78wWpjrk4Sc>?wW9zX(v zXY}(cL7SXiT47h}IYt?;!4EZB^##-vc_# zzfBYx>4Bxdc-DAR)Po@=7yCRA3%SS>I1Q+i*V{!_5<;@Xt@?10@SqG*cO#5JHC*Ek z|4fBhE;B65Q$E03wE?ysBGk{XEUIpl$5H8aAk^b%!#z)R2jO_K=5vVWI=|ynrg7+M z^9w*1vf8dMk;)EpFEFbRxtP!Kb58R0%no33+bS7ogrhzi5&6FCb+5+k1Vqo*7Old@ zEuhy!P1;xJxV$rcOTrI7(A%Ki7;>C0)f#^3hMB%w2ZLe+cyDQ{{n6_4*cl)4dt6eo z8#md=)GGhIN0|%xwIZ%BfPGQRtU`xgy^etHBiVa1c+WjE9G=~C!Wo&-p)A$ZiTXcFDR$39|5L6x;?Lh^G#ECk3^q2(qYh<%}p|~#x z-FmUAapwFbI3S^len1uiO;P@NW!3_PignV^yuKgJ+!vbhmXs*pqo6g)s{V7!cb4{y zvkw{>0(tM>aXzvVwJqDmUg=ZnDCy`f0~Q%1gs4sci#Hv~RH(`yMB1QKbf3D<)ONkI z3Tse&JKwj>T|1*o5=meA%Q4EVKG8KN>JyS8sy28Thjoy55TcnyJOXP1r%b{suG1$f z@Xd|?e8Aw|{-*nym2S)Bj@%!+guU+L^ho=rt&3ckub6WY#nPq2K;KgzgmT-1pvAH>`*9rHA4gj7*FnP||eK9qYrJ6)#LVqM2ry5C}*3JX70b-cYTg`a5_ZsDFk8A~#O*P(?Va zkzP4;+qY_>cw93rzAm8H*Y*5eZe?m_?Cz-R<&T=B9HSFQ59b&#)pF zo~}3a6~caOx@e}COd#syTKJg)hXNxpOt`b4^-pmaE|p~Y(gU`y(f?nTr2p^v_7sbeQ|2GIz%&Js z%oO-yizOb9np2kKb)6d44?YVDLC+Kk!vc!3=EFz@2;Y)_$}8TA$(;v& z0OaC!VH>3{ocz#sfPYh*oH3F+?ThGFTIt|3AP_(Kfsni#4RnxDiU~3sTE7JZq$(Zd z%O}_Wz+K)4?OT=*n1$I82&rLF^xq4#sD^LMX#!5@39M4+Kmer`ai{khn~=G_%xu)X z&v*bhGJ=-$6z)!B{sgM>0b?~dt-sCVHI6E`)@9w^i>tbv%6mF10bh@ zVrf1ExA(1U`0m#b2hcq_ZVs*_6EMwrMvR*q{sOG^$m01Z$^g56thDR@NDF9IzfP@)`*dN%e`n3b@0Z4u^%bT!%+oM24s8d z;}IYs2>2nTf!sa67Abr0j|G@wF&QDNs$Z^5F#FE;r*TUeNY1Y1wt;{4LwX2AW`5rl zla;V;X}(F3d3Ag@D-`0uvul3Y6BtgE!C1%4TXq03M>YQp>Cxu(VT97c589yDdt1TD z8o9j^#4cV*5f`5B8$WmrUf`ob!*mYNZ3EhIDtd5)f2g#vF7{uI*NwL3NVofGcwf;{ z8&c>{^|H({Pp#u5>kU4GJ{=P+f(^m1;ZLnSZhT2jy=lUL=>Z?4RdQ@-ThRF`tGB9( zSKA|s4N9yeCB+LHFL0UPHlek_o>MHeS*xPHq>Y0~fUx?F6oId7$gWOG8Og5E_`j_u z46oEZaTp5tJ;2o9sfe=__me>u**rnPLB1J$*#hJkrACCD>=b+gd6k3UPlP3rrp~E; zQTp=Bk_}=(TQ?{I!jW0LSTiIXj#A3=#6Ab+wOs3D4FYfuv&^_Ti+ZjH|Dx*~XviK%X`>edF`e6IG^h z;sq32udm59wLW2bc;q$cc`6+Afo>|ZraH|-1I3u#XwAShT3G+{?H7zp~sf4u^H>phkiw;Q+&1m z`YisZ%ad-YOSk=Q;pBQla(r4rY?Za&V=|9_aY1*gJ03^sOm-q2CVFa{;leOVSnA(2@owFwT>_vxZz~MK+MmSN#@K+?>8m z@&)T^V75Lv_;<14xHgt+=3?_&iiFqJsGCKXZfCmk%{1})pjE?BsB6YS;fvADErzrZ z_j8-?3(|K9qvsv^9#L_+{pl2xT!*AT{i2-TqD3f7EfW}qq*4yq*rxpYfBJEXJmV+i znz~L&ZPy;tBa@S ziuM|$PiLNbmGB5933m0s9puVHGNX~tm2im{y*7X$PcxYFjxCBK{m+CVIFd6wce%Udbu%qr>a&VR-QBC< z#;(N?#17OG5v2K$&u2pD$?Fq^Lr{p?7Wnv+fL$+(uuosti}PWxC##*J&TeDG9#*Y2 zzdLg=ZBZ+Yc+tx?`D5w=+tP0Y^bz&`>gy4t3UkV~>nfz-fAIc=e*AphH~&RHzdckr zX8{aY2`XNuiL7?W8=npSUzGCvZ`e(na^knvGAO z20Z(-u1R}f!&M%0AMMM-B;&*osSAQGw4VYI)S9T0E-W>AHc&$fiJoBWBnqSs?Tvtv7l`M zxq=H?T-?jT!SD^WKPSL>AoiDEK@dyj-}ze@js``fdlcOn`B?K zPY=OUq3n4`JVHH_45DQP1gD_rfr9=kl*Ch0>km%A0ecDcCv|LNPeqXQx+&;#mt0mI zmvGT7fI%GSkKga$3Saw_nyUb(pSaR29xT{^a)FODTfYn8SZ1?{VIYl7r5Drh_>vD} z5(q>FX7CezsZb;97=;s-4!Zb>2&*`zy%@8RORTOQk|Yd<^1DL*54e3~+-l)9z^`6x zi0~cT?{k z2a*8#A+ooIjQJ6BHJ~F@9)6s<57#D%#P<3>W#KZh&nUBB{}bv9P$XhNlHCi%*Bf*B zgflpAqpo+!Ut$2tdwId!`T6GZ;}VD6QIq>ycQSJ(`%8orMP|Qn&DhD<(%O)%`ZzLR zw^;@LVAZ*~De4b^OD{_~Jx;Za`V5Gv`uRLAb9G^2st>`r97Y_VRo9Pbj)Cpne|;bw zM9vwVMP{4Rbzm{TMEI*M^O{;*B&g2!v>Ukx?ZCT|vZ=b_{vxUyuiz+KfCQM!x5ope zSGe;;J!+8zK6Cr$ zO&wbRegT#J5_C_v5no2$-=Ntd+c96AqHP*K#vDm9AX{BDLH6^vCae60mH`r#rY%B{ z5bs0R70W})zeAjF-_Q42=b_TkG=iQ79p&}OA+?6Fv6mm=0@{tX^&cyiA#$_V0fumb z&^`YrBuj%!L;;0~e)E&Dxj&xJ<=vW0X&n=j47(m*fMO#zMq<5Ew`14((|KB zm~+F=-Qp0?WXGOGpnk%ujTLrZpbq%Cz+lODD8H^1XJv=M@_JVoH>=_%t0cI+bg8gP zA)q1mELf?V@eo_Hd&;pCg;M|cL!Tbi?kG@0G@sHk8ndOMy1?X&c>HjTq=xs$_QCU6 zHg>7n^-sw@TWPF=EN2kFm%2y6Wioz6cGxhlD|j^348s*68L#3})R~ZR8jRY9Gu*o6 zN!a21m%kuT8_Fx4o~~-@wB~Q_*9yiImZ(KWe!syzHu#jAZrcbU*9o}WeTLzG-kzwd zvXJ>r$&IHBJnt(7>HA82dmOUOc~(`6`lWAKqS2r&erUzA9xnQQ>0M9}pJnNnHdvtHC9BC>vv!ONptkN9qYT+#>ryvhV5?AVkXf*G7U$ z32?ei7rAP@hSD}y>y6z}Sk`3vIqcntMTOvnY#f$w4|-F%q;UhJNH>)tikQRd;7Xw+ zV}o;S8=}J}v4>oIHJ%SG)@$`XoIk3d4Io>cHbH4_Atl^))Azy0HEYtybjS5t4M+$luDh}i=xrvwyr)jU@NY^CN|iNIs0Kg_f4*4#Fs;Go^T z^+A?-U)62drDs1@d{Lt21AXO`QXJeQBw91Y2WeqU+Q^T}p5AL8C+woT-iuWlvyn0K zPpRRV6rkrg@e$V&Ui^lOOrcWtdo?(nMazaaTJDO+QQ4Aj+bqFU?f3MzRH``fQvzzf zWia_Lt8Ffgp%dlnODO$F(cTk=id?&XAV2%}5}4mY0BjpzE0>N$K<6O(Y2#c~B>=X- zTQf-&zWbrx)7ylh0~5s=~X^uz|v30I5ovDRV)o&3SP3BlYF1A^b3Q{CDVO-&GmLg8iFAFJ;tf>1N9OlVs$&Q+Np3qOe#DtMYc zg4K6()dsxG`>EesQ0$=9g=-!zqg|kFmXRK*03a#B!R1Pd4_szK@OtQEg&JTnygu^R zZ~vPMcv9aws@DsZim;btc{cv20NhJg&Oh_VVLdR>h@{^x^*r)J`0aJ>1!vA-Cn(_{ zfT+@Kc$39Xr6opd4E@Ld1y?1}!V|E6gE5S7DduAvup$7nyvI}dSfrV%z2EbJmwUjD z^rjPgLGzRA(6!*-&;C6D-@ypRjXw|JBm$V{_rzH#}tB#2||O0-kwq@Q&Ai1op$74Oe~%$g$lgP)`7kKo*HRdvLnv zj`es;^N>jZEpAyj2})ela$3`sS z-wT|DTyHR|{4o8SIy5s@T_-oP5e3M>>v8oE)D5vW!r`9p#0xDaXRPa;&7^4IiMJa}zv|_&kK^?Tx@d zs1njaBfu6ZuFV+a6@E4g*$q_@MJoXZl*&!D1DfH zX~4!pgmVGEXObb%BdNE3mS&ANdD^)mB7$JYPbqC$B_uf)U^W9%ax9m(xJDDE3FL}p z`W4xIhb?#|`KQ@~UWve9P)hJ^bH5*_KP?izEqFiM;1F)I*?)8$0b7LiMP_5}0=Y;T zOF$w=1%o*fierC)S~X^4!-~7?PSX021LfF>`MNsaQ&-~Kh;7#7!<=j29hgV>!LR~7 zW;vd%Xqoiy$km;@D8Xw}kngJax%=Qb^x&IRoABfI-f@Gfw2fFAl0!S)mvqWInRkCYaZl)f zG*K4q*)bN?>_|5T>$OJ%khD_CbFUW|Ip^ROlt1xy1EB+0ON_s@P7`H5w9m$H;G%l2 zbo9IlIL}Z(#YMb7ShZM|u{w~ZBz9(c5KenL!TLed0|u#3`79v)$K&0v2(BuAavD~J z>0g3CwsMzM@X=CXhoj7}y?@*TC})Th6~I5rm-K^TE6A_HoCms>u5|tO8)Xn}?TJs9f_5tF#^Hf2+B~@4(mGRzb}?zG$SWK-!hEI{p7+n@CSx&TV&0|R}il~!MOVv z`Ix%XKoY?WwQEp}Cyf)xe*Ab5a5TZj%m8eUQb$2G2WnMLrPrbd1~fTITusQIJeP}v zQYViuNR{JF&R68#pc(698i8{{3FiHOuCF{h?1tiW&ykM(rSb{lB$!f|!FRsR;KNxX z`&dE#&x2JkrZM2gG5!wbO{hSNRK1!YB%l@STq^5wX5M1H@fAHYQqzlfCNag%UaELh zqd=7%^~+lAy+)eNkN^ID7G;i=P=A0d=Z9C!>xn`wD2DYYXcNJ;5i3?JomV#lgTI13 zbvQ)YSS0jK$`vI|4?=tP+(zZ}1XjLWdXJSSml-coYZ1)IiTa|$^Y0!dVunUhbV&1L}su`L(=x+N-xg-FP50_tCWi1 zF5>tH3=t`DPdh=1mBmIl(&An9tZ_<=Ko4mZ#4ss0R#bkJf@4?}vpj z*E29-d#mMjbMNit%JrT2zDB!HJ3go_cNCFNj=SKX$K`K3uB~}0`047~HxoG`yC}U9 z7IJp7r_MypzudFss~LzrKIi#h_vh3xcYpfWncH7xeJ^iiEk#adxd1&qjK_zemO8J# zlHU6Ea*Wpdl4(!5OLm& zW`3kkAuM=0NS$<}i29^=%^EE=cP6QtG!XaW4WbdzdQ!(F zBT3m+RlKc^aA$(bxSQLT4 zTx86l6qa{fC65^t4Mt3>TCJGHHVaj-s>?H$2`EzW(I>UGOWedj)3RT-G%<7MewDm{ z(r4>9qXXUibTP^=!c9Wui3+`Keb=y9b_7WW*(CM*!@^Z|w?)@23A@NhS?D9?Pd_h4 zxuHuoiJyh%DU!2v@MxRCB&cS!^4mi?g@?v4J+v2(jq6(jtD$o4g&|1j^-LSat{lm^yag1pl;?O)Kva2 z-rh2->b30~lg}!#!~__aXvu{Rcc^Z`qseE5D*3W5;RZi;;Gs z!B;#4S&%DotW%AD>F}u`F-=4%4d4B%M_irRM&J``g?bHf zQZ^d{Dxx{8GxGHXL?RLw5_MRo#3d8uc7I93Qw*9}FXCB4W@Smhf3T+)9sA9D3w5y~ zP=!!kZ)+<+C+C`ETh6pJ%ww@i_1)ix9li9as&#KSW~$9s`rAO#NpGgvZ zOe~lF^w>ivdc{1N`U!3S!Lx|f+|w+W>v*K`4+y1S^=wp;8ZF%XE-ii6^dq*V8m_;UO zmyRRWxKA`Ntey(xY>g4fUpC`SBWv|Im|{ceP0Ef1&;KWhR>S`W)D-t$&7I0_kM{wK zp^jE0x?9(}iA{pH-#&#fh48)o-}Z0*M-*{Vbx1y=Cn7ft25Oj6_~7|v3lays3^uP| zU?ySDuLPKOJio{r$W6Ea91!|?fr`erSr=5%OqAui>!8;{XxRZ31f>x-tOWxJWSUtV z*5y%Pa<~Ed4hYx%#m1NMbPsDyP5>cj_5^=DI4ao3^FdY&1C$noRzrfU8!;sen!jLr z226JiIx}DDp(R1+e-K3Ne-NBWILPCVVOM%Gl2Hj8 z65EIsTu?@}U_?31{KgA0V}S5xI2x?O$z+t53;`EZ(VO(jh874t6)qYz%)}S0Pp8j(fB7IY%lhww*d2PvY#xxR}TXs zkdoj&L3lu<{aG}WrSupUHl0Hu7^8_kbTk=!7w15gdB25i0LF7R5kw-yF9>7ra{`+s z-U|5PM2o*Y#s@L zV)PC=aF~tcLas$-IQ^(^4y=F!fR~97*9SMmGGNiBEE3R^w?t1sZ~{KC{|@3}h=cWxDBzdu~P@Rb<=%r2cEM(RQZ@II(hnJwXmyT;Hjf zmkirp%U-~)HiR2k5x56}-^L>7pi-|=!AOVOq@k2%AU4-)(IfZydN)!BwHb10uWDIb zIU1XNv{j=gI4RoxQQCFKUv)BL`2|nmkQF4ed;r{NP<;`)Y01UBFi}K(_VxU126t|N zHgkjdbAF3VD^EaS5m9Yx^T7fdl->ba!ka`^iUveJw>ip{gv&e+%`-1o)Xp13>C_5{ z1WG=b_+XQD8zHEELM>LG{6R57a%;KlrCXkJ?}d=J~t*726B;XU`B zr1Z{2EWFiac=p%xGoywej#r`MGJ6-PMTKNU%ulLeGQlpfnkes%t{4ItJscUIA0C84 zN&Co#rI3h#cZ!h^m-EoiMtW@zvlB_b?wQ>DBC$Bk#!dRA@<^DjOnsn^2gkvV--0dL z^as~cW`r8QXxwkwZD~3D-&jDo%9e3~A`xS`>N=$QraSiv_ooRxjq=R=O=-r%9_Ylf zQtVolg-K)|>D|u@-d7`F+Zr-KPS-|5ESndG>I(658_uxz@m}pbDmQ;mL2GQq1=g5A zF$fHlmrfmEzDW7WwX9j-41!98Vgi_(q%FDoCd(j(v{zEEi{mcOj|K%a`7PEJB8Zug z4leZ}F$Q2>@;sCpqga|-nxTmm^V=}KTjOx!wv}TzH zKvemF7`f+BMIJZupw%`dR&B8!AD1POPXrGY6+4;|F0#5{Qsd ze?QuMKUMk^(_3wkbt48NPn^l@94%aMumnefB=QE7D)D%@kqG4toVt|9pgsX;trS+C z3qnr&CC9}EM$d39ag_+5kY)`U%e9KtwTQYz{*tjDB^9#?5sS=#W5uCbcCZJIIMLKf zf$5fR6D$YL5sCElCaH9NHXS=L@%=uN22y+yvMo17MV6l+M~B+p*yK#qh!F#-Uz{|d z%U;8WpbM`9f#hI*PlN<0JNl5fUM*9jxnmAXuT*E_X8sa!RGl%a#{3F7K!!(vT2js|3Lf;hHsEnidlTBTy)HZoDp1tr-vn!!A zWD&A4%H<~g6V2uIzYTi(mn~D(fDxf?u@jvK;sK+|sMAq5>W z>HPp01V!qn(~WG<=g5Hp?}8fhq-&ru8A6PL!MW44*5>^rh~Im6oUNw!@k%Sx!FxVM zkVS#vtOF1^@J`;px&p4_3jjWp2Eo)@;)B5QSb@u`DtP)mfcqP3#Q?1${%qbXT%L+m zz@|1MQY(OqEwl4$m$OHRsv(`#2RcrU-j*mk&s2fgsHG7Bp#2G{4o9IH~|fJ8$R=hHKe}?N_5BFkRR@Ill~a zmpBJP0f1ah)D%!QGLwvL->7Xu)LaMfHA%krlqHOG*tWy}c`$o_(w})A9i8@EPgHO+ z_7Tv;Y$YN1-%bYYa*+)J|abOjLd)H_3Ov?S&}WE=NS$wo@)Fi(3km z)x%b~2=g7_6eIa+ynCh0Y+89%A6*@a_(SMrg5JU@F7(L6_G+pO%||810Ay1bF!P-Q zdl*+8_^(ZuBU!Q(Kfoo6&C)9D#sj4OLNG8F$hL<$jHBscV3>~01W2b#@(|TxS349Br!2&e z?F5v!0^Z&$r))S>Kb}oWLE`byb7lIUFqfuw3$^UqFhh*K^X|2&9~+Da>}ox-^o>yMBftbtea4Ny#w?&15|sj>%@`YE*BHJ zpn#B))L{z6Me##5dfk1vU>9}&*Z_)NEQt5WOp;!78d{Q^)dFyR`}`x&@M;aKQcf7l z)vZSKr~N_D(7n&-hbh_h6-?f)cajJNimIL83fZadD}}gP^dl2IbQSLsyj^%>#%_d* zs*h*E*Jn%nQSHv-=}my~dMD~EIVndT8#GmbSWBiBL!Y3$p;B8f4eM;u zhnfn{>t3G->Wf0rE+rAHq)(9)$xci^$l5pgPo6_vNCQ;{cj14^PuWPyI`Mt|7Jx}zUw5qA&ui1iJ(AXGi}FFSg<(pfviHg##L#VTMeG*_gE{% z2b6l^ysU!rT_Mkg1z=qIbz-y?bxoIPPt^J~h*12-2f7ZPOg#Vi*^ZwmWAO|o{FHYY z{L~J^X+6dC-y%iH#W`(W2>j|L)cwIej~;XPyi~M|eGM=5_)v_azFQOV3jX{y(iXvT zrLkA1QPi6*Q^MH7Bzc)~=0qdoRgTR zn$VjkO-P2fkU(Um6Ujy?V|+KZNPNR6g9bO8FC*cW?LiB>ruNi6)6lq%bt1IOw_|ei zOnc#AjK_KKbB%mIidGYoQLR%c_fJB<*6DqGuNC#52a@yR9TA;*oJD56r?9pRYqvez zCi}bK7PSPjwFPw&iZ!L*2@?LG$qQ>G&D3e&Dq}mtp;H}L?jFWi^TYHHcj)DQL>uTP z6KBbOiK+ikx}qjc#iz`d=cIa zZG%C`IoGkL^aXbu#5&q&t7o5(dxigG(l0mJCq9#7R|+-4jkk|VrBs(SJ?cUmM2$uM zF5gmyLE3wQbH1(gfU;-cW#5s!ex5^-$yx}bC-dnVfLz$@IBEf$nI3fVxQh2rANbIk zT4Lwg5lc`PVHT)5#KmL^=A4}z5*UTTwk`JDy~wKg)(34%jg4Pm zgvJGhncfGfPMkJQIGSJEfqTx7M#1G!L0YoMGEOKwJ@h(peTvJe>E&SK_-Q7c@+qd_ zU6x6^ipWqTqj&KoC&cJ?bkIQ8+Smz<7$_;0?-~1!r=xK-f>lny^ z6-t9U`XkbPs1bbM{J=e;{%X`a5s-3};!LV&-ZYw;h`R6zf=AX~Tr3VJyc^QzFN5d~ zlRX)HlX}WLxYXb2Hcb`Rix|+`NEAJ2PpRc!qD@zk#+Oz)$5G8YLaA$^*x;w8gVV*W#}?S+7&b+y|n(T3I@so&easg}PaONXXkWj07wTXIoJ7c;*Q8`724LXmbR`iqT zh3^vEZ39jiKN@&XvA0&4RDTQ$5azkGN8eeALJMU0wvLtB#@T{LB_6jz?9zfZjG}@z zAKn|!j&i?;X&!yhX{wU#t&x$RxeIlixNk&iX$i#xj$qsnYIOjd{v%(3stDE%n0$r{ z{pl9bhCr?hah6kXPZq>k=Q<{Ca@iSVb)4st3II|Nz_0X#0wu{mKmMKA3noTFZDfSq z801@6t4}Ft%o=S}VD#(d=^?`WpltT`AtP8wzJfyF9oV*FE${JjY_gm*^3IN-WzyKkPDW=V@C@=K5kCt|}I4rTT%?;GSxtp-J!p zmGirjHO&h&H~v01Z5irS#o{{44}QFFx-Bt3-<0BH+MS>K^Q{u^sRNOZZx<~8 zH^5oXBzstV8E&y3Y~L(`psp&cEUiWu#5X?Hnr@gj@jE^P7rf)b2ZfPMYfrKj5Xst> z!vDVe_Nt70|EzY4UFZx>bdWt}xR<5Df<4;qlGLQHycVtMiBBaG_oE9ULf*SBMLfo9 ziOTl07^V}jk_WZA3PzH-dGaRLzp((I3zT@Lcadh8pZ0AUZ9M{>dqKS1bs>w}vP*h- z*_(_fn%J+U9X?s@BJp$^eI(eDs~{4&Ndf)SXuyVXJ0h4PcLj~LRgcRM#QWW7`O=u? z+Y@xy?UI%dO5rG~y*}@Og{>g*Oud$S5^JjCbW-encUM`j-A|eic9zu_1~NZVsG`Rq z3q@&w$D)H$yQd83$XI7t85*B(*_x!sL%MeIIZqxnJ7~iW2bQ}$C@vaZdh3*_ul%C> zSlgmvR}O{7VT5~&r-`}V5WXOVNPUi_&4`y3{`jYc7zCBD4$gl|)Z;d4CxVae$O8!Y z?}e`wjH&TH&d?G&d}UIlXZ)uqHKqH{SOR?+Vb#tqsv}MOo)b<&pRJYcV^1BAS?zlx zF>f6~@}_9@p-H3q!sg3W{Jd43-FN$QeCLQo<<-X034(U{lG@%wi=j`+;KEL#kswC; z05ZLOJF`r?6pjy5?%yZ<*0I;Eb#|ZUu`WwD?3om+h2khN%EkBFXq!T4h!HM-L2oA? zW4M1UXWcRPT3hbjuv^q^y#f=em)oXBOOfKd_t-uB_19UOHffNAb+FypMKG@ev7eRA zNqdZR>3!dkdsP@lj)5(lsNjH(!%yYLF)E^U2D~1yzr9BoVncWu%xuofZ#l{7Vv#>C zbCl~?aag~*p0}7`>(aZ@m9O=115qa8yDsEhha%uPFqNizM~)w zqb$87?pw+JVfUmu`$tl97Y`b-Jkusi=Ft!mA8PpPv*?J&o+-aFP?#}#<~-M(F1FB{ zi1yi{oa!%Ue2DUKdYO*)z-%k9)+BjRo`c`eUX5Lyf-0gp zR+B$-@JIFullcKYZ`fD0_H1OVm34v|Hg6=%7D-Eve)y`Df~zEvW{Ti)qd2=nA@9P* zSDl$8q_ny7$fuF*2dPFnJP=j$!RqAr0XUBf4)=Hq*JYn*$dt%F->*MV$@7;uP z`(a9Thtafg7RBK-y{F#gxc0+ooVE@lY2!@US%F*z4y;*>N|72ustL*;_x$TE7i^zT zEiS+W)C$Kvs~-+W?Z*16I3%i zjLI`OYA(7@j03`aZrFQ}kp|tS zJBZR>-9fBNC%_{o(fg!!u~m~Vg`R2Qhge;zStG(_9KJ2ofAVeAXES3scVBt;M&d=A z4HnP)^Az;cSw#GeE{kD>y6vW<$bwIr;BK7x$55G%8eLM&QzCo>=VRyK_U)bni4Gb< zDlZ2w$~Z9R59$5!sftp7eaANfb_Dcj!nuG7)gMxZYY7S#Q4bizb(jQh}W1Fu9kO%(Bks^s^ z;|ryFc&pSiSlYmck>+)E4G<*LYFw!?ljind{$CEj#Ke$Aq@`SGF{2Ezb#tR%B1AP* zA{+`4sE+b=4;ri#)O+GXa#$Xi&*k64`AeL{Tyj>5YFHP7j;ti6q#D$O=7R7hL}@FY zrwjw9-UNd9{TG14ks`@&H5eqt6*FKB$7t0v3N-(#MZ9xS-RC~&`pUQs(mC{*=9s=C zfT;10J2)c-o7Z-m@F2oSWV@CWSAY}pV^w0VLLEDPYyo;Fo0%hcd6MikDVyR%p02f% zDZK@PO8rk5lXvY73zapYN!U5wcUHNF-I1jrdeAhLwzkbLa* zfy-mvOauZHwv0ysr0dkw4*&F90dMm7j2opaL>-Gf;|v#vU*aBbDykBa;+(nTQjenA zh;UqRseM_=jWZ2(^H+J7pdD*W&LJb4w>7ES-Prl3$J^N!>HID_FbQ=y z9V(#mA;+Idb4&-zMuh<8;HdB!^@9dsW|pD4tI8J}E+rxqK3`bs)1BY$ivFM9cIB1P za7UzO)ByF%m2<;a{&3<_n$_9|T#JyR7GnB{Q2zq5Wg{onh!9V737uHcynBk+YOn0x z^+J3#KA z6i<<#(k$@Ul^;i$y2q>n5{oPQtOQU?$-{07Y5vuge{7 zFwX?5W$ohV>QNzDvIaYOvY8Cj1 zihmg&{YuCM&oruFOnyNnoG8)& z5iv}08NUhrQ?!j>&8Xp-=_}tH>v^7Z2gyyxzcV-NYxD=mD8#2bjU{IY<@?)2D4qux z_P!RF;`Zrh_9<6Wp|wq4ZX$!^;tN=XZ}8u|i=5f2tQmbM@eliP(}Cd!dX>6plj zA*&^6wOMuDd?RwId4Umj)pFmS;UyoaXiJ~;leqev__ESgxRg23Q;}GbK90nNjBsjn zgM2bO^zoH4yCB{bee46qNrChyZ+WG>C1cQY3yklWOXn1Nyz1CLW>Y#h{I-5$WsP~E zY(mdHp?J++&m{Y^Fj@vq|n0w8WO}rwGUGXKNC!=t`x;WMyFxX}@8>}{_(L`2Dljfhr zcwkOVpX&(^2QglsWh|<0|NPyo%2XfFu==Iji|RshgG(kag;3)ISJtB6=R5UZTBKDU zuOBUvRjlp!EQCkBZctkf%2}AoSdOch!ePYWMY4;~-OaA9JJyYUjTvSW`QGHwNjY9z z@HM4mG=WFZQ`Cp0NynLOS5@_#AE+E3YQTs#HH7v5IJ23QVG01O^M8$Z$G3fCdnp}F z(n%1bcXA7kVj{*m_V83%shIO$(v76d;xf|Ivt-@*QbG?~;ZGq_dElA_E2YblokhD( z4aCfkMDupc9@LF93OX^%!Gh_v|(Wl1UH~#a$LyWE~A8 zTiGn6gD*Ycuee-(d7ogJ;2_>OWf+FXX(ibMYq*MFou!t=zDDnN*Bg+}>_UK)iJz=w<`boi zeY4x0R@+4C4FAz}poenLQ#c}k1~Vl>D1v>2U>ss~CHx>Xa?T^QL-xoPxVsE@bhjB$ zHJwj`ATZd=F=pHPd}NU_0{V(y-p{L~G=I+<1V$}`i6vv_9(|l-*D9ksUZ+x9Z4_{ zZaU2}a19!8Y=U{b;fUIj*(FUAFt{Z2E5UMS`i% zP&Z~f1)(SRe-kGm90h?C0|t6BZHeuN#(gshy-qmL8E341ptkqS;QO6RIpSsZ(u4a1{b zoHze%4gasNH_3`H0Pr9v~2;jsiEU^g}cq81FM+(WLxP_*@nL9qQ2(1=^D1zdt~ zLl#WwnkUaa-(Z=8kqSI);+n8IXM^?nvweaG*pxNu;k-`@2olVGb2)!9R^AGK8 z@2md?8OX*CoQqpkU}>67zy+re9i+m+H@x;R77^tJgA^|Ra|CD~e5QRXc|y3bkxElw z!QS2qZ4GdbFb0F%Oes_{_)o;Mi+Z^;N12exIsF-CDDI^d=X*?GBEd=BliDcXtpgRP%{MV}+V2Yo?;xFC^$Df+_ zrIHyU?-@iCAewU1s5S(6RI7;7Y31E_Sk)_A5LXBlnQ9Ux<0lEj67qh52p}@Nc%8kp zTHxTFW$lPZI3YwX;dh*Ub#UkBz``Y1o5aydjv>t(-u0KJcc;Ow&-*k_Pz)@NWBRAi z&hg;QqwGj1%$SaAK82Jy(35umtEW*DTX5Js+C?xH0Cc>M%JAcexZAO3yi*h)OU%H3 z?=-8*BRBC5I$7VBAQ_Z2Lt+d;%_p^!w(3v1dH%u@b%!d(`K)y+8?e+B(Y_R>+&Gr3 z`yDUW+K7pW2+%2(zJlW$_E;~_-GDa48&=RKXcuqcQ{fQ`?|_7y2FP1hlkJlkM8##lP8XeommNgO!BdelKSc^DMmB)& zeuao=h%Wrx6cP(QsV{NsU{2pi^`I8odOgcpR|w0ocRY=R*VHb&jS`4X?wZv2t-KJn zDgjkT(785%V7CK+A!uc<$P_u0l!z0rwKW9i5e4PI&hDp@5;pAuxG+y#AP}tG@B6n} zPymItjw-ykt*1Brp(&M8r4C`6h0=yMVpxMFx zR3w2?198K?qoxes8boFoK2M24hV2HsGIGUL2^m*MRrq1Du9q_ zDX$d}DX4oo6NLawt=wkWWXMyGq(L~fbb8Jp=rM<|3*@-)IbT5xRWQpJU*0^eAb9M5 zLbBD%h9YtT?fyFwYWYH}#^F}2KX?dt=BlLOTy)GtlnxUv{0sv1+}{vRznrVk##E7_ z`+O6{T^yMiDWfA*MWaxRH)!GN5E0ItGD(Q_uyjsPTTKa`JQXT=dup$wweDlDFni38 zG&6UcuoBj%Ab%hG*)xFfm`L8T9if@0e}X)ocVJ!5xmT(eumOq)RrWIOkiH<2t%1{Z zg;GzzLmZbxm?yz`X)=zp(9$6+He3(YKxy^3=3G*ET?7J0Q|Ou;mic{vO&M%@CmcSS zauY|qRA^Ct1N_Urlp+0};qYDfQ-wfSli)azhm-=egAK^L%&G)5iJ9PDsS0BRf- zv#w!!t;{`{7tKSB&x0ryTDqyW3QG@;4fg}#SgoXyadeR95>B3xEsj3F8?z-;io;}D zkGb)=Bp|}YEquwEnAzGXnT2t*))CxnOcJ!*??ZnFRb1ql{VDmzxE=YTU-tu?gi990 z6g?01QX+sMdU1H*}PCb9QXGRZuZP9!#%d2S2XzqP%Ra{kH3CM ziFDdyq%j=`E7Qsbi)&{?bCJ6ocr#tE9L@Ky5gxbMrlD7#C`s!5`X|_;GMQAc@fT}0 zuU-;H_gP3iIU^ZNV+2vVQWohl2EV-Y7ZW7y*g7Yd$l>EKBovmU*s91xMt7VP;*z7H z0pzX2@&O*H(&)PgVbbpf?u@y(S1B&fE0!+9;HAdXG3S~5V7S$q-0?urtbY~ ziNsRYiil)T?i2l!_lAvcNt3@bil*CRekRIf=M|l(SqjW!?Aeo63l}I?f zv6|dnW_$@+r2`MwCH1~CyoVgC^phE^I3@cyKiEw#v;#;{Eg5lt8GOUZw?!-0u9m*O zL*^7)Mx>TmqL(gCH7u~-DqZ7i9m;wwe1Ua7apsnD{e*4%BuWkpQTs9<)}#Tm$LW{yL+0|KbSF%`O4(H zPd_a!g~AfGAC{+gQZ&GXQ0)j?Q)TE_N~?aKg;>j#XM1L! zhwCNN!8`k}OwM2wJqw#)x48#0bo#0_7hV${#eYN+A4e;$`jQNx-lElcVeQI+x5DvW zP3pUW`m)$+r+36YG2xfB6fWUr;YRY8$FE}-PQK|%E6jZvC%pO^g4!=Ejz&Vn$B`bE zETTxLL$@3y@MmMwgHVVyNCKjAkLT0S_qz1MR{Vx&{gw6g^soh_d)>;ke21S4^DSZi z{g?fRDXpvnUT&S$aQQ}GvhMVrcrtcmtHrjhPOlvevCb@E3C5qC%8W6VbH1G{J*~G) zF>_c4pORBCZy%8`*A>?FiklcC@n0o=@36`|={u1V#7uub_=bo3uWk+%i=`H0EVtHq zf@z$zE3PG%B`N2nuQ3eq$;YStV!dOJhZG5Hjd~b;JFdNFnY;G-74acNt_N@C((e~z zyVZqFWhCizudjC*S;A$KW82iV^nWy%S|Q)UFk_r^z=sOQ4J5H@3@fGR6hXooVB0bw z*KaHJR;@4v!a*sz0<#zQFXjZ{Hybd7Ku#f}Zg(4U4D12-SX#mqJ((Gb|76eP&o@9O z0wmX9Pu;GQVMoF@i}k)Wtbi~^&B6v4NFEHm9Dohy%RQIf$%y5Z{#|YbR~c|}{NRCs z!S4mzwCK+=kq@Bpr%KO?_G(Le8v{Q55V%FaS=FmcW0*X8BjUO!P=I%E3kwjGwke?1 zi9+R=cKYkquGV?fn8z^T1Z~E%OZpuJz`_sLyEzynV03U$8q<#pPOMY_byd z12MZ!l2Rd~QVfVO3LG9A(rYxsR0dJ6j61N5MOT#Jsk;pCRQsK5ss#1wg0S>xp`N~| z1bptGbNYTH?SrrxgPIX>@5exKyq>wIW?5@!>npx$2(8A+qAl7&RW@A{mKqPFQA&p3uM7#&wrVQg8b+`Y<0(e&bg787y zgqR9Zgjk`H4fPcP{NtHb-@BSlKHmQRbY3zc;6VS`a7Goxjav^+F$VDBTr{jk6qEMH zjK>*N$D8P%?41Gfkn2@{o(QlzpMH5%;1LOi879v}OqFaFhOAb?Jm@6Fn}5Y_LC{er zh>IAn5DI^d=a31>=2m{EJz>qF(FW~Eh2MO~Z~}Ya!Da!m$-6A**4A>y&kWV?LO75B zv>?}A5!EeM58;s5hsFrZdhwhW4HB$_tM@2PM&9(H=go_&ffPaQ1pp=Wje_0iR7i5Y z1{`%Hb)4aV+PE#%)odF`d2aT@fvIGHX%kpw*{}R`scE31qJp;OIfM#4a<3uivy@s_ z4)~@dHsXVzvNE2&aEach(%C3Jewiw(aSNc6>FbBQ9YL%Oo06La=#7hJz>?)3Bf<;I z=vU?-W10KrPqOi~in{uU7?~y2?2|tO8`;-WRqS;&1WVFp7r*Xfib5`CzMAi_X@7ew zVWG#x_sc8S$$=q@u3(81Z_hQd1ebUh+GsYm@gM1Gkb#&CgrPM2-Yn`FQR43{4k+3J z!NWj*QQhAiCqYspR@M4S7T0N>`%M{V6`JBh_<@LIC~_SV^(gKY3>96*SW{@gYe9r5 zs>da+#hevnDtmtS3^DlT@hK+RJ>ZApf|yc9>XbE;R^8pa4g>o3UhbcaQqI@AU)2I0 zYTR4|WKS4*X2(6$pq+>Z^bEsMhbLMQ!L~;H4{WRI9OltaXKC=@MQ~)WI-_&XJGvKz zkflAvIjbZr^ZvKq%*W8#vq=5(i4IA>ii7QP2Sgk}{Q_^aqV@eZy(GrUXjq$kq7uB8 zO-PxdNbO8rNbS8VQDU2XU4`-h{-II?ojv?-nBsqOuKjML#s@ejio(a%V6oo~S;@Jn;wxqoldO$HA%6*A|@{8df0DCWQzP+x$ z=H{rIQVA1;~J4vHRXGcQm*hdRDfrfGdZ5jn=dB)+ylC zi~zIU;l3`1HSet{3?+~W@WN6_@~#C^ADHXzhxR5JatvY@#-HZ`4G$hixRHKAm^g1C zrBUf8c;ywr(D+L_<1MKbDU#SFOmPj)V><>|?oRH7fhMff)VYaBfY#6L0`Q0mwzIEr z(}iBcBFc#fl7a8|<*3iU(jCB+*aAv&Ksw4H``vFMlbztNGvL!3NRbrgFmdl;lk-p- zXK;6g^v4m24^EEO zkr{yZ05XR|E7?KpZV9{iWU-9qbFc)Csa!!PM_?MEA=|_g_i8Xw?Vc+_qM)-N&ix(K~;6tfb$-2oPQm(LKZ6 z8qDc}z4dYt;!woC>%sKk<v>($(v+`uIxy z0!M`772V7uKQ&j_6ll6{%-pY@kCJ9L0)Md}Ydbh?`0DARS&73A>A28jiao~h6c0@Y zi1~vxD0PkQh=a*h18HZtva*YbBhHJID)z2K<`$eSN)q)2fD%}a>i}&~%Dtkd(H{n_ z17A$@hcjs?A2Pp8L%=Y~g`SRYOd{gA$A{MJn;jy7Ti(nDd8?!ZIRlfpdr1F|j|R zHh&Th6ZgOJcDp&e{0ts!N|#MaoN!i)XlZMsbSvd#!t~oV;u;&)T@*~FEU=OkA4yKbuH%k29m>IqYGXtheuNA@OQVbSU{NvY*T5t(21>5|-jOy&) zh{tVH^(>RTmw7A|SFI#muAyAKE{)IoeQ!8DGEEe{NXo$Cr5|maar1^K^zNqiDVlcz zl-Q7~9d3@3cb(A9*z@^@_nz643R!&AXx8wMD}UbcfSdj}7~b3nJbee)hg zBTBLP_8+A86N}VaLorz-SvCyDDhmLA?fr34glvsapMRw)I%p#1RU7!K>7 z-&YnA=wzW}k%h5B!0v*n2f*VTzQ@j8?UU?mWuR|^aj0oi(7okf2?zijCPYHj21xoh zKrlX%#)x7G!}2ZMPNqm0(y+wfpk&>1WPUaOa}cJ+gBh4&0Qx6ColTySVOMnECtg<= zFAzO!9HKj`$pm~Eu2hv%gP(Q*wbp@*jy0C70a3&h+Y z)m5K!yA=K#(aZz98nCE73ppPl7!JmZ91=J;-QPZ|x99}uYX+u-Q3!s!g$P?*kOYF` z6a1kH+_$iZ86-y{T#lg#YIve>Z<*(}>3jDVP8ZOgw`Hi44_dtFJY;7t`P&0t4B$)# zMm;^?r2)a^{dl>?@}n&J#Oa-K)vwTrA$65t+-qvSfWW``^bjw#CKw$2lcJgEuvVCZ zodDm%t@^GP@2rfPtoy3CQwIRDb-T-97l2idcEg=GzWN6Y{RVvAnv8NSZYvMliLSc) zo_uNw!I<1!1++T4a9$x2J(*sPE;m`<7OR5rnWnvtf)U)hEYUD{!tQSGdOt{bV;QXx zri~$D#Wt8*y5Q)~;e7?#3hG`4`b#fH8Wgn~hy_!cfc?9VW7`*oyDWM@?g3UhCTZUt z%}%t0nybN4Mr#p8QHd8humxX%9~)Nhc(fQSgGuCB9t<_Egd*EuF(>kAiRXWUfnkNK zYz?ME*#00Ev;l$;ZZ!75SD}ud#=ELGmNN+px-1Abd>A0L7;b%_`pXZGVW|%d9!5AZ zjQz-Q-$2q=9dE;jE#ockURFvMO0*dWI|k3C$vafx!8DirAC10I&&IKA;3^djvy2u@<<#OfNGvdyW7hk6f(jZqC{XtFyYb*gjR($nc^_d;#1CHc=@W4tcj=s3I*cwOEq3<{|^j8GzDW-MW;h z2Y)F*f(W>)b#%oiA&Wv5SyFKss|Vu5AzPMqo9@NH0vK^WgK`FnXX|(&0=VxKt&4-n zed)Z~s3yZ$l*zAE5hisFNYA2BT~f&R;Bd0fpUU3NLU8>ujpIV9NX`GuX!3g^N^Ss|Aq*XZENHT% zbGE(~W`WmC7=&1(WeuzhxF;3n|NyT zVJJ&p;Ete}^k9(k?hY#aP0UB*FuKSW)ayIoZcAoeZ~ylfL7zX3_bM`5xd)M25OBFh z!xsxgu*enQ8`BJ2@$!O1bBpf?&EyG;%m7V^*E6a$nKo(m@NlvrSM`*J63ZN0d_*)M z=lu^vm|0ughhm2*^Ml42^|hkOThRjnHsD3yzQdmX3HF+`_VV;EcCCJVBJI-K@;Ns@ zZo{Z!_9CC{O5;3Nx8tDcwHVul0Ws&TAy|yH+~I<(prLlrQ7;gwX-4xt0NWmAy4Sov z-3Mgbh`#t6>kFV8cP;O_#AhQirR9Dd2^*=y+40+~TOCUxj#nUr@^e*jkTWDpnn%Bh zGS=Q*k}%2l9v(zr4EAMuh~ghHAzZSkZrIycnv3_Zb$_;{thLE z>lLD~B++(w}9y&=MHDn{# zu+C*4_oTj_*4Bp@)B(LmHkb+__m)5(aU)XTUK)sCejC<6s2zs3ijSA0x0|x zA9E+%T6M<;DHYiJ740zVQw4Ab@qD`zHszYz6z`Eti~3|cKwO^=Wy~U(wbr*!d4hda zui-4+$t*pGwQ-+k2H z&)rH6sREQyd)$w0u=eFbpAK^#z1Am36Wd4HR^a|Ftb$IuOA`^H{iKto%B%rmh@ z?udL77Gz=NY{ki5WRe=257GN1?JPHOg?17*Pmta#)x-<3GbtWNe$WLfOybln=8G>~)7}nhr0PQw1Kc4l_>p>O@w~i24qIw!rP}7@H3*`fJj=_7wBk>7ik}9hOj}C z&Q}5B|?l&xc_Z*nc10#FGEZbW8-?O;-w9l$pkrL`ao$Y?=` zBzO#8B~_TNHzSfN&H)8cC&#SS0DOk^O}=M>`Rvlh$eAy!`d~HOC1!j9QVm|-DIM7H zC;Is64vtV^I()_Ula(>^u)FX6_A*{(6rNUrh%_XBBAB{@J; zRxrcZk-qZ6q~sxCbwYQVWg(FA-o>R||8`ym!hc}Ob59}ahr!5b*DIrJ5VR8gkx9OG7aGQ)fmc=F8oAC`3+c7fZ0xuU3fgZWcu#nuDHiK zbmfjmr=`L%6P>#3t6aAxpuV`cKVt5<@g#UAX(Hl$!_ zu=+d3z>n9*!UnLxw}U2&Hl^#7$QssDr3#qTA&4YpP@25+-qXpn&iwwrSbOWJD%W;j zSh``-9TO%E(nyJPhagIbbb~ZV3rKfMN=V33X^~V~V$vv}s7x9~rNuzcHQ#sdJ-#!( z?~Jp*GtM7tjP=KIIblA}eP7ovO(BWMdw)CS;cqlbN)kvZK=G6zCtgITii>2j4`zAM z012RLwwz%)gxee&Bz$@b1IRy68*atG0}e&YB}$4U`hJ@?^duoWm5FihU>+MUmJyc3 z){wWF+3fCZq%c)wt*~>!kb?j25TeY0)~_<0p~T)nS1Y17v!}da!8|sUYyyNzHzz7C z`c}c`q=+sYd+2!*S(g8ClC90*S7JowDMBU0Gymwqo-y3LB2--cGlbU%5LtE^!&wT* zAA@SO)DPqGd6uq00zf zPL1roYUp0}zKTZ<afj`ViE7 z?t;CEQcDWn&%6(K^ioPfm+bMUwQqgkN@^iU;MijNsB1lsxSCX>NvR>Q>@S|bWH64T zH%;QxYIHEDqY@0m+s zNsc04q#k80%qa65dNAy2t7E2`Er-3OwD#_y>U$jQUOU?+l8N$$wC-^nu$Gnjm1(iL zEbv~TUhKE~`En+XQXS=BvL+3)=dsN6P=bVE#yIQ)*c=uRJj1$Rj9AcIB3y}5NV`dtZh3=_!egph_u=Cl|H5Hs zcVDd}zQRSkl~MSyUAmH`q$VP0)QF955bod3%7HB72&f_JDBjbWxm)nGgx5uwkI}~! zKzH;LltHY&S6ZdCcXb>ySF*W+VmSx5X`Akq*%q3!lf*N#Q2`EiMf)S~JRPkKJOg}? z9&4@;n5aK^lGGocM&!wLR}9l7_y@1qx+n68fhOj&v{kU%h1;>tF71OdX2jx8rEXW? z&O`&j?ewMRO)TL-ZzX9L)%v$V(zB5_gcwz4Df#`YIqSX!J90-OveLMdEu4IZ+MN5g z#G{=IdgqW?GxizBtzbD9iLHAce*5z7mCt1E=`O046_N;=yyBoio^ggkl`C&k4<1f8 z5mrs8A7)n4S(3!|!F5r?a)(k*KT0js5jord@EXao+HIbj5xgF_@f-QfrJ8Q$G)E5w zlWsQkHt#V?>MC?Y-OJeH#3Y$Frrxjj$9Sv5;V4Y1K&0i{5jNnElNhJ&%5X3C1mh}X z(%3)0d$^&?ml8q}PE>xav>rFxELLk|m5jK$lCm_}%!G8$#eLcRU2pAdi>;fQbKT!P z8GZ{NFCMAP*a~Xz%Q^{mi_e<&SY7su3hL1@q3-&`#Ebm`4u232cJ2q3$YPZIe17w( zc?)PyOi}3M;lEeSDs7B=m~_-yL?sp&T(YbpNpe}me2pdW0cQQqs8XRNcT@tmdSue- z`_-h}Qj2Um7+VY=OSNK+CpRyn zC3yvSwXr{(kbwCeZXtzh8)_xsOU0@@p>Z1+HHS35Yihwn&eH1*emN^>z3I$UV0}@jgzBq0| zhX*)v_e}l*%?tB&K`YY>*c>z6JVATu;;D+C*G>aS?6B`Z~v3&M4;GwWHGvw&gyhQZfeQVDL^K}@U z5rTQu0oKL4?2yS}>B*x6v*MlW5qw0vGV+T~W7gne1uON_zjFyyH=GQ23q9XPE=t!b zt0lEbdn_akfYdwgN(9R-VEhpmUZ;NevQSTZ=p?tA-$vb;_rx;~t0G#5)79dX!4IO{ z(0u7!_=o%d(B^FAcq~y^^lO4}aV@A4icH4w9zC%ISz<#V)eylI2}SMl8I*mkT%QeB^o{E-EHVo*vY zcG;)zSin%d8%=*d>Fs)4nk#USONi`QAeRc!A~w3L03w}3-V+(KvuJ&qLY&%u;tV61 zEo>q%R}HEcefFJM1*kmP16zA#@ePzjp|^;`otHI$wKvt_v5orS3`6|Tp|9wTV*t1! zp^^jE7ZHwCcySFqh%cz4W|?m=dal5E2Jg%q2EKj$8x%tX1baOiTj(NQ8UBCXqPi>0 z#d?ovh@MEaX`d7leO67AivE^@<2tp=*- z;U{wH3&bKX630Nxt(SwGP;}>MO`DXk;w-8_T(<)D5or9?gx8Nu@Om?%C|Hrb`>QI^=0lfYC|~=W z@T#WN6-T$$e%X`1F_SnEQ$o&MsYcsR6v#WCWH}&}Q}6Qh;J2Y3q3h|lEVev}0kd^A zH&P`!{+P(Q!Y)z_wzB{+U?Zr_IV>3Sa7!(fcBeXp`QF_*Ems#6-IKW9fh2pvWm}9) zkwp^iRGuH-N#fsl>;3^A0}FXs6MUCzvys1f-a8Hp#0WR z0sI^Sf@$Ioq~?A&sBI24txe!yxUT2upt({^X2xWfl$$U;X1K8 zxfUu}wE^qETDllZdq^MTe8|7#$ZnC2@%@;FK1GF>KBJegen`W7nve0T_FkM zkHODshp$hb3P9x=Yas8>fvAK(2Ib1{TWDqM<|~LQ&2-sz156m`RV6MDErj&iTs@7- z=E`A?Zu{K@joKpuvGLu=-7N!INt_&4Z^aVx+_=HdPbG|eE497skYyyvGjco1t|MNd z?-H1JmnI^{lb>W~8kAh29K}%^9?5Y@Uh=d31cHTEk7;a+ud7oRc2M7BI+|i3=Q=HV z&-~VMN#K@@Vs@7KV+_p%4k3f0SU3VNcZBW-`84m2f~JOPIwGOEJzW8eWB3`#j#-72 zeD6_vZ9TcN+)ilrZoNSH*6FuNI2uj|8BFq&vSi7>HP6Dx8p$fBvi$>J&Whm{lwV77 zYVmqCCI&{JEE*JJl)Qo_RE@DXXODI96Is@6$=KUw7K|}? zvnZ3aiDx!V$f{9^%vlzqt*A2B$Tw_sE2WX`LQ{=kyKeYCus*nFYH(?mL2o7u`R%?& zL+eJS^3N2?O%2mMieQG(l7$IvgTy>qJ54RD<7 z?D*Vy-Vqw9-jQ^9^ML(jk5*h0hslkq`bVK}a&{?amyyiy?lh8F29Kx{^VO$OxD_~S zL4&W|W5*9a`*YOwCn&wnZ1covzSGQf#BnF5at9+#+$I=sqX2x!S>Eq%cOi8w#hEx= z7WecTOG}9XyP%rwRjV9*y?X|@*C-zDhwv^qU38)>JyK6A-pTGvr6pOyN&eWcKtrOQ zNn5mTlta&|!Vyf7?$xJqEcQa6fT2uBsfa-B%Gw>BazWQGsCt=sP4=lENT>v}wwSw7Ws?2F}%1PIsfBQqBZZL0LMkCin zE?>h7dL*rwVg|7Rx<>_7CO98_KKC5{(Fu7XKH8P110%sfO6bcliLyC68gpxaw*sB_!xn zycLi+BHLSg)MZn24pY)YU{@12y8VWMG7Uf8pucKeuu0-ZY{NRtX#|_S?-t2n9K$sx|MmSj(5p1mRV;3A z&U^rv-42ZUG*fxclSQt7?G5HY?FME2x@h8%5=NU$q^-mAF-$Gq(znHO!z{ zD;?-SU;EXdtJFK^pp|nmw;W|2!=+RXc>#Khf+u5_J?!Q@e^z_bb=WZK@yJ`p(yYr$ zsf@IZj*g}aSo1=$b=jR#gYo;u#CD=XMA5Er&&5UpP zoIf-#ELv+U-_q^)iqa{s(nR%at9V*M=~B&NUf3o_&_MO#vEF;P)neKJfK4I3pH?zg z@s76~WFpmCgiV~fSv~ho*HW3o+R3!Oe0ndA$=PI7m<>g4XY*+D8I>kcI&1}Oj&BON zDC_Ta*|?lAb1?$$Agu3lOISnHo+@{=MS{A<3sg(WpzecUHCGB*=ynUG%8rI-0dy4P zz24{d@w05<#~odSX}B3DiAa}^ zN$*d`p9;Fh*9{*FY3IPz*|l`ps6>_m6EL~W^q^!eNDoU8=7%p3Vd_~YjT?YBaT*l| z8u>=ba<0LFTX4Ymi^yMRUZBy0H3G8)nx8K}_awT=6?C_EWf$|6x5si5oAswe%_WX3 z9Trb=ehRR-mxnTZm-^lLy+dVzIE_vG+KyMLR%w;T>wn^}r1BRP8DtEL$nM9)_lZ>2 zCkI=%dokN^hT+8Is-+=MC@2g*(Wbo)W;Ocm1)c#T++Q0Ed3m1xd-(!VPFw=G+c>4! zEBZF-0rA9Dy2+zi2g)MfR*Da0ltgRIJH0O2#pb2{s9`UU$RM=2CS?4mdyC^F*7K9r z-NGJA5#|Uoi6$)GIq4zGMEv_sP7~%KS9F+sAdQ$41`ny zE2XAW{cAb zbfy$>MI`sW5w0$$&XBMI_q&$JQqAhs=3Un-eQj$IRU)F=vLo1ZPvcKo_%P(-bUIvEu`zSo>utmQ)PG_DSwrU1Cd^L6K{}OV)rs^J&E$N~xjb+M zrMrs}Goi;B?nGnz(|VqW^_hWdrh2F97hh@0%lWP08!1Qe39*^e)+X=7ZM;ciTl>*^ zbf4(W@`MCi8okm`xwLKo7v5ry_szfV+>L_tHPObxB!i`$+Kn{X8$)zDGaJmTas)}G zP9voCBSQ`$qT#D@?3jiZ_X|V&J$s*g26eApaGk}iVCp^6!W+T3Ic^0V)atwj1N`>L zv5=7=>ScAg{dlL;oj78)*!YQbb#K6VbC>96)lQ3s_zk@fP3Ly&Dfe{>S+p;hGhCE^ zmnQza!n_L2gprbN%*zWofqD^vvKXTzf^I4YyR`Sh&t1Iwl}nYIvU8s^HwEMxmYFNR z%38^5xb`VG{5S=ZFSS7CX1`+hY5k2}MC$zDMZz11%v!s+L9e*^)&K~># zmPgfj+M2BDKTO60{4yR3s~7b_V++bn;YQ2_9VBTi7g9gIa`nPj`F9!-5}q`Ot$E?+ z6{v9y;fZ%l5D6+s9VRBndcabwtIPbywhE3eJuS_N0<{QIHlMMlx@{4lfKD6Ucyp|G zZ|C|{RDK7`{23%qTAcnVMUennQ^~LkP3jg>doJi^4=kIkjUX~ zm(7&N6kY^d!un6j=K|b61%vkIm!2ee(W7ql7QIN7{rz6;w*s4qE2ZjJ9E7&>xl=bT zvqex~r3p@2{9~RD6?2q-Xwb{+uKk=Yy%tNtDMCc$a`-1}n4B--#E)FVunDK2(3oIwNE zW^el?UhF0z(aj3!Tj3D11wPqP*0$0mIMhMe4YECY$MvKTa8xmhS~=aiBAx|0cuSM` zMf6G`l!#6Pvg8;v4w10f>htpO-w?r{YrZ!^4Ojnb&{5yKBv^Io-wL_(qv15c5K;%I z0H~C;Kd2M|)C4UdlP7t=^a1QOzkTjah>arImUyABU~~Y`g7a9;CJ1HQ)`YQ+A1tZ) zvhK*k7j9*UIslAB%SO32Nwmr(22)wM0zlQf7F!cB+sTrlRWSDjLG=70fIt8-njV5v z;CiFYEt`+Q|2AvwdqUJMye~8jt)N@%00Ha7jim*R9MGexpTjITQF5O;9w0nFg?KQQ z(bind_p93AO$LLQ{|g3ep}@j6Kl&GdfV`W>0CISn)kc6D;84#q3@b%nr!W=p$sT5T z?(sUs^L3*w=WX8Y@l8nc>f0r*Y5m*q{-~IFR||5Q-0J|@JQFW5PT+-z>La|DZ@#Obih*g!y=cNuVSehO)+gwVe`{6(2DkMpO7px+gb@Df z28IVYGHacYi9-p*r>l~_t16ZRO@Kdw)Y9Zbl_ptT0JRM#(ajG(lUWDQ7N_s}z>Fc% zszJ2zr4s2|#@uJVqOz40kS)CZ&QjunjhNJZatPZ9~ZPg=c<#&YDi&uL7M)C-b*E?BsI4c0OMGyS#HHP`@U-_$_3FOJZ9f_ z=lKC{CZgiNvg(P%+$vx)x0mB)_V2`&6+?uxhIQ%roi7g-(K?qlgq>7wjw!B)UxO(s zt92v3OMIr~8OeMIDBr65d>K0t=hgbw!cHvEt`r*u;;3E7^ckVVHfy&HGWk_-iJMnb z-p5XxcEr{6Zz@mh6nO?nsy1Ohugcs(;@K1KAj$Z}Og}vL;XKJj=?)x2)kF5U|EVP%|r5_iyU3+=!0n2Xqjdez=Rbd6*DX?6KU!yLtAvtrbH0cJ$;q@K59J zf%LP5ry{a)6DUeus$Dz>6UdTS^OajVth%!gGbB$jlKpho<_yhMv9LXN_{k#}0i(H^ z0yAHvmcpzvtObzFu{x5@if!N3!TJX*PJgXK^%(L^+T)~O2;3=}r*WO0A75PVsUcu< zWYR2wjvPm8acwga1v0_9a}e%rLTE2u5l-GBa0ELx@a}DPStxn2klPnl@f6-H#hsNy zEIoVCrgh)V_Gb?y+C%NB#VKo@MD@%eI1De9eJ^HqXYii*Rr;-CJp)cE_A60Xum9Ex z*nrlhsf|_1vzYU!i$_W28rWlCe-a}iAf;3JQ(87e`$he{wd_Z0p}Vs0X=UOt!+8?Ev$o(Rk)}-T>0#xS z1Z*(20ddbgt_X8E`?>JVc7=7?#DNxDeToBLZTqcY))C%zFUDKMF1{c_Fy;JA(LaO5 zXLEFa0eMlxeDuLCuodmR5JiOA|{4qrlIuq9Y z8vw9eK3TZd(CA6Y&`?Hp`$OQ~&vD1N5<_-YcQm!u1&S~8c}KTi*UA(ihSC4n<@q*X z1qOnylj!b}&G`3>UcS-f?{DKJIO17)RmG=5VS!2+ zG@aFQOAQ0(A1FE)P-qt2)`;CM`0{7s1q8qru1OCe!C1Gfs7sH5VrAN7Gi5K-$hbRt=MGEkPQom`t;czBDt$6%xo9Z;E+^ps4S9sPTvBr&U%&6#RpkEZ$3X=|v5ipQ6X*91c9N;QXw zGpUOl=aY)M*1pE8cd1sSdi$Dq*HpPVEk?htag-|%pjIL))FKj}D0rH%vjjnusfI3@ zlTWJtd9s8@N_}2sdCGE?*oQOMZMnp>u+J9Y4} zvXb_9U6rYpTW*i0Hi;*Sd>!MYXh{%K$)&&sWG<_7QY$;X@+M%I3}GHp!gm3 z)eFtc5k{wRXZ!fF5?oJ&Pm*hOdWf1fmMkJxfg)OEU)^7)Sx+#*nZowk`?EfaG5>DO zANRmcX_hYV9>>6STH{*kQ7XsHK=PK8k2kVtoU(~Soml||dNq|8$g}c1@YFIRd0T>Q zB%W5;e?y0I#@k(C)Vb&7U5{({=GY9?YQdNBGXkogIh~- z7yVlvA8#OR{cFpmhe{D2HIZ{%5(fNDBO>i2*GLM5KPi$Wzw#C3{P6RRnAQx1%V6in z4E#N9xnYf*26FO(&1i9C>HS*`bpGh10oTlcB4(1D_|nf-e{(3L3~+}91pnF%S<$t`lgyNU5bTjInnD}JL$@W+v0s*3`IU+$WCjh(KOOvB zgIHs@ZXSF#=KH(;&-KS}N74#Az{&T37X~H^y7|nxEx4hvK~1?LyR{n9Bv?}=yyJY3 zCIeE#+&mqTWO~;MKh!SPWFh$Sw4S5PQVy0WV3ZpnJICVmZcf=1Aa3o!)_5r3KWZGS zBf0l;T}VnvD<|~mapQ|m@18gQ>#qkk*6?eCPIQ;+7`9AGpqBFs4303=?cUZgeV~J2 zWY$?Hp8YMniA^W|ap>IU1LPNI^MAqo)Vn`G#)rAN5L2zk@Id(2pf4TlUm4(x=mk06 z=r{m`fN{SACJKaqk<$jrL=H(a(tD;Mg zl!Ny<1u=a55d5Mll}aFOyRk=IL0%2JCAJR?sy*Qn34>qYhv0X&u~g^>eb8`jHWu@} zUjGkoO28W^NjQMnLXSnYR6uYj7I_S_XtlNJhd6#+>#jgSek=6tFrWX#0)k)YED~uG zKtMGnL5iSRBhW*0Kl2Ubna%5OkEGF=o z{b0gb(AE$+v!tA;?^$biNieJ$khw?iS8yY_sLfcLiMVA)bEZ3x@H`(b{@;pG&365<@PDn7RJxz$i?J)Sa5>{KuIZ|+ z6tV8W8XFAPcni{VbXuH#szk^x)?uJR1I7G~8^=FW)44jwF57;bGIuv$+75Rp&Fy)ts0Uh#zj>n?!ou$5$y}mqe5?}4PU3G+}|l?a*a{go*7v* zc9O+Id4z1CXiu>+#p(ZNI=eH#`dCY?BD9cQ<;3*oaGXZK(!N|+lZmrXk$ zC0k>e4Xo5oXNjL)nIv@h3FTl&15j!9OFCvZ)#OOBB**BW--5ekS`z9%aZ)FRYISo* z_KM`o{F`-bbZL0WAUS_BA^IE@8#I0Sdy^VO{Alr6&tF}Wz(9**++&I>1!2@~XPH)1~DeUjt!PaM1;AmDj=D@Sck8kc~2{>6-3je^Hsgt=7 z93(S`sNyfqsH-V-f=n{+^p(_I<{lp*i!Pl@z?Pzm7n}5uwld49%b#Gd`l#Tk=Zv0s z9Q_8}sF*AA0;ZD)AG52Cp$caxpr;>mXr7t!nl9+2%|=$FZbqA6+xNKncf{CeDaG*w z2;2lIiT&eW4Em&8Cp2|>P}A&nG{H}Z=R@|9b@6h}hKG5k8%<%d*2}8qRUtk~f&@ZM z(qXC?B~wGR7;d`I@Mo!_k0y?_f@Wn+mj+PD7({DYMi$Xkp#5DtYbx_lPteNvBNFO< zI{Oh(kapxbTOM1pff%cxhO@YixxaI%Jl81<#eX8U{|L)V^CZ5 ztuO`==g1qp*J(OB5H#89@u_cQKOj;v%PNDe91EpBf9=I3mGzN0xRm?nG~RYwj8B@k zdaX&I|3?xh}TWzjrdo?%=V<+)h+83s6?g_|E(5 zwQo}DX9L;3X3q!Pi0`jSTrX*?rE^G^XqC@L+G!z$om=KQ2eKwbgpXE>dnEB2cC{hj zGhW+qyzG@tU+3_7f?0^uRU?rU1I@Hu+X%@l1?@Nyr05yr%9TN?;pkS*9>VD=?esn- zn<_oT$PP-^fgB}q2MpH3EWYbRnn_WyiE^6ghX&m1+J!?%iGAZ7H~B+U!iA@4#fe33 z-bRewEDsXqT5M$=S*_q7j-A_bRA zR#_|QicD)M*S)qVY!`Mhik%ug<5%N*ImZdUn~LDwoCKAJZ{H;AcF=jf+XW(xbW&!A zlDMo*m4`(`pPLUwI=;fKvJ^n$<%%iYm9g%>zSL=VYxtY9Z1prvnz&R1ROOt$JNx8t z0eejb$1AZYq=_N{=~I#ZO;F zLal;mwx^^1s^&uTl_4)*`T?`OWHiMmFwtQ-z++C~SSLyDS{)%D%^h<@RV@xSk?Si_F^*c#dCD zN?#yP?eLJDn^@M0;XRf~nBM zJF_oF?iPp?C5Z`pEGxfU;pYlNKKE!K-;oR($YOR!Jy&3sYarDs!SGOMobfKoN7_}5 zytNZTEr``sF#DY`XW$ojzWzs(jOMxe-cYKlZ|CHoG|dNB4!7|py8IaFYXb#1zY?0d zezFHXP{8*Rc{e@K!F+c~nB8gAd}(5!QmZJyYQ3*#O`ykr)Lbs1Tcdo|mI*I{*7X?0 zCf6r&c`dPhfC$;+R7DS?iU!Jpa$<|sAh)+6fCGgm_&B=u;bR+Sog$Cm2^e9rO_zVz z)}V)ycIp=TZR|V5oh{n4%7@nCyE!#ZAMKUfpy9!|$bF4Dlv{sMI&Y|S!&VWwyHIK= z>1SzzZmE3MfMk;U6A^N%6#7ylB~ghBZQ*$G`uaFhg~+_vWBRWGy&z5@;|ZZ1z#jw=iRfGF4*l$5!n( z?Qh)__g(yvEI#;fGrKxRq2b6~(x+t%6|veXZ9{U|F@CA`q;2o%e7J1KJ+904%J8$t#>oJq8in{3iHsEX;k$a8t9;P6(UU}S^i(_nHb;?Q# z32RR3seg_49#*FdhvN*(^vPr~PwLe}X6k=0aLex@0`SQ}n4RIbxF+q10fe9`$87Vh zvA&tz+%>JFCCYiH=C-xV-gLMSgpCb!UOcqrHP3w}t`!07Dc|to>(&3)f4uh1RN7YPoULJz z4yx7rUR=PG%h4svq?1^pW;%78$Vl2tZ7*F)JIzV07MpJk7fw=tuz+CI$-F(ji+qI~6k6@6-s^Dq~ zH2J7rV8cLRzn=u>>wp!cgeY`+E?z8mPnOuNG{2W!eMVk%x_?}jW}X4%nXl|H$jg;7 zjXhO_4J6X%<{xE39~uAab9c@lLa-?}{u^0!4X7UpN(x3qs+b?Dq>)Xmbo_VY)+(K7g%MS8f zGYBcO$3~??+{M;FUDIA^j7_NKIY!2y@iC7+wM%oFPZCQ^HfsTXYN7?KHs4@)mvp~j z9Y7WZ;`^DxliWl2I>M=!HYlni-7Xl%_3;JNnB%?@Hrm@MMoYk6fCz$&7#-Hyz81$y zV6g)XJ=|3$VIL?=%gsTXwAic3ACnd2?yC6?r-d8pr|DA7mNZaUH5(l4=DxUQIx^S= z%*O6D(%8yNe*t0i_%jxe3U%sC|$m{)pEX*qDdd=b#2r>|8;TM2yAthsh97e zk<)sxB!S;B#)cszMErS}R+{OySbvS^nI?g&sXktC4`xuK)vjpRh)=%&U5(S$Q>U53 z(L#1P>h~EaX#30(J7#PstT+Uf2{3}nhChw!qjLvdsGCmrUkbH)kC^6fd?ai@XwYaM zcI)zhNC5<0l@JHFdqppQ)ieDI&&!W#Ni{9@+&!xM?;i6psQZuGTZn(l2_7YZXHYqr z{Tx$_&OT=vK>4^=;y!p_MrrJ^s{zy4!Q&$4F%7|Arcb0BL?#C=g$BfX%|_Ppj#MXh zd~cvgFvz=`V*L4KT4=+r;;t0y7WR(qw*dnE>2RU>f^bajqIhpZl#Hc_k2kg&BiDc& zFM~QQ{lJGjXD@S<^aGtASNX3q2*e$H>5#rm&U1U}c?@$1ukW$Y_e4)gZ8};#(pgn9 zxsM}s4;JP~di+A-=VFdDlEGr{)PT@y82AtZk4sDWaXCX{bt0h+MM9tOa2=?|jf&aj z{ZZ_WN6D_j?mr#T!k_Y0<~<8-%)gI0bUKaE5Q|L(D`_lsU$z4nwvq(VrFUIjw90u5Jpu79OkbjrAzXTfr1Ormxv zjTcp46HpDlR)^^Q8&Q!^Q;g!_$3d=z9)|HN@0KilFaD2Dr&YK%pA2uOR})F3s%Ucq zK0zge{$9TM0{KVyRZV{i=cPIscSyF>5{rB3Ec<|KTrkM@LsFT>gZi|`>r9ERxwKp@ zI%9A+AVr@)bU+7u%kP_gyh8tHjEzK(M+Hf3hdtc5>^riNma8*;?r zLu8mfyzoph=C_`|6V`vF@sT;MVfpLtU0t3G`s-D%)HOnvZ0c!xqm@so!|+f%InT}h z>q~f*_2DP~v%movo;vd`sYZ7a-7u!mdzde;&brzyc*~B613}#7JhTXr5Atyg#Wx&p@JhE z4R;Yu+4d@6HqYruS!Y-9AjbQ%1qo%XQQ6P8o{d2}GdQ@6A{JRWK(`(Km{R7`g!tf3ccG&GIBuSYx&Cfzh{TR+@uqp( z2YBTLHs(8IVZN-c$40lC4uxyXS|0pcmUo=oKz?&OOAvV zliO0|I;fW%N+DOm?r1aDY@R1X3IuSI|J@_h_KBfRBPlya5OpVEprGXZ8G5*vtP2uhCa&t%CVsq8}s#PadnlgQd1ah7A%A zAUD~JzSYo5`DO`m1_VzIUNtA~&1O|d4&1N<;evl(!3Rs6k4%X-blen1YD_Mh?ogGx z`~bz;EKDczHg@-DVu{_PrFu!@X-#d^q_Vgp3?{MFl^nG*(d3&TVMAw0vj`DFI!VWU`>5;ZBOmWkcR zgQ}G$t=j({LQES*X9VWbQWkT0(dGD>t8vI;lO0e&9F7GyfFlTq;UoBGaEn%= z2H}%+xv4n|1d>j|SgVonY1Vr_B-@G(Itb(ozSW>JjZCKcf%m|oogx#3i^^zoeuq|* zP0|lQ;*Mrf+#WV=b(tKv&nGlxv=rJf4bSYeJ>Sc-Ayu0IrLoP1w7;N}EQ(-xg|9bX zTXR+866t%WUO@T4cQ|rRYZvt+87}~@J(c2fO5ZtCaQmZV2ohvspe`AnvCne9ivONy zr8w4yX&)YIMEpOtFJBmMY9!N8t8qflJ*I|U_=cShFQtJ>#x&6C7;oQQ@C(J2f0i=+ z>oQ9~Gs!J5dCEaC>IYVAk#H9M`xnnaJ2Bnf3?y~BqhOVLj0E*c)y5VnhWQ%ttBzrz zJNG)91s#OMV^;poSKhRS{4GYtW;TOspa&8C^?{sD=w`bJ1NrkeW@J|oh)}*q!mn1? zPP^i8MB=^nQb^oXr38jvjPtY&592B!^@Vs8mI522 zypnhRZ0}#r2;!#T`=N*|biPhHaKjYNa!A{70#N;`{h4v|!0R@=@IiHFWv-E_&5j## z(?0}3>DzXr#Ywm7)fo%6wjl2Eu}6U>#z?XYt+B2aMbJ=eMEwzQp2&=E>DBQ^qhsQ8 zodw3@Z8Cj$Os6IN<8p_+%Eiw8W%ud9yS>zZEE+nf5$5emY+l+mO!?_y5#^BUox_BhKNxTMPYHR`-+&_vp zZtN6e;C(K>a`y$j07OiQK_A2roFDM+#8z1Xok2GH$b{!e>sd%DoQ`*P=i=p?y>-AM zzcd0jshZTH?W_}Mo$HKXu|b#IPy^pr&J$Uz0};%Bda~XtZY*_5fTP2szBgY-l`#4n zh1K6e615b(tX@f|+gG3{?78=QtnM2?_y{hQc=-(26zYCQ3_Iv{{CRZz-tjikqtl`#{>C*gl8drg!i@j z{v%&3YG6}>dDuq)e#-zNKo5x_IQq~Nq!d`=AK#$5qwd*HXm#Oc`14dEvS9t0yU{4? zId<$4iHj+X-Dn<3Qna<409LArX_WTs))JqqwH{_%j{-5xCg|Omap}TfGBH$aU~l!B)y`E0q(9Aj zrNd8vXMzzz;GDRo?sI&A`w-$H;As&H=Pp`;P$_dLQ`sH9IzJ5qfaz_J#9(c3G@0AH zale6r6S;XlTSUYev7c{lW3T5tTei>ggcjJfA~`?q-y2ove-@vW-g9nk0;M#Z{AKX7&8-tyM_i_o-^sFXyxJ@*5WezDEwhj4V# zsKeh&7L{{98V;fP7TZjr7s=+YV7l&Gfrm1$-|95nW`kW{StWVqZ4`tqfO-G22U+m!JDAlD=%dCk$Nn0rY!z)84 zeIIihbMVVQw8*SpFef;Qr|8caeV5t6pr^WnzteN~m3QyS4Of}p7)TcWafjs4u~CiG zPw+>a-I{T;Q|%xklWeTJHhTWo@HK?xborH+d80UlGrD$TVVufK2o;pQ*nQvLf}YH` z>Zjt!;2 z>e9(c)l6nMN5L1yN=9{?%4p{2Ug;TCCl0Bh+et%%!@sRgCpzYchcNu+D9HP1u zb18u9T%$+h4_Kn({usI9+2T?EhL=9+BX`CbWrx!Z1H|(cc~&=R(#ote%0hxlVV-AR zC)<0~`#@>7_}qCwv;NMt(0CMKniL!TLs}R=IJhtf^J##0)QhhZ(g&sK=ZqJh_k~c% z;%`|udXAyaL>{S*3bPOXN-K%Jto>V@6_yOAlB1UpX%9&t<~}ZV>H`^?HcQUSxN#ms zn#c$C%PU+oJYu9LxUI?MB#z0#IwUJmfFwLgin%t#Z$cVcCZ;G6NBDMr3g&3^=WGK5 z9em16lTv}@n45olhgqMdrFt&s#QjMSI#gSA_2N1w=Kg-mDO$}$Oy`~)7k57-Y>trH z^Cy>Mrq_Q=Y!w;l-G5~4nnvcK#MqcI7UCDWaV~;A?$dmXE`nK@gA~K&PUl;TuWfTw(pE1JWOlGr4BQse#YIpY;lHS6TFUCE)U^!v5 z+slGSW47&{SyD`Ye9RbmQ98#j0tdT5-Wy13VgqKdhy>H%1?w-&f+m%J)ln4bj3os5o%Wb1_!TaDT8zvBWvy-7)WLP3!-} z0uc4Fue}~umtIet1Dn()p%{M)kt1G$0vLNG6o|EkrE``?(pteWcm+8@&S$N5!(+;E#$ zpEuj5s^B67w}J&SPi)1mz<^zZMz3g0qr-kmo$9jFa=*?S;zQc|E|JTO9beN1FftaL z9X9%e6Q$xyu!mHAH;gp#-K+HFJ(JE>G7}vqMmklmXxq&tmG=kW-SUNOKtkd*6Po18D>Sv{@8(Y0h9il*klh#=4eN$=eBqS78lt^q@T)^e;u#mQa zDgh6Nq-s?scHn^iN%6!A_h{Y)#*>#jd5D%L+NOX|Hqi-bv8_}{{>F#MP8?%9>UKWN#DK%iAq^4AoT4{=kWO~2%*4OyRD4FhqTgRJkT5JAsTB!Yy zNv=ByT=^$=!(-XhS=&f*Vm`=RWMgx=!tiw#qit`du8_Hv5QDsF%Tgz)cyof0@pfEb znjtoHH)a2pL?m@Ex&<%Bi&jmxZ=@!WUL zK2Nlba9UR_zYRvOQN_#wh?*>9k8=8}QJaYmZgJYy(5m|Mn@msxJ6^*(lfO^-*u*j3 zi?+A;6Aym&xV$D(zIPG}ktRhqM8q%(i%}rzoTmZnE+ke#bT4HY&j+ zGR>HmIEGi{?6{u4h_q>nkW#f3`v=SD$W{I~kS=Ox+;4yvfPCmM|Ipj>Doq<9usI#T($s+8zv1tj8v+gh%=&_XFM*Oh#Sli; zSk&4h$jAV=18OC(lRvgpPMC^^7e>z|sgV|T zBHdjJY+}W?7r@Gd+T=_HXig{&SJT?;3W|Q)%aSl^T%41`NEs};SIR_4jQs}QVh|RT zn<;WC|AV*p4(Iys`-clzNoGdM-XoG3m6?@Uk+OwKGRh3uGBQIFk(7p6qR8GNB_otg zrOb*l?#KH)&+ESL^SJN(cU;%+zJ9-dzDLLRC_dx$e!ia1$MZ3IHnvwm=|=`PZ<)8O zO|XvDT{H#nR|MwQ&^gTxzL*27aB3WheY^u^=g4TI#XqdbV62x9g#!?eNd1W+_vw3l z$Q@8Cf%I*QDfDnnKVE>XmGKTm;BqsVU|=O2!rMjz#npy}L5}1yc5oOJ({mlk(aqI@ zStE})7JR7MKZ4Ni``(eqtO)xO=61k~r@y+M#1Q-0dwj>UBXAb@fmS7a6+$|rRrG=9 zx^u#Mx{?ID@INeoK;m0bh6^*cIY79n^)yR>9X2S9Jbl{(y$0;%ES@!oa7r_+45MWqGuf;wuxPlC_K2vau$u?_5$Vqj3W<{FX-tpTyB!f>evy}`=O z{1JCcVSzhwl|J_$JX6{)tK+V)`Q=Rpb9KASql?bDr0%&t!Um&i&RIQCoq|85W=jq>%GxeitF8!D8tW;3^S=LJ zxr_G8;i?T?-g&mXZ_nhb)5orYqBX+E=ro4hO(NF`A*)u+?!3N)?G{fyI?_s zYJMdna-d-}`Pr4k&oQwVLi3ps?r>wW!9%k*VJ^OpDbn8We%fV7zYKh22Do`ov1i%5 z)Q?^Z{mA3(Fre)!e{xen!Zmi|`sB@s?kHv3j#Ve0>3f%hty#B9ig11Nj)^?@U?q$4 zLxKg#IcJ#xds{wUy{D8rE2!;=OA~YXF&`*JSNR@xR-GwiO6v5id}m^Any_bo;{65U z>}jpSC$V2f@&)Wv!Uq#wQw?|N=*Ut=JwAGXYIg2X#gxr6+s_W(okvZYIlS@Kf_E3O za^e>QqaNvHIoUX^E*nHgqr-TWry+{NL!q!IihFoUtiKpfd2HXYuxY973iP*|lt+Ox(@>=S;hv+5lzg6}eVf&|Gn8w&N%*IZ)R$0G-!{=s z+H)F32S)3cZ|!Okqrc+f6}H@bSUivCWO?t>OnQV=S)}Cjy-8gQuy7NyX41zb>w2Or z&oQbAG>8&KZu#}tZ2UKP^;}6ZcN`ZArgr z4C?H%k2Mms4dFNcztw48U3}lOZx@D%z}t@9xdjaAEarGIJz@VDw(tKv())iT`2Wua z<^0=9=e6n@>IilggpCyviw^$}S3A_SWq_xk%!iO}vNh=ecxli}(>#-B;z_fxC#i#Sdb5zE{3KzhW04M|Q|{WXs{7bDuYfO^}N-vc)RQ zifv)P1O~7dq-*JNmo~69fXVs>oasHD5}xrxz897)Si^YSAx0)luIerSU)MuAcZiHi zU_6-JkwbsbS&lF(SRa=K)^@F;Gj$&)lR3<`y6+v$-)D8M_ssUHdAOV7T}%a0?45xZ zQ;JpFK(fxkm3f%CPc&c=L!WmnQ>g+b&u5Z#-){iAs{gw)$Yvh}wV}H@sjyxtX1*BdTdG=Jz<(BTFr+1N?pK?z3&zsV!;Ux1PJ_91*cK zCOX~L2giP>zX-A10dxUK0r39`kS{Tdl|=@2_;MiT7eMNg{>Opo62@R4O2X5ZIjENy z@7UB$3JL^vq)A!cGa=j7{j7#^2LCYXyFY9d^+wSGjdD{^vb`FE7%DvDC-6aJ)`HZf zjCI}kg^$n9g=vtee}_Oy%4&3!H%^IU{d`}+_b24@SKKbp8_o(^Es&_+CUjepoS*wo z-LkUr27^>pQ5yDKxrf0j$6X%Gec1u(>;nBo82BO%z-B;%Sdg4CmvH>ENf_3D>-~;J z8pi=AIxBP+H4`lr&=Vd*dMh-M3R8VJeQq^ZDqf!bwx3-LEcVD0o3HAhr39f}%jtih z1UUAIz%#k?Mm4TDi%pu==sSRZcx)`gp1s8E>rpZm>~!Ky$RMq&>~yzPD(pXU?e*HC zt`;q+96A;>Mr$X&Rr{B0C8wzS{q=+HYo2>)dHAf``|u5AbisY!Vey2$pfZo1WY9PFUG}$uO;xL2BaDl$GO;=y%HQcHRY!OUhXk9$z^u5k)-|T& z?kV}})$_R2PnB6rGG0;J6Oi+G?b)TzhuT@7O?4zy&Fa=Uu32kT?lP>X`Z(gG=gtG~u7;_)k}^h(`U0=!&Yaw8 z*J{LrL&@{&Myg-C_@;qE)XxnxvN*GGb?p1?Ba_!a-cON>j2-nx>hA_%%D0)M!iSO7 zm3R8avDEplh5Ms|I%FibGl$%o_n?`wpH=TMitfl<3)N&S+fKxYi=2357G=$Io=j7H zVvD=)2OG6$(+cFSx9{e;i(V+PP=Ms>-|sKlx2CI}Im$YSAc^UUk}9UVBpp&y$wKL@ z+MGoSxyP>dK{iY0UjOm^YqG9b3D<2gjbo$tFFm&zpp_=)48Ah==}wVSYNmZimbLr= zS>Fa`=VJ(5`Z}}}K^n_N0X#f~)U%plzkSFSzx!`zPc^U<%~r*f-eDcy+87)2kUq_y zX@Rd}8?EGDDGx8Hw$lH=0{$}T%45Z+PJQ9}NS&qZCAcJafh^UuZh>f zI2pbrlqN$8NQl32(r=e+vXd6FlT@iG@qo}*^I7GXQ^Vp3`(#@yCDC8X7RD>&w!RoZ!!)H!TnO*W;o zdssNQM0D?7L18FLtwSN=7NV4Dh6-QaiSaZU-)N5JZmhoV_C#?( z^7zh4=Qx`i9Hrauvme@~Cb{Fs$LH-O<2H1x(k^9!QY8M|6eWy=kMoQIBkj32pU*kP zYV#gfsmao=|6Rruq;a4=uED&Bx&PKSSv`eB5t}q3-|$i>)q6hU3l{X2-lN;})YDsih&F1R=8Qte%SF>rA-CTC8)n0er>gq91 zS^n^rjmz0mxzU$2)P2{^3(;REah2{cCfkK_?44+~+cR!<%Q5cWM88s=1TzOA$AQ4r z^65;!evkC?P2)RO>r+-mq`0>-#DxWMQ$8$Wu`;J|SlO)N5_d4Hbm8nNLd_>6=Ez0uLSFqxqoif+);`U9N7Por^d#S#|eKW zN+@XpQF25aCpLTBOSn~#pL75KJdsoelOxN{c@#-Fq_?A~2>psbM4xr^OJ$)90aK+_ z*Xz}lZ@+Nj%{>{uz=FuI8uXgQPes5cTLv}vohg3{*G=u&*FfsxS?&lkEo^l=JBd*; zMF`=eRE(gs{KA)02v_h*Wdy;%a7g-WTMuj=D=+wbQNdIAX3$F^K9w0*w~l2EIG8Ok zCWtMCnZ`jBt{b>QULz-`J)nwodDqFg{^Ae^@i3lD?l!UwK-R>94JQE2;R8Sd#)Net z23wU%Fk_EYpu+&&rUGvwG@r{JGk)=hz>o1S{L*{j6Tqo=0jv}tAbG(+MX#z_n{e)XiMUH5 zrzQLV`c94^tY@bB(CIE-UzOp<;z%3&y&WLGULq#v!<$zj;x{Doo_c0S{9H7!cU3}A z%qD+|uEA_SzjF26bwD-+R@IpgZ&td0;=(1IvK}BgJ@`)SZ)4z)qatXveIkZ;YcQc1 zvYF0{@P_fsl;p^td1;e20UPiK6d1GQ5hmbIo|d~ zi(vfO7}Wls8W}LN#K?2cOxWgXZyEkS#*yP@5&r($ByXel600Njs z8wWYOHP}$Fe)@^{s!WIy7yk*t{Uh;ejGQpY0N?shT6W|m#64gRCKP@E>?|qe~gnMN~N=9*8a;k%ZaE8^G4h3cV$9Byl_u7pWy8CWt4l3hT;gP_c2s@Uf-T z{R>&!C3LCx$pDfNxrm72MhJOzZO|5jg6zl+R?RUmpM)-9!!|VF88)VgY}Sq&EO{r8 zO0$|402kO@5@*s7*XZ~L0v;r-ZIknZ9P%oW00zs%)3ihg7}|WelkH+x`%AcUsX7rM zk*-H30it;jE6CRb;W`n7Yy0_;T0E!Nj>p|MY&fhge!mmvpkbOY@3eaZ+^N(cVDhG^ zd;z{&6cn7HF4|w{xP!i;r$Qu<8#v7b5l*BM{9@vuC+jB*b=$=$lYao=%@t0*OWKqF z+(9lQ%8+QQ0$$-aNvp@!taPO83H((^1S^*{vl^^MQTeZoMtIHk+YH!e?mtU?!wb}t zq6rK_&zv21|1QU7)R;5Ts@yfmyZ>LCxqi_}EU8UNM8~*urc{wXDu71<9qUfvO@L>2 zYDdwCEL@M3;peE=rqxLnsxAAK{~+^Yxf}28(~isEer$qfLdt#kfxL&mt8v zoS{!(2;FDDNyHL7FgbdBOYvi{iEnw`ZH-Q5idqSG(#(d;q}Adx_S_!7XV7h;Duz`# zpHT}o!w;=LF=e_oiiT;-Xk6OlQ+41b9)A^$s}2DmHLyipdrw5x$k>`5IE{t)WwM(H zbt&_jv(&Fm4gdaUAFalkdUB~TL*(8APVtpebgrkLn4(c4ZyN|W7U({om%CK{0RKl}gm^Zsu{n18<#|A{7yh1Nip`wF38fp-WYFXn+OuWJp9@SW`5R2By7 zk+{n$1J zpHeQ@j}dEf`1bV`;z7ni%*IJp&e0x09V)P_dWp#p-=_cf=Y7_5H9@3RB0w0{;nhpk zD*xC}$TsXDzh^Z#H^6H@zPMxspXK%`LA^}bi|n7KFwzm^PY9*j1D@-^QW}Hh6}U^h zh7=iD<}bgO4Z=eE&DP#>1e`VH!`I|9L8QUNc3(Rw++k_z4Pg$1OZ8--<(|JONOQvv zX#Hk7ZwgeR#gWKi^!rhPUv9KA;Fy(tRQ^7yTE-7O#|j`RV95?+uZ^+&1Za#-j$jDj zTFjO?Pw*p9`gTL5fm33Vt7QZZEz(i-$Xiax%RwZHbg%tSSI`WQe?uef*Lju4Nk)@MHLS)PoJJ>IS8FRh5?Nmmc z0Na%<3wM*wKFG!(vajbmEIrTxOx_&BtP{KjC#}0vzN7t8`DYB`?j#1~3!I>chTsAK3pX3M3Nf1Gt?kP-Y>)u~v^cB3;NXw) z5IeE2Fxk$n#KXEF$n#s0aWL#yc!~q561XPq0;hrL5NskbX?t*oOu!N%cE8Wa^WqfW z#=R#TR^($6BBDSsF+dZM|GCIU&3oIo3>J;21izQGc$L)v?Fr*TDTqOVOK;?aXca>S zU~$g!)aWAWJ}6A+GRx0Sr(#6&(j12l4x33Kj0Rs3k9(+tx#(fmPThkanDd| zMXo2mNXjN5xUrK&q#Q2%x_bkQWBl4v`a*vpFzS4dH~MC)ef@72aDx=Krzl!oBM+Lq zrs~rba<&AVk@VM09(Da^u4KjER7;?MgPa95+)VPvHp-dN!sJeT#&U9ll4 z_0e5gC%OsXb(8s;1vC*BBpyL^uEXo^c3g7(}4c#cY&4cW|B9h?g}CJxNIw#Pzv?eVdw!bIGFkH`mV4~Uj49`bUwE)jBj9V|wKc-1~PPMJp4PkQ&GGe!D{_!D*(64*(Lepjh(Yii#hNT(9Vu#({xBL`)8MICI zw8_@5H6_P#n72}1j>yoz&7^bYJ9W*60p|9<5qH8~e2g5!yATb3J)}nf%r@lzd4PH9 zcYpeSU;+OpF0Hx7KabY|yUdv+&wWwyP}KnV1Obo#+aE%4L^MOy0aeV+@>f@iHc9QH zgm}`)Py&5_ZAJt9X^4`Ae>Q{rO;O$8Vvvc`p>s*S!YuDG6;mn*c<1gLd~<2k@ceN! zC(_aa+HOftqhd}{?P%BE?GO*|O-=4|*E?7zgU*Lg?De(=7w*s<1sIf}r4sD23%ACQ zfOZ5u)h8LP0YW5)Z~E_M^WKZL?-(q$vgT=5F?G?uX{M@8!pi}UcdHQ1Nh&i%O9F2* zyhb|uP&tRAltoTH5jywn$z$@Xq9-2p;M&3}@&*v!EKp_%=H68lRmn1xaa;xDchpbO zuu4J(K>E%{GXY4*SG!xIk8-EX0b8Fd!wr(<|LfGmsm1s&IP7ne=BWm-(kQWSCB&=o z(+>++-p=9)OLPt@ZbZ|4Y%^ zo@NlPV{B?yAjCV~rZCg{baxoM$X2l7wJ20A?R*@WeneF6+&i*jA(K3szF<~?S8u+4 zc)VNYyt)mpl82g(MLSoX^=nG`!U!PP{i^#gt{_F_BYHx^Qv_ej`~C%J3;eP5v9ZI$ zgGG%HUjuFZr&LQ{Dsvq{d^Bi<yqFv8Opmqvl< z+F10yOneHyAMhcg<{Aa7+zTcBLzh^Si{F62GG(tH9Hgm3cQHzw^;M|CD5e+bQM8=p ze(2bg?2ar|G#|J)}v-kmAV(30Nu3cnsR zB;kt?ZxMQ1rsjs!U)NVyD|q`Ot^C`yF9< znwUMx?d~-h@f#yqOBaBkKD;Gmr&(Yd;I7P)vR~YrtVi9#S6q>?^XN$lT@0Heo0y+hMACJsh6XpqKZ{`h=W#GLEJj4~))eJx}vcwR%>yX(|AY)AOD;_rs;xLk`3gU$t~42bJ*QKNy# z%M$W-GU37t)XV)E@CE5gBy{B^O^*)}HO+$14($5J!ascEp* ztt#B_zyE-y^mo{&7|MN2K4;Zi2c2_Ru0-;yP+?r;016@7e z4JIy$#EVB=(SNjUeHWhGA~n1M0gU{S=k>~^NeyHb3`Db-I71Pb=IJ``x>+{pDv)kZ zIZCD({`REpGx|L=H-3KZ9J;)hRJ3dvniQwUVzPJnNo#+OxH~-quW+PDi&|>yU&o7t>mYi4+NF^@glwsBIl zX?)6|kogKpX*@V$3{(?GcF%4}IXYWv$fI zRGVt5_}`mz+WKDo@-$|`{o;1Ph8L6R+_zUa#Z)cUVLm(C9BHXmH5P2{Y2V_mmmZ|v z(_NJKL>d?@YoLN>uUlv4sa~zl=anpX?pnui%T-9H%DdSjX|-az>-*BaD8-=qAl1e_ zJdw5oQdA49jrTNPjlVZ9Gpft4KlT#y$!Z(zF(u6(kt3eI_q(I$DCH(>K5M;YxDb*Z zJ+H1uT^FI-``X`6xb{aF-ye69Xq~PBvpP9vc}t$4huX4wd!&vvoplY?2FUNPwF)+! zx_!&Jz_bH-oy$?e?w@RKEL6qMI?b?VO7Ep8kx1D!xb6M|eZz3rVf95dC#=aLNjg$&U?pbuKyH;{yC?sAWpSk;$Y3ZEdN(K zuFMLSc$!dh$C$`SE#rwJKZ`!7Q_v@<{-o29`f*EiVi)^giS|6Q+m5V*`6hz4bI#Wn zGTbz0;#O8;NU}lM<~>d0GEYoGDc|ct>)=e5p z#C*PzqE$3-W$AHohP$*jhXZ@F%Uc5%;nqU^OS?Q8E*jioZ2$DB)UM%qim6n0u$EGX zy}9Jd;)BQYqm*f6JXaY?rjlAytrUKvM?VwE{hrgo(wUe4Npht>iLxq_g=Mr&P3Eqt zqPt=|PqT~oaz;H0X7{8~n-LnLK87=29-T;eN+mh4YY#X1Hu)})5QLTzAK!KssN*r)L_j&5q##My3V%8Wm;ynJ(Ajh9UQpv}IHgc{-B(&g_% zcC-0x*Q4hNp0Fs^qqCk4Am6qB<(vfgt4v|fT9Z{y=1^D_9oo0r^Mo9 z_z2CRqux1P6(v5hrC*=V9MJ6%w+{?x4Ifx{zoNvR^<(%+`Re;N_rr!)MQFC^v%9bs zJaN9o6m^%^aw4oLpoHbDqt-n6&e-|H`-VeIZySF6cgSl0A5esxL=ZYrG>h80*@oV{ z={uL@oZcRxb*Y$40e20EmK0{G;&UUL{96M-Qbr`XALhgd7mq(R{{X4#UPR;}9$^~j z90d)l^}r>iV%zJ4va!F|F6Ai+)@Ao+PYA8iPd+O_!aT~Z561MbeT9cF&%6b-4aS%c zU=)_rw;d411^9FlR0<%;*qR&X>8-+f73_uwz!foXB&k1uz~?+R-||0tpAMQBD4#%n zIZVX}<12JU_n!kJ`GMbyKJd(apc#o=0bn*Fg`Fy+@Z?kWzUKt`Q~r^Z7-NMIeF(G< z?Z_(7Hr-J$=a9a3ap2N>LS+NcpdWx3`qXhCDi4YPlcwB>!d~=a%AM=_C3B^WpRgBz zM?5TGe;@&o>4$w;FV3F|D{5kYN8^_jow8MBfjLK@po8y`(IblhW zqxgAw&kc;nZKB&?t-?>$HaSUJq=-c^_ss!|&lp&+$`5(G`SFF#aFJBL>iv%?ih>*|p zO;!3rIzhjYh`qj)uM|-n+5_?@2tW-%3HDVxy z{tSeA$RlqZ9}`SJ-Wv;z?I`HJ%|>}p5cXY(rhe-ec*_du$7w;6N$t=bV~+AB@qZo# zp6g6K4e@Z0{nz+FG2S|amE(|Mm-xm0qERezUX0NYQwt%m!{i}HJp_UiCbnlHvpo+>pC_2l-o7D+PTlwo7jc+?uhYLA0gINz&zr|;T`-C2;P*+ zXs#_S7&M~ydlJ0cw}~o z9G?O1wc{|$6KLXKi~`_F#5fnQxti_IE@G^MBZyy2-$%8kE-M zipLYO9-Vv&>8`8eLHPXL{YZ#V0;oC>9Pnys)udpigRj`(4SS~rCP85zd>>Z6U-*}v z<3t~iKORL6F!%wz?*=@0hcLe`pIq(}%(|*NiG-@q%OQV~JxtR~Q)HV96>eU9}4KI-v401tM2 z$Q}Fx1@S;E=N89@NUl=-v=lG8VQ5ZTm z6=#zzy+bj$d=VIUEc=fSk6C`M<{t9gV%1V&GI4iJy`=`jve{3d28KH{P@RslpF)Ad zCxe4BERtc!ry0`Z8f0tZMtP*25BCgr2S~G}S;GR|5)kyB7EooaLi40zm zyCDR54bQ)5iZv6k1FsY=trX?fMdqD3;4C`{8BsrEXxEqLt|rvz8}FqOl!I1CfGRpV z;OsYjd6K(TOaXb!r<#Qf3%Mqt+H>A_Fi`^8bS=!#_MiDGBdSO$(nQ%j#ofV80z z#+!gjdXAnb4M1URV#y(H0m5fSDO>%PjyjtTl$N1wW?MK^15`)wl}{$iQVQs>)Ynb$ z`1GG!TII3b@2yt0CRabKG4*^O{G6I<5xm zMQo6tv|PJhj*hx2KtqZU>pRgo(EL#`&r5ZuO-ngAS84L7*7XqKdN5tFT!DLTYG4+s z`z(34VCH8$TgFxY03`V;W-rq{J9@M6aomKPo8Smvhq|c3cEWD%MOThThjS^}EZ590 zKtsX<2#XOBL$r@E+m)S0oPM)X0W#ZbFP|#A5L=)kub>%S+%B1F9b~9CCA#b&py77L zPhDJa*C)!v&}zP0w{TzISg)m0sa|B>j}x-QG4ed8n`-Asn{xlcHqCo=_-sX?kl%a^aI(xjnTODzWtRldOKxk2Fi9d}rl4_(#Qs6Vr=4Jwxq$kHea|`|XrjsHJA@p$E5j%(A|_e#&80SFs4o`9YUgJ4i;VrH;UZ zY@46b6HbvM6XZ7y6dY1K=XIP0%98;qNDt@H$7pKVZ`%>^Ym?a z8c&xA-0Y@mAP*H1IrN8YiL<~6I7hc8XX|x7tPDbXKNkc@; zrKZcbsP})3-_5Ee;<-iKp>eP66&rT_{d!G>K??oGCMw58hCMUG%np9YB9l@5nQfq`742 zhn>jSNgHX6>0)vxm4Q=@yIe^J!_2HdTrUY7I!;&A;r)m*REyL>Txri$`GQ%8JnxeY z8GOnz;gRcnd#=?u-&PZ0h5-hPB>;^Mv*y54Kb+p29Zx;|*scrp9JAkD9omBMp{ zr&*n@NZjGEz{rIO73-~!B51AW-!yG~A7pk~R-sr+OChSMBt-eD;+^yPdhsM1TC%FY zScHP#P%8aUD5v3sf-qyCQY}mkUWU#EHZ9lwVt@u6+cikD^w4)3F{{k zK^~23y5|_))J3JQZ*OCI5O<6U8f$aUrVny-%)_ z{sifyM1@f|po&h0h5h#RwVz^^$5mR- zPlbm&?XvuPE&aYf|Fm@I?{lSX;bc;7W9nqlZM!sYIEP+Yd_nK0V)hDL&;VPpoWJU+ zk+IsbhJHypcm0&MPwg5W?|vAneTb8ijOCOH<%GpHS~lU@_~^x?-#m&+Ec}eZ@y6vT z+l>TCWRIsBW_TSwKCl|~^@moZc#VS6FMj5sl1dg=% z*eW>h-k*vL+9xv1hudh%1q|#gw-do49~yg&-R*6Ll>J-;k9;#cEOPqCQUL!#mdca- zt_5{4D8{-aN9h}0v{19LD2nA-d@?huuqkGf{wdDETg(=r$yIVPnyd|L?~E9t?6qB>=B zpE#kD%)f68+6xb-Mn*AY8m5mu6)dbZ+g^}(?AOrdUv91fS^YB(UAY4znUslLI;*cp zy?D|C}Gx=nJ^}s`iWr!>!bgkKPFt= zhFkwPMm7h18W0Q^HP0pqKrB}KBPz#mEjB@Kn4bOxM; z{DOC1G~+;K#ty$o%86`!D&4!PZu=7s=!;zy6Y+X~OfLHhw1(ij-CHpjEuHJW*9@vb z>jI{xNI$-&*YNo~$6Hy7DclmwmM-KRPR zz=Rp7BH~8aFdV!9H;?Q$%n_1rS9oE83Bo%MhxKtp+j3_dn$GY5qV0~%Uiy@sZ2RpO z#v1WoLURb9dJVIft&{y6O~+f%fOF^MF5=D#V5aZTY>pwv*(b1b+cG z;r0EaMmx+GJjA;Yi&KNwWZ~Y*-!BvH$P{(?$UD^;Y*%>4oa(SsGQ7TBqWnl?f)#kO z0Xa(EQ8b7`i}R@7+YiS`3}Z@bm{`_3zmCD^7dDHy9kIDHuMSWa zy!cMy_hep>+N8m=>g9L3Y%#;;DOdeKBf>m7!k1c&$0%dAuaJ|C%-}dyH88*U=&YKp zC6U;wLzviOk!64gYJi$Egddp%hU5Wn_G}i%XanBY8lS=L3+G{ToU6u%xRp8^%rK%%P_3CrP8j@R3! zIb-w)N(F|`4C`ZiBX)BBa5-|3O)m0v#c!Vag98`8)X84w5t0eK7^E!-6OD!io$#2D zSZf+Vr)D-=Cc@aP?$Vk)&?SWC9IQNxNy_L^(Vasi5$Bt?l;_VrTW;T1-M?pS^#aD# zvlJJZ`YmrxozGCEkIfaHhfp8nm1DV4nxjUo;@XFl!yZDorB`RFw1g*R-|f9_dYU5Q z-#v4?xt91whmh<;t@ezgI0(hx$7lqPD6pqH^RKY-5ZW8Surp?Qg2qdbNv^YCJEk;V z^Bb(^xhQwc$_D1XWo40)YxtfSyT%li%X?126^l<|8+cx6y)70ED(DJZ3JFUl`h4f*3?9l;Uoz?#&OHk311{?e^>G zy|;~Q3!5~oPg9=tu04;-c6=BlbgG2!oYL!b*E{yCccy)is2A%~Q$Dh(%^0JaK&zEb zkvH@QLl2{L9J@@Ld~I%}8cF$CrVzskVG8NRDpL~2WHgP|{%MUG$D6VRNQ%tdEb!jiBrF&v}(~c8Vj2{-F z;sHW9&iQEfuRYA8n%IEOzbLm73yaChI$kX_%;tFSsmZILJ7bqFzvSHdA6P&P-(1HL zKCxHkAI})gAEp?KUpQWV;gx^y%PZep-IDXY-%EqHTW7BGxdSBab=7E(ypN%G?`ePx7}aYzKD$#(gjf@p=kR$O4Oy%EeG>8O z^k!nVzdWMwh3!0+Dwx3rp$AVJhJV097|Stg&tybq@t zsE@}QLE4U>kF941jQjv_(&lPcU`Kuv;HSBblyXoF>1PjjrxHF-z{m)+Cb&-@L}4Hs z1Q)@VwWQC|?;@};f&BT7n>;Ffs~7m7+&M7L`UN}(Fj|C9^g(eD)-v;XYMgAS2gu4? z#q{1Jf%1KYhS@}cz$0BrR%n48EekE%{)Svq$vXlA^0gI;b_w=7uY$)9Zs*8(L)DII zH!VTjk)FF-M)v~O+r%Og#XgJ7o5Kps3%uY>xEkiF;JksJs%G#4P);R4zH_kpC!*TR zHxF3XTmxG1&Hx~Z^4f`D%<-uk6=k>`gVwIt?A(u0nC%nx!7nk;0^mOR#LNv6>#{ev zWSWK*MwE(=V5)UGgQf}-25ZFF&UJ3Ok%chjE_rV9VyZXZ8Q_t&v;vL32PVQ$bc$;5 zm+B0v+-aCwt)prkUbL@zp-MeL_fm7ADtUsH-|j&%aD%XC0btutxAYi4J~tNDQa5lT}S zWOK8?o_~AoFL~!p9(ul0LG%JC+2A|@v`ej`FQ}MG$2H>*@bKN16Y9H=)D`4igr3pcL}x-nc#Y}p310*OBEf-md*%;9 zy$A=(R)uxzGRYIFrgbKCbZ&aC-)?cFc!Pq-Va?w1?3So6T*`g{3RG8^RNC3jD0OAX z!bK-GU%h__^>;ED)tkE68<5w3DQ14{Mi(A`=*M1Zi|Iu)jw z_E~c5;~tc`n<2lW=g7lc<-1ZmSY{-EiGBNQrj#8yRrY#tAiR(3&iYKW&{JE3{BhYz zca-A&Ji=Gp&*bT`Eys!_)4v?#x-p#<_J)lC0oKp3T`JXF{$Q7{Niyv z`H>w?icli3M<`vB8kuBug~p=d&TYe#{3E|(>Py?#)=>HhJ2(2!ijVS@8Q5Q_)GMbJ zTD)xz^uN1~*uU5isl%2<7D{j7$0 z^a)>ZktHf77?=(Mq9S`HB>R=6T;hkeLw`(GTJ*UJ5J@MLb~g5~MOfvd+Qhu?dcsAS zA*#Wnl}Ez(mwuCLOzXDcSHl~1q2sZ*|8Ha#1xz%RP>_siu(9#Rif;n=h~YgQG@N5G zBe@`3khWiJW1vh7ed5_1jl&6i3p6Bk6*p;zZs)q~dqHASqDi&>g(oV=acV7L4Z#?J+;kS6snt7J2ZKC{C?T~9%n#``C77(hHJ>#OTKj+gaIk1>JRe0y|5Jl7h z-dlUqR&LE}dmfhRbO`gdBeBa(+RvcB#e&}?@!f&ey@@&s4e}=#hb+uq2jLl*Dy`5FKhRFHpCO$L?hm3xTy=O|3$R#`L9z&_4^;AXGC7<1vr{1iVa;jL} z+cd{(d?qpelJ4Rn#J{bXtP`sf!pp6N8PBAflnh-C(u&R}5$;{bWm@voXJZ&uP3CJzd85moFi_^+ z>P%35B%FMDC{R^LOW0@_3!7_Ew7s>Zyxg+Emuc-(*1}`C7^ZFrY&9II08@+ZtV?Xe zyqtc4o*w)8P zfg}G-u%UV7jz-o4TN|ZSUIn$WDebjYzd3`4Ow&j5YZ-s`zKx8cU2#FNN0OEMjOoT2 zsXl781G#tO+IltW?vtoX_G>dr-TQrB2~q9TIAFt(#N?elWE#+>%hcpxteLG)%sWbRc)irm=H<6h#91ZeoaGQcdPW_XAO$+AC^{jDlf-htPi!$ z6$)QUW6IJ_bekJW7-OXFa%S|ibG^L6Mj8FVxe7^3!va0u;^0S8SfO-`VL`Bh7QbN#nd6N1l0;E^Sw}!Th1{ zM}>dGTn|wG^{HXH^d?q|!Zn7C8swDO&wMq!DD(IyMPwn+-b549SNXwYxLM0$sSDm&nRW9iM508DD49?H zdn#g{1TRT=*4I{j-9wYb%;5NQT^Sa8BUDyNYzym1Ye#=VwL-=hXE5N zfa}AEH_1Dq5n8IEL%0-FbXx^$~_|8EbL$#?1E8#MiVRP*Cnxqlz zDq2{%AGa3Oulgkyv^5V|hy6vE1S50(-|kyB;!uKYmw69s1cf8O45Gcng`PWbcw=Fw zKJ)@FURvheGnf+B2fuRH+W391!WQSDvN6$GqXCX+2N^WZATN-^n%E1L zhP?wi(b^R)@$w=1oI2AD{0ulC6NF@Rk-lH^9}FEgfI^L62;G*wD8B(xrQ4i3Ma%YY1rS!pR-4<}U*0$}n3VawROI->YouLZFyqxHoJ(f=O`uF@2V?gf+~qcH%Hw*O zT+R|L2?C#8r_ew7BC-K;pWf#e`oK%IfrHYILzl`&$!$%uX|3Sf#va|(Tu-PU3!p;7 z#@TA1H*}-h@)^CI%8Qa}2`{GbefnV;W zxPA8TP>~I3wl}15UnW5Dao@fXmH!e*hY$5);44ND1tODF&O`Ym`|1vfrT)-eH=*Fk z5iqQu|5ad(h~}u`Kb^AUmHlZ(rQPPg!2*FZDOF$8-S;~`Z9sOX>GM|aSy<)q$b2d< zBkRhn?~D)9(fy+ZhPzU%cLg{aZ$~k97-s$pm(ZCY#1sSRE#|w}M+&+h!=(XujH!N3 z(1uO2+cn>N0W-3lx40`fn@LVIH-Ey=zyWDYW_Oe=qm$$o+Lfec8eyir88q88^%|?n zgAUR43b?Pf!LRi=99ZKk6LS60w9bSVQF|Ddf9$3>BUD^aMaTTSqu%k(m0g*J$s8ed z{3Uw|UZphoC}_nO$hfk`1QmUDQRgV$M^zgs9@6Tdg~)@dgM#;;+=Wpz`Lhz(gU5Fy zWt5^yXJlK(?p99<%gY#>2Mb5WhA;V6Hcz$+Z+x8Moc@`CU}4hF@rVM_0-QT|`fn{Jv@|WE}dV<1X;wKbuGXi^KoF;mR4W zp`dES9ywMu;Sic<6u9TMjZs+q7dt{L@ZU`5_(6W{i_Ci`=W__fynT>oyT)9$E7%Zebxw|kZl?xbBwCnN3K@ttHW3NV%emp zusYwdCc1YPW8i~hkPf9vSe)me_(|Bd7y?fumgMg@pbeOT-LYjAsy>(uMVF;HE`t`I zw3ZK)AVogPiik}>!E;fOKeEE^Z~14R)$29n6A~2&%!$DbHkx&h*HAqGU>F9fy~k_F zhJ$v?sH2>|cgM(=q|D(sB_QBABeiue917ISyygaxXe&`In*o0-jj! ztKQ)MzOX6OkCC*6&DOo$m(6qIeySzdTRi{*qOPRDUGbv4@HzqxX!alrXB1ojR!uO3 zCM9rR0O_8NVU$;b8n$V)7gyDGge>uc>{s8wnC_c?;DxE zn7zt`sq`Bv?f3Gs%mIXxGoy;&~U=L(6}zuVBwR z=j}zRaT&-C84R~G%9d>T6`0aL5d7rb8!`SJ_U+re{JN&pHkRDIm`)r}0v*Qt_>GE7 zV{2xz=P_Wp;OUx>8n!z`{|It^ja-&}mr<$#1&FRbb!!mzG1Ywofclgps;!;~cPbsLZgTXeF{5sqD1+s= z=uTXIZf8UrMYO$Q?G8;`Gmq%YTOI5FA}&3h7H9}`#%pDc^q|YLtiDA=LRx3{CQBe2EzgIQzZ@Z1-mD6 znVMTxZ&rHYK31Z9{uuj}_zOrl6(3K2KPgo#W?u&qNh$H|qma1pe855Ugd&_i)vA@o z&7`ud)+dK*qP1iVD9&HDsu*S%n8)Kg3;U z%*VToNU_^*+dRaxWo``P$qGq2CffcT0(~xKJ2}d1Bay%+(LhD_iO8(4Y?rkCye#j? z(lIZ6Z8^;Mrz@VD^jDq#q5;K^+dn>6XR$vQ?7MH^K6|{|M3m{=wM8ToON9sgqip{- zt@Zw`mj8dR3k6RH?c_XE3H$n)V<+D2MqiZ$8U^~$CC7T#PB+5if%Iv2P(=+gd3e)XSs#LvZQLukUl%p2U}UyDuz)!!SB^Knpm zfyBir|4KWnG&lU}_oM{jZH=C>p@ImA z5(bS(3RoyA9R^Y&NZmdE_rBlmTJK%!e!1Te@Zp(f&YZLNuXg6{&BNVubh8t`jaH$| zWre5@5)$kjZz0SBsI{G@o+QrBIVlzM2Kw4FkG?`_2_Y3m6T*C_V8SkX5hl$z!1)Bc zgZE?S(C6RC)jszDIK3Z#h+go3K7h{+YX~6V7abOuXdHJxgDdz`i7|cf+#%vA1+Ado zwZ@-xQGPQ}CU_8^!c$pO0e`e9Lf2xXoF zP;GMg@`tl#1qH#afiO%IO#b_@Ns9A@9xsZ6h!c}5;_!#7_ZXkZY6_#V9#g_+YMj={ zXI~^Bk#)i(Fx-(3s}4#9mzPnISG|2w$l?~|`F$eQ5!;pfKr2z-{3n-Cc43N(3&z<%-U@PCD z4G%O%bd8HUKGq$1nn?aouDzjNgpXp_;X^e$01LA`$uo4eqCh>gocQdqCgwTlVbv9l zB)WFs`V)TE17J^%c7vByo+UAGv}cmym!!cRb%d(`<9PqTO{T^E)}*~=E^H1n``ngRr-9sQ3iJUh1h zuKEt4Mklr|V7xNfT(Hxu0Je#cP_RmGo`b~Gg#JhWy9O8)Evy9vYjZ3hwEh5v5+wi5 zFM?Zf^UzO_UaKIJ@ zF|hhHB4n)7&Q@}fdI=&_vg7FM7#Q31Xe)H#oFxUc2kl?i%H85G3TybW+%WC4Ag0X? z4awPy{~!y>S3R62;Aq|;g$;8eE;J1uK&#`s5gcPo&a?@UVkybWgfmg}Sopo`P2wz4 zkI4Y=Ozb43ppoi#n^`DL5>Iu%D!oJyzUhnOkGUR!p_eNUc`8gUp}^km{1(i09?s1^ za6sp>&rr2O97hQ45KhT%S9}*PiRrj#;q8-kWZM6J2UIgX;zn2sII(u{RurGr$!@!Kfu& zL3K6cChoIm#&&kcZGArb@OFoY1eY>X)^MI3zti#;#K&pO@FqCwx-)9p>RnDWY^#1B z;}vV0jkfLp@%_l@MsO3rrtklOvoEK@|6#p-lAR>O5Ah&%8>!~s&;kv{X53e^g1ko8 zTv)air#%+Ve7B3BE=8-QnP===Fuqt9vF24dhIT!Wh%asLWvnKir1uI{Yl5a;@oa13 zFaGH+eR3tY@`8ae87uQXs^R0L^x7ORuIr^3YqM8Yo*IG*=|AEbtH^&;Ozz0AUz?)v z$8CzTHIx)D z7zbJFN`BsW-92p}H6HN29laq}5H2W7zi>u-!A0QYQm7*8tmguRIG-yqq8+jM#r7%d zB>`{K+1_p?5--|UprtAyw|L)i_pb#v&iI?d^Sjr78{$q zM(WK*%Qfb6#2|M|Z>x0jshPV;GwL2Qt}~wT*qt*CF8Ucsb7))Ln;uPCg$0IvK1eqj z+D&22;1mGu{gyTFhWL+RVx$)hLOYpe4r3as4oJMG9>%Uxa78V%VZxi3wet*ml)b~N z*S034l;t!|NeAhMT4)QHnRx{+a%Lvc%Y68AZkP!;AJ*h`QX9B1)W&AmX}4Lajy~{R zSIm&ARy1I@kphxB4ksIG+MG_2#7D7?;f~oPuoWLAP^sTi6mxmp)U`AFa_@_}l$t4o zL3HLxz9&f9^+(bLk@QZ#UIbxnFbReKn7Swc>h2O9x_GUNz4v7;8VqE0`M%r4v_E3k zY4;sft|x}eiIr5KjQf)x46qc?*uS`Tc`TDGd#UKm36Tk+@YLf7TjRzYH2A#L@%g%x zyp~4Dc!+!@j&RY~t_uv;zb#giSohi|4ekF7E5)5FlF8+el{wD8e5%`MGVjKNyI!=f z8Jz)~_pMB@sI*jhrEbpUMS8N+NqN)A#M!Z}iWUNPGz(uH+~PnGPi#q9OY8NfTkgJUQ@qzWR#bGSazv=9B0`Xv6}px z+b>s5g)Au$RXAf-BI((^RGDom`Sla6hrUs$F&nUZeQ zgeZb7vQy?HQxOf{&kH^OjRhQHuzS{Pr`pVHBi0O6W_POM#)SYDNY*$)P)%ZzHVZvk z83=$_-@WHOYPO`wGBft8xn>bc^aT0gw7p)U_O!GXx`q6L`R>?a`-rN zJfnJ?%QcQPKT>qAwkP#O!;G%h3@uB(F>26ND2R8%Af7*I&M15e+FaB9Ikogl7Q0Da ztBdPfRx8mE*wXs@_WKholJO<&#?)-(gR_a(xpLiE6i+dZQqDeSW)U(#=BiXK@z87b zR#=_lrynj5ozA+tr44ez9g+P2oXcb9{7eZ4|oxH+@JKPq?cd;dB!{MO~XLs$wq0LufCa(kUm8zGxF28I0fl=o<(J`pBxHMh*;{yAr#6kfl ziSb-7c3fuUTf><{cdvPx4KpFbwZU$BC}VkUjq`E`n?L>Xd&KT$`5A_X_T6mH|D>tA z6N^R2koM+vNPpHgf`dI| zvP|y*$yjMuq$0}m5CYZMc23>+*GCX$1)e}px@I3JsY8E(iw!AKrU$wFl1+{sX14PC|xqKmCHUKqKF*i3^UazsaU|C#JBi z-+vRQKHhry!h7yJR+oST$o@JPIUiT@YAwXlwrI6${|qf*HvaYAwAx4tHqSsav2rWJqY_j_joh{DD`eS|(e0sPs*Z z-&Z@{_Yz8sV>cAzRdpwFeDov%va_PPO-ry9({}x6&u;C^&RJjQeYj zk|<=2^~rf~FvRQ@pXx9X(v^lZ*hxhi{wW-}Z+Ju)-(^P{5atyFX51T1klHY{!7|Y( z{p5WIX|^R^;S|4WD<2u^mOl_D7yD_oPCe-LnLO)~Pisia+o(Kw@Dl;In}=9top1aF zqP1U8CG$M<5SpR<$)LrvLLXkJfA{ixXDyxf1@Z_{lR2kSlr>BdoTI(q{D8-bpTw-D{p->6;om#hpBAe+Z2c-<)C}tqBdC1 zEB%BwU~=+N`zR)isyvE375X9+*J&oxLz@(4c-HR_*5qdtQU36BvF-}BCM)$^y@^Kb+hMN@cXjRe8>k9SfiaCr*F8PjcZBzFfWzb2aBY(Jkd| zO1t_KmO!d!3Zspelc;}V95CDpl%5{@GH^dE5y(%)6cYD|7IfV zR8?U6Hcb6B!|6`zosb9DB7PEZ;_r#cojeSoVS1`}i;R2&? z9*4H5j7Fh<6Gy+|g8k2*fXxuHb)OrFK+Xzvrdgd$a?G;tmqR}$QlkW~r(kVdcScmI zbV;nlvxV{;@u4maUQ^dQE>rXO&ce<}++J##_1vu~o)z}ysX&7a^T(8Ii^nt~xL zEa9B8cErC+ij{MBOBY7AS9+XFJNq_6y}^PpU>8Zhgj@>)l=)5R+gcN`&gMS^=Qjp^ zsYQiW%}40scRVfm+j7MbDjL0vRgpY<4`iiT^MnG#`ztAp+$@0IEMSSb~RGlW8?MBAkOCC|;=I0blbnfxe+uo82r z^@`<@d$7eF9FGrR({Fz~OX;ISWv9>Gw5B}BJ|X-yXs$1PreSg;W=taGZNr;WGtLtQ*ILZBejrI;P7-cl~ppfY0;>6 z#NiVgwQn!_c_zyvSS!fjtCu>@y<$?27NKF5?yf(Gx>cQPYDs+FTfH;|ZDKl;1S5C0 z$yH09b5cd=#!u1fhq49_kYjsM;W$`Hah5X25>_pIO(ag$ye!f}$C8veti`-HHa3#oc(t&tH;)XpckSCBV*y`@e5KJG9tmF}#L2u3jIV zQOr=|RBsfZW~ctk`~0gsG~ngr7%8wW=V{QrcANrk!^QFrDjY~50Q&(NW!l~Rd5O4L zIs6lhz+jNgh}Z?QX|j;^7>VN7ENrh;)_GnnpP_`mk>cJ+Z9lPR6@ns_R=w@>TaR>UzvN>x zEcIK;s}3;?qRO2Ca$h_YnxCzrt}QK7$-YMqiU8C!9R+THpL`p^pI+5XxI%S9%o)g| zoJC_7#?ew4>q(&>Elr3gSKqr{a$ZsMD;)404DU0S8YX8C0#T&!SbX!^6&dCIif1FR zp4B{dwgB|v{LsqT8^^C4eE?xm<+rKm$I$LTZFhclg6ULj!;rKM&jpUx!bmbCv)aNm zJ_K<&9FGKpn{iHxP`trJ!!aLhkw2_)5X9~oy6AlQTfX%>gPE8G1FN9tiATZ zu)`T1H&0FuF%&8x3Aa?VH3~znb~P|Tpqj}@ZKS5>z4DOWQ#aRhhVLljGCq7yN}U+O zHIzjyAa-XxS!YdWh2BSxuG1 zCJC>W;L&Qmw!Al&F{-!CDEj4Qa&ZZ_2OIWr1oA{7kOhT{4c^QoC$C$;M)#X#?YTS+ zavn+R43NlkA3O=6r>JK&UqFpvUZ57+nSiTq`PnegdHQ?J<6$PjDq5`>Sx?>Gd021@ z6Kd%JQ*cQ4WC0`a7Z{5n0R2a@wZj$w^E!D+@OTt@MB6`BYgI!tppSC@*NE$H$t35gF0JJddNKy zlkhz}vGenS>@lK8Q@CX8vU*RI72a)(Re!onkW(`&7Ao70<^YvtW$-@8M0xQe?UHq0 z^9z)H7Wr4eklz_6`qtv;*0KNG+vrTb2->$sqDErGf+dh&b}cRX zvl0f6zsU7l+*8xrp|h1$@|ZRCGwEQ;C-swx5p?>8DT27UjB-yI8}sx82e}k}Px1_i zcCA}FtOZWPW$%1K@Ws7(7OhV#RTv8NVk1|K=7^pqrh2N((vfVg@{wPrM62k*Vxq{e zQ(^gERCS=b3UmedMH<2bqkxRcHPVT4I&fvP}N-veaKSCl{DY6`Rzos zj6|(P_x-B3o)k1ix<0oi7*r#;9xcSDdspUsS-%(8efUc%%}ssC9G}3YZ1QhE$@gQo zx^AJ|ze5Wu|I`d6t#w4lxD(p#;vr6v=jgB_Zr(e%%gsnr0z+`R^E~c@{uMiGc87tu zJeLp~jVy#!$+muh$!auVo8Awa z?d$sW>uPh~7@sSH3avaUwxAXbTs52?lSS)=$G1T*1s(3fAfNeuUGE9IqnX0x~6#VZ5ub;@kOqE$mt`tVG>i$oLoxB!V;JT;zN< zS)KE!d5jo-_Q#w=pm7vP+eg2W4ISX)=6mYN-cnvy4VL)Jz<2F}Pyo<;6g9*foVv#a zk)qF_Q-l#fAw->jkY!!50fKn_jX@0n8OT5LGkUIP|F;}Ut$ zHUJxB2L@;e;FEC)tSkV#unC@z?P8dl*<8I;*%#vsT^JlD9H}V5@TJ8t7B{z&-xy?Y z2VRB;VZ~G;y#OE)F_m?_ z7bt3pnnBeAdTrCw?QxNyRVvkZRxVy#yYCYn!I=AI|&P4gO(hXKAJ!TVEyb?-A^&^CoI z-btA@n6n3?`wXE2?@Y+=Lv=Qz_4W$n)jcFO<&XpYK^`f3Q7PLm+Ix8Z4THG84CR)R zqb>_-7>~;!gOWdeJO~f_m>bL(PaPC?o`6ClQfBBI#RLLpxR2jcvRB|RH!>+GEY1Wz zX~q45CaHI_0w5p=H(4*pIC;Cgr?rn9PLO-jlf>;5YT?6uC>7S+6{rs0p&h-gTm8*r z;Rt?Z_c#KyexK<$KL{j-rK$-g<|K`lqTsjw01Xs31r`Y2FSo@eH;rE^$!;<4UFfzy zDP&5+S545gb~T}067lezyoP0eMszC}GY zr|o*YcbWHq4&)}8(`w47}58!OYyAmt5`Mqs-+H@pf;6hdQIP1%0dJLycA`9nr(sQaWUv!6Covc>=; z^UJh;g&EuGo(@!{ITAx&G)mbeY06>~@KC1sQ$g@()4ZG*wV&E%`OCg6(Nm%Y{pCOJ zrKz1!_sqiZUDra}a96pAb`!p{QrW|GoPZW0o){L5T1e=KQ-n$O(8*vFnva~f!xO2< zG2gk$)3!{;FnI^BFLtKZ4ZSmd@mtQO&A4(Hl?LHSukEa2-CA$S*nV3ap@x@$I=jV( zss{B|Xc#6IphMECAM7>e4w@(KQ9M%lN)*#h-x9&Fe;i_#XOQgRhVGI2^=ey_0i(Q{ zDa(-#h1=JWMy#_fygv+vdZG2_|)DpCJj+LeeCahpLSp(dL>?j9|2UmUQNUbdDrDx2x?Mby5i8 znLP;x7*JA4S$`XBxW4hM{p{P)K;E)PHk^!H!L5ct2@GBZO6-MFm!3bhz}~}|r`?9d zFc?7Un@LFKc-S@fC4Ahb{D~vwT4}28I$^hyK*x0hV@~_>jzNNgqb$mWe~Rmu$51ZM>5{=#w+tPL!^$jwX2_*f{M^q)z`y-AAxdPRzU%Q5Z+%n`m{` z+R%7DPs?(zVGob9q{PvQ#Jx%Rq?66l$T!h>SxWsaN~*6XPlDP{)7B@1+Kg~XN}+Pe zB=K#g`N@kJ(hL_2>E=J<^!*In4hRqwhCFk76x+rjbWgm=^PG=c!tV$xwU!nl8dWvOm8cbzJMS(3b+ z;BOL;EwY z(9Tz#s8wF|kK5rLk&DW4ArV(>q)KIX!rLt>-ilLokCf*%u3s~tD%yBn0^KgunU|@YKjY*un;2Pc^GkU;+Wx7gzhXD zLnZC1b_C0j9cXEmXC+u)npMpz6ZjNBg)G1pM=R)eJ_2RG)-DI zpR}%TkdE)@^g-!GnJ>$28I>-JMEbu2I8ThTW(YW`SmM|g{33wr4U973#K$>0xuZ7MY?iUJM_=; z!sD2i2RpS)8>ka;I5q9i!Fx-IbkLgC9p>=$^}S+Q{i%-BSI!gE6&qSYs3tF(VnOMzhv;X{EYt*MSZCDb^=$nCJU*FdD(byZel}dh89&aRRTQXYi;mIj`6tH35GRbRE^^t5Zxp}LX4-(U?=)`&F7NL- z#I$snWNZuD{cP&@6gb4C1g?LxpJ`sTKm-gMsm`7O_Wcj$Bq0p(2Pr%Ft>ds$#IGS8BLCQ321@clZH za^TH&uePM9@l{vZYbCG!e}51qUphYZQ*OmB#rfO8ODRiu8use^y9f2wB39xIb8DF< zd^!O_r!{hvupaN(#kC#on$9_0y>N^?X)??q?d5MAqpdD|uvDiNd^p4IM!isOud2uy z=-0Ppq<^C)?kZ{9J9sX9)I>(wve8lPIqld`%e22EqF?UsM(9ufvwyl4npS>~aBRXx zSOkit?PJ`j5#n&;!P6pkAFpl&pUv1(qL)2!c2964ZlTykhI0FZG-rabX4)G*L8t}J zal~^z*}2XJH=5nR^3~eWX<}kHZr*RoMPc!&Aq{IpDEO#J3PTp@&4XY3HN%86WVLzn zMBa6B=k+@XRc)U#q87hzR5Q>swP-RH@>aWqLL;QRVZKgpILCmCq zVnw<~s#mm6DSq1Hsq+!}ZF&il1moGCh!~1D6ysgoo`%icLs$KcBKA-;Z)r#MvN-fR zCO>7#noMn_Gr6bOkDG=f3$*1yw7Kg%rTb&<;E2hL`YhHgqZ=F?S#E0iWkkAd4nK~+ zw+GYr1Wn7LDe(+AufR=BHD}coK*i@(I*K7(}k##8Fscsg$!6jDHv(q@USTwr6j- z)l;hFm&@7zUZ|HbuHvxnE(cQZos7{r*R-bn&vD%RY?Qv*RB{3y*BCzBFSTIt+F7wi zr;2VEM8@;T4jX;$xk!`JeN$whuR7>-j{HnJi5pl5$tOx!d9FLtMtQ={aSRK`4lrke zQ`Ey#15Q4;A1ESg$j8>v^)5$3+GU32Qqr3t+SvHn$o(d)-5vTR)cyQJJKW+vF^Wn^ z=>f9d{VBh2>xO6hu579DUuMrkW3}nRYAVhlYyc@JueOGcX)@|+@2lBYU({~Xba~Cz zNeZPYduLc%PTdv#gH?)k^p^^kWlHOe{wKb3Y6;`_jdg^3cbYdCFCS#OooRNL;YNsz z3=Lz7Mke)cbp@u2WX2)jcg2ItAU{xObgcb?WDsS7>e|MpDEi$f%OB4n248uz+40iD zvfKh0^d-&*ihVQfVd`=4pZ#fDbR00F%pZnI5eCz?7N2aWrjAgq-2H%eQ!LTJIbFN( zXyIg6XwsxP#f)TE=#_`l_y6Bo5jyqo2s{&u8-TyWP+_Y z98iek08QXz0W;Wzg6We8Py#A%m5n|*0WS?kkC7t%qFK27xv-%loxhqvp#l2W$R#nJ zTN)h8M(6p=wfKh&m&x`6gyE-v7Ge0l&~j-zE*tk@SH zBz;9)6G+6d03_`-KD#Vs^l2N?Uf{(Q+-f`_H|!{Nj(nvqwA}CJ*%Yvll(oX#2X_GD zp>2(Ss6uQU9r8^)(asA~U*5@a`zws4JIJO5tFO+TpvV2ZGFqP8{SJ5iIQ)cxjFy4S z<(tU=t9A2#gwp;$`-KC23JQwDLn{kaXZV7Syg^e_l&hx|8C`zE3g4lyFtNqd8hOP2 EFQ^ig+yDRo diff --git a/docs/review/request-desktop.png b/docs/review/request-desktop.png index 1e42a8cd0a9efa85ffed9699c38d86c5055df1be..c1db83559c51ce716ecb44b6851aaf5946259276 100644 GIT binary patch literal 42277 zcmeFZcTm*Z)-BqI=oZC*U_il$3W%sA$%vwYA`+S`sN|e;Gz$u{6;MGyk=#I&K{6^J z8Oa$G0f|bMe8$TRLbIdWuT;A8NUSyzWp(l|@ z3^JF_E0Rcb_#^GTzt-TJwc|!*5@{<*=KNV@r`Mxhj&4l-E3*?aZ&io(=X2Ck{<^e& z8`D-MCWYiTj~?CH$;=cG!6vptlBW319ofJmtTb`;QL;btkNW#hYSng2lnI558f<4| zd|A8r)V;cGyw@I6b?^bkc zP7>dXnE!wHfdh?y9o^NkX>balBu9X)pJ*z~^Lr}aKRW4~PbWOw4o z*{yq+@t9tw_a8nCm+)NqR`R&QrY+5Ii~V1l2kx}}F8TDSHD*JS)_a?;AL#7$s)NZ~ zCv69+R9G&M*5UVhFL2I=ow1fGxx##sxjVp#`*7fzdS&1y~ zzh3L>WPc^+oxm9vpOLKAVXKkp6 zBTF3Zl$Is_l_Z$WrJA%?%q3ttgj3l@!sh!WW#xdtbzA@W-QL;pF3mhA>y2@dcre%5 z(Uf}9iQB|_SRGQDKZW%Xof5Lg3y#-EU5;C^INUu$9E#ot%-gnE&rkN_Ni~uaUcP+E z#rEaPm*LE3htHfjbNKM#(1$s+doLf|e>GH?dH3#D;_fb7GuLSTyzWO~r(ZW}UJIoe zRGYjHu?eS77G}M{PT7RLtO(%1w))@Z(aN@3S(*>AENGJz>!khjj-^a&Y)OplL#id( z?6rFGg+VbzNkO#7j~G@4$%R*ZRT)0;=h$YS;t0{NdEI7{_2b8nB3={5mv)J9YfmQ& zJY1KlxP@jH9=^zT2xsF2&uVFD>4W?Cqo&=dCORdvlF<>>Z+&k?h3(-a>Abhm$HT1O zy!X-K^X60!VUMM3B3z2-PUsZu9lrUVIEh{vZ4@SEX6DcA%|rE38#iqD5}l$b6FzvR&oH(X88EnAtagW52$;$lBGu^ip9%?*ir74n=WNc)BY>c!{3KgU@VwCHS=<(%r} zTK)Lx)2F57xt=|O7F8jFmQk{SHvJX)tC5pme|&i-A0{efRJWh5WvC&B=Xy^1*}Ll; zd)yuKVykYd_LFWINWLafD=gd9?HWRE@~b zbj4?BSEv^E2XSm;bt{9oO~qCgMyP__P9KSowz{rx_O$;<_zP}L0k_{)bfT5EGI8-b zPbF5I%KTUp8#6tYT@3fi-TD0a(kiW1o>PkB&+fsR(1v?8VPcfOW_#~$$uw=LSz2gP z)nOI3`|!S%OY&LxraPf;;W zXkGe~gpzn}ufGvu(`#ER<~Z7#LM>crU)%fqsJzFo;`Q+zaTnsRd?|2W#9_qI*OK}4 zWD;i*yEYpa6PCJ1AswgUQAFRp4ckxaS4@}gu{?e~NBOq2`ant<8}Cfh_M=zbet&&v zB7m6i-6N>-NG)O~-pEll=@>@{1bQ9f;z+&>Y#`81ese~w%D-BB$zlvxRH8Lif4EC1` z*wb2>ba!dIyTFim{=TL?RXbm!siiqlGsLv6>7who;yZL{`jrk#zpcl}NR%xCb;Bwr zJ^BMx)8&nJjnT-KaMs5wQmsRMdDK(CSMn5Ag^4Yu)rwQ{zcR^7Q@qD|XXKTJs)k;u*OoXp4#UNrUb{4L#EV4RwV%;{A&vVO*s+eIL z{A}%-lo6;Dre*9Ymv`Pwv!-Fq>-lewd4lXFClex^+7uqf|3R3rl?dOJ@D5#;b$w4vWIj(aS2>sKF%V3i!ZA)CRP z#La=sWZTUfHgIU98||-UzFes|#rWgNZr-5d>WVQ}(hXyOQMMn|C_zbAC0Vp4zm=lC zr*T5Y;-u>!uOK%Lb>3Z*=FAqXXwm7YIr8b_ZQAwYIU^@rZR00i@fvD)$2=DtQ0V$6 zEj*0li^k^5R^NU4xvApTzAv$)n|g^Ll?*@RZcQ+7w!=mS*596@Aqw_UUlZ zp$kt=O5eDDvoh^YUh})mhu>0${2ZB0sr5k)7MX`FrP$5;Z8u{3itO2qY1H0bd3o~e zgyM#hdspIF|$}=b*uK-S?`%rl6x{ z6j`$z%lw&Uzy->zDf=@i|8SDoWXnF!r7w{(+Z&FaK5f&MsvjH_sC@fVQX@lA+|q*% z?EFZ;U6V8vwbQlRbNl>6riDC~ek(@Fz6vF?_Z+(D2Ru;xB*KFqZ-?ZzE5lin>?CXG&O{2ZVcaa_AT{>EHJk7@ss&HG4cfOa6 zJSrcygql7&+May#9D6j*3NWU}w@=;(6KbgMGVf1^Noi&SX&vb>=c$2EAzK5KF%89x zrMh!l)MffTeI8J_irS-?RLIUPr2_6aRe?M@1$|{tJ5rQ1_1n{pEeqxiVy=cVxo3D9 zIm(<27`{^V`R_v+J$&ZvcBoDgt4nFjB=g_Wk9QcWc4S%hEX<7HuRGqHy_;#?p+Ur5 z5*KpuUx!ItPmk%pEIR{Wl!&*f6`Ong{x465b7kEr zm#x%obJAyP#D`VV!aY}<3q6+EoWF0A%QvVF<|$lC^%!nVd6zmT@-y$91)W*RLEHDH zi?d_QflWF>(tQQLK5V2Z*r!G(EzK=KYd6v?7Y>Y~a8{F*ZsU$dtyh|Fs)JJoMg0XU zOF^%-t9HgVVx94;`=A(9BY0?-ACd#U_QFc4vWsZ6weeJu8PgQ(oWovpo zSC>(cqOXR=kMGoR`yx6~HQ5=S&>+Nb(wIFM=DNnym*{A`_`U&GSNN7Z-kFsYd@Hj4 zMrxS=KP6z?zU>$DQ>SoSyYWsT=J4&z^689#0Rg=?WXZ@{(>e7bDSWjX3f8tx=JjQw zuEz!5R+1pCzp8n4kBEY)?B$qP#2 z@Zg5h6Z(sY-4~qX3R(6zw=Gr?vFBg6POWVxy|?KXSTF%?+C&MC{O4#f0>Ld$2I(nuvz|kgQI}~MtG2 z-tow1`L1(EDmT8Ovi*bB8BXx=rQayNgMyu9RXx^`MZNY`%J{o^)!CGk6e8)8I)5BI zco4`}BSG!d#ulG?%iC+{6#J9%>o9eSHi~8O!_0wtuyU!syc&wro+|G{9V3KJwxI zMxO#C|En8o-TWT^S%f0rgNF_=H#NRZ4+4<18>&~o6pz*m*!9%$AMNPN__16wY#t4(-TUI|L?%Z|OQ(U@r>sG|d+aHv8OFO&hjk|mQ%>|@i zJ*WrhpcH-O-z_U?gy;)zTsVKe^^0G^_s11^v&MIbKC1i~J7TbT#_Qi5yvYKwPXAf0 z{eJ?z@ZZnypF{Qh_g?(>Ui_b#ql) z<-rxI{E(JPhSb@)PR6B6f&1}ek$G=gTh)j^yv#SeC9<+NfA~!;&G>uvA0wH?^Qnw? zX-JpU*WN(8Rp&UO>$=3k>cD=x*v2rmzE9iO#nT%E4nWn%6mkZ#6CyvJ68+T=KRygvSyb7Obf>g)K0j7Wt5hkvR~!fInmdyY*!z^)-k+j&-0E2R zWf}N;Il9=L<(D6bKgG4HC2L6jOCJvDj!kogXZc7h%Z_N??Ka1&mhC(4n?fQ{wN>buw=Ps z@7~5JS*yIhH6$;+^I$dh&kLP1t9i0vOSss%Yyb7H>DDjrF_OP7>-0PA#VSMosqZ>? zvULC&Uf)%tdJDToHXnU$)FS*KPUYBV;xiHzRC1D{_^W5@;@HB=$J@;qxr zM6&75pXFcs&u=Hb(brk)J{mEzpyf%EJren{Qem|vRPZtRWC(DeqEsyY_nBsn|C>S6 z^{bBatND$NKPp~IwIzr%&RAaYWf_ zR_5Ffs1E(*&u@_#B*y&hO5wBHm9Oz{Dz7E*I&|a{yCQSOAE(`VK=qm6ztZ!d_@{vP zV1V7dzIDC#pFV#;L(10BTEjpp%1B<0oUCOvUX(C|7*VR;K>##oQLCo9$aCTy>8g(_snYE zR_~VmG$jAE#Ol`{%UyH4@MnJzJNlm;#7^*W9&E>ol|TCPLl>+^c!d%CMzNn4c{IMNGVUrkcmGYe@DYE@Jwbn^0v9$BoU*^!5p(Y` zUO|_|^7FoWB@0dk%>U(e)*bzrxW4ovPy6!#L;m$;s-0a{)1KOQ(}!M?PZeUzlh$o1 zUPJ0NS++l(Ib0VT8KvVr-!t)ns@CP{8+V$oqAhK5r$WBLCoMm`q2x2VlF~`-vp6Xh zwYw>$zhWC+ti%jnkGgBYvsXFI>Y8uJU3$F?#;9+D3ZATU6G|SYy7Ecg_)y-z<(Wuc zks_W#ne&2QYNj=XU+^y!_=`L~I`N9kQ|&Vm=%L?mYNV;{)V|IVIxWNx9W$2iSyEa0 z%deDMqg40d^@Tmhhlco;d;+6Z3sr@(-t+$`mR&8(*eCeuO2^92)s`0v_YJ;p!Xfl7 zTMfr6e97D%#JlW}$YRGo)H0bTQ9eGd%<<#l`jwwUwOdp+4gFS{uJv5*p>l2hG^uhJ zZ{}qhixV7CtFjd0u~9EW+}t^1m2#qU*^*?TFyN_S>tVkciDJz~I&5R)BVS+Etcf0y zXwtb$vrkkt1M?>>T~+E<1qR&6&z4>Adj7|hiJkQ6nbR=jS=DizcT-8#dajjUSLnNx zd8l;0;mO#kiU0D7YVJRJM*J-+b_JxrAnmN)rhK}kP=~^_B-pl+d`e(ccKTf4okQ;u zy+d@P&6cy4O^EaL>|Tr{jsO$2#&6!r_=&x}cG8}un~zuDvy617d}+v9T%^ty*qnVX zd|!=3+CP!KmIaS~#+_q#&HnXe9Q}SHTWvJ8!#}E4So*qqO>ZPgGX6PzK97!#43~V` z@I}2r)70gjxDr>`>YMO`Gx~d@}$?*}ghooX>5Krt`>k-bt8dmw*CvTgRUGMIr z?nuAkINJU($14rA@l zkI1DeK9!<+k1Q;Khvx>1(O8P@w)*HYQL?l4wb0b3?ec1I#p(&-o-28Dom;QIKBJIk zAh$R&-j#dzF2_;OdqmxCiL&U*2|TV|zrwO-k1GiACXd1DkijcqwCgs-f_R%5Zb~#w zGHpo$4a(c~RBZMoUMnIZ;y8YvXm?wpz^bdF-?mt7h>_p2`}B9PoT-a$^ZhSC*QF=D zhqSReQMM22gTfjfkT-u80{dZgt~`*d1*{cB(Nw32TMdSw*U)W$4iTiwP2yb?gf|X)ilG^NPYo}&NGRcgQ2bTMH;aW*<3!G=6==$ zi8~nX89Xj8u{<55Y2hs*RPr8sKBCkGWiVXWKHerHCnL&lpM=GOd1x6>JAMlGxY>4O znnyn^h`#*dgoP;t@sE<`RWd1J1BFDHnK|MHPh{}){-T1bvNc(G7j(x-7Z{}^Q!#+Mf_4RR~O%zp; z#g;gwi>@~iYv<1ONsNB!76Io0ox`#_uWkB^2dM9Ah;_!xt(GY`Vre!REtJo}f|eG+ zjeh)UCn{gUUNZNfJZwon|WUpzw4!b;fA-9LkNlsPuW-S61{UXc>UjCj7hJ@?SfT#3iWYL(qxlMOSQqwdx~-a=TBilK}C} zzj{3o1kO!y^gBV9y4HNxto+ZM9|vl~B`gk+DJu4* z0|*0+2?f5?a0_$iunPvx&0h7Yc|$ES6I2j#8YwC^drsbv+&|Rv_}e$baQ7Wqo)Hd= zhVp@r`=WJ1SlpH-%KEBfRb^;2_k8fI^qDqqPyZspko)v1`}AlVuf>9Wd$zSMMI|xQ zvd4mkWbqde1O4TlXC-cZicThe=%hvsQN_B{*O5NPw|}N60Wmm(q&24b2Z8We zs3`2`iOJw$R=KYfvR_y@2TGevt4x(@lT?rMAnV{G;kR$9UI|)i(I&_CNJ<4?QW@HBgYbPrm zV|>Lkacii~E)j=>=!n!QoS@JbWrZkJ(fciD*ODYzE|S)H?eX2b5GoXjA~(xic<#X_ z>!6tnetX*z)Oj1au-#LGwOP>i3nJ5?3dg%cp{d*)&f*Bg1RrrO_?uP&hNF86EV_gZA7xn5XK=KhmzEYX zJh!cDyZ|l*?tKBxqojm5m;(-vm(K4jsEW4RL~O)xhrqF7AJfAlhAi)_lCmC zd8xdSGxD2kH@^~dorSIB%s%ymdv8eZ{xY0P*>^!-sqr?YB(hRe(Bf8Ee?*4cW^7m*ssJ-64D#LghMzgcCa6Wkq)t+P+3Km zS=!|rgO{6Xmf*TzL5r7kIbN)Lwh+-6QybXLY-n=Ba+=d@r`T zG&QSg+dv(TaM(xg2yhC0cV=Hnq`|VzU&DEi)nfL*;rjY={KpTYrh8*wtJ#Y^&h#9ka7Iwq{}LW7 z_InXeZr>?j3B?{@ws}?jm%8)7^iadV!7<C1E;$?x(aWpihKJ$0tAt#qMhQ{O}HzqvIt(`kRi%Q)ic20i_;DAa#{3&M@Su((u(fnwx(&mfK(Pi3p3}i8+r@JIs#5y7cS-? ztWcYaIOp4GT3@aE3Bw2QuEy#fucm?)Q-jdg9hI`Umq#c-dXd|W9X=Dby`1%o#Sw099&({JJaDITnkU2*GTZIe#&Q#clNQ!@#XTiH13$wVxFIfAus5a;YYKQpyx$ z#UCGV{jkO=GUdbf``c#Q48xt7rTg@2B^RcLh@|vf3J$0pXbfOf$#sZX zNFJ&?8NEv!R-UXLkB*w*pqLBhbdvLOWS!iIq=UAA1$;t_8?=4OW}_NwLaq}AgLJdn zB_-}u;$mcM=vCMcLDh`TT3p^O4s z=4NI%a8uWdk35k_)`i)GZ7x&|sc|z>qs7+wsX-u$LCD@W3x>~l!0|M|a>JFBD}q8a zA%44Ui_$HA)N{hA75mw&=M5#2$&#U3hP`eL9ewM&!#CN0SBzfVWX>A3qA=-61jWGs zcqEtYmz8)^dF}T2ymaG+(#=J@hBeA0mFhM>s)kzbXSBX-gO4h%7VH>CNpbL)VNn=8 z>gs%o=T43Qw(1zEqf0Z(Vum+zD&TycTjKgkrDrq4eWEmP#ZIQU2FS&z20O_O*t9<#DZ9pc10SjLOpg7?z?HXXPOS=3V^QQCvck7UoSAvln+yR}ylXn%(>?4t+sc4JU+UDltuXYRg z8g09}`mvy*tIneypJT)JBg*m0<>NzcZH%Pe1!)2hJybjo@8TF0JtR74ol$Ddu6?Yd@M@(D-fWCj za9D+DqHT*`@IN+axvZ)70dNzo)YJ8;$6`Y)26OMzPQXIh-X+^UtD7PlaO|twp#OXA z_LX+3PNCD(FsjSSRQPJE&e&p9=r&V0wyZBc@$*|*nyO7SWiJ=;p3&FkPus*Zm@o= zAxk&g5SF-FO;Mz%aOY0ICDOrsnO$*QN-XBNV` z`C&YcwEd^@=shzb3&zd=wBri&t*dL1I<*9c*mOS~>&*tL~x%SiK9`7vlTvbWbXrqPmM_VT0aadN-zqtTd ztmC~yK`;O)*BsOYgOt}jLJ4j?w?#~^$H2@K>;Utw`|GRE^%S^Qt4bS@O#|O3ORBJZ zQDv8uW_5LnQlakL8CMHxCDgrYqkrCmiQuH5lKHJek}ucmgbaGLQC(8Mxwcs2<@b5~ zzPY$Tk24P@%{;VU12*5_#~9JOo#uho&C&Jk>k>U@WJ~6|llB+b8(G_C`ROGs!^)jmw$S$j^sHke7U$UL$q97v$`gqpb)N(+l{tP41`#2-m<0T zLZjNOQqS=+=C#3O2IHTMKMNL<1Y#>bx9eH!aM6)2ncf)%z#`S3Vc)uV#sluFnnmMK z&|5GFem$NMr)Hva1g7FTIECxzi(r9L1cgQoi(ldB5?VY~S>igDbgLfi`jt7DJ}naCnlQbD014gy4!jmU(ZbqFS=$LImuSX!J*6Yf|@)tcyB7 zJo;|$j~O%bbNUXUbjdwg-yaHmgEbKI3^(THQT0LjY?pXQ7 zzU~6~kGtgsv~R zhMY_kj93@5VM>9~O?P&3(-?E!@)Jtz=!lB#7^AT2vtHZJaL_Z0ENg^a)UFNY=jvYW zlo_;0FB9(Bzuaz0Enz)=@Zg6vq)2Cir?b$jdiiC1*0a_efaA5J4W}If<-ilLQB_x5^an^76eyqHb+~fs*-ahV!Owr|A_4nYO|0XL66tRR|97z4znO^I ze3z2tIGh7da1x*g*nTq6_UwE8y5pex!gRs9%k5Vq()LsoaRv!HN}O{)A|E#Dc1cqU z&gKOq-3(f%8LD#Jvx))Eog#* zH^y!o+6l14N=SvCM4O2H_FdGwu~>~MtUuM5)T=|3@DL9`^O2cx2#Z!?2cZM@Dj~IA zc(O|&%i=mDbFEdUzo6rOaVQ@4U;o!3D`1``S%EI}B22V{| zIjycNHgTcmkSQh3RH$-ExN%foX zzL6(en7QT#YC;!bki}NL6t*|f)6)anoTzL+{o{*znn4sS*lT+^$??Y?4^#wJ%8IjJ z4%)=P(3R^*t*C^7v>${?jQA`SvHOKyK_l#x?gdPjfvJS__K*A^6O*lp+&L1yFbMD= zM?&vB0glO!RU`PBH!Q#qHh!RoBL;F12>?wh@T=qVc)}M9C~DRi`*+*{P^jNv zTOFqAxMxJK1&+64b_Kr~4%#SCQ#0Kt1twiELL;iu6CTS8aZe+D0))hFN_d$AA}icu zfdjNY{&YS0#%(E^e3uyv3PflmX*4_PiWt>`ol#d; z7ry6rr+));j*_(Sn>ePFbC=V>GFA%^2W|ft{1%ti`Mg=kv+4H{hii6@Ln&G*ohT^I2EIP!N*CFeP;a#r`ofSF~utZY3vyyKyl?e{I<^m-hMW*|XR( z@*#t`d?p@kEgH2#6E-O+sXtpmgFukUa$j`luRJN~elBBkz0%)6ltH2! zMLK0tXV&MgB{#r4szSevjJU>GJdN5+bb>3xMlDHQE6a<4#!WV0MVL!2`m#hFHXCmt zD+pSI1k*4-Uj^7bW=y@Fn+f0Mk>&VVSJJe3L|< z*1usa63!8?bZBY&hgPOfc1im%88^i@VL{*mox!<}1Hs3;P1RcP;6Y;hgO2JMOhQ@n z`4F=@yPO`KItI-C0umKiP)smF@!+-C>Z=MJ5qwzu<|utzF=AGzT0U5?$(~CkA@=4{ zfG7V^hdF?J?GW~Wvipc)HgB9bu-ERywIz)+x57NELu%ZF7xV}H!yBa5D#=?Hi2 z{ZH(&0goo@TJZ5+(Tr{mnHtt_xT$k}Z&n7zvyMqqCKG<=l$=vnZo0vBVAhVzK0B-{ zUlVrQ$(VB|kM?U`L%$sKuqFmou(qm@-2+pQa9M90Sx-VzJ4;&UZwE7L5|SKe3N$aJ z{a}MUAgNXHMqy4O2@?$$FJ26JK^qsX5qs?b1KiCOh$+gw5jSK1@(9@U>kTmr`vTa%`nHMBTk++n5O|acK=cL7BLy3N&{cte&3C;qH9RnSFD?~ zmP5e)2-^>85svDa%|_JLELQY^$%BiQ!gD?nU2%M5geF?Ac_nhtKFu+>fJ+E@mG`H1v;Fd!qC) zWm3qL*-qQqxNQ<2Lsmc!D&N*%9XQam;VPUmq_`8u1O%Gbczus9%P4&2HQm2x(S9S|@ zZ&0UEy6Fs=G}rN`z?SJ$Q9A8pb89>4TEgfUXBz8 z>;e7vI)^|tH~~(Yj~+ex?0?{{F((eFPaRPt{h!4mt>+-8GGk(Rg=NPM0hj3?rM`P8 zi+EI}R911f-zZZ1er6x}Gi1=R3F(8eDd~F0D~~9QGaOm=srbNhV|iib&#MXi+IpNM z6M#8QsyOP9y$7b1e?#7f_kgtD{LPw8``h+nm~wswqXS3-nfPn3^xO0&z4Q>7Y`Nbl z)45nt)J_5;NVZGT?UJ-{`R08T&-6E{A?98#fczf&GgN0xOFRnQdRHB(dT^LX6f1Usz}M_4rR4tiy9yBvOso*1OE5vCsTg;Z4)$n~P%x$P&S+uaw+T_FA= zoD@a;XYszLFQWmMDGVB{E+U$1>H%mdR|x1;#D5N1Otd118=zL38YcUJAguUhaWaWA z)T{B8(ForG$bR+i{^t+>F~}_Hfjgq)pZfw}{`sGQlK#OMGWhesf(Zn`4-D)+6!ik7 zK#y<`aqu**@ru-dfZm#-+oXUV1gy&8;;(Q{IHUUk)x*T8d`V{uo2Zc|kw7?ni7JSL zY9UOZJLot5{##c+BJx*}lyPED)BHvs5etR}%RfJOzFH88sa z5}zD(ed@X5IE)cUgRIQVWE^ooE|Zr)n(@fY$S2t3C3N|ia5XIPVMgLaBn9@rKd9lY zA%_D(L92uEV0rCY9U{$RVJHTsn?S@II0dMYRIqkv1@GK_f0uAudw<+^*z2%HmPM%e zm{y8KE71~_My%Jz9C^s?;Uy?gt1LgfJwaPs)^QM5`1q#3?0&{GXXh(Pij_)c-_ zZ=XIs+`{z@6%SVn+?QDTb$3B0$4=%WCZRDx^9nZrsALIGHxWz4=#8cFR?cfO#M=R% zMs9xYM2t$x#)E%!0{~-oC$1IvLc||!+*Myw@U28~fW=crb#IP_IenPy zypeD)O-vH3AnO^ z^A%(?lZ(2sJq%^sycF15ph=fk@?Y4)4^sTUfbF07zeGT=3Bn8Fx9!k{Rx$E+6%tVd zvX&(i-n@CURx|C8ozaigWrfo;t>fX)BN`CaE`Kr_BV+@Arhx^+_g#l@c!s+(OjVtn zvN@V8Ix^)psIbDjvFD6cFGktMtl@_E(WF73hI5I4bv%_*w<3{j?U}e#s)&_)wt@Ku z$=d*k z;K(k9{Ac#*(Ka+m$#~gb3t}s+pDeOMEyQRyG_{OBuMJnb)^?0!0nRt`zYueE z(Cn%W;0GR8z&yWW*s__rz z5CC8*n4X7H6JLuTf|3{K2c)mTeOxWMs3l#%thEjlSB5&;8p0|AR$^8jqxWt|5foR^ z#nCj78$OQR%}LiOn{)Rk$bcejz@T4Cl^e#|L6DtZ#!j|jniXg$9qde6yu!cIU++4! z>HbFKcx8n;@Aw zy!0=u;0IhFU)b%?VQ%u)>g$Jzt3M!c1BbT3TLe@Va4AMEq#4ZDR0DuM^OL3+ETvB> zJq44k;_z^EI&Z|dnKBT3s>=z@%ux)~E1gjlEx^e5Lxw%kZOv69N2N!gnsHr1Y^n27 z6&jH-p?BdblVVr`857Y?78e(9KXT>T?*vt9*aF7cHQ&xb#5z8dUANUyuHgtHA>_m1C!M8E>sob3& zUh20Xd!xfAJCh~4&{;#esY3w{^vNHn9;z1XQJxLsGgd@P$}PX7a$F}>PX@OzRFfd_ ztFo%GVkq-RSMD6TRFmceW8(22poaNxf-5by7A%)VdwTi!dzTp#_Z{dCC)CQ7gffxj zEAl5Y-wcnSxfr9urw8RvS^6n%i)hkC-N7?ODkiS^)t+I>EGM_XOgDtSP{ZRo$a|y! zqV~%aPNGTVB*6nnLiT&VJliqz9(PU<0a(O9v~|19T9eO)1Hn7acIMbq`rq%IYm8Hp za3XRG*3EM)qeXe`tjSpgTi~x6akLrvvNdS>9*amzTa>7Bor08a=&YF2bx}qwEz-_> zF2(RTmN971SdGXu7EB1n@?Kc$)N}0O;!}%@SH;zf?6?#?roUW-d!>m=*k&Ln?%B5O z6mCqR?qHk!HB2BzuH^zGNV#CX@)tZkSfDD}r0=j+h&law6S!+Yco>_}?v8;~rX4#5 zo_xYvW#674Al%IlVI1N+m3*rWV+}QS2x^c1S zvC5qp{s=2j&@VWYjv!=^GgCd|alydBERNv{RBvU^=JanhA!E@Y7MxIg9-zDP8RB&u z*Q&HV`iJJ)NkBx7E8mvU&oLh%dRDSgwQZud)7Se4rG1DSNIu-#fV0qY5`~#itRSe6 zGfc>I?Vt^UW3=@@`@aQ>L-&m+Fhj}cbKh!*x{sFmosBi}Esn*~$1M`A682;5_DH%5 zZm9ZTKQ2Dml>!7xH<~>)VD<~7s0(g-0P3_RZv60Cg6GnRZMcPMi6d7;N2GmvvK?;h z$w#6`eVM>!FD&5n9*Zu3xskKACYXN&_`?&y&-WcZQgmjsxZ)*FilPI9#4VlDPT*av zB({AHS?-A=C(9d!cNct8LFfENze|uYVMvY(%5uL!TGRlk9{D4~)&eAvdwoSL4V(zN z)d?;V<`1qj!%@?e-Aac5pHf3IUZESrb6Q>B_-z{x>Dlp$a|fEox9{Ff;4z>K5zBQu zn00Zq_hflqxpD=bWQ||j`9FUA$X|s?~6RCoX;{iBknoQvS79N6j)ck(};!imbz?Q$qi2_ytWrRiklWRQFH&XX^{Mt zi2@&K^8H_^nuabD#iU(*8Yc|;zruY1PR@9gBEW*ilO79%Y>ulu;)B<%UytyPM%ICr zd~Ffp#}_J2VGlxpyar^28TvDzNikf?05*GsC{!@3Q1Q_LABZbXfM9SLK?p!5`aCqP zDv9c08WRYH&1|BvH{(^QxCAdB`k@V0Iofw%3u+7;5C8wks!U%s|Ic3Rl%}=f`z48cj&nN~Rh`NTJxsc_gq& zjlJBDn;%qs2;QD3m}o*(2M)425VnS4zc&b(82J*366ycDLCDju+|i%)^5rh}`hWU^ zDpgOq>oYy+#!5y;v5cX@#LY{O9{t5&+ua8a8;g^0I<1sdz)UUR;j5qrr@AoFj++w{5L*9tATt5gkwkoGS zFKzt4IUwH8(GNjUn4Gl&ZX=5hB7jy9Mf z8HRWBpy@4%97GMu_Zr za&ZPIIN7}5oOr6q7zn&(RcUpGXtxeDr^FQ+pV1Z0;OevTS-AC6&n0l?FSr3=p(C3{ zisz78o$as;CQngR9%(4`wup{URCHm*S0=T5FyYQeIS7hrwWy76zKLcnBgd}$Y*Zhb zPWejH@vWK5a1aK?oL;Tst$i8jkA4VwsAvXcl;+K)4yF&@b805$PgZcDA8+^;B8_&(N{C39*A`B*;?|jD*Z3m| zqy$-N&e-}}ZPcWhrk>4~IL#TNO*OdUO+89ES3OF{@L_0H=#|gPzxjM)N7W2*pJ1w#xR@74J^%wBgs9+ZVH^=_B9-<*8ORKi&^ zhIUlbvs&|xIeii5697RSZ}+DUIh$s8uP06{WV}oCi)<~3#;!>%TS|RDK1IN|&kpV! z2u#RouS}o9g&0F>PSwAxvy3D`L>(Ze#7v`-i7Z_=1jg7$Ci39y$N(O~4saawmCcYR zT35;ord92)R^OG);M_Sv(6{I@6XGqw2V|MGMGSQ#i{WC1Yf9EHq?@i+KOK-gr$W`f z&im$;J#Y+)eLsI>c@BLRJj4p7oUEqX_#$0QG~iWJ!z2mb4Og*6vY&p3Hm8iwqvg7z z@oxJalDxV?QW^W`%MGpzxduzeg4%#&nQ?U;2!Rrr(dhB66y1w-_SMgPx;5-U%@WKm zRzd3t!0i{rbKH}7KLDK+T+b8~vt}N)o#4y1pmjyz)djQ6uVhd5l>r=S)_oVqVFa~3jv)FfqY)Bpb-- z(VVPKF**OZF4J6d(ZuQ$Str!%+Hcicf@1lcMLs$<|G(0;7?BA&=^9L8@RR>+$5 zH|lJ2tirjEKla|P*=W=yK2^nwR>W(B&bf(!wEz9F7Z)yG?6}{#c9CMmvTfVj0Mi1_ z=>l{{!%j%DOfLK?oh;Gw8wZ|vaxy)1+1HmE8X65MLdb6X%?fbaQA$Z4gv=g`g{TeTxbU}1im!hH8a{6_k8z}BS#EclWz{c`?UmH4BFUQ zVmXpF{GsHabmss$UWV~+bT=boJ#Kyj<+WGTDVeydEenMh`r&2th|G@FCpno60bKzO zahusLXbjtkn>5L0 z^Z*lT;$0;x2;}i4z=ru2ax3Fp3}JGgLO$Ww!R>wn{F2B)p*rAm^)Dc`Wja~LKGl<)(Trd+uAGWrmta|#t{TOoifM*y+e zlf}i|FJ2uJ2p4r$?2FGu-o$}%K$G!jCHpZwUaCQ|Vg_YS{3W{P65rf{dk-I8#L&yT z)A)$~^>_>7OSSipO8OsqClE1S`wW*vDcjlEp`ZP8S@9(cG|%9(&=tLXyY~Z)q~coZ z*Yv%dL$#lQ`~y5NVVe=L=`{eC^sSAgttWv%C=t&r(F?=V#y}L`v$*MaEg>cjB{{({ z-T1r)SCOvudU%88(!nMVnL?8PaP|f|44~ssGo3nhN^5=-$@sjUUgT9-4U*SA^vZ|n zGIU6nl#Z>TmE4boWaJhQ2vVdaMRF{pRo%T#+J6=y>V08>&WrDnL=DM*Kc3-ypOnZy zVzmDo!XLwdV+DKKDg5N6tvH$Z`hT_g6wM5RF2n_Kh0tN`mk}QoI1w4=RczE?MFHSV zjD&8{g-}Uk+K#Jn861EAy2-`P{*zPg0#S`{^If2TR*1QEpODLR>}=AWzNcGA+1rs7 z{T0Cg6WZLODO@W!jH)Qp_LjKztH_IHRvzCekSjqGA~P^vsszMEW9NXb6*dGTb_&>x zLzpP}AML$YR8-r#E?TJQ1k;=Z6%3e&f(i%-f?z-e2@;B&L`j7pSqTCLP*4m=4ua$= zl1NY_nk7ppauOwjA|M&+eq*k^Piyz#o_6ljy$}0kwY3%q)EK?@|Np<#Uv)a&cg-9+ zw{Vxo`%8?pGdi8j^cj>sSYzK{<>>@lXF?H{0WM#svK48DsCbEqiG+moz>~ZLutixS zMA+x+G8rkO$*cyF)$YH6{K_Gq7;{-;@_DP|0)+ye~)#bU;Ic~Um5XGc+)oZnN0^8(& ze_+QRZy{c};5o%Y%ry}|ai*34%42=w);5C#Td^(>8HB<9;lIV_~z0Ns}NG;{;N`KX14=kf8`f~QH6^U#L!F28d}*}p>`?T=4$<9^>fT_c>H`<5RzA93D5IErX6%KB0xF)|7#O=T6c5R%t=q_=~YRJGi z9*j0or{MXu{POrBR?NseAjZ*iGD1Si`)KN*e){r841^4+OwYgpL$_2l9G;RP$z+}Ic7qa%mRxt+hYrm;?(s@4uLIl~$F)^wIO z8_*S1jqk?+=#T_FPoY;%&(bsEQm$Z+JcG}x83M>ZUim~Cp2+<$UB`3D*G;cp?*=B! zcWt8g1o=>YF_A<#(72E)K$A$UM{%VU%D7J^ZTZk55Y=g$U6S(d64qXgjId!r2JIHX z2g-~Q3jid0HZ^{*#NzLX~+vwOrN|I>Cbq{n;F z4*$v^3vg9r4hk{(`AO!%9cxS1EwrDhwR`?2yWcpU5-LMXft1X4FA&1jJKqtGnicos zbG^4mv`|8^46VNdEzuWuCp7%;tAhtl&%2?rS?>Ep2gZ)NIgb+9Pz)1|@-ct4n~`ze zEAv*%o=tmg1CBhs*5w+mzqxdUNoMf0;UE}@g4CCnE7- zk0y6vySC5$yu$pG;1qPg>52z(YtLaMK_KHfUR3H{ZkF}y8y!>49g53vx@g3?(L|3F zKRm=44F-yi*=_VM!*!Km{3}pcyiLj{Btwcr3PyK_7Z!jsN5qBPYkGd$Y^T55aD(FK zB0Sejcb6dlddC-&&(0JMr$oEl$=qjSVY4wM@f&8x^i$MH1hz*pd0KKr)6Gy$`YVEz zxmguu3hd!l-Q-SajfTGN*?E6-!kBFD=bX)~eL;6p<6Pt0l6GBe`l*M@eKO`Y5_J z&9h#kbZw&$edG-ovm@1bZN{mO8h(HG zrvrzFHMOhdjINrFaD6r_WCF2ka;y&h^qrIDs?I9pVsj7>XQcso5D8tVyCEtgww^z@={L-tGs;B`pTqBQb$hSotGZpB2>-2CrBe|MPAY$&2b)w?>beoK28vnhE?oz-6FJBg<*GOui|&@LlKxno||t3peZ_msK{b<-aPpH_B>B zU|fJD!>Ca6ecB1XHBUpDG9LPqUm_{<&dVC0n8~-jr;@VP+yD#9my@2Be5!+(&Z!lX zAFf+m*~t@~{RvzI*|jOJ+BH>qEGq0>F!lOquc3SSWM?GxWZJ;lWlqjMI~{5M?vx{g zmIgvr!wyF4`Yi1hDQ6SYDl^+N+(+nu&bo09zP?Xg6|NJzsbAGdW9EX{3t9DZG6>0_ zI08UFd_O*A=@DBvt49=1%^m zw!MZK7~d!UF_?v@Qthi^n8wpt&#``5Aa6GZ%vTx7cR0FV%+_#q+OcknN7n|I0CP&* zr3pk;CIuH1r1YP<<=G41#>;MBD*SMUR=4uLv^$^&Z0=5W$~ja2EKzpY=$lYldtHWR z6gf$IQ?_1C!b-C3HO(FQOPZf_-Z60Sr!kVXFJjJuw;hgri$@2wcYwt4Q4_i27JGTJYWY~*`gznbG(D9y}zCI~?_ zN(WTgU(jmukn|DovJ>kkV|Ass>lv(Gph(6w zci>3QpQWX$iA%@5v3fa+-xRqsz2Ek%J*t>hZ>KcFmrqG+VfT|^Yx&iK^`-s+G7*>$~CV` zB_q`oHtdvX5-trh_Q}xpBUB8oCQ5sVv7((_yH&SWYW7vfk+218xrp_-v74o}hPz{0 zz7||i&*X{S)EF1L=009R2;c?>kxpQ#v>dNLbX^pP!W%yf&6T^MUVkzrWXf zOh@OMs*|#5cKHF@UySW?-Mj5tx7ThR7izy4;?7~M8t1&rXhES1Oqk@Z`7sKK?&V-jiu} z2aFi!IG3t#H!o*6RB3fLN#8=fqA@Sp=mjK9?F+NAl05eOO6O~hq98WUUIyvA=Dq>e zzcNq7`UoPVrr+}^$PeW`1(|o>0EM8+@52Yuey;aiS3Kn=SoY_C+itDTi|-uO zW^UpeYr4>pVKeQ|DJFIIbdrXl3L(mCzGzZ1W25eWs^2Kmb8Jr<^IiZTXmLloxPhuTZqJELN@6k-ZCVOALQpK5%q z92>Y-s8ixf>xB+&L(>ygqX8D!l3^NFnn;9i(6*^Bbpf3i#&?P$7yT^20q0Ykz?N$E7I zdG0}Nem2mvDQ`va78Fp1PrqiRO_W*IaI0!C`lhvr7u=v1SQ=FVXlvwwf8ls@3tuD4 zEewSOWl39zs```P%YEMJ$&t+q?~_GdI}fUfBpP$-Mj9M&1J5fXogi@mf`r)H(Wv15 z8vAG>>8cyeex7V8Q>}T#T4lh$FbE-!CMO7O<==14=zfk5q{y&d`5J$7UhwTJi;)+a z5=uKuqf_4ry%5}WJ>L{#D9VO{;Q3@(W@-BUPY-w6GPtj?$%G-uAzTyb9=E5-H@|^A zF4(7xdL}>n^)RGKXQ4%L@jV7@j34XAJ>)kry6Nq9TMp=qA-4vqyr#1}H!i!|+uaz= zd^L7oEeHna4WKmq_Jsxu*U8lpBip9f?Ev<#hWKN(reL!+*mIS&5Xzm+#^lq@W zf(kNTCtKfjCO^BK?9zP^2d+@2E!p-}PTVnzU$WjaJ{FSWG3{})V{MIZTy2@_iEDHM z)zL0z+g;Z32}DZ-UOOd{dQR+ z8575Fyv%%r?OzT`qmJ^#y1UPbyz1;5&delkAt5bIH7~XdvBI< zk%4EJm3$K$`cz>AvV#-Bo|JsGI1 zgV(X=AdnqYRff zr%%b4riSEkeVt$LCptJ5Mu$qU+y%0SOvJ9<3R+y6x-J5nQ{)IVLr11&K=7vf zQ_qdLo-aIP5`FZo-H*#~k9H|-6tY`rXSkkGpsV#;6`jub7W++B!QflFfaCh6fQ5C| z?%lgGhSGa!oM|5)EgGb}j;=oZ%dcU>bwyiMV;|ln#;C(VKR%l4Q2tu&OFgiR0%~G+ zl~!o@V0?t+%Z_=%CidakWuw1nr`*V)oYEmu+RlxldGBs>l1%L=PPKn0uWln9I+efb z*tB-Mvi8EC#w+I0lXSJ+;TD#Y4l^3sUs;JeD^QX+|AMdM(9X_drh**TLdxgchxY6$ zJ;QRCFx6TaR*0^4tmFFuN_mgl@4k=!Hr8{H5!h~9)aYPoC=Ya?ZJ|wOoSX*W)AWzo zLVn+szBR9&Jk1{OxAo(Z^KgMbW8k-L?fRsrkG)0eSRX}uXP#bJ?a~nZX;IVMbTD-~ zTdtf0aHN@mSz-HNSE~R(;89Z177H#@8f%%;i7buVho+$i7-b}o4zZpOR0%8%)MU*P;xkos zP%gB~gOLpPX8EF;u`V^8Qr7B)wMh-P1oho`xsVS8EQ9#4=*|!g(M&i7NK5ggxssgws+ z#<4(p2vzR>Put%Um*L^`beD`Ps7C=_+FXXJLQbbFRKd3JACG_z{1CnV=%jqt#K1X; z(rlBvr34IXjUilEuC9az0@{T<`>uAUbW@*Y!cqz3^7V7*fs!Rn83&_1%4BhP7s&)0JboM{Y|XyV7my5aIdCq7=DSl z4z<|<1R_$?2&l8h84e>zd_ZHz>m9=~gdfxgI%PuECA&xKJ)T%0_J`YdLWT?7X`Urb zCzECgtWyVcThMiEY48B3%*XJZwULBOJKq}9Qt3QFIssgjN75fE=H0L%p!Hwdf#%%6 zzd_IFD4xZAwJ{~ABUPa!?>g75@l8cc8;Tb1Dl6BrAB$k58 zN0rMe*&fMG-ZSq&-LM()BpkfQZ@k$X^zt*3$Wn$Ncso-yr9cIuMc8-(eE=G^q-iAf zmE^ku|7Dd`4nTY*1wo9UrVZJX{t!YJA-cf(5FxVi9xDtemQKq4fpTczUaV@xT`-wR zsnQzXL0(?aB1j9d(7ict(E7)(Nz+bYLOemz7ut@rJgVDBb7luxpx1>>;M%U>5gmll z38K{l%bz+zCVgC7rm^s91Xw*Qy8U+ zjaNnF=J8qw_;2PZ1=~{NA2tnn(qUD*wwH?O1~)s~ym1qwzo`0@<~E(JxJjwZha z)JE}iuTe*}%s*|AK0xT3CEj>Y?8-pH1M5VQstInd*LC(Q*fNEB=(b))KH;y-P0KXL z(3=vO@R&77bH*O~x)RT#|Lm>-m09)6(li>U5v{6izxEm)w+?LQa+y?Ij8J;+slZNk<&BAQByJ<64y6iXT3G5_+8WAvGbU6n6^}ZpO;y|0(97oEszaU87QkV_v;8EY$1|H9qY_S`PTzFvJ7>`;wY6G}97X z(d>of6JEOAay~0wimIWk65`w{PYlWCyb6u&gkXW|!rcVwNDxI8S9P&pgBvi5Z3xP} zbeV6Mnj{iDJ{7%Ceh}w18PNCC(j?zjUe)H4_D6E9_BqLa)I_V-NGiUj?TRwGaN)x4 z^O>&c4ry1s&=*IKWN~ZUrmamkRHY6PNvPDy%;N?XDf|SY%c~Y09GdPd{ib ztqASC^ur6Z!->Uq=0Dc)c$uvg*V1kxw5L%L!@8C3X{Rg{s@QW>7@(SlwQT0`08<_X z2UA7(&nYTaIm_i1-fdRb3Z$@>S30rYVNFmT^IN|a(qvuOTrk?MPd@wcoW=P+8!l77 z*9J5fzN5V>5OW946q$D%8rrPDHzRShCpeunbDE8uf8MvOC~Yv*I`X?iiOJ-nmFjsW zy#Q@4&B0^Bb&W~+1*!}AvfB;VHS2KAq0qRaCuLRuk_WI>uoa|oWCp*aEf{zjxT)4_ zm)#I?D$X1GH{-ZQH#a%&yC4bF|G#(CYTik>NAVD%3f4!C#3&`5u^uY(@#1i*POhiz zkkN|FzLR1eA6P+?6WSWI^Vkd+9^&nf&s|QjaA%7WJPs=Sqexo&SR8!XHA8OeK@5M* z%kZ_yf+Ry#VklM6@6;coJnJXGGee=q%8_+FN8gX68jI|{ z#-E@R!0=Ak4CR_PWq}>kc&l?lBXxV;v(Wd;hwe)%7k8<#(xWbh#?v#DE8D+@S=o8o z9Sz#`D|w9e^cYxh1U?pe1DsAdg@}(_DIU!#DvpxaT0?u?4zXC{=d2!X@9zBc zIohghr*@p6@quZKlq19F^eE5hHxTMFqIExGTl1Gwij&wv#^Pg~zBfejox5>VrqQ#E zD7)BQF~=j~DuPMnt#Bj$kmtnn4`#9+S;Dz z0|u)j*=H9nCJXwdLoc01N_TG_gt|lCc|c`31pH%u{D$li+u~ot8c(!xaE0jtYgSZV zT#B%|s7@yJ4smNM8jQ3$@KPSLKjokZN0(wd5W1lzw&A95KG!5p>h414RG|tP=6F*$ z_g+IV1VCNJ(7HLJ4gCt)O2;TK`1UGy)YW_gj%(w=FAJOWx7TOb)!YtzkMb)ep7C^d zU^Wpw@@eBl&{;G+Po1*2e3p$?wlEP%RFksaX!xwJFi!DdRrRw%5>z=(w@&1}eR3 zOt7yTiVEe8QpI8U3P8UDA3fYq=*I&EbTWu|jF9CJGKYqCo%XAFCCBA-QJ9Y^5F|A!=dm3E|RkRI69(V!cFLhpxl;pQg#Cr=ddh=akfw5B;U; z7RgcEhs}H~EAqy!FrcRcyW0w|PL=mUMVst5L5Slm_5Crqn}4|X`cRd`Gvui9>hVs% zI5J03=J<=VJLW_l6b4{N$-&xUuVk+YLIx*So~+|Y{;jFujMWyEr_+mIU`dcrxvMxI zjIR$Szo2W{daJax$q!o8dH>vE-;flba~^e!xPq@S)w(``W|nSg+gwme>5p#Q$T~ro z!h_5D-3>w|@7T1}F^~A`gga3Szw55HbyjYL%A0qCvK zcD_Oc)^q#N9@kr^tSEW^KpQj+tz`P~4CQ?6XZzhJ2K)s`f5o^rUD%zFn8>-GIC6JINQi=(+%?+WV!he#;sLYL zC{1Y(P=2f7t!PA$GDum7Pkid3Suh39|n2yI8`D+_*qJN`v98E2w^GGfgKMa&BF*eLS(`%#buHl zYM>@4m*1pM>TQ>XUrD(SKcF-W*GI@|sJPDINRiWT$nK{~gRLXtV#k}P?8xgO866^; z$0I`Jq{ouPrEZLW)tcugsEWAn`_ccB+MI7<&&2q&)+dH(_lc$FYaUz6a&ILy>|Qy# zTH)4pCl-itwypo~|NXDg6E=}exuo5y^>G$NAn6*y^QeeHjqs7Yjk6&Ah1*>eG}CI! z-)_Mz%L}(v=C_ho5s4S4pFe*ND`zek9c7=uKkM3{B-;I-9EBuYm-q1AJvc6@dmz)3 z4Pp9MQsj_7ZM9!aOj8LeB%=eBC4{;t0QQu}vM^(Z+`J?^2Q`x52}h~cQ^UG(TS&W~ z{4c3i=N@9V{Qu+v_WwWJ%0*lPpX3YKekO87U{NDHxCjoyEq7>lY%+!7l6QH8TA9%a(0M_ z!MFqFHkbv2e(+~Z95{HOfI?)91=MJ#5KM8&+#GA85sE3`SaiG|hkWhH@s@1UJ9n8$ z6(WhB35gCA$M`BI@l`T$juNUvIZxzkgoNNoMazi4zF`$QJ( zyTuIaJ=g;zHyGzxYv9-8Q}kg;?iR!~?Hxc0aMAj|0TfxGU%xUKteY)*32!XP_jDg} z10P!>!RH!OH2e1LgP1KVN8k~L(O+=);8Q0%Wgck{u>J*(#sU<0)qDJDf2YA|`wY1JD&IUJ&>kZ$xKJiI14&Gn zk5z!zF_UZ_jFe;e#vA+37f@k0)RnG!ENM|4;RqN7TVfAVH+EkH`QB^1kJOOy_3Kw6 zu;@S9yxkXNUZUMdU^d!(>((vd*AG?{RG-OWU+#yjlf<$JdAaa)n#ydavpPO2_3n0* z%Q)y+FzK2b`+*3cK7rIgui`o2U5Ez^AigOsXNiU}M97 zEFmmV17Hyrlv$x3yo&^DfRVN>>mV){kH_hlsvcJm3@alYYS3IC#tOg`y7E-u)_yUPV4-p1c**;mOWh+>?D$_v$0rjZ?dbFdMosBD^^>$&@wtQ4W`Frj!sVz&^3J&c$tdS)C)XsSx&OF|*%Ig1Oe7l7*J zc2pyUABEx5!zG8?D6B`W^Ru8=Qac zNI3dG60)04F4%qFqf*)NJ=c##(gA>oF;l{!bDW}FhTd@=^W>vhoe``kn+PK3*}5L# zqrpXIG#K0xl!)U(BO~dxsu9@`fVH$>t##qEj1ZB;N2W%;Mm1$ql)JDh^R_q9T3q;S?%CwV6*aP2+)gd)3!@QOJgz2Yy zBTL{NQoaZK7(0-N*4&J;@P{t9tFM7!aM13$^!%V=w~NMqF^CsRLyjZiOY;cXcrxl?Sv#ETL{zD7*-CIP!QzB>=CZKWB(O@Umf@rv&t<%Wii=KF%mBx58 zW!St<@#aZvYS<7Z1G(_yDBosnh`I?^H**<#E0+9+h}LdYPW_Yi%h%3rof2lO*<&q>VzmKk~AKD~p~MpzhWd zIO)gn;sSN8zRu$Uz0)C@f+FE$P7Yl~`;+y|+cIu-vaI<)H~5=l)e&Ac`#ni4k)3>d zzAa}>3D+Ity*Qx4R{ddle#x=<*^Oh1Vbac$ZfFw~wTbTPS|Ewg+J*#-K(&_&5FOoR?g}+aU zR`DylRL2p9XYn0CXXc#&4I0`PTCBx4EvS0_5&K*EV2$eXWO!Lj8|@4i;}XweD=@GX ze-WEqjgP#3?2D9tB@Gxj+ODcPGRh@3@xnqzrDH{m&%`>P$12a{+3VR)=Q03@MMR%f z%9WlrU2Ja=6HGn*Q|$70_S9TC3>Q^9Z&rU@z9CMe1k^@3i|s&a5*JP;TVxu%GXvzONZ*Oa8>--RfiQ0P0E$ha+50+_O8w>4 zf56mz@K{e|#I*|E@T6Tw(c>9k>-ux!m!~OJF6B+M>{Ee=7)i)1_m=|&l6%ez1$}V- zqzUgIi??gK_P4IdgjY}IQtk1@F%Iu*Z5H8>u^nuCnfLbRL22pjj~AT994w2b8_tVQ z#^2sFVscRJ#ueCBYPS$hb9mb9Bbjr_f>(5c76!Ll&ZUxHyvs(i%S2ZNbIy%z zzZ4uZC4`y&e}+J(+r`i1Sft*Fl- zg4HHXpChe}=TAP^PN&mHWAJe2TYQ#Vf}gTyO-7N#fmqae&*UciInxES`4Ur9JX$Z_ zwRjftYZH)hF~Q$9HLjAk^;x6!>#UAXMP7cs)Mj+?$%2E8&*HGU&zmdd%v+5f=jls0 zX*d^%*B(t2F5RSjL^VZZWA4-G?!%`FwI*;Il?oAh+__soDI=+GayaXCUm%-C@bcu_ zr<_o&K6!clmXVm(TDDqnu6+_xy{H`7+{rD)DME%42KIx5pFi0kdb2lF(Yl#R2Q#_X zrCqVJ5iCi$Vi(X?QPJi}PBh=q#v*+$HO5K#q_1F` zshPwg<8jjo%3NEqQ}z$QwROw)<(J;eSBF_Opl-K#68+6I_nS$HhcubpnLT+8=I;WT;?S$hIYvqPeR!t9EDu;e% zy5`*Y@rkv(QDJks#HBpsL|R*Sw@LflWNA8^REaqN~mk4@%ki@l(@)i~tc z)lHrD8?gd>VmX#8)V;;{HGi6VEsvVkWgShph*1trg%zJfxZSSi$rB#O@p>d}aHo{q zNLr%PnNTg>f8Nk?00!y&yRL>lVnj0@B*olwnyld8%zb3&6wks}LNT}_uAxVIFeVr9 zjpf`G<;+9#LT`V;Ar&KOXTT+GR_?n$3{b~$#rCA0YG=d|5v>zcG!3(5jO7fU%wNxL znXEE-XJRAXX+-|y5|`O@GW|?pe&mqywlCbY<|J$VwFXLyww3FYmc^eGNvGt^)ubE* zgfsT|fuMYdaXKc0l#p1Ojg#^08*8n;8+$D%&jb9*C|@W&%RjG$|12V62`Q&WO}Omc zhW?=TrY=Mo$8s-9v=~h_#;qK=d*~xWOycZ3nD9GVfFOh$Rt`0j+d~xhVzH)Bo$PL-t^vD&t?{^*KFYG1;I)BnbgydjwH25 zp6t=LiVfwMUMyoQk`py-DYunw3to3qFXL^KTuc;_XHjbt-$Tow;3h4rXYQ7>Kkt3V zB}{_rpFvw>QH_vnV-MYtUF|(8#}!Q&bB`FWm*)K`&i8kru+Zx1&J`sUHpvD02?lL@ z_+uPS+8m3W){{{>7;8WdYWThG_{7bIpHddp`OjSC7wR9;&RjFC`37CZ5zj+=aw#s2 zB?Ei=heAfCWxniDyOF=a2S+@WJLnrqi=KfCV5Mb%Xt)g!OOMR zN}bVT^4l7_wOM$M=j-OabSiIJ66)rJ>3+9`<>baF~n|)pn zSP9FoK4`2L{%ta`=Yf)c96GKjLsyh8oglquUDuJpL%wkh(gn+Kn8F%)rw0_Y%c$u* zE?-Yb?}co}Y&I*xd1|lwpY^75C)I*4PhRe#)!WOm$kW?HDC}C!A=2y+QW8CD@ip{%A%EH6sFP{uw?uVm#O<(@5EKd7}(!Z?fXh7 z-+N?p`G;kyEGaYY!{yR~X-i8IhP+)KpzrWLim)5h|GK96xGQ$dwc7O z)n4PGL4m40_zER z3%&gZ-^qFFfO|x_p56HKo3li6UsQFZaa0En>`t$t=C6$Pd#WZQ7#-EP`|SSDIg7g% zi^>*@l4dvj7>5`zf|FG78yheF6+J$Zzp&WP^!>lFfVZ2y z4_|zDr|CVh(+BkS_h%IjR-K9v^Uh?*bpL*MZGUiP+iyMljr%K8c6X+(dr;CA5JGXF zCiqN6_XvM0E&!9-G+MTaw8qT0TNR{8XjtBb<*cDyzUkhA7BlA$7G6e9^7$vyv%+jN zTkmi?xFzps#p^7pJF>LdX;1eF^?pt5{bZW`*^@6$~Ws=^OqWRAA&loXS`ll+Pwv zBgax9y%wbmkREG%&o)G70;M)&`ihIF;>mY+y6FX$BlRnTv~Uv_rHtbgySu~b9J7Kg z@tLB%x)3{O!u%qKkOIKqMI%{9k~VymGB!3YoAoSvh4RR1_T9$T))R?ET5GcKWxlVZ z8-!2*!`s!|8cELbGh&D=0!DJKjC3P;)rJ=b;o)&EXIhuEX-tT9Niy{85uB~dMB~D& zz{65b8cj=2x5cxKjg2KV;-qd5*Wr2G-hBM^Dl<8t zT-!eZVhGPpwX?HRdWY|M0qNAB#H-ea*bl6}fA~nNuMm#DB5b8y*L!b5cYDpv4HNyF zRYUgyxWM5FPUOdGp1E?3vpfGhdE}L}%4{`2uWmMIju`tk5{)5-$t?()h6j?>%ucf7 zN-lbkhnS}Eu@O}L4y-0r1bR#_p5pim#MkG@tN zmDEfwecrEQU}ZH3=?>g9RAjbS;o?o;LO1NVasSc9j0OlM0iDRi@6D!ScjBx0N=3_8VwKVAp%Nw?%c^)ZkU~$ zD=vB+yc%~jDPudn!5DYc?H!gfJq0q*h-s-H5Cu89VX|;lYns!Z%Ko%f z@rQ_AaC@uC^@|80L`G&dNwT1J?efXhd1}nqK19J!pI$%Bjz5ojdH-r%QXXVU)^xmW zJP9(>^!7r5(81NK|1C>|_4?d+i}P7uZwrW800R?gz}UKYs$l|*Rm)HJ9#$A74xbYE z=J69(uYGN~YPlAW6(;WU{LG~3>Tqe_Zlu@h_2?>;g|62=sKrSt!AkSsCtVHnMiWeI zdL(z+Y19`82K=Q>R5W zVhAHee_j84j286mnZF$Rc;L=-J_`WHXxRxLpp1-+(84P$dPw12;8HKtBa@1yIn8`c zgiTA0NUho~uC6#b`_U;24_`wcgBusiaiDz3_WqL|Sb7wR6>69f(b5!{Ydx;gKB&V< zk^@%f@kAwgFnHlfe|y?#4+Mpbzj(ii`hXZ}wV2C_oFXef($IpIHZV;S z_r(xLS1U&+&P#W>g`q@snc*ZLzZP@GzdTx`%I0e}5L$a|Ky$)x=!`iO&Am6^fnx}( zVDy`=^h0V}HAk39+b60_S0>rx=1!-eWq5|}-dkK7)}_hqJ#(MpmfPYi8kpAYnD9H~ zbrCzjLbG`y^XiS!h)WMEk`QJ+iD&PTt?{EtOTEUk3)cf-nya)g8lQQDmX&KBhSFy! zr=F5A01c_eQiDD~f^tQHkknSUt$bK~nJ+ERJ}K^i-z;gh(mh)mF4})vH|Xwli)Cmc z93&6%jIWcQJKuio(W zzE^6sR8^oiVT?{*@_fg_@4~~t&%OqQne@Ye4*?kgrCgCO9W+hZEVsDBEg38#eo9|< z-W{Xr)vH$tTdPI5u_UgMAr9Kes4olOc^F5wgB_KUD68w4 zu4_Gcpu4tv9L_$LV(&5WM7BH-9F}sQLz!Lpc*t9n(v(J%fVj}6 zfJiD`YOC{h!=nh_z(_uHLoi2rd(1bLH^8#AI%`ws01!a@Hi;qhl|HZ9gF1)NtDir? z@RRpWSBB($*2T>&>}HK*$5_okTl${-J_PXYonriAtXw_A=jP^Ppn1~FL~Djfvnrb{ z`IW2^B~Kt5G>sinaY11B>MQ|tcEN9D3|3!;}Ld~*pNiKGAc`m=K|wUkw-7e z@w%UxeK`oLe`E`c!xEn#T=}A)lnTFlwdvAFQx{Wp{Uj^iTW6FTEqX(=)ZE|8!V2g; zLQSPH4BHOwG@2cO;X?guCU@8E(D?4@9>#JHF+_GBDYS2mci|H&&+L{y+%slMqNO>GSp*rsR_~3Mc_Ml=f?9I)nJc4 zJ`{i3K;NCU4BSl}@iYmk--5gzdWoSE*cPv-h;}fD`LwxLo5~jw+BbLAh_+b z@80{iRN80un>o~-HQ$=@suZ^P%og>;W-R7s-^g6r|GKa}dAj)ue!=wf5^Ft)4c={o!C6XssMO+*&V^zjK{aafU~=tzU*Ns&y?RmL^{@u0_M3d#7rX_BW5$2TnoV}2G(x<83OIZFP6&P^PTZSeP#cN93nzRN$Cq= z*x*~n&!a8$L3p!LRkl>ssCG=G@JOU&HbfEX7wWjKqy6+5HSAH|BXu?Q#R9;?kc08} zIr6H?alh8@vp&;jS-Si8ZRL-3X~=xl9o2Aci_b65p6J)aE#sEU2n499Ed-20`;>iO zobPujWvRAsdfsd3`CY!7J~)p$P|Wah8SbFpGKM}oMK)Yuj@N~#pky0v`$D&ds!sJa zcBn_I+{{)l4gYe6^aTmE z+qhn6DJ}6~gfhXYYvkB_bDd7m-RXzhL=)y8^w56W z{`loRThyOg)!)T#AAL1S%ypz>-3|u@_31p* z^#ox-wbTtN&4}7)`qV6!YFbw)@M61^LTHm1WZG zPLVXy&=U+uML4aFOT1bW&AM;f}v1IMiQd!Myy*puV9a_I;aYnvc?LtwI4%* z$v_N60t_7a>(vd`X=x=!QBF58qTOU1#h1{BH|e3J)<+wP+Ny`P@Zbebk_Z}OgXF(9 zOiNW_AR}r71-&gf@fDplp65${T4tu|x<8~$RLKQ1{J}W)D{(#u`3BK2SpfH4C|xzg zj??)n5?rJ}P_mjOR{9BqC$jpMT6>~E9Uv{3gSsS!o{pZC8CJ7P5nx$ymjp5O;F~Tm ztsTns8m`u@LocIjXx;lN1LG`^X<}*%!qg^XfV2waaT0gjtmE!|bqSLjwil0-y^*1z zA+tgcF(dZlYWXjIN02Mr`xb-2CCH7ZT4mpkkVtFHl}?|~#(?sZKFV3XfKS`3Yh`6s z8nJ1+q_F699Do?{2wd0bB4!&}2}}6`KC9#dND>FmQ#?HvC;XXKySyZ26oFnpWDlE$ zQo=8giU&x|(WDJ8_J~0F?`4Jd*P0>`@bRQ6wt%A=mW!VPJz4N-vl9G~DW~cD$iScgyHzvRT(~%WhW@zsKKz%p#A&mdv?~0FPh4s+B)mjqv)bvblV-R6 EFQI?y#{d8T literal 52898 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 E121sg+yDRo diff --git a/docs/review/request-mobile.png b/docs/review/request-mobile.png index ed5c185b6e6503f26f58efbd12ecb83eef27a9af..e976cdd2574f938cc48f2805232e7c3bb5310664 100644 GIT binary patch literal 33665 zcmeFZWmMMT*EOhs5`uJhE8QK^Atj9<-CY8b(jXlI(jbB;DkUMMbVw`Gol18z=YD2A zGoNPO|Ex9Z{V?->^p^Yn#dWT8_TFcoD_TQM0Ski+AYQJ6@O%q`m^hW*CoVUcv;i&q~F!p zftbV2R}V@F|8X?hFpFg_X|x5Z5hmKO7{#nG91c1sJn6cqY9+J ziLM^0J4uF0#z#|A)Bld7&+hy{j;Im=i*^(Sn@0XiC7KbYq&q)kC#&u7nQqNUY+-Qo z(7nx9T^E&3&`o{t1j(Y80mUw*+rG@O_CE7x%bw)-$+#8BK3bz8d>8D7OB#)zQk9sG5%~MOpn*`ijY-JXd&!0Zc!;qwiq=gTB!SBNw&GH zxk0_V)!t&qlBKvEgN~(h6!$`}Qbs&F$%j}mu0)%~m(@y^&S-)77Ceh2QX1LgDbdLL z8?sChY7LKqk;q<))^NGkdhg6;Nb2X?jL2GB-CSRVeJ5q-Y4yv!$VUyeEmDo>PNGMB zn_Vwn804ATY}S{?j(VS>JB2wRnzAwrzH#*TH{9JQavGo6PomVx_SD7~2djg5k`Es~ z%#8Eip02m(ipN(M8*abf0e5Z*YvH+x$E3m_OS{@?DOQ!5{g&?s1~JFaAcm3l`|w^< zhaB-P|CWZ%H_LHSlYYmbR*1H?;6NqM8mD!_dz1XE!OP0yExMlb$@a`%d{1IaK%Zbg zdp(5_0luhtv8uyZ*&AVx;v0{)2rR7CnQuoWd4aDqU(Wgd`{cIN8O}j1=Cixp zlM+gFeg5wYxu7${kDI*sa`O(1j^RqKus6;HE;MAAFk zqcWb&ynCE3aqyFuI_Q#nk2ml>xq#zhdo*YBX<@*F`=8D>s|F*msi{Y(w%9_BnF2#yEz4STC+Yk6Ocn|$BO$EnCy?Ct!j{Xu_mFetg!pQTr6*<=6v z17*gPZwkC6wIm?^}{+x%ft)Sj576`I`DX% zJ{VLn-K-7fnbbNzTYAHLna6Dr@w-^qWA)buoxXNbmX#EB32x)xL3C@gY!O}|SVVYzk&O%7hi``rk2Bcvb{;O z#?gR<(&=ffGo{5Vo7@*nH7X5WTkq55Vu)s76&(e_`|nGOKrUAJ zO1#yxMxVXMoK3$h-8KI(m3`=<^25B-<@WH|H$JRHkFJs*?$u1Ke}8|p^CeLhh_m

      YmsOG|P^d=G5{&BgF; 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 literal 42700 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 diff --git a/experiments/README.md b/experiments/README.md index 9cb8e25..0a0c78f 100644 --- a/experiments/README.md +++ b/experiments/README.md @@ -3,6 +3,8 @@ `tee-demo/` preserves the earlier localhost demo, including the local WalletKit #604 adapter and TEE routes. It is not the default application. Its source and local-package dependency are retained for the next TEE integration step. +The published WalletKit `0.27.1` used by the product does not expose this demo's +`extractSelfieEmbedding` API, so the demo cannot use that release unchanged. The canonical UI and registration flow now live in `web`. Use the repository-root commands for that app. The pre-convergence checkpoint is From edb697e218ab3970b5888417ac44e9c86ceb69f7 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 11:24:37 -0700 Subject: [PATCH 26/38] Use the World human badge as the authenticator hero --- docs/review/README.md | 2 +- docs/review/authenticator-desktop.png | Bin 30417 -> 30864 bytes docs/review/authenticator-mobile.png | Bin 22764 -> 23146 bytes docs/review/dev-desktop.png | Bin 121225 -> 121579 bytes docs/review/dev-mobile.png | Bin 100514 -> 100858 bytes docs/review/request-desktop.png | Bin 42277 -> 42743 bytes docs/review/request-mobile.png | Bin 33665 -> 34013 bytes web/App.tsx | 2 +- 8 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/review/README.md b/docs/review/README.md index faa10df..f5ec429 100644 --- a/docs/review/README.md +++ b/docs/review/README.md @@ -1,7 +1,7 @@ # UI review screenshots Captured from the built app on October 14, 2026, in Chromium: home at 393×852 -and 1280×900, developer mode at 320×852 and 1280×900, and requests at 393×852 +and 1280×900, developer mode at 320×568 and 1280×900, and requests at 393×852 and 1280×900. Request screenshots use a test-only signed Orb request and mocked registry/bridge endpoints. These images show responsive UI validation, not a live staging enrollment or RP verification. diff --git a/docs/review/authenticator-desktop.png b/docs/review/authenticator-desktop.png index ec7614e159a2098a22c6a026e3d346e7ae81b37e..7d8a8dc3b6d417662c08528b482dd80fb651798f 100644 GIT binary patch literal 30864 zcmeFZWmuKn_CC6><27h$1*E$}z#yar=~Nmdq&rklU=ae+rF7#01ZhM{K#-J17A?8x z=8R|Wvw!D&JfHS;{jc-;*IuHMO z*8kEO_{ZM$su~J)6D2G8K+P>_dEB{%c>6$N`OXLFb7z}SqsFg-Tkl(2FSo3Ulv7hw z&*lt`7c#kAG;*b5O1pH1h51_dae=#V{q{I!sNwCkF6U#6VQJQ2r@2|7*jlCe&;Dcq z8y)0hPMy9G!ar?zc(+g}KfRlNc<{yf|I!x$RhLny`>UZe5en|8By;fI5ppxf3-{JpcYyiktUJ9R36?j-j*QQiDCg zoh}B+20e>U0cmVWozdr>p-{J7FWjKM=X10dKx!bAX7_MA$ZCCk>N^FW#jg_64wF?n znX?uUiW~40l zX|_`1GM{Pt2O8fajC#HXynx&s`57)0>iyN}*6{F>nMiq#c&_ZDtv+QmN7cfZW4Hyf z2Yd7Aku~`ESRJcef8iH@8eXyMl*P&aZCG8phC&^ES4`lugpcU83k{4s{PXP%qjE}8 z=XvBk{?OPq_~F54%jVp%87)7?wbDdY`pJKUHS{fEk`S;S`X!e7Vz4cOt~HcGbGlo4 zqre>btrv~{m*I)*2J+M&Mk*wWIIDj9!2C2#G@kj(i{C|0v%9>`_vkn0V$U_L)t`#n zW1IHpQzdeRS>TNuBnCO_k9rHVOIt!I823pkIj?-S7rC9QvHf@8#jlSK3U$8Z@oX&g zq|3mbRyi+a%ZKYf<`>BE2vB-$K5_S_O=-{U6_^&rg zWiHYF{`OjwS0az8+yL)ig~xr)HS+4xVL$Qd82M#T7f`5^_?8f|sLhSFGRwY}Fe=e% z-(B*}a3fFkiMs+a)*mwFj?&MpXUIl*>@4qZc1y(45EW9sd3&8I0R@}N1-o8#UN%fI zj_XtKmtk!__l=o6JtMJ6ug!tnr;GxMs*kL!?cA0MD~i5igRgRYeKw%3sd%X8@Z;`U z&1Tp3Z^P7MmV=on<&%|)$7WA-v?1F>30K|F6xjyAh*_2;SQOOa@2 zd_Aq*oj7cx3%|EN6V>D0c$sl)ZBk;zu-@m`_jt+hMFFNoVAT5QwrC>6q+?Kymw?TP zQ&svkGM)^($vR8dnLzl48ZJhuRCjlET+`5dTTx(`K3;ntY zfTpg^m${#b=5Nxx+zwYNZqSGyVbPpne-7Zl!7qD$za}_lm0!q`q+X+0>#?0R>H$Y9 zNRjXrYwl%!62El&X*)hA5oTW)*$Q|M-Fp#re76%vJWXU*@Ua<+~G}tsSYpC&GnqU_lN? zZ7TGgj@G~5z~G5EExcDGs4Oe#yL^{Jkds^8U4>@CuKu`pb%;fV#(S%Jt&ZYHjrZXW zq$#eoxO?sn#Kpd0Rwj^_A|LYaMaWPipRZeHff+VSyu10e7fmz*_Vqd=MrMr zb*1-$oqgB8T};1F*Fye+K7jGD^Xize9PC~ad0>H>h;B2P|Kf!|LrfUUNOILE(k7X& z-ctdjX`j-WCEyt|o{)qEzZhW*{@#=Km39iutx;(Sl`jg!9Lkhr(gw%|MN z{QDa9J+~isW4&%BZh~SP@P2_?wF{Zf%)qzPhtF9WEnsJRL5PhB}-)J#mHiFKYk$;bhzH zT;|E~VXDu;B4!ZBLvs7?gvycUT)a6gN`~wn%WGT~jweQVP{c@w?X;+Rwd$w9sG2}` z9{p&-wFdtErNJ+QI;`Z}jW$lm2B>(i^k&L?T=Uops{I5R7>+lYh?B*#`q_)uLu_vT zr24i8ksIbs+Y%&pTh*S(GF_FXkEHvkuwtSL*FupfVB^uRBGYW(usxv3$jcGwm~^@~ zmuN?TLOo02A;c5fDz?YJ>raSPcoWt8{nK4;UA>9Me@M#nM<;x~$ns8W!*=?@$dc9H9%%b&}9 zO=7mYED3WTEY=Xu59pk0c$SEWCYq(Y9i61oBZZPdfF(Uz@4)cE0jt5*_* zcJhXLn-gua1fSEdw9O+~Q8~U6MHzJueixsU?o-Ac-V)n%>CoWT#j#39lNfjhiPsiE zG))=|R(TN`X}u%^({5z5V+ZGPE{o9vvUjXyqJ>rr?3;;W^<9Q@jv08F9zF>|CCwFA zO!|027$_bpBne@ZQ^j!xKRWZ|mh*;Ddf%15>O21ApZ@Tu-wf7nWy{BCsi@la$Q!~u zR@*Gz$viZ24Zx60ICZiT!8|?fv2-^=}0r-M%IADC65S0?LEA#sul^HwQK9B*Z;JGQlD!am@jE|753%Y9p{Ehf==_G)Kk z6l%&ozGA+cM4nLumvMP49G~}h9;Hn{8m-8zrw!BjBhOh&6y&tGKBcK=FBPMY9G%As z2w2EbNvHN)#;lZ&a&)w0W_G*eDX7KK9Z1i(@6X1b0!n~n(UQ=Tv-1es4MX>~4I|T^cTC~%rEa44D=j?@lhF*TZ<~sEJ-8mF0F1tTpvzP@> zXyb84$d*7CWJzuB?SXLNxwtLbUxALl^&Ec=o2QNg7R-2gBi(yARNtK-*R@}tzC+m{dgC(bz1uc1UgeBly)=Z6?(NWrsxlwg z-Xq~4r{Fne->Qz=Z%}y>lA~_q|LD3f{mBGmGL>IpVbBdUt7b~PQqpD6-N?JAEzpuH zS1YDdy_dEmT%e)8+Q+Y(>^!Iq`{Dk=Y7Gvpmy$8SycRPEDqc5G*XA30vo>bxW_bd zQ*3u^b0Ixk{68=)!}Xs0m3rl{KH(RIUk1xZZFRR>FF{-27=)W{m9e$%%Tna&pp}*; zFW4C(DGmK#Fjq1qd!Be=-eRULLd7fPlN&)Om+jcs#W0fGJnd35)1s{u6-;NJ_obJr zZY?$)G3+l`&i?j76;%y6U@+!6nMNyVIn{q&U%i5XhC%T7U>l9ndqX-l`1O*caZ5=2 z*>I}hTQu97i!DWMJ4lF|#hU_}_+F2faz}+WrDyXT1}{O-j^p?Y>i%_p+c6=mVWcsB zKw6P#^;wlpiG(VaHG)LC76q%W8X~0s%d>rTp5&IOi*=+OY_#o2nWZ}Q6TXXcr;s=Y zmZSX7BmG4xbM4P3JNM(qOf#*Dtk(DR{50!>o8(JNeAlJ^TwcR({}9K#yG9W+Zd8?Z>0ix+#s{YK znYalF;UBea`P)|_g>3;1Ml|GaBxMY@-~EO38``i`@2*pk^LP7`^8i|(`u?u89Jl!Jy>Z#u4>sHw2YZP9%P8rA5dW@h?_VOXU4Zb-Y z*g1Jf2PccrigKB>z0Zu%VR^0;v^5I7ANl@(eSjLQkDp%Pt#Wv=?WNz{Yp>@0enc_K zJmsueZ*){XQ2h4~1U=h9>KxaL!2<1nH;2%CezEK` zhcL!32J(oriLH*@>!b0J=R1P#cMLKNZ4J`5Q}fPN zh$mpgPkhuA|xzh#c2A7~u`2{6%$hT}?pGTFBUtuly1&HCwMSkEIfkRS8`3)VkJ!(S*nhl=CB zac{i==x%$UP3{hu0}%?{h^ha~>Uj0q=kM3yEnWatdZrKk^!0;I&_xAq0>AttA zu(Q$0+g&r4@PYt-8ek;XW(q=-g$XkpiuC~Vd_!d6V{a7D+S}Ey7nrz5jL_^Fz+z&> zHT9hbpd(5~p?Ev&;ISC4QHhipw}ufiDs>(JVaxir3}HV^qiPOUt5rCZ@|%E!+dDnk ztp}DVza#=7M!liW=#1mmPBr_PPz!Vrs1u4PKeFsI|Dbpmp{3(gs-J3SEoO`GK^i=S zyQ`Kyh&A*PhKEl#H=VAqn>+zZG3Zy~HW{~36Yz*}@HkSa3x4tVv%~P##JiPyShVYi zWi~<7Jy^DgXXwMG4lK<o~M=&EC{N%!Nyw2;rg3k^lztP8XDRvG|bnxB_X) zCiVjuP2D>4bBn!C3xP2kwXL?<0caazs>+9YB88le&%nwRVOq$CI{^0q>uTATYz2J~ z>!f2Vm21+3(+}bKq(0D9vJ?|j>|4kp(gcT1qF}r2|MknD%p^lkN8`2r?bADI@}8|G zLS;RmpV2a3fh;-PScEtqyR^I@E6pk{FF?0TX?s8P-lX28I)7J zfL1$Q^F2iiCGTikW=5yLj$+;ZL3Pr`-amWaxe5ZYbSshQ@Avs+SA+Skxy9vK=cF^{b{ZevhfJe%-kB%9&%vO0a z9@uxY2GBYTjy53HWX&X@$3q(mSoYG#_*6C#$kU_lN4q!NMs@m;uyK@JM9=rAaP`~bgB2Q6J3H$qe4Iv7*Ec;e|Gyws0MmlCvO?{E-~M=IyptwN!Kn1os3aiJysr%4YS@@?v56>)>Ecd+VRVk9~9W z!+ZADrmROA_Q^F{DLGQO$oK)&2qEO{q(d_dQO`8Ko+JN%bmD-2H_U#2H-Wh3`1K@@zF{PrKR65z5CwhJnmC(lzKSRb*Sp=nSEzV3{?AcSzqL7lz- zB_8TqnCR->Y^7lj0}dq_MCm(D*`7TX4igLv0&uwWQAmxdP>Qya?U z{q0-#+}6z!Z3JAFhpxOUx9ppPtt)={q{4Q56_`3GiFOl5uzb3%^2&}JYoVIa3_hLoKjeH& zE4KYPDj)>Og}{ONBXP1vw_-a{;|^sfa@ZJTa|l8CYWV+EkWo6@`hNhP@&Toy%(F*| zR3AJB@O!}d0IM&yVu0v$Kq7DOG6Qw%0jcn%z=ni$fkT1YNbPb-M~fB1X5Ek_Quzin z4aLL(E_Et>ftniwpl}-?6ja0E4yb^iCC}7ggIPVc79w0KEP80Ai$L2lrK55B^#Ifg zxsh5pIWB7xV)0@VzNg0^@UgEL*wt>YLMW2Oi&O%b=@vg+E<1b=g%?t=T!>dEck9;Q z0oE1qrGio;s=igXKEOp{@hMNq~y8NwPX0*EjOzh33&ll(IN8_Xbq$7-yL~WuRh5hYACnWIKNA z{99izp7cZ8<^UEryBZ+I%OS%-&~HEvkdI3QK5nX{gG0VL{VNro5T4(#Eb2mB9}rzN zT_Q^+oDzVc+FK|A3PX`pA44i#uJsI*r=q>t8UnxhI0z0GDDU;NF}ibe@~LmHQ4D6a zK|DpdPeSa+6e7u7=N^;BOE97gcR($p=g)3(II|u;CD?%C{|FEP{+R8^@y@87rhv|V z@GMkC3;+U6p$$-qKR9!$yq}QtIoiVk`^YKb5R>yAq?(kOAFwB0P%1oB%{YuiYLzoF6ay$FDLJP>0q1bLD{COgUL=CLDn6MWnd>6O{qBNk>2(DwJIY zBo~+OAu!2g9LX|eeM+pWzP+-H$ZA}6d^ez>%ibmPxE|GscZTc!wH)1wRcQ*F548pB z<_&P%z2iGvpAsAJ90M32I*loL^zOQ>lyo@tc(GwU=)0uhdQ#j!pyZH7DJSsd21iN0 zr2(B1UY6IWDKKLWD%ld?Mb^6CP6Zu6#Yc611)f)ij>wQzH1-xSov_41fSs4`$f|RL zA?4NCi!J0o$1WgFp$q@qx>?SRWI;m&M*pw;3SQB~$k(#-XsCLX2ro={Cu}0tQ-q1@y5m-GD40n@KCN5@x0~WA$W5 z@D(+uu+6$-pj08E$)I`A-58;*UyqDCvif33f3Ul}gtCSj5UoYJ$grTbRIwTZv*TWyKS}kSRN_UeVU)&PG7QdNOgh&)GS#t}WH zREkbbtIVt5_FH7bo2M$>eD{$3(|lq!($+g(?dl7Hy=@Jy1sYw+RHp0ZPfdL|9|!lE zsXZy}Y5(A2ycX)F$Kab~v~R~A_@R2jV=0rH7lRGU=0?Zi!r3%WMq~#v$65xC}9RXBg5#T2?}*J-&wg zSeJ+#8e`hA6_U)-UX#f=9NIuOnp1LoX9DAO@KdrEUFGrRo`n^*DG0Nx5$A&j#Au*$ zmUERiv0NwA3*yoRfFr+Il%hZ-0OsCRA+|8Lm}@L`eFG%A))7P;@pXUm@_WSrR&mt5 zG=jGam~HynT(gt7Ul1Ai9w;QUMYV81-<_pEPM)|hZwGjP*xFXlFHnnO83S>;$r9C zfDW@=&x)G;bB{Dd^N&D7z_VSVYn|kG5}0(>a?-=(%)aGjr;xiZLtYAGF&f+iGDEKT zqX9IO?aCX!9^J^Kq7rcm9H(nR4la6)63H>ri(di4Ep}-Afx21cb{)ej`9|`xh)X@f z4_s~Gtld(bnQx1ko#e|8M65+%Ewlzo#d-^SjhuMSVrobNY-X)P2R-w^72)JiOFH`sbt`@fPS!Xt4bH~$W_ip+$fVs&-p*x1r9xt9<}?mf5}NW~ zzW5!9RA?r3YszG&5~fV92RC{S>K{n|QhD4-&Zx5nJXhGS$ZKNIOQL_@-56rK@Mmje z`P-X|q!<6>+>JS@bY|1??}pYve2H-O*Cqeq4uH^tR~uptJS^>3c4KsHe^AE`fSRe2 zE)57qX;|tv6#N6kUpJf_@42%~w$JWKroxr=)1Za6x#)}R1JxWUbBsH%CVC+9MlLef z?}~4B@`7n0cgWK?zI3=HFB8v=p3=YH@2k{U@UZ#(jyzI5NpS9 z$DK!SLue$#n${dSVU0);Q#HM8SBe~o+3q3KuydJQYzgm!H- z!p}qZ*=a#%tpsh?@+?%}sLli)Pdl|Y$oH*sGie*lIqMJp<}=yHX%jTr(Iw2V5L3?()y zpcqviT{4ZFPx9@5YF&3F)m6PlF{-|Ji{m7E510+DsqZ*Q_LFT zY%?9lXEUFTe*~}1I^jvzojowlW5g~n?$ozzs#BdprCTU1u88Vn00g7R(p3g60PK*S zj3Q^3LLun1+O9F?K=)KESN+Uk%M2(12tqn}E~m*+Blw~>e1Eznl$EzJFTW^3?I+-a zWM@Dmb?%#U#9zcmuGKv55v_5D5c@j0K zYgda{9ah4|5;fijuYD=~c7eiV9G^MeDCy)i_nGxQ-1HLonY?6Xm(vD?OgMdF0f2Di zO2$9neja~iKvkYST1^ormdR3M`83aEWh8-&0`aEo*%7IIJsqVhaoLLN{9BW0yfqXPcb58;y)pT|K1GCRxWqa4Gl1rM< zPcIApEzRki(9JT_wLW=$<)ZquMt;P94pLN!r~qRCicgc%$<5V%+yvU&b4 zOG5-P+OZ!vM(<@zYfSD*bZ)MOR(qI`+HaS0Ydy=E}2SB!g0;l{EW@OI8spUkPIY7`|M)CPi8P{w39W`2a`tSuXZ|pZVVm zqgo{}D{lO*BboGJ+pqpWrQU~)p@9bq*zEqhD(=99`-$$MnC?o#jJ^QRoPX=F!MM3o>dh}YhIs^`acs<>_gy)IO z-zfB3mU=#Uhd83+&o}?Lmo^7zMb{@O$BxE*CgMjDvG!^pT^Qo_Dix0iLp)c#Q6}SH zanTBJZWPj0sWT7JKC+(2rc#>2sDl@@$_(mUKq+S=n7CfLp~CR9sETtMfRn+t9YR~F zj^}MWof+~(D=SO3hek2X%1}U;4RpQ0jGYQLWwB7hL-@r^-?;{BT7c^{SaYiARWigN z2mSAdMKa4u;5VAR%YiG$#=fI;cpNWN8g`2t3;h$@YANL9yQR;DUoX!>JGBlzZ{qNq z1La^GFKk@rN|eMa2M-^GO_@r3jVm}&HMR7+P5Ae3W;P>Z6mAv;k0p~K&Z`?O0no)d zw^r}2P1d_DAfgl4{1~GHLv{a6`sT?J(W9gGpTDEh@cQzS#lZ}gv?La?rn4$laPhe! z?3YQ1{WsS|5QA2;H;gZkGV+(iVrl_5RB8`fWyU&oLBklQcy!^`$GKz3Cmem*FjZkn z{ZW-I&)w8VTGz{UK@Ic`q?G~q!|6@-{38H56>mk(fMbXWaH_t|Ni>~?vNF|-bDm2A z$PYhfx3d8XNeCr@uoa}!@IS5)*XFy=^9+XRK0J+LRHg=pI{4gKY6cGw3LDUueD~+h zK3nMTMoOtC5;_^Lq5U>-{w#Dq+%G|mp7x1R6P>>21$?x*w+FGB&;~4s zw!Xyk&`38I_WR5J_}8NvsUkaKKcbUC>H^!Q(qJR^6bN8Xr{eHKs+|@iJ4ZAUR~@?k z1%}=LlQMUuS>mH2OWp#BF0|Ir4iH+G`ixbaTuYAVuV!c=T zlx?TN0#k5LyieDrszaMDl>wEPjQWR5lgaU;;Xx&*N;&XEg(b0&liW?6`yb=mHzAV+ z>T%{GF3WDv?Cyesy2nuQX>X!(b}c=T$oA?7XGo4mrWf>~+W^$#z26Z+M<~s|2SY7v zDH)CXr1{n}i%LVl9cq08^+&9C4l$yF>67?W+Nla^i6gXHE=z-jN5KdUrjn%hJb*Yj z_S4?$35#x~dx%arYmPWWYXNzJ;_9aQBbe<=zbdp=ZlePs}umPs7F5aM~^o?qaGK0Po1Jg5%rG1E028uKAgM2n4d{!?^ zSJ(M&kO2t=Z%<`91Y+Hby>Ay+F-689+OLEM|e9Fb5`FovKSwi2s7f*ErK?QWprEeDM_!5{=f5k9Q~2 zO-TUf4_)aS_cS-nS9BGgKZ57B0>%&-CIdzbG3foDN8>++vBNha;0=~X&1oQ+4+`k% z$uY2(qu@^jrG@jk0EMu_3?WPg^gmUW+C@O?`i)-DjG@33g1Y&GEwFnU7N{O(=>)*! zy3a^1;d2DEkQO8>1jl|A#d|gZYJ6ucB9cR6VEg&o1%%HAj8YB)dNNSgFoXCw?mXh` z2SrO9oD5gqwUE7oql=K9o{%XJvC`i+2B83<(^fY72`KF)GMf>fJ40gy=o0f95~xr7 zYA?2wFtvanH36L5JHXZAeU!f3(4hAhI$3du-1Hew=z_+a`V@O=p?#VF{+luBWg`&B z1ZIPX7@jE~oAW|lXbZ@{Bk17}k{w}wf9ty{`sE?YxK|0(mAZCmp^Y}WX-_uz`=IL1 zi341nW6n=ewmfZ+J#}Wk<_CACf;%fIFzFlYtqb(kn;i!jQ;o=fRP$hPa z%5^LvbFv=*MK$CCgdnrT--GvD8~L&X*7h*a?O?3M{mnIjui!+0_(%$s0Lm4qq+t0D z{&bPb>50gwnurZ>0%>f7kA7>LCzp1Mdu}cC5OXMRL9W;o9JMY*7_EqGsO>;0vrCKs z>xJ<0K7jCLsGQY0d24?>lx$}$`bv8slL{M-`2U-uwpPbQ_4g2(k7OH~kq~Y`HsfXZ zX`bM@7;eLq^)Pl_&)}5r1U=ygw3FLV+6b>w`r1L|T_7aRyR{FaA|d#|SXD1TS+&45 zQo0O1XH0fdb!r-ZcPruKA0eGJ=-+~K)08{e726OyNmW?SCNeMrXs9GUW4g5rk^4e? z8}Ke30i}zRhQ09`=|Xx|WQa0r5h3!*7K1%oMw%P5=@9kCJjLD28Ve*EZ@YyhVJ2eI z2RBNVTceO2f#V^ZR#x2;7TYnW5v@E}Te`O` z`v_M8>%l#slrd`DqgtPN2xAN;$wn~pWmbDo){HDV@4RiP!vRoM7mAA8zw?f=1jeio zuYdC~XXQ-fkeBcAw&tKY(EAwcMRAR^^G0QHT;kW89nphk6+ceE=sp3}$(8Jg4)P2vNb4~tiyQ#52VyO2;~x>kYEx5ofyjAV_vL!`ehW+j&3 z$odjb~WaD$&qho{;0*eG<;fLO71o{}H#}T>`@}^_? znP8YVC#cq-O|8Kx1(1Y(bR?vtc(J(*Uwm4NYeS*)d2fa+NE5qoj@5mhV~6Y^{z9im zh&8mPz}pZ`_vg|*`x*nEPLK$_AT!vT>_hXj2Dt)?5&BUB2qc`>@5e%UM^Xq>^suvo zY>y?ig3r4_E};u6g1lw_lI$v_h6q~a7gE5uT5lz=~ zi3{n3e#B(|(}_YU>(kYY@RYGciL`{ zNAWi#Fs(1ZmWeD8u27oa*D1FihLj9>#_S!HOW?4yr3W%nMuL_+fZUd4EdBD}1O0I9q(s5^9Nv7egN~S2G{=#js6`;m^}5N;x94kOcZ6lo3MlDFimRL`^yc zy0#@BIWG@!?}YO7!3ob>8_Lw>H~R_;+4>8tXk3FFbHL7*o5jaBT~4qV0Df-~+#j5d zi8<<;`uyT?!}|$0IgQ03c^EB{1fnR7V}wO{U;b&(%2+H{ww?_{7uOwF9qiSjXo8wDD1x6NN|H3m!^GOQv6NLm^RaH$5nQ^m(n?Yg7NlIXK$;RfA z7`RO>41+8OWSpdoM}XAKkG)G!5Vmm-&@05%ieA>GoH<5|EUlLVpf=e6t&IB-Y(p+; zU|k$%&S&f;-&9%8ClNc5DZfU|tyAy}s@}AG0Z^nE<2A@ni^pfM|BN8En(P6<+5}6~ zlPZ|})|Q_>17iRp<5*Pfy@&y?w88WIZ=ih6k68fXg2@68W%YihtRfqlji#+*(|&Yvdaht|<{Vhq4aQ>N;J zVJp$PM3(Ypwj=u2Uh3%)qX_M1sj@KRuR`anp+mrlN;{zcP!YDg(ys|&B7XOodp^ep zWV-w#0_o)tk>?7LMAu`d+xSU}A;05z!fw;4Q9^ye=QSG9N)hr2?f>w$ccC8QoO7#o?bE&3iswX`B|{}1R=zZlPwJhfoknJ?m_FQxqkGk)kVX~x@OBUrbtQ5j!*Rx} zO|PYL*{`>wbvXr${Nr;>r1J-19^ycfpGSlKdP!eQ(A(exRS(U-Lnin`wD%|4mxF^GtP*+cEp~mMM`mt)?V3+L==I z=DW|@pG1w^$;3t}Td}Q-yqz&H5Q5N6NDDe!*%R!-;f`=JfIV#zYCc)}-DIZs7Z+ln3JHaRF zVT8a==U)E@x4t~DOf~&fac?YDY3W%UMzJ^~@Ho2>XZ(upIBPA@XFc67^?Go)umAp5 z@0&a?L-ntolBlpv{D`E!EeZiJmSwE>=Vv?-4zI_^oA3rD-&s;p=94V%t~)?1iF?ax z$E0{D#}ELIzqP@77uDFk2^)OAVy_xBU~}&h2V0iw=ca``q03u5|7y5&I^QBrO`KqDSXs#9tM&?H7adiS!=~G|R6DQuUZCt{eHZo6`JnYRNY`eM zrUUOW_Y?QUB^X>!*oQISXtf86!ZP0&!z9z24nP4B4f{;@TKZ?<(e{kG<~($lQ#@v`CN>2f5``O6>jxe=w&NoJB3$5`fU%>u5k z9dqco%Ug0Z8$IzAerl}^*#{X}bi%!+~-Y7j}Be%{>3(4ZA zHX-sJOA>xi`e(|BuYlEYxNxnMqw!1NjeNKTE?`OP<3;gwiz-8Ab<*a|y`z{)EZwnA zKATcDO_7=h_O^rFAftv2447KFF6vh`t#Uta^cTVr5w`rcE0ZPik7|rZXZ%XR4d{4% zlVW?cC952m!FV0+-q7&+{dO-QIL+w{S1i8Yt4bxxhs`}UrZTSat2 zrPuPj+r!U6#J{rY&h7`SH7UZ({_#RaVOW#H*KHRTc@#8VDl)L9T3~OAd?>~qtoCDa zpX=$|Z0Ap5W<7kW)@f%@>6elW z&QoQU3wbC#k_uRh6X-9HAo8f95M)&`GpbO?{%1iF}G8878(g%(-RbyXBMKK-bE12HGecVAp6bN&U!CxW@8O zr8`9|{k4joaY%`(3z@lU&fkpaV4Lz`hA?~9!%W)&#QJW}xButO4QYP<6+#)$=3Tu) z1xlV4+!lBj)lX8CW$(O z{my=HZP8xJz^wXjO}Rjlu)DHL>+w#}=Cn$riHmFbLQ6z6wOC$L1lW=IO^faWX&Xev znO}Pfz!1kX{$X(v(0^(0@6V|I+x2)C=A;qgRrPC?1I&|ZcSF!60|SSDBTNVzh$T11 z={q8xnVkKM`X#g$!K-}$Vn5%u;P1c)^AYvs1ps(cOmO!SR8`8m;6?^`)L-((^= z^~IkKeMw}##*fUkY2^apzLq?!sFLfnbPQ8nx_Z^CV9tZktTxrBoht}d*)Wc8b&cjm z+X%5PB{Glafg&IF3CH7IrmA{LMVG|HG4NJpCr^hScmp22{U@mH14(GdD1_FuT{yKE zEnD;Du#7A0H*q{>C*TA(*$h$k_7JuuMl?~J3s_=*Bc_bi^@thcw-E~^tqh30EJBLp zN4Z*=`63O9vF}h$_UcG;1tU{B%)r9jNSlUm*ILuA`oYq0KXmhPoeroJ*v7Jk#N_ID zu+b!iw!h7)m_)p>eT00NT5OYy0N=F+AIdApI$ebdAN_!g+Bn}G1 zvuL4-&^OyNrxVqgEJj`Uudp|L!L$@EScTYbtB=*)kq$q7wG1Km;W6wLPN6N6%nAI0 z#wt_J8oCUdVmP?@NcgV{BJ@5spQaCs&?Lgpb_i*N8Si4Jdk7rEXmu&mWgMlr8G{=z z2R(82{s|{U<=_{$Z~p_ZV+6zrgqzsdea*oh7LK@Z;=Y3wz6xr~4GMu}U@(I|e-Pht zBas>xPoNFOQ_)fIlzt@TB?68yT7uSJLc92h{Q9|kqmm;*w_O28BP}hW`bhpFxRVhA zQ9YC#2BuYn!PMCR<{`XMM0o+~SVZl|d_jC<2cVqQb zp;yFQGdK0-?XwvOJb-&>Ld}BeG5TrISl(L!V?3Kd_sCNF;{JjFALw0jMA6(uc4$yw zU1p*Ym1KLh$=X;j@I3l_9H<7J67l$pV%=#eWTt=1l&#T2e3;k6Hc41^gpkvk%X!tR zDN`n`F;=9oSp0!OF`?-q7deZ#1tv<(O?O!<0x_cYx`9k-oF`OEoV}0rGPG_LGA8B? zr?v8!`mTUvgDrS^Z{ca8q^;Hv zcxQxk?z~JD#7?54$`^(2QTvnYN-f6 zfJ`rWPr?B@i+fyepOh?y5tvwbeU;;J_4K;Ph`W~2t!7D$mp2qAuN1tVPRCDdC`H*ihFR^oWcf(ysbpTKtte3?7Urgw zCu%*H*=3)5N~JC+P39bJkR}4Ybs{Pxs#a{uzVw*;1Q8mKriXx|;ZPFGaD5k+L0T&3 zYea6(&A?pOR1s_=G~V$-zSwS&s@iQ1njbM00-7WzizKa}Psn7(zIJn@3>j~^PE-As zl9{O_0eUBBOKZ$Fb2klGK5iqeB%G{W5T&S#Q$}p8=Iq9F&X<-AnT*bqIpU6buntPo zcRX|}d#+Yb!xG3&A-{*%DzgcKbxXchZ)wV@ewB6L)3Huq`W|zm!9IrGrF8F!%#@(2 zk(d8;BD)f0)1K@Up*N7ONpSbjtY-ERi{_qbw1M~&k5~?jC!#7~V2(dq)X_RZ=#a!v zX1H4N$s~+ROnXiPDh$;ZD|g1xg<%s}tp3=GYyeRf7z+|$sNLMMz&6S;TxYnM1?BiD zhh8%NuBwq5|1=7tP`LqJP^j_PRy-fK5@kwOJr^5Y-2ym+fraZMD|8`2ZZe~cKscz` zwO}=3a1DisC=e;I)L@>l8L+uierc^*hSO_*ONWxa_eBO6`32G)!xBvT8A*YI*dQH* zeoeSr?hSnatvUU>_!sZnn^ZhA3QVszj{b)WXuGv&x^5am#>+rb-FP*`+>}+b+uI7wK@-^EE70*sdqTN zDQTLiyy>G!%+CY%FTqk=3zPM}{S} zb&UB7GatEq_2{$Xc`>O;%%Q-i*6)^HM3L=`wez1kT&tJZKdkuHoaex3<3~=9I?JW` z6>-NyJZHRQO$NK=y&FNn+K|hlywE&8=lY=FrKW7l5O zMHlcw%ECozpzh2)2YL1oZfHO>shLz-4aVAjm%-u}$@4IfxemIR7D#dOlMmgMpbkIj zUt-C(2&EDg*l8F#W~mwa(!{^Nk3+n-7^isCnB0k_nOtVLNFun~(o3e<7LiW6#t7^2 ztYVNWH12Z*4+~U1GNFBOmg9r-#U=cwhVv3m)qFVGIb9ppyLku!W z3+{pT`fV7{aRJ|W5l{v%z>*2|dk3Im<}quMK+FtSvc_S|A+7ttMJl2-gM0Z19Jg33 zPy)RPEb+CSo?`HRi(@XJZNhJx!PG(X+5mXQoMe0BZ`|U#eW5uRxhJT{9>z|ag}Bw7 z3;~o{c5}fUk}$Z*YIZBM6znUlhtkbLxot4qL|jOkZUcIjd6In#h>wJ*xK>!LPEW+a z05eGlZKs`zaKjMqHouF;Apy}MJZ1nsX*d91pui15v4)>qhFN3dGUO%|3;Z*sms{Zu zGVfj|L9pU4h=bCENMnfgWKLtw+js%+@F^G=tU+TzEX8XRwRBo_U?PrI^aQgC;zz{% z1MjKKwt`q<@%WPm0BuwPj+%sP<$#YrfI-5Wr6P!{b28t&JB7OfjtYk~xN!HOnQ?~2 z$&^p2{S7#cpo5TX8$eaiXAx*|L0k|pvI!}LU2P>O`rLS>=NR_S?7=Z|16gJsc(WBI zpvy(3K*1`3mS!!@iWoTEOg)us1tuREnnFw(gHBZyJ!kwXlR&wT+m$pzC{e^W%T$!* z4dZzOK-(ds4S!=0jnDrF;3-imBK2R7!{J&h-+upmo=v74WS|a?t?&K=#N2X(Oi)hO zrqSj7iVy&4GR3Tmrw^F}z~@BnP%6`+8s_IQr{9E&8ciVnK$nq+`8WsQG!Zt6dkd_> z!Fkp@(r+%_2>Xgyx}_c}&65x#zJ3WK-@H$F+udLugZ^ZYmmHhj}NfPnJ9i^2sVMeo7;EgHiBXZGnWQW$qA@`Qd|Xyc+jUm?z02^ z{6W7?>FxpOR*?@`y5>kC#0Rm!>~*yS-2-0i<|h%GcNrPCPLW~gn<-h7p8*3i2B0w= zA===>hV1MM;>ltM(`k!;FDGhKg!mb1P7J0&gGcQ8o#7Ip^7Y26GR#6AFce&l6O3F3 zV0vqxokFD~CYW|Hkbao*ro0ch6p7NfID1Rt;>@PKBBF=1HWNgxkkL z*~Tj!=ds$Ev8>rfNg3;VX)uCiCI+H3;xsqsETyFGwIDw~Vd4Sz1>MYCywnT*%`ISU z5axw2u04dL`7f|n$dK_O{{Uk0NOB4^Q${^AfYAmn<-c$v;kiFR0ULDnrAO(4dT48xJHdiw+k9Tm*bxqWe{)?%WMzqF!RhxpJ7$Js+8HvH+H(v#s2 zXwtF8;N5<24uL#wm!(8P8Q(-x4apq1;Cm-3z?b5Yp#mr3$f~= z7c4a7O|jG)W1+FrSLnBU54wT`l6Gvx?4kl&c7a+4g^c#x1?8UPO76_uxW{q!@heis z=2BtflnrYtF4QLC#Ku@Hgc9$5_OXK0RnlPUwV$G!&XnooEU7jyUMdv&hpluAv~8cz zNB3iG77R8LgDH%uozN6b!5vj}=($REE-sV*NCP^wEi?M!2cY?aY5ZgBt!q?^4f^jSo5^h-ah5CW3#5N#zjt`+!Xr;)_&C`dKu43!qNqCMN@e;}msZTaJ3tC? z0lvW2(VRonD@BtJaUJNJ$;?LW7zVO`plkxWOp~fS)fvcc$X)?m zKqslX;FDy-MCmfN(=tAI4AIQahBF9SfHq&M<8KT2c&U3>M_rupHHO@`5FZt zBke?-qtO58J@)39$N;3?k}JQRh3ahiIY?4Y!oOJ!4*+p}xBy?t)=cwyYz(?rWZAvN z&fx5!<{5P3JD#glZ2vn%j{7)Y9Z_7EH}Z>}MxXM!lOt0kvXX?)k{Chg zhlZ~X9Vv3=q)c6Nd~;-O1!XFd*q=#$1lC#Ma!&e?#9mfoy?3uvNTi9a#)1}vyh#cO zc8kdN=9i0=AvvX;Sw!L*?9q7={tfGcb^w8=Y_1ndDBHh;n#kql#_~hx8F*i;~I>_XFS-5)_dIOG{8AzPF(#VjPqNi2jH$X`B;*)&B=1`Tyc~j9zku_P)a8 zm{5*e0C-?bLBw(p)T98{J1C0k7^f)zE0Wj>e&IfTf|yoPy6$!ZhpnSzH^B8X3n0ZF z>yTs6A&l7!oX6!v?ZobZx{O3kN9!gm(=S-9Jhl$`Jr~|*uAX*D|qph4)FW(CWeCYPU+RG7uNN|i)NyvW<9|I^o{UUqmZK>tI}jg~a8<;O1_^pwm@(nfZ3+*A8=Ap!v#WJ9Kqmm7bQysG;mfn z==4Ph%~w|UvrM7{$hzhHjUPD3rh!~!$eOsERMsDRMT|rosoV&w$##Wc&wpa0)3^=v zO_;T6aX1Cy^^6Gs|F5~cPI*MDowE6qEX6z)!phUWuDaL~xZW-WIN4F3G<`M@O4fCh z3?y|VR+0_pmKD8^Y-iw>zD{;tJCrwrXAab#RD+Vv$fa!uWuZa~wibg$lw2hIx12|} zx(ccbALDz8@)VQkisoFhx~23v_if@0DKl2aJQZ%5*;)p-_(xXB!HlS-DJH>72F+!@lk zfPG|wW3ju&s1oGb*uJwl^fT@kiA~}239!Er^NP+Hh|K@lBFGy}$x6!Q^|(yK*qRz< zzP8}TmVxT;c&876@AP$QZkCQueyu>)_1$E$Snmy=-3>X;$-VE;w?|F!AvoOZh+}ZK zgS&FsyENK?uZhVa<-jvUFNXW|D0Va5>Lgtkz2!4Mk-X%feU_-Li*U5FeFT5W*pbLdKczCLQiqs)e=D)U?=I(DMn z1LBWZAo6NFxHtGz!eWw06FW9ddN!=G?|{H{(gZR=hUWM>jlf1?;%`>1i*~qiYP{5Q zareRz?r*?27|>`Au+OizkWW#4@1_=j2h`#~_uW0(Vj)O4ZOkB9*SRLC}u~n+8tWtOP@%$ zg&^m2#}8wg_Wruk2=*HS7JenhN1{R38^Ew&_w>8)E77;qa^8_*QYcLQJqV(KeCf|r znx;yX(3n;QpaDsRg_wvMPqo#(qAcnRWDx{;bJ_zJS+%z?09?BJEaUoNkxvq<`Oitl z(XW&Ageq|GLt-7D$ggMG8(wYu(|0)0zj+E&eY3j`|RLc?S1MFU{)ss4RH=6)Fk1nB6BFC^)V;xL_K2dNUZ?Y-!ozSmDf*Ek0 z3?lb0po1qT83fcQTo{@7(AB|M`$A?<=i!%Swa}$RS79P?gLvYvNWaKHo!S>Ik*Q0V zr`^Rux)-QrjJuZx3KffYMwbF9Q)OeX^0rBZQ-8z?sYzOhn_P?86@q(QliDLQq_j;b zsAg<;3gKIX&j{U`273SkK*XPM!x0d7f`figeI1y)$VzBGq zH&cgU>8IpX{`mytr1ZQcv6_Adw$AS9U`?`bkOU13AQ_3z;pfU)z6K9G+7d^f2VL!b zE;c8mT8#OklfR)$rgD-&msC+rYPdG@!B9ner{H>OYYdm@)1r2Bu3M;YX%qWJ>yiH|P@VhYjc)00uDTTIowVOt+&4eS_8XiB z5miXsu$X%Z)Y_546qmXx8x|@SB6Y-ln4pUMB2URc^wH`1k!8KDutNpl>5RI6ZQ!L3 z)OXoO?@E1wC@0cXgZe7kkeNJugfyw&CnPq#_ITgZPi*e&=(dAmKOta%b${vb22&*; z*S9_0%$+VDSfiX|Fckim+GF`qs*f(UX+Y&$Qr2tJ!kQ!|BysWs`8A9H2p>&OByWyr zPUg$*&ljxSf9-~Q10eu3I8voKghH*`%iaMtXXw8r#S#F5rK|hMb}okE4-!uT^#2(D zGqYP(!or&xSx7jK@J$OU!Gn-_PSWu5O?QFjwEMzSph#RKd1{-yFWkxcDf9WDI1Ei= zoO@Adm|F2hDveZqG_V~F?nWZJq&hML-AvmzY8VA(ydsVTl)$)0E6-|1+`gl;?;+-a zQZe$(`Gd7m8*zR>=GX}Dh~#5a)ALg~d1cvioFp*L>=s)jBwg`3UtT|>3gy+^@oo%% z2-@)Y?1;VB__VCbipDOtzo~7{pc(l2745gq61wPdz9*b$lwI3^WUAoMG<&^jyG;sQ zk!xSlvQL8#l)U#1LS?P3os%w~+x;;<^D|4X>cQCu2OC^k@j;U+UP5@?ht931SF8W% zWA?IPnd7V#)zG{%w0A{S(+pz&Zl<3d=~?reCt$Ox7?aY`XK!d?6Q$=o(lW+KqBqq` zGnr{Fx6cmwqBse*5g&feP=!~a(V>LZQ9m-LT8y`R_bujYDYzDJ$i*>+Ohcix-KuYgFL&KKO@gvqthB%zcJM1yNY#$yZ^v#hpz`qJx>Gh~ zImYKL{BV|x+e(TIn9Png^d$z%Uxmw?ZtyiG9p8y@a)gQ7d^-CCOeC;j%JAGw%KB!6dHv9;uMTz7gq^?fqeJL+{U2q^6yNlqwZhb zuaW#zah5OkO1DwGQR$|g0iHtPy3)4mO`3|*6+NrUcQdm>s3Xs2S@v^vY48qc`CNJz zzhG5tglfJgp&;E$q%`kOm1_|vC79}7w|IG~6vKP*O$x?7JtVd*RvEwjg+kH5(?HF% z(=izgksm~ojQU*jHfktDPqUazr~AwQn3@))V-EXcuq_4H;DmHfPlz3gQO_)`C-$kx zYH@wr&SPY=4(OA=Z)(7}5c$##Jj=!kDU%a6aZ;2g2I&xXXQ__Ptl5nm4nJJHQZ5lE zJ;``Ln_l&bE7KT4G^zX+(|Qb7-!wF$#@e~d7v~C@y+(qFfbjzj?$boG&PoLjqOY*G zQ{=&4+t1M^l`N_}3!aXfUS5#aX-wfwYj;49#23`1Un|9Yr$GUBtRyP)q82a$DFgfN z=oHz@c1tc025ziLz3Z)FAgXKpqq`{`{i3?ccYQKw%08Fy2yLl2uGj7o7(c?!urs?A zP>yXr^Z7hgxbRWMI8cfOcgc^&GQu)?RIErcd#&~IjhtDDh2xEsmH83rmDi4wvu(^? zADl+}!m`uXWIiO&~?uD)HffcdgE_ zxT(p{x_68NP>&}2TUht})xPuI&X3#8UVk~CXr_5=_WGoJ+~`~cU3am7Gm9G?kzV9Y z*Z6Hrc|zUS)0jr-bwUvvt)D%r6Qc1)pk&g6YJlS!mt{3H5fH8<9^M1%RuAF)FbbZF8|4jmy0W*^VKHV?d*S$`@2 zJZe1T)KD6#CaG9WP&}Z><;H$LaZC%PD!A z!*AxAxKkC;%Z-J9ahzT9tbZ1tGF|gKu(@$^RO`A@m4aUQp9=JaZqrMKhW6AvlW(Uc zX*b@dpo-xn1->jl` z6=7zp)`xaG5J6W74)xd$6umlm6WLW!u z?kc~X`7}i%fp1)(5*!>=S+9&R$%$m7A>1U)tLAeFxqC|7<-CVoOe71ar|PEZjuXU2 zH2&vsoRPx4x%evwFN}3ftKDR~IkxeQoxd6M#SGyv5ts5DjcYKE$~$>xXRf`hVjfdB z-E5fs1k4T;M4#EskHEWch!T0Y)tlMFs8vQPXQoMDEaT)u6r#HG_z)&sKjg(GP~Gx- zkQ}m(v13r-i{qmR)nRkaB$WwDk9pAJ;t8-iY4VL%G|#B$^2S0&3c5)uDw$bshyiG z(AM|4^75u*VPwvUKHPM35HesReRvg0f|@daa*kZ!57xVaL(jrp-yAUz$Xq7bNZoq! zg1D+(FN3e^RZ(Ox4y?4x!ZSvVgI5Ca?64y_cr=p8=3KjzWf=(*pmD zZ`GWr)4u^>1DsYJ;O%BmkYy=0NuVQKWF@~}FQ-tJen@v%n?LQ#d=EQ zRpoBSdIaMGfM>r!Q9VcKAWaPEaK;eM;+q9WyMy9Zg`_hj=p4{GXY~DA-Rz4$VxEmZ zg2wkbnt9OCvXnxHpf19Up|&uCIoz&st5)X*B2^a(UM;LdWVgtGGXo(;BfF=63Cb#0 zr~?>An^-b&Ut>v5LNL?e$XWwmOl*~Jqz@WGFkOTWI!00;(P5L02VB-k^bo)xyC`nP zu$|2oEbx%2nikkwfaJm*Is8ZBu((!RxF)@+42W#MYQ za0{jmPa`h1_P=r!j|zJH7e^`n6DRp!o1*#8t^bd2{j0^;dA+qL7nHRlM>f~fdGQku zV#6ubXUX*B{?FBTL1_gJ%lzl%f3C@YydcQRT3mFw>UtYLEF+u$5{kqz@7DCvqb_)b OVrF7toM+^8_J07y-z3cd literal 30417 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 Pi|7CY6aAZOY>)jHYDYvM diff --git a/docs/review/authenticator-mobile.png b/docs/review/authenticator-mobile.png index ebabedc29657529a5aa9321aa9ff68890aa19bc6..401618a77c6a914a4437a5841132fcc08e9062b0 100644 GIT binary patch literal 23146 zcmeFZbx>7d)HiCQNT`5Hi!?|{w{&-lfOLaMw?U`UA>g4KX$e6(q)S4&;Q$^=ns1%= z-tV6~bMN>4@!osqoq1<;M)5fN?7g37tzWGtSXogD8Uw&vG+p{@SB&xS_bKDk$0+09zi-sl zwJ{^@&d0~6Q|NBf>3ulz^j)TGgY6Muz@*GF4WmO;pU&av9Z-|JxtrN_^%de#vKEHduTXGD@1&b<^w0p zlEWXqQf_(7=d||j>h+a0-;03a@FWGRr)yi=vyGQtd%aSws>)&~nnG|yL8KUxUj91PXFJ4*8AFy)?&xJO_& z!dHY_;GK3F_TMO-$!yQJpKaKhtlYaH=VF-8MCF{DAIGHI$J&C`o5WeL)Y}q>OU`98 z{>8D6Fu&u1hEp~}GJN5u9jl7OQ~Z1~d4w{PX*Ypp)5~f*QcU63Sfj>Vc`8QLi9N!C z3io=eyB9OajQ*mSV(Sxoo07#2;IYR@hCODB)k?DH4kzI)L!6o<_?*Ssr|g(Gep3-W zP-jZ^IbM!;o%QBE{Z~Ef<9UAYyWAH8m+ViDQX1y$m>CYxKTAEk+7YMvnOn-Xtq=d5~>XQN!>DK{I%ST4c0jAM#cd=1Zngml>_v zh6}hh-F)=N`M2JF8p?iW=7)jXy#Fuex@W2QQe%HScYgevb~T`mKG`2uvX+mF6uv-T zmf2$$9>fH^NUj;TMebRzJ$UQpH~pKB-JB$mRa17l_CK7Jqs6=t3dvl~4Mo0}7Y5!3 z8eRhb{y6r-#|aLRTos`#4Q>;r@p`V)&SKte7dyK<2#Ldk-v++>gHoh?PTFRPrtm8c zNsY6_4OjUp^080o)W#*TgUk~-s$~H0it$t>JbIySji|(NYjCqQJ8!H+J3mfAuhwaP zhc?ZtY$1d(K-4*)(Z2EAr6(I#=;(FLa@<|)u-Lb7Q-RI-zJHrA>}!@ER&`8TmynKB zym?%bDe@2gtml0&dfYNP1GnFT!|z8QK24E^fAI62_c8ZCJ>NnQWdIIo_akh==YC%% z9Xd$M#SSWe>&uCm=cKr#XYaM(3jgugEK0U1>r$0t(zqbrtbdDFP#e-)n{SF|Y8t`2 z@;WP8;r!&lSl%I+I_@iT`Bv3bnSR63Lg+_ap@eF0*ljns3NqAk6btjPxyIko?tEX2 zux~gHn4E)0-cCU+tfTL-+eLe4F_^Ejhil3PgXGPXJ8iPu$w_1{2?@B?cwPyftYsjS z1JhR&duzQ<52tIL?}ooRwn^7?hSwK0$MK5K1=)$ySvH)FSb1D<8$M$CJ0l&RJbKa- zSt@mGb$?#poU2qN|L8Q<>d?QWVn}wU@zRG*J!!Jaw(k6JN-e|eGwgEDvA*43Ed4Ln zCdyYo++}vVI9@HOp7Gcx|8X#;i(p;Zg-3`w(=ktx_-Tsg1v`AFW|a)bX+$8;_kp{i z(LHn6hMvwHoUtFe%jsK~Jvu1@3+s2g_s!bP=~U1!8rHe=!TiPP&T8V6eWM_mNJd7a z&`IrP@h>I64?m_|rVchnLzQeRM>R=2SnB_ZlEGtI!4>%X!mI!1`|FD)y!-kNZ3Gif zCVRPOd)Ni~rFMsxKK5McCwCrE@#0d?_EN(0>_+derO#6Bj+Mb=F6lQPYR^HHS~XyZ z+`o*{6!^;d$oy@|kHe6XvFxY;8SdmaU#CqM+^hABaEfu$HYWUhX z>~YJ7_g*w!oLGOE+v^wZCr-F(_A!zisyhL*^f7|0Ht|SzL^9*;i`S^R5j7>#`m|zd zvck%-m&jmb4y^6TBXB*MtEAZA*mFH7( z%BKcL%JJ8r&=(QDJVT+Jh83i21>~_LH;;6u9W_RC;htV01{yM$`$aYrj3W>)%6!X+ z)nsy36eSjGR#O)R&uo7e>xJvFs=wj+KIGl9D26NOH1Ge2=9MU-syS$Y-1p1@mXq49 zC7Z){@52f6#gU_U4?I%R%okjFQe^HX{sfw@ZzW)th3PD;k_gK zvTG{cGyQ{jNynRmvm0?v9;PQm|iDpDDrN904^$LO6%N;E0n6ydT>gjd^90h^gy)&(d zJNVZwR9(F{@^W%x21^M>mPS~Tk2<~oO?RX!6;W(owki)g53W&UM+Ph2d7fTn!|*YK zB`d~-+__kpXWjnfS_3l|ffxlwo^D%*ljgIE0nw3!X7Q&+-AEiH%h}d&4sLkw5tjFA z*vnl#L<7T}%FOa$Ooj<@XZi~{#g0(S4kK}Ul5Y)~eGryv2G6sR zI9)p#T>9|3p*wLAWvglPY|+%G9{X#hQ+9QzEe`z0$VKXat{{n9d1CYOFD4^VbiW4U z8z@p~i;kWJYtFkXksvKAW8GVPPPaN{VcpT=aH>kYE;e%2eZ@ZUMeD5)!%kjiT=!)0 z!g9+G$q*uP57h-Gjb^IQ-|V?3H;)saU41!%6Y^V&;XL^H>D&N9EU!#q#B#IHPqr@- zp(k_Q@d3+vuYlIuU-BL*kL9Je>)%+GA@)0xjg&m@roU%4Q(iP#u-wmsn{ELErl7ZqGTq6UG_e@R-H)I>KHnaj*lSk+V zuNk=s$xmB^S6L2c?}n~&t?gU3YyQKcFP8~dB_TFcrk0;J@=_lnH4+FJ>L3lzsWo zugk9U6NR6#vwhhEo8dea<5rKK@2*C#?ndU{zwZC>7Iywg@A?NopT+arj0LhBf4pOR zX*lheURJD)&RsLUHW z<+1+@mh->nLI3@U|9*u3PdxcQe|>M#c+6+ax)?@RevNXz@LV^h1HEs`%$4xEZ# zx^iv0?jIT@1IG>AAOrxnqYO1`z|%j2a*dxGXa9mDNT*ESM4S9-XC-?{4WHIhjB#u37=ljE} zX*Fx(+pUL2Fi7s1{KhAc4rAieGY$`Cg04Z4gc;}J6n_=Q>A_2F*?=i>{I8ROv zw*Xe1?wZ){>;D4)88i|7PZx$<>y2N$cDs&!WwL-8<()}c48#h_w8vhK zS$&)Z+7msK_syMPx;_SDc+dp&x(&b4II5g`>x z2ECnfS{_K@)2r3nwVSur$<3lKlt2qqaf zI!K~-db07S9s31=IbVzX4K#hLdNvjD1F1n|y_)9h1BjPaKH=|x7_KvL3u$MzWcB;q zT{Ouyy8t{oe1nTX>G(4Chhtb?ZAERdBeD@lKTFNhgD7SpF_t4dC4tXM%z2Vk>*}BR zck0>iW-I4v44zEA{)m0DzpgeV<(8*gZCB59mxlFzz|sfxN98gEmV@ax1(hX~0Jc`c zg8bERx~=Qv&wDWquf=UWklcsvrUKXgFhDP`)A~Utlo2+cPUdxv$P*Of-d!$;XUye3-pPnt#`GSnY zO1OMF(p8y$*Vt;qglqlsmsX0<+258SycnX}2K!AIhFrc~ln4~=OR+}T5>3ws+s548)I z>)0ke32XqRoeo*1^$QBiWYM4L^tYR?HN7kby`nNjT}Q&n(*PKu98;zGnJe7p?k+vZ z>*r~1st>~XiJV}$A1ocKY=dBQG;SO@4J*j21e?!Ppi$=1e5>+z1FX&8FRhDMCyG?= zW%?#4oUo`-C1k2rt^c2LeTmptS!^-^w7iKEz2g5!KliUzYf`t4y{g2?zn$4i>))`n zkigq;4~DAk4cf1wg~DGfjRMlnARpHP@GkcJx1Hv-D?|6{?Hu|mKsjU(zQ115c(E~B z@Ea5p0jLK@Jy1`VdE*%RZB(Zfg^rhi&@o-gcSMk)MNS2-3AA!Sho=fOe;qWB{Z7ir zv%@L-wi#IkIVIA4Y~4gKt9|YE7HAK{q7E=Viv?y?L|33&%^rTm1Ju#%Qzjg z8c>EqeVS;OCuTGGoHj<*VNqr)Xe}1N+Ay~zr>e5@O4X-b=y|Q`4hwp$!Q0a#bQ?At zEWw<$EFjM#hj|2AuS(Ylhc=+?zy@#(DUPO(EmOz|eo=Cm3`$!op3;CW*ac5gYu2-q zt@vqQH~Zazy~h#Wq*?UR_FK~}U09u<8u9jW4ByDR2G^kv7`ZP+BGTbvyHf)j9Bc%i z4|#o4FJvUpUP)Qw|F>Z9KLLqZ-A{@`OK4CgR+{Sf`szUWi)omLhfT)s@(j1uWs46y z27(`GUj*%O2%u>r=)wdv69pv==uXRFJ!TWFz?BI0O?P9WJMnXq+xCmSUYYyYz&<^o z=DV{(sbKOa z;p4~dtFTE}VW|X|fW7f_P{frb*Q&h7aE~?$gM>P@K*EgYR z)<(e=VE0738$*%iO4%*~C21g$q~uORyGVs4$x3~;X>f^F+g-sgf||gXxdfYZymSs~ zQBP{7DCx&LfMkp`WM=s|A9Aj>~iFx!dDq4oZ; z7PQ=RD8KC;jK$xLEY!!KJV1Nr7BZW_z-8z2TMTRwZLe{Vs^%<@#dT6&1OU zf!XKAGu5u8lf2%u|H|}&oC_CP9X|lCy#)HbJ}6FHBTp6gpwFi|v=gEM(+mmGm2wa0 zyskSlg7{WSBe&7GgHL$0#Gr9}OTyI?id3jRDL9IohLe^#y&WE{8>TgD-f7NbI*W^- z7qrHs`}RYom*2j@tuvpugJJs|>C zF;`d;3oh7-KQoV9;yy$IBony%?Ar^jiSMPiaLGt6m)Z8(uV;51UB@#|byuF8Xx%3? zo9_iJ_w<3>GZizT#M=hFTHj39)%tOz)W5%M0Dl4yvHxhZYiTCfM86ulPs|zrzH_%2 z&c>D#S1~W!EUvS&5KVf`W!hT`g8XMbN3OX8DCcb$v|rvd0}g8YsHN{tou;5;kG~!# z2*#SLKGAO4$ZxTAE*!yWVL zuGIhN<9zFx16RhU62sBvP6t}}>!MAQFB~~s0hjCm46*Qo!XSUayoua^*=|?$PvG3g!=SD&RyjL*H?v``(#$-#$wu`l=KIQ4>rhBv8`69?kR0o3@bwE z?}@;xp9j#sa`odon`?2@jreE~_h)RPJ*1fBwtw?a(Jf#n4u7JpIP1KYf_}n>OQ{$L~q806Ki><6!_D#P83ctPQsh@++X`Vy4-lW%}<1Z zP;O6n(vfUa8Ay|PCv_GeAp0QQUH_zO9cjqpczq9gp|A48v~3@~a8cm05{3#*C1ehyTfty7FaA-Bb$I3ezTYbngZqJUy0u=6`Ad{;U*}ni3 z+xk`6vXe+L0}VdV3&|w?6$ljSb`|J(Ym=kWA{2e8k5hv+wFBO0C{vZTil9LH&Cl4! z(UDHJ&wlI=0i_^gDhc3UE3F^7y&yE)=zB>t+oCV>t-S+4FHcGn2c7nHhsT@1ER3ow z^ZY~ZZzAP%=AtMIHD2l-|7+D*m}`W_U;cdJg-r}7<)LrT=B%h;%U}ojY!^jfDHD+e z#}$^wv$t{n@@d8qyyL=q(OH6Rwaben#ujOBp9GWV_@H1dsw{p76wUjrE#MNqDzUYH zR?+VuBDKN@hXEr8I$`-Oc+R0R9o5S1<7++UWBO)E#CG2)I;7imx4$pqj9vN2I`Ye{ ztjCJNqO6!1hZd+NL6J%bN`ZS?Tx59@tk1`?dJX=MlV{{@!HW&`ucEh1nuy`-&ZX#x zlCq5GZ{^~hCvd$^P-TpqIvqJs|#9aa%ZFC1yA>a<>3Qa{)Lw+P3-p)o-Lpt$&#tCPye ztkQV%ysS8*59+!JM?k(5@RFI6ZIUwOtL&P{$X35B-V+ole>m_gq@;}VS6J8E*6zM2 zN^IkK9p_Pv#4RXGkql&)LO@%btfNRBWGtig-!$DsQPxKj)pc{_M1!X0xDtPxZ+{HYyQ*R_|e37aV|HHc0%)|y0k|+Cif>l zqEP6jkw$}^dsdsps$2qIAMvYYLFgXdDx4q>YeT}J5In!DiRLaFg6>Atm$&~c?DTxXp-yMH; z9iAW+A`2;H;??ug9Ix#U%4>FE(dj+07s!t-dIA~@vuOmFZMkP*rlZx!{e3J0d?GC4 z4=54at+I%l2xY^}tQU@!ZdZHLjsgOB@B;N1$)6%v|Kca7*?b>wOdd7oeTnZJXWBvF za(cEdJ@ReW-nhpOoa>BV0UZ-pbo|Q>G*9rZ0jp39!k0JjQQC!F8AxoBTZ^AJp!9!LZ+rQ` zpQnMS!$QpPaf8zW+nne;e#6imv zhnzb_ONGLNx|mS*m*o~@sFKp?5ZM6c#k7js{U<#r8|{zWfV>ELZ_JQiYm z#AWIJXyJ4H7^ezsvEfmZa{5ygW}WHbRK;1aoK9WXioQ!`2vdXdQH_n)Cvw(qlg5C= zT!W#vS0Zt5Kaq?t^UVn0mq@snd$zkKU5pZR@*6CQJC~D7L(b zM$rO{M z6kgSL)**{cwUFHtIP_0@+f7gL&oOsckw2Wa98+=3KvUo4Yr2D!>9@5}WW{`XaYc3! zy}8<;h4nh&xrFcw<8NG^Jy+Sc{g4%)?sYbX{}9}~L7ya=Qf4hm3ewWCkJE1H#;QLq znLxt*G#i0rBL)B5c2_h0p@a`e_k|~$cl%8Y(KX*xX^2hTso8ZfCb&_VMTd{Xed+UY z^lQr%R*y<+5w2$Cn!-f#l0%JTn>UMyK(bm8-^y3>g45g=vvhPwGGwK+qX0Ksj9Ft*BUjEki zw0*{m)o})x20|(suE8IooLvq#My-u>3DM*cJnM&n(d((>Hs!r>+D3PxBGSoeuoZqI z@x=oI6Xwr2S34(waaL5#U?x?Uo)ed75B%_Soyn~?8a z|2Rm68!rK4HV~MK)^h^-lPRIINS|l=ja%sN&+E@f%R5$HOQ(KXCWc^8oSWa*M790X z4%r@1%TP`5T6^M_6GU<}RB&I@eewK!-ntp>6!kRYRCk{#Uy5yFfbBBbmzrKeNqZe1>R(fucb`J zN>r!%mRff)`k`lX;H(aw>Z%)NC%+SlaJx14>*ldm9!(*zAH%1gO(7~J_<7$`s3ApDkYfZm`cK`z?g_RxN4e1)81E? z-ep&hYIm^0eH3$%TC8Z30Sx9X@GGiQZQf_n7aCPWrP`5d>31kKr3)8HK+c^{n;njA zi2i2A!FBO?uIa;Bb+i;po^K=5gl@hsAV}w7Z1GR!Usj0FJy0xWfyONM6O>`vi!(n; zxtLkvL~Z(;OO2dOTzA(Ii+rhJc|WIP1JvDT-OpS^H=Z1)HJWuy4H?!U6On>pzJpis zeNpj<#zYU#G3H#W*m)Lnoue%-^h6gU-O56~El0DG`3~9odDn1$L5sP1R%lfht!us$(@iB2rB+J(Avfo*5{3nDfdeXMK)&f9eFT&Msb| zL#1Cc{de`D&~Ap|`EL%8M2UY`p8bzMwm#cMVdhq|g`B`>mY9fbFl*`X(mQ!ndVs+q zfm==xLM%|#+ju;;k3zcr#u~GsTZCY~*A!Rk2kA8Y=#-d(rZ6%=zEpg^y&iV<6q#A} zbuOcJ3yQL87GQMCQfoT;-B;}Gpz4Nm76yIB)BFX_f-tBAvBGVcJywQ2))wHSb~*g;(La|@QsI3^@REv zf{V0cuWq|Glt}HN{2=W621rs00N#Ue?XrP~Oa%Wn&*ZZyC}r?vJ7&>}5C~=yrgW_R73VRGE>;gFMkQ*t`2{~(( znV)u@{n1BlKG|{;?Xxup_(}#*Q{};1whvblD(5eg}!n zaIn^6A(-|k#EaMwKxbjd_(YQ|KP>Qa&OK0w&8@?fN~g<}K!oM#V~Et@6WWC**j}VF zS!*cxEg+F5^k@1xd=7Pd)PxQ}DfATda3w!`Sfnhnp08jlcmMZzQT2>0X&mqR%n#2& z40MFf?8zk-c_U!!GM#hKX50h1%9{ImS4mu=hwRCPea?Vgv~-)N>QLA$J1n-FmiWN! zO^lhSR)|`?@&gwqq{I`Ruo%&UZknpAzTD%lKMuu@8Tfi%v^$?bxGkEcLZ{Yg{Vj;! zAnkshUW7sux|2yq4gvu}xl8%t_qZ5bTbp3PdP9Qneu+~e${DQ}^YhxT z2zvd7{n7xqLzVlBX`GH*aEduNX!YH*EDc9bg;BFUr{SHsj=|&qf|yp`t8zj@~@ z`xx`o3VbB@ztF8v^t*JY_@~7Ett7{gnoqpO2yWyfT6}bt{EQnd+w|PR1x?(9i`-G} z#kcomxNj>$3u3<2K?qBy=R12mi(VytIle}>G%W+?@>=>IZG>HbHFu@GskZ}di9CmfeT}VB>w9V48q=PWegz^ zRxj&^)6 zleOUC%_xrtPE_i9tW!tuX0f-MnT57@+_(`esX*1YHFguprGAS(9t$s9QhysZC9Z&9X8~g0khmdWBArNPAej4D9{v zr3ovK{C+@19YenS4~_OgMtwK)zqyaN?c9F_K6AjHE$ySEYXXc(eU30?(6Dc!eTjUop6nsEcl8S%XMgXv>xRaI^{^(n@&!=;r+F0_F_v(U2wc zYdTLb;~TF;Uxc3#-!|eB)D^fzUM_oQ)u2kqG#T@`ZZ!8d%Y}M2t=2WzVZ_3Uex*ct z^|Nk^;bp$e>Cq?&)@rJ! zooet2*YG?w1LZ`r>y&M^^84p<;tuA5Z}6$bEfAmZks(xyx$!n43AzjhnO0ad-yBu{ zOq7;aQSo;EZtF0iF2Dcrj>BO97NIJKx62*XFeHxu3U2R`c8OuxuV>}*4^61F3J1S& zirqBwuf-=6e_Z-|@Dr66SchboQYlF6V;c6##!rk?m9fRjb$sz3EQ$?SDbgO<&}`^P z*aum2u4uI$hV*w7$w;@o7OivH(sy4b*l<7@%)AJAATMsN+JqmK&&^ahqKZ(y$t3u~ zfuwKd9wzEOZsUE<+ZU>s>uqyQi8qfUJG`!H1f1kX?sNRK_c=D&-YK2tK0&{Fiwg2srmzh<9p??tce1SwH6zx zo;a8Oot5hi=p6&|MBqEuEj#aoSHuvZ@fe zaUVR?!b$y)?SqrJ?G?*R!q+BcwQPB{edsk`T4pJ0(KE2{OXCanz4^nypvR|(S@y7_!ykPzt!>?*^0p5m@r(-qL`T`g*YCp zJ1x5Bmx}9Oq@W7Qk)5u31kT2>A_al9SU=bSZa+U|-&3M2Ueh(|lZ?qNwAI#KXV`Og zW|nZ5Fi#xxB%rx9tEyhR#!u;#d-k>!)Bg&?o&z7pI$vh>dkl$=OnOE@9JUy@6du^*k)0*11`uhk0T&5ckUl8dfQc;)YDUEX3+ zJ7XAqo?*m%N^bS&Ma_r)D`N|!d$*OBImJ~U~9@jpXyT2hi zd+nx>HA}gUj+~*9^7>tW(I`PYDH}qp`A_$%&1_WtM9bfaq!yM$GZ3)5w_tPsO%VBL zQ~&&?Wy)+TLx%AO=hm;ddbf}vF$}dR?T=0kX7(AK&%ge>pD+^+Z!G1$s}KQWF_s&< zbkn_lpej-dOW55H9SeS}lFkAFWClAgdx3@0%u1&FMYJ^1vs?yJwJHr= z${~7RfD0EN1D;e>GF;$LZEl^TlQq9*&Es;1?f&GmXrF6rv3JL|F2PqAxYBi!xgL+u z>|8PX`bom9XC9>bdA8}N_1#}7^cn#sKh&_Cl#(#sGQB51a!q^7DeyB$~@m&q3Aw)hoNOp*mU8NX}%E?&VDTwFgPWkcMbVyK2ns8XV=_+H3h?27hC})Q-0sKQczEqfVtiOncZ!J#}4LYzUlTtFCkNCqN4NhDN+m13%SajI4w_dTaGS_MC?rO4xYf3UL zVm-3$eu|uz_j~Xlrz;2zyHe5^T_hSlhc_FGrZpAve0|s*$IOMi|06O1va_j2oC;Yik6D1}ml(dgj?!&k+>0F~N^$bM9glFs#a|v| z*Ylm;=e58OuUj7FNmt=@S$~dKvRBU0YvmOzW@pRd-|YSZ;Zn(@;_{P4W5;1LHzcps zN0BmqgW|^=Ck}DxkkwR{Io)l%lAfgC&JUA-i}kMG!g~FW+1JV_F^euzI^Wg(*F722 z5M_eum8H*iT%!Tg$#Ch}%n=Ks6tHeTaM5eDxlQilw_366StSm&Nt4vMBHhMJKG`KJ zD%|O1w0f#9BMKobNP1ZB%Kl&JuSN&NsUQK>e588_8I+ig8JZX9@C}d&qI?*SNJY#}|N2>;gp97d%+Rn?Y)_RTg&T3E#{dBi0!^7%gmB61Pf z-D+hFO|AkVwWrWi@Lk z{j-kA&x?3 zhPyErkKKEycDn4$n^k|ikSCq>um?WlKec+*)kEd{;w{&T=rQrn7?l-8+T|Vb=I$P5 z&0ncX=ZtmLj5{VD3dJ7!9mofjJMe0@{mQ@hf+TQZdAa)!OU@bTyKej_O#9odJ$UXY zBh?-)4vMOz{JsHg9d6=&X%g_{^6nOVHa zzNn`StK6^>kMN%R3PU*wqw>r!_vsL~De-Yj@8G!W7E<`QcWbch) z9O~lG#{RjI9X7e`q`I0St(`a_(Yin#`3N#OB^UR#SO{v}TqT<6>Spi?xC@fCmT_K4 zFw|4rGw6OpF-@dSrlUPn->zxds!d$oPcv0f!uRj{;QJ|!%xe+~y z;boXt|7y{s2jPa8K`38wN$g6y;V6s#`IvZy`gF(oujhAf9b&FX7pLPsk{ zA2WO>lnHk|qH`oCqUmfrwq9H=G0}wAC*g|uBskam-aV(Xd#Xsi!ZSCKi%GjHcpIuy zqoEu1crrew?Uj19_U8Xg8IlB}Lg#Lq?!@DftG~tg`jlYiUeF{r1{L4aAljLh9&#`t z4(d8bOyc%=NTnodi6@xy1WV1^^A!^7WLteVy?zm)#VqN;ezG$1Wrc-EqfDYVzrJJy^Az&=%z@^r>Tj_WZpu8B#M6O$Pbmsa1{pGD_ku`huYu72P6Nd7GT(J5%mQUGKga0pRE`N-|6M3U7vQfj^RO~ zvC#a!QF!viuZ~w(*~-7q-)`hI6JK+1dwuWS_WcjBal2@XIJPnOuCRhk+N^j{f^>Rl z(gP(&8hwJo9zE*j%<0N>>)*vBSJvOr-VCB@NO4PlPH5z>>5}2L45_-J;5h9i2mD@Ah{+pS;bSKB&vNJ>C{UQOe)ld`Jd~*^I>N zUwNp*3&~n5HR|n%$Q-X_@x7k#nC*DDY4?1y%~mpt!#L!^Wd;4h3mIg5_*D^!q-#yBd9i`89_;8eU%_*iVtP0D1-U(A zx*gCgORQ2%4r3&9Z=)mD{&xY|{w>WP3{eJIx+a-IKx;c;8tGT(KOm+(Q0$vE1@%3O) zdXwNTMB^vZ`{*oTX8BCZRbgtN^-Ey`$&BaF0J;H8wER_&Tps zYu5ee3eC*<=OR2B{bkpu^lG;j|@({BbzCPG1p zIw<7LfI9uO4SEvZvhU3qqWh&2Ut*L*;ebh}53cyHAg{bV7kvqfJ3}uKzvCoz!p(&( ztUlRs4aUvie%07rll^RRq~eJM?bu>p2I6lrg3v6XDQQ=|@3c@__VaK1|J4Z||3ybw z{`Zb2`R|+i@3Fl9a!Ks}AD4EnL_)egbW`*U2&4p%ze{G}yb?GigwO8J_a~NR$q)J*%2>&^KLXQ}3p^=X3s!6m`*ix>HIC*=no&utxBdvj zfY>doKb-16EMZWCDC4&8?* zy-!7BX~k;RlYq9JgK1N5k7}M@WCPK{0vAy_$*RJB_5yrPYz>WNk72X~^Yhgw4o<|O z69kn5^Yh>Su!KV;s_wo@!c-7G-v>Y>k(+8YmW&?C2@ujyS4{#Ci2_vazmaFg#b!<^ z8FpLsy2V(bj&k$(KXR|XP0E6!J=wsR{3I=aDS%5i{pi)3rmr7B4?Y7riJsYMp?Wg+K^JWxAu6%k%;iF{PM3B6*%1zBT9R}Bs2O_op?HTTS zE5Po~A#ryBCifRuN0-O_z723t2xQ85IIe`OH(s9afZia;aSKczvAy)6i$4KP=&e%{c_(kZLCapZ7hq(lGnJp$U2A6)W&Kan-`10nWob(;W@f zO6y(p5l-O+A|3C&OWPiXMnd#kPH6%xA5VzF^uR0#1f@lD^I^t|4d3VZ48~nRw|ktk|lI@De$C zEz)tL=SU`i_rjzL{2!PLaDX#MHm0iWm7AsCDG41@!HGp>c|fxeDD+t-Vu;!bnASpD z-~t!$6nUO^xMg**f~Df6{|zvL4|wJ3?x4|jD(7DP0qIy+A?N5(Nthag@vxx@j`fO# zuOijAOMJk@hWs>^{}>5gu>E&9hsT|S{j(&d7>2wbJ$P?ZBX_O7C|Nmj|9K^NmM62&_ zU38`m{06CDebUZ$B7`&C0+dYCrcI(1K>FA^Vn8(w^+IMsV(%O1 zI_Q&l3Yi-|EE|1*j7bLs9*7O7r?urZr3L2Wy7Zy$NDy`;dBJwpS%Opm9L{8S9KVL~ znhS=i5|4Hu#L?LZOMMZxc1L3mmUV#nW8+}lBYr4_g&wH})d=NBG%Rkhsq_!yIA2vf zo8U6lVDB$vOZSB|g^6Q1r+W+dzg=483=1V9$F(3}KCMztm;{NZ1z#Gk!3hp9TI6Zs z*U~n;i9=QxMrasw}popy&yT$${8ZrUGr!W9{Uf=={bu0rMXr z3&&rDuX)tPbVAMEn}h4ndjz+flDhu+?3=oHrOg$@thp<7Fv<3}hd$>^vr2^769uf@ z50lDtUz|>06AkSLdH+PYDZWvDL+|dO3ey1ik$E}F3yFd6uVbL|Psl{|VYk>!I-*g& z{Q_SUP>StZ;w>OyVfxcvfq@@6arN(%Ty->683BcmBeH;h;o+!-ia@qS4>MlHc` zUMJCOgGo3JNDR@`CU+*6^#niPhN3z@&#`n9x@8PWSkVer-BT6O8y$8wV~$=zig71I zzQ@uRM@Fd?@@$=e+8dYswE+4jd`q2zOaLbFkS(FpQ4Kd&P0>D!2N zVG#Rk5S=Pn%9Y((K+OeFMm#}iyHv4EIiO?b!j7hDyKb=>niTKgmhKKwT{`=5O3{;j z(n04M5_NS&(rE}-aOQISbBJpmM37`{MZ4Bd(nJ31~p>*1r@gCDLw*|fOA~fXNrC+nY zE2L~z(#+E`XFi`32fF3dRY*` zWDSbpy!D=?C_w`6>MU4-rN|zJf(1BA$FMln=fv_Fqdps3043+MNz)2#8QlomloYZ6P)(1WFF;TzsH42m;9VQ-qZo9k7GT8m=l2})J-^irj3vzh~Wy&D6 z+x|wR|D%<2|7UuSLs%q`dCejRZ_G7`FAa^J-`6v|ygamWLeB9luab0;yzE-ob{ zA*W>KGC~wO$c*Mvxuhg=KKldCZ|B$jw(sM+y>HLgb5T#FeyP--whN~mL&7uq2x7#u&(0c%~gHNm+r`}ZAf3Q65J=(7$JI zrXp4`_T-XapF2oLZkAs^qn^?YYudj#mt&2m9d0(;m1&jENpFoQNTRo9zY5U49ys*(_L{H~wDZvC>+}<-zv;{q-$^*~@;9u^Cn*iwI5L zmfMO{ZF^L;k*YZWw!N$2;MXk@g(%5BC(gK)F8R83Bwim>QLz0@agerJ|b3)qpPg7u)(+!`kKbHpWB?!l>td$W&D{9+# zGKKA`DP@Xv>uv8ah4mK{yKA9n!6ojm?#kaWpEU;B@?jkC&PvtH?wEA%LH9( z#90b0S{}X_DP5t=l}UHg#kGFJ-LZm3l|%7I5bjeTLNC%4h$!Ab{$uFEG*mo)e=%nH z58z@dC=i4-nTx&{YtzbXv|>O>?s7HMClN(KMM=`9B$*hYGh#w4WSEeNtQ#wlK3c-f z2)D6}Ip`fNag3Fi36^RCIGvGSe(k8=)OD%z2$h+*bcufb@2ABYjWO)Y$b)=ZS3$F` z_=z_2R{vuo!qQn9HRbeBRO!$Ng}X0MoHN#KOv{Sstj4_FmodOsj#^7d${KdMjUNmU zJ6wyX+=R0=R+EwPo{H(?qPQ^nNScpa3un9)B;PesRA*nRtRHGkWJ5_`>@OIFQ$4Eu zb~u!m^?l5Rlfj;Td1S7hT-~f_@_tug{5k&5ogPXxt5~;qrpKRui1pcN-yj4Z$z}ew zUTo-LKf9L(-VmjdTc53}A8pv*Y!X|Qm_{n4=fkGEQ+@9eWAphgG2VIA+^X^);Dv7< zP}n&tP63x`XB*W#5Z}}W`D^P`8Cj^f02jYq2);3LamZJ#`Z_=tEKx(A%B4R~?QqG0@20 zo$B{Ne(}jIogW6D#?h!9cMJjgUnp}K36e=O|kayhtr)VHFd`1yK83>uYqf( znc$zB5-C`Acl^+Lu0@N58SC99&BLJYLS3Qh+l9WPZ3AV$B960{sLzwrYzlOHh#Rt_ z3Ojb95=a$oa`LJ(blwSYt&P)cyoObQeN1 zo;u<@0Lv8p0uim(q2%gnW{?*MZtVT*2G$ zs6)iCy*8e{ri>!O+%%d6qyhChGLdi=Mq3~iJXh1V^x6sY%T@Dvs$qv)1he6*=1;(f zAxW?E(H0xI|g$Z(5FJCSAn*VJr z$@O;EBuFd6fpiXPV5WIE@EFVRHOS2Z5sHDS7vV6DYT^ylVE{mW-X$N}S;KY2wT)!} zIBW|{2JmP@d=KhMFSv0_fw4#NSddejegWB*3}me%g}g5u?`2q%Q0zSapd2*KIgHAN zb6I^i?25P9c>^>L9?k1(gfl_J(^TTQBmw2va%9;_9@OWJCaltt7^!z{aqFP}%mQv> zFq}<;KAES8H5`YRJk|(_-e5Yyek{Ge0)#eT|B!Z&nr~d>41&fWsk;O&@f4R*fYc5@ zkNUK1Ywl`u?CcLME$S=gf+kJ*KW)nY$GVccy9WZ<-PM4=9f2{LpV#j3K?+&*&X;?A Qd7nV+5iU0MRu_~01@txEUH||9 literal 22764 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 XX7Pf4YfWb_a7PY{c6F>q`6d4kL%D+^ diff --git a/docs/review/dev-desktop.png b/docs/review/dev-desktop.png index f7c185c2c39fd35e481311b14235b0a402dfd60d..12077138decbaeb4b9719061e824a918e4535178 100644 GIT binary patch literal 121579 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 M^2wu_ie}#b2U^@CApigX literal 121225 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

      n24tzDJ1XSwLm7vSB)=Z$$MM;jDOi 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 diff --git a/docs/review/dev-mobile.png b/docs/review/dev-mobile.png index 37d5b152b19013b8fe9a5cc3e852b8edac938525..e2a4e921826de08235986cf803699e6e1f2f72e5 100644 GIT binary patch literal 100858 zcmeFZbyQX1`!6Wn(v5V3gtT;XNI?{kE>Y=_mhO=5lCnSvk&x~bB$Sj!P#Po!&OChQ z{_Y=hXU&@V3kbR-fgMh7PBnCZK3Q+MP6AX z9*1kFOQ-VRe+}VCwkG?MK{jBuFNu^xJNJt4@}0k$UWr=Lx$Ib}Mh4gY*MEPH=itfX zHY*N{7ON7{OL?E}S$?rj=QYy%rT|<;B?e}A*{{9>7TX#L8!iTbi#(k-U9t$I) za8Hvl?HcVT`7Ur|!mc8%;*%MP1Sp8^N4;`e8wfWRMTFp9L49v&&*zaGs=>na^5U^sR}vLHrVG z_Z=5nn$?n+-|3a!Q7>}+HIzj_E4n(Ek+2kv5Y}(Ypy(R%j!+24rDj7+)jSJ_Xn2 z1Jw!5nu45Y?0zKzT{x_TwGGW?C{x#cn3CvVtoP-u*t1V;FI)om-Iu#?+zd(-3a4hv{nDadUg@g1{@E1bXS0^wQ6UbA+Fc)jSzp{{5zaU6uUnRpiZEcfI#4 z{$?j&lJ6PU4PDpM_Nz zdljGC#%ILE;rVL+a(Ar#A58kjW)9W<@sih(ehl1U;8b=DwfBn?4oUb(-p!$LNM^QCSUwJzPvabxxS^Z z-|7~tyg2#k)xNn9@NXNQG-mn5cHM&K&Rjogfh@B3wN{SD6N{z=)BaY}uccr6l30Fo zunQX1yD-^ByNgA9h3C55l1W7@gi>MN+Tyi4&pNQSS?{`XezKd8xXKekC*|#uD%)b( z;I{VbYfk87g<(~Qzh;~IFmuGpq

      i0gE<^1iOM4wXQ2Y<}Z%Y8fut+X0vIeKRGsO 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

      3lT|RzRsG9_&G{PAYrXB!){rI=%`YhO?et%**ca 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 literal 100514 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

      6NhK7({_RCB>W{k*5l;Ke=yfMB%(i_Wa7U@ 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 literal 42277 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 EFQI?y#{d8T diff --git a/docs/review/request-mobile.png b/docs/review/request-mobile.png index e976cdd2574f938cc48f2805232e7c3bb5310664..a9d8dd4f2a4e99722e2da3631c27f1713387c13b 100644 GIT binary patch literal 34013 zcmeFZbyU^;_b+JB9U=|VAPsV8kOl#1r5gchK|)F?>6Q)&K?UhfX%J~qx>HF(I%c2W z%4$OvS_47eA5kCmJ_9)(e{nQiVNaGNgbcV81j6u$X|AQC% z9D{l{wq_eWew7%VA8m_zqBP4>gmLIqSV~Hl7}oz??N1iyWi-sJJ;fS zKA0(L`wSKP?suAdc2B%;*j!Kc%uL$wsf5Zbdhm!&57rBB9jp!5#fMfYSw7^6LpaWa zVm_=@Ym|u zL5;mUW4z2;JWhj}V(m|wb>ErI6w_tpZ?HrUHW}8xkY|h_VSke0xfB*g*_D6@bHl$& z>=K)xCNUYhQt@K-TdrILbMLEB#m|cK1QzY@5_qUdd9=yBOz#ab-mp!87cZE*EjwKT z-V2qpB-~gT3vYSQ|(`-ks0pw|-14X(nQhw^l)97;U&ov~+RN+J42NRS2`P;6kTNKcRCV+KkT>^?3Fo5A&%b-1@NS zzSvgZe!+3hdMd*^#F9$|s{YrP$6J$?m#u$(m0mBtrM+l{i<`=8As>0`V#==6_jEOR zvERgJzsq*4AeiIgbUjf_OW(yK=gap#-hmsOAz=5jsI=t~D*3LLSOB3>gWKjrc^)A--d1n` zDt1A`WW&opS0~H(>0I#1Pyeo3L~b#sS!es!y!!WBHSGbfZC7_|o>QR0(R#K&mu}g6 z&;2Fq%$HB%=;bbS+*V3kug(fo(`mf7c+$z}9FMs+;qrt+Z z+B9b#mW~)N)=QW-@xQEgoNeglw?4VtEX*!O45SN|KKY{0+@{V(>$CS}|ML|Tn%BXA zU_A|dS3Y_RDM6YDnd8gjd3;I)$ApoQ$Lz~wBllF{xnZh+M{#ImWic%`cgDAC=UW`6 z5qMQE|2%Q~{kNa{xbgQ>V=q*N^>Fr*ucLY`KBopw&EubSik^>umXkF9%rB@h?&9_b z?%@pk2j%2~(UF2`yI*_-p55furu}X^GpVmm;g32sY%(L#CH*A=R9`0E*9lL1KG!6S zJ@0!w%cPuSip!;670Shw!db-pI3tvdR)<9k4q%qJcdoj2LlxWdn`FW~83m7jaNjA1 zLfT*SRKO3|j1{P=im)^w%ye*R#K=&4T-fv~7;$4=dkWiLR57}Inv3-uh{Mi6js?!@;xtf-=6x>9*8di zmDRt-6O>Q!6sW&8tZUgA(WVxvB1$9@^Jem)s2-^xxmcNSuW-?KT}mZ%c9do*z+5 z_;~UVJ8mg+)mwIk5^jyR_@8V9?6tnz@_y0whBbFIE(j z$})@syeb$_O;0mD=K5Ng5xEL!Hf;Wv|9(+>%$Q}5%fGUbEzEfF?PP!XG-6-zg0!0c zji5EQ*LL-E=PYiFts3l86RYjN#N9}J3e*NGk@t_YXKh9s}W zXojI06c`E}#zvOJ%uf=w2L$I;Oq93YUGPro4n{xl7JCf`kfQd+P5sJeQ3K9@SNiN9 z-eg5EzAt5BOB5;likSnzw$a+d|Q98pR(cDdiI+=ozlNN9mDPYEx#w( zzDIhQA}?8QbUo~6C2DRIekLUKgGIJQO>Dmtre(T&>bZ3dbQhptY~p_KVn?QIn5E}_JpSelWgL}_NI6MjiFFy{sj$MWrD=FPMkAj z!-#KPD(xtMcSS8-z zdo@;2&e5B_lls%KHvhQmLC3w^^s3p)Su(-)0`mB^bIgo^Hnw8AFpzC?RKp3&B^%JiwkAEB#9~voOpszEnE7brPgK6r+`UB z{6Tow_#~6p0&TFsNO~(nLpj=N^btqyS{1_VeXeSX@)5U)0}Dw_E#ZjJl4}rAn6s<@ zu+fCngQg||ofi=LJ~b|RK*nhdTJMbzwPReq%?d@7a{L6^aFR2Pyt znf6TOURWKst+X6R51R~MU3I7*k({}9#0JY7=WgfcKa0b(LY|+jsckv8#%;&a$%Imw ztr2_F60+-~*!rnSUb<0)aawFSXamC%YCd^Fmst$jTv)2vq4~bb2 z_u}ez&vpnK$cRu~dksd2NA{xdq)LeH8IK%ugov;?r;4Xrkj(x_ni7 zqX6{Iy{5jIg{Zq6x;#gHuEc4Qj`lv;vGD-!!l)_D)VnMli+wtYa76Tb`Q6PbNa;sk z>rAOPDdj&UV>79Irt17v&^4e#&NJfS(EeG{oBcWZL-d==!By~vEz5KFpnl6&vGIm9 z%$xSJ4J0m+y9!SteMI6)%sO9ngy8n2UTNfG+zy7h5PsgX83{k-L3C`SM~EGEUQz-7 z=2T%lWc*qC6Z8g(IJYOox^Z>CHvbvc^3+*5j*5WUu)b5S4sc-P4bC95 zMi{}YM~Nt*yc*+O5u|E18%FL4y+Xs!Ld8d(jqYKEh7zL53p&myMzW3Y=P3cgy}j;u zyfe$1NaGvME$Y7Y@ZDd)m!TT<&TxrtSNLE1og3Yt(7d`hwMg|=lwE?-5cSxZskVCx z=u-WnPO|3?rfouR86ZAu-~m-d_LCK6GCAs#F|lxvHMejiL|G)VEUy%Qg7sKxvHM9TJ0{&;~KYkX25dTT3akJOKS|B?9 z+A*v8`-g1-s8IyAa#M_>gV@|nJg*KnRMQdLbIqbY+nlvCFV-_XDCkCmp#Nk7Y5rnZ z&o?>+I1ye8N4^FONKVh-i@pGZtiA?^VSeVAnxwc%iw|1~{e;`75(_!JZ;RPQ<$?W# z^Ky5T!1EuhNcP8P6&lQK(n6&W29Eoem(-%}Zo6~hXI#*?jJKrdzdZvY1hR#Pa~}*^e#aRhhR*9; z&jbuBXyKmD=f}Ip$qPTtW~*$+m`Azztp_`MD{4qOT(3`u{D1%WL~OfU@4D{3Ig08u zXrfu?ya=3kQ}_j;ta}2+DsW>wEMl?C!!eB@+x{d@pfP_lTgHo?0wMgz5n1IskR~8` zu_trbYf=F+MOz>`CEYE>^v>(o8Z!B8bt~mPG=C<_EfS3|QW?0~m@aV9-nD+ zqn#KoD7FbFk|6mU12TuNqb4}xeEYMMXCn~fHeBOZn;+n|F<5fnTBnOq|0{Um#p-T( zyg{LJ$C+ozEyk7Qk26Xj5BJkt3gRZ5*G$4W&{zWAMQ3!als{vIpDpEInn zpUmBQxwp`U#PE{Wr}&SolL=6>dCa8M>w^>tPu=L5=e&2tO;RGQbrvrLoaTJGBgy03 z&2)g7PJSn4zDFFg5=rn01Q6ahac_5ebvo?pvp=OpB@MsfANZ+e(X9aMt;gXi$hgxH zH%T+dKJP6gF8_<9L;Ib?y5ft+D$!KJC5<}`(~gZ%p`)%t;({+$dT*oS1=$DEdVnlK z{PDhKekdWmK)&kIhAvbKFxOsPdo6|HWb1xRZ!IwleJFs{oJh=OA*{5O+M=h>`zP59UDGb4`ngtT35rp z;kD?7%Vx1YnAzyQ-LT(HnKvZM#dmv@dEX?7%SZ&y?vI8x$DEgt<5fGIObEddf|r=j#Rv{_RPQ0wwLj)5Gg8YM7$NwJ;`Qbh>i3b?`y?08 zKlB**#9xidUL=FehE|woSpEE+5`9~WNW)z|-h$o?#Q6yzy8eMnsj;1?^D|V}>YI1IUg{>mOz!xEgF`>RdoD!0Um}=X2-- z2Zuu7`Qc9kCjpz`uZ)>zH1eSg$S>q<7^D>HyfXG*1la+Zd*)WqCRj3@1B4N9uZflo zI_VP_8kIUbL9n7g*n3Vp)H=*HP3DI|6XD16gyV%Q5c$v_v9pYt>j2%TMchvQ{W6IX zTzv=%Oy~|Sa(0& zsYS_Ue4#Bc@L(L3O*6k&nY)>B4214|<~S^9u~`TQ3JIfdySxbr(DIaAgf$95mw1#S z>jp6NW%ymrM^zhe8d#r}81{Zn6R?w?Dgw!jPWf9hwXcd9%_64 zEY>4tR=KB-Y|BYaP}y-=m_j}$d#To0Vf-mDiJ(Gi?SAb9U~}~*ai$Z}qrsnvx~B;v zs}ZyeOnZf?wfglehI?{#_s54GViE@Y2M7%p{4aOoe;|+lUl-E<-}275E#}IvZtScjwzTnoox;!>XV6&ZV_y_l0%Mc{=7O25F zuk}ppEUyA39AGt{wF>dVwA94^{V8olNQYj_Nf=>mK?i}c=rC24D(nhxgO*ek2Ezx~ zLl1^a&|I^(iQnleh?J`!=c+I>ADp>KaD%Q8#*$?-2D3qd!x;WMD02tN1}jigpm61e z34)x99Q)SaQ(R_W{#xxzK>jW$zR79sv9kwvZO8nrazWF-GP(6oQFFS+A(_*l+hm1- za4Hf0v;vJ+Ck7q;J%>loaj<4Uw-Wb0V!VWbY2rE{&{hpc->AuRA3nJ2+IKyWiUILZ z=ad&YqX7+4$~A2ZSo}F04Y*-^!GFRtfQO1}N`p-IolzVWY17=Uy4ZwSs`3aA) z*i=3nXeRhy?4zSjxB5$paWNQ@!;$>F9y$cjj8!!J!GnI7T`)CV*HOZ*sEr&fkg!I_=Ojp#A>?#st&=C8IuIGs+8?IC=B06 zA`Cg^U+3-56cKpk>UT#|D=)z`mYv#a*Dg&%o%I3bSs|K=d?r$K5n4?p{q%dOz=ba_ zuTIy~6S)kTrONjb_nqdU?Ve%Jzxu;DWw5uyYn;IFLN=Xow!%ueF*f85QSVHJRYbFg zEuw}gr~_e1@*<++qeh;M^aOSOrLRW#0s?yX7gd0_eU7%N;@&l?$oWe*dG;Yw$c27@ zxejYNz{kD;j>^Rqh`PP%C%tQ+<$#jY9XlIy*TiwOY_-YjfX6gD z4%mqAd2VW2H4-mRrmSs*t$rpieWX!DV8%Cx+OUxufdpO*SENuR_hb+nA0CmU-(%fL zmp<&9xHDsYXzSir{mVE)No`kQ-cHOmZvcfqgU>2l)j4pjH;&;VbfyucSMgM`(%ZB! znZQ7?K|G-%6x||SCUWb@;PxI-ZABSoNE)D|ANzb8-gx$h}LB2HEsFI1LT~PZkZRKq{r5 z2x53m=2DcSSEpT*X>l-yc9C(3GhJ<$yp+SDl480$TRAB5CrWUxj4lg|nei_Mq=k{w z$;)#u`Z;B3(*&KO-6~c9RWg>Di>cjDA=y9Y9~A2F47st-N7N}0>KH_O#~L@P@`Ie) z#VXir!KzhG^K+iv!SC*;(SGTDZU@+gOt9=rguLRDC!3=;3ROgLV!S>yFuBKa>Vih> z{C-RNbF)e+AE>sXo8WM@C?zm=Q%3#!6@R;2dbC&s90u>h4YSclTTcf>!d^#LCZRkQ zPYzqP5Ba&gLny^>Jkg(ZC!NrVFO_6cHKeifg3#tS*~AR1JISCleErDdkBlQ)M6xPA zW)&xC0{&M%ev`9TAL`F6zM`n}Hb#i1y3Bw5 zd#VL-Xxx62T-7Mbg=lC0+$wYx)&2KZFWPlw%^cE#a6iQY*22Z~KGzI3B6x7dV`gKE zppHzV=A4iy$Iv=SYUz1y;UKYb%iK&%^bbIyHck`IMO1c`yJA20_MU8Y`i)0C02nM)zP$cJX+bSgIFf+Y@g ze%YJnuNNIYg#*V5t$FVdZzA}vo0T3Z#m?s%K~EuNDfp9@vF<|^v? zD3T3K9Ia=B>O8Q2sQ&}Z&FyX>hRBD(E9#&zrkn2d*QOY!|ECs^PcrW!@tKoc-mtk;V8M6CXOt%t5YbitK7V;#$>|z_ys}O!p#PfI8 zUh)BD^gG2Bd_p=uv*l78{pmd(MD)wmNYdG_3I~CzNPwTn@-oLPu(l^NR{wCJE11UlVrH;uDl>eJ?@DKRI3O=e;2knd|VOr&!Y~zTp{-U zo$xx2*+%LE^YlFy4~{EhO}4dG_ig>|99_S^eJs;VD6iCMwJl(dT@m0@64Z7-xc49; z`7L5nm&nh?nNbv_m?u)U;tV-KaL8WMKBpGRt$#9d;aWSWfziT}V*Xk(N4E3<7Z%Nf zr%59F{qkbGV%d4&OX%6-5>rL)f4*&g6mki(hfG%bP({}9oAx9Wl`1aV< zLH6~+&&gFk|LGovSIku?uiBrQ_>x3D6v8N(UaeEqaBmZ?Si^5y)1Eh%x(ZdJx~ zpwiadIKO8@&^@JUNcYu=I75`dP@|>_KQ8S$>fec}uG|!1Ap6QG^L)5$e)Q32Dcl&~ z@S0AMsT1j)o-wM`P|q_~gWp;2UP+oVOt4T!2?qS}#`Q~KSouVceUpOYj^xzyXdEZ< zA<4hgB9bau^exj!Oczo-1Z;n=V!vpwk?}P;au67GjPW0jfmzxyj{Sj z_WL*fv_P|L`p4!D9UJ<1Zb~X9tfDS z;|@i{@*@((QB72Q+t=Uh(QeiR;z*vfrpmdyz2vA&=FQjP3SY+fdnLHBr&dP{q(>S~;hDeBUspL7ad^7cRHfXm zx#;%p3Q7r8MT$yC)s)z(#}F~7*#wJmzhAfTGGd76$38A4;zaGNlTdUBX9k9$)UPeL zAas#7>;q`&Tb}G-Ga+A=86tJEWsH&!5<6~V|E1@ zVVUUcxX4LKE}%x0F<{wzB@fj;#(21U&gVdt(pk&mAcZL_NAJl*T|p!#gc6Od9%*zq!!7qU_^nCP}O1 z&4yPZ^dE8H?%4K3`E5C6mu}G)rZ~JdH(k!pV$|O@5gZSS?w%|^>3EBek0&G_uy%*4 zpP@=SUomb0jr~dS2FN14*tAz8n0}{p2Ou6`Ut&F_myBI+Ra<}hVsEzUPFMxg2t8I( z?%v4MC#-8P*2K_W{qWUVwW=IaTECMVBSl3FU(ERlJOLDCqGcV18^4;pkKZrT24R(} zmEY=F-MG5ntd_i4_QK-I181=3*F6r@>zA>3)FQ+0PV?68UYY+!cVfm)3NBThX{77W zy&{M)!C4;g=YhDu^)>#d8La8vShd2@o{7#(%VP%Weo zSCg+D8BI)5P%g(k4Xn?lbdR@OAl@0P^Ie&aOCs5Jdki+-9{OU)`rj`mtyvDSmm!CC$fY7lHR2~vqac-&aQ!@Vszj!wImj8q5QY$~Z8NLJn z@^0@UG*Moy=57+B^v-?h@;w#Y{V8AqW?ZNH6d9%8FZ@0^qt6DXQrxO)+t>n8ixS5N z!-XmiVf8!|g|K2EQ&e#I=ZU~o!p~H!$F0iAT-^uOQO;;xNG~dPy*>DUy(6{h4_XHB zaG}>#o7cM4&vjb;F6AT1%z_Ad(k*>{9fN2K=341>Eogk8=NsqAM}6Oa2Fbcg>mj6; z9f*dzWwKQO#$uYqGtf7Is2yED8%V1L)c3`pRssmt={eBOYv2S|Q!r^VK^g*_B_JKj zz$lYmoEOAM!m01JJylI9=y(BoFT~O2o4j0I4fOy(c7_oHQ?{-C1SWQ`EQF#|E`(MS zwZP4Uz|o7y3J7GKg4k{r)_PPm_Bc`~=eb+87KU`c!WnK6wCB+6ap}B z#d7XN+~qt2Lis3>RRbjTz66#$lYf7HweGcJm%r|fqK2CD04TA$%qSk+zN=1_Mhjjbz)USim;tX@b{T!8sahUDAakitR3yUFYgpjGWwB_vi zw?wuH?uq}%2*LGCWl^J9>5lQq<9mxoJymHPll?`t1DNAUM6pT=&mw$5`OmCm4bKEE za#Xj#>iNcI4XUgE)rF<`kVp{726?K*A8;lstoWrvEuW7qbw$LzhLdGMuup2&OJzI# z%h;P!z6Tj>1F{bZI7|U4tH^b^=$G>(0c{Pe)38Qa}Iadtwo{aA;nhLTYJZ1Ojh8gu#{k~Wpgh#0k7o0%J z-$L_iXW59J4BF)iUYF;`^qVOF$8jb+i<~T%N(2kJxN^cz?bawVR*f2N4(T-yhYis z$MeG`Mp^=Nwzj?UZhgkjkZj?g%EPB)UYo6TGVy;$i%lvWl(3~M#Edf~J1w6@meiio zp5e9MMQYoD9-$0yGcQP~5(61cFV{R*W;UsjKM!SK7&Bv-lj zO_alQ8=s-_a;ho5_@O%74hu2VkQD-EJAd-s$q(8VW)Qh$;t0-rG&~@I%m@f;v zmO1RDHP#(gXOIiYoyusl|HLbEeR^7&wI9H(h}ke!^pyLG?`SARTr^igNTO}gE6G5$ z&79thR-qzQ;oBGJz$}?=L^s)T2O-yFRfXqkCVW>FIG-?9kq`P9(UK2p&V~4^!-wd0 z+-*r; z6k`YqCGJ@~EpRTo7aO^^x`9fRu*4-B_g!O6zO0Xen~kQo6K8D#^sZzsqvy+K-TV=Z zD$<>#ELCheWhv@Z7ktY%pv5v7%Dwl6Dh%o-_xVAPPT+d}2^;p>$e&go||JK}G>{F76796Z&ReFr!*vOivcW30i5jWDn~7 z$jCkSz-38R^ti?fJV$6RuM(J56+JeFZ;p^7>~;6N6QqiHFzNX4l|~CdRAXUPQLnI6 zVpr)-m&m}?y!akQK<^r#uj_fj==|=!4%QW?NsE|YHlZ{|%<>UV8+@7oe>iilAO=Fr zeNV`7h=50Io$?U|a-amvI}%G|~ zs8WXR5=lTm_I|e*1LF8DR{vG>mD5oCqX_7m;}{*g47n5DS`(T$K4j=@4 zOEP4M2$^@b19y*q76`_HBslzZ^*KTpH8vwl$SlBIbK`!1Udpp8G^nC;$RFC{0TAPr z4n36T^AXu1rR;#D^+zWHPKd07jt*UhA$lKA z>F0b}LKOz5h_B=rMhzLA>?;QHsY3`=Om{*(Tn6iE+Khosqj>J(VlMw_ZLP@QXzRLl z?@9W_s_=`IGE6ZEh9Jdk#*V^DJnD>Xsl&7fIWA2+b_*9*=etMs-=H@TqV^OX9M9If zS}QujUPop5HbfuBJ=I7EWLaE5zM-U(m8V;DCoX?3y5tTj(FDs4FrMb&s4=k02Eb60 zfc7y{^_JF82r?)T@erg;LA3L#PjuO zowFHK7%St9BmE->vEy(44={VafJx1$ez$!bS|peDM}phV7{uvD5XN|7MIq>@a?AT$ zcYXj=C=(P^N1;K38yjVY`;_gICUY0eV1ms64qe{vn`BokM~RaDSFx)#o^i71a_n%m zX-tUdmlwlfxki>ikLthM$p4$=o9m9Ve}BN}aWuJcN193@K1UUqkP)2sapgE*1uxeI za?|cl=1+(;YoOzZpKatJ1z$pGs;BT)DDB^X^;(&~Y|Xb`gJypYNL{rFlWiK@kiUQl z!KR+Wpo?bjJ0JX}u@BdWCRqs;>n=yA81*<;PtiwdOM4aQk z&w!rMsMwPRR|E-x zvtXg11)}r_hpClPeK-M-!!ep(E=YH*AeIYGc7P_#=))f_gWMqTIsJQQ4V=FT0JKID z=AEGs7#hkDuGA`geCM6fp@tgWl5+ch&1END=Tmxex&m0^=t3@RL0KYvqo%Jb*jSx{`3U^>3 zl>Y|-^3ZObQsd0_N^D!v%K`#=F22m zmFQG5FJc8WP6t^KJU3BI$ffMklo2~G@&Oz(C2$sA&OxS<6ELTr}%DDEO ze@Hf7^ZU(oD_Fm}numzMtaAsh^(z8_p76;Q-$q}&8@JIN+O=c^ig|8QtotW25kX7~ zna6=;2isswF6hx!VKV1amJVFY1BCWXyLw9LL7}8QQt6>s`w{pgh9}cbt>oN0mC%wr z#DT2*f{zA)6YMcIMs)3k{T^C;E~)fk23g!5&Wq5Gbl=RQ(R^f`oR*Z-yF-Bw)KNiY?tepL_|IrStOz;{1=)<5RQsdiVW|znLJ~D{u zZSiYj57A+al8(%{tpXZ+G_lz)NmZi{_o1?*;mo(J>LNqfcu?;)HA7sc&rCA*c>ZiCOEZTA}|Y?WzztA4P=R*!f@I`fCaS+P5%c*||fZ-apWOV<5 zSG>FiOA|$q1%X^d52=YyIb1(j`OETJO9fSkMQ~Y9cey9Vr1_P=G*BSX(M@Owf|A!4 z{Eum+)gd=gj2|Ehi(9v>9DjTyd}{!@8<_Smgb$z#EmwewlLt{f+a(e9%RIZ?1`?DW$$OWu|Gd*1af}DMNB|c!}=G*+#urw zYH%VGK+K_JZd#p7*q2M7WYL9u3ABMT2$Nt4Qx67DeND+_{6VQht;t9iuNL3E35#(3 z+?)wX_O}psqMPVK8h4ay?jvD$6NL zxevz;sTtZ{bQ5b~?E!iG0;*S84>%b|a0eJbhf?HUMf&xV@#e^_JNuzGW%MJYlCJF! zZE%I}uxSR(L)v1ZA=lng!t3t}1Y#;lPt~6p2%8>TodV3f_My}fi>7FOLmbe2mM?7gs*HV>!|rG zF$ThdtIF>rFMoc|44AVKeo^l*S5Nf&+FJA_f~Q6=NuG?u6%MC+J#5NGa9Ay21UO*g z8Eo@ifUa7PTrXUbULh-tvFD|=$xx)Zi(V0oF>2m1gvz^Ai!`It9!Oak`(M5^7lam6 zZ8wq#`Zj|+6?J;>%nrm{u5$V8Lk<^)0D-^bgk+ElY|=4^KujvJlzT$q!q|Je8qohw zV8h`J@Vmltr>eCv>T|jhQ(Lu{Az$@&vbRrD86;aoR@iUScOv$%d^s+c{JQO5FGGxT z3xZT5FE=@`yh>^F;OmSa3%Qy)Z&WFr`$g$cd4h?l zY3P`@sn~51BmRuI`_HMbLoS=Srp_0A@G7Z=c0LtmQE1X^F)vR#*68UQA-8k|o~sLr zF%tnxT12PyA*d)7_@?-y=xL0}g%l%49a4G~Rwe4q9k}QsHNm<2ZXOa^dl6dQlZ#^U zm_G@W3Gf)xQ5@N@9I@rM>EscviQ=ViUq%T_5x)cMqd5h+<@Z7@&ra+0iqn-GVf2VX z8c5jJ`?)lg2>{y%IO$(o_ejl^a#SZ2@-OS^t`#5Wulh9tL8{xg58|`>X8QVMl3t}P zh&x!y{#=37o|z0ACGf;f@aPMgWYN8rw`9f$?DjZwjXvBjix1aADMIcD=;{ylKI_M< zi11hUpW&1r>!ziY`*g{Z;Ct2w=p}E2+PCB^{a|@j`qTi!@Zb)0J~}&XVZqc-#ov{ zHN3h%pWG($9*0bbOz)!Wp#8Y*3H?%Za;FRC$MtXTB8uCGP}4*Is^70+)O~!DXaDc| zkU!k55PMrIjM>ep>KDrShySSsu-BV8yI|S(Nk_|xMNA-E{y>V&S>ByAgFF2cD2H5F8_8da7NotgK+d-Ad@a(3iZC;O{zYzS-iB4KT|56b#x|jXpfr^vQHkma zUoU!?=uX{j(hko{#7*iycG>`B_nmxFfpMjDn@(d65UD~|^KY9Fg}4} z`*cBLo=~(fT1zqZ4lEQ=BB%Cu796E8Fd}_&R99juhB3kj#`41!)Kh?<6LneQ(5On4 zwX3}iF)Dh($)rH)!z-VusFetcP>_z}%NVU2oJ)_<5ez#QJgt*{@c z+MVE3(S@7OV?$0KeIAlc@*%|GOFU-b*VlQwa{<-wHYkU!I)8BCl&7o9e-1cc`W$R+ zEyk9}6Sn-gy=T*zJ(7jE29vzh>**)WF3)BWUx7G_-1-y}41)ileX`LEoQ2i%kh}Rv zBpt{zk}Co*+qKfvK<_-%7t(NjtP-|U!hbEBK4Q6J`Ij@;ywPQHuZp%9p#b8c`krEa zFnTA4;rh$_;v5~fE|RCFyRlynE%>AT`k0bW?0k!YsLu~K1MPFlY{=V#b|zv^L5Y4X zQE^kGS4o4$-=m^pk>)q9nfWnDZl{wWDPl+5tA!s|y5C3#9K(#sXWq7XPfdqAln+c= z=$Cz<55wdSPAM0L&V6QOMebKk5BZ$Ud=6N~S5qia+z9TSlZu<)h(M9i*dX){KE7CV zN;NYkL}1MmSzxV(UrA8Z=cI2)f5wl~^uv?Ykg>#5ep{(HVp5r^Ri=pVUZ_~7W}Smz zwLC1|B4oqaDI{#aY3P+bNFh|tJ+vLSbbrb^oJ*$m!o=wnddVCOunF+1 zaGrpCw&1{127zJ@k{VuMlvypnOFLg zOM!*3#?7J~+y_k&5Y7~kZV2{GoB(?n{~;}Hi3Z0LqWBr`j17qIcRZcc8%EkM{?A#K z)Z4tKoX-dtL>E1vb;7cK0W7I+q}i2#5)}Ek-B&~u-93EFZ6X*xdb$4)$ZfHhjOhY) zYyM&HLC(}wxjL*y%De5`%qSSX`z%4Ye|u>C$#$pdj+`JOD~&+9c>(^QhS_+)SMrP} z#4gpyL(9p9aTm-{J1>Mm`2OCJfszF1F&^RkuGn;ZG=0Mbuxu0y_v##tW&0Z9Hkf|3 zkdEzA&U>&_tD5 zw?4XqX}$<>^3PN?JMSle2Y~dd{=+~7O>)$A5eb`8`PU(!LgTq`b6K@F>YJ$&s`VCL z_6~*Ibd@dfd3=dp29)>|6($ z<2@C53__>aLMq`G@1HPVCTKgft54NBffCLb59rNIKGp5<->S{mZ{dY3DjH_-gnV70 zy9uygkRNxGo&~1at+^MgL5h5^&eX%qvzcURlfc1D7md9+<@Tr!K{)j2*Al1fS#UwJ zU-pPn9YQH3NGLjg9xcV$VKh$#gsIU|1k;6-=B-6}43`YpH3%Zu|F3i`z81t6 zgHrPv6q{3j=&G}D5I}*$Myu2z+3S zN*uZR#A_}KEKBPLvr(Pf8<_-+k$1>0gg|D#z-yw!{Tr3ZUQ*Xy(D?F?J3J|1Nfo)W z2909z^u1NvsU1NbHdo!fGemiDc!hGLZrnfqFy4+lPBn_hoLoIo-uq<{ln-nOEbw~# zUaHV@H!I$bew^q5YAY$1p(p6|i$!47&%uIz9D_o|5!mY(C1)V}%t77>#JgNQNEFNo z{4#`fA})LHyAlxn2CUvQWv-A!(Eo6ABNal>{5VyRBbf7;_XXwr3dsJG62rb7ctnXF zwCP?~Xan%EX*7GeKs1ySx8;Etfh;Yijt@LJ=3srO(BHV$ks7ZT_Si1s#X#|l5&NqM zy?W#8zOOSmvQ&QPb7qFXnhX}1wvx(vSq_0b>_<8{_L_COe+8C1w1sxZ`oPa z88)-pPR-{uAG>xY6*sad+5RXTR_cMiEnUhImT7Z2gPMUDVzs@U1 z%1Ak+tlHsra2xwd{X6s~kg|u|$QeW{AUPLg3R!?|yHwEm%5XQKz-4_0#gAtw9qZn- zqEKwzcYH!Lv-D91#Fcs}5V2G#C9Kl{Tg4aja>2ULt=}?+IH?wuz?k8ANLeVjG}Z~X zPJ*RIdYxgcb=!?rxl*XWLlBUXEkBu%^8&;dRM|msN5~4wJSM>P-N<=sBPmqBq9%ba zaq^y)1gLh5n&@^Fkh>aq@K=XIby~8y!Fy$3az*UU$7! zy`EHk`{7J5-L!Mz=>0nGO-7l-{*Y0^xHKBK6FPUH^B1n5Na1w6X@xv;ZV?XJf^9Qm z>syqf40PAK)3J1_Kju0ul?AUrk082OYGJXL`aXxYrL_tSy2|_!N?O)6@Y@e^S|MSN~&dvbysS|$}QvCfY>hy+PXC$fGxI@ z#dgKUpg`(JUaafj%GAlI58dGwskx8Yeey9Wwy1+nnu{v)QU3i^a4~ekH7KfzftlM2 z1G=FkB2oHE=a8F_Pfk`EvF1o7=2=!<%jp*5M`4zGfFDP5aYsa)>Oo==Y-K#iiH#%u zL-*p>RO=QT!`b(U(=0r$+pUxc`-NH%cOTp~#LOqo4rO{^v77BU$-T@=D*5|+bh>h6znXc`v#;+9!*$O-No^nBBFWYK=g@-C_?J_WmQz@ z`5a2r8#Hph3`>ugJN~LJCF6>d`YvHK-#(0+ebTdyPK?nxS_nfKlUR|dmC|u7FXKA3 zv)-+E7gNW;q51+SiSFxs_hmb(C5V-BPy-nyvm?l>H~U1t%L&$bPS zgS>AD%_m1WSbj*o){wJUn?l%uTT|j^Ql~&=;Mqr<68bqUMP3l*MEx%J_!qZ9X^;O1 z57=ov(L-)UNi~IilRe4ZBElZwewC<%dx=eo=}6*8_5i!QQn|*f*X9ugS9g2;1;m^M z7BK^c%XhnQRr6naBH{>_3Od~|%}@jv94&66xe-th!5*$1?4swbE7>jX@#*M{rX+w~3DEZfCb|*`40lSxhnF5scJIGASwM*fln-f>^pW zM){j9YKgh>-w>~!Fbeg+RK5mX7cy?<=ZdHIxKa@CRJTl6FC>xPVCixZVXvUNReR_B z*HiKtS9*aTIC*}uX~SIIoQ=K>u-l`F=VvG4|H1;MN-}R&m=lry*_wHhjYLI|UFK)w z7+#jU?=rOwBg{gQXTymIT zV!Jh|(=;&u_MTF?__2VV7ZIA;MMv~XnEs;D`Pkno^pP34wgNl^52Lo!vh|7Li>mLG z9asuXvAW*E{%nn2+AM64B#8IO4iE3Y-kMRP=G5hx!N6c&@fPg;Sf7|YExOZWLfP~s zp;i()7JspKq>6FLO+=5Uc^Z=o6mPi5tA!$qwVa8SCkgrc)A-fa(E;1gZ%K(#@*9%V zeQe%%RK%=+Hru9WoG~U&jmg~_xqq2IfBnsK?j%hVF)QT0Re0##U?q)~Lb+RYi2ghJz}&Ej@1E z-`XqNGOrcZDPNS|cSIxrwbAB!2~Ry+Y=*k!Uf z>|%1SKtcD*W4YH#$X0x0>yvV)9)-Lu{>3-ydbWpU4(>RHN@=?IvK(75z_tna@EU74 zV>%GCg)R}^BEYpmL6T)x0>}bbBm)7WJf(}7czqYAbq9oa!r%%!y1)LpzNjJ*qf_tC^P2 zNY(?#qAxy*nv)o3M51Vk3xeB4LIQY z+^$BUfF8#g#`(v;1D}wX-Vr7QZa2{S8zrR8H~Alc2oGnh0pF}Jh&SPa!8p%27zBMR zIEN;oTr&YX?Q)|-c)BlO5JfwSr8{hqxjRtO!}%Eqf*O#s@-l!HX7ZoCL9uSeQZ#Q* zRwOPuAqH4GoDKn*|4KwO&}R{6V}70?f;4tLPT2)wVE(x-9eU;|PgWA+weL`4EFRSV z{g$(}V#4iGA#&5kz4vHsy z4TP;j99P{e4xSG%gZmChI~6H@;s8O*4{3Vk!Ww>YIrV`5rco>SgYd*Rc(oG2$UAOC=S z81JMJwo89tu!i#Fo=8S0sOBf}+dR-|Wo~&y+}l04rCVJblwt$YxZx`3M^kutz2WmG zRB~MiA#62&C?V;>u$=YC%mz~*Lwf55bhxhlI}>m7^R5##MA#W;9SCP7f!tR|Z0Nzp8K-ox9wjC+y0O&FkNz}6(h1rfg~4R9 z-vBL8K&&QdR>>PU=cRQrZ)?e58SmXF3cZN@aYm}?NNsS-@8&}3AyejO1EtO)v^{2q zX(MIIopRFfY@|(e-9^rQs*3xZuz)Z+>IkVt_egN_0bTg&{tvcA)HvY62XN6A?o_-I3R) zplOZZ%$*^s&TSer7+p7%OA_5N^dCA63x@=Tp)}#26Wgdk-`FxJtWL^@+_cpN?Sy#Rg?=3PuSGJ+lW# zO-u!q8le`lm8T|Y#7fB4PcTxs^@Yy|$~WYare*WY>Sxl|$TbI0mg_uQnw9EHDAk;G zd;oj(Pf~2?j-TuW%uHM;%`P~ujX^$o zeJXtP?v>YZ#($FojciEOmfW+qujcC zOa#nJaGbaCROR!l+g8}0cDE*euO?Znr8%!~$pc?Zbk3LIBx(4%%m8>SQSY~2oNqJ$ zU?#cD^wsrZhPrQ!T=mMF6j@TT_S1hQKBcnd+0Et!v;N_7e5ju#cHv)Q7)tI~;TAE{ z^YfJz{H$+1oaCEKkK))4FkDjmla9U+Cl?ggqDY!`@gKQy`yb+Y?67mo?Ra^jNYSYxQcwdl3 z^Tvr*mgheL;LA8UqH<_U+3`3{Cj{)&flhW=e`2dg zVwXe3-pUmMutuPz&0H#5R`fg*4Q_44L2r+N0ZjRYxr3-+i>Rm`!|5w>Ez4#AHIV77 zdxAc;pL@)@8DGQQFNZRmoX1 zzQ3qkHt-O&tDndx)A1_VX-=_=bPRRL$F|6BXwB?^>^&v1f(7&2D(UU|W5EbOA{pFo z6z}$a-x7l75*ej{lUhL7=sU>fkea)V_we(JNxx83ZPO0mgaGB`18l#P5^@`krfQdZeBJzb7ep^)w z=lrI_Hs>Bg_$!pZbz1k7wXifwS5%y~n1wS90Qq~T6rH9e47UbaGcn>rXVYG7qqJph|4O#T0~J7=Q3`%I3?# zbro10ZvpYOQdz-fnJ8gtAd0rqObl?zyQf2<9$@jH;aS$_RjwSs4v`t@;^e|pqk}l) zPcAi=LQ@`8jnGIs{2Lv_2Fvv_Glc-W3+imZS`Tuw^JeTp@X^{Ew^d5HX%UK~Yn$(C zn$wH6`3Ij?-R4iIjhWnU5Ijt=RX;kf8moTvLjAc;`sN?@L8X6zeb#Ge$_*mlW(R8y z!&`=&D@~fhB3I+3m_|S}@jZm$!po{(%I7R)CHq6q;X7`*Xxs&*wm?uYKv+Gwa+AT_ z$m@w7-%i%Ye&*Pnh2#5h=reLAvW&2IU}+r-+hWH2wb{p3WT0V4?j?P}u|hwvWOhr~ z$VPx=le2Hba2YtIKTtGvF_swrOB*m~hU#yFgor=<3&Tbc zV)ET&N~Wdpn<^A-X|n^RQ$mu!PIeiEt_jz5!jrSsc_+(sQZcHZQ6Q2elE%?G$;vYT}_6gUV z9}%A`y=1h75*I;hu_-?5+UAAsR|fy5<>!nUp2|Qmx`7onmvQHV=y! zsoxM7a`zY1u+MB3@d-M99_Kbbyf zRnr$O_m1`OV&jdY(q;k3m(I*&8d19FaDHq@^Af%1ja>HkNH)IkYaN@5ZOuW}yt`zG zpN;ccbQrZ~Wl&Tq_koorGN(6@AXB<9k5PV<;p1a)trnB$#w}#(+_=W-Q!a2 zs62UgC>rj5eRooE&Oz7t!KOyZsnZGe@}&qTySN%yD<|uVP5aqS=pUKWGU#Qy#G~Hf2o^d5gZte|7#z#2WVN-r{w@xTfGvr%f zc?4KRJ%+U+MKzm*m47U$pX`uO4s1cDoJQ(=&56_BqWoIoz}7I=lc94J3{Oof(#4oH zjG{b~_Uw!*aSo?~*UUuRg^2jI05J>Y>r~{L1utCH#}mgyOS**HZ3I-zh*dlNXmTw+ z>6y0EGX2RlU#&8KAl}Cxy&Pg1-gIs`&N*np($_e@>lNEzjTUVODa?8#xo8Y^eiA^YT zg0&vb@pus6w-Q=%T}hApP`}3B&BFN*wR{G`d}f-U%CEH)tt5#C5gm-GZ6bQZboN3w zY~m+!9UJTY;s=-vUyGDDy2n4LY;e6SEnJyfyLbQHsXs;0oE@3^#y?VK6&RI_NV~f$WLO_pBwV_BNwhTDEkxi8k+2KRBD7U0v!!sFS>(Wndi$$P(*5 z6U3*ssq*(+q2{FDeW~cteV?9g5x>{Ize)2qYQcCQm#rT@-sA9yNZLeX=mf*@pTip$ z;*!`Uo?2?vPEM2O`#qUnpy9ilonNVk)hcC<*-g?p?8KL&RN**jxW>R5)Xz??{;(Z; zh3-y_N8)#_IzPtk&qdiXN*PXn#||zKS{TO@F@62!R zZ0d`S&5o33#>Bdk6iTk@vMTfXinoaDDL<7#AScxy``~Cs>WdFD3S^Z=LpB%sY|c^L zN;(x6SLGrK>Q}~)CN?=Fi~0Y#fmzl%at$S(C^_uXjHJ}Oj{ApjU11WAvUSJT^V_^N z&DG(-bt>6n-;u**sLD*|=pQR}opa?h0IB{+YeHX`VH*8N_bE`r5+A%2beC@%Egv_S1g~vfPgsUK&%HC_|3RuRZIsKBE3i{SMLp&w}!%Y!QcBd7kwA zgc>uuSp5E{Ok8jnunDC?khku!K8)lL(Cc2E%9-Ij?o=6oabT4RE&v zfvC9Jq5qxljum|GQ!s9^K{9De=s6Ioh--5_o<re_Nmb%yica7A)C znLyJ7FlQsU#=taHM+5e6@F7Bglt>Kk;&cr-P@qBBnW~PiPoYvR_5}BAvQkK}MkOd* z9T3{KwN9Wk#0{*tqX7AEpvobtdhl=OQ1K@&lQ#>EZCT4X12Pe+V;5k25j;pS1fc@x z681qa0sqa{Kz#cR=oS3Uv@xWl_}kD7>LhzU;cIva05I;mCBawzVIiDE&sGZ~>Af}W z4L1NTVx-{tJ6mhpg=8R_^K=~4DewxwM1So_@|)JT>x$Rj zFDg_elIjH+I|#$|PcWsD##QiZ7?B8N2qTY2(NCY@@Z}{<`Ts!XJS;cBR{?g|5@=U6 z{BTMFut!}79Bx3grG+djP4Mn`M+Ed9fNs`+sfhngf^OKd0kE@tUjWN>5hEKbHI&-p zbeom{js3~rUpf0~Akw%O^!p3+HLf5N1INrT^a(h@?VQ(`KF>K+4y3FMKuKAsO@V`o z;lKh;^~-=L3Pz|TYlDbEPyU7JON5UJq%mlN#y+?2<6;!kNv#JzY8Kb3@qYn0*IkSZ zr+@}wvtBM{Cif$VWAyKlv#aS+y#ljKTT65g;LwYU74!DA%Cp^i$wxm1=MT!$Y@&|9nl@se7ao$ldn4 z_TBd%0dsHL3w$#KV4bzy^>(5b2%KThtym=w;cdADsc#UO{q0fOmWrv^weK5EZXMF1^Lzo$6hjR5t{~{;Fp<+a$b0AL486 zDUeq{-<(5mO)m_V#KVayG}*~4eR~&e$rZj&-~lrvi>7IBE}?FS3C%0Qjc1iI|Bgqx-ps7P~fHBXw7%*;HD_u}8mQzm~Gd*dV4CDJJ2%!**s zC99HF-`^U{XgmfTAS`#Ea~Y+O{CNsD{Q{c}@4(j~eYKTzCWWMKNHG&FB4<Q%^9{Hkjr6PLZ-!4`CB5v720PVtc zH&DLeT{8a*nraiF%CqR& zR+J%VhVHakoi)7%{mADRSj)ITln<=KM_LRZLi?Bh?66OhFXOASSMJImjtZ?qP~@*89@lFQKj%f9g?EsIg@=*Rf${?%^}t6E`IbQiq5 zbS%ji9RTv4@@Q2zV3v3YKcgdXLYUxi!5^Prs;#Ni!hnYK?JRB!oqGyFn?aogBe%%u zHZ+#_4jBLHc!9L68tuAt_Sriej1Uq3dH%g5=7oIiL3^f!OM64UTA#y7%N8CTopYNv zF_4KQKd9;#vg-wHi?VPu6DBUq%9@N}r(g^g5XnS)SEy@9A_}$qXl<%|`{OTz(MkT< zy)+x30B@F=7C6|JRMI{tV)*jm_xRl{#7d}3%y09^OJ($1D4?QfhU!WaFEN{?C7!t6 zT2!;F;mELyXE)5H18*?I3u73c3Boj~X+LthSBG)N*7B(X1Z9jlaU~6qo#8d?KcFaa zy_kUbosG-)DWSS4+qZlDLak>J?{JLJltg+A@Ag|&wh<~Jf_9&SVQk^DDQC87*h|^v z4L=ZLCh%HWs0$I&MP8}hGYQmw*m6J!aw)k>ose?!J`sFxRd3%v;{Q(qCebjQqlwuB z6wzj5x>)7vr+!Ps5>lfHXl{qn=q<1+f1O~w1Lv{$23or5txs;Vp|3?n8v#6xhGk6i z-V>IykGag>xi~$^MYR#Xdt7k>nWj}dW^j5X{E=3LwHFJ1Yyij>!c?D~(!c!zyX@8a zT*;WPi~nlXQEz{2%nHU-tSH}ue(*H?S&=^;-94~qifL^PL_tCOgO6N z#?4z--$SNldE+~lF3Zk1no zQc3jc+jz+_uBB2A@T>-^-K`KVWJZ;Yw?;=dVN;g=8pCYM zT&q{<>|>}2#E(M0CjA!{@KPnGvcYtZ=uKNc$yqHctubjxFQ~+9<>OkuS$~|FE>3?Y zVK?ziA2}p7{`THHkBin|_%8#sHf+aHh1}6ABg6A*t;{EnG_sFrN-ujWN4n~THUlKd zT7tf&bVm&0!l{`6xTz!-5<26YnDBqNNU&u~!04)~qBRevqlJasq6-m>7$8ZB=JVZE z#_)fKn2lY)Qi_~snQkhq%ZM<8p2d$1`} z8z~R&YH}!C(&BYtyJM~Uk0IpeqR)dr3mF~4>oO50Vt0qaIn6D#(w})Q_N#AFPS+9Z zF*&DXa!Rq)h6R0wse(tvd@@D`eJ#C@N?e$m&i#&ucUJzZ?OraUY0S5TVb7BBsyJZ` zMk!0+K6Y=L&_5gulMF*QmL-*|MG*bzS06|n19ZoKS&{P=Mcuh5M0F9K%bVWx_gha|(>U!DeQ8fM3agRj29XPm=0%^_u4>Vty0fLJ>ikUn zA6E?9=8G4$cj*2MkSwIg#Gm!)aBKHPqMbhOhc?6!!S5>J3DIKN~sUp!jDEGGC0sK33Q9^XwNwu zv|ClG@w{tY=%3^!(AlJZS98;XX_>(z7=><0W%1efWIr6RK2IDjhc<7c2-A3W&t7#U zk|5-@p}l_8v&L`BhGh3Ok)wFVNaq_iTZk``PcMxbGwkRTq(h$neUZWD=PyH6qC8}y z7VDQXXCz^+(B6}qMAQ>3nnNGzdMZOqjFD!MYsjA%C0DL6~8#zz5rGmDo2rWt5RfF2f%6)Y>)ONt`~B=berw>+IMy~p8yv=dHuv5OhG#0I1T?{=NFfS)+ytkP+3+o zxARJ8YB^OFy{9y#5+w+1(SqA_VHuk;d59MHkX>F*M@t~0eJV3i(5!gP z5-U&sFnUskPmbdpGT_3Wgc<^>2QG;wMb|j=a^(_ZSTw6IhYvaA3o2)t^&8PVqD>)2 zhB*Hy__}zHtdQKb&DV?jLSMqa(3(N*!C`S^r9V8JyIZgf!euxoSSys4t#r~ z6o>EXccD`BOr-gkvVZMzSdZzUMq_^l5fXJ(FJAIcjdJ7sdHcP*5}rZNpJIgtf7>Ff zCl_U&a8lH;2db%BZfrYG8VvQ4kVYO2WfCtkBHu2^5VdwgOIIpq!+`*`&7Z7##6Nds zQR(a^4TVU`ZY|uvOJ48g>nF{5e_`^+^S9B&5J7i-OJVerNVn=qZH)0nJ>CI%VfFi= zlvcPOZpiE33rTU_pcSDQgV>d2wTY?X53)bPLtgF+5nc2G9>j=i2Om+YZC07 zJ_%UTJqePH%i9u36y_#D<}Lx7d;)zDf=iFb!za}NYFsGjy8LxChrW^^3sXDsZLYwe zQ*HV?h}VqJqe9L?EA;5LxsSAn7RBQG@}QW2qCM5MPh6i&c^}O zBb3Crz;6(JzlRE+XTx5miPI5%w3XHi9sgHwuK?S$Mes!x!<7nr7ewtt%lHxO%iyOh zH!h0$SCF@?N}I4vf@J1eT=r5W!onPb|82Yo*P`&|^#{-bLn{EC;XDqvlQRGPF`cqI z5;wf}4~#>&i<{pI6*=Udd7els4q3rS0M}AN-h0oK!vO!d!Sc>(ldc0zsr?ONV8#_& zjMy8&t^`pSYkwfwK3Q9~cf15t^)9pZR0>sV<%X<8ivk$@iyiPm!1dmQ{tqrBhbu+i zRW-_(dmodU=E0>ddtNuT%lUE{^jSRoT-rH+MZ4>983=e(laL@0eZY_!@gcyhE{VfK z(90hnO3;*8X^;pxDpT*rX9}eb_0}oZt(=3M`6Lk!MzD}V?hjZecv|cc!DZ4Ha zKv8q=|4kM`l|%MCJWG1HQ&_%NpFTXofgD$A+@}4OcwXzLN#3~)uPi21<6-_mo0NEO z16tR1WjpAYA*M&Ix}B4X(|4~fXOs6SWO&(Mqz~zCQh5qUN3*18lNn@h0HVP>Jh$a( zxW_#>UE|PCE5M^*&9D9~tl$H{f{dN}9B}90 zYN{*0`B53NOuhFkRb5cEH*h@W3yonLE!ppY(MZAY%z%ZAb)Ml6eAwQ=i2=1b27^QD zU+Mc4N)L3Wu{Xio037rIVsL;++#qiR%5x}W?}>mjC=LNa|=V7!ttK50SM>|Cs{;-5hT1{s%wXs;gcBLr}h)?;EN% zvj6o{FMHu}#C&0*at}V*;C1G0KKa=XT6VFy%pTXeukaa&kHQSsn7z63Gl0$jzA}aA zC9wNJ5g)YJ7U}Z`94o+aAHA-dYa@imPn4-*3L5T{6XQA%H~z@=9DHeBd&O-TV5yUv z81`2W17^Wc4eq-{D^pt=W|FVPrd-nF;Km2z74BHDfEXE&SqQYw(A}#A(2Ds3P|I-K zJWt;2d0$Zmghny0Uuoc$GILIXCw`JUGZk*9?L52$2qN2I4cGR|aCmjk>~ ztr?srPhd?Mia+KU;ikjzKzoJGJUCxW{=(k9C3iI~CWQg6|L-bYu+xW0{nk}5@9`xF z0)|q)}MimHc5MxFgEaGvX;Q6*@;wk}e6rfc~FzJ}`B`mb63dfN`Zk@Eu zZ!kUe8KhEHO#r{#Y6VXX3_)GfWCfAF2Q=&)m(!8<2j)$I?{Dh;R5wD&<05I;%$tLQ zypoGx_RCIMMnk0C;;ZQ(7#cWPYRKk;%yh_4TkO!LKC5Gby0rB_5tdNRz58YlfR9W! z7+=UB%?eP}PClhYk*W`%G4TU3E=h)1;Lqs^-IJJ@q};*qpCit~!+C&T`A~ z;;I?Ay$#@69~lG1C}JN1E7k-y@#x4GhNxp01v9E%X`)pmJt@uQ@=K%auzwni_%Y2O z?S6i0$5+YVGX{nwNP878PQHnMkyPvT$A1GSFwn`e%AS}T`8{3&7c22;{_z?M!TF%# zT$(7ssrY%2Apl~_=JKh9&DP!)Z>%?iIZ`#L>GWU*_9^&0N%6^u)szz+h$zAUCuq(a zKp$I?f(f_d`@Q`&=jIEp?@nVJiP8_HVhAdsyH1^M7=vJ*q&+=~P4u+=I<2%~eFrF}7Y3E7@}I*BET68ab5D z;E!qULzOf0S>@ohp?vp$I6M=1=eg`XLm1w6qN!a@7j+$%(Q=_~(d#6zqU>Z9po*C5 zIVaOZz2n=sgq&xZ%+uzN9akZ$Xk9Le!=q#3af;-7^63s?Htfr5l)+c+0>vlr#*O& zg)c`NH#Mb{ZFjlc7?;va)Y}?DcHTs&c!dVRHhxblYFv>+Ig0HFKy8~mEN(;u>*EzF z9ng7Db0V|@Yx&*wc-%^dsp0!?K0&H z9`e<@3L{8bw`-W;c*}5w$RFK3bV9|Jk-fLNij>376ZisN?rrK>0m&Wh_u~$x0s%u* z=aF`xcfOTEZ&J-fosbP9ZkpeEt8STCb}?D}x(%rgce(=PSz4>6IBeEwMkJVFUkSv@ zi&A(XG~?-84@19B`YG@=_he8Jw-`6@Lv0e1BO@)Y#uNbdK>A0FJ0o!X!XY{-sV5Ri zgk?$TF5_S}aAel)e%Eg1w-81ML5+KW7o0(q(e+rGR$1}61%-pRmfo=28)k}}%MSjE z#=|2JgRx7db#eDdnaR5&B}LoU6+NDV-!UeXPLf4MXg_Tg{o-#Y#n!}Iwx3}osQu&z zG+?!p&maZa?&Cr{$w0S7VY@W-CNMYRLVpG1yi!*I2&WA1XJ@%#5GHd3n7!+dGB6)? z#fAUUm55!J9-qZoqSa57&n>OXbPl+2%rVT@B}W>nL*ArvcTO_KZ6flqoAIh>z7^MbTbwdI~M#VIdHg%eSIaN8!R zB9=2nu&skCAF^DMXT#CLYj6AjxdRR%KI|79J1Lhn7-Yk*_D#cV?iJYBx|LzN)8dHw ze%t&Xa42f1#M6apeyxZK*HoF{<0a?ebhF10OM)w7_U@6Z#`ds^tzlZml_gC4tc^9J za7_|$&^CTY=e((e*RQ=_!WG_4D2_B(ilbM(WALeCq5!h6nKtuN;AHFY2p4@hY185i z5E}nrW9?YP&2F*jPS+^G2)oRsP|gDy12);X%BV|V*r2nidL@k;YLVx+6obvZFqr)* zVlj~9tP_&pM7wXe2-@pXybZXPXf0urJl!3!tSX<6tPtk-@%lrD%8%NDJ(@kvJ}36( z?vXdKEOIq$POd0=Q38W3R7#9qakWN&;ijMI)0ddYdP6nDkkrDGqINh04_ZIq5Z&V( zoDV$$?GHowmm)U~*OMRE&UVZ`zTG|?Eeg144JVjipUx2U-xwp*QY?Ez6Z zCDpwKpVvXR!Ia&Ki@pYQAiC4=+LipmB2M{ukm*9`#hChv9#4T!>MGQ! z^ug%8-$HSe40z%59hsM7m2pPY6a>u)IZ}Jt{^MV2 z=}M^ASeKc$paS;<3XpLJQm|4t@VE_g1mO5z<$~nX2lH+dYm$*D+Vf&QQMte}7U+0{ z{FH+#n1@8@mBJd-N9^rUlnot;zs-Q6C&4K_>#q~X?wTO?8 z(;o%)bE=m_DyO(}P||g|VRmwPH7!}4!YJERR+Rq_4IevW!^6Y-_b^p^Yn#dWT8_TFcoD_TQM0Ski+AYQJ6@O%q`m^hW*CoVUcv;i&q~F!p zftbV2R}V@F|8X?hFpFg_X|x5Z5hmKO7{#nG91c1sJn6cqY9+J ziLM^0J4uF0#z#|A)Bld7&+hy{j;Im=i*^(Sn@0XiC7KbYq&q)kC#&u7nQqNUY+-Qo z(7nx9T^E&3&`o{t1j(Y80mUw*+rG@O_CE7x%bw)-$+#8BK3bz8d>8D7OB#)zQk9sG5%~MOpn*`ijY-JXd&!0Zc!;qwiq=gTB!SBNw&GH zxk0_V)!t&qlBKvEgN~(h6!$`}Qbs&F$%j}mu0)%~m(@y^&S-)77Ceh2QX1LgDbdLL z8?sChY7LKqk;q<))^NGkdhg6;Nb2X?jL2GB-CSRVeJ5q-Y4yv!$VUyeEmDo>PNGMB zn_Vwn804ATY}S{?j(VS>JB2wRnzAwrzH#*TH{9JQavGo6PomVx_SD7~2djg5k`Es~ z%#8Eip02m(ipN(M8*abf0e5Z*YvH+x$E3m_OS{@?DOQ!5{g&?s1~JFaAcm3l`|w^< zhaB-P|CWZ%H_LHSlYYmbR*1H?;6NqM8mD!_dz1XE!OP0yExMlb$@a`%d{1IaK%Zbg zdp(5_0luhtv8uyZ*&AVx;v0{)2rR7CnQuoWd4aDqU(Wgd`{cIN8O}j1=Cixp zlM+gFeg5wYxu7${kDI*sa`O(1j^RqKus6;HE;MAAFk zqcWb&ynCE3aqyFuI_Q#nk2ml>xq#zhdo*YBX<@*F`=8D>s|F*msi{Y(w%9_BnF2#yEz4STC+Yk6Ocn|$BO$EnCy?Ct!j{Xu_mFetg!pQTr6*<=6v z17*gPZwkC6wIm?^}{+x%ft)Sj576`I`DX% zJ{VLn-K-7fnbbNzTYAHLna6Dr@w-^qWA)buoxXNbmX#EB32x)xL3C@gY!O}|SVVYzk&O%7hi``rk2Bcvb{;O z#?gR<(&=ffGo{5Vo7@*nH7X5WTkq55Vu)s76&(e_`|nGOKrUAJ zO1#yxMxVXMoK3$h-8KI(m3`=<^25B-<@WH|H$JRHkFJs*?$u1Ke}8|p^CeLhh_m

      YmsOG|P^d=G5{&BgF; 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 diff --git a/web/App.tsx b/web/App.tsx index 69d6579..06b7b65 100644 --- a/web/App.tsx +++ b/web/App.tsx @@ -159,7 +159,7 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof

      World ID

      - {preview && screen === "enroll" ? : } + {preview && screen === "enroll" ? : }

      {title}

      {screen === "done" &&

      Your proof reached the bridge. The requesting app verifies it.

      } From 21f9353ae8630a1ebacb6fe2cb1c1537ec47f550 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 11:34:05 -0700 Subject: [PATCH 27/38] Retry connection resets while the CI container starts --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 04f528d..3a88269 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,6 +49,7 @@ jobs: docker build -t web-authenticator:test . docker run --detach --name authenticator-test -p 127.0.0.1:4195:4173 web-authenticator:test trap 'docker logs authenticator-test; docker rm --force authenticator-test' EXIT - curl --fail --retry 10 --retry-connrefused --retry-delay 1 --max-time 5 http://127.0.0.1:4195/ > /dev/null + # Docker can reset connections before Bun starts accepting requests. + curl --fail --retry 10 --retry-all-errors --retry-delay 1 --retry-max-time 30 --max-time 5 http://127.0.0.1:4195/ > /dev/null status=$(curl --silent --show-error --output /dev/null --write-out '%{http_code}' --max-time 5 'http://127.0.0.1:4195/api/staging-rp?id=invalid') test "$status" = 400 From e44a80ddf1ed591d84b9e9ff168d542f11b7885f Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 13:18:31 -0700 Subject: [PATCH 28/38] Redirect verify connector links while preserving their query --- api/http.ts | 3 ++- api/test/http-server.test.ts | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/api/http.ts b/api/http.ts index 41dabac..3e75946 100644 --- a/api/http.ts +++ b/api/http.ts @@ -57,7 +57,8 @@ export function createAuthenticatorHttpHandler(options: { staticRoot?: string } response = Response.json({ error: "Not found" }, { status: 404 }); } else if (request.method !== "GET" && request.method !== "HEAD") { response = new Response("Method not allowed", { status: 405 }); - + } else if (url.pathname === "/verify") { + response = new Response(null, { status: 302, headers: { Location: `/${url.search}` } }); } else { response = await serveStatic(url.pathname, staticRoot); } diff --git a/api/test/http-server.test.ts b/api/test/http-server.test.ts index 8df66e9..a83c57b 100644 --- a/api/test/http-server.test.ts +++ b/api/test/http-server.test.ts @@ -29,6 +29,21 @@ test("serves web assets and HEAD responses with security headers", async () => { await rm(staticRoot, { recursive: true, force: true }); } }); +test("verify links redirect to root with the original connector query and security headers", async () => { + const query = "?i=550e8400-e29b-41d4-a716-446655440000&k=a%2Bb%2Fc%3D&b=https%3A%2F%2Fstaging-bridge.worldcoin.org&return_to=https%3A%2F%2Fexample.com%2Fdone"; + for (const method of ["GET", "HEAD"]) { + for (const search of ["", query]) { + const response = await handler(new Request(`${origin}/verify${search}`, { method })); + expect(response.status).toBe(302); + expect(response.headers.get("location")).toBe(`/${search}`); + expect(await response.text()).toBe(""); + for (const [name, value] of Object.entries(AUTHENTICATOR_APP_SECURITY_HEADERS_V0)) { + expect(response.headers.get(name)).toBe(value); + } + } + } + expect((await handler(new Request(`${origin}/verify${query}`, { method: "POST" }))).status).toBe(405); +}); test("embedded demo routes and simulated endpoints are gone", async () => { for (const path of ["/demo", "/returned", "/api/v0/bootstrap", "/api/v0/session/create"]) { expect((await handler(new Request(origin + path))).status).toBe(404); From 88ff25e5ff3f51a48edfd372dbc67e67a4166bf6 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 13:23:09 -0700 Subject: [PATCH 29/38] Remove planning documents and experimental demos from the product tree --- README.md | 6 +- api/README.md | 2 +- docs/code-boundaries.md | 60 - docs/connector-bridge.md | 75 - docs/local-tee-connect.md | 64 - docs/production-gaps.md | 85 - docs/review/README.md | 7 - docs/review/authenticator-desktop.png | Bin 30864 -> 0 bytes docs/review/authenticator-mobile.png | Bin 23146 -> 0 bytes docs/review/dev-desktop.png | Bin 121579 -> 0 bytes docs/review/dev-mobile.png | Bin 100858 -> 0 bytes docs/review/request-desktop.png | Bin 42743 -> 0 bytes docs/review/request-mobile.png | Bin 34013 -> 0 bytes docs/rgbnet-browser.md | 65 - docs/selfie-capture-plan.md | 154 - docs/selfie-enrollment.md | 174 - docs/selfie-flow-comparison.md | 240 - docs/selfie-pr-integration.md | 123 - docs/wasm-upstream-plan.md | 205 - experiments/README.md | 33 - experiments/tee-demo/README.md | 131 - experiments/tee-demo/bun.lock | 788 -- experiments/tee-demo/eslint.config.mjs | 31 - experiments/tee-demo/index.html | 13 - experiments/tee-demo/package.json | 70 - experiments/tee-demo/postcss.config.mjs | 5 - .../tee-demo/public/images/world-id/README.md | 10 - .../tee-demo/public/images/world-id/close.svg | 3 - .../tee-demo/public/images/world-id/mark.svg | 45 - .../public/images/world-id/shield.svg | 3 - .../public/images/world-id/success.svg | 4 - .../scripts/create-selfie-admission-key.ts | 22 - experiments/tee-demo/scripts/dev.ts | 22 - .../src/components/AuthenticatorScreen.tsx | 480 - .../src/components/AuthenticatorSession.tsx | 55 - .../src/components/CredentialRequestSheet.tsx | 506 - .../src/components/CredentialVault.tsx | 174 - .../src/components/RequestPreflight.tsx | 52 - .../selfie-check/LocalTeeConnection.tsx | 33 - .../components/selfie-check/SelfieCamera.tsx | 211 - .../selfie-check/SelfieCheckScreen.tsx | 215 - .../components/selfie-check/camera-capture.ts | 63 - .../components/selfie-check/face-detector.ts | 103 - .../components/selfie-check/rgbnet-model.json | 6 - .../src/components/selfie-check/rgbnet.ts | 162 - .../components/selfie-check/rgbnet.worker.ts | 150 - .../src/hooks/useLocalTeeConnection.ts | 73 - .../tee-demo/src/lib/authenticator-session.ts | 118 - .../tee-demo/src/lib/client-context.ts | 47 - experiments/tee-demo/src/lib/demo-profile.ts | 77 - experiments/tee-demo/src/lib/flow-logging.ts | 37 - .../tee-demo/src/lib/passkey-secrets.ts | 36 - experiments/tee-demo/src/lib/passkey.ts | 123 - experiments/tee-demo/src/lib/prf-result.ts | 44 - experiments/tee-demo/src/lib/request-ip.ts | 13 - .../tee-demo/src/lib/requests/bridge.ts | 84 - .../tee-demo/src/lib/requests/connector.ts | 57 - .../src/lib/requests/incoming-request.ts | 77 - .../src/lib/requests/proof-request.ts | 199 - .../tee-demo/src/lib/selfie-issuance.ts | 88 - .../tee-demo/src/lib/selfie-issuer-server.ts | 298 - .../src/lib/staging-face-enrollment.ts | 40 - .../tee-demo/src/lib/staging-registration.ts | 123 - experiments/tee-demo/src/lib/tee-admission.ts | 66 - .../tee-demo/src/lib/tee-connection.ts | 119 - experiments/tee-demo/src/lib/walletkit.ts | 213 - experiments/tee-demo/src/main.tsx | 33 - .../tee-demo/src/pages/SelfieDemoPage.tsx | 126 - .../server/face-enrollment-helper/Cargo.lock | 9727 ----------------- .../server/face-enrollment-helper/Cargo.toml | 21 - .../server/face-enrollment-helper/README.md | 27 - .../face-enrollment-helper/build-config.toml | 7 - .../server/face-enrollment-helper/src/main.rs | 144 - experiments/tee-demo/src/server/http.ts | 54 - experiments/tee-demo/src/server/index.ts | 25 - .../src/server/routes/client-context.ts | 5 - .../src/server/routes/faux-credential.ts | 64 - .../src/server/routes/selfie-credential.ts | 56 - .../src/server/routes/selfie-enclave.ts | 71 - .../tee-demo/src/server/routes/staging-rp.ts | 31 - .../src/server/routes/tee-admission.ts | 61 - .../tee-demo/src/server/selfie-enclave.ts | 95 - experiments/tee-demo/src/styles.css | 108 - .../tests/authenticator-session.test.ts | 137 - .../tee-demo/tests/demo-profile.test.ts | 59 - .../tee-demo/tests/face-detector.test.ts | 141 - .../tests/fixtures/rgbnet-decode.json | 65 - .../tests/fixtures/rgbnet-resize.json | 32 - .../tee-demo/tests/flow-logging.test.ts | 24 - .../tee-demo/tests/http-server.test.ts | 47 - experiments/tee-demo/tests/prf-result.test.ts | 46 - .../tee-demo/tests/registration.test.ts | 180 - experiments/tee-demo/tests/rgbnet.test.ts | 79 - .../tee-demo/tests/selfie-camera.test.ts | 142 - .../tee-demo/tests/selfie-enclave.test.ts | 101 - .../tee-demo/tests/selfie-routing.test.ts | 121 - .../tee-demo/tests/tee-admission.test.ts | 133 - .../tee-demo/tests/tee-connection.test.ts | 157 - experiments/tee-demo/tests/walletkit.test.ts | 105 - experiments/tee-demo/tsconfig.json | 24 - experiments/tee-demo/vite.config.ts | 23 - web/README.md | 32 + 102 files changed, 35 insertions(+), 18850 deletions(-) delete mode 100644 docs/code-boundaries.md delete mode 100644 docs/connector-bridge.md delete mode 100644 docs/local-tee-connect.md delete mode 100644 docs/production-gaps.md delete mode 100644 docs/review/README.md delete mode 100644 docs/review/authenticator-desktop.png delete mode 100644 docs/review/authenticator-mobile.png delete mode 100644 docs/review/dev-desktop.png delete mode 100644 docs/review/dev-mobile.png delete mode 100644 docs/review/request-desktop.png delete mode 100644 docs/review/request-mobile.png delete mode 100644 docs/rgbnet-browser.md delete mode 100644 docs/selfie-capture-plan.md delete mode 100644 docs/selfie-enrollment.md delete mode 100644 docs/selfie-flow-comparison.md delete mode 100644 docs/selfie-pr-integration.md delete mode 100644 docs/wasm-upstream-plan.md delete mode 100644 experiments/README.md delete mode 100644 experiments/tee-demo/README.md delete mode 100644 experiments/tee-demo/bun.lock delete mode 100644 experiments/tee-demo/eslint.config.mjs delete mode 100644 experiments/tee-demo/index.html delete mode 100644 experiments/tee-demo/package.json delete mode 100644 experiments/tee-demo/postcss.config.mjs delete mode 100644 experiments/tee-demo/public/images/world-id/README.md delete mode 100644 experiments/tee-demo/public/images/world-id/close.svg delete mode 100644 experiments/tee-demo/public/images/world-id/mark.svg delete mode 100644 experiments/tee-demo/public/images/world-id/shield.svg delete mode 100644 experiments/tee-demo/public/images/world-id/success.svg delete mode 100644 experiments/tee-demo/scripts/create-selfie-admission-key.ts delete mode 100644 experiments/tee-demo/scripts/dev.ts delete mode 100644 experiments/tee-demo/src/components/AuthenticatorScreen.tsx delete mode 100644 experiments/tee-demo/src/components/AuthenticatorSession.tsx delete mode 100644 experiments/tee-demo/src/components/CredentialRequestSheet.tsx delete mode 100644 experiments/tee-demo/src/components/CredentialVault.tsx delete mode 100644 experiments/tee-demo/src/components/RequestPreflight.tsx delete mode 100644 experiments/tee-demo/src/components/selfie-check/LocalTeeConnection.tsx delete mode 100644 experiments/tee-demo/src/components/selfie-check/SelfieCamera.tsx delete mode 100644 experiments/tee-demo/src/components/selfie-check/SelfieCheckScreen.tsx delete mode 100644 experiments/tee-demo/src/components/selfie-check/camera-capture.ts delete mode 100644 experiments/tee-demo/src/components/selfie-check/face-detector.ts delete mode 100644 experiments/tee-demo/src/components/selfie-check/rgbnet-model.json delete mode 100644 experiments/tee-demo/src/components/selfie-check/rgbnet.ts delete mode 100644 experiments/tee-demo/src/components/selfie-check/rgbnet.worker.ts delete mode 100644 experiments/tee-demo/src/hooks/useLocalTeeConnection.ts delete mode 100644 experiments/tee-demo/src/lib/authenticator-session.ts delete mode 100644 experiments/tee-demo/src/lib/client-context.ts delete mode 100644 experiments/tee-demo/src/lib/demo-profile.ts delete mode 100644 experiments/tee-demo/src/lib/flow-logging.ts delete mode 100644 experiments/tee-demo/src/lib/passkey-secrets.ts delete mode 100644 experiments/tee-demo/src/lib/passkey.ts delete mode 100644 experiments/tee-demo/src/lib/prf-result.ts delete mode 100644 experiments/tee-demo/src/lib/request-ip.ts delete mode 100644 experiments/tee-demo/src/lib/requests/bridge.ts delete mode 100644 experiments/tee-demo/src/lib/requests/connector.ts delete mode 100644 experiments/tee-demo/src/lib/requests/incoming-request.ts delete mode 100644 experiments/tee-demo/src/lib/requests/proof-request.ts delete mode 100644 experiments/tee-demo/src/lib/selfie-issuance.ts delete mode 100644 experiments/tee-demo/src/lib/selfie-issuer-server.ts delete mode 100644 experiments/tee-demo/src/lib/staging-face-enrollment.ts delete mode 100644 experiments/tee-demo/src/lib/staging-registration.ts delete mode 100644 experiments/tee-demo/src/lib/tee-admission.ts delete mode 100644 experiments/tee-demo/src/lib/tee-connection.ts delete mode 100644 experiments/tee-demo/src/lib/walletkit.ts delete mode 100644 experiments/tee-demo/src/main.tsx delete mode 100644 experiments/tee-demo/src/pages/SelfieDemoPage.tsx delete mode 100644 experiments/tee-demo/src/server/face-enrollment-helper/Cargo.lock delete mode 100644 experiments/tee-demo/src/server/face-enrollment-helper/Cargo.toml delete mode 100644 experiments/tee-demo/src/server/face-enrollment-helper/README.md delete mode 100644 experiments/tee-demo/src/server/face-enrollment-helper/build-config.toml delete mode 100644 experiments/tee-demo/src/server/face-enrollment-helper/src/main.rs delete mode 100644 experiments/tee-demo/src/server/http.ts delete mode 100644 experiments/tee-demo/src/server/index.ts delete mode 100644 experiments/tee-demo/src/server/routes/client-context.ts delete mode 100644 experiments/tee-demo/src/server/routes/faux-credential.ts delete mode 100644 experiments/tee-demo/src/server/routes/selfie-credential.ts delete mode 100644 experiments/tee-demo/src/server/routes/selfie-enclave.ts delete mode 100644 experiments/tee-demo/src/server/routes/staging-rp.ts delete mode 100644 experiments/tee-demo/src/server/routes/tee-admission.ts delete mode 100644 experiments/tee-demo/src/server/selfie-enclave.ts delete mode 100644 experiments/tee-demo/src/styles.css delete mode 100644 experiments/tee-demo/tests/authenticator-session.test.ts delete mode 100644 experiments/tee-demo/tests/demo-profile.test.ts delete mode 100644 experiments/tee-demo/tests/face-detector.test.ts delete mode 100644 experiments/tee-demo/tests/fixtures/rgbnet-decode.json delete mode 100644 experiments/tee-demo/tests/fixtures/rgbnet-resize.json delete mode 100644 experiments/tee-demo/tests/flow-logging.test.ts delete mode 100644 experiments/tee-demo/tests/http-server.test.ts delete mode 100644 experiments/tee-demo/tests/prf-result.test.ts delete mode 100644 experiments/tee-demo/tests/registration.test.ts delete mode 100644 experiments/tee-demo/tests/rgbnet.test.ts delete mode 100644 experiments/tee-demo/tests/selfie-camera.test.ts delete mode 100644 experiments/tee-demo/tests/selfie-enclave.test.ts delete mode 100644 experiments/tee-demo/tests/selfie-routing.test.ts delete mode 100644 experiments/tee-demo/tests/tee-admission.test.ts delete mode 100644 experiments/tee-demo/tests/tee-connection.test.ts delete mode 100644 experiments/tee-demo/tests/walletkit.test.ts delete mode 100644 experiments/tee-demo/tsconfig.json delete mode 100644 experiments/tee-demo/vite.config.ts create mode 100644 web/README.md diff --git a/README.md b/README.md index 8a4f5f8..c69017e 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ bun run dev Open **http://localhost:4173** in a browser with WebAuthn PRF support. -For camera guidance, [install the RGBNet model](docs/rgbnet-browser.md). +For camera guidance, [install the RGBNet model](web/README.md#camera-guidance). Wallet and proof flows work without it. ## Where things live @@ -25,10 +25,8 @@ Wallet and proof flows work without it. - [`web`](web): React UI, passkeys, wallet, camera and proof requests. - [`api`](api): Bun server, API routes and server configuration. - [`tests`](tests): browser tests and shared integration fixtures. -- [`experiments`](experiments): older demos, excluded from the app build. Each app owns its dependencies. Bun serves the frontend and API from one origin. -See [code boundaries](docs/code-boundaries.md) for the remaining packages and planned work. ## Check your changes @@ -41,4 +39,4 @@ bun run test:browser ``` To run the compiled app: `bun run build && bun run start`. -[Container instructions](api/README.md#container) · [App request format](docs/connector-bridge.md) +[Container instructions](api/README.md#container) · [App request format](web/README.md#app-requests) diff --git a/api/README.md b/api/README.md index 0886817..61be0de 100644 --- a/api/README.md +++ b/api/README.md @@ -28,7 +28,7 @@ docker run --rm -p 127.0.0.1:4173:4173 web-authenticator The image runs as a non-root user and contains the compiled API and web assets. It listens on `0.0.0.0:4173` inside the container. Hosting beyond localhost requires -HTTPS for camera and passkey access. Install the [RGBNet model](../docs/rgbnet-browser.md) +HTTPS for camera and passkey access. Install the [RGBNet model](../web/README.md#camera-guidance) before building if camera guidance is needed. This packages the app; AWS hosting, Redis and secrets belong in deployment diff --git a/docs/code-boundaries.md b/docs/code-boundaries.md deleted file mode 100644 index 6098ae4..0000000 --- a/docs/code-boundaries.md +++ /dev/null @@ -1,60 +0,0 @@ -# Code boundaries and readiness - -The default app is a staging-only product implementation. No directory is labeled -“production ready”: production enrollment, recovery and deployment validation are -still incomplete. A file's location states its role, not its security approval. - -| Location | Role | Current status | -| --- | --- | --- | -| `web` | React UI, browser wallet, camera and proof requests | Real staging registration, vault, bridge and proof flow; no Selfie enrollment | -| `api` | Bun server, routes and server configuration | Serves web assets and staging RP lookup; Promon and Redis are not implemented | -| `packages` | Shared libraries and contracts | Per-package validation required; current admission policy/contracts are not wired into the app | -| `tests` and `*/test` | Regression tests and fixtures | Mocks are test inputs, not live-service validation | -| `experiments/tee-demo` | Preserved standalone demo | Synthetic enrollment, placeholder integrity, local TEE integration; never a product dependency | -| `docs` | Current architecture and historical investigations | Historical enrollment/integration notes are explicitly marked | - -## Enforced separation - -- Root tests use explicit directory paths, so Bun does not also select experiment tests by substring. -- `web` and `api` have separate dependencies, TypeScript configurations and builds. Bun serves both outputs from one origin. -- Root build/start commands target these two apps; experiments are outside workspaces. -- ESLint rejects product imports from experiments and fixture directories. -- ESLint rejects browser imports of API modules and server imports of browser implementation code. -- Vite rejects API, experiment and test modules in browser and worker builds, including dynamic imports. -- HTTP regression tests require the removed synthetic enrollment/capability routes to return 404, including on localhost. -- UI regression tests require missing Selfie credentials to leave proof approval unavailable, without offering synthetic issuance. - -The synthetic adapter and identical Rust helper were removed from product paths; -the existing experiment retains them. Root commands cannot enable them via an -environment flag. Existing vaults, operation files, resume tokens and backend -records are not deleted. Previously issued staging credentials remain usable under -the existing staging verification rules. - -## Where new code belongs - -Promon validation, session storage and rate limiting belong in `api`. -Browser integration belongs in `web`. Add shared API schemas under -`packages` only when both apps need them; neither app currently depends on the -legacy admission/contracts packages. Those packages retain their own regression -coverage. The root package owns shared development tools and cross-app tests. - -One container contains both builds. Separate workspaces do not require separate -services. Deployment infrastructure belongs in the deployment repo. - -## Requirements before real enrollment can enter product code - -- Resolve a durable enrollment identity and its ownership proof separately from the WalletKit credential subject. -- Obtain accepted capture/model output and exact encrypted AMPC shares with verified binding. -- Construct actual PCP associated data and its canonical hash; implement custody and recovery. -- Agree and implement signup-service verification of the Gateway/TEE integrity bundle, expiry and replay protection. -- Take embedding metadata from the verified pipeline output rather than fixture constants. -- Validate real enrollment, failure/recovery paths and production trust configuration before enabling issuance. - -Endpoint addresses, schema identifiers, protocol versions and resource limits may -legitimately be fixed. Synthetic biometric input, fabricated hashes and test -integrity tokens may not stand in for missing production behavior. - -Keeping experiments tracked means a merge still contains demo source, even though -it is excluded from runtime builds. If main must contain no demo source at all, -remove `experiments/` in a separate, explicit cleanup; do not call this separation -production certification. diff --git a/docs/connector-bridge.md b/docs/connector-bridge.md deleted file mode 100644 index 4c1413f..0000000 --- a/docs/connector-bridge.md +++ /dev/null @@ -1,75 +0,0 @@ -# Native connector and bridge flow - -The authenticator accepts World ID connector query parameters at `/`. -Old `/verify` links redirect to `/`, preserving their connector parameters. -This code is independent of the relying-party demo's request generation. - -- `src/requests/connector.ts`: strict `i`/`k` parsing, official bridge allowlist, - safe explicit return URLs. Only ordinary URL/QR links are supported, not invite codes. -- `bridge.ts`: bounded fetch, browser-only AES-256-GCM decryption, fresh-IV encrypted - response upload with PUT. The bridge key never goes to our server or browser storage. -- `proof-request.ts`: staging-only V4 uniqueness payload parsing, action/hash binding, - expiry, registry-backed RP signature validation, and vault credential matching. -- `/api/staging-rp`: fixed World Chain RPC / staging RP registry lookup. Caller controls - only a uint64 RP ID. It returns the active RP signer and OPRF key, not secrets. -- `incoming-request.ts`: turns the bridge payload into a request the - drawer can review. No signed request fields are rewritten to fit available credentials. -- `CredentialRequestSheet`: opens automatically, shows the actual requested schemas, - blocks unsatisfied or unsupported requests, and requires approval before generation. - Approval generates and automatically delivers the encrypted proof response. A - failed delivery retains the same proof for an explicit retry; it does not repeat - enrollment or proof generation. Successful delivery follows the return URL when supplied. - -Credential routing checks the vault before offering enrollment. A missing Selfie -credential opens setup automatically only when Selfie is required by the request -and enrollment can satisfy the complete constraint tree. Requests accepting -Selfie or another issuer show an explicit Selfie choice. Orb-only requests never -fall back to Selfie: they use an eligible Orb credential or explain that one is -missing. The sheet displays the AND/OR requirements and can recheck the vault; -it does not implement Orb enrollment or transfer from another authenticator. - -The connector query is removed from browser history after capture, and the app uses -`Referrer-Policy: no-referrer`. Reloading that cleaned page loses the in-memory request; -open a fresh connector from the RP to continue. Logs include steps/status only. - -## iOS reference - -Read-only reference: worldcoin/world-app-ios at -`468ef889125c4bad28c4b0b27686a1f6f20ea454` (latest remote `main` checked on 2026-10-01). -The local checkout was on a different branch; referenced files were fetched through -the GitHub API at this exact commit without modifying that checkout. -Bridge parsing, preload, crypto, networking and response-envelope files match the -local checkout. The legacy shell routing files differ, and the latest versions were -read to confirm the same prepare → preload → credential-request sheet flow. - -- `Sources/WorldAppLegacy/Sources/WorldIDAppLib/IDApp/IDAppReducer+UniversalLinks.swift`: incoming link routing. -- `Sources/WorldAppLegacy/Sources/RelyingPartyResponder/RelyingPartyResponderPreload.swift`: - request loading, metadata and credential checks before presentation. -- `Sources/WorldAppLegacy/Sources/RelyingPartyResponderCore/WorldIDBridge/AnonymousWorldIDBridgeClient.swift`: - allowlisted bridge fetch and response submission. -- The sibling `WorldIDBridgeCryptoService.swift`: AES-GCM, ciphertext followed by tag, - base64 IV/payload wrapper. -- `Sources/WorldAppLegacy/Sources/RelyingPartyResponderCore/Networking/WorldIDAPI.swift`: - GET request and PUT response routes. -- `WorldIDBridge/Models/WorldIDBridgeV2_1Response.swift`: `proof_response` response envelope. - -## Scope - -No iOS build or edits. No automated functional tests, per user preference. -User-presence/face-auth and identity attestation requests are visibly unsupported; -passkey user verification is not substituted for those protocol requirements. -Session proof types and legacy V3 requests are also rejected explicitly. -Native integrity bundles cannot be produced here. A staging RP verifier may reject -an otherwise returned proof if its policy requires such a bundle. Transport delivery -is shown separately from RP verification, which happens at the RP. - -The staged registry deployment address comes from the local World ID protocol -`contracts/deployments/core/staging.json`. App ID/action presentation does not claim -a verified brand or domain; the RP signature establishes the registry signer only. - -## Browser check - -The hosted RP created a real IDKit request targeting localhost `/verify`. The -authenticator fetched/decrypted it and validated RP c8b34be5b84c6722 against the -staging registry. It then waited for the user's passkey unlock. Proof generation, -response upload and RP verifier acceptance were not confirmed by that check. diff --git a/docs/local-tee-connect.md b/docs/local-tee-connect.md deleted file mode 100644 index 37c9821..0000000 --- a/docs/local-tee-connect.md +++ /dev/null @@ -1,64 +0,0 @@ -# Local TEE connection - -The demo supplies its configured access token automatically. There are no token -input fields. Clicking **Issue selfie credential** (or **Demo challenge**) opens -the camera and starts this independent connection sequence: - -1. `POST /api/tee-admission` obtains the local demo token from the development backend. -2. `POST http://127.0.0.1:8010/v1/connect` sends it in the Authorization header. -3. The response appears in the **TEE connection** box, separate from **Camera / ONNX**. - -**Retry TEE connection** fetches the configured token again without restarting -the camera. Leaving the demo cancels an in-flight admission/connection request. -Tokens are never put in logs, persistent browser storage, URLs or the JS bundle. - -## Development setup - -Generate the private ten-minute token and start `di-local-face-host` from the -sibling `biometrics-tee` repository using its `docs/local-face-images.md`. -Configure this demo's `.env.local` to use the **same file and browser origin**: - -```sh -LOCAL_TEE_TOKEN_FILE=/private/path/token.json -LOCAL_TEE_ORIGIN=http://localhost:3100 -VITE_TEE_BASE_URL=http://127.0.0.1:8010 -``` - -Run `bun run dev`. The development launcher enables `LOCAL_TEE_DEMO_ADMISSION=1` -for its backend. The provider is disabled by default and always disabled when -`NODE_ENV=production`. It requires the exact configured HTTP loopback origin, -POST, JSON content type and `Sec-Fetch-Site: same-origin`. Responses are no-store. -Open `http://localhost:3100`, unlock, and use **Developer menu → Issue selfie credential**. - -This local provider intentionally serves the shared demo credential to callers -on the configured demo origin. It is not the production proxy's user/device -authentication. Do not expose or tunnel this development provider publicly. -The production proxy will replace token provisioning and authenticate callers. - -The provider reads the private token file on each request and refuses invalid, -expired or permissively readable files. It does not extend token expiry or mint -credentials the TEE has not accepted. To rotate, generate a new token file, point -both services at it, and restart them. Browser users do not need to paste tokens. -Never place the token itself in `VITE_*` or source code. - -## Results - -Each browser network operation has a five-second deadline and a 4 KiB response -limit. The client refuses redirects and invalid/expired responses. `connect` -also validates protocol version, local mode and face-processing capability. - -- Admission provider **503**: local token is absent, invalid or expired; no TEE request is sent. -- TEE **403**: token is wrong/expired or the supplied Origin is not allowed. -- TEE **503**: authorization succeeded, but face processing is unavailable. -- TEE **200**: accepted only with a compatible response advertising a ready face worker. - -The local host now launches the real biometric worker in Docker. Once the worker -is ready, authorized connect returns **200**; worker failure returns **503**. -The authenticated image API runs the vanilla-selfie pipeline and marks results -`mode: local-docker`, `attested: false`. No image is uploaded by the browser yet. -Production attestation, encryption, enclave integration and the camera upload -action remain pending. -Every eventual image upload must carry authorization again; the local host -already enforces that rule. Production builds keep uploads disabled. - -Tests: `bun test tests/tee-admission.test.ts tests/tee-connection.test.ts`. diff --git a/docs/production-gaps.md b/docs/production-gaps.md deleted file mode 100644 index c6ea7cb..0000000 --- a/docs/production-gaps.md +++ /dev/null @@ -1,85 +0,0 @@ -> **Historical demo assessment.** The product now uses published WalletKit 0.27.1 -> without a local package patch. Synthetic enrollment is excluded from the main -> app. See [current boundaries and readiness](code-boundaries.md). - -# Demo → production gaps - -## Validated milestone - -The user reported completing **synthetic selfie enrollment → staging credential -issuance → encrypted browser storage → IDKit selfie request → proof generation → -successful staging contract verification** on October 1, 2026. This is user-run -end-to-end validation, not an agent-run functional test or a security assessment. - -The passkey PRF derivation, WalletKit authenticator, encrypted credential vault, -AMPC share generation/sealing, staging issuer signature, and credential proof are -real. The face embedding is synthetic. Share creation is **not** simulated: the -helper uses the AMPC library and seals shares to staging party public keys. - -## 0 — Directly missing relative to the mobile authenticator flow - -Comparison baseline is the reviewed iOS implementation, not a claim that every -Android path was checked. These are mobile-parity gaps in the authenticator or -its end-to-end issuer/RP integration; ownership is identified separately. - -| Gap | Current demo → mobile-parity work | Owner | -| ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -| Real enrollment biometrics | Synthetic embedding → real capture, quality checks, PAD/liveness and model output. | Biometric SDK + authenticator | -| Enrollment integrity and data binding | Staging exception, synthetic associated-data hash and omitted attested share hashes → authenticated capture/model/share/PCP binding. Web needs an issuer-approved mechanism; native App Attest is not directly available to a website. | Integrity/issuer services + authenticator | -| PCP creation, custody and recovery | Credential vault only → complete attested package, encrypted PCP persistence/backup, recovery and its deletion/update lifecycle. | Oxide/PCP SDK + authenticator | -| Local enrollment identity custody | Helper stores a separate enrollment identity seed on the localhost server → custody on the intended user-device boundary. Having a separate face/enrollment identity is not itself a mobile-parity gap; its current custody location is. | Enrollment SDK + authenticator | -| Live presence when sharing | `require_user_presence: false`; presence-required requests blocked → actual selfie/presence verification bound to the request. Passkey unlock does not substitute for it. | Biometric SDK + authenticator | -| Proof-response integrity and trusted disclosed claims | Actual score attached, but no mobile-style response integrity bundle → bind the disclosed score and any presence result to the proof/request through the accepted integrity protocol. | Authenticator + integrity service | -| Equivalent RP acceptance policy | Direct contract verification only → Developer Portal verify or an approved equivalent that enforces required integrity/claims/presence policy. This is an **RP-side integration gap**, not code the mobile authenticator itself owns. | RP + verifier | - -## 1 — Missing, but not immediately necessary for the next staging milestone - -These are follow-up work, design decisions, or items removed from the immediate -mobile-parity gap list. Completed items are explicitly marked. "Not immediately necessary" does **not** mean optional -before exposing a production system to real users/data. - -| Work | Why it is in category 1 | Owner | -| ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | -| `proveCredentialSub` in enrollment | Current iOS exposes it for developer tooling but does not send it in live selfie enrollment. Confirm issuer protocol/enforcement before adding it as a requirement. | WalletKit + issuer + authenticator | -| RP nullifier replay protection — **implemented** | RP-owned, not an authenticator gap. The Worker now atomically consumes nullifiers across fresh requests for the same staging RP/action/credential schema, in addition to single-use nonces. Kept here to track the item removed from the missing-parity list. | RP Worker | -| Supported browser SDK and removing the native helper | The experimental WASM package already performs the validated wallet/proof flow. Upstream worker APIs, supported releases and browser-compatible enrollment primitives are packaging/runtime work; the custody boundary remains category 0. | WalletKit + enrollment SDK | -| Expanded session/account UX | Explicit sign-out/lock, idle policy, authenticator removal, account discovery and multi-tab handling can follow the current single-browser test. Do not assert a particular mobile idle/session policy without tracing it. PCP custody/recovery is separately category 0. | Authenticator + WalletKit | -| Production passkey domain and web hardening | Localhost works for staging. Production RP-ID/origin selection, provider compatibility, script/dependency policy and XSS defenses must be resolved before production rollout. | Web authenticator | -| Production service operations and privacy | Replace local-process assumptions with appropriate backend authorization, durable operation handling, abuse controls, restricted debug surfaces, privacy-aware telemetry, retention and incident handling before public use. | Each deployed service | -| RP business-action completion | Nonce replay protection and atomic persistent nullifier consumption across fresh requests are now implemented. Coupling verification to a real product action, idempotent fulfillment and retention policy is subsequent RP application work. | RP application | - -Not missing: real AMPC share generation/sealing, browser credential encryption, -issuer-signature checking, credential proof generation/contract verification, and -RP nullifier reuse protection. The RP ledger covers new verifications only; old -demo successes cannot be backfilled because their nullifiers were not retained. - -## Important distinctions - -Latest iOS `main` checked at `94fed50fe740123065f8b9fd6e24dea827381347` -(October 1, 2026) exposes `proveCredentialSub` in AuthenticatorClient and calls it -from the developer ownership-proof action. Its live selfie issuer currently calls -`enrollFacePcpWithIntegritySigner` with `faceIdentity` and `sub`, without supplying -a v4 ownership proof. Therefore ownership proof is category 1: a protocol/design integration -question, not a claim that the current iOS selfie flow already sends that proof. Determine issuer enforcement requirements before calling it mandatory. - -- A successful proof establishes the contract's credential/account/request - conditions. It does not turn synthetic input into verified human biometrics. -- A zero score is the issuer-returned claim, not a locally fabricated score. This - demo still does not authenticate that disclosed value for RP policy decisions. -- Local PRF evaluation is a vault-unlock ceremony, not a backend login assertion. - If a production backend authenticates sessions using WebAuthn, that requires its - own server-issued challenges and assertion validation. Such a backend login is - not automatically necessary for a purely local vault unlock. -- Clearing browser storage, deleting a password-manager passkey, removing an - on-chain authenticator, and deleting issuer-side biometric enrollment are - separate operations. -- The current proof-response path lacks the native app integrity bundle accepted - by Developer Portal. A production web integrity policy is an integration/design - requirement, not merely a missing hardcoded field. - -Implementation references: [selfie enrollment](selfie-enrollment.md), -[preserved enrollment adapter](../experiments/tee-demo/src/lib/selfie-issuer-server.ts), and -[current WalletKit adapter](../web/lib/walletkit.ts). - -The RP verifier and replay ledger described above belong to the separate local -playground under ignored `demo/`; their implementation is not included in this branch. diff --git a/docs/review/README.md b/docs/review/README.md deleted file mode 100644 index f5ec429..0000000 --- a/docs/review/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# UI review screenshots - -Captured from the built app on October 14, 2026, in Chromium: home at 393×852 -and 1280×900, developer mode at 320×568 and 1280×900, and requests at 393×852 -and 1280×900. Request screenshots use a test-only signed Orb request and mocked -registry/bridge endpoints. These images show responsive UI validation, not a -live staging enrollment or RP verification. diff --git a/docs/review/authenticator-desktop.png b/docs/review/authenticator-desktop.png deleted file mode 100644 index 7d8a8dc3b6d417662c08528b482dd80fb651798f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30864 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 OVrF7toM+^8_J07y-z3cd diff --git a/docs/review/authenticator-mobile.png b/docs/review/authenticator-mobile.png deleted file mode 100644 index 401618a77c6a914a4437a5841132fcc08e9062b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23146 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 Qd7nV+5iU0MRu_~01@txEUH||9 diff --git a/docs/review/dev-desktop.png b/docs/review/dev-desktop.png deleted file mode 100644 index 12077138decbaeb4b9719061e824a918e4535178..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121579 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 M^2wu_ie}#b2U^@CApigX diff --git a/docs/review/dev-mobile.png b/docs/review/dev-mobile.png deleted file mode 100644 index e2a4e921826de08235986cf803699e6e1f2f72e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100858 zcmeFZbyQX1`!6Wn(v5V3gtT;XNI?{kE>Y=_mhO=5lCnSvk&x~bB$Sj!P#Po!&OChQ z{_Y=hXU&@V3kbR-fgMh7PBnCZK3Q+MP6AX z9*1kFOQ-VRe+}VCwkG?MK{jBuFNu^xJNJt4@}0k$UWr=Lx$Ib}Mh4gY*MEPH=itfX zHY*N{7ON7{OL?E}S$?rj=QYy%rT|<;B?e}A*{{9>7TX#L8!iTbi#(k-U9t$I) za8Hvl?HcVT`7Ur|!mc8%;*%MP1Sp8^N4;`e8wfWRMTFp9L49v&&*zaGs=>na^5U^sR}vLHrVG z_Z=5nn$?n+-|3a!Q7>}+HIzj_E4n(Ek+2kv5Y}(Ypy(R%j!+24rDj7+)jSJ_Xn2 z1Jw!5nu45Y?0zKzT{x_TwGGW?C{x#cn3CvVtoP-u*t1V;FI)om-Iu#?+zd(-3a4hv{nDadUg@g1{@E1bXS0^wQ6UbA+Fc)jSzp{{5zaU6uUnRpiZEcfI#4 z{$?j&lJ6PU4PDpM_Nz zdljGC#%ILE;rVL+a(Ar#A58kjW)9W<@sih(ehl1U;8b=DwfBn?4oUb(-p!$LNM^QCSUwJzPvabxxS^Z z-|7~tyg2#k)xNn9@NXNQG-mn5cHM&K&Rjogfh@B3wN{SD6N{z=)BaY}uccr6l30Fo zunQX1yD-^ByNgA9h3C55l1W7@gi>MN+Tyi4&pNQSS?{`XezKd8xXKekC*|#uD%)b( z;I{VbYfk87g<(~Qzh;~IFmuGpq

      i0gE<^1iOM4wXQ2Y<}Z%Y8fut+X0vIeKRGsO z_B}F5I6GY5o%uY-O1SrQZXhv_$+z#)>YQa)F?lyhmELE!`Go$(-_fnO%-Ca?c)4$-59G>+u1g7#B412#!8c~j==+_BM=QDluT9Z1ZuSBOH;No<@ z=dcG(*Tv~d0)k4v!tAHX`@I`n1E*QS_+ofSxm1tiEhGALiS7Xrpg5bXIxwC;QdV@Y1cN!C=#y+df@x@ymv z^;a$(g5u7ePnt#=2+#k;pgKKR8~oJdFkS7rJtOku+hR0Fex>UHY|EK4gNh6@-{>Q6 zx4pyiV&GBu z!x9~DtO+wkTBq|=G#z}Xn`ho=Yc~nJJUV5sCt z4L4822P&oN`UL6Y%(>;^JV{cQfrpPWQDUj=2UQtfD49k66#r8gN#7AdivMZoC#xnN zXZo$mTh+sJf*%m)OVAx%4^qbh0T7C zSs1lS*u0@<`jg#AmQbXOrlWD4lOr>8JZaV{k41=`o>7=%-@y-K=jNpdTD{kr{XaW4 ze+{I?7IyQuUMM&m4+)J}%qE73KicrIZgL^w>FMt2k-a9(?)+4aIOwaVpcX}8DtW|GOl$fJhPF2J*0az-_1;H z;ShN0_WR!3drVa?4u5^^RQ>$yJGXg@|0&Oktw|EyM?Es_S4u@pr~DOE_lAU!q0MVX}$ z1hfa_N9QY9fyhg-1OBiL!7Y|S^d&=eQW2_#{uGY;SEUz3%5g6`0{k1De%?J>ko6(x zk;jj+krqQO(43*@XX3_`Q8KLWT_o8G&ZcX^ZA$IGbvFtwt+fi zb~Rr4dP@6Q<8BMjbAkMtqB8`kUP;GN?J_IX9rW^&S;GQNQB{hPO_eLfsI(X8By<$v ztUYu~8EJNomRzKC8WT>M%PKpJ}il1xK(Vy=^`L|VW)C9K4crCm*v9D-Wc@m$gkdncZqRYSpj$DwB0i=X*&i^VLFJDLPm%HX{=h)`WX`>0Cc0Pc(sE*rn((o>#g(Pt z5d2UF9)6z%aYK@|1>-HtY^$3|y%AIx^o*8xzs=fvj*^+pI&Y)0>4`|yGI=Qz4K}mb z*h+_5hL{cQTwVU_7fG(L;vMiEqnlE1S~m6iX}e6=y=>6`+|>?lx8GkyyTz+y>OxIT zflwQ_r`1B6qvS6lj<$3%7|Y`ilspQtjk!|r)}LbFaMSH}63WIUSk_BE`Nl{Z$XuWi z^&yCVsDK(zh{3=4d%wMqrGY0OTmAjhxq8>F2po&ENQMB$NZ#MJ>7#_*B-Ykn1vh&> zv8;Y1<{rc^tYRlqAd_nw;`BH>SS#;MJ)9F9;E*PZQmsmI5%9j^Z#i8)80620WsX+1 zWex67Bx1&(K5^5tQmGz~`>vR-cq%s|GW_z^rB*cNrPx?Ez7Km=&{!8L$)MDB!kI}r z(}yzvapT_T<-OVNx}(N{D4W)KKH^llE31g0L#l38?6DPB8M`}X+?1r$WlwkX+bAVg zi-`8vuH2v4=-f03@JLh>@MisnT`S%$V);bw*GLyOe2=pB5b|o7c>|Xt*E=wVeN@p` zO8Y2V>C`B(7e4jc`Z>P;zT(3OtoO%aj<`(y7tpqc^9F^4 z+|Y6ICq6>K-p3t845sY=Ky0UaEAr8FR*Vmr$qA6Ij#$flD3AD-f&MoKkfREcke;nJ zSLTK9$kKFNnhbO+N9ze(nE2u>RK#`G4t#=+Uk*+X80-5GnEE+~aY= zAYUUd8~~MudSEd6O-DbBN!c~0n*C0o0*2Pf91aQHlJpcFP!7XAEn>F+QJy2_e6#Kd zFqGIpcR2j4$p7qsxE6Ts7$+rVcGs7;^}n+1@7NBIxsjqRqGI4utt~4^?{%v{?}Fp~ z;JyAkU_QS_3JO?%T*IHTersj%XMmPqO#~YifBs7g0MwnYo6Fn{JScAY=1NceY@^ri zeI03AtKKT>UZ>VePbC@ey+wc^G~Kr*&>Fj-R343K@RzD3Ex*ojdT-KD9Zd{HVW#FO zDc<&Moh)#YSc=9kONhoOcyT;E@$UZiBveR(TX!co zU%o>133kuK#5V^icAn~5@Sa`&qjmt4SV{deJ%@2EMov)FSiYv-3G|4sq z&^Vbu!=FwPDX(yBPF67NB$@}DVR+p(%U(Uqac(iHb(nUM`!&d2uqozKG2Taa$@6%(gVpeBZQa1dL zqn)3AqeaTVE~v(s`O_r5oRBv=BMFh46|JZ*nODg7{P0^aWyOBU-8`u%+ye@H`FC6= zLFW9eu8G{IZ^JHoi|s)*dq5v`9}lE*;k>^l`GFKMvv(~!!hlSCG65QXO_AzrjickS z0LeSeiRTMwWedO4f2XJ7N=jZ?=CT54Z&((2alfT#`*?enRO*d-8h3~88=Zoy)f64? z_hAx=A|(~@DZeu6mWgN-8V9DTtUvh1uNUCdZce;AJRFgYlnm2?9c(35X7-ARWcYvo z;1cb;Y+cv30l0sSK8L@gjtEYTWzB)ue0?2HD~3s@z=Xa8ze!Md>+$YXheUfSuEptQj_3BX8xU6nZ`fX!Pl4YF; zrmG+>$<)wOi(VH$Pleq;TknA{5%t83EPT=_d1VFRl&({!Y1jgdDuH9DI2=%tq3i zz)&D)9dS8uuL-m$6~sqaE`QXUhaVmt+rv}ryi{O`NUWf_>+$vl!K2Oyf}?_nerj@; zY8Co<5)D$>Yb5}2SP=^KBLM1zbx+(<6RgkuuY^nWYu}?k1^x$!@9!UICEuU!^y97RuV;c#xjB*Sg{+ED^#))&mpv%^0eXkD-*F~- z)$`4V)pLZh7kibKov?}i1m~^7-ioIYIfthnchXx7^$Bz~sdKDa5S^$c+*TLcLv?b+ zne1i$Z3$hrN5sAj$}90Z*(p{{IIif=5!=1xHRrmX=LNT2G$h&Jqlv`Ru@aCwx2CE( zTV;T*j=#~FMBWyU#GR6c{qeBu;cX<6;DU@x&t^DRf=TRXYx=M_K?b*h3wD?@lx&1{cql6|5jvRyg@MQ`6d`ZUkFS_&W)okYA5EIS(aPz;_5`$Aezw<1*eOkM7w!~+ z*qq!}9<2B7^FP8*zP*BjpR`a~!s-r?ov>&X>iVhqeX6!^g^D1~s87(Y4^_vI{znh? z!2f@!5&wS~!XO+;3K#-Tmp}pFop`Iu^88Pm&=r)mvWFk63N6}0*wj<8WiCMNy6d?` zg_p+tU?5YlSV9)+`DcrEREii%e)^i!qgt~6At_H%^zAx z%;5-8d@2D8U=F*G?`n00E@q5xU8Zt=rHAhMYk zDlJ0;rh{p%Ll*C=i$eovHw!qO(5t(w6Qn)&7Ufe`U5+2qLje}f+j91}PIMv8nr45zq0t z2KP(9;cSsIXnx0=(WD$vWws5_fUl$x{2$C)={q$|Oku0QImgN+GY&Za`y2joZ6FOV zwgupf<7{n`-JK<-R^=mrG&;c`4r>+2G)If9?)m=RkpKBwJ8!@M6A7Xi(J6w0Rdh7S+w zwN&C(Pw_Do|A}0&D<13jnC^CEaA=aG`n1G;>c5ghNy%gl4+!+Ij%2=00oWwBc5k_TS&zHkH#i$dLqJEsf=Q&G!%2d^+2G zJgp_=w3wp5aIKr!%oZu*wIqx0O%@!@F+NocE}{{2=#zoAQpF>Po2#tia^-uIUdqq} zHFUo3s~ea-pk4*;wPT^MCF+(LeR^%$X@IH3`z`*dBgx0Ht*<#^V$lc^X{>Z(D}N@z zy}xQs#&GZ*SGRV{MSt5$b6_UVQok}=!C0>$`^ab^y*3`I+)UiYbN=04s$dUvW&g9a z40hr+s%bxGckgzKgC|)xj%fHDO3 z`>_%nzG3g1KU!%s;&?iLrg7bmuplwu?O<^n7EsEi#Y_!SKHiwZA1gT=VS#a_jxDa_SHY;bEBF~ii zddB6;Z__-s-1t@qo!yehe$|J5Qtk5h?XY%lwf?x}`KpAZoKl?v8I#z3`jtbv*zx{7 ztj$jKa`L<|@o95uzL*@19W7?Zls?v^pnZusspKOQ+0IaA<(SF?u$hF-#=oKejRU$x zeLr56xrTk-damQD2QOY}UbuNm^oL7AY4mS9Xai#MG(WRHs*JqSIMazA-X~w;j=)+} z894YfBBPOvNXOZulCmC!TNtQFvY5e(Ps#Re@y>$Zt~7OR8lP!)ZHG3svp5ky%K8Cg zd0NF>2pF~)yFJ@fLXYtk&Ck@O;*O-2nG~%a&UDR6?l!si-ty|ZQ_LC>o~hs@$S$(T zx7U}4wOc*pL!C76-Bppe@<|X%EOzFtkib3brKHbWDv?Yx84M$gAHY~yag(?ujcYr= zB>d{)M)15sxNX*8d-b=brEH7^ix>O`&lnQM#WuLXh7lQ5;z7~L=gb|ZmNL;{P2PEv zDypVZ>QAyBh1IhXZJM!9a-tHDX^Y1CL!(2khpOjOY(T60`eQYg!Q*_RRXf@xMhxa= z6xw#veP^pDVFhB*p$pBY41SOL)Lv}1Klqoz=WX5KiJxwxWrg>#^Zlf^W9)A78adBH zs*&m_RW?D(?>vToZkpS!4zdkJFQd7U}Iy)VlB9 z2oxG3u|?z=kwI8anr-y24$GB_NP6G84=IEHr3LgMS15doMb4=ht3|Jhsd!nle6^B& zELM)Bj212VSxEl{O}@l@%JP&l!gvmCv|(R5`&07GJ~cE60i##WqaUKvw_o=$vqnEF zqqH~@b>4nur3}3zD_6BC%Q>j)~bJxPt zKZ)TkyHpWV747s7dX#!J3Uf{w2ZYTm6yj(q$x;5b&XlmvhYWWL#dgw%xmC}b_gjF! z#BbF09m|1Paab9_@H+C8A>{O{IZ2`i>aR1bLjL_UrD0Jnt3zXxhOIV%2*FG(ujqq@ z@n!Dc`zW2FE6V2B54u!vM7>6auX=~urxs4a=sxbbbgl?rFHr@(9wQNTYjSzYb6xc5&X|~-Az@z1NxQ`wu)hVykBhJbAlbr29s^8mG%$w)u z19VNbW%B|m9X@7Q5BnY?75hjq8j~rnB4fnAF zCdW(xRU^->qvEv{=PPdX)$}_*M&FX54^drikG@Qt;vtwO*c#}gXRborMWG#;Rxe5( z%J7~-CPRE&? z8gGMEJ%|+wJBn1ye@bVQxC(!lb9CK2$8r`;ym^I}`uwIKel7LSJ_Wx7Y(J9i97F4r zz>+SOT?DqpcMXb^uulYYAaLKhu;HX?l&z|{Rcz$I>Sl>-N-OE< z{igEP3R~-VEB|rMcA06$?eCA<1 zvSP?VjLj!(uL)kPr-=Bh-U+F@bG|13>Z^Gdot3i>sw(fT3)b8wYYalsX+fHIPxF;d zBTd^0$Vqr+uA8ny$DNtQzF*jU*a&V5hcqOAy~jdOAZ0RBO#@#r7Ki8b6;+ho=9Tu4 zVJW0asx^Iwy0CW2lx)RakmKwoKQ#E8$=3PhmN9Ivj%S_UPE!2)mE#;CB<9Jv#&CmF ztOfQdir-9tsQWL?f3%n@S*-tzF*bu8XMS7_a8uURm=}cD9|xFP~)aK6-wwn8Q?JOKkEQPRo9EUJ?UMc-VT( zK~!>mo)V9x)XzLs?DbuhO6+9`YX0rHh7`3SXJWMp;>mEy^rg~^uqRzn#9gRe>~xaA z85Yfvr_whZ4>pPutgw8V+B-)UtsH-)zquc_ENlVsl@-aD&Zxc-+GyoyRvhLi)Jm;` z1gk_@-Cjz4j_uAvrX3a|1m;D1qcljK_4n}k>RN)arcqES{z;{ONy4fMEG(3?++RD9 zC?VWR@Vp3fp!gHY_Gh-PV!sFP)N;Tk_m1O?@R>B~>jDY^%G44H0kIsru*ov?7A;;3wgr)^hgK}{PGeP z{fLcE6_L&^mPnL?myzWhK}sV53?XGp!EdG*&ucDDjTq;N-JdEx`SQBtJpK(j>7Tl9 zt{qyd?S7DTiCfP@4d@R#UZ%yu@s_IknIgSf_pQBgXroZ}{myOP%8EFU?M4BXmuACX=Uym~3Icsxb+C~Twk6_fk&0b5!qd{Z zNLgHuL9tE#()H20DP^STUf2Q%-M>Zo#A=bPm&Y+N#VwnT? zxoX|*qEyL@ySechoVF9B6>qyh+#4q_s8+dAue5IA-wJY)TOo2*-9Xz?9PBdc#QxgB zrS^Giwl0CEwDruiJG}b=WYDZU9vLaS()^!9&;F;&3YjGV4Os=Ijh;Zmwjm@TU0~qH zxs(Ys0XC=^ur`o>Xx5n5P_a)zK5%Y6`T_9HenIFF5JL!v)PVl45}n-&k4EQ(7V!5}yt}j9h!ZF1y&=u>whp+kVg!DY$oDb>=O5+Mj&(ne zuOaeL_bP$cf7GytAKw3I-a!0e{Q+4f6_b-cWfkWJkR$T|s0nhFQOy%#bJsrcb>I!M zM-%r!Pj~_H*c1}zjVBUPb)Q~?mf_G%3~?go>ioCKX&^y*?{`x=x12q$1tyFFYZ zy#i|Iby$m%OE2sIWP?lSZZc=3h7 zNgEnrB}dLL5aL`G<+$6!4K?n+;O%b&23DTOwTsg8f*$40S$u|h8EO@WPd%OlA zrWpwAwGaXi65&-?18K4_zWMhL${#Nf`35lq1C7_SK?Fauz{Hm8_zo&0);9F zhG4fOLSnHR?bk0beUxNtZhw$}8j4AY82; zN*zyGyDM4 zL1TIG^>q*ZoYa@%t++S7pl=(!`p4}3V_bu;^}-GL+iiVV%Z_}OzraJLD+TsrP)t>_ zu?EAPdD^y7OfT&280Blbu>Rc%$TJ{}gt1o2K$0-O>Ess67{~;~E;ha(Wk7uZPpf~g z5cYLyr!7d;pFDVffO01{|Ih4;$J3r>-o=+2(uQFct@_{4-d$Ifs}EOr^0~rz7WLx)3qMD$D-+r0Iqyu@#s5DgcA=6g`RpR1`Equnc_=-VU z#iLJ{4^j;+8*tNIKa@=0)6I=n9Ar#h%BZ9Vg}?FNpxOG7arNm zzxQ3q>s9^Pmy!uCnVkvPv&&vZqZUQ8G9nb8+wsSk5tlENrRiPghZ~8K^K?6A3b(^!vtr+{NP2>gx>lfzSzeuq3EdW zSEu~wc%1PTb?ViRehdy5nQ@vmi5CF2POO-c*-4enu8h3lq~3DvQEWj86!GXbSmyeD zQq561y2Xx*?HTeNubh=zzFEl-N)iVqh9A=pEyf>}!SrGwZWlXD2R|%|8gN-1lXKzN zkC8udqI=rL&Pzw*y&TQ4MMG~fWBVu`Tk9{2G_4rPS?1VssK*wwEkGHEvP zp`$5J~K?rYAFoK@kOw|=LdgAvC73;vJ>n6$O0q5*a)0kqqkk4M%tkdT#_c$6BV@zkY zK8isDYA%6^3=CG)miX1m53(iZ+LFS@4 z8qL+R`XJULcZ+Ivstd#V|Iz}cG?Lpg+p1s}7ZnqEW^=@9B;X z@S|BnkaF~Vdr~3y@Wyo>C+XxY#8i^A9eTu{qsQH6Ht)t@eTSiG@c0Hok@U&_Rmf#q1+3PT;3Z=*wXZ9WQ+a|_ahsL)L$V- zOIGy-^X5>$+!-lglcuP2?=ue#`xhOx8YW-w&!6 z{mQyLwPRewm9l!aQ_)p+_I&~U?729u@@>A$HYC4oB0>&F9GHos*gMHco@w+;5yyXb zuC13F66_DOp>BE(EMe|z;^*!+qnS(j_rgNY-7Vw>6S)|ZRiC2M+-Z9p$yv7?Nu6mC z&XOzK@qksD@?b$tLV9_QV~%|;$|i^;PS*TZnYFG$n~wN!^=TA|yXFTQ_0kL~!` zU)E=v47It0N(_c&kQcztiIv4~&gkjTIq zNhapsSOXs%Pr~$NBTOA6#wN>hs{{rE?9aKtW6lJ?`?Ww;_SAe_{XkW5Ln9nu8)vS_ z1z-RM@5NwFBxVUK&ws{o5KN2WcJy>GN&(cuwnORouTI=D$6RjEuT~%KYcpBBE$bAi zv9%7)r4_?jWJ;?c?%&7^P~RVmQ3u?20|W7Fz=z?*UtOfE0^m1FfmjmBJ`WS(*IcVg zxjSG|CRN~@Pmd$Vk@V8OHO>q3VFk|xQJL)OSfzf&g-uVyghOm$Ft9I*nB~#uXSPlK zoYUM7;$6N6EQkMXOFP_^29HQaD&HF0w40hQ>?d>Xx=@;r7Nk=UjSFhTL}#rL%>11>l-a zelX7HoR+_O5c&KSjiFO6Iok^JD#Iasr7gqV>liQ^yE_4*?dCab zj5e4L7JToTLnLWA_qkvu_9x?ITnLy@2a&E`=C89k!mls3@h`{49bz8uM7jt)WykEd!q=4jL>dD5zJ71y z&7)l+A8k3!JI(hd?3-FM3(cG=FMDz7;`!7zvC0fyCAh8ISW#+<7bQE%6BgS@E?}_5 z>KcB2mKGi2GEO%3Nw*II0>AhF>ic74u(UI!(@FsK;2t)jM2nJYv~7x-e4r{3$flrN zr9>Ua_$^v9X}5I{j$h3nm3UTg{gcrmVbnEJHBzI#k`R)2178nxI+u~O7Pc%QV2L|CR`a)y}Rm#;beQ!Yi?P$c4z~ zNB0fp5hrT?<>%jZhs~p@JJ2F?C6xA%tuuT=Bt7qDRvVDJjbwcWNc0<583#(4UxY1c z;}eCRTJdOo8%jHP4v~3wK4v72L@jF)miE+8XnLPJs@3Twb+`ppic0|zn&5-JTX5tR zFI2v%v7NCRCO;LVO2C*C7>yQTL!s<2>{CLymCBf?ts-m)G)am)i`yh-D21K>U6lKO zUt7~3bUCTGb}N@y(v?RShyRopLkVT%n(^bR>`m~}yK8Ucr)VqJTY4Rz1aG|IBalde z=^P?~-nTaBj`hTDFGou_AQG^cg>^e=9ep*$X=x;-@PS^osGWxQk1_-P2%RqLJ2{pD za}qlYij=9==KY9%|09mKY^}G2^2s^x-N>-A=DvF`b$-lyRHS$LdAG(rMy58%e^`Rd z<~sa^N^W)fcDz_YKwsA8*TDOCryFKi%%69>qQR$&itlbz;j##EY%+qZ1~GkFiTcB; zx;eMl{a^Sg{vy$wNI&|bf-l0Wn%Ux(yu8F&57@Uy41Dg#Q4t3+m{nQ?H^_knzdaNh z#yKaU&&s6!w=Xvc!UcA8k^qUX;g3gD9%&*mjaa4~(-z}yA5&!XuggOzR}HnG(Z6)d zfmb%|+b$y;L}d0tJgGxWsZy35=vx>gn0+r34U-WMSch#);%k8PX@^WG5m*Yv%T*+M zsebEJ`~FQP>K-PU=MUwNQ4R#(kNt8IzbP3as!jAGc4AkU%bXLK*;K|ymD*c-ncJ31 zR*RzUsi7#f{0VEf1p=HVkMcU$c5yvRy%9}tq@3_eSsuhxc=JjO5jpXF2oc!! z-8PO6Ye2W6_=2n6d6=RVx5xePnQ~E=Yz%v#_99C>P7Ujo`7f%HG8g8LA^La$Ie#oq zzG5(Qq4Nq6j-_mD&Y^`!Bl851l83K&XKm87l#&MCoYiA_@cMG2k@$uV;q>LvO8W|r zsP%2StsCml=Y+Y-Whr%gDCM#`-Db>Un&N$%XOnO*=CAmRQb_$|;*X`xO|IwrY1g`u zuNGjtuAxwk;BT!ix(=($=e(l6o0Z3{TP-f7omz2clld}~rvszV4%zq^H4!g$`gT8| zF7?L{Cp)`3^qKg3QS7)^J`(Yov&niLwPO$?`&_WGUQxoXB!`bnMDotmN1e>2B6P6b zfr-0Bfh04DJMB&Q_QMc%xU{1pHsqmW)|XU`S7k27qf}x)f4xP+mPlcbN8Cs_^X>@6 zN;gEQs`Vh$q*Zh>!T1_`>Z*N(hZv~)!u~ss4kyP)APCzXl|=erN(hp0?D8(1-rhly z1Obh7Y%Fn$XUy>@awNr!~wSQQN;agM7=I{Z4~rq=c(sB+-Y!%;Z?Hu5 z&BU235zZ(t3aZyWBsxXatFaV=)@^RY8MD)^94}1?iuH+~5i?TmZp#+vr_i`vuaIKYrlV;8!Y%P7&p zVAyaEvN%lMHyPO^is{8iA*lZMT1ke7X*2qB+zJuMqAHXnsu5ODr< zC0-W#_z7f5ARc}UVc6?99IS;a@&!>K3@3AeekBFywlz{~c1KiX zDo)uh4AMakxiSFML%1IUtHBC8a}7x!l_m}(Al6eJgiLsjUkG~~0KLxHq~Lr`a>~I% zWel#kE9BR+&K7V;8ICG*T%tWw0{N7UuBCpE>PfZl}l`>!)-a)yI_DFK6 zvMG&u7_C#whLW1(aa>V!Rc|~kM~Xga+dn(5YBGMa3y2L$Lmmy*3n@GuxqyRJgpWvE zGWrt|9@nIX-(aZPH%26JQ~ypJKUdC#zqTk8g^#F7_*{>N-cguw+(DN zj#HQFAD~l`r?Uajq#{=E%@t5j|B&opKtfLLvaAPM34|s|W0PMgSTp$VwSzK^7`d7M zYDy_rBZ>GijJD?c?MURS2`;|?8S>(OO}9OXiY&^Z?#vN5EJ9{KVp2uUgy_k_{Y$Zn zo!(D?)&q~S!mK&F>j)l$t*6XT?{@?9Tk*uY!&tDJC{;qG{=u{Zp;h7=nN>fZ_cm9D z0av*nhD!TZ=GF@W&3+{AB>#R1J2qAda3*_iH3!Cli7IZii^ZPNg}sf8x&zANH7HBz zUd5GY2rhc{=NsRGv9!yVB=%tLx#K>Y@k`CXVCv&b=4idAhG0AR>_2cEqt-V$HFNBn50q+rQu_h@>i=yY6{w7h?^##jH2WJ^KORT z|Eu>k{7*N{{?A?#@&Cs!)yu&ffLJ69@_zvV>)Jt_Z~g~X+I4k~Nj3pmr3G^a;GL$y z2!I|vm@`6@FUg?l2qA_cVJPUj+yyqpIK}n*8Qg!x>5@&VW!%-Bv#bOg?u{AjVBFdA=C3 zuHa_~BNRw*>cMEbP96g_)=iDggVjPobpqRteIMb0a&2hAFbfzj*5&qOYh#PmgM5Rz z5<(I)kWbC(Vs*u60yYeNNs{_2v_&O5X(_wJVpg`t0LpJ@oPdq@@_XU7lFWO=7@gn%AQIH25R5z zydYD|Ie<)t&*_e(%*iCNCcJ>AnCvMUQ-mJOKri$-E}Bd5xb1p4=+{RwHaa-z=FPsJ zqiof!ByY;FkAM&0Ae5 z7`YOKn#Hb_oq5Q}9&UL3ju99ZX@zNcraG8qDb9_35hux*2t6%(ig-}=FDR!Y?9(YQ z69#HPg#>31+-X)nwYACj z4>TrtM!syI0G9V}4Y<@S{|&qnw&o*v_dqJT{O0A=zg_6W=@sC9+iHOk6gT+o1l&S9 zE2SayA?uH;46>v%X`H$t;c)dZM}hS(o_wL%Pt2YkbSl_E)NB&hfp}4;Id4dR|6*Q- zfVv?YDT@{RB8VxbiPJvI(4}w3t$XhR$N-Bx);6RHwu#19SnqF`sk-<*3fvM#RsfOg zL-N}CKImqFr%RDX^w(MWALUuMQ-Xz0LXSX&F>LYofoUKk$lP1v!gM|1;C0M$kZjlu z-XPIW20$eunez6d3Gjhk9&C@54qm@GAqybG$^;nI1?7PNE;!?LBJ>=rrUUhXBp88| zr`{MLkT1g7PCsa|1jg_3!Mjedt4G1COeBYKiFWu@7%tJc1$xgEusP&IzLY!DUE%k2 zJ__0}Nj+SRtI+{ax2^s$I}N&7nt$_l?d<87XW!rR8ddkvJcI)Ln z69BNIlhD1Wg~n4hg#DGzfSp;6Kq%Oqwg(zS-~2Q3nz>FyKJPvsQ4l z*ank^*9rExew=lP;pMZkB3GX72eQkyJ6pp-rwF?9`teXGLLK{R)QH-&iM$ajrvo zvR;Dck2lqoiSBqhIo=ibd4n3p8qZ;HaAN@f0H@(Pp5D(4-r=nGNHY?4I-$&I(2+y; zbE=WGqR8vHF(||SmphHShCTlv)nPng2{>!g% z$=>c?o2W21|6!8YzqTCi5tm6MM3{T=W{~)(1J3Wt+!;V@xu?8~1glG;%?)sNc`v|s z?-9asNWQ?;4$@XU7J)5tMT!wL6F(_Z;Ju84^u5bRKNO%m=D(~Lg=#|(5O8&Ic6#^U zw^%{{5IcwV`g=5ZvR9`pPw{eHf-o8&NWYehLtx_~2=7sXID(QC5{6FW*8RG}m~>4x zKr-DL393{{?o_(6nz(RzdOZ$MqV^K6-SHqxHZUNGGs{i}@iS**(dpVv<-Im~QHawr zJhg|r_Ud{BNnH+*C=>&QnuiL zfYbDgaA}%o?iBR(_YoDUM`+_FhnLYyR8J`F^yX#e(Dw@NrXSNZe~T4v(hdyOM2M6G zYQ(+j>MuQdMjriHEe4-KW^U#wW{Nn)vSo5}dt~AhazDhY#)(jrp;-QwDF{@cKE@HD z79{z05Yz&bs8`mud`vwx|54TafuKDYkiYnAFo5II2XQemvnVH|{9TK-8!H%PO401h zKkSmP1TA~&T&?)C!V=4wNYW!O;@0hkGMT=A8mXhk*U?t88Et7RE^7w&dxvBGqRKv(9$p1?w; zIsLylX-D(v#dKav+rU%g%6^i~Uk6PNn`qP}(<35(^6tRhH@$YCZs?cA#>tgUAG3BZmH0w?l>HT$R; zotyE+5;KJ2oheif!?qK%=)9(mLs%@n!>Tpv_fun}MY7_R{1=mC(sYZ`clZ0Y&?1tr zHeAtASW~Om=%Y@$O z`bgMdxHNa2_%j&Qv9=?xi4b(fJMyiRaM*`%Xy!a?3!SA_%@=stZLAo8dmc@TXZtfW zK+Losb1_uq1qIfKQU5t^Fq@geQ>qpB?|ts|IvDy!ShzWO^N;tM+sejk8RwSouyPN# z7Y>E1$s;G`Pc!%tTKRI>RiW3GFc946>t|vAGH(8dadNGT;2HUmKrM`M5mqKK@a(|h z3U(FT)v|kw{kE4CPa7Wx{(B1DapxG=u;GY#Lzx9tN|gp& zkS{poHzdLPe0C)PylVG>e*o`!Hudifo&cw@=jYH#8o$2V6G)T~i5ZH+=+GnOrg81T z3ngm3JYCAEZqIP}w-LP5HlN^abIKry$3N~&hklZfT8Nxe_bG^Fgql>qWJM$D%o<_~ z>MMbpsrh5j9Zv3nVLX%a4yXhvm<02FwuM~6fT?E-eNQwIopWVO*l zn4D`Du1_q@=}+TeNDNEUfo>B3=Yjkni0DvXwUT*x46e+nXQ`CAf%z{iK=ix00q|P6&6l9tYl90M1Z6xS_w4^cLorUF z$m4(HygdH(*2NeGj2ng(p8<-1zOs}%zB9Y-1-J$Kj=`7EUT^_c(ubv=3XyG~+1DU21A{1+-=qdj+>s;0ZUyCg0_SG%{44jSB?{UDj-udjj5g3o z$^W@==jF8LM>=@;y&B(N7?i`Si_&x2f(kLdS(3~275vIQk}LFTqPY@jIr%@gxAQvG z1!7Sta*1JNVqJ~%A6uDH_p679M1u}pa~;;{o|yj0a|)$Cob#g5v|tO4WLUlx$MGTrsc0QYU${xNDgQ2S&~W@f{gl@nk! zBq!6W-Taajt(k4ao+P^Q7tD!i3cYyg_p8hr_FlNtQx^kiu)5m@1rD8vAl6wev%&6rD^MgQv%5#zHtm`k!eC8!z&Pxb^QR(8loU2UV8~5hRuaRisxY>w8HMzR#crxhRssF} zk0bmo`=cOTG-13{tjn8Tj=#oDBjVVe=myB~&u-S@2j!(&cw zh^tgqBY~5t-fnnC8oR__>u=7KESTv}I{Jd0+y9uS?K89Hte(eiwMX3&;AgvsaVDwE z@0t|p<*f>rmeADqQ+~>)w{Zj1KFV~IH!$*Gm}r2QLp!Sx>S zAjnlMRds>yWsod?u~EijJo?#7aNV+#s`8-k)r2|39kzJId-bOQLJcqXe54k0ib=>S zhx-ZK*uC2-Q}Of60lSN+83Uo#!oDM2Qv)L++@`ZJ2Qga%&y?|#!Sk^+QuK?Jh6`bK zw|f+>JsF?XluPWUcrVX%unxdYG6L@Xo#5(}Rc{+ojY~iU;N7&Rbthj!gjQL+zKfEe zbG!@GLik$^!UzY_$$-Ddo+s`vOU#3j{b|_0roht+*W*uCJgzi< z@nIm}%b6R(rKgEVn-4F`hWUOU5JHqn8=zf#|4O+eV{=yMRUy@JGL=OI4)Rxk2|#o9 zgq5Qw>JxE#X*!-cKP|aH@N;K@ zM>>9<@6`Uvf1J7c{}r63e+lm-fI8x8p5Os3<&1ygi2M3~FN5~~?DL3g2}MPzLP#wc z0buR*05^a_IB$=|XvqXpR6O9lA!Dha`X&{yTNXzOg_@aBW~ zCD8sq__rL8*cH@-Ie}^hHa{0f@IXex9JJy7;035h_S^VLfbtG-LE~x*-j}Zo%7#9}o%>0?CUEpn)o^MM5V?cDTbl^VcAj(&}vSi})29+*$R7Ujm7iSWgFnZ|}v}$8^ z0O9yUp#)!g5|v=McJy76@|`kKcq|}SiCKc<`U4Y?ADo2;>mX-07>DS!yqRbf8X%fL z!(9uX1<*TD0Nx+mUWiE{P4|a+6*s)b+|V7!ymzLH%D6dHrHwj6@{Y_7@3|ha!(HNY1U3j13R1`QIL7f- z7EEINPXJD947q$HUD#)W($kCI{}Fk-RtLR8>)P`t+Zu|m=d=^GEke#8EYj4-o_bY5 zaL3DY;3(>veb)5xS)ZeB%^fUr0EH*7W`nBa8=$Oq@DZRRfiD`>s-27Kq_bb`?1S$K zh`zYnDX%Vh0Hq`jcZEL$&dTl+bhD1}Ai1wehy$!t2MW{1MXpQ@QKOr-N)J+IGog$j zXhU%PSi#N}Ju7Mg{jBfecm<-g5|%Sxn_E#Z1dGO>b#L$?lD|0V4leem11_SzX#Z0Q zYxNxZ+!6(_(FXw9Qiqt+Glb)}=_WA&O_Go~Q=|H6?bVmOU$WDokfgC`l-$YkEbI#% z1lo<-QcqMgRn3| zJSGB-BGF7HWO&hu4mPnaB+elG+J5gVK7@WyYdIOORHMRlcI}esxq1_B>=IQYYGNuO zoT2*86bfX06`-=Dha6Q;r2O~_v0`pn7Qyf!u?biFhw|jAne#IXWlzD@yEZb04t?Yw+`J3-~$fk{6 z8pcscl$F*$6`c0J#Yk7}g!WnC$rE8+NO}Hl)E0p<*-u%B**;pY$gt(0e}YOU~yV+;^8% z!@hrHmAf$v>6{OsW1P|zpv4-^!PHmr)oLDq1Z+8sc53E(trp-r%ZLuy`#6L}evy*d zc(3`*y@=7+6cp0siZcmG5dioyybD#gDX%1D;#U4W;~(K5Z{td0T_Y1&yJLo$1m^E< zFa@V&JpaPVF9Uf%laX_`rVc$4DEYo8g=IcY%fZWOCNedh#*VmIrXiNeqaCSgN)Ak=o69zsPc`sozi>JGY&nR~#cQ;fe)?Jd25$_?JKHFNmWHgcH8_}T?OAshrDQ_c_U z7E2`O%xF(=`Bl?V0xI zkNiX!VMn&oshqP-LQeAS?0Oc5vUIm{71o5gtWML%04o01bRGl})%V6%+9`3k!Wmu_ z65A|$MtdqZf4LRHM#TDuty5&>cI80r_E3VLLnZw)A-9jlWDlmwT~_d(^|Nr6ns0QQ zw8xjQvYm=p{`W!j|7V+kfB(PPoVb<2CuqJjI4rTI9h(w%w<*$D}HeD~7=2>}2& z0@#&?t@zlojq0zq_mVzKEtWJS3ZVWbP>JBYSe{pK8Qz^_()* z{AdYk(Bq@6rNul`gWDgPRw4T#lNmrrXcEFmGhNT2_m}cnweo`+atMieZ~b>{PVT}> z1sPQkxMLb~`43Z-O)Hk{~@%=uAlJlL!X3Vz+P@@X0%s zCaI&SC}wB{l&kh&paw(Hn5A^ZjgMZ8nNTpA9=ec5_qPhV0%-{ms&MC5=dXjO+dknl z9IDWSdyB6KIQJlQ1wL~XKw1{*SH!b@S?ft&rH?WMLF4ML+G-8^XXEqK%d!N0S}?ZnDG3x#m%pp!WnP=Vq- zAg?lb&3pl>sl&^>i=NK%)_wi8Maz31sl~+*6|sBX&v7QdivJ28yA13`BTE0_!O9$e=Fgit8`Z+Tp*?#`s`h0k6p(X7I(A=v; zj+hp6yusl26l);=^bMPqUc052!1?dnI&;vy?!1qTyjR(NZ|~I+@OiHwWd8gVGACi7 zLm#J_>L{KBe7o_N;u02U+hfzt|qbANizgn zK{xtBpr930_`c6XnZKCd^T-{M-a|FE8gzfzNBpaGS4i5vF-ATYZ5;ByCm+sFf%0j7 z&{W(5d#_;9wwx41@K))irLcaIUxA5}PxwmLwTaX@@CiNy*0o>gqC=gIZZ`mMfJw}r zokA%;qRGBIkbT(D{e4&kg?=}D9?CzN;nV@)l)MpP!IWJknvSDMBYZt)2kVqx4Cutk z#^o=e^L)l_D~gnvx#og6|8~+*{$OJwl@#Z}Y>DPq#SlEa4<=!p?R;ckE6o~`P=#Um zoVZs=8F+ld_DAQ)k-~@2ogH$2**cJA zSNWN&DY*e~HD&fCu+Na{Y^ORug7)PXWl=Y)9>ouT((HRxy2TiH)|V+%ZHvk2(D1VE z)=-=Sm}&Op!jtxX4;TIOlU;6CURiS7-*y~)Ry;8Lq3$wNyMa0OPnj5DD7*ZT)9AMohnL*sr`{uY?= z{oH8#k%-)6pcGW_mmx|9&zqq;-57rN20(~D42$6^5FR!h5MoW`E2-DZ;o`O1=Y$Fm zjJ!k{C%scs&Tu)wMq4Z`G1(RpQY8D(Raz4n=92jRn^H2}gD01CFO>i7T{OR^Mtt`P zIh{B*_w+Lj$`1;8B2FOwW6i=@HdSrZLi$jt_Y2kjL8Z_(GcixHE7$uxjI>^Ih-vM8 zTmmiU{SZA6?!T40K9I&n(8L{3*5REB*q{MT>u}(8E+%9qE&=J2M#kQLA4~I!5RyTn z{U5WKI6+vI-J)!>ze~D{`ime<>Uj-7psZD;ZIM`(JR+_W+aSkIvAg>L)c9XxJbwJ~ zfD|DrHaxXa9+B4UkHvr@y>#`kz%1|Rt zx5F>yYzst%xLxYhozL>>J%XJH8#Ey?&p(X0L|lq(TH znP~$Z2UEHuDxG*Y?F{;3XLxq0euv*BqY3GykKr^En#An@Af9*byq-I;@#F2|!GA!J zv!ksoIGvZgS$MP1W?iKbnWb5JK&Ix)L>d2h02BJ1GgMaO_9?(mve1OBitWw;SZD#* zMqjo7tBl^bq!B6^Aoe4xqzNaVH+Z^wgI1(A;h#a?^duHAVVy%uv)ksi$;_^Ym7sP1 zOGyvtbRj;$3y`XX@kON^p8-_*EVOQw!Jw__X(5@bnF3|YpVl+C@rL_T;|z*SeE>pa zA3(jCg2G%`_6Bkx?pY9zTtsSCqAnX;bx?z}J+v4hI zc8ly{=QJ=rS#R3Zx6_*m9(Yv zgy7MyAcRRRc%ifHvYy5i$7~fyb=T%N%yVf*pvJt>qj={ED=u-rr!bKGELuZ9OWIKO z{Au_6c7TTUQoCy*w|^BP<7ATQ!4-Dp<`PO#c66w#-Uyng?OdN}0Gh36R&}6YyaJjG zcp%U&SaGAc$3H(mT(9>2yk)lpc(ccMs-TzR_Cr*uSHCT9^j=T+LJZCqVZhH&KIZ6? zU*`lcdOvroOR&%4x8y^=eh)|Q!Z6T5wJ|vG8=%n@*ITkC=o6zV z>)BAxn^yailQqq>dMct3TSxYUHRiM1g>f$4YNCO|Kt|m2`sz%eS9IaNCq13j^jg7qt+vM8z%z;7*={*HvnaH)336L8@ z(8J?5)}Zoo5}_%ggDjKoYyD5=0X710$uF#CHU5CKSpH*rK^v@lxx<1m&C|NV)AUS$ zei#{>CU*ZW%@_B!)FP3G&>INGqdJwq=aE2Djg42T3GCnA`B=$6|YQy}#xxWb- zfDvz}!Nj8~^?VKOD^|8b(V}?;<@JvRSN$JY?6THkX+AEsFkKdNhX8ATza)>0-uDnn z<~&}x77}9xcpnlS+vY?UyCEbl=2B+Ay8>XZy{+W$S|$~?zm$6KlU;Y6(;kyrYwh-r ztb@4am==nl*d2>aHCm=(e&yc~c+jmk+gN6VLba0U%(lU1saO%Mc$R~Ca)XKQ4__z2 zBr|zZFA{x=gZcq=@`Rs6ZN#Na9BIu~YKAz~=t2`I(^jlyJD3@jx)k{uZHR7P$)PGi z{J{6)Jp&1?>@bp}ATn_DB~p232CD^Bx6F(mYks6eJ})gUp&IacuWjxHxD+zGJGUn7&g|8PHi4x=>D~T*!z7lr`c+DBVN6>i z$IIPX3UH4}URtvS$IrpzMni`^n{?HQBO-)0l@otz2tzg{=PCoIcG?;FpAAwm>@Brz<&<77I3Y^2w1kC zC|I~7q55hbjoOmRJwg3()U<(604c7Y%HK21BH02mrdbHvwvy@|D^czql8Bl@O3S3X zl)c7%&5}>^MM%Aq(MG77!b7TY>u^Ja9AD&1N7MG3{JWahn=s>hKGhUz_ybH+(`U|D zSX7MDA!++y0YmMSDh|B%Tt}hTbs9?NR*&lN3Q`!Y$$q?Z|6@PV8ycemc^t&C^;?erDB%O!>UdNtyqodGX9)5u zZqQ$!OrNZ4kwd#ej{AhxRU&`@-supW-im4SVWq(S)|fj)f4d_N6~6(BmDwJn$6d6V zt9hrrsS*1PVX2>xMctM3_+p2AojKN5co87=vn8WTh=@&uoT@$OU35dPbV+zD^jJ>V zjK>bzIriRPLP$tiPRa#xgxppoC*BBIYQE%lVlsCFolTcT#w_4iok>+udCRH z8~><%08~Ani&A9P^+XA#g~w4MPjV&aul}TTrMIc4Jj(S%nQl@)MvIBN;c@IAnxZ4i z`o8|4Ok9|@q{x~kAzQ?TkirAkN&jV}%@Sf23rMIJ6Lj)#f%g>ER5VQ|nUXJ1iz&L|L9|H2wm+*}A4hJyJu=(KB_d_4(yKVGt56lS8bRM_?DmH0 zg9qgwONEg3iPY=m-}TT7mHO>y+?%y#8IS(Nb5}hb22n-Y_X67ir{ML5bSBE#C3}Bf zW`!Nr-a$SRo;k6mY^sOA>n`}j=n(3tDE#1$K;K#0glTiX0=}2&&3|B^`%kSP{dcVPf4Zsk zKlp1oIW4(NP7)A+1_CS~vx@lc-6WGjEdqea5at0HXsMZI{ZN1kkg z?+@%<FjETTmFp2ENZP`t8yFlpqErw^}_23S*j;pslA&vW zI4xt;=2>E2GUnS|UKuE89WKrMgWU&NI7IQCYNGvdg#pXd+Rn`+J|MJ*Vao-?9?0}c zWG)?S&E?~M!CC~?xno%EVpjwlgRP%{AQc_$gFb?fxBBMHH2|(56S}_@%jBF7LC0h7_BTKs zKp7JNtQiV5@70*7y!#ekv9Hnm)aXvQbd(lQIYz|*JPBTs_~ zQlFdvc5Pr5l_mAq|Af%X#$U%-6oiQp_tWf#!d|zPbPr*&Sef?0SD!CcS^=EM4}U)6 zd{k@wY^;<)7VH|`rF3|X)Y8A;}HVyE#py^PIS6ecy3`@UGje_=k0He$Pk_a&wPgvEoOk*0ix4*@* zdquhF;=tdQdls7GK6zNpKvENz1d24+uQA0?^%1Ys&$M0nAKCq&DY3OZ3z|7Ci`fP?rft3) zP8|o)$;nC)B?DC$3}P_+VBuJlD8|92jV!PLxG_KDApji3%AAonzoZ!SjOH)=_2>)x zbC|uH41*vrpQrm|iclTJaOyKG>_B_vLa!lMd(iHWSE!%n&CFtFJgO4l!K@RZZ~@ys zO01Q86raSV6rKXkBL}OAdNnYLkz9!f z`Eikjn-!Ua=^^4s0~R{+#;rWKQ^qr9;ZmG%mHYYkI4 zmcp<7AU-p9F~05H4%><4J=BE&g#)GkpyV^>v;-DoQU70v^} zoOIf2P{hS&%(r(-$mF2zx_l{#YA)~xUe)Au)&Qi|&QQNW1;iW+YqruKP7%1EOo}MD zk2CalRAtSM1*N8WJ6EFzH5XP5@C-MU=V&L&br`CmGDV241%YeML=M?UvM{N_7wHAZ zQHfv*wJl4{wvL|P2cGq;jU@j;MyCD-fR2)sF|)B1??i|mu$b7L0~H)+j`Vd~XkolE z*f;EoN{imu;ut0%3>fSB*6q*l{1Ezr#kV6&UA3V<1_t2w8$C962d&T|Z@?T)hs96G zJypUp33g*U`qHS(^RfL+!R8(4;837x6FLgWv0VB&4dr$n{#{{(`|cY~x^vim*UA0E zF9UlIiWThqiSa1_Rpw}SySj{A~li6k|7y#sI_?aRpG_Q^<=|H71Zy0<~<4$a3gSlGl29&0**}rMXbCuF^~A z$jcj1tt8tOXM4m$oy!};#==<5$Eba{FASM#JtxAnPm>WFprP~r8sl~MoooLo82HG{ zYc%uSrKuTTLfC?*@9zluGLy=7xD(X}$DT;$2kNt#ZGgtqF&Npdt2^Wd`UL2LqEnY% z5|DGYyX_Xf2h3Q%1qgT#3&oy0!GL#OoPG=ln{x|n%!BG2EvA`mjy5CoFD!tM&NzeL zQua65v^a*dOS8DfTzXRvxhP&LM0RJ|j(?ejFA9;^r>sVq3`?IH0H z_Atgo)%7^azUG#sYo_1rIc7+=qABk5QCVn-L~)gHxjcl0D5>w;h`?si88gxF>^NqB z8??m(XPnRvDoe8J_{4@@@h+McZ58a0?gU8-J7t zYD60SZ=gPg`uW&p<<{M5*a+qIjRGqnpyWPuxX#TD?-95j-+W^v_yypWA$1G%&}!s+ zd3zOQ>ljaOgOoAlcA2ZDW;6`KUqB(~+_z1&rtF4AKxtC0O}D^UOJ1{B;rId61#|nW zzCJ!SZNNZGp$im*PQ|_Gy}@FC^I>E5CyfTi@M{d(u0t!pW+}yY2)tw(SUQ|&=ch^G zHfn~;H*ylH`Gzf3DjFO}^&7$n`QG*#=3I@}29bBs(hu;!0l)g}I zen|Qq*eA5E)Y7~6W`agKP6mG~Y|R>7gNb|Tn)R0kH6|C-P7y}iv%;&D&NZP5;emF=pnyT_D>-7x9TtcV zlWL%o?ZLjsJgTF3^SJC|6f>$P$}CuD)}H*uVqciHv@BME`L(8H>XE4>xCf4lJhtAs zt>3<6r|49$+0gnrE7o@8KN%4$Av4+*k#J)vD*8};Q+KQtm)$%ntg}fUVG9I5p-m15 zJ01qS+=)I#=Nm*c&nS~%{T11QX>I7T^;JJTGjr`3EO(=IVRIK7f(2eb<)#T-c(AzU z3p~zBQbMP7@+qn2p2t+;@vgOPbN+IR*uj@&m1jBjJh~$a-_cG2+XBgzYoN=h+__2S zS1>!~@B72w*0vcREFy(x-8DDN^>!`Xhnl)0_r3O=>J7w{m@>GHlXU3CX8+k@H|^Ai zW!tXTOU7|qB9j%T>sEH5`d{`tZ>2P}YF0;+18zp~zyI@oy`-`xAYt{iMtbb)Qch5hGwMrs7u` zVM1>eqzWO@v@(y^aHzSVpjF6^#d%|xAmQTq)Rj4&K24vVJ1Uk_XozuKB2wEfg}nII zSl%~bY=YN*(phULD#koF6Yga}SNMFrn3IR?BL89E4boUx8~u2~Js{;V!&43GWlW33 zPl?np2435i3!$JY+);bv2#4h2U?bsJP>?liEjS@{F|+5wU{({CvxdmxR1`?*XqO*5N_|PIdKBop>(^47F?qthV9FArT z*I*Iuj!GBII*(JV;OH5E#)@{3ojH=&@Da@1Vj*tL9nwW2*hi_F79MGm|NNQ+u-AaG zgS=KG_q9jcJgzDHuAgz;NNv%_&YbwK#Eh$^(}@;3WL3Xmlu5R}Ar32n#+ZJg-55+L zibDt%Ne3|sF-ZCH==ddOKelO(ObIWNxAtt>DbxJR&nafX&?(mpu{gejT#SZ7Bb;Hk zDId5@)D$CMVrcI`zf$6@Us{2kI`%5XWqT>6Qb6(=qP{!Jk^V%l1#K(QoAE(HSFy(p zwRbvopV8f&%48FkaE+X9*0m!2%J>nUB-A#R9-T-A+}Ayxp3YwGU*AEtLWX9IItEXp z$>nz-gleuQ6YJ*P8@Xm}u*gMo7*&szL9&7!{b6m+nR&^I6kZ~}G#ZfI2o!IB7xRCG zwdg4(-)B5?vpXt4iYegU5AgxjXaPJjZZ2IpA^rI8t5Fp>*D1U-m5@qb>1w!U$;+kx zcD-BW*7VR2-%Tcr=(sn=Ls+Aw*oUbX6FMiz@$4NF4iVyAx9R<`i(7gf51xATrg!*t zAXcz@*Pm->HR=ma?!3M)u;Yvs^ZEPZ8}VJMZK>ov*8fRh1~^xkDEloPFl&Ub{DBDu zgj(P;6VS6=F-e#c3D?i~>mn|Rx@oaSSezX8G(B?F#G1;|sJivrVN2lv(7ZIwGs9Gk zP<^0?s^lneP)U8XseDdq4!1SzYZQd7iG5_2(X6coX3G7r1nC6ESd}L4TXY+)g?N0z z{p{JARDjv=f=~2Zr4?~2;gXm(7czDEEL+Vla;YtE`u+L))j+4HXP`WU*>cTTcT?vSIs^l=xwfq7%BAClBAfE=tdiC~k zh>L*8CY|R#8{@C1KoNJ`3~F0$!;0C<5r;lWit}{VaTwAX#(q> z`9tr5*=zueAPVdO2_Lj{3ba9uTtb_FlQa0EuypQIyS-HZee3BL;DU3*)EufTQQ8~sevri8hAHhi-nzM^*j z(G3fZrGf55Cw)7F#wmQy$`piW@boL@Fi3riA$^b-dFPQY|kN;Xs|BQ<-K81hcC+RD5}fi8}I!kel+2AGwz23-wyK7lQ{ z^jo{e7dM(jqEGja!3j^vZBz;L%^S?}*)l_&i{#%iRu=5t#NryIY>WGO&?kb9=9LIb zUUu8pDWQdYp;3PWXAis#&02U(<_*{j@N&F`7Y|U;4%#MBscfC|oLM1fo8oS;rmRW9 z;!z{D7$*CC2KZ9bbx`37_Qffv1g-A4X}i*H>BwG>R)Dxgj!8~Dr(JMZfX$m@XVHCYcW)#Xa78Pke>!n_B_ z%u^H1ThWBnoV?Io$1+(t5B3?{$%62WuFV7iTFy+Ae``Cz869h6)KNSt-$EFab>^bk z?JvF{5b|D!DH7!g2?u8}nq z;{gDZcb5mv#D<4A&lRik*XdE9z>lqed&oRZUjL}`Q&ucPmC@_G^YwtfwQv@lJ8H!B zV`x^%t4ABjiS3tz88UOR--A;zC{%j)%n71d+B^10RlV~Jbn(Ld&(u$!fGi09rl%)AJY|15{; z#rnyFrkq@WI}mLrk6(XVTyL96$c`1$KAgN$8%eTzE_8V7#Yz8DNpYR%CJR~5pM;Kh zPd(}-kcC#HO14*fa+DkY{=J0E5QFJQ+e^pABE5+sQ2y4Wtv=Wa2$-yeTxOB`Co3`+d? z{5)WYkL9;VHiKLACtSw6(P#-3O_bA=;m;+uww~Qe_}H!^y@PcWQO35ZQ8X)i(s1g4 zMp&4j{SHBs+ViZG%AHRmoSRgqaT4=xo2_eOg^-jqkd{)ft?c z6?!vLYM_dBJ%TGEpI4mCe?ZlA1RIe(5T!aSdHi**igHC0Z<>eNZ#KnAoZ2wvLvXHj zI$3JyEVn~;1~O8TSyEIib_KWhde|Ph0J_dDzbwK|UkV}5YFI+s8MTN!mZa$Fh}zBx z%co%f<=>W#47*@z`i!fX!z;KLg{66)ddVvYL-kDT|>gGt;hC=JLH2sVy}6))UOy* zIbHE$RVvLDG|`(@T8T0ukNI+m`M+jbF61_*vjsV(D^n@iZg$v>dXwV&1F{d<)n?5^ zwceJ!w3n5so<kzjEmjNhVWP#rSX~@J2a?<{Gtvn5C6Rk9_Byv4>7F zG%+_lPWC%N$)i3v4bV(JC4-#96lIRgwOFA!i3A5fL-TF!%JM^9(q(Kd_xzp#Mv ze3U@zav8Oc8*WBki0>@|c&&skrMBSuJ^-N(WccMvo@+payu|^n%=fLZh|9^}B(;?{ zy--Uzn+imhK+a+p&ypL5Nc9jlY4e!tgwZMCpzlfHfUz6zlhw)nyJRB#)}W_AaYnf> z2mC{j+0@W4O&vl%W@|3V^}*V0sqF)BOACc}0Ih|cLa1Fa;%C;4P5iw75(_Q;lUU;8 z_TH*7j%Q8$;)SzOwZ;8AOjw3I^1@zo$5=i+*swLY7`$7Mi_nhYRR!5bde3LOr zAeLJ^(3bdf|a8t#l^~G39`zgDl%{{Awfbo6l z_fqAIJw0m!+5E{o3ff4gdFH1!q_BQRxP$)P6^0pL!tVC^?_d-v-Y^Fsf@TjGlnf_g z=GmedL9{=H@PPlJX5bZRGRPNS{O5Ue(x$>f=|DhN;^>e+Zn%jgk;d?hInv+s!R1ay zPg`E<)kFXKgv)@vw>JN7I2R#VmC5rOoZvc5dJ=@ZTp+HNqGicKziN(XKEa;gRG0Qs zhvpf_E;j8`u%gm9#N~$Co$5EgYW8*nEVS2Kao5jWiU8~Rz2(%WIG>9*zw$niK~Bo? zTf^HB`xHC|QdkK;YDK1k4$iI*z9~rDmAh8q7z^nl@4tg?$QoufJ)L+vMIc7_IY?K zdSz&KF$=rqT(VErZ7Fx0)9~}9FZWcJETZ;wK^;9B(Frwg;(|7Zwao;CVUX3%B0*3y z+Lct;IDtpTKJnTdcWE%g3f;SKZq9C4i_AWpDJIqwmzTu^i))W?RIaA3Pv_l__TD7% zn!LGXYh07$SKUtaa`Z6JfCnn$WM^S5%z$fg?hV<`!ZW$DRM&-3}s8?uHP0UP5xUJmL^$+s7?Q4$P!0@@EOo^Du5x^%P?G9B?v4Pd=gp?@VIPwag7c|= z(_L%j#FbAOhy@x8#0nhK^(A!NniEr3xnnzqA99K7EVsVdD?78s*=6uCI?R^6&rzp{ z<`a0Pk9)J_p>XMt5JTFmtEq^twLCGOVl=S{KD~+>nr3&H_cB89cS0^pWFEzjbeWzL zkH(#R1o5c6MP30BBDOGv%8;<=y;rq^ZXady6>Oq+^4wD zS^xrxyhUoUsDh^H$MjiVnl(mE9<^Sa>4>$e%P`%sgYe8QI*d`Igk+@r0Y2*`-qp*-sS~Mq7~Jl5I?lwNOpoImFrVEx|2f{alVMZH3JgvlP%f?=apn~ zf}J6#Z~Z!vPn<}DH2-Al#y?6}=;>0WxVhLInMSquaisT&JE_?)d+(cy@9#|mF)`hF z_~`WPDl9$a3XG{U`)7jt}x%RQPRZqqqoe6>}YIMiOxcp0eEEy>Lk7*Okl z@sSRH701Darixt8P)KOxk-7F#kcc~S{}(C(wnP&w`lHCV0lQc|C%xDv;h?3L&eg!!){&v)M~Ed(K@$Ti^(FAjQR@sr3a)T` z8Y5p>=$9GjKDLVD*exLWIjbu*#WNAeK@?B+$nOLq3HsV3$l1^Vw*kQjIQehE^$Ceh z%g{&lTi(~smw+B55tJ_jvcOxt(tkDpbAyKzYODLsg)OVMkmoF_#lUzE{+r2=$e8?w z`@kv!2)^I~Bq68VQ}(&%Iq+Xz7hO!JF{;qDhVHAw`1Vf{Dycq0vqOevrt;Z6+j7sx z-klAA$lPVO*!W)k3s$LsAcs#lo=Pc>qZYE#Em~HS9EtVjsMbnh@|N`bGYy7M*Zc(f z&-6tgc`5aohd`%6@|TX+qrj6zH#u7XA$2VEwUPM^S{EwL&6h_ffj>zx-^{_NZm& zf;}#`4-y;>z7%0`<1yNY*xzD;-i%tpDeM}e0wC~h?c4wfAl-d3bjcDSQqRig0AL?)hq{Yns zReK&Z%;-UHph?Cx*v8geps?<2KvU1+iK8pdoX=m=){{pF6Z4P_n276tX6eN0V@kyf zOFUAMi{u^4>&=2R)4t2Ez_WTyOU%6r;np8|B3@mvs>vSQ6^5hJ;oy*;>NI`)hD-~r z0WqAVK)WdZAdig`j8BsQQdG!j|FT6401aO>r^`L^lM$T@x#@Zy;qxoAMGd?dbK2w{ z@u9B`C))HcRJ28zH9H(?BMv1vf(sFHNF&8k*q4~jO&xSQSxH z6As;6DKg$5`mqFCS_8D7O~3&Sg&0(QS%5gD6Ht2p5D~(kQ$xH*nQ}o?VhS8H*`pb; zNd_fs&2j5a9YIQI?|bcEy+L=q@Zy@J179&Tl;YDK5ku`1Zuqi~LueZM$XatR3p}+g zbR%0>Y+=;(i$~nra9EUBB9$Jy(>U2bkxTR`Q2)cOeHPe~naj{>;n&+tQ0aT|dOqKV z4@3HBeqz?9G&fu)_IsqeIgPC=pCr2QPp)jC+9ERUM3wDRk39kGEm|+<-Ty+|TSisg zMty_Cp*y6zQw|}WhYpcYN$C`%L*L%I=_5*4KsDQONN4H61SBZ^3gfW++c#D`fk z>s`;Rcg@Uay}eKT&votnOP~GvvOVN;*{9Q5F$K59_Gp8lPH5@t@u2?;>j9n;-CvkQ zU7u@@E@=|Q8{U2as=-ixIL`iWlzsoZDbzg6h31fyDff?E-Z#bXWg4gxGB45s?q1>> zC^XLu1euq>xA0;CdL=hmcvjDk+Z{m*7!2!RYLx;+AQu8uhCh-RQq6K3dZ3kB}aMQpeMA!JIhPx5}87m#ZdAcMu^m>jKJ54Tsm6=EO4s3DkJ~#_fuK zFe*uq*-+O-k2A;cm$=$ z_aMRzB7LU{d*Ab8v3UpY_4C6iDcPR_o9z-Xc~TISJc$E4(^4v@`l-jwN^{@&d((Fy zM8DG*ye`M!1iyOvdIddj zO4E6y=nPopp-jPyMjy{aOd&ROn( zBysksFz>oUsPxjpot3B-+v{03m#r(|>rpwoR3ag}wD<@$wK2{aNE84&91sMG0KEf{ zY!1>1o9{&C=NCm;3qSo(Hb|Hx}>|!oYmN*#Zm*dcLgc zhyt=>1eGd*lmgjEt?)#d{sT}zPW)Q^37;K^15ICD7ZfDZ--USZc>pWmY@CIRdxw@8 zdrOuWe3Nq078%&@48-`gK|dWwTL40 zi-Dekf&}J~F3!55sgCtcD492KQpgP{a=aSixa6Lxz)ck1Wi~|w5?xX7BYo7<`CI*Pymxl?n2585IKd+nR$O2v#5*iXOxI_aI6Px|Agpo`z7c=MY$6;Ys6D`tWC@d#uB0)N?-PZ z5o0SQ_xK^GekZKY&jefGju*LJX>Lr;x#v0hES&HhR8Ag~6=N{faUUF|{*6GFu7hw` zA5@9>pMLLFYgluT0PL|QLYOrAgt`0Sq3a`9$gBC_5L`l`7OG&;UhB_@-CHY0QCDA! zI7#8XYBs{L#SounQ8SE`P+n9oQ!kg4_EEr-<{& z{{UY@-y|yRK0HuIUtvm^;1{?$Nm7_Lf~nGmAS&dN8mdEB5(K)uX~Orqf-+Wm_9@lu ze8E=au9%nR3Xp`rcJzM!j-+(o6l6$gxB4yB)_q&j#_E0Sxf8XQC0z-wau2Y{?AaLI zk+J|t3|4o{Br>DWta6fu=PoW{3}<=SE9;Wo^xJ5Ue!{=Ptr`_0WvV8zqyFE)sdY5H zsF^(dboF(c0{*oNO|kCLFIBaYT{=8et}1A3{HoO!S^K#!@IZWbk|^R4I?UnAIQh~y z#kYi0>$}89)}w{=gaUESh_seZz-R5ajDKRp!Uzlz=ztf1EY3#7x@C_DpRWMW;n+ui z#y+unQFK1#D7SZTne#W^LhcMgU%L=B1Qe;*&zi`3JSW$D;{pEKRQVDg6uzgL)L&t} z&d(dvoG+D-+y;I;bCzE-z7NceL1L=bU0IuL_z9Iy!+9QB9-B!Kk}ivBH+K%uwL#c+ zJS07Za3zRw$Ce}R@IP$7gm`hgX3ojWh(0a%$ehbu?`xea#ifj{V-cH{hJ#PQVcKmb z=cp!>4-@`@+vP zOR;#Zdde)3Hbw#a7oXO7LW!r-%`8^!Ka*e2<`e@K6mEA#E>;vNkriR)k<+ROTdq01 zuuDr6otGjE<7vOmq)fTLz)`22@R3&MHif}@s)Dv(92M(xTK9BJsCS2XX6(d2xr9>Q zVpK9*4(U6&&-pkl!0Ee5AW#_OZd$o#6vaY%7Lyr&Bo6lYdz_p_#)%YZ;|!xFOwhVD ze({}`FtR!V&h?1Ls`p0c!O`kPM#6wdUi_Gwwvg zm#!LlxPfYDhk?F^$WdGQsSA+SWIr1tbBhT7CN|`IvTsj59i(V)`_G@%`>@8l+*(QP zs0@xWm0h=UXf>#}PdU1wA}y4G$8rQnr&?!Zsqllxsqybbe^TMrW7$SUa@j_|=A8c_ z7W;2N)>PiBT`(^7B@szdi4&QHu#oP?Gbyd%hDQ>GwebWzM@s4Tq#T?1F_9Qnyppia5*9i=Q-V|Jl_YJS8_D#j38VV@ zIo~~Uo`j)5RStDZVKv0!OyKev#O#TGcUDTKsa6pdkL%zk3v6?W*zJ=Mw|g3P!V_A2 z>VCD*8fg`M7rCLmR(xJa;F1edF~Zpu(~T3IUom zJnspz<%l6J#1=f85WwCS+5t$a73}VC3#b2)ps?CGNbJOz=>u2Oz_a)stmD6_)eRpB z^cWUMC!?GOP;$50-^DE;K4EH{Q(gt{cFL1I$$O`l)`NE9{>97*doK4|PVl=O*6Jku>mw6|%z|D*E1r9h^ z$*1X<{eGwm9zsedG(|A}1R1`_#3;UjN8jcQ#*sc5brq(@Ux5DQUjSo)sV5IzOY;Cw z9%G#LoIzg3)Om8#$|U$L>5NmJ05Aa8{jd3E8Mcvti{VfJ;k*AZUi%7Bi_9c2VN=MR zEyJ98b?zT1fFKO86&yAY-I%Rgl)@rMjd>|IUBZz?W|#!#G&lGh;M~qpqC(yiux_Y6 z{p$6y7seB(pCfh*A5u17E*b+GtABfsfR{176ersvZu4aCl1v|fYsR>8<=3m-D?IJw-l;wL9Y>(5}4 zWp8q@(CP#w!A5IG$H1ICX_#PgG-O5*Y)OJYW|r-dVl`nm6=bDS>IyBwQp_wSmDM;2 z|IB~-uqnHvo`z7-fAm>GDe&^H^_|15@Sf<(ANw5-f>Xq`M|~W5Lcn{Ou3K$bW7o&1 z2SCBM*R3BANj(j`4CUw7VOb

      - - - diff --git a/experiments/tee-demo/package.json b/experiments/tee-demo/package.json deleted file mode 100644 index 5136d2f..0000000 --- a/experiments/tee-demo/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "world-id-web-authenticator", - "version": "0.1.0", - "private": true, - "engines": { - "node": ">=24" - }, - "packageManager": "bun@1.3.5", - "scripts": { - "dev": "bun scripts/dev.ts", - "build": "vite build", - "start": "bun src/server/index.ts", - "lint": "eslint", - "typecheck": "tsc --noEmit", - "format": "prettier --write .", - "format:check": "prettier --check .", - "test": "bun test tests", - "build:selfie-helper": "cargo build --locked --config src/server/face-enrollment-helper/build-config.toml --manifest-path src/server/face-enrollment-helper/Cargo.toml", - "dev:api": "bun --watch src/server/index.ts", - "dev:web": "vite" - }, - "dependencies": { - "@radix-ui/react-dropdown-menu": "^2.1.16", - "@types/qrcode": "^1.5.5", - "@worldcoin/walletkit-web": "file:../../../walletkit-selfie-integration/worldcoin-walletkit-web-0.22.1.tgz", - "clsx": "^2.1.1", - "lossless-json": "4.3.1", - "motion": "^12.23.22", - "onnxruntime-web": "1.30.0", - "qrcode": "^1.5.4", - "react": "19.2.3", - "react-dom": "19.2.3", - "react-router-dom": "^7.18.4", - "tailwind-merge": "^3.3.1", - "viem": "2.56.0" - }, - "devDependencies": { - "@eslint/eslintrc": "^3", - "@eslint/js": "^9", - "@tailwindcss/postcss": "^4", - "@types/bun": "^1.4.2", - "@types/node": "^20", - "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^6.1.2", - "eslint": "^9", - "eslint-plugin-react-hooks": "^7.1.1", - "globals": "^17.13.0", - "prettier": "^3.6.2", - "prettier-plugin-sort-imports-desc": "^1.0.0", - "tailwindcss": "^4", - "typescript": "^5", - "typescript-eslint": "^8.71.1", - "vite": "^8.3.3" - }, - "prettier": { - "semi": false, - "tabWidth": 4, - "useTabs": true, - "printWidth": 120, - "singleQuote": true, - "trailingComma": "es5", - "arrowParens": "avoid", - "bracketSpacing": true, - "plugins": [ - "prettier-plugin-sort-imports-desc" - ] - }, - "type": "module" -} diff --git a/experiments/tee-demo/postcss.config.mjs b/experiments/tee-demo/postcss.config.mjs deleted file mode 100644 index 782416e..0000000 --- a/experiments/tee-demo/postcss.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -const config = { - plugins: { '@tailwindcss/postcss': {} }, -} - -export default config diff --git a/experiments/tee-demo/public/images/world-id/README.md b/experiments/tee-demo/public/images/world-id/README.md deleted file mode 100644 index 8388ef9..0000000 --- a/experiments/tee-demo/public/images/world-id/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Asset provenance - -Copied unchanged from `worldcoin/world-app-ios` at checkout -`d9c63c620dae2fe5ccc31f918acaa1260bf26c3e`, under -`Sources/WorldAppLegacy/Sources/WorldAppLegacyUI/Resources/Images.xcassets`: - -- `mark.svg`: `WorldID/icon-world-id-onboarding-mark.imageset/icon-world-id-onboarding-mark.svg` -- `close.svg`: `Common/icon-close-x-grey.imageset/icon-close-x-grey.svg` -- `shield.svg`: `Common/icon-shield-check.imageset/icon-shield-check.svg` -- `success.svg`: `Common/icon-check-circle-black.imageset/icon-check-circle.svg` diff --git a/experiments/tee-demo/public/images/world-id/close.svg b/experiments/tee-demo/public/images/world-id/close.svg deleted file mode 100644 index dd40042..0000000 --- a/experiments/tee-demo/public/images/world-id/close.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/experiments/tee-demo/public/images/world-id/mark.svg b/experiments/tee-demo/public/images/world-id/mark.svg deleted file mode 100644 index 06cdaa9..0000000 --- a/experiments/tee-demo/public/images/world-id/mark.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experiments/tee-demo/public/images/world-id/shield.svg b/experiments/tee-demo/public/images/world-id/shield.svg deleted file mode 100644 index b02bbec..0000000 --- a/experiments/tee-demo/public/images/world-id/shield.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/experiments/tee-demo/public/images/world-id/success.svg b/experiments/tee-demo/public/images/world-id/success.svg deleted file mode 100644 index 8aa683c..0000000 --- a/experiments/tee-demo/public/images/world-id/success.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/experiments/tee-demo/scripts/create-selfie-admission-key.ts b/experiments/tee-demo/scripts/create-selfie-admission-key.ts deleted file mode 100644 index 2344f85..0000000 --- a/experiments/tee-demo/scripts/create-selfie-admission-key.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { resolve } from 'node:path' -import { createECDH } from 'node:crypto' -import { mkdir, writeFile } from 'node:fs/promises' - -const directory = process.argv[2] -if (!directory) throw new Error('Usage: bun scripts/create-selfie-admission-key.ts /private/directory') -// Refuse existing directories so an active signing key cannot be overwritten. -await mkdir(directory, { mode: 0o700 }) -const key = createECDH('prime256v1') -key.generateKeys() -await writeFile( - resolve(directory, 'admission-private.hex'), - key.getPrivateKey().toString('hex').padStart(64, '0') + '\n', - { mode: 0o600, flag: 'wx' } -) -await writeFile(resolve(directory, 'admission-public.hex'), key.getPublicKey().toString('hex') + '\n', { - mode: 0o600, - flag: 'wx', -}) -console.log( - 'Created admission-private.hex and admission-public.hex. Only the public key belongs in staging configuration.' -) diff --git a/experiments/tee-demo/scripts/dev.ts b/experiments/tee-demo/scripts/dev.ts deleted file mode 100644 index 01becb8..0000000 --- a/experiments/tee-demo/scripts/dev.ts +++ /dev/null @@ -1,22 +0,0 @@ -export {} - -const apiPort = process.env.API_PORT || '3101' -const api = Bun.spawn([process.execPath, '--watch', 'src/server/index.ts'], { - env: { ...process.env, PORT: apiPort, NODE_ENV: 'development', LOCAL_TEE_DEMO_ADMISSION: '1' }, - stdout: 'inherit', - stderr: 'inherit', -}) -const web = Bun.spawn([process.execPath, 'node_modules/vite/bin/vite.js', ...process.argv.slice(2)], { - env: { ...process.env, API_PORT: apiPort }, - stdout: 'inherit', - stderr: 'inherit', -}) -const stop = () => { - api.kill() - web.kill() -} -for (const signal of ['SIGINT', 'SIGTERM'] as const) process.on(signal, stop) -const exitCode = await Promise.race([api.exited, web.exited]) -stop() -await Promise.all([api.exited, web.exited]) -process.exit(exitCode) diff --git a/experiments/tee-demo/src/components/AuthenticatorScreen.tsx b/experiments/tee-demo/src/components/AuthenticatorScreen.tsx deleted file mode 100644 index 22259ce..0000000 --- a/experiments/tee-demo/src/components/AuthenticatorScreen.tsx +++ /dev/null @@ -1,480 +0,0 @@ -import { useNavigate } from 'react-router-dom' -import type { RecoveryData } from '../lib/walletkit' -import WorldMark from '@/components/icons/WorldMark' -import CredentialVault from '@/components/CredentialVault' -import { logRegistrationClick } from '@/lib/client-context' -import { useCallback, useEffect, useRef, useState } from 'react' -import CredentialRequestSheet from '@/components/CredentialRequestSheet' -import { useAuthenticatorSession } from '@/components/AuthenticatorSession' -import { createPasskey, unlockPasskey, type CreatedPasskey } from '@/lib/passkey' -import { loadDemoProfile, saveDemoProfile, type DemoProfile } from '@/lib/demo-profile' -import { abortable, registerOnStaging, type RegistrationPhase } from '@/lib/staging-registration' -import { initializeAuthenticator, issueFauxCredential, type FauxIssuanceExchange } from '@/lib/authenticator-session' - -const phaseLabels = { - idle: 'Ready to create a passkey', - saved: 'Your passkey is saved. Unlock it to continue registration.', - creating: 'Complete the passkey creation prompt.', - unlocking: 'Unlock your passkey to derive the two secrets.', - loading: 'Secrets derived. Loading WalletKit…', - registering: 'Submitting the public account to staging…', - queued: 'Registration queued…', - batching: 'Registration is being batched…', - submitted: 'Registration submitted. Waiting for finalization…', - finalized: 'Registration saved. Unlock your passkey to initialize this authenticator.', - initializing: 'Opening the registered authenticator and encrypted vault…', - ready: 'Authenticator initialized. Encrypted credential vault is open.', - issuing: 'Requesting a staging faux credential and storing it in the vault…', - issued: 'Faux credential issued and stored in the encrypted vault.', - issuingSelfie: 'Issuing a selfie credential using synthetic staging enrollment…', - selfieIssued: 'Selfie credential issued and stored in the encrypted vault.', -} -type Phase = keyof typeof phaseLabels - -function errorMessage(error: unknown): string { - if (error instanceof DOMException) { - if (error.name === 'NotAllowedError' || error.name === 'AbortError') { - return 'The passkey prompt was cancelled, timed out, or needs another click. You can try again.' - } - if (error.name === 'NotSupportedError') - return 'This browser or passkey provider does not support the requested operation.' - if (error.name === 'SecurityError') return 'Passkeys are unavailable for this origin. Use HTTPS or localhost.' - } - return error instanceof Error ? error.message : 'The operation failed. Registration has not been confirmed.' -} - -export default function AuthenticatorScreen() { - const autoStarted = useRef(new Set()) - const request = useRef(null) - const profile = useRef(null) - const { wallet, initialized, setInitialized, shareStarted, setShareStarted } = useAuthenticatorSession() - const [issuanceExchange, setIssuanceExchange] = useState(null) - const [hasActiveFaux, setHasActiveFaux] = useState(null) - const [hasActiveSelfie, setHasActiveSelfie] = useState(null) - const navigate = useNavigate() - const onVaultLoaded = useCallback((faux: boolean, selfie: boolean) => { - setHasActiveFaux(faux) - setHasActiveSelfie(selfie) - }, []) - const [issued, setIssued] = useState<{ credentialId: string; issuerSchemaId: string } | null>(null) - const [loaded, setLoaded] = useState(false) - const [requestEntry, setRequestEntry] = useState(null) - const [pending, setPending] = useState(false) - const [created, setCreated] = useState(null) - const [phase, setPhase] = useState('idle') - const [registrationAttempted, setRegistrationAttempted] = useState(false) - const [material, setMaterial] = useState(null) - const [error, setError] = useState(null) - - useEffect(() => { - try { - const saved = loadDemoProfile(localStorage) - profile.current = saved - if (saved) { - setCreated(saved.passkey) - setMaterial(saved.publicMaterial ?? null) - setRegistrationAttempted(saved.registration !== 'created') - setPhase(wallet.current ? 'ready' : saved.registration === 'finalized' ? 'finalized' : 'saved') - if (saved.registration === 'submitting') { - setError( - 'A previous registration attempt was interrupted. Its outcome is unknown; this demo will not submit again or create another passkey.' - ) - } - } - setLoaded(true) - } catch (cause) { - setError(errorMessage(cause)) - } - const abort = () => { - request.current?.abort() - } - window.addEventListener('pagehide', abort) - return () => { - window.removeEventListener('pagehide', abort) - abort() - } - }, [wallet]) - - const onStart = useCallback( - async (automatic = false) => { - if (!loaded || request.current || registrationAttempted) return - const controller = new AbortController() - request.current = controller - setPending(true) - setError(null) - try { - let passkey = created - if (!passkey) { - if (!automatic) void logRegistrationClick() - setPhase('creating') - passkey = await createPasskey(controller.signal) - controller.signal.throwIfAborted() - setCreated(passkey) - profile.current = { version: 1, passkey, registration: 'created' } - } - if (!profile.current) throw new Error('Missing saved passkey record.') - saveDemoProfile(localStorage, profile.current) - setPhase('unlocking') - // Try immediately after creation. If a provider requires fresh activation, - // the retry button calls this same get() directly from a new click. - const secrets = await unlockPasskey(passkey, controller.signal) - if (controller.signal.aborted) { - secrets.seed.fill(0) - secrets.databaseKey.fill(0) - controller.signal.throwIfAborted() - } - setRegistrationAttempted(true) - const session = await registerOnStaging( - secrets, - passkey.credentialId, - controller.signal, - (next: RegistrationPhase) => { - if (!controller.signal.aborted) { - if (next === 'registering' || next === 'finalized') { - const saved = profile.current! - const updated = { - ...saved, - registration: - next === 'registering' ? ('submitting' as const) : ('finalized' as const), - } - saveDemoProfile(localStorage, updated) - profile.current = updated - } - setPhase(next) - } - }, - publicMaterial => { - if (!controller.signal.aborted) { - profile.current = { ...profile.current!, publicMaterial } - setMaterial(publicMaterial) - } - } - ) - if (controller.signal.aborted) { - session.terminate() - return - } - wallet.current = session - setInitialized(true) - setPhase('ready') - } catch (cause) { - if (!controller.signal.aborted) setError(errorMessage(cause)) - } finally { - request.current = null - setPending(false) - } - }, - [loaded, registrationAttempted, created, wallet, setInitialized] - ) - - const onInitialize = useCallback(async () => { - const saved = profile.current - if (request.current || wallet.current || saved?.registration !== 'finalized' || !saved.publicMaterial) return - const controller = new AbortController() - request.current = controller - setPending(true) - setError(null) - setPhase('unlocking') - try { - const secrets = await unlockPasskey(saved.passkey, controller.signal) - setPhase('initializing') - const session = await initializeAuthenticator( - secrets, - saved.passkey.credentialId, - saved.publicMaterial, - controller.signal - ) - if (controller.signal.aborted) { - session.terminate() - return - } - setHasActiveFaux(null) - setHasActiveSelfie(null) - wallet.current = session - setInitialized(true) - setPhase('ready') - } catch (cause) { - if (!controller.signal.aborted) setError(errorMessage(cause)) - } finally { - request.current = null - setPending(false) - } - }, [wallet, setInitialized]) - - useEffect(() => { - if (requestEntry === null || (requestEntry && !shareStarted)) return - if (!loaded || initialized || pending || error || request.current) return - const registration = profile.current?.registration - if (registration === 'submitting') return - const action = registration === 'finalized' ? 'initialize' : 'register' - if (autoStarted.current.has(action)) return - autoStarted.current.add(action) - if (action === 'initialize') void onInitialize() - else void onStart(true) - }, [loaded, initialized, pending, error, onInitialize, onStart, requestEntry, shareStarted]) - - const onIssue = async () => { - if ( - request.current || - !initialized || - !wallet.current || - issued?.issuerSchemaId === '128' || - hasActiveFaux !== false - ) - return - const controller = new AbortController() - request.current = controller - setPending(true) - setError(null) - setPhase('issuing') - setIssuanceExchange(null) - try { - const records = await abortable( - wallet.current.listCredentials(), - AbortSignal.any([controller.signal, AbortSignal.timeout(10_000)]) - ) - if (records.some(record => record.issuerSchemaId === BigInt(128) && !record.isExpired)) { - setHasActiveFaux(true) - setPhase('ready') - return - } - const stored = await issueFauxCredential(wallet.current, controller.signal, fetch, exchange => { - if (!controller.signal.aborted) setIssuanceExchange(exchange) - }) - if (!controller.signal.aborted) { - setIssued({ - credentialId: stored.credentialId.toString(), - issuerSchemaId: stored.issuerSchemaId.toString(), - }) - setPhase('issued') - } - } catch (cause) { - wallet.current?.terminate() - wallet.current = null - setInitialized(false) - if (!controller.signal.aborted) setError(errorMessage(cause)) - } finally { - request.current = null - setPending(false) - } - } - - return ( -
      - {(requestEntry === false || shareStarted) && ( - <> -
      - -
      -
      -

      - {issued - ? issued.issuerSchemaId === '11' - ? 'Selfie credential stored' - : 'Faux credential stored' - : initialized - ? 'Authenticator ready' - : profile.current?.registration === 'finalized' - ? 'World ID registered' - : 'Create your World ID'} -

      -

      - Register on staging, initialize your authenticator, then issue a test credential. -

      -
      -

      - {error ? 'Flow stopped.' : !loaded ? 'Checking saved passkey…' : phaseLabels[phase]} -

      - {created && ( -
      -
      -
      Passkey ID
      -
      {created.credentialId}
      -
      -
      -
      Passkey PRF
      -
      {created.prfSupported ? 'Supported' : 'Not reported as supported'}
      -
      - {material && ( - <> -
      -
      Authenticator address
      -
      - {material.authenticatorAddress} -
      -
      -
      -
      Authenticator public key
      -
      - {material.authenticatorPubkey} -
      -
      -
      -
      Offchain signer commitment
      -
      - {material.offchainSignerCommitment} -
      -
      - - )} -
      - )} -
      - {error && ( -

      - {error} -

      - )} - {loaded && - (pending || error) && - !registrationAttempted && - (!created || created.prfSupported) && ( - - )} - {loaded && - (pending || error) && - profile.current?.registration === 'finalized' && - !initialized && ( - - )} - {initialized && wallet.current && ( -
      - Developer menu - { - setIssued(null) - setIssuanceExchange(null) - }} - /> - - - -

      - {hasActiveSelfie - ? 'Demo challenge opens a live camera preview. No image is sent and no face match is performed yet.' - : 'Opens a live camera preview that stays in this tab. Demo issuance uses synthetic face data; it does not verify your face or create a recoverable PCP.'} -

      - {issued && ( -

      - Stored credential ID: {issued.credentialId} · Issuer schema:{' '} - {issued.issuerSchemaId} -

      - )} - {issuanceExchange && ( -
      -

      Faux issuance request / response

      -

      - This button’s exchange with the staging issuer proxy. Visible only for this - visit. -

      -
      -

      Request

      -

      - POST /api/faux-credential -

      -
      -												{JSON.stringify(issuanceExchange.request.body, null, 2)}
      -											
      -
      -
      -

      - Response - {issuanceExchange.response - ? ` · HTTP ${issuanceExchange.response.status}` - : ''} -

      -
      -												{issuanceExchange.response?.body ??
      -													(pending ? 'Waiting for response…' : 'No response received.')}
      -											
      -
      -
      - )} -
      - )} -
      - - )} - { - setShareStarted(true) - if (initialized) return - // Start WebAuthn directly from the click to preserve user activation. - const action = profile.current?.registration === 'finalized' ? 'initialize' : 'register' - autoStarted.current.add(action) - if (action === 'initialize') void onInitialize() - else void onStart() - }} - onSessionClosed={() => { - wallet.current = null - setInitialized(false) - }} - /> -
      - ) -} diff --git a/experiments/tee-demo/src/components/AuthenticatorSession.tsx b/experiments/tee-demo/src/components/AuthenticatorSession.tsx deleted file mode 100644 index 2e1bd75..0000000 --- a/experiments/tee-demo/src/components/AuthenticatorSession.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import type { WalletKit } from '../lib/walletkit' -import { useLocalTeeConnection } from '@/hooks/useLocalTeeConnection' -import type { IncomingRequest } from '@/lib/requests/incoming-request' -import { createContext, useCallback, useContext, useEffect, useRef, useState, type ReactNode } from 'react' - -function useSessionState() { - const tee = useLocalTeeConnection() - const stopTee = tee.stop - const wallet = useRef(null) - const [initialized, setInitialized] = useState(false) - // Keep the decrypted request and bridge response capability across in-tab routes only. - const [incoming, setIncoming] = useState(null) - const [shareStarted, setShareStarted] = useState(false) - const clearRequest = useCallback(() => { - setIncoming(null) - setShareStarted(false) - }, []) - useEffect(() => { - const close = () => { - stopTee() - wallet.current?.terminate() - wallet.current = null - setInitialized(false) - clearRequest() - } - window.addEventListener('pagehide', close) - return () => { - window.removeEventListener('pagehide', close) - close() - } - }, [clearRequest, stopTee]) - return { - tee, - wallet, - initialized, - setInitialized, - incoming, - setIncoming, - shareStarted, - setShareStarted, - clearRequest, - } -} -const SessionContext = createContext | null>(null) - -export function AuthenticatorSession({ children }: { children: ReactNode }) { - const session = useSessionState() - return {children} -} - -export function useAuthenticatorSession() { - const session = useContext(SessionContext) - if (!session) throw new Error('Authenticator session provider is missing.') - return session -} diff --git a/experiments/tee-demo/src/components/CredentialRequestSheet.tsx b/experiments/tee-demo/src/components/CredentialRequestSheet.tsx deleted file mode 100644 index 4a3dde7..0000000 --- a/experiments/tee-demo/src/components/CredentialRequestSheet.tsx +++ /dev/null @@ -1,506 +0,0 @@ -import { Link } from 'react-router-dom' -import { useNavigate } from 'react-router-dom' -import type { WalletKit } from '../lib/walletkit' -import { abortable } from '@/lib/staging-registration' -import RequestPreflight from '@/components/RequestPreflight' -import { useCallback, useEffect, useRef, useState } from 'react' -import { useAuthenticatorSession } from '@/components/AuthenticatorSession' -import { checkExpiry, credentialRequirementsLabel } from '@/lib/requests/proof-request' -import { loadIncomingRequest, checkRequestCredentials } from '@/lib/requests/incoming-request' - -export default function CredentialRequestSheet({ - wallet, - enabled, - canContinue, - continuationError, - onRequestDetected, - onContinue, - onSessionClosed, -}: { - wallet: WalletKit | null - enabled: boolean - canContinue: boolean - continuationError: string | null - onRequestDetected: (detected: boolean) => void - onContinue: () => void - onSessionClosed: () => void -}) { - const navigate = useNavigate() - const dialog = useRef(null) - const operation = useRef(null) - const loading = useRef(null) - const sourceUrl = useRef(null) - const { incoming, setIncoming, clearRequest, setShareStarted } = useAuthenticatorSession() - const resumedRequest = useRef(incoming) - const request = incoming?.proof - const [error, setError] = useState(null) - const [phase, setPhase] = useState<'review' | 'proving' | 'success'>('review') - const [sending, setSending] = useState(false) - const [sent, setSent] = useState(false) - const [confirmCancel, setConfirmCancel] = useState(false) - const [hasRequest, setHasRequest] = useState(false) - const [closed, setClosed] = useState(false) - const [proofResponse, setProofResponse] = useState(null) - const [credentialCheck, setCredentialCheck] = useState<{ - incoming: NonNullable - result: Awaited> - } | null>(null) - const availability = credentialCheck?.incoming === incoming ? credentialCheck?.result : null - const [vaultCheckAttempt, setVaultCheckAttempt] = useState(0) - const [progress, setProgress] = useState<{ time: string; message: string }[]>([]) - const logStep = useCallback( - (step: string, message: string, status: 'started' | 'completed' | 'failed' = 'completed') => { - const time = new Date().toISOString() - setProgress(entries => [...entries, { time, message }].slice(-30)) - console.info('world_id_proof_flow', { time, step, status }) - }, - [] - ) - - useEffect(() => { - const controller = new AbortController() - loading.current = controller - const stop = () => { - controller.abort() - operation.current?.abort() - } - window.addEventListener('pagehide', stop) - const cleanup = () => { - window.removeEventListener('pagehide', stop) - stop() - } - sourceUrl.current ??= window.location.href - const url = new URL(sourceUrl.current) - const hasConnector = ['i', 'k'].some(key => url.searchParams.has(key)) - const detected = hasConnector || !!resumedRequest.current - onRequestDetected(detected) - if (!detected) return cleanup - setHasRequest(true) - if (!hasConnector) return cleanup - setIncoming(null) - setShareStarted(false) - // The decrypted request's response capability stays in memory across routes. - if (url.searchParams.has('k')) window.history.replaceState(window.history.state, '', window.location.pathname) - void loadIncomingRequest(sourceUrl.current, controller.signal, message => { - if (!controller.signal.aborted) logStep('load_request', message, 'started') - }) - .then(loaded => { - if (!controller.signal.aborted) { - setIncoming(loaded) - logStep('validate_request', 'Request validated. Waiting for the authenticator to check its vault.') - } - }) - .catch(cause => { - if (!controller.signal.aborted) { - setError(cause instanceof Error ? cause.message : 'Could not load the request.') - logStep('load_request', 'Request loading or validation failed.', 'failed') - } - }) - return cleanup - }, [logStep, onRequestDetected, setIncoming, setShareStarted]) - - const needsEnrollment = !!availability?.needsSelfieEnrollment && !incoming?.unsupportedReason && !error - - useEffect(() => { - if (!enabled || !hasRequest || !wallet || (!availability && !error)) return - if (needsEnrollment) { - dialog.current?.close() - navigate('/selfie-check', { replace: true }) - } else if (!dialog.current?.open) dialog.current?.showModal() - }, [enabled, wallet, hasRequest, availability, needsEnrollment, error, navigate]) - - useEffect(() => { - if (!enabled || !wallet || !incoming) return - const controller = new AbortController() - void checkRequestCredentials(incoming, wallet, controller.signal) - .then(result => { - if (controller.signal.aborted) return - setCredentialCheck({ incoming, result }) - logStep( - 'check_credentials', - result.satisfied - ? 'Requested credentials are available. Waiting for approval.' - : 'The vault does not satisfy this request’s credential requirements.' - ) - }) - .catch(() => { - if (!controller.signal.aborted) setError('Could not read credential availability from the vault.') - }) - return () => controller.abort() - }, [enabled, wallet, incoming, logStep, vaultCheckAttempt]) - - useEffect(() => { - if (!request || sent) return - const timer = setTimeout( - () => setError('This request expired. Start a new request at the relying party.'), - Math.max(0, request.expires_at * 1000 - Date.now()) - ) - return () => clearTimeout(timer) - }, [request, sent]) - - const leave = () => { - loading.current?.abort() - dialog.current?.close() - clearRequest() - if (incoming?.returnUrl) window.location.assign(incoming.returnUrl) - else { - setHasRequest(false) - setClosed(true) - } - } - const returnToApp = async (proof = proofResponse) => { - if (!incoming || !proof || sending || operation.current) return - if (sent) { - leave() - return - } - setSending(true) - setError(null) - const controller = new AbortController() - operation.current = controller - try { - logStep('return_response', 'Encrypting and sending the proof response…', 'started') - await incoming.deliver(proof, controller.signal) - controller.signal.throwIfAborted() - setSent(true) - logStep('return_response', 'Response accepted by the transport. RP verification is separate.') - if (incoming.returnUrl) leave() - } catch { - if (!controller.signal.aborted) { - setError('Could not confirm proof delivery. Retry sending the same proof, or close this request.') - logStep('return_response', 'Response delivery failed; proof retained for retry.', 'failed') - } - } finally { - operation.current = null - setSending(false) - } - } - const cancel = async () => { - if (sending) return - operation.current?.abort() - if (!incoming) { - leave() - return - } - setSending(true) - try { - await incoming.cancel(AbortSignal.timeout(15000)) - logStep('cancel_request', 'Rejection returned to the relying party.') - leave() - } catch { - setError( - 'Could not send the rejection to the bridge. You can retry cancellation or close this tab; the RP request will expire.' - ) - } finally { - setSending(false) - } - } - const requestClose = () => { - if (sending) return - if (phase === 'success') { - leave() - return - } - setConfirmCancel(true) - } - const approve = async () => { - if ( - !wallet || - !incoming || - operation.current || - error || - !availability?.satisfied || - incoming.unsupportedReason - ) - return - const controller = new AbortController() - operation.current = controller - const deadline = AbortSignal.any([controller.signal, AbortSignal.timeout(120000)]) - const terminate = () => wallet.terminate() - deadline.addEventListener('abort', terminate, { once: true }) - setPhase('proving') - logStep('approval', 'Approval received.') - let generatedProof: string | null = null - try { - await incoming.validate(deadline) - logStep('revalidate_request', 'Request signature and expiry rechecked.') - const available = await checkRequestCredentials(incoming, wallet, deadline) - if (!available.satisfied) throw new Error('The required credentials are no longer available.') - logStep('generate_proof', 'WalletKit is generating the proof…', 'started') - const proof = await abortable(wallet.generateProof(JSON.stringify(incoming.proof)), deadline) - deadline.throwIfAborted() - checkExpiry(incoming.proof) - const result = JSON.parse(proof) as { error?: unknown; responses?: unknown } - if (result.error || !Array.isArray(result.responses) || !result.responses.length) - throw new Error('WalletKit could not satisfy this proof request.') - setProofResponse(proof) - setConfirmCancel(false) - setPhase('success') - generatedProof = proof - logStep('generate_proof', 'Proof created. Sending it to the relying party…') - } catch (cause) { - wallet.terminate() - onSessionClosed() - if (!controller.signal.aborted) - setError( - cause instanceof Error && cause.message === 'WalletKit could not satisfy this proof request.' - ? cause.message - : 'Proof generation failed or timed out. Reopen the authenticator and start a fresh request.' - ) - logStep('generate_proof', 'Proof generation stopped.', 'failed') - } finally { - deadline.removeEventListener('abort', terminate) - operation.current = null - } - // Delivery has its own deadline and retry path; a transport failure must not - // discard the proof or terminate the wallet after successful generation. - if (generatedProof && !controller.signal.aborted) await returnToApp(generatedProof) - } - - if (closed) - return ( -
      -

      Request closed

      -

      You can close this tab or return to the requesting app.

      - - Open authenticator - -
      - ) - if (!hasRequest) return null - if (!enabled) - return ( - void cancel()} - /> - ) - return ( - <> -
      -

      Request from {incoming?.label ?? 'relying party'}

      -

      - {error ?? - (wallet - ? 'Review the request in the approval sheet.' - : 'Initialize your authenticator with your passkey. The approval sheet will open automatically.')} -

      - {!request && ( - - )} - {request && !wallet && ( - - )} -
      - { - event.preventDefault() - requestClose() - }} - onClick={event => { - if (event.target === event.currentTarget) { - const rect = event.currentTarget.getBoundingClientRect() - if (event.clientY < rect.top || event.clientX < rect.left || event.clientX > rect.right) - requestClose() - } - }} - > -
      -
      -
      - -
      - -
      -

      {incoming?.label ?? 'Incoming request'} · Staging

      -

      - {confirmCancel - ? 'Cancel this request?' - : phase === 'success' - ? sent - ? 'Proof response sent' - : sending - ? 'Sharing proof…' - : 'Proof delivery unconfirmed' - : `Share a proof with ${incoming?.label ?? 'relying party'}`} -

      -

      - {confirmCancel - ? 'The relying party will receive a rejection without a proof.' - : phase === 'success' - ? sent - ? 'Your proof response has been sent. Verification happens on the relying party’s server.' - : sending - ? 'Sending your proof to the requesting app.' - : 'Your proof is ready. You can retry delivery without generating another proof.' - : 'Approving creates your proof and sends it to the requesting app.'} -

      - {!confirmCancel && phase !== 'success' && ( - <> -
      -

      Action: {incoming?.actionLabel ?? 'Loading…'}

      - {request && ( -

      Accepted credentials: {credentialRequirementsLabel(request)}

      - )} - {incoming?.appId && ( -

      - App ID: {incoming.appId} · RP signature checked against staging registry -

      - )} - {request?.proof_requests.map(item => ( -
      - -
      -

      {item.identifier.replaceAll('_', ' ')}

      -

      - Schema {item.issuer_schema_id} ·{' '} - {availability - ? availability.items.find(result => result.identifier === item.identifier) - ?.available - ? 'Available' - : 'Missing or outside date requirements' - : 'Checking vault…'} -

      -
      -
      - ))} - {availability && !availability.satisfied && ( -

      - {availability.requiresOrb && - availability.items.some(item => item.issuer_schema_id === 1 && !item.available) - ? 'This request requires an eligible Orb credential, which is missing from this vault. Selfie enrollment cannot replace it. Orb enrollment and transfer from another wallet are not available here; cancel and retry from the requesting app with an authenticator holding the required credential.' - : availability.canEnrollSelfie - ? 'This request accepts alternative credentials. You can choose Selfie Check below, or cancel and use another accepted credential from the requesting app.' - : 'Your vault does not contain credentials that satisfy all the required issuer and date conditions. Use an authenticator holding the accepted credentials.'} -

      - )} - {incoming?.unsupportedReason &&

      {incoming.unsupportedReason}

      } - {request && ( -
      - Request details -
      -									{JSON.stringify(request, null, 2)}
      -								
      -
      - )} - -

      - The app receives a cryptographic proof. Your passkey and secret keys are not shared. -

      - - )} - - {phase === 'success' && proofResponse && ( -
      -

      Proof response

      -
      -							{proofResponse}
      -						
      -
      - )} -
      -

      Progress

      -
        - {progress.map((entry, index) => ( -
      1. - · {entry.message} -
      2. - ))} -
      -
      - {error && ( -

      - {error} -

      - )} - {incoming?.returnUrl && ( -

      Return destination: {incoming.returnUrl}

      - )} -
      - {confirmCancel ? ( - <> - - - - ) : phase === 'success' ? ( - - ) : error ? ( - - ) : ( - <> - {availability?.canEnrollSelfie && !incoming?.unsupportedReason && ( - - )} - {availability && !availability.satisfied && !incoming?.unsupportedReason && ( - - )} - - - - )} -
      -
      - - ) -} diff --git a/experiments/tee-demo/src/components/CredentialVault.tsx b/experiments/tee-demo/src/components/CredentialVault.tsx deleted file mode 100644 index 284f5f6..0000000 --- a/experiments/tee-demo/src/components/CredentialVault.tsx +++ /dev/null @@ -1,174 +0,0 @@ -import { useEffect, useState } from 'react' -import { abortable } from '@/lib/staging-registration' -import type { CredentialMetadata, WalletKit } from '../lib/walletkit' - -export default function CredentialVault({ - wallet, - revision, - onLoaded, - onDeleted, - disabled, -}: { - wallet: WalletKit - revision: string | undefined - onLoaded: (hasActiveFaux: boolean, hasActiveSelfie: boolean) => void - onDeleted: () => void - disabled: boolean -}) { - const [credentials, setCredentials] = useState(null) - const [error, setError] = useState(null) - const [message, setMessage] = useState(null) - const [deleting, setDeleting] = useState(false) - const [refresh, setRefresh] = useState(0) - const [selection, setSelection] = useState(null) - useEffect(() => { - const controller = new AbortController() - void abortable(wallet.listCredentials(), AbortSignal.any([controller.signal, AbortSignal.timeout(10_000)])) - .then(records => { - if (controller.signal.aborted) return - setCredentials(records) - onLoaded( - records.some(record => record.issuerSchemaId === BigInt(128) && !record.isExpired), - records.some(record => record.issuerSchemaId === BigInt(11) && !record.isExpired) - ) - }) - .catch(() => { - if (!controller.signal.aborted) - setError('Could not read credential metadata. Refresh the list or unlock again.') - }) - return () => controller.abort() - }, [wallet, revision, onLoaded, refresh]) - async function removeSelected() { - if (!selection || deleting || disabled) return - setDeleting(true) - setError(null) - setMessage(null) - let removed = 0 - try { - const signal = AbortSignal.timeout(15_000) - for (const record of selection) { - signal.throwIfAborted() - await abortable(wallet.deleteCredential(record.credentialId), signal) - removed++ - } - setMessage(`Deleted ${removed} local credential${removed === 1 ? '' : 's'}.`) - } catch { - setError( - `Deletion stopped after ${removed} confirmed deletions. Refresh the list to check the current state before retrying.` - ) - } finally { - setSelection(null) - setDeleting(false) - onDeleted() - setRefresh(value => value + 1) - } - } - return ( -
      -

      Credential vault

      -

      - Encrypted browser storage · {credentials ? `${credentials.length} credentials` : 'Reading vault…'} -

      - {error && ( -

      - {error} -

      - )} - {message && ( -

      - {message} -

      - )} - - {credentials?.length === 0 &&

      No credentials stored.

      } -
        - {credentials?.map(record => ( -
      • -

        - {record.issuerSchemaId === BigInt(128) - ? 'Faux credential' - : record.issuerSchemaId === BigInt(11) - ? 'Selfie credential' - : 'Credential'}{' '} - · {record.isExpired ? 'Expired' : 'Active'} -

        -

        - ID {record.credentialId.toString()} · Schema {record.issuerSchemaId.toString()} -

        -

        - Expires {new Date(Number(record.expiresAt) * 1000).toLocaleString()} -

        - -
      • - ))} -
      - - {selection && ( -
      -

      - Delete {selection.length} selected local credential{selection.length === 1 ? '' : 's'}? Their - local blinding factors will also be removed. Issuer records, passkey, authenticator - registration, and PCP data are unchanged. This cannot be undone here. -

      -

      - Credential IDs: {selection.map(record => record.credentialId.toString()).join(', ')} -

      - - -
      - )} -
      -

      Local PCP storage

      -

      - No local PCP stored. PCP creation and persistence are not connected yet; the synthetic selfie - fixture is held only in memory. -

      - -
      -
      - ) -} diff --git a/experiments/tee-demo/src/components/RequestPreflight.tsx b/experiments/tee-demo/src/components/RequestPreflight.tsx deleted file mode 100644 index 3f89f35..0000000 --- a/experiments/tee-demo/src/components/RequestPreflight.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import type { IncomingRequest } from '@/lib/requests/incoming-request' - -export default function RequestPreflight({ - incoming, - error, - busy, - canContinue, - onShare, - onCancel, -}: { - incoming: IncomingRequest | null - error: string | null - busy: boolean - canContinue: boolean - onShare: () => void - onCancel: () => void -}) { - const selfie = incoming?.proof.proof_requests.some(item => item.issuer_schema_id === 11) - const message = error ?? incoming?.unsupportedReason - return ( -
      - World ID -

      Request through World ID

      -

      - {incoming ? incoming.label : error ? 'Unable to open request' : 'Loading request…'} -

      -

      - {incoming - ? selfie - ? 'is requesting a Selfie Check through World.' - : 'is requesting a World ID proof.' - : error - ? 'Return to the requesting app and start a new request.' - : 'Checking the request before continuing.'} -

      - {incoming &&

      Action: {incoming.actionLabel}

      } - {message && ( -

      - {message} -

      - )} -
      - - -
      -
      - ) -} diff --git a/experiments/tee-demo/src/components/selfie-check/LocalTeeConnection.tsx b/experiments/tee-demo/src/components/selfie-check/LocalTeeConnection.tsx deleted file mode 100644 index dda6dd6..0000000 --- a/experiments/tee-demo/src/components/selfie-check/LocalTeeConnection.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { useAuthenticatorSession } from '@/components/AuthenticatorSession' - -/** Dedicated TEE status and log; the initial attempt starts on the Issue button. */ -export default function LocalTeeConnection() { - const { tee } = useAuthenticatorSession() - return ( -
      -

      TEE connection

      -

      - {tee.result.reason} -

      - - -
        - {tee.logs.map((entry, index) => ( -
      1. - -

        {entry.message}

        -
      2. - ))} -
      -

      Demo access is provisioned automatically.

      -
      - ) -} diff --git a/experiments/tee-demo/src/components/selfie-check/SelfieCamera.tsx b/experiments/tee-demo/src/components/selfie-check/SelfieCamera.tsx deleted file mode 100644 index 7af7729..0000000 --- a/experiments/tee-demo/src/components/selfie-check/SelfieCamera.tsx +++ /dev/null @@ -1,211 +0,0 @@ -import { startCamera } from './camera-capture' -import { useEffect, useRef, useState } from 'react' -import { startFaceDetector } from './face-detector' -import { faceGuidance, previewPoint, type FaceDetection } from './rgbnet' - -export default function SelfieCamera({ - onEvent, - detectFaces = false, - diagnostics = false, - onCapture, - captureDisabled = false, -}: { - onEvent?: (message: string) => void - detectFaces?: boolean - diagnostics?: boolean - onCapture?: (image: Uint8Array) => Promise - captureDisabled?: boolean -}) { - const video = useRef(null) - const mounted = useRef(false) - useEffect(() => { - mounted.current = true - return () => { - mounted.current = false - } - }, []) - const [attempt, setAttempt] = useState(0) - const [ready, setReady] = useState(false) - const [error, setError] = useState(null) - const [detectionError, setDetectionError] = useState(null) - const [detectionAttempt, setDetectionAttempt] = useState(0) - const [detection, setDetection] = useState<{ faces: FaceDetection[]; width: number; height: number } | null>(null) - - useEffect(() => { - if (!detectFaces || !ready || !video.current) return - const controller = new AbortController() - setDetection(null) - setDetectionError(null) - try { - startFaceDetector( - video.current, - controller.signal, - diagnostics, - (faces, width, height) => setDetection({ faces, width, height }), - message => onEvent?.(message), - message => { - setDetection(null) - setDetectionError(message) - } - ) - } catch (cause) { - const message = cause instanceof Error ? cause.message : 'Face detection is unavailable' - setDetectionError(message) - onEvent?.(`RGBNet error: ${message}`) - } - return () => controller.abort() - }, [detectFaces, diagnostics, ready, detectionAttempt, onEvent]) - - useEffect(() => { - const preview = video.current - if (!preview) return - const controller = new AbortController() - onEvent?.('startCamera(): requesting camera access.') - void startCamera(preview, controller.signal, () => { - setReady(true) - onEvent?.('startCamera(): live preview ready. No frames uploaded.') - }).catch(cause => { - if (!controller.signal.aborted) { - setReady(false) - setError(cause instanceof Error ? cause.message : 'Camera failed. Try again.') - onEvent?.('startCamera(): interrupted or unavailable. See camera error; retry is available.') - } - }) - return () => controller.abort() - }, [attempt, onEvent]) - - const [capturing, setCapturing] = useState(false) - async function capture() { - if (!onCapture || capturing || captureDisabled || !video.current || !ready) return - setCapturing(true) - const canvas = document.createElement('canvas') - let image: Uint8Array | undefined - try { - const preview = video.current - const scale = Math.min(1, 1280 / Math.max(preview.videoWidth, preview.videoHeight)) - canvas.width = Math.round(preview.videoWidth * scale) - canvas.height = Math.round(preview.videoHeight * scale) - if (!canvas.width || !canvas.height) throw new Error('Camera frame is unavailable.') - const context = canvas.getContext('2d') - if (!context) throw new Error('Camera capture is unavailable.') - context.drawImage(preview, 0, 0, canvas.width, canvas.height) - const blob = await new Promise((resolve, reject) => - canvas.toBlob( - value => (value ? resolve(value) : reject(new Error('Could not encode camera frame.'))), - 'image/jpeg', - 0.92 - ) - ) - if (blob.size > 8 * 1024 * 1024) throw new Error('Camera frame is too large.') - image = new Uint8Array(await blob.arrayBuffer()) - if (mounted.current) await onCapture(image) - } catch { - setError('Capture failed. Please retry the camera.') - } finally { - if (image?.byteLength) image.fill(0) - canvas.width = canvas.height = 0 - setCapturing(false) - } - } - - return ( -
      -
      -
      -

      - {error - ? 'Camera interrupted' - : !ready - ? 'Opening camera…' - : !detectFaces - ? 'Place your face in the circle' - : detectionError - ? 'Face detection unavailable' - : detection - ? faceGuidance(detection.faces, detection.width, detection.height) - : 'Loading face detector…'} -

      - {onCapture && ( - - )} - {detectFaces && detectionError && ready && ( - <> -

      - {detectionError} -

      - - - )} - {error && ( - <> -

      - {error} -

      - - - )} -
      - ) -} diff --git a/experiments/tee-demo/src/components/selfie-check/SelfieCheckScreen.tsx b/experiments/tee-demo/src/components/selfie-check/SelfieCheckScreen.tsx deleted file mode 100644 index d7843fd..0000000 --- a/experiments/tee-demo/src/components/selfie-check/SelfieCheckScreen.tsx +++ /dev/null @@ -1,215 +0,0 @@ -import { Link } from 'react-router-dom' -import SelfieCamera from './SelfieCamera' -import { useNavigate } from 'react-router-dom' -import { checkExpiry } from '@/lib/requests/proof-request' -import { useCallback, useEffect, useRef, useState } from 'react' -import { checkRequestCredentials } from '@/lib/requests/incoming-request' -import { useAuthenticatorSession } from '@/components/AuthenticatorSession' -import { issueSelfieCredential, SelfieWalletTimeout } from '@/lib/selfie-issuance' - -export default function SelfieCheckScreen() { - const navigate = useNavigate() - const { incoming, wallet, initialized, setInitialized, shareStarted, clearRequest } = useAuthenticatorSession() - const operation = useRef(null) - const [phase, setPhase] = useState<'checking' | 'ready' | 'issuing' | 'retry' | 'returning'>('checking') - const [error, setError] = useState(null) - const [expired, setExpired] = useState(false) - const [closing, setClosing] = useState(false) - const [closed, setClosed] = useState(false) - const [progress, setProgress] = useState([]) - - useEffect(() => { - const controller = new AbortController() - if (!incoming || !initialized || !wallet.current || !shareStarted) return - const currentWallet = wallet.current - const timer = setTimeout( - () => { - setExpired(true) - controller.abort() - operation.current?.abort() - }, - Math.max(0, incoming.proof.expires_at * 1000 - Date.now()) - ) - const stop = () => { - controller.abort() - operation.current?.abort() - } - window.addEventListener('pagehide', stop) - void (async () => { - await incoming.validate(controller.signal) - if (incoming.unsupportedReason) throw new Error(incoming.unsupportedReason) - const available = await checkRequestCredentials(incoming, currentWallet, controller.signal) - controller.signal.throwIfAborted() - if (operation.current) return - if (available.satisfied) { - setPhase('returning') - navigate('/', { replace: true }) - } else if (available.canEnrollSelfie) { - setPhase('ready') - } else { - throw new Error('This request cannot be completed by issuing a demo selfie credential.') - } - })().catch(cause => { - if (!controller.signal.aborted) - setError(cause instanceof Error ? cause.message : 'Could not check this request.') - }) - return () => { - clearTimeout(timer) - window.removeEventListener('pagehide', stop) - stop() - } - }, [incoming, initialized, wallet, shareStarted, navigate]) - - const issue = useCallback(async () => { - if ( - !incoming || - !wallet.current || - !initialized || - !shareStarted || - expired || - incoming.unsupportedReason || - operation.current - ) - return - const controller = new AbortController() - operation.current = controller - const currentWallet = wallet.current - setError(null) - setProgress([]) - setPhase('issuing') - try { - await incoming.validate(controller.signal) - await issueSelfieCredential(currentWallet, controller.signal, message => { - if (!controller.signal.aborted) - setProgress(steps => (steps.at(-1) === message ? steps : [...steps, message].slice(-20))) - }) - controller.signal.throwIfAborted() - checkExpiry(incoming.proof) - setPhase('returning') - navigate('/', { replace: true }) - } catch (cause) { - if (cause instanceof SelfieWalletTimeout) { - wallet.current = null - setInitialized(false) - } - if (!controller.signal.aborted) { - setError( - cause instanceof Error - ? cause.message - : 'Demo issuance failed. Retry to resume the same enrollment.' - ) - setPhase('retry') - } - } finally { - operation.current = null - } - }, [incoming, wallet, initialized, shareStarted, expired, navigate, setInitialized]) - - const cancel = async () => { - if (!incoming || operation.current) return - const controller = new AbortController() - operation.current = controller - setClosing(true) - try { - await incoming.cancel(AbortSignal.any([controller.signal, AbortSignal.timeout(15000)])) - controller.signal.throwIfAborted() - clearRequest() - setClosed(true) - if (incoming.returnUrl) window.location.assign(incoming.returnUrl) - } catch (cause) { - if (!controller.signal.aborted) - setError(cause instanceof Error ? cause.message : 'Could not cancel the request. Try again.') - } finally { - operation.current = null - setClosing(false) - } - } - - return ( -
      -
      - World ID -

      {closed ? 'Request closed' : 'Set up Selfie Check'}

      - {!incoming ? ( - <> -

      - Open a new request from the requesting app to continue. Requests are kept only in this tab - and are cleared on reload. -

      - - Open authenticator - - - ) : ( - <> -

      Requested by {incoming.label}

      -

      Set up a selfie credential to continue with this request.

      -

      - Staging demo: the camera preview stays in this tab. Credential issuance still uses synthetic - face data; this capture does not verify your face. -

      - {(phase === 'ready' || phase === 'issuing' || phase === 'retry') && - initialized && - shareStarted && - !expired && - !closing && } - {(error || expired) && ( -

      - {expired ? 'This request expired. Start a new request from the requesting app.' : error} -

      - )} -
        - {progress.map((message, index) => ( -
      1. {message}
      2. - ))} -
      -
      - {phase === 'ready' && initialized && shareStarted && !expired && ( -
      - Developer tools - -
      - )} - {!initialized || !shareStarted ? ( - - Continue with your passkey - - ) : phase === 'retry' ? ( - - ) : ( - phase !== 'ready' && ( -

      - {phase === 'checking' - ? 'Checking credential…' - : phase === 'issuing' - ? 'Issuing demo credential…' - : 'Opening proof request…'} -

      - ) - )} - -
      - - )} -
      -
      - ) -} diff --git a/experiments/tee-demo/src/components/selfie-check/camera-capture.ts b/experiments/tee-demo/src/components/selfie-check/camera-capture.ts deleted file mode 100644 index 894b4bf..0000000 --- a/experiments/tee-demo/src/components/selfie-check/camera-capture.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { abortable } from '@/lib/staging-registration' - -// Keep the preview live until cancellation, tab hiding, or camera disconnection. -export async function startCamera(video: HTMLVideoElement, signal: AbortSignal, onReady: () => void): Promise { - if (!window.isSecureContext || !navigator.mediaDevices?.getUserMedia) - throw new Error('Camera access requires HTTPS or localhost and a supported browser.') - const interrupted = new AbortController() - const lifetime = AbortSignal.any([signal, interrupted.signal]) - const deadline = AbortSignal.any([lifetime, AbortSignal.timeout(30_000)]) - let stream: MediaStream | undefined - const stopTracks = (media: MediaStream) => media.getTracks().forEach(track => track.stop()) - const hidden = () => { - if (document.hidden) interrupted.abort(new Error('Camera stopped when you left this tab. Try again.')) - } - const ended = () => interrupted.abort(new Error('The camera disconnected. Reconnect it and try again.')) - document.addEventListener('visibilitychange', hidden) - window.addEventListener('pagehide', ended) - try { - hidden() - deadline.throwIfAborted() - const media = navigator.mediaDevices - .getUserMedia({ - audio: false, - video: { facingMode: 'user', width: { ideal: 1280 }, height: { ideal: 720 } }, - }) - .then(result => { - // Permission can resolve after cancellation or timeout. Never retain that stream. - if (deadline.aborted) stopTracks(result) - return result - }) - stream = await abortable(media, deadline) - deadline.throwIfAborted() - for (const track of stream.getVideoTracks()) track.addEventListener('ended', ended) - video.srcObject = stream - await abortable(video.play(), deadline) - onReady() - await new Promise((_, reject) => { - const abort = () => reject(lifetime.reason) - if (lifetime.aborted) abort() - else lifetime.addEventListener('abort', abort, { once: true }) - }) - } catch (cause) { - if (signal.aborted) throw signal.reason - if (interrupted.signal.aborted) throw interrupted.signal.reason - if (deadline.aborted) throw new Error('Camera capture timed out. Allow camera access and try again.') - if (cause instanceof DOMException && cause.name === 'NotAllowedError') - throw new Error('Camera access was denied. Allow it in your browser settings, then try again.') - if (cause instanceof DOMException && cause.name === 'NotFoundError') - throw new Error('No camera was found. Connect a camera and try again.') - if (cause instanceof DOMException && cause.name === 'NotReadableError') - throw new Error('The camera is unavailable. Close other apps using it and try again.') - throw cause - } finally { - if (stream) { - for (const track of stream.getVideoTracks()) track.removeEventListener('ended', ended) - stopTracks(stream) - } - video.pause() - video.srcObject = null - document.removeEventListener('visibilitychange', hidden) - window.removeEventListener('pagehide', ended) - } -} diff --git a/experiments/tee-demo/src/components/selfie-check/face-detector.ts b/experiments/tee-demo/src/components/selfie-check/face-detector.ts deleted file mode 100644 index d8759c5..0000000 --- a/experiments/tee-demo/src/components/selfie-check/face-detector.ts +++ /dev/null @@ -1,103 +0,0 @@ -import type { FaceDetection } from './rgbnet' -import type { DetectorRequest, DetectorResponse } from './rgbnet.worker' - -export function startFaceDetector( - video: HTMLVideoElement, - signal: AbortSignal, - diagnostics: boolean, - onResult: (faces: FaceDetection[], width: number, height: number) => void, - onEvent: (message: string) => void, - onError: (message: string) => void -): () => void { - const worker = new Worker(new URL('./rgbnet.worker.ts', import.meta.url), { type: 'module' }) - let stopped = false, - frameId = 0, - lastVideoTime = -1, - lastSummary = -Infinity - let lastFrameAt = performance.now() - let timer: ReturnType | undefined - let deadline: ReturnType | undefined - const clearDeadline = () => { - if (deadline) clearTimeout(deadline) - } - const stop = () => { - if (stopped) return - stopped = true - clearDeadline() - if (timer) clearTimeout(timer) - worker.terminate() - signal.removeEventListener('abort', stop) - onEvent('RGBNet: worker stopped; session and pending frame released.') - } - const fail = (message: string) => { - if (stopped) return - onEvent(`RGBNet error: ${message}`) - onError(message) - stop() - } - const armDeadline = (ms: number, operation: string) => { - clearDeadline() - deadline = setTimeout(() => fail(`${operation} timed out. Retry detection.`), ms) - } - const capture = async () => { - if (stopped) return - if (video.readyState < 2 || video.currentTime === lastVideoTime) { - if (performance.now() - lastFrameAt > 10_000) { - fail('Camera stopped producing frames. Restart the camera.') - return - } - timer = setTimeout(() => void capture(), 100) - return - } - lastVideoTime = video.currentTime - lastFrameAt = performance.now() - armDeadline(10_000, 'Frame capture/inference') - try { - const bitmap = await createImageBitmap(video) - if (stopped) { - bitmap.close() - return - } - const request: DetectorRequest = { type: 'frame', bitmap, id: ++frameId } - try { - worker.postMessage(request, [bitmap]) - } catch (cause) { - bitmap.close() - throw cause - } - } catch (cause) { - fail(cause instanceof Error ? cause.message : 'Could not capture a frame') - } - } - worker.onmessage = ({ data }: MessageEvent) => { - if (stopped) return - if (data.type === 'log') onEvent(`RGBNet: ${data.message}`) - else if (data.type === 'error') fail(`${data.stage}: ${data.message}`) - else if (data.type === 'ready') { - clearDeadline() - lastFrameAt = performance.now() - void capture() - } else { - clearDeadline() - onResult(data.faces, data.width, data.height) - if (performance.now() - lastSummary >= 2000) { - onEvent(`RGBNet frame ${data.id}: ${data.timings}`) - lastSummary = performance.now() - } - // At most one in-flight frame; schedule from completion, never queue video. - timer = setTimeout(() => void capture(), 100) - } - } - worker.onerror = () => fail('Worker failed to load or execute. Check browser console and retry.') - worker.onmessageerror = () => fail('Could not decode detector worker response.') - signal.addEventListener('abort', stop, { once: true }) - if (signal.aborted) stop() - else { - armDeadline(45_000, 'Model/session startup') - worker.postMessage({ type: 'init', diagnostics } satisfies DetectorRequest) - onEvent( - `RGBNet: worker starting; detailed runtime logs ${diagnostics ? 'enabled in browser console' : 'disabled'}.` - ) - } - return stop -} diff --git a/experiments/tee-demo/src/components/selfie-check/rgbnet-model.json b/experiments/tee-demo/src/components/selfie-check/rgbnet-model.json deleted file mode 100644 index 989b9e5..0000000 --- a/experiments/tee-demo/src/components/selfie-check/rgbnet-model.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "url": "/models/rgbnet.onnx", - "sha256": "35e9bdee626e16721e4566d1e552ad369d8334658b7893ee62cf3a026f1c0d06", - "bytes": 1720022, - "source": "world-app-ios/Sources/FaceAuthLibrary/Sources/FaceEngineFaceAuthModel/MLModels/RGBNet.onnx" -} diff --git a/experiments/tee-demo/src/components/selfie-check/rgbnet.ts b/experiments/tee-demo/src/components/selfie-check/rgbnet.ts deleted file mode 100644 index 35ab623..0000000 --- a/experiments/tee-demo/src/components/selfie-check/rgbnet.ts +++ /dev/null @@ -1,162 +0,0 @@ -// Port of biometric-engines RGBNet preprocessing/decoding and pixel-space NMS. -// This provides capture guidance only; the TEE repeats authoritative validation. -export const INPUT_SIZE = 256 -export const ANCHOR_COUNT = 2688 -export type FaceDetection = { box: [number, number, number, number]; landmarks: number[]; score: number } -export type ModelOutput = { dims: readonly number[]; data: Float32Array } - -// fast_image_resize uses fixed-kernel bilinear interpolation, quantized weights, -// and rounds the vertical u8 pass before the horizontal pass. Canvas resizing -// is browser-dependent and does not reproduce this operation. -function axisWeights(size: number) { - const weights = Array.from({ length: INPUT_SIZE }, (_, i) => { - const center = ((i + 0.5) * size) / INPUT_SIZE - 0.5 - const left = Math.max(0, Math.min(size - 1, Math.floor(center))) - const right = Math.max(0, Math.min(size - 1, Math.floor(center) + 1)) - const fraction = left === right ? 0 : center - Math.floor(center) - return { left, right, a: 1 - fraction, b: fraction } - }) - const maximum = Math.max(...weights.map(w => Math.max(w.a, w.b))) - let precision = 0 - while (precision < 21 && Math.round(maximum * 2 ** (precision + 1)) < 32768) precision++ - const scale = 2 ** precision - return weights.map(w => ({ ...w, a: Math.round(w.a * scale), b: Math.round(w.b * scale), scale })) -} - -export function prepareRgbnet(rgba: Uint8ClampedArray, width: number, height: number): Float32Array { - if ( - !Number.isInteger(width) || - !Number.isInteger(height) || - width < 1 || - height < 1 || - width > 4096 || - height > 4096 || - rgba.length !== width * height * 4 - ) - throw new Error('Invalid RGBNet frame dimensions or RGBA buffer') - const xs = axisWeights(width), - ys = axisWeights(height) - const plane = INPUT_SIZE * INPUT_SIZE - const output = new Float32Array(3 * plane) - const means = [104, 117, 123] - for (let y = 0; y < INPUT_SIZE; y++) { - const v = ys[y] - for (let x = 0; x < INPUT_SIZE; x++) { - const h = xs[x] - for (let c = 0; c < 3; c++) { - const left = Math.round( - (rgba[(v.left * width + h.left) * 4 + c] * v.a + rgba[(v.right * width + h.left) * 4 + c] * v.b) / - v.scale - ) - const right = Math.round( - (rgba[(v.left * width + h.right) * 4 + c] * v.a + rgba[(v.right * width + h.right) * 4 + c] * v.b) / - v.scale - ) - output[c * plane + y * INPUT_SIZE + x] = - Math.min(255, Math.round((left * h.a + right * h.b) / h.scale)) - means[c] - } - } - } - return output -} - -export const anchors: readonly (readonly number[])[] = [8, 16, 32].flatMap((step, level) => { - const sizes = [ - [20, 33], - [53, 87], - [141, 230], - ][level] - const grid = INPUT_SIZE / step - return Array.from({ length: grid * grid }, (_, i) => - sizes.map(size => [ - (((i % grid) + 0.5) * step) / INPUT_SIZE, - ((Math.floor(i / grid) + 0.5) * step) / INPUT_SIZE, - size / INPUT_SIZE, - size / INPUT_SIZE, - ]) - ).flat() -}) - -export function suppressDuplicates(faces: FaceDetection[], threshold = 0.4): FaceDetection[] { - const kept: FaceDetection[] = [] - for (const face of [...faces].sort((a, b) => b.score - a.score)) { - const a = face.box.map(x => x * INPUT_SIZE) - const area = (a[2] - a[0] + 1) * (a[3] - a[1] + 1) - if ( - kept.every(other => { - const b = other.box.map(x => x * INPUT_SIZE) - const intersection = - Math.max(0, Math.min(a[2], b[2]) - Math.max(a[0], b[0]) + 1) * - Math.max(0, Math.min(a[3], b[3]) - Math.max(a[1], b[1]) + 1) - return intersection / (area + (b[2] - b[0] + 1) * (b[3] - b[1] + 1) - intersection) <= threshold - }) - ) - kept.push(face) - } - return kept -} - -export function decodeRgbnet(outputs: ModelOutput[]): FaceDetection[] { - const heads = new Map() - for (const output of outputs) { - const dims = output.dims.length === 3 && output.dims[0] === 1 ? output.dims.slice(1) : output.dims - const columns = dims[1] - if ( - dims.length !== 2 || - dims[0] !== ANCHOR_COUNT || - ![2, 4, 10].includes(columns) || - heads.has(columns) || - !(output.data instanceof Float32Array) || - output.data.length !== ANCHOR_COUNT * columns || - !output.data.every(Number.isFinite) - ) - throw new Error('Unexpected RGBNet output shape, type or non-finite value') - heads.set(columns, output.data) - } - if (heads.size !== 3) throw new Error('Missing RGBNet output head') - const boxes = heads.get(4)!, - scores = heads.get(2)!, - points = heads.get(10)! - const faces: FaceDetection[] = [] - const f = Math.fround, - clamp = (n: number) => Math.min(1, Math.max(0, n)) - for (let i = 0; i < ANCHOR_COUNT; i++) { - if (scores[i * 2 + 1] <= f(0.8)) continue - const anchor = anchors[i] - const center = [0, 1].map(c => f(f(f(boxes[i * 4 + c] * f(0.1)) * anchor[c + 2]) + anchor[c])) - const size = [0, 1].map(c => f(f(Math.exp(f(boxes[i * 4 + c + 2] * f(0.2)))) * anchor[c + 2])) - const start = center.map((v, c) => f(v - f(size[c] / 2))) - const box: FaceDetection['box'] = [ - clamp(start[0]), - clamp(start[1]), - clamp(f(start[0] + size[0])), - clamp(f(start[1] + size[1])), - ] - const landmarks = Array.from({ length: 10 }, (_, j) => - clamp(f(f(f(points[i * 10 + j] * f(0.1)) * anchor[(j % 2) + 2]) + anchor[j % 2])) - ) - if (![...box, ...landmarks].every(Number.isFinite)) throw new Error('Invalid decoded RGBNet coordinates') - faces.push({ box, landmarks, score: scores[i * 2 + 1] }) - } - return suppressDuplicates(faces) -} - -// Normalized source coordinates -> mirrored, centered object-cover preview. -export function previewPoint(x: number, y: number, width: number, height: number): [number, number] { - const scale = Math.max(1 / width, 1 / height) - return [1 - (x * width * scale - (width * scale - 1) / 2), y * height * scale - (height * scale - 1) / 2] -} - -export function faceGuidance(faces: FaceDetection[], width: number, height: number): string { - if (!faces.length) return 'No face detected' - if (faces.length > 1) return 'Keep only one face in view' - const [x1, y1, x2, y2] = faces[0].box - const [cx, cy] = previewPoint((x1 + x2) / 2, (y1 + y2) / 2, width, height) - const scale = Math.max(width, height) / Math.min(width, height) - const visibleWidth = (x2 - x1) * (width >= height ? scale : 1) - const visibleHeight = (y2 - y1) * (height >= width ? scale : 1) - if (Math.hypot(cx - 0.5, cy - 0.5) > 0.12) return 'Center your face' - if (visibleWidth < 0.25 || visibleHeight < 0.35) return 'Move closer' - if (visibleWidth > 0.8 || visibleHeight > 0.85) return 'Move farther away' - return 'Face positioned' -} diff --git a/experiments/tee-demo/src/components/selfie-check/rgbnet.worker.ts b/experiments/tee-demo/src/components/selfie-check/rgbnet.worker.ts deleted file mode 100644 index 0ee242f..0000000 --- a/experiments/tee-demo/src/components/selfie-check/rgbnet.worker.ts +++ /dev/null @@ -1,150 +0,0 @@ -import model from './rgbnet-model.json' -import * as ort from 'onnxruntime-web/wasm' -import wasmUrl from 'onnxruntime-web/ort-wasm-simd-threaded.wasm?url' -import wasmModuleUrl from 'onnxruntime-web/ort-wasm-simd-threaded.mjs?url' -import { decodeRgbnet, prepareRgbnet, INPUT_SIZE, type FaceDetection } from './rgbnet' - -export type DetectorRequest = - | { type: 'init'; diagnostics: boolean } - | { type: 'frame'; bitmap: ImageBitmap; id: number } -export type DetectorResponse = - | { type: 'log'; message: string } - | { type: 'ready' } - | { type: 'result'; faces: FaceDetection[]; width: number; height: number; id: number; timings: string } - | { type: 'error'; stage: string; message: string } - -let session: ort.InferenceSession | undefined -let diagnostics = false -let busy = false -let stage = 'initialization' -const send = (message: DetectorResponse) => self.postMessage(message) -const log = (message: string) => { - if (diagnostics) console.debug(`[RGBNet] ${message}`) - send({ type: 'log', message }) -} -const trace = (message: string) => { - if (diagnostics) console.debug(`[RGBNet] ${message}`) -} - -self.onmessage = async ({ data }: MessageEvent) => { - if (busy) { - if (data.type === 'frame') data.bitmap.close() - send({ type: 'error', stage: 'protocol', message: 'Concurrent detector requests are not supported' }) - return - } - busy = true - try { - if (data.type === 'init') { - if (session) throw new Error('Detector already initialized') - diagnostics = data.diagnostics - ort.env.wasm.numThreads = 1 - ort.env.wasm.proxy = false - ort.env.wasm.wasmPaths = { - wasm: new URL(wasmUrl, self.location.href).href, - mjs: new URL(wasmModuleUrl, self.location.href).href, - } - ort.env.logLevel = diagnostics ? 'verbose' : 'warning' - stage = 'model download' - log(`Downloading RGBNet (${model.bytes} bytes expected). Frames remain on this device.`) - const response = await fetch(model.url, { signal: AbortSignal.timeout(20_000), credentials: 'omit' }) - if (!response.ok) - throw new Error(`Model download returned HTTP ${response.status}; run the RGBNet setup script`) - const bytes = await response.arrayBuffer() - if (bytes.byteLength !== model.bytes) throw new Error('Model length mismatch; run the RGBNet setup script') - stage = 'model integrity' - const hash = Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256', bytes)), b => - b.toString(16).padStart(2, '0') - ).join('') - if (hash !== model.sha256) throw new Error('Model SHA-256 mismatch; refusing to run unpinned weights') - log(`Model SHA-256 verified: ${hash}`) - stage = 'Wasm session creation' - const start = performance.now() - log('Creating ONNX Runtime session: Wasm CPU, SIMD, one thread, dedicated worker.') - session = await ort.InferenceSession.create(bytes, { - executionProviders: ['wasm'], - graphOptimizationLevel: 'all', - logSeverityLevel: diagnostics ? 0 : 2, - logVerbosityLevel: diagnostics ? 1 : 0, - }) - if (session.inputNames.length !== 1 || session.outputNames.length !== 3) - throw new Error('Unexpected RGBNet model interface') - log( - `Session created in ${(performance.now() - start).toFixed(1)}ms; input=${session.inputNames.join(',')}; outputs=${session.outputNames.join(',')}.` - ) - stage = 'warm-up' - const warmup = new ort.Tensor( - 'float32', - prepareRgbnet(new Uint8ClampedArray(INPUT_SIZE * INPUT_SIZE * 4), INPUT_SIZE, INPUT_SIZE), - [1, 3, INPUT_SIZE, INPUT_SIZE] - ) - try { - const outputs = await session.run({ [session.inputNames[0]]: warmup }) - try { - decodeRgbnet(Object.values(outputs).map(t => ({ dims: t.dims, data: t.data as Float32Array }))) - } finally { - for (const output of Object.values(outputs)) output.dispose() - } - } finally { - warmup.dispose() - } - log('Warm-up and output-shape validation complete; detector ready.') - send({ type: 'ready' }) - } else { - const { bitmap, id } = data - try { - if (!session) throw new Error('Detector session is not ready') - const { width, height } = bitmap - if (width < 1 || height < 1 || width > 4096 || height > 4096) throw new Error('Unsupported frame size') - stage = 'frame extraction' - const start = performance.now() - trace(`frame ${id}: extraction begin (${width}x${height})`) - const canvas = new OffscreenCanvas(width, height) - const context = canvas.getContext('2d', { willReadFrequently: true }) - if (!context) throw new Error('OffscreenCanvas 2D is unavailable') - context.drawImage(bitmap, 0, 0) - const pixels = context.getImageData(0, 0, width, height) - const extracted = performance.now() - stage = 'preprocessing' - trace(`frame ${id}: preprocessing begin (bilinear RGB, mean subtraction, NCHW)`) - const input = new ort.Tensor('float32', prepareRgbnet(pixels.data, width, height), [ - 1, - 3, - INPUT_SIZE, - INPUT_SIZE, - ]) - const prepared = performance.now() - try { - stage = 'inference' - trace(`frame ${id}: ONNX session.run begin`) - const outputs = await session.run({ [session.inputNames[0]]: input }) - const inferred = performance.now() - try { - stage = 'decoding' - trace(`frame ${id}: output validation, anchors, confidence filter and NMS begin`) - const faces = decodeRgbnet( - Object.values(outputs).map(t => ({ dims: t.dims, data: t.data as Float32Array })) - ) - const timings = `extract ${(extracted - start).toFixed(1)}ms; preprocess ${(prepared - extracted).toFixed(1)}ms; inference ${(inferred - prepared).toFixed(1)}ms; decode ${(performance.now() - inferred).toFixed(1)}ms` - trace(`frame ${id}: completed; ${timings}`) - send({ type: 'result', faces, width, height, id, timings }) - } finally { - for (const output of Object.values(outputs)) output.dispose() - } - } finally { - input.dispose() - trace(`frame ${id}: tensors disposed`) - } - } finally { - bitmap.close() - trace(`frame ${id}: bitmap released`) - } - } - } catch (cause) { - // Only operation errors are logged; never frames, tensors, landmarks or embeddings. - const message = cause instanceof Error ? cause.message : 'ONNX Runtime operation failed' - console.error(`[RGBNet] ${stage}: ${message}`) - send({ type: 'error', stage, message }) - } finally { - busy = false - } -} diff --git a/experiments/tee-demo/src/hooks/useLocalTeeConnection.ts b/experiments/tee-demo/src/hooks/useLocalTeeConnection.ts deleted file mode 100644 index c5b4b5c..0000000 --- a/experiments/tee-demo/src/hooks/useLocalTeeConnection.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { requestDemoToken } from '@/lib/tee-admission' -import { useCallback, useEffect, useRef, useState } from 'react' -import { connect, type ConnectionPreparation } from '@/lib/tee-connection' - -/** Keeps an in-flight admission request across the button-to-camera navigation. */ -export function useLocalTeeConnection() { - const operation = useRef(null) - const [pending, setPending] = useState(false) - const [logs, setLogs] = useState<{ time: string; message: string }[]>([]) - const [result, setResult] = useState({ - status: 'unavailable', - reason: 'TEE: not connected. Upload disabled.', - }) - const log = useCallback((message: string) => { - setLogs(entries => [...entries, { time: new Date().toLocaleTimeString(), message }].slice(-50)) - }, []) - const stop = useCallback(() => { - if (operation.current) { - operation.current.abort() - operation.current = null - log('Connection attempt cancelled.') - } - setPending(false) - setResult({ status: 'unavailable', reason: 'TEE: not connected. Upload disabled.' }) - }, [log]) - const start = useCallback(() => { - if (operation.current) return - const controller = new AbortController() - operation.current = controller - setPending(true) - setResult({ status: 'unavailable', reason: 'Connecting to local TEE… Upload disabled.' }) - log('Requesting the demo token from the local admission provider.') - void requestDemoToken(controller.signal) - .then(token => { - controller.signal.throwIfAborted() - log('Demo token provisioned. Starting POST /v1/connect.') - return connect(controller.signal, token) - }) - .then(next => { - if (!controller.signal.aborted) { - setResult(next) - log(`${next.httpStatus ? `HTTP ${next.httpStatus} · ` : ''}${next.reason}`) - } - }) - .catch(error => { - if (!controller.signal.aborted) { - const reason = error instanceof Error ? error.message : 'Local TEE connection failed.' - setResult({ status: 'unavailable', reason }) - log(reason) - } - }) - .finally(() => { - if (operation.current === controller) { - operation.current = null - setPending(false) - } - }) - }, [log]) - useEffect(() => () => operation.current?.abort(), []) - useEffect(() => { - if (result.status !== 'connected') return - const timer = setTimeout( - () => { - const reason = 'Local token expired. Reconnect with a new token. Upload disabled.' - setResult({ status: 'forbidden', reason }) - log(reason) - }, - Math.max(0, result.expiresAt - Date.now()) - ) - return () => clearTimeout(timer) - }, [result, log]) - return { start, stop, pending, result, logs } -} diff --git a/experiments/tee-demo/src/lib/authenticator-session.ts b/experiments/tee-demo/src/lib/authenticator-session.ts deleted file mode 100644 index affbdc3..0000000 --- a/experiments/tee-demo/src/lib/authenticator-session.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { parse, stringify } from 'lossless-json' -import type { PasskeySecrets } from './passkey-secrets' -import { abortable, passkeyStorageId } from './staging-registration' -import type { InitializeOptions, RecoveryData, WalletKit } from './walletkit' - -export async function initializeAuthenticator( - secrets: PasskeySecrets, - credentialId: string, - expected: RecoveryData, - signal: AbortSignal, - initialize?: (options: InitializeOptions) => Promise -): Promise { - const deadline = AbortSignal.any([signal, AbortSignal.timeout(120_000)]) - let wallet: WalletKit | undefined - const terminate = () => wallet?.terminate() - deadline.addEventListener('abort', terminate, { once: true }) - let stage = 'load WalletKit' - try { - const init = initialize ?? (await abortable(import('./walletkit'), deadline)).initializeWalletKit - const storageId = await passkeyStorageId(credentialId) - deadline.throwIfAborted() - wallet = await init({ - databaseKey: secrets.databaseKey, - storageId, - environment: 'staging', - region: 'us', - signal: deadline, - }) - stage = 'check the saved account identity' - const actual = await abortable(wallet.recoveryDataFromSeed(secrets.seed), deadline) - if ( - actual.authenticatorAddress.toLowerCase() !== expected.authenticatorAddress.toLowerCase() || - actual.authenticatorPubkey !== expected.authenticatorPubkey || - actual.offchainSignerCommitment !== expected.offchainSignerCommitment - ) { - throw new Error('Passkey-derived identity does not match the saved registration.') - } - stage = 'initialize the registered authenticator and encrypted vault' - await abortable(wallet.initializeAuthenticator(secrets.seed), deadline) - deadline.throwIfAborted() - return wallet - } catch (cause) { - wallet?.terminate() - if (signal.aborted) throw signal.reason - throw new Error( - `Could not ${stage}.${deadline.aborted ? ' The two-minute deadline expired.' : ''} Unlock again to retry.`, - { cause } - ) - } finally { - deadline.removeEventListener('abort', terminate) - secrets.seed.fill(0) - secrets.databaseKey.fill(0) - } -} - -export interface FauxIssuanceExchange { - request: { method: 'POST'; url: '/api/faux-credential'; body: { sub: string } } - response?: { status: number; body: string } -} - -export async function issueFauxCredential( - wallet: WalletKit, - signal: AbortSignal, - request: typeof fetch = fetch, - onExchange?: (exchange: FauxIssuanceExchange) => void -) { - const deadline = AbortSignal.any([signal, AbortSignal.timeout(60_000)]) - const terminate = () => wallet.terminate() - deadline.addEventListener('abort', terminate, { once: true }) - let stage = 'prepare the credential subject' - try { - deadline.throwIfAborted() - const { blindingFactor, sub } = await abortable(wallet.prepareCredential(BigInt(128)), deadline) - stage = 'request the staging faux credential' - const exchange: FauxIssuanceExchange = { - request: { method: 'POST', url: '/api/faux-credential', body: { sub } }, - } - onExchange?.(exchange) - const response = await request('/api/faux-credential', { - method: 'POST', - headers: { 'content-type': 'application/json' }, - body: JSON.stringify({ sub }), - signal: deadline, - }) - const text = await response.text() - if (text.length > 1_000_000) throw new Error('Faux issuer response exceeds size limit') - onExchange?.({ ...exchange, response: { status: response.status, body: text } }) - if (!response.ok) throw new Error(`Faux issuer HTTP ${response.status}`) - // Signed credential integers can exceed Number.MAX_SAFE_INTEGER. Preserve their exact bytes. - const body = parse(text) as { credential?: unknown } | null - if ( - !body || - typeof body.credential !== 'object' || - body.credential === null || - Array.isArray(body.credential) - ) { - throw new Error('Faux issuer response did not contain a credential object') - } - const serialized = stringify(body.credential) - if (!serialized) throw new Error('Faux issuer credential could not be serialized') - stage = 'store the issued credential in the encrypted vault' - const stored = await abortable( - wallet.storeCredential(new TextEncoder().encode(serialized), blindingFactor), - deadline - ) - if (stored.issuerSchemaId !== BigInt(128)) throw new Error('Unexpected stored issuer schema') - return stored - } catch (cause) { - wallet.terminate() - if (signal.aborted) throw signal.reason - throw new Error( - `Could not ${stage}.${deadline.aborted ? ' The one-minute deadline expired.' : ''} No automatic retry was made; unlock and initialize again before retrying.`, - { cause } - ) - } finally { - deadline.removeEventListener('abort', terminate) - } -} diff --git a/experiments/tee-demo/src/lib/client-context.ts b/experiments/tee-demo/src/lib/client-context.ts deleted file mode 100644 index c50db1f..0000000 --- a/experiments/tee-demo/src/lib/client-context.ts +++ /dev/null @@ -1,47 +0,0 @@ -interface RequestNetwork { - ip: string | null - source: 'x-forwarded-for' | 'x-real-ip' | 'unavailable' - verified: false -} - -function parseNetwork(value: unknown): RequestNetwork { - if (typeof value !== 'object' || value === null) throw new Error('Invalid network context') - const record = value as Record - if ( - !(record.ip === null || (typeof record.ip === 'string' && record.ip.length <= 45)) || - !['x-forwarded-for', 'x-real-ip', 'unavailable'].includes(String(record.source)) || - record.verified !== false - ) { - throw new Error('Invalid network context') - } - return { ip: record.ip as string | null, source: record.source as RequestNetwork['source'], verified: false } -} - -// Intentionally logs the requested IP/device diagnostics only. No credential IDs or key material. -export async function logRegistrationClick(): Promise { - const timestamp = new Date().toISOString() - const device = { - userAgent: navigator.userAgent, - platform: navigator.platform, - language: navigator.language, - timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone, - } - let network: RequestNetwork = { ip: null, source: 'unavailable', verified: false } - let lookup: 'ok' | 'failed' = 'failed' - try { - const response = await fetch('/api/client-context', { cache: 'no-store', signal: AbortSignal.timeout(3000) }) - if (!response.ok) throw new Error('Network context lookup failed') - network = parseNetwork(await response.json()) - lookup = 'ok' - } catch { - // Diagnostics are best-effort and must not prevent the passkey operation. - console.warn('registration_context_lookup_failed', { operation: 'client-context', timeoutMs: 3000 }) - } - console.info('passkey_registration_click', { - event: 'passkey_registration_click', - timestamp, - network: { ...network, lookup }, - device, - integrity: { verified: false, source: 'unattested_browser_context' }, - }) -} diff --git a/experiments/tee-demo/src/lib/demo-profile.ts b/experiments/tee-demo/src/lib/demo-profile.ts deleted file mode 100644 index 4a785b9..0000000 --- a/experiments/tee-demo/src/lib/demo-profile.ts +++ /dev/null @@ -1,77 +0,0 @@ -import type { CreatedPasskey } from './passkey' -import type { RecoveryData } from './walletkit' - -export const PROFILE_KEY = 'world-id-passkey-registration-v1' - -// Only public metadata goes here. PRF outputs, seeds, and database keys never do. -export interface DemoProfile { - version: 1 - passkey: CreatedPasskey - registration: 'created' | 'submitting' | 'finalized' - publicMaterial?: RecoveryData -} - -function isPublicMaterial(value: unknown): value is RecoveryData { - if (typeof value !== 'object' || value === null) return false - const material = value as Record - return ['authenticatorAddress', 'authenticatorPubkey', 'offchainSignerCommitment'].every( - key => typeof material[key] === 'string' && material[key].length > 0 && material[key].length <= 1024 - ) -} - -export function loadDemoProfile(storage: Pick): DemoProfile | null { - let saved: string | null - try { - saved = storage.getItem(PROFILE_KEY) - } catch { - throw new Error('Browser storage is unavailable. Enable site storage before continuing.') - } - if (saved === null) return null - try { - const profile = JSON.parse(saved) as Partial | null - if ( - !profile || - profile.version !== 1 || - typeof profile.passkey?.credentialId !== 'string' || - !/^[A-Za-z0-9_-]{1,2048}$/.test(profile.passkey.credentialId) || - profile.passkey.credentialId.length % 4 === 1 || - typeof profile.passkey.prfSupported !== 'boolean' || - !['created', 'submitting', 'finalized'].includes(profile.registration ?? '') || - (profile.publicMaterial !== undefined && !isPublicMaterial(profile.publicMaterial)) || - (profile.registration === 'finalized' && !isPublicMaterial(profile.publicMaterial)) - ) { - throw new Error('Invalid profile') - } - return profile as DemoProfile - } catch { - throw new Error( - 'The saved passkey record is invalid. It has been preserved; this demo will not replace it with a new identity.' - ) - } -} - -export function saveDemoProfile(storage: Pick, profile: DemoProfile): void { - // Explicit projection prevents future callers from accidentally serializing secrets. - const material = profile.publicMaterial - const record: DemoProfile = { - version: 1, - passkey: { credentialId: profile.passkey.credentialId, prfSupported: profile.passkey.prfSupported }, - registration: profile.registration, - ...(material - ? { - publicMaterial: { - authenticatorAddress: material.authenticatorAddress, - authenticatorPubkey: material.authenticatorPubkey, - offchainSignerCommitment: material.offchainSignerCommitment, - }, - } - : {}), - } - try { - storage.setItem(PROFILE_KEY, JSON.stringify(record)) - } catch { - throw new Error( - 'Could not save passkey progress in browser storage. Keep this page open and enable site storage before continuing.' - ) - } -} diff --git a/experiments/tee-demo/src/lib/flow-logging.ts b/experiments/tee-demo/src/lib/flow-logging.ts deleted file mode 100644 index 4617c0b..0000000 --- a/experiments/tee-demo/src/lib/flow-logging.ts +++ /dev/null @@ -1,37 +0,0 @@ -// Never log arguments, results, or raw dependency errors: they can contain secrets. -export async function logFlowStep(step: string, operation: () => Promise): Promise { - const started = performance.now() - console.info('authenticator_step', { step, status: 'started' }) - try { - const result = await operation() - console.info('authenticator_step', { - step, - status: 'completed', - durationMs: Math.round(performance.now() - started), - }) - return result - } catch (error) { - const allowedNames = [ - 'AbortError', - 'TimeoutError', - 'NotAllowedError', - 'NotSupportedError', - 'SecurityError', - 'TypeError', - 'LinkError', - 'CompileError', - 'RuntimeError', - 'DataError', - 'InvalidStateError', - 'QuotaExceededError', - ] - const category = error instanceof Error && allowedNames.includes(error.name) ? error.name : 'OperationError' - console.error('authenticator_step', { - step, - status: 'failed', - category, - durationMs: Math.round(performance.now() - started), - }) - throw error - } -} diff --git a/experiments/tee-demo/src/lib/passkey-secrets.ts b/experiments/tee-demo/src/lib/passkey-secrets.ts deleted file mode 100644 index 1211305..0000000 --- a/experiments/tee-demo/src/lib/passkey-secrets.ts +++ /dev/null @@ -1,36 +0,0 @@ -export const AUTHENTICATOR_SALT = 'web.world.org/authenticator' -export const STORAGE_SALT = 'web.world.org/storage' -export const AUTHENTICATOR_INFO = 'web.world.org/v1/authenticator-secret' -export const STORAGE_INFO = 'web.world.org/v1/storage-secret' - -export interface PasskeySecrets { - seed: Uint8Array - databaseKey: Uint8Array -} - -// RFC 5869 HKDF-Expand-SHA256 for exactly one 32-byte block: HMAC(PRK, info || 0x01). -// WebCrypto HKDF also performs Extract, which is not part of this derivation spec. -export async function expandSecret(prfOutput: ArrayBuffer, info: string): Promise> { - if (prfOutput.byteLength !== 32) throw new Error('Expected a 32-byte PRF output.') - const key = await crypto.subtle.importKey('raw', prfOutput, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']) - const label = new TextEncoder().encode(info) - const input = new Uint8Array(label.length + 1) - input.set(label) - input[label.length] = 1 - return new Uint8Array(await crypto.subtle.sign('HMAC', key, input)) -} - -export async function derivePasskeySecrets(first: ArrayBuffer, second: ArrayBuffer): Promise { - let seed: Uint8Array | undefined - try { - seed = await expandSecret(first, AUTHENTICATOR_INFO) - const databaseKey = await expandSecret(second, STORAGE_INFO) - return { seed, databaseKey } - } catch (error) { - seed?.fill(0) - throw error - } finally { - new Uint8Array(first).fill(0) - new Uint8Array(second).fill(0) - } -} diff --git a/experiments/tee-demo/src/lib/passkey.ts b/experiments/tee-demo/src/lib/passkey.ts deleted file mode 100644 index 8df9802..0000000 --- a/experiments/tee-demo/src/lib/passkey.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { logFlowStep } from './flow-logging' -import { describePrfValue, prfBytes } from './prf-result' -import { AUTHENTICATOR_SALT, STORAGE_SALT, derivePasskeySecrets, type PasskeySecrets } from './passkey-secrets' - -export interface CreatedPasskey { - readonly credentialId: string - readonly prfSupported: boolean -} - -function ownedArrayBuffer(bytes: Uint8Array): ArrayBuffer { - const buffer = new ArrayBuffer(bytes.byteLength) - new Uint8Array(buffer).set(bytes) - return buffer -} - -// Local PRF ceremony: no server uses this challenge to authenticate a session. -// The random user handle identifies a new local passkey, not a World ID account. -export async function createPasskey(signal: AbortSignal): Promise { - if ( - !window.isSecureContext || - typeof PublicKeyCredential === 'undefined' || - typeof navigator.credentials?.create !== 'function' - ) { - throw new Error('Passkeys require a supported browser on HTTPS or localhost.') - } - const challengeBytes = crypto.getRandomValues(new Uint8Array(32)) - const userIdBytes = crypto.getRandomValues(new Uint8Array(32)) - const challenge = ownedArrayBuffer(challengeBytes) - const userId = ownedArrayBuffer(userIdBytes) - const rp = window.location.hostname === 'localhost' ? { id: 'localhost', name: 'World ID' } : { name: 'World ID' } - const publicKey = { - challenge, - rp, - user: { - id: userId, - name: `world-id-passkey-${Date.now()}`, - displayName: 'World ID', - }, - pubKeyCredParams: [ - { type: 'public-key' as const, alg: -7 }, - { type: 'public-key' as const, alg: -257 }, - ], - authenticatorSelection: { - residentKey: 'required' as const, - requireResidentKey: true, - userVerification: 'required' as const, - }, - timeout: 60_000, - attestation: 'none' as const, - extensions: { prf: {} }, - } satisfies PublicKeyCredentialCreationOptions & { - readonly extensions: AuthenticationExtensionsClientInputs & { - readonly prf: Record - } - } - - try { - const credential = await logFlowStep('passkey.create', () => - navigator.credentials.create({ publicKey, signal }) - ) - if (!(credential instanceof PublicKeyCredential)) { - throw new Error('The browser did not return a passkey. Please try again.') - } - const extensions = credential.getClientExtensionResults() as AuthenticationExtensionsClientOutputs & { - prf?: { enabled?: boolean } - } - return { credentialId: credential.id, prfSupported: extensions.prf?.enabled === true } - } finally { - challengeBytes.fill(0) - userIdBytes.fill(0) - new Uint8Array(challenge).fill(0) - new Uint8Array(userId).fill(0) - } -} - -export async function unlockPasskey(created: CreatedPasskey, signal: AbortSignal): Promise { - if (!created.prfSupported) - throw new Error('This passkey provider did not report PRF support. Registration requires PRF.') - const encoder = new TextEncoder() - const id = Uint8Array.from(atob(created.credentialId.replace(/-/g, '+').replace(/_/g, '/')), c => c.charCodeAt(0)) - const publicKey = { - challenge: crypto.getRandomValues(new Uint8Array(32)), - rpId: window.location.hostname, - allowCredentials: [{ type: 'public-key' as const, id }], - userVerification: 'required' as const, - timeout: 60_000, - extensions: { - prf: { eval: { first: encoder.encode(AUTHENTICATOR_SALT), second: encoder.encode(STORAGE_SALT) } }, - }, - } satisfies PublicKeyCredentialRequestOptions & { - extensions: AuthenticationExtensionsClientInputs & { - prf: { eval: { first: Uint8Array; second: Uint8Array } } - } - } - const credential = await logFlowStep('passkey.unlock_prf', () => navigator.credentials.get({ publicKey, signal })) - if (!(credential instanceof PublicKeyCredential) || credential.id !== created.credentialId) { - throw new Error('The browser did not return the selected passkey.') - } - const { prf } = credential.getClientExtensionResults() as AuthenticationExtensionsClientOutputs & { - prf?: { results?: { first?: unknown; second?: unknown } } - } - // Log shape only. Never pass the extension object or its secret bytes to console. - console.info('passkey_prf_result', { - prfPresent: prf !== undefined, - first: describePrfValue(prf?.results?.first), - second: describePrfValue(prf?.results?.second), - }) - const first = prfBytes(prf?.results?.first) - const second = prfBytes(prf?.results?.second) - try { - if (!first || !second) { - const missing = !first && !second ? 'either' : !first ? 'the authenticator' : 'the storage' - throw new Error( - `The passkey did not return a valid 32-byte result for ${missing} PRF input. Registration has not started. See passkey_prf_result in the console for output types and lengths.` - ) - } - signal.throwIfAborted() - return await logFlowStep('passkey.derive_secrets', () => derivePasskeySecrets(first.buffer, second.buffer)) - } finally { - first?.fill(0) - second?.fill(0) - } -} diff --git a/experiments/tee-demo/src/lib/prf-result.ts b/experiments/tee-demo/src/lib/prf-result.ts deleted file mode 100644 index 1d35aff..0000000 --- a/experiments/tee-demo/src/lib/prf-result.ts +++ /dev/null @@ -1,44 +0,0 @@ -// Browser APIs return ArrayBuffers, but injected providers may return typed-array -// views or buffers from another realm. Normalize bytes without changing derivation. -// 1Password FS-5593 also reports plain byte arrays in its browser extension. -export function prfBytes(value: unknown): Uint8Array | undefined { - if (Array.isArray(value)) { - // Check every index: Array.every would skip holes, and Uint8Array would - // silently coerce missing, fractional, or out-of-range values. - if (value.length !== 32) return undefined - for (let i = 0; i < value.length; i++) { - if (!Number.isInteger(value[i]) || value[i] < 0 || value[i] > 255) return undefined - } - return Uint8Array.from(value) - } - let view: Uint8Array - try { - if (ArrayBuffer.isView(value)) { - view = new Uint8Array(value.buffer, value.byteOffset, value.byteLength) - } else { - // Use the native brand check; instanceof rejects cross-realm ArrayBuffers. - const byteLength = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength')!.get!.call(value) - view = new Uint8Array(value as ArrayBuffer, 0, byteLength) - } - } catch { - return undefined - } - try { - return view.byteLength === 32 ? new Uint8Array(view) : undefined - } finally { - view.fill(0) - } -} - -export function describePrfValue(value: unknown): { type: string; byteLength?: number } { - if (value === undefined) return { type: 'missing' } - if (value === null) return { type: 'null' } - if (Array.isArray(value)) return { type: 'array', byteLength: value.length } - if (ArrayBuffer.isView(value)) return { type: 'buffer-view', byteLength: value.byteLength } - try { - const byteLength = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength')!.get!.call(value) - return { type: 'array-buffer', byteLength } - } catch { - return { type: typeof value } - } -} diff --git a/experiments/tee-demo/src/lib/request-ip.ts b/experiments/tee-demo/src/lib/request-ip.ts deleted file mode 100644 index e110870..0000000 --- a/experiments/tee-demo/src/lib/request-ip.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { isIP } from 'node:net' - -export function requestIp(headers: Pick) { - // No deployment-specific trusted proxy is configured. These are observations, - // not verified client identity; never use them for an authorization decision. - for (const source of ['x-forwarded-for', 'x-real-ip'] as const) { - const header = headers.get(source) - if (!header || header.length > 1024) continue - const candidate = header.split(',')[0].trim() - if (isIP(candidate)) return { ip: candidate, source, verified: false as const } - } - return { ip: null, source: 'unavailable' as const, verified: false as const } -} diff --git a/experiments/tee-demo/src/lib/requests/bridge.ts b/experiments/tee-demo/src/lib/requests/bridge.ts deleted file mode 100644 index 6f5f0d4..0000000 --- a/experiments/tee-demo/src/lib/requests/bridge.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { decodeBase64, type Connector } from './connector' - -function encode(bytes: Uint8Array): string { - let raw = '' - for (const byte of bytes) raw += String.fromCharCode(byte) - return btoa(raw) -} -export async function readBounded(response: Response, limit = 262144): Promise { - const reader = response.body?.getReader() - if (!reader) throw new Error('The bridge returned an empty response.') - const chunks: Uint8Array[] = [] - let size = 0 - try { - while (true) { - const { value, done } = await reader.read() - if (done) break - size += value.byteLength - if (size > limit) { - await reader.cancel() - throw new Error('The bridge response is too large.') - } - chunks.push(value) - } - } finally { - reader.releaseLock() - } - const bytes = new Uint8Array(size) - let offset = 0 - for (const chunk of chunks) { - bytes.set(chunk, offset) - offset += chunk.length - } - return new TextDecoder('utf-8', { fatal: true }).decode(bytes) -} -export async function openBridge(connector: Connector, signal: AbortSignal) { - const key = await crypto.subtle.importKey('raw', connector.key, 'AES-GCM', false, ['decrypt', 'encrypt']) - connector.key.fill(0) - const response = await fetch(`${connector.bridgeUrl}/request/${connector.requestId}`, { - signal: AbortSignal.any([signal, AbortSignal.timeout(15000)]), - credentials: 'omit', - referrerPolicy: 'no-referrer', - cache: 'no-store', - redirect: 'error', - }) - if (!response.ok) - throw new Error( - response.status === 404 - ? 'This request expired or was already consumed. Start a new request on the relying-party site.' - : `Bridge request fetch failed (HTTP ${response.status}).` - ) - const wrapper = JSON.parse(await readBounded(response)) as { iv?: unknown; payload?: unknown } - const iv = decodeBase64(wrapper.iv, 12) - const encrypted = decodeBase64(wrapper.payload, 196608) - if (iv.length !== 12 || encrypted.length < 16) throw new Error('Invalid encrypted bridge payload.') - let plaintext: ArrayBuffer - try { - plaintext = await crypto.subtle.decrypt({ name: 'AES-GCM', iv }, key, encrypted) - } catch { - throw new Error('Could not decrypt the request. The connector key may be invalid.') - } - const json = new TextDecoder('utf-8', { fatal: true }).decode(plaintext) - new Uint8Array(plaintext).fill(0) - return { - json, - async send(payload: unknown, signal: AbortSignal) { - const iv = crypto.getRandomValues(new Uint8Array(12)) - const encrypted = await crypto.subtle.encrypt( - { name: 'AES-GCM', iv }, - key, - new TextEncoder().encode(JSON.stringify(payload)) - ) - const response = await fetch(`${connector.bridgeUrl}/response/${connector.requestId}`, { - method: 'PUT', - headers: { 'content-type': 'application/json' }, - credentials: 'omit', - referrerPolicy: 'no-referrer', - redirect: 'error', - body: JSON.stringify({ iv: encode(iv), payload: encode(new Uint8Array(encrypted)) }), - signal: AbortSignal.any([signal, AbortSignal.timeout(15000)]), - }) - if (!response.ok) throw new Error(`Bridge response upload failed (HTTP ${response.status}).`) - }, - } -} diff --git a/experiments/tee-demo/src/lib/requests/connector.ts b/experiments/tee-demo/src/lib/requests/connector.ts deleted file mode 100644 index 67cdd9c..0000000 --- a/experiments/tee-demo/src/lib/requests/connector.ts +++ /dev/null @@ -1,57 +0,0 @@ -export const BRIDGE_ORIGINS = ['https://bridge.worldcoin.org', 'https://staging-bridge.worldcoin.org'] -export type Connector = { requestId: string; key: Uint8Array; bridgeUrl: string; returnUrl?: string } - -export function decodeBase64(value: unknown, maxBytes: number): Uint8Array { - if ( - typeof value !== 'string' || - value.length > Math.ceil(maxBytes / 3) * 4 || - !/^[A-Za-z0-9+/]*={0,2}$/.test(value) - ) - throw new Error('Invalid bridge encoding.') - let raw: string - try { - raw = atob(value) - } catch { - throw new Error('Invalid bridge encoding.') - } - if (raw.length > maxBytes) throw new Error('Bridge payload is too large.') - return Uint8Array.from(raw, char => char.charCodeAt(0)) -} -export function returnUrl(value: string | null | undefined): string | undefined { - if (!value) return undefined - if (value.length > 2048) throw new Error('Return URL is too long.') - let url: URL - try { - url = new URL(value) - } catch { - throw new Error('Invalid return URL.') - } - if ( - url.username || - url.password || - !( - url.protocol === 'https:' || - (url.protocol === 'http:' && ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname)) - ) - ) - throw new Error('Return URL must use HTTPS or HTTP localhost.') - return url.href -} -export function parseConnector(href: string): Connector | null { - const params = new URL(href).searchParams - if (!params.has('i') && !params.has('k')) return null - for (const name of ['i', 'k', 'b', 't', 'return_to']) - if (params.getAll(name).length > 1) throw new Error('Duplicate connector parameters.') - const requestId = params.get('i') ?? '' - if ( - !/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(requestId) || - (params.has('t') && params.get('t') !== 'wld') - ) - throw new Error('Invalid World ID connector link.') - const key = decodeBase64(params.get('k'), 32) - if (key.byteLength !== 32) throw new Error('The connector needs a 32-byte bridge key.') - const bridgeUrl = (params.get('b') || BRIDGE_ORIGINS[0]).replace(/\/$/, '') - if (!BRIDGE_ORIGINS.includes(bridgeUrl)) - throw new Error('This authenticator only accepts the official World ID bridges.') - return { requestId, key, bridgeUrl, returnUrl: returnUrl(params.get('return_to')) } -} diff --git a/experiments/tee-demo/src/lib/requests/incoming-request.ts b/experiments/tee-demo/src/lib/requests/incoming-request.ts deleted file mode 100644 index 396f900..0000000 --- a/experiments/tee-demo/src/lib/requests/incoming-request.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { openBridge } from './bridge' -import type { WalletKit } from '../walletkit' -import { abortable } from '../staging-registration' -import { parseConnector, returnUrl } from './connector' -import { - credentialAvailability, - parsePayload, - validateSignature, - checkExpiry, - type ProofRequest, -} from './proof-request' - -export type IncomingRequest = { - proof: ProofRequest - label: string - appId?: string - actionLabel: string - returnUrl?: string - unsupportedReason?: string - validate: (signal: AbortSignal) => Promise - deliver: (proof: string, signal: AbortSignal) => Promise - cancel: (signal: AbortSignal) => Promise -} -export async function loadIncomingRequest( - href: string, - signal: AbortSignal, - progress: (message: string) => void -): Promise { - const connector = parseConnector(href) - if (!connector) return null - progress('Fetching the encrypted request from the World ID bridge…') - const bridge = await openBridge(connector, signal) - progress('Request decrypted. Checking staging metadata and signature…') - const payload = parsePayload(bridge.json) - await validateSignature(payload.proof_request, signal) - const callback = returnUrl(payload.return_to_url) ?? connector.returnUrl - // URL metadata cannot replace a different callback inside the encrypted request. - if (connector.returnUrl && callback !== connector.returnUrl) - throw new Error('Connector and encrypted request return URLs disagree.') - return { - proof: payload.proof_request, - label: payload.proof_request.rp_id, - appId: payload.app_id, - actionLabel: payload.action, - returnUrl: callback, - unsupportedReason: payload.require_user_presence - ? 'This request requires World App user presence verification. The web authenticator does not implement that check.' - : payload.identity_attributes?.length - ? 'Identity attribute attestation is not implemented by this web authenticator.' - : undefined, - validate: async signal => { - await validateSignature(payload.proof_request, signal) - }, - deliver: async (proof, signal) => { - const response = JSON.parse(proof) as { - id?: unknown - error?: unknown - responses?: unknown - nonce?: unknown - } - if ( - response.error || - !Array.isArray(response.responses) || - !response.responses.length || - response.id !== payload.proof_request.id - ) - throw new Error('WalletKit returned an error or mismatched proof response.') - checkExpiry(payload.proof_request) - await bridge.send({ proof_response: response }, signal) - }, - cancel: signal => bridge.send({ error_code: 'verification_rejected' }, signal), - } -} -export async function checkRequestCredentials(incoming: IncomingRequest, wallet: WalletKit, signal: AbortSignal) { - const records = await abortable(wallet.listCredentials(), AbortSignal.any([signal, AbortSignal.timeout(10000)])) - return credentialAvailability(incoming.proof, records) -} diff --git a/experiments/tee-demo/src/lib/requests/proof-request.ts b/experiments/tee-demo/src/lib/requests/proof-request.ts deleted file mode 100644 index 08deee0..0000000 --- a/experiments/tee-demo/src/lib/requests/proof-request.ts +++ /dev/null @@ -1,199 +0,0 @@ -import type { CredentialMetadata } from '../walletkit' -import { hexToBytes, keccak256, stringToHex, verifyMessage, type Hex } from 'viem' - -export type Requirement = { - identifier: string - issuer_schema_id: number - signal?: string | null - genesis_issued_at_min?: number | null - expires_at_min?: number | null -} -export type Constraint = string | { any: Constraint[] } | { all: Constraint[] } -export type ProofRequest = { - id: string - version: 1 - proof_type: 'uniqueness' - rp_id: string - oprf_key_id: string - nonce: Hex - signature: Hex - created_at: number - expires_at: number - action: Hex - session_id: null - proof_requests: Requirement[] - constraints?: Constraint | null -} -export type Payload = { - app_id: string - action: string - environment: 'staging' - proof_request: ProofRequest - require_user_presence?: boolean - identity_attributes?: unknown[] - return_to_url?: string -} -const uint = (value: unknown): value is number => typeof value === 'number' && Number.isSafeInteger(value) && value >= 0 -const record = (value: unknown): value is Record => - typeof value === 'object' && value !== null && !Array.isArray(value) -const hex = (value: unknown, size: number): value is Hex => - typeof value === 'string' && new RegExp(`^0x[0-9a-fA-F]{${size * 2}}$`).test(value) -export function checkExpiry(request: ProofRequest) { - const now = Math.floor(Date.now() / 1000) - if ( - request.created_at > now + 30 || - request.expires_at <= now || - request.expires_at <= request.created_at || - request.expires_at - request.created_at > 86400 - ) - throw new Error('The request is expired or its timestamp is invalid. Start a new request at the relying party.') -} -export function parsePayload(json: string): Payload { - if (json.length > 131072) throw new Error('Request payload is too large.') - const p: unknown = JSON.parse(json) - if (!record(p) || p.environment !== 'staging') throw new Error('This authenticator accepts staging requests only.') - const r = p.proof_request - if (!record(r) || r.version !== 1 || r.proof_type !== 'uniqueness' || r.session_id != null) - throw new Error('Only World ID 4.0 uniqueness requests are supported by this web authenticator.') - if ( - typeof p.app_id !== 'string' || - !/^app_[0-9a-f]{32}$/i.test(p.app_id) || - typeof p.action !== 'string' || - p.action.length > 1024 || - typeof r.id !== 'string' || - r.id.length > 128 || - !r.id || - typeof r.rp_id !== 'string' || - !/^rp_[0-9a-f]{1,16}$/i.test(r.rp_id) || - typeof r.oprf_key_id !== 'string' || - !/^0x[0-9a-f]{1,40}$/i.test(r.oprf_key_id) || - !hex(r.nonce, 32) || - !hex(r.signature, 65) || - !hex(r.action, 32) || - !uint(r.created_at) || - !uint(r.expires_at) - ) - throw new Error('Malformed World ID request metadata.') - if (BigInt(r.action) !== BigInt(keccak256(stringToHex(p.action))) >> BigInt(8)) - throw new Error('The displayed action does not match the signed action.') - if (!Array.isArray(r.proof_requests) || r.proof_requests.length < 1 || r.proof_requests.length > 32) - throw new Error('Invalid credential requirements.') - const ids = new Set() - for (const item of r.proof_requests) { - if ( - !record(item) || - typeof item.identifier !== 'string' || - !/^[a-zA-Z0-9_-]{1,80}$/.test(item.identifier) || - ids.has(item.identifier) || - !uint(item.issuer_schema_id) || - (item.signal != null && - (typeof item.signal !== 'string' || - !/^0x(?:[0-9a-f]{2})*$/i.test(item.signal) || - item.signal.length > 4098)) || - (item.genesis_issued_at_min != null && !uint(item.genesis_issued_at_min)) || - (item.expires_at_min != null && !uint(item.expires_at_min)) - ) - throw new Error('Malformed credential requirement.') - ids.add(item.identifier) - } - let count = 0 - const constraint = (node: unknown, depth = 0): void => { - if (++count > 64 || depth > 8) throw new Error('Credential constraints exceed supported limits.') - if (typeof node === 'string' && ids.has(node)) return - if (!record(node) || Object.keys(node).length !== 1) throw new Error('Invalid credential constraints.') - const children = node.any ?? node.all - if (!Array.isArray(children) || children.length < 1) throw new Error('Invalid credential constraints.') - children.forEach(child => constraint(child, depth + 1)) - } - if (r.constraints != null) constraint(r.constraints) - if (p.require_user_presence !== undefined && typeof p.require_user_presence !== 'boolean') - throw new Error('Invalid user presence requirement.') - if (p.identity_attributes != null && !Array.isArray(p.identity_attributes)) - throw new Error('Invalid identity attribute requirements.') - const payload = p as unknown as Payload - checkExpiry(payload.proof_request) - return payload -} -export async function validateSignature(request: ProofRequest, signal: AbortSignal) { - checkExpiry(request) - const response = await fetch(`/api/staging-rp?id=${encodeURIComponent(request.rp_id)}`, { - signal: AbortSignal.any([signal, AbortSignal.timeout(15000)]), - cache: 'no-store', - }) - if (!response.ok) - throw new Error( - 'Could not validate this RP against the staging registry. It may be unregistered, inactive, or temporarily unavailable.' - ) - const rp = (await response.json()) as { signer: Hex; oprfKeyId: string } - if (BigInt(rp.oprfKeyId) !== BigInt(request.oprf_key_id)) - throw new Error('Request OPRF key does not match the registered RP.') - const message = new Uint8Array(81) - message[0] = 1 - message.set(hexToBytes(request.nonce), 1) - new DataView(message.buffer).setBigUint64(33, BigInt(request.created_at)) - new DataView(message.buffer).setBigUint64(41, BigInt(request.expires_at)) - message.set(hexToBytes(request.action), 49) - if (!(await verifyMessage({ address: rp.signer, message: { raw: message }, signature: request.signature }))) - throw new Error('The RP request signature is invalid.') -} -export function credentialRequirementsLabel(request: ProofRequest): string { - const names = new Map( - request.proof_requests.map(item => [ - item.identifier, - item.issuer_schema_id === 11 - ? 'Selfie Check' - : item.issuer_schema_id === 1 - ? 'Orb' - : `Schema ${item.issuer_schema_id}`, - ]) - ) - const describe = (node: Constraint): string => - typeof node === 'string' - ? (names.get(node) ?? node) - : 'any' in node - ? `(${node.any.map(describe).join(' or ')})` - : `(${node.all.map(describe).join(' and ')})` - return describe(request.constraints ?? { all: request.proof_requests.map(item => item.identifier) }) -} -export function credentialAvailability(request: ProofRequest, records: CredentialMetadata[]) { - const items = request.proof_requests.map(item => ({ - ...item, - available: records.some( - record => - record.issuerSchemaId === BigInt(item.issuer_schema_id) && - !record.isExpired && - record.expiresAt > BigInt(item.expires_at_min ?? request.created_at) && - record.genesisIssuedAt >= BigInt(item.genesis_issued_at_min ?? 0) - ), - })) - const matches = new Map(items.map(item => [item.identifier, item.available])) - const evaluate = (node: Constraint, available = matches): boolean => - typeof node === 'string' - ? available.get(node) === true - : 'any' in node - ? node.any.some(child => evaluate(child, available)) - : node.all.every(child => evaluate(child, available)) - const satisfies = (available: Map) => - request.constraints - ? evaluate(request.constraints, available) - : items.every(item => available.get(item.identifier) === true) - const satisfied = satisfies(matches) - const withSelfie = new Map(items.map(item => [item.identifier, item.available || item.issuer_schema_id === 11])) - // Possibility is not a choice: an OR branch must not silently select selfie enrollment. - const withoutSchema = (schema: number) => - satisfies(new Map(items.map(item => [item.identifier, item.issuer_schema_id !== schema]))) - const requiresSelfie = !withoutSchema(11) - const requiresOrb = !withoutSchema(1) - // An existing credential outside the RP's date bounds cannot be fixed by our demo issuer. - const canEnrollSelfie = - !satisfied && - !records.some(record => record.issuerSchemaId === BigInt(11) && !record.isExpired) && - satisfies(withSelfie) - return { - items, - satisfied, - requiresOrb, - canEnrollSelfie, - needsSelfieEnrollment: canEnrollSelfie && requiresSelfie, - } -} diff --git a/experiments/tee-demo/src/lib/selfie-issuance.ts b/experiments/tee-demo/src/lib/selfie-issuance.ts deleted file mode 100644 index 58669c3..0000000 --- a/experiments/tee-demo/src/lib/selfie-issuance.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { parse } from 'lossless-json' -import type { WalletKit } from './walletkit' -import { abortable } from './staging-registration' - -export class SelfieWalletTimeout extends Error {} - -export async function issueSelfieCredential( - wallet: WalletKit, - signal: AbortSignal, - progress: (message: string) => void -) { - const deadline = AbortSignal.any([signal, AbortSignal.timeout(300_000)]) - async function walletCall(promise: Promise): Promise { - const walletDeadline = AbortSignal.any([deadline, AbortSignal.timeout(90_000)]) - try { - return await abortable(promise, walletDeadline) - } catch (error) { - if (walletDeadline.aborted) { - wallet.terminate() - throw new SelfieWalletTimeout( - 'WalletKit timed out or was interrupted. Unlock again, then resume selfie issuance.' - ) - } - throw error - } - } - progress('Checking the encrypted vault for an active selfie credential…') - const existing = (await walletCall(wallet.listCredentials())).find( - record => record.issuerSchemaId === BigInt(11) && !record.isExpired - ) - if (existing) { - progress('An active selfie credential is already stored.') - return existing - } - progress('Preparing the schema-11 subject with WalletKit…') - const { sub, blindingFactor } = await walletCall(wallet.prepareCredential(BigInt(11))) - // The OPRF derives the subject/factor for this account and schema again on resume. - // Only an opaque issuer-operation capability is persisted, never the factor or seed. - const key = `world-id-staging-selfie-resume:${sub}` - let token = localStorage.getItem(key) - if (!token) { - token = Array.from(crypto.getRandomValues(new Uint8Array(32)), byte => byte.toString(16).padStart(2, '0')).join( - '' - ) - localStorage.setItem(key, token) - } - if (!/^[0-9a-f]{64}$/.test(token)) throw new Error('The saved selfie enrollment resume token is invalid.') - progress('Preparing encrypted synthetic shares and staging identity authentication…') - for (;;) { - deadline.throwIfAborted() - const response = await fetch('/api/selfie-credential', { - method: 'POST', - headers: { 'content-type': 'application/json' }, - body: JSON.stringify({ sub, token }), - signal: deadline, - }) - const text = await response.text() - if (text.length > 131_072) throw new Error('Selfie issuer response exceeded its size limit.') - const result = JSON.parse(text) - if (!response.ok) - throw new Error(typeof result.error === 'string' ? result.error : `Selfie issuer HTTP ${response.status}`) - if (result.status === 'pending') { - progress(result.stage) - await abortable(new Promise(resolve => setTimeout(resolve, 3000)), deadline) - continue - } - if (result.status !== 'issued' || typeof result.credential !== 'string') - throw new Error('Selfie issuance did not return a credential.') - progress('Staging issued the credential. Issuer signature and subject checked; storing in the vault…') - const bytes = Uint8Array.from(atob(result.credential), character => character.charCodeAt(0)) - const credential = parse(new TextDecoder().decode(bytes)) as { - sub?: unknown - issuer_schema_id?: unknown - expires_at?: unknown - } - if ( - !credential || - String(credential.sub).toLowerCase() !== sub.toLowerCase() || - String(credential.issuer_schema_id) !== '11' || - BigInt(String(credential.expires_at)) <= BigInt(Math.floor(Date.now() / 1000)) - ) - throw new Error('Issued selfie credential does not match this subject/schema or is expired.') - const stored = await walletCall(wallet.storeCredential(bytes, blindingFactor)) - if (stored.issuerSchemaId !== BigInt(11)) throw new Error('Unexpected stored credential schema.') - progress('Selfie credential stored in the encrypted vault. Synthetic staging enrollment complete.') - return stored - } -} diff --git a/experiments/tee-demo/src/lib/selfie-issuer-server.ts b/experiments/tee-demo/src/lib/selfie-issuer-server.ts deleted file mode 100644 index 26ae46b..0000000 --- a/experiments/tee-demo/src/lib/selfie-issuer-server.ts +++ /dev/null @@ -1,298 +0,0 @@ -import { join } from 'node:path' -import { homedir } from 'node:os' -import { constants } from 'node:fs' -import { execFile } from 'node:child_process' -import { createPublicClient, http, parseAbi } from 'viem' -import { createHash, randomBytes, randomUUID } from 'node:crypto' -import { access, mkdir, readFile, rename, writeFile } from 'node:fs/promises' - -const FACE = 'https://app.stage.face.worldcoin.org' -const UA = 'WorldApp/1.0.0 Oxide/1.0.0 iOS' -const HELPER = join(process.cwd(), 'src/server/face-enrollment-helper/target/debug/staging-face-crypto') -const ROOT = join(homedir(), '.local/state/web-authenticator/synthetic-selfie-issuance') -const VERIFIER = '0x703a6316c975DEabF30b637c155edD53e24657DB' -const client = createPublicClient({ - transport: http('https://worldchain-mainnet.g.alchemy.com/public', { timeout: 20_000, retryCount: 0 }), -}) -const abi = parseAbi([ - 'function getCredentialSchemaIssuerRegistry() view returns (address)', - 'function issuerSchemaIdToPubkey(uint64) view returns ((uint256 x, uint256 y))', -]) - -type Operation = { - version: 1 - commitmentEncoding?: 'hex' - sub: string - tokenHash: string - seed: string - captureId: string - phase: 'prepared' | 'submitting' | 'submitted' | 'rejected' - rejection?: number -} -export class EnrollmentError extends Error { - constructor( - message: string, - public status = 502 - ) { - super(message) - } -} - -// Bound local cryptographic work. Persisted submission state also prevents a -// restarted process from re-enrolling an operation with an unknown outcome. -let busy = false -const hash = (value: string) => createHash('sha256').update(value).digest('hex') - -async function cryptoHelper(input: object, signal: AbortSignal): Promise { - signal.throwIfAborted() - return new Promise((resolve, reject) => { - const child = execFile(HELPER, [], { timeout: 90_000, maxBuffer: 262_144, signal }, (error, stdout) => { - if (error) return reject(new EnrollmentError('The local staging cryptography helper failed or timed out.')) - try { - resolve(JSON.parse(stdout) as T) - } catch { - reject(new EnrollmentError('The staging cryptography helper returned an invalid response.')) - } - }) - // Secrets travel over stdin, never process arguments or logs. - child.stdin?.on('error', () => { - /* execFile reports process/pipe failure through its callback. */ - }) - child.stdin?.end(JSON.stringify(input)) - }) -} - -async function boundedText(response: Response, limit: number): Promise { - if (!response.body) throw new EnrollmentError('Staging returned an empty response.') - const reader = response.body.getReader() - const chunks: Uint8Array[] = [] - let length = 0 - try { - for (;;) { - const { done, value } = await reader.read() - if (done) return Buffer.concat(chunks).toString('utf8') - length += value.length - if (length > limit) { - await reader.cancel() - throw new EnrollmentError('Staging response exceeded its size limit.') - } - chunks.push(value) - } - } finally { - reader.releaseLock() - } -} -async function remote(path: string, init: RequestInit, signal: AbortSignal) { - return fetch(path, { - ...init, - cache: 'no-store', - redirect: 'error', - signal: AbortSignal.any([signal, AbortSignal.timeout(20_000)]), - }) -} -async function auth(operation: Operation, kind: 'getidentity' | 'usercentricenrollment', signal: AbortSignal) { - const result = await cryptoHelper<{ identityCommitment: string; header: string }>( - { - operation: 'authenticate', - seed: operation.seed, - kind, - }, - signal - ) - if (!/^0x[0-9a-f]{64}$/.test(result.identityCommitment)) - throw new EnrollmentError( - 'The enrollment helper returned an invalid identity commitment. Rebuild it before retrying.', - 503 - ) - return result -} -async function save(path: string, operation: Operation) { - const temporary = `${path}.${randomUUID()}.tmp` - await writeFile(temporary, JSON.stringify(operation), { mode: 0o600, flag: 'wx' }) - await rename(temporary, path) -} - -export async function issueOrPollSelfie(sub: string, token: string, signal: AbortSignal) { - if (busy) throw new EnrollmentError('A staging enrollment operation is already running. Try again shortly.', 409) - busy = true - try { - try { - await access(HELPER, constants.X_OK) - } catch { - throw new EnrollmentError( - 'Build the local staging helper with npm run build:selfie-helper before issuing.', - 503 - ) - } - await mkdir(ROOT, { recursive: true, mode: 0o700 }) - const path = join(ROOT, `${hash(sub)}.json`) - let operation: Operation - try { - operation = JSON.parse(await readFile(path, 'utf8')) as Operation - if (operation.version !== 1 || operation.sub !== sub || operation.tokenHash !== hash(token)) - throw new EnrollmentError( - 'An enrollment already exists for this subject, but its resume token is unavailable. No new enrollment was submitted.', - 409 - ) - } catch (error) { - if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error - operation = { - version: 1, - commitmentEncoding: 'hex', - sub, - tokenHash: hash(token), - seed: randomBytes(32).toString('hex'), - captureId: randomUUID(), - phase: 'prepared', - } - await save(path, operation) - } - // The original helper sent decimal idComm, which the handler rejects - // before storing enrollment. Only that explicit 400 can be retried after - // this encoding fix; ambiguous submissions remain poll-only. - if (!operation.commitmentEncoding && operation.phase === 'rejected' && operation.rejection === 400) { - operation.commitmentEncoding = 'hex' - operation.phase = 'prepared' - delete operation.rejection - await save(path, operation) - } - if (operation.phase === 'rejected') - throw new EnrollmentError( - `Staging rejected this enrollment (HTTP ${operation.rejection}). It will not be resubmitted.`, - 422 - ) - if (operation.phase === 'prepared') { - operation.commitmentEncoding = 'hex' - const keys = await Promise.all( - [0, 1, 2].map(async index => { - const response = await remote( - `https://pki-face-ampc-stage.worldcoin.dev/public-key-${index}`, - {}, - signal - ) - if (!response.ok) { - await response.body?.cancel() - throw new EnrollmentError(`Staging share-key download failed (HTTP ${response.status}).`) - } - return boundedText(response, 1024) - }) - ) - const { shares } = await cryptoHelper<{ shares: string[] }>( - { operation: 'shares', public_keys: keys }, - signal - ) - if (shares.length !== 3 || shares.some(share => typeof share !== 'string' || share.length > 16_384)) - throw new EnrollmentError('Invalid encrypted shares.') - const proof = await auth(operation, 'usercentricenrollment', signal) - const body = new FormData() - const fields = { - capture_id: operation.captureId, - timestamp: Math.floor(Date.now() / 1000).toString(), - face_embedding_shares_0: shares[0], - face_embedding_shares_1: shares[1], - face_embedding_shares_2: shares[2], - face_embedding_version: '2.0.0', - face_embedding_type: 'ghostfacenet_flipped_mean', - face_embedding_inference_backend: 'face-engine', - pcp_version: '2.5', - sub, - // Orb Tools staging fixture: no recoverable PCP and no attested hash binding. - associated_data_hash: `0x${randomBytes(31).toString('hex').padStart(64, '0')}`, - } - for (const [key, value] of Object.entries(fields)) body.set(key, value) - signal.throwIfAborted() - operation.phase = 'submitting' - await save(path, operation) - const response = await remote( - `${FACE}/api/v1/identity?idComm=${encodeURIComponent(proof.identityCommitment)}`, - { - method: 'PUT', - body, - headers: { - 'user-agent': UA, - 'x-zkp-proof': proof.header, - 'integrity-token': 'staging-test-token', - 'integrity-signature': 'staging-test-token', - }, - }, - signal - ) - await response.body?.cancel() - if (!response.ok) { - if (response.status >= 400 && response.status < 500 && ![408, 409, 429].includes(response.status)) { - operation.phase = 'rejected' - operation.rejection = response.status - await save(path, operation) - } - throw new EnrollmentError( - operation.phase === 'rejected' - ? `Staging rejected the enrollment request (HTTP ${response.status}). No credential was issued; the request needs correcting before another submission.` - : `Staging enrollment returned HTTP ${response.status}. Retry checks the saved operation; it does not submit again.`, - operation.phase === 'rejected' ? 422 : 502 - ) - } - operation.phase = 'submitted' - await save(path, operation) - return { status: 'pending' as const, stage: 'Enrollment submitted. Waiting for staging issuance…' } - } - const proof = await auth(operation, 'getidentity', signal) - const response = await remote( - `${FACE}/api/v1/identity?idComm=${encodeURIComponent(proof.identityCommitment)}`, - { headers: { 'user-agent': UA, 'x-zkp-proof': proof.header } }, - signal - ) - if (!response.ok) { - await response.body?.cancel() - throw new EnrollmentError( - `Staging enrollment status failed (HTTP ${response.status}). Retry resumes the same operation.` - ) - } - const result = JSON.parse(await boundedText(response, 131_072)) - const enrollment = result.enrollment_status - if (!enrollment || enrollment.capture_id !== operation.captureId) - return { - status: 'pending' as const, - stage: 'Waiting for this capture. No duplicate enrollment will be submitted.', - } - if (['ENROLLMENT_FAILED', 'ENROLLMENT_NOT_UNIQUE'].includes(enrollment.status)) - throw new EnrollmentError( - `Staging enrollment finished with ${enrollment.status}. No credential was stored.`, - 422 - ) - if (enrollment.status === 'ENROLLMENT_IN_PROGRESS') - return { status: 'pending' as const, stage: 'Staging is processing the synthetic enrollment…' } - if ( - enrollment.status !== 'ENROLLMENT_UNIQUE_SUCCESSFUL' || - typeof enrollment.credential !== 'string' || - !/^[A-Za-z0-9+/]+={0,2}$/.test(enrollment.credential) || - enrollment.credential.length > 90_000 - ) - throw new EnrollmentError('Staging returned an invalid credential issuance response.') - if ((await client.getChainId()) !== 480) throw new EnrollmentError('Unexpected staging verifier chain.') - const registry = await client.readContract({ - address: VERIFIER, - abi, - functionName: 'getCredentialSchemaIssuerRegistry', - }) - const key = await client.readContract({ - address: registry, - abi, - functionName: 'issuerSchemaIdToPubkey', - args: [BigInt(11)], - }) - const verification = await cryptoHelper<{ verified: boolean }>( - { - operation: 'verify', - credential: enrollment.credential, - sub, - public_key: [key.x.toString(), key.y.toString()], - }, - signal - ) - if (verification.verified !== true) - throw new EnrollmentError('Staging credential signature verification failed.') - return { status: 'issued' as const, credential: enrollment.credential } - } finally { - busy = false - } -} diff --git a/experiments/tee-demo/src/lib/staging-face-enrollment.ts b/experiments/tee-demo/src/lib/staging-face-enrollment.ts deleted file mode 100644 index da2df9a..0000000 --- a/experiments/tee-demo/src/lib/staging-face-enrollment.ts +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Orb Tools staging admission, not an RP proof-response integrity bundle. - * https://github.com/worldcoin/orb-tools/blob/a5c0848d/crates/signup-flow/src/orb_enrollment_harness.rs - * The caller must create the real multipart payload and obtain its identity proof. - */ -export function buildStagingFaceEnrollmentRequest(input: { - identityCommitment: string - identityProof: string - contentType: string - body: Uint8Array - signal: AbortSignal -}): Request { - if (typeof window !== 'undefined') throw new Error('Staging face enrollment must run on the server.') - if (!/^0x[0-9a-f]{64}$/.test(input.identityCommitment)) - throw new Error('Expected a 32-byte hex enrollment identity commitment.') - if (!input.identityProof || input.identityProof.length > 65_536 || /[\r\n]/.test(input.identityProof)) - throw new Error('A bounded identity-proof header is required for staging enrollment.') - if (!/^multipart\/form-data; boundary=[A-Za-z0-9_-]{1,70}$/.test(input.contentType)) - throw new Error('Expected a multipart enrollment content type with an explicit boundary.') - if (!input.body.byteLength || input.body.byteLength > 8 * 1024 * 1024) - throw new Error('Enrollment payload must contain between 1 byte and 8 MiB.') - input.signal.throwIfAborted() - const url = new URL('https://app.stage.face.worldcoin.org/api/v1/identity') - url.searchParams.set('idComm', input.identityCommitment) - return new Request(url, { - method: 'PUT', - headers: { - 'content-type': input.contentType, - 'x-zkp-proof': input.identityProof, - 'user-agent': 'WorldApp/1.0.0 Oxide/1.0.0 iOS', - 'integrity-token': 'staging-test-token', - 'integrity-signature': 'staging-test-token', - }, - body: input.body, - cache: 'no-store', - credentials: 'omit', - redirect: 'error', - signal: AbortSignal.any([input.signal, AbortSignal.timeout(30_000)]), - }) -} diff --git a/experiments/tee-demo/src/lib/staging-registration.ts b/experiments/tee-demo/src/lib/staging-registration.ts deleted file mode 100644 index 3c5ec91..0000000 --- a/experiments/tee-demo/src/lib/staging-registration.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { logFlowStep } from './flow-logging' -import type { PasskeySecrets } from './passkey-secrets' -import type { InitializeOptions, RecoveryData, RegistrationStatus, WalletKit } from './walletkit' - -export type RegistrationPhase = - | 'loading' - | 'registering' - | 'initializing' - | Exclude - -// Bound worker RPCs too: the package's public methods do not expose per-call signals. -export function abortable(operation: Promise, signal: AbortSignal): Promise { - signal.throwIfAborted() - return new Promise((resolve, reject) => { - const abort = () => reject(signal.reason) - signal.addEventListener('abort', abort, { once: true }) - operation.then(resolve, reject).finally(() => signal.removeEventListener('abort', abort)) - }) -} - -function pause(signal: AbortSignal): Promise { - return new Promise((resolve, reject) => { - const abort = () => { - clearTimeout(timer) - reject(signal.reason) - } - const timer = setTimeout(() => { - signal.removeEventListener('abort', abort) - resolve() - }, 1000) - signal.addEventListener('abort', abort, { once: true }) - if (signal.aborted) abort() - }) -} - -// A digest gives this passkey a stable, path-safe namespace without persisting secrets. -export async function passkeyStorageId(credentialId: string): Promise { - const digest = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(credentialId)) - return `passkey-${Array.from(new Uint8Array(digest), byte => byte.toString(16).padStart(2, '0')).join('')}` -} - -type InitializeWalletKit = (options: InitializeOptions) => Promise - -export async function registerOnStaging( - secrets: PasskeySecrets, - credentialId: string, - signal: AbortSignal, - onPhase: (phase: RegistrationPhase) => void, - onPublicMaterial: (material: RecoveryData) => void, - initialize?: InitializeWalletKit -): Promise { - const deadline = AbortSignal.any([signal, AbortSignal.timeout(180_000)]) - let wallet: WalletKit | undefined - let registrationStarted = false - let sessionReady = false - let finalized = false - let reportedFailure: string | undefined - const terminate = () => wallet?.terminate() - deadline.addEventListener('abort', terminate, { once: true }) - try { - onPhase('loading') - const init = initialize ?? (await abortable(import('./walletkit'), deadline)).initializeWalletKit - const storageId = await passkeyStorageId(credentialId) - deadline.throwIfAborted() - wallet = await init({ - databaseKey: secrets.databaseKey, - storageId, - environment: 'staging', - region: 'us', - signal: deadline, - }) - deadline.throwIfAborted() - const material = await logFlowStep('registration.derive_public_material', () => - abortable(wallet!.recoveryDataFromSeed(secrets.seed), deadline) - ) - onPublicMaterial(material) - onPhase('registering') - registrationStarted = true - await logFlowStep('registration.submit', () => abortable(wallet!.register(secrets.seed), deadline)) - for (;;) { - deadline.throwIfAborted() - const status = await logFlowStep('registration.poll', () => abortable(wallet!.pollRegistration(), deadline)) - if (status.state === 'failed') { - reportedFailure = 'Staging reported a failed registration. No automatic retry was made.' - throw new Error(reportedFailure) - } - if (!['queued', 'batching', 'submitted', 'finalized'].includes(status.state)) { - reportedFailure = 'Staging returned an unrecognized status. Registration has not been confirmed.' - throw new Error(reportedFailure) - } - onPhase(status.state) - if (status.state === 'finalized') { - finalized = true - onPhase('initializing') - await logFlowStep('registration.initialize_authenticator', () => - abortable(wallet!.initializeAuthenticator(secrets.seed), deadline) - ) - deadline.throwIfAborted() - sessionReady = true - return wallet - } - await pause(deadline) - } - } catch (cause) { - if (signal.aborted) throw signal.reason - const timeout = deadline.aborted ? ' The three-minute deadline expired.' : '' - // Do not surface raw worker errors: dependency messages may contain sensitive request data. - throw new Error( - (finalized - ? 'World ID registration succeeded, but authenticator initialization failed. Unlock again to retry initialization.' - : reportedFailure) ?? - (registrationStarted - ? `Staging registration could not be confirmed.${timeout} It may already have been submitted. No automatic retry was made.` - : `WalletKit could not initialize or derive the public account material.${timeout} Registration was not submitted.`), - { cause } - ) - } finally { - deadline.removeEventListener('abort', terminate) - if (!sessionReady) wallet?.terminate() - secrets.seed.fill(0) - secrets.databaseKey.fill(0) - } -} diff --git a/experiments/tee-demo/src/lib/tee-admission.ts b/experiments/tee-demo/src/lib/tee-admission.ts deleted file mode 100644 index dc8e4f8..0000000 --- a/experiments/tee-demo/src/lib/tee-admission.ts +++ /dev/null @@ -1,66 +0,0 @@ -/** Obtain the local demo credential from the backend; never persist it or log the response. */ -export async function requestDemoToken(signal: AbortSignal): Promise { - signal.throwIfAborted() - const deadline = AbortSignal.any([signal, AbortSignal.timeout(5000)]) - let response: Response - try { - response = await fetch('/api/tee-admission', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: '{}', - credentials: 'same-origin', - cache: 'no-store', - redirect: 'error', - signal: deadline, - }) - } catch { - signal.throwIfAborted() - throw new Error('Demo token provisioning could not be reached.') - } - if (response.status !== 200) { - await response.body?.cancel() - throw new Error( - `Demo token provisioning unavailable (HTTP ${response.status}). Check the local backend configuration and token expiry.` - ) - } - const reader = response.body?.getReader() - if (!reader) throw new Error('Empty demo admission response.') - let text = '', - size = 0 - const decoder = new TextDecoder() - try { - while (true) { - deadline.throwIfAborted() - const { done, value } = await reader.read() - if (done) break - size += value.byteLength - if (size > 4096) throw new Error('Oversized response') - text += decoder.decode(value, { stream: true }) - } - text += decoder.decode() - } catch { - await reader.cancel() - throw new Error('Could not read a bounded demo admission response.') - } finally { - reader.releaseLock() - } - let value: unknown - try { - value = JSON.parse(text) - } catch { - throw new Error('Invalid demo admission response.') - } - if (!value || typeof value !== 'object') throw new Error('Invalid demo admission response.') - const data = value as Record - if ( - data.mode !== 'local' || - typeof data.token !== 'string' || - !/^[0-9a-f]{64}$/.test(data.token) || - typeof data.expires_at !== 'number' || - !Number.isSafeInteger(data.expires_at) || - data.expires_at * 1000 <= Date.now() || - data.expires_at * 1000 > Date.now() + 600_000 - ) - throw new Error('Invalid or expired demo admission response.') - return data.token -} diff --git a/experiments/tee-demo/src/lib/tee-connection.ts b/experiments/tee-demo/src/lib/tee-connection.ts deleted file mode 100644 index f0774d2..0000000 --- a/experiments/tee-demo/src/lib/tee-connection.ts +++ /dev/null @@ -1,119 +0,0 @@ -export type ConnectionPreparation = - | { status: 'connected'; reason: string; expiresAt: number; httpStatus: 200 } - | { status: 'unavailable' | 'forbidden'; reason: string; httpStatus?: 403 | 503 } - -/** Local bearer admission only. Production requires verified enclave attestation and encryption. */ -export async function connect( - signal: AbortSignal, - token: string, - configuredHost: string | undefined = import.meta.env?.VITE_TEE_BASE_URL -): Promise { - signal.throwIfAborted() - if (!configuredHost) - return { status: 'unavailable', reason: 'Configure VITE_TEE_BASE_URL to use the local TEE host.' } - let host: URL - try { - host = new URL(configuredHost) - } catch { - throw new Error('Invalid local TEE origin.') - } - if ( - host.protocol !== 'http:' || - !['localhost', '127.0.0.1'].includes(host.hostname) || - host.username || - host.password || - host.search || - host.hash || - host.pathname !== '/' - ) - throw new Error( - 'Development admission requires an HTTP loopback origin. Remote TEE verification is not implemented.' - ) - if (token && !/^[0-9a-f]{64}$/.test(token)) - return { status: 'forbidden', reason: 'Enter the 64-character local access token.' } - const deadline = AbortSignal.any([signal, AbortSignal.timeout(5000)]) - let response: Response - try { - response = await fetch(new URL('/v1/connect', host), { - method: 'POST', - headers: token ? { Authorization: `Bearer ${token}` } : {}, - credentials: 'omit', - cache: 'no-store', - redirect: 'error', - signal: deadline, - }) - } catch { - signal.throwIfAborted() - throw new Error( - deadline.aborted - ? 'Local TEE connection timed out.' - : 'Cannot reach the local TEE host. Check the server and allowed origin.' - ) - } - if (response.status === 403) { - await response.body?.cancel() - return { - status: 'forbidden', - httpStatus: 403, - reason: 'Forbidden: token is invalid or expired, or this browser origin is not allowed.', - } - } - if (response.status === 503) { - await response.body?.cancel() - return { - status: 'unavailable', - httpStatus: 503, - reason: 'Authorized, but the face worker is unavailable. Upload remains disabled.', - } - } - if (response.status !== 200 || !response.headers.get('content-type')?.startsWith('application/json')) { - await response.body?.cancel() - throw new Error('Unexpected local TEE handshake response.') - } - const reader = response.body?.getReader() - if (!reader) throw new Error('Empty local TEE handshake response.') - let text = '', - size = 0 - const decoder = new TextDecoder() - try { - while (true) { - deadline.throwIfAborted() - const { done, value } = await reader.read() - if (done) break - size += value.byteLength - if (size > 4096) throw new Error('Oversized local TEE handshake response.') - text += decoder.decode(value, { stream: true }) - } - text += decoder.decode() - } catch { - await reader.cancel() - throw new Error('Could not read a bounded local TEE handshake response.') - } finally { - reader.releaseLock() - } - let data: unknown - try { - data = JSON.parse(text) - } catch { - throw new Error('Invalid local TEE handshake JSON.') - } - if (typeof data !== 'object' || data === null) throw new Error('Invalid local TEE handshake.') - const result = data as Record - if ( - result.protocol_version !== 1 || - result.mode !== 'local' || - !Array.isArray(result.capabilities) || - !result.capabilities.includes('face-image-check') || - typeof result.expires_at !== 'number' || - !Number.isSafeInteger(result.expires_at) || - result.expires_at * 1000 <= Date.now() || - result.expires_at * 1000 > Date.now() + 600_000 - ) - throw new Error('Incompatible or expired local TEE handshake. Upload remains disabled.') - return { - status: 'connected', - httpStatus: 200, - expiresAt: result.expires_at * 1000, - reason: 'Local admission accepted; face worker ready. This is not an attested enclave connection.', - } -} diff --git a/experiments/tee-demo/src/lib/walletkit.ts b/experiments/tee-demo/src/lib/walletkit.ts deleted file mode 100644 index 1c1ab95..0000000 --- a/experiments/tee-demo/src/lib/walletkit.ts +++ /dev/null @@ -1,213 +0,0 @@ -import { logFlowStep } from './flow-logging' -import { - initializeWalletKit as initializePublishedWalletKit, - type Authenticator, - type CredentialStore, - type FieldElement, - type InitializingAuthenticator, - type InitializeOptions as WorkerOptions, - type WalletKit as PublishedWalletKit, -} from '@worldcoin/walletkit-web' -export type { RecoveryData, RegistrationStatus } from '@worldcoin/walletkit-web' -export type { CredentialRecord as CredentialMetadata } from '@worldcoin/walletkit-web' - -export interface InitializeOptions extends WorkerOptions { - databaseKey: Uint8Array - storageId: string - environment: 'staging' | 'production' - region: 'us' | 'eu' | 'ap' -} - -const nowSeconds = () => BigInt(Math.floor(Date.now() / 1000)) - -/** Owns the demo's account session; all Rust objects remain in the published worker. */ -export class WalletKit { - private authenticator?: Authenticator - private registration?: InitializingAuthenticator - - constructor( - private readonly client: PublishedWalletKit, - private readonly store: CredentialStore, - private readonly environment: InitializeOptions['environment'], - private readonly region: InitializeOptions['region'] - ) {} - - extractSelfieEmbedding(configJson: string, image: Uint8Array) { - return this.client.extractSelfieEmbedding(configJson, image, '/api/selfie-admission') - } - - terminate() { - this.client.terminate() - } - - async close() { - await this.client.close() - } - - recoveryDataFromSeed(seed: Uint8Array) { - return this.client.recoveryDataFromSeed(seed) - } - - async register(seed: Uint8Array) { - if (this.registration) throw new Error('Registration already started') - this.registration = await this.client.InitializingAuthenticator.registerWithDefaults( - seed, - undefined, - this.environment, - this.region, - undefined - ) - } - - pollRegistration() { - if (!this.registration) throw new Error('Start registration first') - return this.registration.pollStatus() - } - - async initializeAuthenticator(seed: Uint8Array, now = nowSeconds()) { - if (this.authenticator) throw new Error('Authenticator already initialized') - const artifacts = await this.client.EmbeddedZkArtifacts.new() - let authenticator: Authenticator | undefined - try { - authenticator = await this.client.Authenticator.initWithDefaults( - seed, - undefined, - this.environment, - this.region, - artifacts, - this.store - ) - await authenticator.initStorage(now) - this.authenticator = authenticator - } catch (error) { - authenticator?.free() - throw error - } finally { - artifacts.free() - } - } - - private currentAuthenticator() { - if (!this.authenticator) throw new Error('Initialize the authenticator first') - return this.authenticator - } - - listCredentials(now = nowSeconds()) { - this.currentAuthenticator() - return this.store.listCredentials(undefined, now) - } - - deleteCredential(id: bigint) { - this.currentAuthenticator() - return this.store.deleteCredential(id) - } - - async prepareCredential(issuerSchemaId: bigint) { - const authenticator = this.currentAuthenticator() - const factor = await authenticator.generateCredentialBlindingFactorRemote(issuerSchemaId) - let sub: FieldElement | undefined - try { - sub = await authenticator.computeCredentialSub(factor) - return { blindingFactor: await factor.toHexString(), sub: await sub.toHexString() } - } finally { - sub?.free() - factor.free() - } - } - - async storeCredential(serialized: Uint8Array, factor: string, now = nowSeconds()) { - const authenticator = this.currentAuthenticator() - const credential = await this.client.Credential.fromBytes(serialized) - let blindingFactor: FieldElement | undefined - let expectedSub: FieldElement | undefined - let actualSub: FieldElement | undefined - try { - blindingFactor = await this.client.FieldElement.tryFromHexString(factor) - expectedSub = await authenticator.computeCredentialSub(blindingFactor) - actualSub = await credential.sub() - if ((await expectedSub.toHexString()) !== (await actualSub.toHexString())) { - throw new Error('Credential subject does not match this authenticator') - } - const issuerSchemaId = await credential.issuerSchemaId() - const credentialId = await this.store.storeCredential( - credential, - blindingFactor, - await credential.expiresAt(), - undefined, - now - ) - return { credentialId, issuerSchemaId } - } finally { - actualSub?.free() - expectedSub?.free() - blindingFactor?.free() - credential.free() - } - } - - async generateProof(json: string, now = nowSeconds()) { - const authenticator = this.currentAuthenticator() - const request = await this.client.ProofRequest.fromJson(json) - try { - const response = await authenticator.generateProof(request, now) - try { - const result = JSON.parse(await response.toJson()) - for (const item of result.responses ?? []) { - if (String(item.issuer_schema_id) !== '11') continue - const credential = await this.store.fetchCredential(BigInt(11), now) - try { - const claims = await credential?.claimsHex() - if (!claims?.length) throw new Error('Selfie credential score is unavailable') - // Preserve the demo's schema-11 z-score disclosure; this does not assert user presence. - item.claims = [claims[0]] - } finally { - credential?.free() - } - } - return JSON.stringify(result) - } finally { - response.free() - } - } finally { - request.free() - } - } -} - -export async function initializeWalletKit(options: InitializeOptions): Promise { - const client = await logFlowStep('walletkit.worker_initialize', () => - initializePublishedWalletKit({ - signal: options.signal, - workerUrl: options.workerUrl, - wasmUrl: options.wasmUrl, - }) - ) - const abort = () => client.terminate() - options.signal?.addEventListener('abort', abort, { once: true }) - try { - options.signal?.throwIfAborted() - const keys = await logFlowStep('walletkit.storage_keys', () => - client.StorageKeys.fromBytes(options.databaseKey) - ) - try { - // Keep the exact pre-upgrade namespace so existing vaults can be reopened. - const paths = await logFlowStep('walletkit.storage_paths', () => - client.StoragePaths.fromRoot(`/walletkit/${options.storageId}`) - ) - try { - const store = await logFlowStep('walletkit.storage_open', () => client.CredentialStore.new(paths, keys)) - options.signal?.throwIfAborted() - return new WalletKit(client, store, options.environment, options.region) - } finally { - paths.free() - } - } finally { - keys.free() - } - } catch (error) { - client.terminate() - throw error - } finally { - options.signal?.removeEventListener('abort', abort) - } -} diff --git a/experiments/tee-demo/src/main.tsx b/experiments/tee-demo/src/main.tsx deleted file mode 100644 index d22d0eb..0000000 --- a/experiments/tee-demo/src/main.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import './styles.css' -import { createRoot } from 'react-dom/client' -import SelfieDemoPage from '@/pages/SelfieDemoPage' -import AuthenticatorScreen from '@/components/AuthenticatorScreen' -import { AuthenticatorSession } from '@/components/AuthenticatorSession' -import SelfieCheckScreen from '@/components/selfie-check/SelfieCheckScreen' -import { BrowserRouter, Link, Navigate, Route, Routes, useLocation } from 'react-router-dom' - -function LegacyEntry() { - const location = useLocation() - return -} - -createRoot(document.getElementById('root')!).render( - - - - } /> - } /> - } /> - } /> - - Page not found. Open authenticator -

      3lT|RzRsG9_&G{PAYrXB!){rI=%`YhO?et%**ca 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 diff --git a/docs/review/request-desktop.png b/docs/review/request-desktop.png deleted file mode 100644 index a0e83d8243a195cceae2283c0dbb1047507968aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42743 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 diff --git a/docs/review/request-mobile.png b/docs/review/request-mobile.png deleted file mode 100644 index a9d8dd4f2a4e99722e2da3631c27f1713387c13b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34013 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.8 and applies pixel-space NMS at 0.4. - -The mirrored object-cover projection accounts for the actual oval preview aspect -ratio. The worker receives at most one frame at a time; another frame is captured -100 ms after completion, with no video queue. Downloads have a 20-second deadline, -startup 45 seconds, and capture/inference 10 seconds. Closing or hiding the preview -terminates the worker and camera tracks. Extracted pixels and input tensors are -cleared after use, and bitmaps and tensors are released. - -The preview’s **ONNX processing status** disclosure shows startup stages and -periodic extraction/preprocessing/inference/decoding timings. It never displays -frames, tensors, landmarks or embeddings. Per-frame diagnostic traces are disabled -by default. Runtime assets are bundled and served from the same origin; no model -token or external model CDN is used. [ONNX Runtime configuration reference](https://onnxruntime.ai/docs/tutorials/web/env-flags-and-session-options.html). - -## Checks - -Ported native reference fixtures validate resize tensor hashes and decoded boxes, -landmarks and suppression. Unit tests also cover malformed outputs, projection, -worker cancellation and deadlines. Browser tests exercise the built worker with -the pinned model on a blank frame and reject missing model downloads. These checks -do not establish biometric accuracy or mobile performance. diff --git a/docs/selfie-capture-plan.md b/docs/selfie-capture-plan.md deleted file mode 100644 index b26a831..0000000 --- a/docs/selfie-capture-plan.md +++ /dev/null @@ -1,154 +0,0 @@ -# Browser capture and short challenge plan - -Status: proposed implementation, not an implemented liveness or issuance flow. - -## Existing capability - -`/selfie-demo` has local RGBNet inference, face boxes/landmarks, positioning guidance, -runtime diagnostics and worker lifecycle handling. The detector does not record a -sequence. `connect()` is still a stub: it does not verify attestation, establish an -enclave session or upload captures. Credential issuance currently uses synthetic -face data. - -## Browser models and source of the decision - -[Tobi, October 2](https://tfh.enterprise.slack.com/archives/C0ARSRLVCV7/p1790981917899729) -said face detection and QA models were acceptable in the open from the team's -perspective, except the TFH occlusion model. This is category-level guidance, not -an individually enumerated artifact approval or a claim of completed security review. -He also said the team did not have capacity to support Face Engine Wasm compilation. - -Mapping the QA category to the -[2.20.0 configuration](https://github.com/worldcoin/app-backend-app-config/blob/main/face-auth-config/face-engine/ios/default/deepFace/2.20.0.yaml): - -| Model | Config node | Browser purpose | -| ---------------------------- | ------------------------- | -------------------------------------------------------------------------------------------------------- | -| RGBNet | RGBNet | Locate face and five alignment landmarks; already integrated. | -| HeadPose | HeadPoseModel | Estimate yaw, pitch and roll; frontal capture guidance and measurements for a new head-motion evaluator. | -| FaceExpressionNeutrality | ExpressionNeutralityModel | Neutral expression / closed-eye quality feedback. | -| FaceImageQuality (LightQNet) | LightQNet | Face image quality score; not LightGuard and not a liveness verdict. | -| External glasses detector | Separate browser adapter | Early glasses feedback; does not replace full TEE occlusion checks. | - -[Gabi, September 8](https://tfh.enterprise.slack.com/archives/C0ARSRLVCV7/p1788863153310809) -explicitly discussed pose, expression and LightQNet. She noted LightQNet's public -MIT weights and the need to distribute the license/notice with the ONNX artifact. -[Tobi, October 5](https://tfh.enterprise.slack.com/archives/C0ARSRLVCV7/p1791222799827129) -recommended a lightweight glasses detector, following -[Ashima's comparison](https://tfh.enterprise.slack.com/archives/C0ARSRLVCV7/p1790634973889309) -of `mantasu/glasses-detector`. Its exact variant/export remains to be pinned. - -Exposure, sharpness, lighting, contrast, color and bounding-box checks also need -reproduction; many are deterministic image-processing routines, not additional -models. The relevant crop/alignment and thresholds matter as much as the weights. -The cited config is deepFace: enrollment must use its appropriate approved config, -not silently adopt verification settings. Resolve the existing RGBNet artifact's -release mapping before establishing the final shared browser/TEE model manifest. - -Keep TFH FaceOcclusion, FaceSpoofClassifier/FAS and embedding generation inside the -TEE. Do not infer permission for every model in the release manifest (for example -MeshLandmarks, MeshExpressions or LightGuard) from their presence in that manifest. - -## First challenge proposal - -Use a small head turn, then return to center, with a target of **three seconds of -capture**. The server/TEE selects direction, a bounded target angle and cue timing. -Start with approximately 10–15 degrees of horizontal movement, to be calibrated -against users/devices before setting acceptance thresholds. Display a moving target -with the instruction to turn the head toward it; an eyes-only dot-following task -cannot be scored with HeadPose. - -This deliberately uses the existing pose measurement model. Sequence scoring is -new deterministic code: establish a frontal pose reference, detect the requested -signed yaw change in order, then detect return to center. Allow a measured reaction -window and reject insufficient evidence. Pose QA for a neutral enrollment frame -must not reject the very movement requested by the challenge; use separate rules -for reference frames and challenge-response frames without relaxing spoof policy. - -Random direction/angle/timing has limited human-action entropy. A 128-bit session -nonce does not turn a left/right action into a 128-bit liveness proof. Evaluate this -as challenge compliance plus the existing FAS pipeline, not established resistance -to injected or generated video. The previous Slack agreement was static FAS in the -TEE, not an already-supported active gaze/head challenge. - -## Capture sequence - -1. On camera startup, load models and prepare verified TEE access concurrently. - Show positioning/quality guidance. No challenge timer runs during model download - or camera permission. Track those delays separately in total user time. -2. Require one usable, front-facing face and a ready capture pipeline. Reserve a - bounded in-memory capture buffer. Avoid multi-point gaze calibration. Measure - how long readiness takes instead of promising a fixed 500 ms. -3. Once ready, obtain a fresh challenge from the verifier. Bind its one-time ID, - random nonce, action parameters, policy version and expiry to the enclave session, - credential subject and enrollment/request ID. The enclave must originate or - authenticate this challenge; an arbitrary browser-supplied challenge is invalid. -4. Start sampling before displaying the first movement cue. Use one monotonic clock - for actual cue presentation times and frame receipt times, also recording video - media timestamps and contiguous sequence numbers. These are client claims, not - trusted proof of camera origin or time. Continue sampling during cue display and - return to center; stop at the bounded deadline. -5. Encrypt the capture and manifest to the verified enclave key. Submit, evaluate - and show the result. Erase transient frames after completion, failure or cancel; - a retry receives a new challenge rather than reusing prior evidence. - -Proposed initial transport: **ordered JPEG frames**, not a live video codec stack. -Target 10 frames/second for three seconds (about 30 frames), initially 640×480 for -motion evaluation. Preserve a full-resolution frontal frame from the same capture -for enrollment QA/embedding. Validate this resolution/cadence against the actual -model contract and device performance. Set hard count, encoded-byte, decoded-pixel -and duration limits on both ends; initial demo budgets can be 40 motion frames and -8 MiB total including the reference frame. These are starting budgets, not measured -bandwidth or security guarantees. - -JPEG sampling reuses single-image decoding in the worker and avoids introducing -WebRTC/video decoding. It costs more bandwidth than a compressed video; measure -total encode/upload time before committing to production. Start with one bounded -encrypted batch. Add authenticated chunked upload during capture only if measured -latency requires it; do not add a second transport for the initial demo. - -Capture sampling and cue animation must not wait for local model inference. The -capture coordinator owns frames/times; the inference worker consumes selected -frames with backpressure. If sampling/encoding cannot keep up, record gaps and fail -the attempt according to policy; never fabricate timestamps or queue indefinitely. - -## TEE evaluation and binding - -- Authenticate the challenge/session and subject/request binding; enforce expiry, - one-time consumption and replay protection at the verifier. -- Validate and bound payloads before decoding; verify frame count/order, decode - limits and submitted capture-manifest integrity. Client metadata remains untrusted. -- Run the correct native Face Engine QA, occlusion and FAS policy. Evaluate the - pose sequence against the server-selected task using measurements from received - images, never browser-reported scores. Existing single-image worker operations - require a new sequence orchestrator for this task. -- Check face continuity across the challenge/reference frames under an explicit - policy; do not let a good unrelated still satisfy the enrollment part of a clip. -- Produce evidence binding the result, challenge, subject/request, capture digest, - model/config/policy versions and protected enrollment outputs. The issuer must - verify that binding before credential issuance. - -An encrypted channel and challenge binding protect routing and replay semantics; -they cannot establish that an untrusted browser supplied authentic live-camera -pixels. Spoof/injection evaluation remains a separate acceptance requirement. - -## Implementation order and acceptance - -1. Pin compatible artifacts/configs. Add HeadPose, expression and quality feedback, - with the needed non-model QA and model-specific crops/normalization. Use native - reference fixtures for each adapter and include required model notices. -2. Add a capture coordinator and head-turn UI with bounded frame storage, timestamps, - visible cancel/retry and privacy-safe stage/timing logs. Until the backend exists, - explicitly label any challenge generated by the local demo server as development - only; it cannot authorize a credential. -3. Implement real attestation/session setup, challenge issuance and encrypted capture - submission in the browser and di-migration-tee. -4. Add native sequence evaluation, continuity checks, policy-specific QA/FAS, and - evidence verification/issuance integration. Test wrong order, wrong direction, - missing frames, replay, subject/request substitution and cross-session evidence. -5. Measure cold/warm readiness, challenge duration, encoding, upload, enclave - evaluation and issuance separately on target phones. Validate genuine-user success - and spoof/injection resistance before treating this as a production liveness flow. - -The three-second clip is a UX target. Total completion includes setup and verification -and must be measured against an agreed CAPTCHA baseline; no existing measurement -establishes that the full flow meets the earlier CAPTCHA-plus-three-seconds budget. diff --git a/docs/selfie-enrollment.md b/docs/selfie-enrollment.md deleted file mode 100644 index 7e4ef09..0000000 --- a/docs/selfie-enrollment.md +++ /dev/null @@ -1,174 +0,0 @@ -> **Historical demo/integration notes.** Synthetic enrollment and the TEE demo -> are preserved under `experiments/tee-demo`; they are not part of the default app. -> Paths and validation below describe that earlier implementation. For current -> runtime boundaries and readiness, see [code boundaries](code-boundaries.md). - -# Selfie enrollment integration - -## Implemented synthetic staging issuance - -**Issue selfie credential** is available in the initialized developer menu, below -faux issuance. Missing-credential requests also enter `/selfie-check`, which opens -a continuous circular camera preview. There is no timed photo capture or automatic -issuance. Developer tools on that screen offer manual synthetic enrollment. The -preview is not saved or uploaded and stops on leaving or hiding the tab. - -Issuance prepares schema 11 in the existing browser WalletKit, calls the -localhost-only `/api/selfie-credential` route, polls staging, verifies the returned -credential's signature against the current staging schema registry and its subject, -and stores it with the browser-held blinding factor. An active schema-11 credential -prevents another issuance. Deleting the credential does not delete its enrollment; -clicking issue again retrieves the existing result, rather than refreshing it. - -The local `src/server/face-enrollment-helper` helper uses pinned AMPC sharing/sealed boxes, -Oxide enrollment authentication, and credential verification primitives. Build with -`npm run build:selfie-helper` (Cargo must be on PATH; private GitHub dependency -access is required). The direct Oxide dependency also requires `wget`, `jq`, -`protoc` (protobuf), and the native C/C++ toolchain for its transitive biometric -dependencies. `build-config.toml` supplies Oxide's upstream asset-download settings. - -Authentication uses pinned Oxide `329274a32be02be0bb39ca02adc4e4e4e438ada0` -`ZkpAuthentication::create_header` with API v1. Oxide fetches the challenge and -builds the proof/header. The saved seed remains UTF-8 hexadecimal text with -`IdentityContext::Orb` (`identity_trapdoor`), preserving existing enrollment -identities; switching to Face context would change them. The helper now makes -staging authentication requests and is bounded by its parent process deadline. -It does not invoke WalletKit CLI or receive the wallet seed, -passkey PRF outputs, database key, or blinding factor. Synthetic input is generated -using `FaceVector::random_normalized`; the preview fixture below is separate. - -Only the staging enrollment endpoint is enabled. Like Orb Tools, this fixture uses -`staging-test-token` headers, a synthetic associated-data hash, and omits attested -share hashes. The issuer does not consume the captured image and has no liveness -check or recoverable PCP. - -A private operation file under -`~/.local/state/web-authenticator/synthetic-selfie-issuance` contains a separate -staging enrollment identity seed, capture ID, token hash, and submission state -(directory 0700, files 0600). An opaque resume token is saved in browser localStorage; -it is not a wallet secret. Neither signed credentials nor embeddings are saved on -the server. An ambiguous submission is only polled, never resubmitted automatically. -If the backend never accepted it, it remains unresolved and requires investigation. -The original decimal-commitment request format was rejected with HTTP 400 before -enrollment storage. That specific saved rejection can retry once, on the next -button click, after migrating to the required padded-hex format; it retains the -same seed and capture ID. Other rejected or ambiguous attempts are not reset. -No automatic refresh or deletion of backend enrollment is implemented. - -The WalletKit worker attaches only schema 11's first stored claim (the score), -matching the iOS disclosure policy. This makes IDKit 4.3.0 able to decode the selfie -response. The demo RP verifies the credential proof against the staging contract; -it does **not** authenticate the separately disclosed score, App Attest integrity, -or user presence. Requests requiring user presence remain blocked by the drawer. - -References: - -- [Oxide share serialization and encryption](https://github.com/worldcoin/oxide/blob/c3c4d04b5ae60c924e5a8ba847cc337fd7489300/oxide/src/api/pop_face_backend_api/face_embedding_shares.rs) -- [Oxide identity authentication](https://github.com/worldcoin/oxide/blob/c3c4d04b5ae60c924e5a8ba847cc337fd7489300/oxide/src/zkp_authentication/mod.rs) -- [Orb Tools staging enrollment](https://github.com/worldcoin/orb-tools/blob/f02e8d65155dd5bee0d05ec9b26c2fb22f309625/crates/signup-flow/src/face_enrollment_harness.rs) - -Native helper build, TypeScript, ESLint, and Next build are static/build validation. -No enrollment, passkey prompt, proof generation, or end-to-end functional test was -run by the agent for this change. - -## Development fixtures and enrollment boundary - -The synthetic-result preview and its capture fixture are kept in the ignored -local `demo/fixtures/` directory. They are not imported or rendered by the -authenticator. The staging issuance flow described above still uses synthetic -input generated by the native helper. - -`src/lib/staging-face-enrollment.ts` copies Orb Tools' enrollment exception into a -request builder restricted to `https://app.stage.face.worldcoin.org/api/v1/identity`. -It supplies both staging integrity headers and retains the required `x-zkp-proof`. -It bounds the payload and request deadline and rejects redirects. The issuance route now constructs its multipart request directly with FormData; -this earlier request-builder helper remains unused. No enrollment has been -submitted automatically. -This exception is scoped to signup admission; RP verification is a separate service. - -`spoofScore` is a PAD result, not the issuer's sybil score. Neither belongs in logs. -Latest reviewed iOS reads the selfie credential's first stored claim and attaches -that claim to its proof response. It does not hardcode `sybil_score: 10`. -It then computes a digest including the claims and obtains an integrity bundle. - -## Planned TEE enrollment and native-compatible PCP custody - -The [upstream/WASM plan](wasm-upstream-plan.md) fixes share generation in the TEE. -The steps below describe the target implementation; current staging issuance -remains synthetic. Exact custody output and PCP assembly boundaries must be -specified with the service owners while preserving the canonical package format. - -1. Reuse the initialized WalletKit session and `prepareCredential(11n)`; retain the - subject and blinding factor for this operation. Do not register a new identity. -2. Obtain the accepted embedding and its exact custody data through TEE-backed - enrollment. The TEE quantizes the embedding, generates AMPC shares, encrypts - them to authenticated party keys and attests the bound output. Implement a - small PCP-only WASM surface from existing Oxide hashing, package and custody - crypto code as needed; exclude quantization, share generation and party - encryption. The installed `walletkit-web@0.22.1` does not expose these custody - APIs. Confirm dependency compatibility before choosing the binding revision; - do not bundle native camera/model inference into the browser. -3. Build Face PCP v1 associated data: identity commitment, capture ID/time, original - embedding plus metadata, accepted PNG, and three AMPC shares of the quantized - embedding. Resolve the enrollment identity explicitly: iOS supplies a face - identity separately from the v4 credential subject; an authenticator address is - not a substitute for that commitment. - Use the TEE-produced shares for custody and enrollment; never independently - generate a second set. Deliver sensitive custody data encrypted to the user's - authenticated custody key rather than exposing it to the relay or issuer. -4. Package with the enrollment attestation material. iOS uses the same integrity - session in the package and enrollment request. The web flow requires a defined - TEE evidence contract accepted by the issuer; it cannot label that evidence as - iOS App Attest. A synthetic fixture cannot supply - that material. For staging, use the copied Orb Tools test-admission headers; - they are not genuine attestation material to put into a production PCP. Keep - synthetic packages explicitly identified as test artifacts. -5. Encrypt and read back the pending package before submission, preserving the - operation ID, subject, and blinding factor in encrypted recovery state. Derive a - versioned PCP custody key from our storage secret during unlock, before clearing - raw secrets. For native-format interoperability use Oxide's personal-custody - public-key sealing, not an AES envelope described as native-compatible. Store - ciphertext in IndexedDB separately from WalletKit's OPFS credential store. -6. Submit the encrypted AMPC shares and hashes bound to that package and subject; - use bounded polling. Reconcile interrupted/unknown submissions under the same - operation instead of automatically creating another enrollment. -7. Validate the returned issuer credential and subject binding, call - `storeCredential(bytes, blindingFactor)`, insert `credential.json` into the PCP, - and save the updated encrypted package. Recover interrupted local commits from - the same persisted issuer result. Track local completion and cloud backup - separately; syncing a passkey does not sync PCP ciphertext. -8. Expose the required stored credential claims through WalletKit's worker API. - Attach the actual z-score claim when building selfie responses and bind it into - the integrity flow. Keep IDKit 4.3.0 and request `selfie`. - -The PCP archive contains optional `credential.json`, `associated_data/info.json`, -`associated_data/face_embeddings.json`, `associated_data/face_image.png`, three -`associated_data/face_ampc_share_{0,1,2}.json` files, and -`signed_hashes_attestation_gw.sign`. A saved embedding alone is not this package. - -## Reviewed sources - -- [Experiments PR #6 decoded biometric result](https://github.com/worldcoin/web-authenticator-experiments/blob/0bd61a20b23ff0a778553ac1788bd3aa3c7b9404/tools/biometric-lab/native.ts) -- [iOS enrollment on main reviewed October 1, 2026](https://github.com/worldcoin/world-app-ios/blob/468ef889125c4bad28c4b0b27686a1f6f20ea454/Sources/WorldAppLegacy/Sources/FaceCredentialIssuer/LiveFaceCredentialIssuerV4.swift) -- [iOS claims and integrity digest](https://github.com/worldcoin/world-app-ios/blob/468ef889125c4bad28c4b0b27686a1f6f20ea454/Sources/WorldAppLegacy/Sources/SelfieCheck/Screens/SelfieCheckRoot%2BBridge.swift) -- [Oxide PCP creation](https://github.com/worldcoin/oxide/blob/329274a32be02be0bb39ca02adc4e4e4e438ada0/oxide/src/face_enrollment/mod.rs) -- [Oxide archive format](https://github.com/worldcoin/oxide/blob/329274a32be02be0bb39ca02adc4e4e4e438ada0/oxide/src/face_personal_custody/extraction.rs) -- [Oxide custody encryption](https://github.com/worldcoin/oxide/blob/329274a32be02be0bb39ca02adc4e4e4e438ada0/oxide/src/face_personal_custody/storage.rs) - -Oxide links are its independently reviewed main revision. iOS pins oxide-swift -0.73.0 at b1b92e73015e4feda18b60cc73a638b2ce64e641; exact Rust release parity has -not been established. Check that before publishing a native-compatible codec. - -## Developer storage controls - -The credential vault provides per-credential deletion and deletion of all displayed -local credentials, with explicit confirmation. The WalletKit package patch exposes -`CredentialStore.deleteCredential` through its existing worker. Deletion preserves -registration and the passkey; it does not call issuer-side revocation/deletion. -Failures report confirmed deletions and refresh the list, including partial batches. - -The separate **Delete local PCP** control is disabled while PCP persistence is not -implemented. It must later target only this authenticator's local PCP records, not -clear origin storage or delete cloud backups. This follows iOS's separate local-PCP -reset action; iOS's face-credential deletion has broader backend effects that this -web developer control intentionally does not invoke. diff --git a/docs/selfie-flow-comparison.md b/docs/selfie-flow-comparison.md deleted file mode 100644 index 56dce0d..0000000 --- a/docs/selfie-flow-comparison.md +++ /dev/null @@ -1,240 +0,0 @@ -> **Historical demo/integration notes.** Synthetic enrollment and the TEE demo -> are preserved under `experiments/tee-demo`; they are not part of the default app. -> Paths and validation below describe that earlier implementation. For current -> runtime boundaries and readiness, see [code boundaries](code-boundaries.md). - -# Selfie Check: browser demo versus iOS - -Source review: October 1, 2026. Browser diagrams describe this working tree, -including automatic proof delivery after approval. iOS diagrams describe the -local `world-app-ios` checkout's external v4 Selfie Check flow, not its sandbox -outcomes, Mini Apps, or DeepFace challenge flow. No iOS build was run. - -## Browser demo: concrete code path - -```mermaid -flowchart TD - RP["RP / IDKit creates request and deeplink"] - Entry["src/main.tsx
      AuthenticatorScreen + CredentialRequestSheet"] - Load["src/requests/incoming-request.ts
      loadIncomingRequest()
      parseConnector → openBridge → parsePayload → validateSignature"] - Consent["RequestPreflight.tsx
      Share → passkey unlock / wallet initialization"] - Session["AuthenticatorSession.tsx
      wallet + incoming request retained in this tab"] - Check{"checkRequestCredentials()
      credentialAvailability()"} - Setup["app/selfie-check/page.tsx
      components/selfie-check/SelfieCheckScreen.tsx"] - Capture["SelfieCamera.tsx + camera-capture.ts
      continuous circular preview
      manual synthetic issuance in Developer tools"] - Issue["Issue demo selfie credential
      lib/selfie-issuance.ts: issueSelfieCredential()
      wallet.prepareCredential(11)"] - API["POST app/api/selfie-credential/route.ts
      lib/selfie-issuer-server.ts: issueOrPollSelfie()"] - Helper["server/face-enrollment-helper/src/main.rs
      shares: random synthetic vector + encrypted shares
      authenticate: Oxide ZKP header"] - Issuer["Staging face signup service
      submit / poll with staging integrity exception"] - Import["Helper verifies credential
      issueSelfieCredential → wallet.storeCredential()"] - Approve["CredentialRequestSheet.tsx
      Approve and share"] - Proof["approve()
      revalidate → wallet.generateProof()
      then returnToApp(generatedProof)"] - Deliver["incoming.deliver()
      bridge.ts: send()
      AES-GCM → PUT bridge response"] - Verify["demo/src/main.ts → /api/verify
      VerificationSession.verify()
      contract-verifier.ts: verifyCredentialProof()
      staging contract + replay checks"] - Block["Remain in drawer / show unsupported requirement"] - RP --> Entry --> Load --> Consent --> Session --> Check - Check -->|satisfied| Approve - Check -->|missing selfie can satisfy request| Setup --> Capture --> Issue --> API --> Helper --> Issuer --> Import - Import -->|same-tab replace /; check vault again| Check - Check -->|other missing requirements| Block - Approve --> Proof --> Deliver --> Verify -``` - -Unsupported presence/identity-attestation requirements remain blocked. A request -with a usable alternative credential does not need selfie enrollment. An active -selfie credential outside the RP's date bounds is not repaired by this demo issuer. - -The browser receives a real signed staging credential and produces a real proof, -but enrollment input is synthetic. Missing-credential setup keeps a circular camera -preview live until interrupted. It does not take a photo or automatically issue a -credential. Developer tools offer manual synthetic issuance. Video is not saved, -uploaded or used by the issuer. There is no face embedding derived from the -image, live-face verification, Face PCP, or Flamingo call in this path. The -source's image/model metadata does not mean inference ran. - -The issuer helper runs in a localhost server process, not browser WASM. The -response capability and unlocked wallet survive internal navigation through the -root session provider; they do not survive a reload. Failed proof delivery retains -the generated proof for an explicit retry, without enrolling or generating again. - -## iOS: concrete code path - -Most feature paths below are under `Sources/WorldAppLegacy/Sources/`; -`FaceAuthLibrary` is a separate package under `Sources/FaceAuthLibrary/`. - -```mermaid -flowchart TD - RP["RP / IDKit request → universal link"] - Entry["WorldIDAppLib/IDApp/IDAppReducer+UniversalLinks.swift
      RelyingPartyResponder preload / routing"] - Consent["SelfieCheck/Screens/SelfieCheckRoot.swift
      welcome consent → resolveFlowIfNeeded()"] - Check{"FaceCredentialIssuer.hasFaceCredential()
      usable local face package?"} - Enroll["FaceAuthGatekeeper
      enrollment configuration"] - Returning["FaceAuthGatekeeper
      verification configuration + enrolled reference"] - Camera["FaceAuthLibrary/Service/CaptureService.swift
      AVCaptureSession + front camera
      Views/FaceAuthCameraPreview.swift"] - Engine["FaceEngineFaceAuthModel/MobileFaceEngineWrapper.swift
      runCapturedImageAnalyzer()
      runTemplateGenerator() / compareEmbeddings()
      shared native Rust Face Engine via Oxide"] - Result{"FaceAuth result"} - Issue["SelfieCheckVerifying.swift
      faceCredentialIssuer.enroll()
      FaceCredentialIssuer/LiveFaceCredentialIssuerV4.swift"] - Prepare["authenticator.issuer(.face).prepare()
      faceEnrollment.generateFacePcp()
      embedding quantization + AMPC shares in Oxide"] - Custody["integritySigningService.mintSession()
      buildFacePcpTarball() → saveFacePcp()"] - Submit["enrollFacePcpWithIntegritySigner()
      face signup service → pollForCredential()"] - Store["faceIssuer.store()
      updateFacePcpCredential()"] - Proof["SelfieCheckRoot.completeSelfieCheckFlow() → submitProof()
      SelfieCheckRoot+Bridge.verifyWithBridge()
      authenticator.generateProof() + disclosed claims"] - Integrity["AnonymousWorldIDBridgeClient.uploadBridgePayload()
      claims-inclusive digest → integrityBundle()
      attested key + Apple App Attest assertion"] - Delivery["WorldIDBridgeCryptoService.encrypt()
      uploadBridgeResponse() → bridge → RP"] - RP --> Entry --> Consent --> Check - Check -->|no| Enroll --> Camera - Check -->|yes| Returning --> Camera - Camera --> Engine --> Result - Result -->|enrollmentSuccessful: embedding + image| Issue --> Prepare --> Custody --> Submit --> Store --> Proof - Result -->|verificationSuccessful| Proof - Proof --> Integrity --> Delivery -``` - -For this external v4 flow, iOS continues from enrollment/face verification into -proof generation and delivery automatically. It does not require this demo's -separate post-enrollment proof-approval drawer. Failed delivery can be retried -without repeating enrollment. The native retry path can rebuild the proof from -the retained request; our browser retry resends the already-generated proof. - -iOS returns `userPresenceCompleted: true` after the face flow and binds disclosed -claims into its integrity digest. Its v4 bridge client fails if integrity bundle -generation fails. Our browser currently sends no equivalent integrity bundle and -does not claim completed user presence. The RP's verification service is outside -the iOS app; choosing its endpoint is an RP integration decision. - -## Broad systems and the decided browser target - -```mermaid -flowchart TD - subgraph Current["Browser demo today"] - B["Browser
      passkey + WalletKit WASM
      credential storage + proofs"] - H["Local Next.js server + Rust helper
      synthetic enrollment input"] - S["Staging face signup service"] - BR["World ID bridge → demo RP
      direct staging-contract verification"] - B -->|missing credential| H --> S - S -->|signed credential| B - B -->|encrypted proof response| BR - end - subgraph Native["iOS Selfie Check today"] - I["iOS device
      camera + Face Engine + Oxide
      embedding, shares, PCP + WalletKit"] - A["Integrity service / App Attest"] - IS["Face signup service"] - IR["World ID bridge → RP verifier"] - I <-->|enrollment / response evidence| A - I -->|encrypted shares + bound enrollment| IS - IS -->|signed credential| I - I -->|proof + integrity bundle, bridge-encrypted| IR - end - subgraph Target["Decided browser architecture — not implemented"] - W["Browser
      camera + guidance + WalletKit
      encrypted channel + PCP custody"] - T["Flamingo TEE
      authoritative model checks / embedding
      quantize, generate and encrypt shares
      attest bound output"] - TS["Face signup service
      verify TEE evidence before acceptance"] - WR["World ID bridge → RP verifier
      accepted response-integrity contract still needed"] - W -.->|images encrypted to a verified enclave key| T - T -.->|bound enrollment output; submission route TBD| TS - T -.->|user-encrypted custody data| W - TS -.->|signed credential| W - W -.->|proof + agreed integrity evidence| WR - end -``` - -TEE image encryption is separate from bridge response encryption. The latter -already works in our demo; it does not establish a trusted channel to an enclave. -Moving embedding/share generation to the TEE does not by itself prove camera -provenance or solve RP response integrity. Promon integration remains separate -work; this diagram does not claim a deployed Promon evidence contract. - -## The five material differences - -| Area | Browser today | iOS | Browser target | -| ---------------- | ---------------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| Returning user | Existing credential goes straight to proof approval | Live face verification against enrolled reference | Add live capture and the agreed TEE reference check | -| First enrollment | Local helper generates synthetic input | Device generates real embedding and shares | TEE generates real embedding and shares | -| Custody | Encrypted credential vault, no Face PCP | Encrypted Face PCP and credential association | Portable PCP custody APIs + browser persistence/recovery | -| Evidence | Staging admission exception; no response integrity bundle | Enrollment integrity session and response App Attest bundle | TEE enrollment evidence plus a separately agreed web response-integrity solution | -| User flow | Share → optional demo issuance → approve proof → auto-send | Consent → capture/verify or enroll → auto-submit proof | Same-tab capture/enrollment continuation; final approval policy can be simplified separately | - -## Source entry points - -- Browser request/UI: [CredentialRequestSheet](../src/components/CredentialRequestSheet.tsx), - [SelfieCheckScreen](../src/components/selfie-check/SelfieCheckScreen.tsx), - [incoming request](../src/requests/incoming-request.ts), - [bridge](../src/requests/bridge.ts). -- Browser issuance: [issueSelfieCredential](../src/lib/selfie-issuance.ts), - [server adapter](../src/lib/selfie-issuer-server.ts), - [native helper](../src/server/face-enrollment-helper/src/main.rs). -- iOS flow: [SelfieCheckRoot](../../world-app-ios/Sources/WorldAppLegacy/Sources/SelfieCheck/Screens/SelfieCheckRoot.swift), - [v4 issuer](../../world-app-ios/Sources/WorldAppLegacy/Sources/FaceCredentialIssuer/LiveFaceCredentialIssuerV4.swift), - [proof and claims](../../world-app-ios/Sources/WorldAppLegacy/Sources/SelfieCheck/Screens/SelfieCheckRoot+Bridge.swift), - [integrity and transport](../../world-app-ios/Sources/WorldAppLegacy/Sources/RelyingPartyResponderCore/WorldIDBridge/AnonymousWorldIDBridgeClient.swift). -- Planned upstream work: [WASM/upstream plan](wasm-upstream-plan.md). - -## What chooses the iOS capture - -The camera produces a video stream. `CaptureService.SampleBufferDelegate` uses -`bufferingNewest(1)`; `FaceAuthVerificationReducer` skips incoming frames while -an image is being processed and waits for camera reveal/startup readiness before -analysis. This avoids accumulating an old-frame processing queue. - -```mermaid -flowchart LR - Camera["Live camera frames"] --> Analyze["Face Engine analyzer"] - Analyze -->|validation fails| Guidance["Instruction text / positioning guidance"] - Guidance --> Camera - Analyze -->|passes| Select["Vanilla: current accepted frame
      LightGuard: timestamp-selected pair"] - Select --> Template["Template generator + configured checks"] - Template -->|success| Result["Accepted image + embedding"] - Template -->|retryable failure| Guidance -``` - -- **Vanilla:** the accepted `subjectFace` and its `currentImageProcessed` feed the - template generator. Successful enrollment returns that image and embedding. - The UI does not take an unrelated second still photo after analysis. -- **LightGuard:** after framing/stability checks, the app captures a sequence - while changing screen illumination. `categorizeLightGuardFrames()` considers - exposure and screen-presentation timing and separates frames that overlap the - transition. It selects `illuminated.last` and `unilluminated.first`. Configuration - chooses which accepted image feeds identity embedding generation. Frame counts, - startup delays and stability settings depend on the selected configuration; - source defaults are not proof of deployed settings. -- **Ownership:** iOS `FaceAuthLibrary` owns capture timing, frame selection and - instruction presentation. Shared native Face Engine supplies analyzer/model - results through Oxide bindings. WalletKit does not select camera frames. - -References: [stream buffering](../../world-app-ios/Sources/FaceAuthLibrary/Sources/FaceAuthLibrary/Service/CaptureService.swift), -[capture reducer](../../world-app-ios/Sources/FaceAuthLibrary/Sources/FaceAuthLibrary/Screens/FaceAuthVerification/FaceAuthVerificationReducer.swift), -[LightGuard frame selection](../../world-app-ios/Sources/FaceAuthLibrary/Sources/FaceAuthLibrary/Screens/FaceAuthVerification/FaceAuthVerificationState.swift). - -## Credential expiry versus a fresh selfie check - -The selfie credential already contains a signed `expires_at`. The owner of that -value is `signup-service-credential-signer`, not the browser or camera code. -`CredentialService::generate_credential()` calls `calculate_expiry()` using -`CREDENTIAL_EXPIRY_DAYS`; the current implementation rounds to UTC midnight on -the resulting date. Checked-in face deployment values on main specify **90 days** -for both staging and production. Runtime overrides were not inspected. - -Changing this policy requires an issuer-side change and applies to newly signed -credentials. A browser cannot edit the expiry of an existing signed credential. -Minute-level lifetimes also require changing the current day-based calculation. -WalletKit stores the expiry and excludes expired credentials; the verifier must -enforce the required validity bounds too. - -Three different lifetimes must stay separate: - -| Lifetime | Owner / meaning | -| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| Credential expiry | Issuer-signed enrollment credential validity; currently 90-day checked-in face policy | -| Proof request / challenge expiry | How long an RP request can be completed; the local Zoom checkout sets its challenge window to 2 hours | -| Live-check freshness | How recently a face check happened for the current operation; requires accepted request-bound evidence, not merely an unexpired enrollment credential | - -Zoom's 24-hour DynamoDB TTL is record cleanup, not selfie credential expiry. -If the requirement is to see the user's face again on each request, retain the -enrollment credential and perform a fresh bound face check, as the iOS flow does. -Deleting credentials on a browser timer cannot provide that assurance. - -References: [signer calculation](https://github.com/worldcoin/signup-service-credential-signer/blob/main/src/services/credential_service.rs), -[staging face config](https://github.com/worldcoin/signup-service-credential-signer/blob/main/deploy/stage/orb-stage-v2-eu-central-1/values-face-signup-service-credential-signer.yaml), -[production face config](https://github.com/worldcoin/signup-service-credential-signer/blob/main/deploy/prod/orb-prod-v2-eu-central-1/values-face-signup-service-credential-signer.yaml), -[WalletKit expiry filtering](../../../walletkit/crates/walletkit-core/src/storage/credential_vault/mod.rs), -[Zoom lifetime constants](../../world-id-zoom/src/lib/constants.ts). diff --git a/docs/selfie-pr-integration.md b/docs/selfie-pr-integration.md deleted file mode 100644 index bf542c7..0000000 --- a/docs/selfie-pr-integration.md +++ /dev/null @@ -1,123 +0,0 @@ -> **Historical demo/integration notes.** Synthetic enrollment and the TEE demo -> are preserved under `experiments/tee-demo`; they are not part of the default app. -> Paths and validation below describe that earlier implementation. For current -> runtime boundaries and readiness, see [code boundaries](code-boundaries.md). - -# Selfie enrollment integration snapshot - -Updated on 2026-10-09. The product now installs the locally built #604 candidate. -Original WalletKit and biometrics-tee working checkouts remain untouched. - -## Isolated source checkouts - -| Checkout | Baseline plus PR | Result | -| --------------------------------- | ------------------------------------------- | ---------------------------------------------------------- | -| `../biometrics-tee-integration` | `main` at `c4cf511` plus biometrics-tee #70 | Fast-forward to `04481c5c9136ed2205e0d80d26ab495be6a2dd98` | -| `../walletkit-selfie-integration` | Published `v0.27.1` plus WalletKit #604 | Fast-forward to `61547ee3c9f861990b6baa52a13693f14c74ef96` | - -Branches: `integration/selfie-pr70` and `integration/selfie-pr604` respectively. -WalletKit's enrollment dependency pins exactly the TEE revision above. - -The WalletKit integration checkout also removes the obsolete assignment `nonce` -from `web/walletkit/tests/fixture/enrollment.worker.ts`. PR #70's assignment -schema rejects unknown fields; this stale fixture made the PR's browser CI -expect `Attestation` but receive `Protocol`. Admission challenge nonces remain. - -## What these PRs provide - -- #70: measured Nitro embedding extraction, a sandboxed real worker, encrypted - transport, host admission tickets, and native/browser attestation verification. -- #604: WalletKit's `extractSelfieEmbedding(configJson, imageBytes, admissionPath)` - wrapper around that verified TEE client. -- Verification covers enclave measurements, channel binding and worker identity. - Neither PR generates or verifies AMPC enrollment shares, assembles a PCP, or - issues a credential. Neither introduces an Oxide dependency for those jobs. - -The current Oxide crate has native biometric-engine/OpenCV dependencies. Reusing -its narrow portable sharing/PCP primitives is a separate integration task; importing -the entire crate into browser WalletKit is not a drop-in replacement for the TEE -client. Share generation inside the TEE belongs after accepted inference, before -the result crosses back to the client. - -## Product wiring - -`/selfie-demo` captures one JPEG only on an explicit button click. The existing -WalletKit worker calls `extractSelfieEmbedding` with the trusted policy returned -by `GET /api/selfie-enclave` and same-origin `POST /api/selfie-admission` callback. -No attestation check is disabled. Cancellation/timeout terminates the worker -and locks the account because #604 has no per-call cancellation API. - -The local-only backend checks the configured loopback origin, audience, exact -32-byte challenge, and private key file permissions. It signs the Rust admission -message with P256/SHA-256 and a 30-second expiry. This ticket authorizes a host -connection; it is separate from the proposed signup-service integrity JWT. - -Successful extraction displays type/version/backend, drops the vector reference, -and shows an explicitly mocked `issuer_assurance = 2` preview. No real score, -PCP, match result, credential, or user-presence assertion is invented. The old -synthetic issuance helper remains separate from this extraction demo. - -## Staging rollout - -The existing service is healthy but runs the pre-#604 assignment protocol. -[tee-apps #16](https://github.com/worldcoin/tee-apps/pull/16) prepares the matching -`04481c5` build. It leaves live images, measurements, origins and keys unchanged. -It separates build source from deployed source so preparation does not require -turning off the existing service. Repository review is required before merge. - -After review/merge: - -1. Dispatch `.github/workflows/selfie-enrollment.yml` on main with `publish=true`. -2. Download that run's `selfie-enrollment-stage-release` artifact. Use the existing - admission public key if its private key is available. Otherwise coordinate - replacement with the existing staging signer owner. -3. Run `scripts/prepare-selfie-enrollment.py release.json ---admission-public-key-file /private/path/admission-public.hex` in tee-apps. - Review/merge the generated paired release, measurements, values and manifests. - Promotion retains harness port 8765 and adds localhost/127.0.0.1 port 3100. -4. After Argo finishes deploying, point the local app at that reviewed policy and - the matching private key using `.env.local`: - -```sh -TEE_ENROLLMENT_CONFIG_FILE=/absolute/path/to/tee-apps/releases/selfie-enrollment/client-stage.json -TEE_ADMISSION_KEY_FILE=/private/path/admission-private.hex -LOCAL_TEE_ORIGIN=http://localhost:3100 -``` - -`bun run dev` enables the loopback test signer. Production disables it. Never put -private keys in `VITE_*` variables, source control, or browser storage. The existing -local bearer token and `VITE_TEE_BASE_URL` are not used by this new demo. - -A candidate key pair was generated outside the repositories at -`~/.config/web-authenticator-selfie-staging/`; it is **not trusted by staging**. -The helper `bun scripts/create-selfie-admission-key.ts /new/private/directory` -creates another pair without overwriting an existing directory. Only the public -key can be copied into deployment values. Rotating it invalidates the old signer. - -Real Nitro extraction and the wrong-PCR, wrong-worker, expired-ticket and -cancellation live checks remain pending deployment. No image has been uploaded -as part of this integration. Downstream AMPC sharing, PCP construction and real -credential issuance remain separate work. - -## Validation - -- Both source combinations merge cleanly. -- Existing local worker `/ready`: HTTP 200. -- WalletKit fixture formatting and `git diff --check`: passed. -- Upstream #604 browser CI at this revision: 18 passed, one stale-fixture failure. -- With the local fixture correction: all 19 browser tests passed in Chrome on - port 14173. Consumer and fixture TypeScript checks also passed. These include - mocked enrollment rejection tests, not live Nitro extraction. -- Web-authenticator with the installed candidate: typecheck, lint, Vite build - and all 62 tests passed. Admission tests verify signatures, altered challenges, - origin restrictions, malformed/oversized input, missing configuration and key permissions. -- tee-apps: four release-policy tests and source/activation checks passed. Full - local Helm rendering was blocked by network access to the private chart server; - CI must complete rendering and the measured enclave build. -- Candidate package built and packed successfully. Rust/WASM generation and - optimization ran in the native ARM Nix Docker devshell; TypeScript and esbuild - bundling completed on macOS after installing the host-platform JS dependencies. -- The prescribed Linux/amd64 Nix Docker build failed at `rustc -vV` with a QEMU - segmentation fault, before project compilation. The ARM fallback completed - WASM generation, but bundling initially reused the amd64 esbuild binary and - crashed; native macOS bundling resolved that environment mismatch. diff --git a/docs/wasm-upstream-plan.md b/docs/wasm-upstream-plan.md deleted file mode 100644 index 76b0690..0000000 --- a/docs/wasm-upstream-plan.md +++ /dev/null @@ -1,205 +0,0 @@ -# Browser/WASM dependencies and upstream PR plan - -> **Historical dependency snapshot (October 1).** The product now uses published -> `@worldcoin/walletkit-web@0.27.1` without a local package patch. The old patch -> directory is removed; current app integration lives in the -> [WalletKit adapter](../web/lib/walletkit.ts). -> Synthetic enrollment remains in `experiments/tee-demo`. See -> [current boundaries](code-boundaries.md) before acting on the upstream work below. - -Checked October 1, 2026 against this authenticator's source, dependency pins, -and the linked GitHub PRs. Proposed PR titles below are a plan, not opened PRs. - -**Decided plan for web enrollment:** the TEE produces the accepted embedding, -quantizes it, generates AMPC shares, encrypts them to authenticated party keys, -and attests the bound enrollment output. The browser handles capture, encrypted -transport and user custody. This is the implementation target agreed for this -project, not a claim that the upstream services already implement it. - -## What the authenticator used at the time of review - -| Capability | Current implementation | Upstream action | -| -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Registration, credential preparation/storage, proof generation | `walletkit-web@0.22.1`, from the open WalletKit #480 → #522 → #523 stack | Finish/rebase the existing stack and support package releases; do not duplicate it. | -| Binding generation | The package build pins UniFFI 0.31.2 and patches UBRN's wasm-bindgen processing/generated TypeScript | Track UBRN #409, then update and validate WalletKit's generator/toolchain together. This is a build compatibility workaround, not new cryptography. | -| Credential listing/deletion | The former local package patch added worker messages and TypeScript methods around existing Rust APIs | WalletKit: add the missing public worker APIs above #523. No new Rust implementation is needed just to expose these methods. | -| Credential subject binding on import | Our worker patch checks the imported credential's subject against this authenticator and its blinding factor | WalletKit: preserve this invariant in the supported import API. | -| Selfie score disclosure | Our worker patch fetches schema 11 and attaches its first claim to proof JSON | WalletKit/authenticator: expose deliberate claim access tied to the selected credential. Keep disclosure policy in the authenticator and provide accepted response integrity. Appended JSON is not authenticated by the ZK proof. | -| AMPC share creation/encryption | Native helper creates a synthetic vector, secret-shares it using `ampc-secret-sharing`, and seals shares to party keys | Flamingo/TEE: replace this job with attested enrollment output using existing Rust AMPC primitives. Quantization, share generation and party encryption are not browser/WASM requirements. Preserve the exact same shares in enrollment and PCP custody data. | -| Enrollment authentication | Native helper calls Oxide's `ZkpAuthentication::create_header`; enrollment identity state lives on the local server | Oxide/WalletKit: settle the intended browser auth contract before porting. Reuse the v4 ownership-proof path where required; do not assume the current demo's legacy identity/header flow is the target. | -| Issued credential verification | Native helper validates schema, subject, issuer key and signature with protocol primitives | WalletKit: expose/reuse verified credential import or verification through the worker. Preserve trusted issuer-key selection and all binding checks. | -| Enrollment submission/polling | Next.js routes and a staging-only integrity exception; associated-data hash is currently synthetic | Oxide + face signup service: implement the real evidence/binding contract. This is not solved by compiling the helper to WASM. Browser networking/CORS or a deliberate relay also needs integration. | - -Sources: [preserved helper](../experiments/tee-demo/src/server/face-enrollment-helper/src/main.rs), -[helper pins](../experiments/tee-demo/src/server/face-enrollment-helper/Cargo.toml), -[preserved server adapter](../experiments/tee-demo/src/lib/selfie-issuer-server.ts). -The historical worker patch is no longer present or applied. - -Passkeys, PRF/HKDF derivation, bridge AES-GCM and request UI use browser APIs and -TypeScript. They are not missing WASM ports. Encrypted browser credential storage -already works through WalletKit; it is not a Face PCP implementation. - -## Needed next, but not integrated into this authenticator - -| Capability | Existing work | Remaining work / owner | -| ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Verify enclave attestation and key; encrypt/decrypt channel messages | Pontifex #47 is **merged** and enables browser clocks/randomness for attestation/channel APIs | Reuse a compatible revision/release. Validate it with the current Flamingo dependency graph; do not open another portability PR without a demonstrated gap. | -| Send encrypted matches from a browser and verify returned statements/input bindings | Flamingo #129 implemented browser WebSockets; **closed, unmerged**. #116 covered the older HTTP transport | Flamingo: adapt #129 to current main and the agreed browser authorization mechanism; run browser runtime tests. Native arbitrary upgrade headers cannot be copied to browser WebSockets. | -| Expose Flamingo to `walletkit-web` | WalletKit #554 enabled UniFFI/WASM but explicitly left the handwritten TypeScript worker API for follow-up; **closed, unmerged** | WalletKit: restore current-client WASM integration and add typed worker methods, lifecycle/cancellation handling and browser tests. | -| TEE Selfie Check enrollment | Current Flamingo match API has DeepFace and GrayBadge; neither is a raw embedding/AMPC enrollment API | Flamingo: add accepted embedding generation, quantization, AMPC sharing, party encryption and attested output bound to enrollment/custody. Face signup service: verify that evidence before acceptance. Model execution support may require biometric-engines changes. | -| Returning Selfie Check against enrolled reference | Current GrayBadge compares live and challenge images, not an enrolled Face PCP reference | Flamingo/protocol: define and implement the requested reference comparison and result binding. Do not rename GrayBadge and assume semantic equivalence. | -| Face PCP construction/encryption/readback | Oxide has native implementations; no current browser PCP API identified | Oxide: isolate portable data/crypto/archive operations from Face Engine/OpenCV and native host services. WalletKit: expose only the agreed reusable surface; avoid copying the PCP format into a second implementation. | -| PCP storage, backup and recovery | Oxide #1199 is merged for identity-scoped storage/backup. WalletKit #512 is open for credential-associated-data persistence/recovery | Reuse ownership and data-binding rules. Decide full-PCP storage vs credential-associated-data integration before adding a new vault. Browser persistence alone is not backup/recovery. | -| Browser capture guidance | Soam's experiments contain RGBNet via ONNX Runtime Web and capture helpers | Integrate the model harness in this authenticator. Model/runtime changes belong in biometric-engines or the runtime's repo if needed; this is not a WalletKit binding gap. | - -Soam's native evaluator and encrypted face vault are reference implementations, -not dependencies currently integrated in this authenticator. Running a model via -ONNX Runtime Web is separate from exporting the complete native Face Engine to WASM. - -## What the closed PRs covered - -| PR | Coverage | Why it does not finish this work | -| ------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| [Pontifex #47](https://github.com/worldcoin/pontifex/pull/47), merged | Browser-compatible Nitro attestation verification and channel dependencies | A lower-level building block; no Flamingo transport or enrollment API. | -| [Flamingo #116](https://github.com/worldcoin/flamingo/pull/116), closed | Attested client over browser Fetch, response limits, browser tests | Older HTTP contract; main now uses WebSockets. | -| [Flamingo #129](https://github.com/worldcoin/flamingo/pull/129), closed | Browser WebSocket assignment and sealed match exchange | Closure cites different browser authorization requirements; PR reported compile checks but no local browser runtime tests. | -| [WalletKit #548](https://github.com/worldcoin/walletkit/pull/548), closed | Standalone wasm-bindgen client/worker for three-way matching | Superseded integration approach; not enrollment, shares, PCPs or the current web-worker facade. | -| [WalletKit #554](https://github.com/worldcoin/walletkit/pull/554), closed | Existing matching API through UniFFI/WASM | Handwritten `walletkit-web` client exposure was explicitly deferred; pins predate the current transport. | -| [WalletKit #567](https://github.com/worldcoin/walletkit/pull/567), closed | Portable request types and input validation | No networking, attestation execution, matching or enrollment. | -| [Oxide #303](https://github.com/worldcoin/oxide/pull/303), closed | Historical broad WASM compilation attempt | Not a merged/current browser enrollment and PCP SDK. | -| [WalletKit #487](https://github.com/worldcoin/walletkit/pull/487), closed | Proof response claim disclosure from the same selected credentials | Not a WASM portability fix or integrity solution; broad disclosure is not automatically the desired policy. | - -The Flamingo closures cite browser authorization or no expected browser use, not -proof that encrypted browser matching is technically impossible. Prior code is -reusable, but its API/dependencies must be updated and revalidated. - -## Definite plan and upstream PR sequence - -### Decision: generate enrollment shares in the TEE - -This project's plan is TEE-side share generation. No earlier explicit decision -on that placement was found in the reviewed discussions; the following sources -support the reasoning, rather than establish cross-team approval: - -- [Web enrollment design discussion](https://tfh.enterprise.slack.com/archives/C0ARSRLVCV7/p1790628584513719): - TEE model execution, issuer acceptance of TEE integrity, and enrollment support - were proposed; exact share-generation placement/binding was not specified. -- [Ertugrul's scoring proposal](https://tfh.enterprise.slack.com/archives/C0ARSRLVCV7/p1790681976318759): - keep one AMPC set and distinguish web/mobile capture origins in signup-service - metadata and scoring. Vincent and Pranav supported that direction in the thread. - This does not decide where shares are generated. -- [Deep Identifier precedent](https://tfh.enterprise.slack.com/archives/C0AP0GJPYUF/p1789758405412779): - generate shares and assemble/sign/encrypt the PCP inside the TEE, outside the - biometric sandbox. This is a different product/PCP pipeline, not an approved - web Selfie Check implementation or a drop-in dependency. - -For the first TEE-backed enrollment, the TEE will generate the shares from the -accepted embedding, encrypt them to authenticated AMPC party keys and attest the -enrollment output. The browser will retain user-encrypted custody data and can -relay the per-party ciphertexts. The submission route and exact PCP assembly -location remain integration details; neither changes where shares are generated. - -The security invariant is that the shares accepted for enrollment represent the -embedding produced by the approved pipeline on the bound capture. A signed hash -of an embedding plus unrelated browser-generated shares does not establish that -relationship. Browser generation would need an existing accepted correctness -proof, or a trusted component to verify/recompute the relationship before signing. -Do not add a new proof system just to preserve browser share generation in v1. - -| Criterion | TEE generates shares | Browser generates shares | -| --------------------- | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| Output binding | Pipeline can directly bind accepted embedding, generated shares and enrollment context | Requires verification that the submitted shares encode the accepted embedding | -| Reuse | Reuse Rust AMPC primitives; integrate with enclave output/signing | Reuse AMPC primitives after WASM compatibility work, plus binding mechanism | -| Delivery dependencies | Enclave deployment, issuer verification, agreed custody output | Browser SDK work, issuer verification and a secure share-to-embedding binding path | -| Privacy | TEE already processes the image/embedding; keep host and issuer from plaintext via encryption | Browser needs the embedding; that may already be needed for custody, so assess actual data flow | -| Performance | No extra image round trip inherently required; benchmark share generation | Some work moves to browser, but trusted verification may add work/round trips | - -There is no measured schedule or performance comparison yet. The decision removes -browser share-generation work but adds a required enclave/service integration; -it is not a proven faster delivery estimate. Confirm with Flamingo/PoP owners -whether reusable enrollment output code already exists, -who owns the signer/key policy, and how account, capture, share/PCP commitments, -challenge/expiry and replay handling fit the issuer contract. Authenticate AMPC -recipient keys and the user's custody key rather than trusting arbitrary supplied -keys. Share generation in a TEE does not itself prove live camera provenance. - -### Effect on the browser/WASM checklist - -These are required work items, not claims that implementations have landed. - -| Status in the plan | Capability | Implementation boundary | -| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | -| Removed from browser/WASM scope | Embedding quantization, AMPC share generation and encryption to party keys | TEE enrollment operation, reusing native Rust primitives | -| Required service work | Bind accepted capture/model output, exact shares, custody commitments, account and challenge to verified evidence | Flamingo/TEE produces evidence; signup-service verifies it and enforces expiry/replay rules | -| Still required in browser | Encrypted enclave channel and trusted key/evidence verification path | Reuse Pontifex portability; complete Flamingo transport/auth and WalletKit worker integration as appropriate to the agreed channel design | -| Still required in browser | Enrollment authentication, credential verification/import and selected-claim access | Supported WalletKit/Oxide APIs replace remaining helper jobs and local patches | -| Still required for browser custody | Canonical PCP parsing/serialization where needed, custody encryption/readback, storage and recovery | Narrow Oxide portable surface plus WalletKit/browser storage adapters; consume TEE-produced data without generating new shares | -| Browser work, not an AMPC WASM port | Camera capture, framing guidance and request UI | Browser APIs and the model harness | - -Do not port the native helper wholesale or open an AMPC WASM PR for this v1 flow. -Retire the helper only after its share-generation job has moved to the TEE and -its authentication and credential-verification jobs have supported replacements. -The closed matching PRs remain useful transport/client work; they do not implement -this enrollment operation. Returning-user matching remains a separate requirement. - -### Implementation order - -1. **WalletKit: complete web credential worker APIs and verified import.** Build - above #523; replace the local listing/deletion and subject-binding patches, - expose credential verification, and provide deliberate claim access. Reuse - existing core/protocol implementations. Keep claim integrity and disclosure - policy explicit; do not silently make every proof disclose every claim. -2. **Flamingo: browser WebSocket client with agreed authorization.** Start from - #129, use compatible Pontifex browser support, and test attestation/key - binding, encrypted transport, result binding, timeouts and cancellation in a - real browser with fixtures. -3. **WalletKit: Flamingo browser worker integration.** Follow the current UniFFI - package architecture rather than #548's extra standalone wrapper. Depend on - PR 2 and expose only operations supported by the service. -4. **Flamingo + signup-service: attested Selfie Check enrollment contract.** - Implement TEE-side embedding quantization, share generation and party - encryption. Specify and bind exact shares/PCP/account/challenge, authenticate - recipient and custody keys, and define submission, expiry and replay handling. - Add the operation and issuer verification in their owning repositories. -5. **Oxide: portable PCP custody and enrollment data primitives.** Extract or - feature-isolate only the data/crypto operations needed by the browser under - PR 4; retain the canonical package format and identity checks. Consume the - TEE's exact embedding/share custody data. Test native/WASM equivalence with - synthetic fixtures. Exclude browser quantization, share generation, party - encryption and native model inference from this PR's scope. -6. **WalletKit: expose portable enrollment/PCP APIs and persistence.** Depend on - PR 5, evaluate #512 for associated data, and supply browser host adapters. - Coordinate credential import with PCP save/recovery. Remove the native helper - only when shares, enrollment authentication and credential verification all - have supported replacements. - -PRs 2–3 are needed if the browser owns the existing Flamingo attested session. -If a trusted service certifies the enclave key instead, design that certificate -and channel integration explicitly; the certificate service is additional work, -not something established by the closed PRs. - -New upstream PRs outside these three repos should be limited to demonstrated -dependencies: `signup-service` for issuer-side evidence verification, -`biometric-engines` for missing model operations, and UBRN for generator -compatibility. An `ampc-common` WASM port is not a dependency of this plan; -any required AMPC change must be justified by the TEE integration. Pontifex already -has the relevant merged portability work. - -## Related open/merged work to reuse - -- WalletKit [#480](https://github.com/worldcoin/walletkit/pull/480), - [#522](https://github.com/worldcoin/walletkit/pull/522), - [#523](https://github.com/worldcoin/walletkit/pull/523): open web package stack. -- WalletKit [#512](https://github.com/worldcoin/walletkit/pull/512): open - credential-associated-data persistence/recovery work. -- WalletKit [#492](https://github.com/worldcoin/walletkit/pull/492): open claim - accessor cleanup; removes `claims_hex`, which our current patch calls. -- Oxide [#1230](https://github.com/worldcoin/oxide/pull/1230): merged v4-proof face - enrollment; our helper's pin includes it but the demo does not call that API. -- Oxide [#1199](https://github.com/worldcoin/oxide/pull/1199): merged identity-scoped - PCP custody; our helper does not create or store a PCP. -- UBRN [#409](https://github.com/jhugman/uniffi-bindgen-react-native/pull/409): open - UniFFI 0.32 update; dependency upgrades need generator/build validation. - -This inventory is a source/PR review. No new browser, Rust or live-enclave tests -were run for it, and no new upstream PR was opened. diff --git a/experiments/README.md b/experiments/README.md deleted file mode 100644 index 0a0c78f..0000000 --- a/experiments/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Demo and experimental code - -`tee-demo/` preserves the earlier localhost demo, including the local WalletKit -#604 adapter and TEE routes. It is not the default application. Its source and -local-package dependency are retained for the next TEE integration step. -The published WalletKit `0.27.1` used by the product does not expose this demo's -`extractSelfieEmbedding` API, so the demo cannot use that release unchanged. - -The canonical UI and registration flow now live in `web`. -Use the repository-root commands for that app. The pre-convergence checkpoint is -`ae0b178`; no legacy passkey state or local secrets were deleted. - -## Boundary - -Everything under this directory is **demo/experimental**, excluded from root -workspaces and the product build. It is still tracked source and would be included -in a merge unless explicitly removed. Keeping it here does not mark it ready for -production or make the entire branch production-ready. - -`tee-demo` preserves the synthetic enrollment adapter, native helper, placeholder -integrity headers and simulated flows. The duplicate adapter/helper formerly in -`web` and `services/staging-issuance` have been removed. The Rust -helper source and lockfile were identical to the preserved copy. - -To work on the experiment, explicitly change into `experiments/tee-demo` and use -its own README/package scripts. Its local WalletKit tarball dependency must be -available; root installation does not prepare it. Run its helper build command -from that directory if needed. No live enrollment was run during this separation. - -Promote individual implementations only after replacing test inputs and evidence, -adding regression checks and documenting real integration validation. Product code -must not import this directory. Do not copy the synthetic adapter back as a -production enrollment implementation. diff --git a/experiments/tee-demo/README.md b/experiments/tee-demo/README.md deleted file mode 100644 index 0504390..0000000 --- a/experiments/tee-demo/README.md +++ /dev/null @@ -1,131 +0,0 @@ -> **Demo/experimental only.** This app is excluded from the root product build. -> Run the commands below from `experiments/tee-demo`, not the repository root. -> It requires the local WalletKit tarball referenced by its `package.json`. -> Synthetic enrollment uses random face input and test integrity headers. - -# Web Authenticator - -This repo contains the browser experience and the current staging demo. Real selfie enrollment through a TEE is still being built. - -## Run locally - -```sh -bun install --frozen-lockfile -bun run dev -``` - -Open [localhost:3100](http://localhost:3100). The development command starts Vite on port 3100 and the Bun API server on port 3101. - -- `/`: authenticator setup, unlock and request entry. -- `/selfie-check`: Selfie Check request flow. -- `/selfie-demo`: local RGBNet face positioning, ONNX diagnostics and connection log. - See [model setup and validation](docs/rgbnet-browser.md). - -Passkey setup requires a browser and provider that support the WebAuthn PRF extension. Camera access requires HTTPS or localhost. - -The TEE target is configured in `.env.local`: - -```dotenv -VITE_TEE_BASE_URL=http://127.0.0.1:8010 -``` - -The development selfie demo now makes an authenticated `POST /v1/connect` request using a short-lived demo token supplied automatically by the local backend. This is local admission, not enclave attestation. Missing/invalid/expired credentials are forbidden; a valid token receives 503 until the face worker is attached. See [local connection setup](docs/local-tee-connect.md). - -The developer enrollment flow can issue a staging credential using synthetic face data. It does not use the camera image, create a real face PCP or verify TEE enrollment evidence. - -## Responsibility Table - -| Component | Responsibility | -| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| [web-authenticator](https://github.com/worldcoin/web-authenticator) | Consent, passkeys, camera, capture guidance, request handling and browser storage. | -| [walletkit](https://github.com/worldcoin/walletkit) | Protocol registration, credential subjects, credential storage and proof generation. Browser TEE APIs still need integration. | -| [di-migration-tee](https://github.com/worldcoin/di-migration-tee) | Starting point for the biometrics TEE: admission API, host-to-enclave communication and attested keys. Selfie operations need to be added. | -| [signup-service](https://github.com/worldcoin/signup-service) | Verify enrollment authorization and evidence, submit shares for uniqueness processing and request credential signing. | -| [signup-service-credential-signer](https://github.com/worldcoin/signup-service-credential-signer) | Sign the credential with the ordered claims supplied by the issuer. | - -## Authenticator setup - -```text -seed = HKDF-Expand( - PRF("web.world.org/authenticator"), - "web.world.org/v1/authenticator-secret", 32) - -databaseKey = HKDF-Expand( - PRF("web.world.org/storage"), - "web.world.org/v1/storage-secret", 32) -``` - -## First enrollment — planned - -1. Open an IDKit request or start enrollment from the authenticator. Show consent. -2. Prepare the schema-11 credential subject and blinding factor through WalletKit. -3. Start the camera and TEE session setup concurrently. Show local capture guidance while the connection is prepared. -4. Verify the enclave attestation and its public-key binding. Establish a session bound to the subject, challenge and expiry. -5. Capture the required images or video and encrypt them to the enclave. -6. The TEE runs the authoritative checks and generates the embedding, protected enrollment outputs and evidence binding those outputs to the enrollment. -7. The browser builds and encrypts the PCP from those outputs and the corresponding capture material. The exact output and PCP contracts still need implementation. -8. Submit the enrollment payload and TEE evidence to the Face issuer. The issuer verifies their binding and processes the uniqueness result. -9. Poll for the signed credential. Store it with its blinding factor and retain the associated encrypted PCP. -10. Complete the original IDKit request if enrollment started from one. - -We intend to use the existing Face issuer endpoints: - -- `PUT /api/v1/identity`: submit enrollment. -- `GET /api/v1/identity`: poll for its result and credential. - -Keeping those routes still requires changes to accept and verify TEE evidence, and to authorize browser polling. The browser does not have a World App integrity token. - -## Returning verification — planned - -We will validate the incoming request, unlock the authenticator and check the stored credential's expiry and constraints. - -When fresh user presence is required, we will capture a new selfie and ask the TEE to compare it with the credential-bound PCP reference. The match evidence must be bound to the current request. WalletKit and the RP verifier must carry and verify that binding before the response is accepted. - -## Browser and TEE checks - -| Browser: capture feedback | TEE: authoritative evaluation | -| -------------------------------------- | --------------------------------------------------------------------------------- | -| TFH face detection and QA models. | The complete configured face-engine enrollment or verification pipeline. | -| Lightweight glasses detector. | Full required occlusion and image-quality checks, including non-model validators. | -| Our own orchestration and guidance UI. | Configured spoof checks, embedding generation and matching when required. | - -A capture can pass browser guidance and still fail in the TEE. We will surface the rejection and let the user retake it. - -An encrypted connection does not prove that an image came from a live camera. Liveness guarantees depend on the capture protocol and the checks actually performed. We must not claim mobile LightGuard parity for the web flow. - -## PCP storage and reissuance - -We will store the PCP encrypted in browser storage. Its binding to the signed credential must survive storage and later verification. The browser PCP API and storage format are still to be implemented. - -A passkey can recover a storage key; it cannot recreate deleted vault files. If browser storage is lost, the intended recovery paths are: - -- Transfer the credential and PCP from another authenticator. -- Prove control of the same World ID, capture a fresh selfie and request reissuance with a new PCP. - -Reissuance requires issuer support and face continuity checks. Creating a new identity is not a reliable recovery path: the existing face enrollment can still match during uniqueness processing. - -## Issuance claims — proposed - -| Index | Claim | -| ----- | -------------- | -| 0 | Z-score. | -| 1 | Match count. | -| 2 | Database size. | - -| Proposed index | Claim | Meaning | -| -------------- | ------------------------ | ------------------------------------------------------------------------------------------------ | -| 3 | `issuance_assurance` | `0`: unknown; `1`: app; `2`: TEE; `3`: app and TEE. | -| 4 | `model_security_profile` | Versioned identifier for the checks and configuration that ran. Profile IDs remain to be agreed. | - -These additions need a compatible schema rollout. The issuer derives and persists the values from verified evidence; it must not accept assurance values supplied by the browser. - -## Admission and runtime protection - -The public ingress must admit and rate-limit enrollment attempts before allocating expensive TEE work. IP and User-Agent can support abuse controls; they are not proof of identity or camera authenticity. We do not plan to request browser geolocation. - -Promon Shield for Web is a proposed runtime-protection layer. Its session validation would need enforcement at ingress. It does not replace enclave attestation, biometric checks or issuer verification. - -## References - -- [Selfie Check via Web Authenticator — source spec](https://app.notion.com/p/worldcoin/Selfie-Check-via-Web-Authenticator-cfd0a1d9d6de45d49241382a36645c6b) -- [Soam's handover](https://github.com/worldcoin/web-authenticator-experiments/blob/0bd61a20b23ff0a778553ac1788bd3aa3c7b9404/docs/web-authenticator-handover.md) diff --git a/experiments/tee-demo/bun.lock b/experiments/tee-demo/bun.lock deleted file mode 100644 index 514036b..0000000 --- a/experiments/tee-demo/bun.lock +++ /dev/null @@ -1,788 +0,0 @@ -{ - "lockfileVersion": 1, - "configVersion": 0, - "workspaces": { - "": { - "name": "safeguard", - "dependencies": { - "@radix-ui/react-dropdown-menu": "^2.1.16", - "@types/qrcode": "^1.5.5", - "@worldcoin/walletkit-web": "file:../walletkit-selfie-integration/worldcoin-walletkit-web-0.22.1.tgz", - "clsx": "^2.1.1", - "lossless-json": "4.3.1", - "motion": "^12.23.22", - "onnxruntime-web": "1.30.0", - "qrcode": "^1.5.4", - "react": "19.2.3", - "react-dom": "19.2.3", - "react-router-dom": "^7.18.4", - "tailwind-merge": "^3.3.1", - "viem": "2.56.0", - }, - "devDependencies": { - "@eslint/eslintrc": "^3", - "@eslint/js": "^9", - "@tailwindcss/postcss": "^4", - "@types/bun": "^1.4.2", - "@types/node": "^20", - "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^6.1.2", - "eslint": "^9", - "eslint-plugin-react-hooks": "^7.1.1", - "globals": "^17.13.0", - "prettier": "^3.6.2", - "prettier-plugin-sort-imports-desc": "^1.0.0", - "tailwindcss": "^4", - "typescript": "^5", - "typescript-eslint": "^8.71.1", - "vite": "^8.3.3", - }, - }, - }, - "packages": { - "@adraffy/ens-normalize": ["@adraffy/ens-normalize@1.11.1", "", {}, "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ=="], - - "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], - - "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], - - "@babel/compat-data": ["@babel/compat-data@7.29.7", "", {}, "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg=="], - - "@babel/core": ["@babel/core@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-compilation-targets": "^7.29.7", "@babel/helper-module-transforms": "^7.29.7", "@babel/helpers": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA=="], - - "@babel/generator": ["@babel/generator@7.29.8", "", { "dependencies": { "@babel/parser": "^7.29.8", "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg=="], - - "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.29.7", "", { "dependencies": { "@babel/compat-data": "^7.29.7", "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g=="], - - "@babel/helper-globals": ["@babel/helper-globals@7.29.7", "", {}, "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA=="], - - "@babel/helper-module-imports": ["@babel/helper-module-imports@7.29.7", "", { "dependencies": { "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g=="], - - "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.29.7", "", { "dependencies": { "@babel/helper-module-imports": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7", "@babel/traverse": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg=="], - - "@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - - "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], - - "@babel/helper-validator-option": ["@babel/helper-validator-option@7.29.7", "", {}, "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw=="], - - "@babel/helpers": ["@babel/helpers@7.29.10", "", { "dependencies": { "@babel/template": "^7.29.7", "@babel/types": "^7.29.8" } }, "sha512-EMCx3AGZ3WfAl6ht7AyQoPm2Lh+BGYEMdc4Q6Hf7uSCDOZFuLq44qNwL+iaim8VlyYhRAo4X43+weadK8ZB4Yg=="], - - "@babel/parser": ["@babel/parser@7.29.9", "", { "dependencies": { "@babel/types": "^7.29.8" }, "bin": "./bin/babel-parser.js" }, "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA=="], - - "@babel/template": ["@babel/template@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg=="], - - "@babel/traverse": ["@babel/traverse@7.29.10", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", "@babel/parser": "^7.29.9", "@babel/template": "^7.29.7", "@babel/types": "^7.29.8", "debug": "^4.3.1" } }, "sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ=="], - - "@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - - "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g=="], - - "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="], - - "@eslint/config-array": ["@eslint/config-array@0.21.0", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ=="], - - "@eslint/config-helpers": ["@eslint/config-helpers@0.3.1", "", {}, "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA=="], - - "@eslint/core": ["@eslint/core@0.15.2", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg=="], - - "@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="], - - "@eslint/js": ["@eslint/js@9.36.0", "", {}, "sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw=="], - - "@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="], - - "@eslint/plugin-kit": ["@eslint/plugin-kit@0.3.5", "", { "dependencies": { "@eslint/core": "^0.15.2", "levn": "^0.4.1" } }, "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w=="], - - "@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="], - - "@floating-ui/dom": ["@floating-ui/dom@1.7.4", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="], - - "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.6", "", { "dependencies": { "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw=="], - - "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], - - "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], - - "@humanfs/node": ["@humanfs/node@0.16.7", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="], - - "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], - - "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], - - "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], - - "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], - - "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], - - "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], - - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], - - "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], - - "@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], - - "@noble/curves": ["@noble/curves@1.9.1", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA=="], - - "@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], - - "@oxc-project/types": ["@oxc-project/types@0.153.0", "", {}, "sha512-jSNrRIyvPVLL5E1z/tS5zLAprosGz/FuI1PWwEOz59j3E4TTTzSpqKb/RDGqJhhW0QHYISGXxq582wGx6T11Tw=="], - - "@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="], - - "@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="], - - "@protobufjs/codegen": ["@protobufjs/codegen@2.0.5", "", {}, "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g=="], - - "@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.1", "", {}, "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg=="], - - "@protobufjs/fetch": ["@protobufjs/fetch@1.1.1", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1" } }, "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw=="], - - "@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="], - - "@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="], - - "@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="], - - "@protobufjs/utf8": ["@protobufjs/utf8@1.1.2", "", {}, "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug=="], - - "@radix-ui/primitive": ["@radix-ui/primitive@1.1.3", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="], - - "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w=="], - - "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw=="], - - "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="], - - "@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], - - "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw=="], - - "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg=="], - - "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-menu": "2.1.16", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw=="], - - "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw=="], - - "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw=="], - - "@radix-ui/react-id": ["@radix-ui/react-id@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg=="], - - "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg=="], - - "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.8", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw=="], - - "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], - - "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.5", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ=="], - - "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - - "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA=="], - - "@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], - - "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg=="], - - "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.2.2", "", { "dependencies": { "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg=="], - - "@radix-ui/react-use-effect-event": ["@radix-ui/react-use-effect-event@0.0.2", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA=="], - - "@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.1", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g=="], - - "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="], - - "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.1", "", { "dependencies": { "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w=="], - - "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ=="], - - "@radix-ui/rect": ["@radix-ui/rect@1.1.1", "", {}, "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="], - - "@rolldown/binding-android-arm-eabi": ["@rolldown/binding-android-arm-eabi@1.2.13", "", { "os": "android", "cpu": "arm" }, "sha512-Vu/NICrgdRvUOeaJZIyB2FP63s6fO/4ud5l8dXmxDx9yDyn+mN0y+gsvsVviSli+T361Aqo0h46EuMoobrwawA=="], - - "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.2.13", "", { "os": "android", "cpu": "arm64" }, "sha512-6LEoIrGy5vvCd2boNnv2soPSUZj/PRvhp8R/t9KlX+mIZxThIE/ZqxrGXxmuNX0FuvQFvLdZr7S4HrYpYBVhEQ=="], - - "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.2.13", "", { "os": "darwin", "cpu": "arm64" }, "sha512-CaJSRzlQ6Q+zkDMVA9OkVxBjVoPRCDEE3v0FSJ9kIQBgRjFApA3Si4ijhbNVUji7ZJt+PfO0e46qy4nPInHUPA=="], - - "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.2.13", "", { "os": "darwin", "cpu": "x64" }, "sha512-e4r340I5hxSzJkD3YJBxgzq/rJ3wwxwdLLb2FPt1Zpyem20nrQPT11DDEEkazwxaHumH8wpglsp/Ozgj/wT6mw=="], - - "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.2.13", "", { "os": "freebsd", "cpu": "x64" }, "sha512-hoBWDZ4/K/mJKVMbsgUd1jfpA2DiOrJ54mpegObU9TBHBBrtX4FLIXJJQRDPZ/2Dn91GvPob+Z2hwKJzf4E5SQ=="], - - "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.2.13", "", { "os": "linux", "cpu": "arm" }, "sha512-oF9fZu3vTWnTiVAkDFxU9PJLt1nh20K9RRpuHsR7ZnE2L7XookBbDBVLojCVSLGbvtSlxeUNnjAj6DbNsKyzbg=="], - - "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.2.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-DTpb/+jMiqWMPgphn4ksW1zW+XLJ6dJJ9FMvnIk9I291LhCctMPhMYJrP5t9p6C9qa3KXadDdUEZHBaPh3kNxQ=="], - - "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.2.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-xU+Kvv9N2A3SY35zFh1FWWNjxbadE/BKeqnkXe7vScU4GZsw757BlVmDLITZEq8DPpk6m7uoDYkK7P+x/uU5Ow=="], - - "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.2.13", "", { "os": "linux", "cpu": "ppc64" }, "sha512-XMk/hnhh25oQ756Lclb1Q11h4ll0xC0Esa5w4Vzp+mAE2S3AGJgeM0SonrIgY8fHhjarb6hcoTuwoFG0VVP2ig=="], - - "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.2.13", "", { "os": "linux", "cpu": "s390x" }, "sha512-U1BoTHYmlywE2n3HUWjzZ+8EQsKr+OwpxYuDWaubx42tUL8QSL7nOqRz/NVHanibbFP3M1Rxuprz/wNcbMKjqw=="], - - "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.2.13", "", { "os": "linux", "cpu": "x64" }, "sha512-J4cm80Pc6wEwV5AZ42o62sIQgDk+Y7R2s646jIwuvO+4V46QB58N4vVuMPWCBaNgursXLpmUWJV//WQAkPvHBQ=="], - - "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.2.13", "", { "os": "linux", "cpu": "x64" }, "sha512-W0euZS40U4V6JkmEnVCIX9mcsL6cbXQ4X8c2w+MMOIjFg68TXUW+u3RT+2e1t1pv9mg/EP3pDtK3POXdQ7Rxyw=="], - - "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.2.13", "", { "os": "none", "cpu": "arm64" }, "sha512-do/AF/4n9MRshia3a5aXoy8xM2c6mgfT6D7H/dY6my5z+hfCIR4ab7mk4IRj++nsEQpKy39kd0DQnDq+r692tw=="], - - "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.2.13", "", { "os": "win32", "cpu": "arm64" }, "sha512-6FtUf2cJZobutJdxnGYX8z0vtbgqU0b2v8vfBhkXb9wp2MppMFtkunE+IaOntyi01rkIQoPW2GHABtfzsC0BRQ=="], - - "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.2.13", "", { "os": "win32", "cpu": "x64" }, "sha512-UKhFaZTeTcbKrb3iU82m17jVcPEAoqDkCN5MBqgPyZSwp/cQmib21crTS0DdH7T1B7wZRWEI89YQAOJMet5yhg=="], - - "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], - - "@scure/base": ["@scure/base@1.2.6", "", {}, "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg=="], - - "@scure/bip32": ["@scure/bip32@1.7.0", "", { "dependencies": { "@noble/curves": "~1.9.0", "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5" } }, "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw=="], - - "@scure/bip39": ["@scure/bip39@1.6.0", "", { "dependencies": { "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5" } }, "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A=="], - - "@tailwindcss/node": ["@tailwindcss/node@4.1.14", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", "jiti": "^2.6.0", "lightningcss": "1.30.1", "magic-string": "^0.30.19", "source-map-js": "^1.2.1", "tailwindcss": "4.1.14" } }, "sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw=="], - - "@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.14", "", { "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.5.1" }, "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.14", "@tailwindcss/oxide-darwin-arm64": "4.1.14", "@tailwindcss/oxide-darwin-x64": "4.1.14", "@tailwindcss/oxide-freebsd-x64": "4.1.14", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.14", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.14", "@tailwindcss/oxide-linux-arm64-musl": "4.1.14", "@tailwindcss/oxide-linux-x64-gnu": "4.1.14", "@tailwindcss/oxide-linux-x64-musl": "4.1.14", "@tailwindcss/oxide-wasm32-wasi": "4.1.14", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.14", "@tailwindcss/oxide-win32-x64-msvc": "4.1.14" } }, "sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw=="], - - "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.14", "", { "os": "android", "cpu": "arm64" }, "sha512-a94ifZrGwMvbdeAxWoSuGcIl6/DOP5cdxagid7xJv6bwFp3oebp7y2ImYsnZBMTwjn5Ev5xESvS3FFYUGgPODQ=="], - - "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.14", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HkFP/CqfSh09xCnrPJA7jud7hij5ahKyWomrC3oiO2U9i0UjP17o9pJbxUN0IJ471GTQQmzwhp0DEcpbp4MZTA=="], - - "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.14", "", { "os": "darwin", "cpu": "x64" }, "sha512-eVNaWmCgdLf5iv6Qd3s7JI5SEFBFRtfm6W0mphJYXgvnDEAZ5sZzqmI06bK6xo0IErDHdTA5/t7d4eTfWbWOFw=="], - - "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.14", "", { "os": "freebsd", "cpu": "x64" }, "sha512-QWLoRXNikEuqtNb0dhQN6wsSVVjX6dmUFzuuiL09ZeXju25dsei2uIPl71y2Ic6QbNBsB4scwBoFnlBfabHkEw=="], - - "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.14", "", { "os": "linux", "cpu": "arm" }, "sha512-VB4gjQni9+F0VCASU+L8zSIyjrLLsy03sjcR3bM0V2g4SNamo0FakZFKyUQ96ZVwGK4CaJsc9zd/obQy74o0Fw=="], - - "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.14", "", { "os": "linux", "cpu": "arm64" }, "sha512-qaEy0dIZ6d9vyLnmeg24yzA8XuEAD9WjpM5nIM1sUgQ/Zv7cVkharPDQcmm/t/TvXoKo/0knI3me3AGfdx6w1w=="], - - "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.14", "", { "os": "linux", "cpu": "arm64" }, "sha512-ISZjT44s59O8xKsPEIesiIydMG/sCXoMBCqsphDm/WcbnuWLxxb+GcvSIIA5NjUw6F8Tex7s5/LM2yDy8RqYBQ=="], - - "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.14", "", { "os": "linux", "cpu": "x64" }, "sha512-02c6JhLPJj10L2caH4U0zF8Hji4dOeahmuMl23stk0MU1wfd1OraE7rOloidSF8W5JTHkFdVo/O7uRUJJnUAJg=="], - - "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.14", "", { "os": "linux", "cpu": "x64" }, "sha512-TNGeLiN1XS66kQhxHG/7wMeQDOoL0S33x9BgmydbrWAb9Qw0KYdd8o1ifx4HOGDWhVmJ+Ul+JQ7lyknQFilO3Q=="], - - "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.14", "", { "dependencies": { "@emnapi/core": "^1.5.0", "@emnapi/runtime": "^1.5.0", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.0.5", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.4.0" }, "cpu": "none" }, "sha512-uZYAsaW/jS/IYkd6EWPJKW/NlPNSkWkBlaeVBi/WsFQNP05/bzkebUL8FH1pdsqx4f2fH/bWFcUABOM9nfiJkQ=="], - - "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.14", "", { "os": "win32", "cpu": "arm64" }, "sha512-Az0RnnkcvRqsuoLH2Z4n3JfAef0wElgzHD5Aky/e+0tBUxUhIeIqFBTMNQvmMRSP15fWwmvjBxZ3Q8RhsDnxAA=="], - - "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.14", "", { "os": "win32", "cpu": "x64" }, "sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA=="], - - "@tailwindcss/postcss": ["@tailwindcss/postcss@4.1.14", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.1.14", "@tailwindcss/oxide": "4.1.14", "postcss": "^8.4.41", "tailwindcss": "4.1.14" } }, "sha512-BdMjIxy7HUNThK87C7BC8I1rE8BVUsfNQSI5siQ4JK3iIa3w0XyVvVL9SXLWO//CtYTcp1v7zci0fYwJOjB+Zg=="], - - "@types/bun": ["@types/bun@1.4.2", "", { "dependencies": { "bun-types": "1.4.2" } }, "sha512-GimotNn7+ZV0uVArItBbriZsR1oNf0+WTzPkdcFrzShI7k2norL0uzEaJT8T33dWr7O/c9ZDuAFQrctKCi72oQ=="], - - "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], - - "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], - - "@types/node": ["@types/node@20.19.19", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg=="], - - "@types/qrcode": ["@types/qrcode@1.5.5", "", { "dependencies": { "@types/node": "*" } }, "sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg=="], - - "@types/react": ["@types/react@19.2.7", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg=="], - - "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], - - "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.71.1", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.71.1", "@typescript-eslint/type-utils": "8.71.1", "@typescript-eslint/utils": "8.71.1", "@typescript-eslint/visitor-keys": "8.71.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.71.1", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-nNlBf6HuotqMgZvSkWD5hNdemiBIxQ2NmrlgfcUIeZRs+BbakjscCQRq/Hb74EFVnFiSWWdL12JruqwBy3ERDw=="], - - "@typescript-eslint/parser": ["@typescript-eslint/parser@8.71.1", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.71.1", "@typescript-eslint/types": "8.71.1", "@typescript-eslint/typescript-estree": "8.71.1", "@typescript-eslint/visitor-keys": "8.71.1", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-oM/5sAqz/l1v/zYK1qTOPrn2+JIrBGC1V6uNYucRO5gh6eT9vWJ/RhPbGE59byvZEUQ4VP6XkLBaS5Jti5jpvw=="], - - "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.71.1", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.71.1", "@typescript-eslint/types": "^8.71.1", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-Oijc9RUsohHjncg6iGi7gCtjnEjYt9FWv9u6ygK8uKcHK5eLjLAkqERQ9BaytbpceOFdk6kifPCS/zAZE+A99g=="], - - "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.71.1", "", { "dependencies": { "@typescript-eslint/types": "8.71.1", "@typescript-eslint/visitor-keys": "8.71.1" } }, "sha512-1YUDZXdTnXLlob03SFHBipdyMBsDVm7zoSz0ytTJ39dk5J1TgsTK03VlR/dLXG/RLLUrPcYbD4rp23BmHxHP0w=="], - - "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.71.1", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-oTvkml5SxXhgg+WWKhod5qWQICDXtOB+/Hi9VdPKFAANJ2b7YOgMffgvzXuqog7R6A/JtrzRf128dsxummyWhg=="], - - "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.71.1", "", { "dependencies": { "@typescript-eslint/types": "8.71.1", "@typescript-eslint/typescript-estree": "8.71.1", "@typescript-eslint/utils": "8.71.1", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-kH3t3jZCYv2PZSBEWPKTariLrCaoF1CLoPitYFBJOhAGEwWnSRAtGEifrfrpBa4K9JlwWNZotgA5w3/wLSk/FQ=="], - - "@typescript-eslint/types": ["@typescript-eslint/types@8.71.1", "", {}, "sha512-ybYnPTUwg3VQQOFEiBPLs8Jxl1ry2vXdn1kVKguomBbvxpetdu3MKTNDqFNUrlG8ylP9MpZosmXMFYlGQHk1oQ=="], - - "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.71.1", "", { "dependencies": { "@typescript-eslint/project-service": "8.71.1", "@typescript-eslint/tsconfig-utils": "8.71.1", "@typescript-eslint/types": "8.71.1", "@typescript-eslint/visitor-keys": "8.71.1", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-pSKSEK1JJpHs6KiKVtABCE4iJK5d7FLFzDXQNBQ2oRY7LEd3UwOt3TZemTgu9syTIf56dJWlTn/pdmrO9oKUXQ=="], - - "@typescript-eslint/utils": ["@typescript-eslint/utils@8.71.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.71.1", "@typescript-eslint/types": "8.71.1", "@typescript-eslint/typescript-estree": "8.71.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-CBjT6gfAz3DW2j9Q4moFnqt208Aq+506sVGXfpRcyAeqn0EpayL0mjdWoCO2t3RC7GewNrFxdeehuEaPg6DMzQ=="], - - "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.71.1", "", { "dependencies": { "@typescript-eslint/types": "8.71.1", "eslint-visitor-keys": "^5.0.0" } }, "sha512-0GxiUGqMU0qXJt58cBsiG3DP8lUmBaFo2vChtUX+CT7PnR3v/VGLLrzVP4K9r1lNiZXjHYefMBbPunplr09v6w=="], - - "@vitejs/plugin-react": ["@vitejs/plugin-react@6.1.2", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "oxc-transform-react": "^0.152.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler", "oxc-transform-react"] }, "sha512-fhJNGUdscQa4HkI0xFxwonWyhnVReCPDbXI7FH7jmzpnVCrFQI7PRrhWecO263610vOrs9tr2Y4xcf8uAdFxbw=="], - - "@worldcoin/walletkit-web": ["@worldcoin/walletkit-web@../walletkit-selfie-integration/worldcoin-walletkit-web-0.22.1.tgz", {}, "sha512-/JiALYeiJgj2+DGou2vKz8F1MyHun7aSCNSoF+DlKcOdsOzbl8iOn8atMmEHYVB9I+VhBL/J4NT+JrBbRmCzcg=="], - - "abitype": ["abitype@1.2.3", "", { "peerDependencies": { "typescript": ">=5.0.4", "zod": "^3.22.0 || ^4.0.0" }, "optionalPeers": ["typescript", "zod"] }, "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg=="], - - "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], - - "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], - - "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], - - "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - - "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - - "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - - "aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], - - "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - - "baseline-browser-mapping": ["baseline-browser-mapping@2.11.27", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-ElY12DaROGuan+lMmZ8Cvo/ZUbXPe7Enc/9VU/b1T3Kp4dwytRcNdR8DoSJN5SNJT/CuvcCA0DHDVmMOCePdRQ=="], - - "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], - - "browserslist": ["browserslist@4.29.3", "", { "dependencies": { "baseline-browser-mapping": "^2.11.26", "caniuse-lite": "^1.0.30001813", "electron-to-chromium": "^1.5.439", "node-releases": "^2.0.57", "update-browserslist-db": "^1.3.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-1R4kiYKXGViqEN0CnoDrXc1StD9niAwu+j2dukWzrD4bJgsD4lDmEp0CRbc6E/vYJIfTHwPmwyaKtVSudICdPA=="], - - "bun-types": ["bun-types@1.4.2", "", { "dependencies": { "@types/node": "*" } }, "sha512-bxV1FgK7yBIzjRe5zBozIM4Bem11ZJcCXSrjWRG3YWLt8yFDePu4cLjpebO8OvPeIE9trbyPF4fuj3Cia4Fj3w=="], - - "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], - - "camelcase": ["camelcase@5.3.1", "", {}, "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="], - - "caniuse-lite": ["caniuse-lite@1.0.30001815", "", {}, "sha512-uDybUEyfgbyJJ93J1vikTylBX31AkdVYeVPeffMQpf8XN7hSfr0oZOn4VFOIMNvtU5+rHvC5Udg2TgtJKHm23Q=="], - - "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - - "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], - - "cliui": ["cliui@6.0.0", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ=="], - - "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], - - "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], - - "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], - - "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], - - "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], - - "cookie": ["cookie@1.1.1", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="], - - "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], - - "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], - - "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], - - "decamelize": ["decamelize@1.2.0", "", {}, "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="], - - "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], - - "detect-libc": ["detect-libc@2.1.1", "", {}, "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw=="], - - "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], - - "dijkstrajs": ["dijkstrajs@1.0.3", "", {}, "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="], - - "electron-to-chromium": ["electron-to-chromium@1.5.450", "", {}, "sha512-AC3HBt6+rJKNUJxpBA1FQPKjrJ2gV6zXu7uAL95PTqxdBxiHDELWpeJ8N5QK5qwBJqXU18hTsmv+hHjfwQ0gdQ=="], - - "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "enhanced-resolve": ["enhanced-resolve@5.18.3", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww=="], - - "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], - - "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - - "eslint": ["eslint@9.36.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", "@eslint/config-helpers": "^0.3.1", "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.36.0", "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ=="], - - "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@7.1.1", "", { "dependencies": { "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "hermes-parser": "^0.25.1", "zod": "^3.25.0 || ^4.0.0", "zod-validation-error": "^3.5.0 || ^4.0.0" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" } }, "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g=="], - - "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="], - - "eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="], - - "espree": ["espree@10.4.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="], - - "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="], - - "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], - - "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], - - "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], - - "eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], - - "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], - - "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], - - "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], - - "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], - - "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], - - "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], - - "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], - - "flatbuffers": ["flatbuffers@25.9.23", "", {}, "sha512-MI1qs7Lo4Syw0EOzUl0xjs2lsoeqFku44KpngfIduHBYvzm8h2+7K8YMQh1JtVVVrUvhLpNwqVi4DERegUJhPQ=="], - - "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], - - "framer-motion": ["framer-motion@12.23.22", "", { "dependencies": { "motion-dom": "^12.23.21", "motion-utils": "^12.23.6", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-ZgGvdxXCw55ZYvhoZChTlG6pUuehecgvEAJz0BHoC5pQKW1EC5xf1Mul1ej5+ai+pVY0pylyFfdl45qnM1/GsA=="], - - "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], - - "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], - - "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], - - "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], - - "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], - - "globals": ["globals@17.13.0", "", {}, "sha512-RwMTC61u7hrG3ZJMkZQOK4JLJrKS8QtoTii63EmWvFXHqycY9FObBJQCbsLxSO8kjKhWE5kV1GC+Vb1g3RI0Zg=="], - - "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - - "guid-typescript": ["guid-typescript@1.0.9", "", {}, "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ=="], - - "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], - - "hermes-estree": ["hermes-estree@0.25.1", "", {}, "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw=="], - - "hermes-parser": ["hermes-parser@0.25.1", "", { "dependencies": { "hermes-estree": "0.25.1" } }, "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA=="], - - "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - - "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], - - "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], - - "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], - - "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], - - "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], - - "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], - - "isows": ["isows@1.0.7", "", { "peerDependencies": { "ws": "*" } }, "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg=="], - - "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], - - "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - - "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], - - "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], - - "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], - - "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], - - "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], - - "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], - - "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], - - "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], - - "lightningcss": ["lightningcss@1.33.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.33.0", "lightningcss-darwin-arm64": "1.33.0", "lightningcss-darwin-x64": "1.33.0", "lightningcss-freebsd-x64": "1.33.0", "lightningcss-linux-arm-gnueabihf": "1.33.0", "lightningcss-linux-arm64-gnu": "1.33.0", "lightningcss-linux-arm64-musl": "1.33.0", "lightningcss-linux-x64-gnu": "1.33.0", "lightningcss-linux-x64-musl": "1.33.0", "lightningcss-win32-arm64-msvc": "1.33.0", "lightningcss-win32-x64-msvc": "1.33.0" } }, "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA=="], - - "lightningcss-android-arm64": ["lightningcss-android-arm64@1.33.0", "", { "os": "android", "cpu": "arm64" }, "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg=="], - - "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.33.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg=="], - - "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.33.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ=="], - - "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.33.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg=="], - - "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.33.0", "", { "os": "linux", "cpu": "arm" }, "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ=="], - - "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.33.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg=="], - - "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.33.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ=="], - - "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.33.0", "", { "os": "linux", "cpu": "x64" }, "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg=="], - - "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.33.0", "", { "os": "linux", "cpu": "x64" }, "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw=="], - - "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.33.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA=="], - - "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.33.0", "", { "os": "win32", "cpu": "x64" }, "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA=="], - - "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], - - "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], - - "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="], - - "lossless-json": ["lossless-json@4.3.1", "", {}, "sha512-SqD/Bg3ZfltBJ2Z14hJ/BihnvtV553WO4g9/ePtlp4lrnl9jF3AdIJt53A/Wkg/0Li+LMfxaBqgx1MiFZdQlpQ=="], - - "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], - - "magic-string": ["magic-string@0.30.19", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw=="], - - "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - - "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], - - "minizlib": ["minizlib@3.1.0", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="], - - "motion": ["motion@12.23.22", "", { "dependencies": { "framer-motion": "^12.23.22", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-iSq6X9vLHbeYwmHvhK//+U74ROaPnZmBuy60XZzqNl0QtZkWfoZyMDHYnpKuWFv0sNMqHgED8aCXk94LCoQPGg=="], - - "motion-dom": ["motion-dom@12.23.21", "", { "dependencies": { "motion-utils": "^12.23.6" } }, "sha512-5xDXx/AbhrfgsQmSE7YESMn4Dpo6x5/DTZ4Iyy4xqDvVHWvFVoV+V2Ri2S/ksx+D40wrZ7gPYiMWshkdoqNgNQ=="], - - "motion-utils": ["motion-utils@12.23.6", "", {}, "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ=="], - - "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - - "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], - - "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], - - "node-releases": ["node-releases@2.0.57", "", {}, "sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw=="], - - "onnxruntime-common": ["onnxruntime-common@1.30.0", "", {}, "sha512-7fdVWjAID1dVhH/G8qK3APARunV4VkBFoCQAP7qp4Wkab0mrorvmc+sqiT+mKXOzDqdjN5j+/Z9nb4gzNPWcyA=="], - - "onnxruntime-web": ["onnxruntime-web@1.30.0", "", { "dependencies": { "flatbuffers": "^25.1.24", "guid-typescript": "^1.0.9", "long": "^5.2.3", "onnxruntime-common": "1.30.0", "platform": "^1.3.6", "protobufjs": "^7.2.4" } }, "sha512-q0y+JrrtukXSzsBWEMccVfqX25LRmosXHF+CaRJmg8pZClzcV7svNc4rKY3jL02Vb7QmRMDs1SigqR4CXAfKYQ=="], - - "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], - - "ox": ["ox@0.14.34", "", { "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", "@noble/curves": "1.9.1", "@noble/hashes": "^1.8.0", "@scure/bip32": "^1.7.0", "@scure/bip39": "^1.6.0", "abitype": "^1.2.3", "eventemitter3": "5.0.1" }, "peerDependencies": { "typescript": ">=5.4.0" }, "optionalPeers": ["typescript"] }, "sha512-12seOIk7dv8eAoGQhcWaeKZxNz304IVcDvb9U5Y7JZAEVe21Nm1YMxLjhWah+su5BD4Omx4Zz0z5x3ij9M4GYQ=="], - - "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], - - "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], - - "p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="], - - "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], - - "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], - - "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], - - "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - - "picomatch": ["picomatch@4.0.7", "", {}, "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="], - - "platform": ["platform@1.3.6", "", {}, "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="], - - "pngjs": ["pngjs@5.0.0", "", {}, "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="], - - "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], - - "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], - - "prettier": ["prettier@3.6.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ=="], - - "prettier-plugin-sort-imports-desc": ["prettier-plugin-sort-imports-desc@1.0.0", "", { "dependencies": { "prettier": "^2.5.1", "typescript": "^4.0.3" } }, "sha512-tvEeXpKu5JHYbqzsAP+EdjXgqdONTi5NhOtr2ke2br6wV39PQLRAbeHGxTe8/jhS7goXkHQKVl3XLjsKKxpe4A=="], - - "protobufjs": ["protobufjs@7.6.6", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.5", "@protobufjs/eventemitter": "^1.1.1", "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", "long": "^5.3.2" } }, "sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg=="], - - "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], - - "qrcode": ["qrcode@1.5.4", "", { "dependencies": { "dijkstrajs": "^1.0.1", "pngjs": "^5.0.0", "yargs": "^15.3.1" }, "bin": { "qrcode": "bin/qrcode" } }, "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg=="], - - "react": ["react@19.2.3", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="], - - "react-dom": ["react-dom@19.2.3", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.3" } }, "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg=="], - - "react-remove-scroll": ["react-remove-scroll@2.7.1", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA=="], - - "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], - - "react-router": ["react-router@7.18.4", "", { "dependencies": { "cookie": "^1.0.1", "set-cookie-parser": "^2.6.0" }, "peerDependencies": { "react": ">=18", "react-dom": ">=18" }, "optionalPeers": ["react-dom"] }, "sha512-PUPQcMhMGRAslLcvtlPz/kmzBEWPhLdgLFrL7pLNepBL6dX0lWj4WD2cUYVgYCuT3jxvghYFg81cDTj44DhetQ=="], - - "react-router-dom": ["react-router-dom@7.18.4", "", { "dependencies": { "react-router": "7.18.4" }, "peerDependencies": { "react": ">=18", "react-dom": ">=18" } }, "sha512-yrfmJHIpDG7taCpqKjT1G5B6q3O2K+RN8/fgNf0lTjCwiPbQ0ei6vXX9ZjQR+7ld8Tr7Z5xmyMnZ8YJrphWQUw=="], - - "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], - - "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], - - "require-main-filename": ["require-main-filename@2.0.0", "", {}, "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="], - - "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], - - "rolldown": ["rolldown@1.2.13", "", { "dependencies": { "@oxc-project/types": "=0.153.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm-eabi": "1.2.13", "@rolldown/binding-android-arm64": "1.2.13", "@rolldown/binding-darwin-arm64": "1.2.13", "@rolldown/binding-darwin-x64": "1.2.13", "@rolldown/binding-freebsd-x64": "1.2.13", "@rolldown/binding-linux-arm-gnueabihf": "1.2.13", "@rolldown/binding-linux-arm64-gnu": "1.2.13", "@rolldown/binding-linux-arm64-musl": "1.2.13", "@rolldown/binding-linux-ppc64-gnu": "1.2.13", "@rolldown/binding-linux-s390x-gnu": "1.2.13", "@rolldown/binding-linux-x64-gnu": "1.2.13", "@rolldown/binding-linux-x64-musl": "1.2.13", "@rolldown/binding-openharmony-arm64": "1.2.13", "@rolldown/binding-win32-arm64-msvc": "1.2.13", "@rolldown/binding-win32-x64-msvc": "1.2.13" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-/5apOkwWxtACcQtZ5WlrAsKS4JwXVThQPJZ3RqIruRY9UG9M8e0VlXN068xum/JRKA4aIUoJ13ghe/kGCvidiQ=="], - - "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], - - "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - - "set-blocking": ["set-blocking@2.0.0", "", {}, "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="], - - "set-cookie-parser": ["set-cookie-parser@2.7.2", "", {}, "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw=="], - - "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], - - "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], - - "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], - - "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - - "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - - "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], - - "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], - - "tailwind-merge": ["tailwind-merge@3.3.1", "", {}, "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g=="], - - "tailwindcss": ["tailwindcss@4.1.14", "", {}, "sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA=="], - - "tapable": ["tapable@2.2.3", "", {}, "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg=="], - - "tar": ["tar@7.5.1", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g=="], - - "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], - - "ts-api-utils": ["ts-api-utils@2.5.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA=="], - - "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], - - "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - - "typescript-eslint": ["typescript-eslint@8.71.1", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.71.1", "@typescript-eslint/parser": "8.71.1", "@typescript-eslint/typescript-estree": "8.71.1", "@typescript-eslint/utils": "8.71.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-oiNVPC3/NbV1FpaHU07l8O6ynqG9v4PAiW2WvTrAmZdR0f2HI/gE668ElMLCK7Xbsu5k2fK5C4fXNiq05j7/nQ=="], - - "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], - - "update-browserslist-db": ["update-browserslist-db@1.3.4", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A=="], - - "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], - - "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], - - "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], - - "viem": ["viem@2.56.0", "", { "dependencies": { "@noble/curves": "1.9.1", "@noble/hashes": "1.8.0", "@scure/bip32": "1.7.0", "@scure/bip39": "1.6.0", "abitype": "1.2.3", "isows": "1.0.7", "ox": "0.14.34", "ws": "8.21.0" }, "peerDependencies": { "typescript": ">=5.0.4" }, "optionalPeers": ["typescript"] }, "sha512-JmkgIk4jN+im4oguLxwPv19pwSaGH9kcGSq25Ilm55106ULBBMNR3eWKKA0wZoeyLPSHIiOwZ4sGceEYEIq7LA=="], - - "vite": ["vite@8.3.3", "", { "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.7", "postcss": "^8.5.28", "rolldown": "~1.2.11", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.7.1", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cTAldKPImjg6c+gk48U19POPn3GCBzZwpdsN8ZMEEcbpes+6/wvfqUd0C2y3qYY4wsj8PwgFwrZ/1jBPVttMSg=="], - - "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], - - "which-module": ["which-module@2.0.1", "", {}, "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="], - - "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], - - "wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], - - "ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="], - - "y18n": ["y18n@4.0.3", "", {}, "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="], - - "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], - - "yargs": ["yargs@15.4.1", "", { "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", "yargs-parser": "^18.1.2" } }, "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A=="], - - "yargs-parser": ["yargs-parser@18.1.3", "", { "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" } }, "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ=="], - - "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], - - "zod": ["zod@4.6.5", "", {}, "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q=="], - - "zod-validation-error": ["zod-validation-error@4.0.2", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="], - - "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], - - "@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], - - "@tailwindcss/node/lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.5.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.0.5", "", { "dependencies": { "@emnapi/core": "^1.5.0", "@emnapi/runtime": "^1.5.0", "@tybys/wasm-util": "^0.10.1" }, "bundled": true }, "sha512-TBr9Cf9onSAS2LQ2+QHx6XcC6h9+RIzJgbqG3++9TUZSH204AwEy5jg3BTQ0VATsyoGj4ee49tN/y6rvaOOtcg=="], - - "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], - - "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@typescript-eslint/eslint-plugin/@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], - - "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.12", "", {}, "sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg=="], - - "@typescript-eslint/typescript-estree/minimatch": ["minimatch@10.2.6", "", { "dependencies": { "brace-expansion": "^5.0.8" } }, "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A=="], - - "@typescript-eslint/typescript-estree/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], - - "@typescript-eslint/utils/@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.10.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg=="], - - "@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="], - - "lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], - - "prettier-plugin-sort-imports-desc/prettier": ["prettier@2.8.8", "", { "bin": { "prettier": "bin-prettier.js" } }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], - - "prettier-plugin-sort-imports-desc/typescript": ["typescript@4.9.5", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g=="], - - "vite/postcss": ["postcss@8.5.29", "", { "dependencies": { "nanoid": "^3.3.19", "picocolors": "^1.1.1", "source-map-js": "^1.2.2" } }, "sha512-49cGhUbXj8Qenv0iTMxA1cFBzxXoctpC9Ujd77t1WcbJIr6nF/eI7g/8MgxrYldFRuAXvja7xQRwavoW7kgrxQ=="], - - "yargs/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], - - "@tailwindcss/node/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="], - - "@tailwindcss/node/lightningcss/lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="], - - "@tailwindcss/node/lightningcss/lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="], - - "@tailwindcss/node/lightningcss/lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="], - - "@tailwindcss/node/lightningcss/lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="], - - "@tailwindcss/node/lightningcss/lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="], - - "@tailwindcss/node/lightningcss/lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="], - - "@tailwindcss/node/lightningcss/lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="], - - "@tailwindcss/node/lightningcss/lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="], - - "@tailwindcss/node/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core": ["@emnapi/core@1.5.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], - - "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@5.0.12", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ=="], - - "@typescript-eslint/utils/@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], - - "vite/postcss/nanoid": ["nanoid@3.3.20", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ=="], - - "vite/postcss/source-map-js": ["source-map-js@1.2.2", "", {}, "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw=="], - - "yargs/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/runtime/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@typescript-eslint/typescript-estree/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], - - "yargs/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "yargs/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], - } -} diff --git a/experiments/tee-demo/eslint.config.mjs b/experiments/tee-demo/eslint.config.mjs deleted file mode 100644 index feb812a..0000000 --- a/experiments/tee-demo/eslint.config.mjs +++ /dev/null @@ -1,31 +0,0 @@ -import js from '@eslint/js' -import globals from 'globals' -import tseslint from 'typescript-eslint' -import hooks from 'eslint-plugin-react-hooks' - -export default tseslint.config( - { - ignores: [ - 'node_modules/**', - '.next/**', - 'dist/**', - 'out/**', - 'build/**', - 'demo/**', - 'src/server/**/target/**', - '.codex-visualizations/**', - ], - }, - js.configs.recommended, - ...tseslint.configs.recommended, - { - files: ['**/*.{ts,tsx}'], - languageOptions: { globals: { ...globals.browser, ...globals.node, Bun: 'readonly' } }, - plugins: { 'react-hooks': hooks }, - rules: { - 'react-hooks/rules-of-hooks': 'error', - 'react-hooks/exhaustive-deps': 'warn', - '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], - }, - } -) diff --git a/experiments/tee-demo/index.html b/experiments/tee-demo/index.html deleted file mode 100644 index 089c0d8..0000000 --- a/experiments/tee-demo/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - World ID Authenticator - - -

      - } - /> - - - -) diff --git a/experiments/tee-demo/src/pages/SelfieDemoPage.tsx b/experiments/tee-demo/src/pages/SelfieDemoPage.tsx deleted file mode 100644 index 5b52c10..0000000 --- a/experiments/tee-demo/src/pages/SelfieDemoPage.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import { Link } from 'react-router-dom' -import { useEffect, useRef, useState } from 'react' -import { abortable } from '@/lib/staging-registration' -import SelfieCamera from '@/components/selfie-check/SelfieCamera' -import { useAuthenticatorSession } from '@/components/AuthenticatorSession' - -type Metadata = { embeddingType: string; version: string; inferenceBackend: string } - -export default function SelfieDemoPage() { - const { wallet, initialized, setInitialized } = useAuthenticatorSession() - const operation = useRef(null) - const [pending, setPending] = useState(false) - const [error, setError] = useState(null) - const [metadata, setMetadata] = useState(null) - const [progress, setProgress] = useState('Ready to capture.') - useEffect(() => () => operation.current?.abort(), []) - - async function extract(image: Uint8Array) { - const client = wallet.current - if (!client || !initialized || operation.current) return - const controller = new AbortController() - operation.current = controller - const signal = AbortSignal.any([controller.signal, AbortSignal.timeout(120000)]) - let extracting = false - const cancel = () => { - if (!extracting) return - // #604 has no per-extraction cancellation; release its worker and OPFS ownership. - client.terminate() - if (wallet.current === client) { - wallet.current = null - setInitialized(false) - } - } - signal.addEventListener('abort', cancel, { once: true }) - setPending(true) - setError(null) - setMetadata(null) - setProgress('Loading trusted staging release…') - try { - const response = await fetch('/api/selfie-enclave', { - signal: AbortSignal.any([signal, AbortSignal.timeout(5000)]), - cache: 'no-store', - }) - if (!response.ok) - throw new Error( - 'Staging is not configured. The backend needs the promoted release policy and admission key.' - ) - const config = await response.text() - if (config.length > 8192) throw new Error('Staging policy is too large.') - signal.throwIfAborted() - setProgress('Verifying enclave, encrypting the frame, and extracting…') - extracting = true - const result = await abortable(client.extractSelfieEmbedding(config, image), signal) - extracting = false - if (result.status !== 'success') throw new Error(`Extraction rejected: ${result.reason}`) - const { embeddingType, version, inferenceBackend } = result.embedding - // This demo deliberately retains neither the biometric vector nor the image. - result.embedding.vector = '' - setMetadata({ embeddingType, version, inferenceBackend }) - setProgress('Real enclave extraction succeeded. Downstream issuance is mocked.') - } catch (cause) { - if (!controller.signal.aborted) { - setError( - signal.aborted - ? 'Extraction timed out. Unlock your authenticator to retry.' - : cause instanceof Error && !extracting - ? cause.message - : 'Enclave extraction failed. Check the deployed version, release policy, and admission key.' - ) - setProgress('Extraction did not complete.') - } - } finally { - signal.removeEventListener('abort', cancel) - operation.current = null - if (!controller.signal.aborted) setPending(false) - } - } - - return ( -
      -
      -

      Staging Selfie Check

      - {initialized ? ( - <> -

      - Capture sends one encrypted frame to the verified staging enclave. Face positioning runs on - this device. -

      - - - ) : ( -

      Unlock your authenticator to open the camera.

      - )} -

      - {progress} -

      - {error && ( -

      - {error} -

      - )} - {metadata && ( -
      -

      Extraction result

      -
      -
      Embedding type
      -
      {metadata.embeddingType}
      -
      Embedding version
      -
      {metadata.version}
      -
      Inference backend
      -
      {metadata.inferenceBackend}
      -
      -

      Mock issuance preview

      -

      - issuer_assurance = 2 (web), mocked. Sybil score, match count, database size and PCP version - remain unavailable. No credential is signed or stored. -

      -
      - )} - - Back to authenticator - -
      -
      - ) -} diff --git a/experiments/tee-demo/src/server/face-enrollment-helper/Cargo.lock b/experiments/tee-demo/src/server/face-enrollment-helper/Cargo.lock deleted file mode 100644 index c9bbe93..0000000 --- a/experiments/tee-demo/src/server/face-enrollment-helper/Cargo.lock +++ /dev/null @@ -1,9727 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "ab_glyph" -version = "0.2.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" -dependencies = [ - "ab_glyph_rasterizer", - "owned_ttf_parser", -] - -[[package]] -name = "ab_glyph_rasterizer" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" - -[[package]] -name = "acir_field" -version = "1.0.0-beta.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "750990cd3514b93fbeacaa3e9e34cf1f61f02b340e3688d61a65992c64d8ee47" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "cfg-if", - "hex", - "num-bigint", - "serde", -] - -[[package]] -name = "addr2line" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[package]] -name = "aead" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" -dependencies = [ - "crypto-common 0.1.7", - "generic-array", -] - -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures 0.2.17", -] - -[[package]] -name = "aes-prng" -version = "0.2.1" -source = "git+https://github.com/tf-encrypted/aes-prng.git?branch=dragos%2Fdisplay#ebe79b1173ab6698c69d18dc464294f1893b44bb" -dependencies = [ - "aes", - "byteorder", - "rand 0.8.8", -] - -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" -dependencies = [ - "memchr", -] - -[[package]] -name = "aligned" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685" -dependencies = [ - "as-slice", -] - -[[package]] -name = "aligned-vec" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" -dependencies = [ - "equator", -] - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "alloy" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5a08ebfa51fdc243e0c6a662f5cf3428f04d1ad858e3fe77238cc78063eb86d" -dependencies = [ - "alloy-core", - "alloy-signer", - "alloy-signer-local", -] - -[[package]] -name = "alloy-consensus" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727016fed834c2392d014dd697ea473f3e47bcec31ba31ccffa9c1d18ed904e5" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-trie", - "alloy-tx-macros", - "auto_impl", - "borsh", - "c-kzg", - "derive_more", - "either", - "k256 0.13.4", - "once_cell", - "rand 0.8.8", - "secp256k1 0.30.0", - "serde", - "serde_json", - "serde_with", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-consensus-any" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea5ae60bbb3ce9dc52685a70a3755ad4432045fd38079b763cfe5127c706134" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-core" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6a70852055d66af821d28497e690c95950020ed1ee4c7a0ab9b02a01ac75ee3" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", -] - -[[package]] -name = "alloy-eip2124" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "crc", - "serde", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-eip2930" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64579d931b3f8eacc7c9ab0b220e87e9c4816e5c724ede1947b55c2f8e92ae5" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "borsh", - "serde", -] - -[[package]] -name = "alloy-eip7702" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "borsh", - "serde", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-eip7928" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a12e1dc70236cfb8e79b96dd8544aed47c39e2f45dc6b51c3703e969e052faa" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "borsh", - "once_cell", - "serde", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-eip8141" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36422c14bd57dcd638e276c8c9d7ac09eb16598e3a9dbd34e4b55267d4565b5e" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "borsh", - "serde", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-eips" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01905444bd2fc330673f11d2466c0f54e8488f7ce3132b6a5e6497916fca765" -dependencies = [ - "alloy-eip2124", - "alloy-eip2930", - "alloy-eip7702", - "alloy-eip7928", - "alloy-eip8141", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "auto_impl", - "borsh", - "c-kzg", - "derive_more", - "either", - "serde", - "serde_with", - "sha2 0.10.9", -] - -[[package]] -name = "alloy-json-abi" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "858acd7fdad1e4a7057fd9c1b39c1f2cd6bcd57ebf3c56e2853c02ead049e816" -dependencies = [ - "alloy-primitives", - "alloy-sol-type-parser", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-json-rpc" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff9cb760601d352d1e59aab5803c3fb6dc99824b6883f5c7a781aacd4b54c66" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", - "http", - "serde", - "serde_json", - "thiserror 2.0.21", - "tracing", -] - -[[package]] -name = "alloy-network" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e11dfba13dac9e54576bf41e1b7461491367e0bce6a2a4293b9e40ffa3ebd5e9" -dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-json-rpc", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-any", - "alloy-rpc-types-eth", - "alloy-serde", - "alloy-signer", - "alloy-sol-types", - "async-trait", - "auto_impl", - "derive_more", - "futures-utils-wasm", - "serde", - "serde_json", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-network-primitives" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3819bf6794d25f679d42c3f2b168e12cae08c56bb41d393cb6249b55e6d5933e" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-primitives" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5e9dbd49258ac3ab893a481d46be29b58be7f734dcac46cd80b6b13ee36566c" -dependencies = [ - "alloy-rlp", - "bytes", - "cfg-if", - "const-hex", - "derive_more", - "fixed-cache", - "foldhash 0.2.0", - "hashbrown 0.17.1", - "indexmap 2.14.2", - "itoa", - "k256 0.13.4", - "keccak-asm", - "paste", - "proptest", - "rand 0.9.5", - "rapidhash", - "ruint", - "rustc-hash", - "secp256k1 0.31.1", - "serde", - "sha3 0.11.0", -] - -[[package]] -name = "alloy-rlp" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24671b1f62edcf0f9b62994c7bf72cd621a04a4b99f5020ece1a647b40e2f103" -dependencies = [ - "alloy-rlp-derive", - "arrayvec", - "bytes", -] - -[[package]] -name = "alloy-rlp-derive" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d4311c03125e8a18296504560b9de3d75ecbd0dcda7f71e6cf2a196d57e6fba" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "alloy-rpc-types-any" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c5d320312e4a9481b18185429e57fa161dbf9468414ba5667aff4ebe7bd37e7" -dependencies = [ - "alloy-consensus-any", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-rpc-types-eth" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c475e21fe8a8caa02166b326ed22207a1a0597fc9b0dcdfb46e2fe6f80dadf" -dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-sol-types", - "alloy-trie", - "itertools 0.14.0", - "serde", - "serde_json", - "serde_with", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-serde" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f44f297d3b9e3ca2c3039e3c0ed69acde9b35edda15381cf78f725b7263fbe2" -dependencies = [ - "alloy-primitives", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-signer" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7de6fd34b5ba1789d482fa800dd97219b34765d6b07633a989a24d2dace770e" -dependencies = [ - "alloy-primitives", - "async-trait", - "auto_impl", - "either", - "elliptic-curve 0.13.8", - "k256 0.13.4", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-signer-local" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6909c09d586c7b55eced688754d57dde8a6bcbae2b83e69a9b9250e74cfd79e" -dependencies = [ - "alloy-consensus", - "alloy-network", - "alloy-primitives", - "alloy-signer", - "async-trait", - "k256 0.13.4", - "rand 0.8.8", - "thiserror 2.0.21", -] - -[[package]] -name = "alloy-sol-macro" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60dd79f578c3912f1fc2a150dbeb8110b8cfb976c60f98ebf6de9d5da5965a2b" -dependencies = [ - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "proc-macro-error3", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "alloy-sol-macro-expander" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edb8520f2f94275e1caa73c85207dcc78ec402a9a4c429240f9a0783a8f16c0" -dependencies = [ - "alloy-sol-macro-input", - "const-hex", - "heck", - "indexmap 2.14.2", - "proc-macro-error3", - "proc-macro2", - "quote", - "sha3 0.11.0", - "syn 2.0.119", - "syn-solidity", -] - -[[package]] -name = "alloy-sol-macro-input" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66af2d9344882172993be5f5cbfd349fdfa52cb548f7af8715b446fb35ef6001" -dependencies = [ - "const-hex", - "dunce", - "heck", - "macro-string", - "proc-macro2", - "quote", - "syn 2.0.119", - "syn-solidity", -] - -[[package]] -name = "alloy-sol-type-parser" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c2a8abc3334044013b23d5e438cc5dc802e5544cc42b713d0840d5185967cc" -dependencies = [ - "serde", - "winnow 1.0.4", -] - -[[package]] -name = "alloy-sol-types" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e6f87cf007caa54e95455875fbd25879b008d0d9c7c340a2c258b3a3400a28c" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-macro", - "serde", -] - -[[package]] -name = "alloy-trie" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94e3e0a88f8db47250ac8a95fb825d020719f833eb1dc661bd3609c3bbece7d" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "derive_more", - "nybbles", - "serde", - "smallvec 1.16.2", - "thiserror 2.0.21", - "tracing", -] - -[[package]] -name = "alloy-tx-macros" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60fa90c57738ace5b38106c9f743f3d6d47de09a82e82ecfc42702c1acf116ee" -dependencies = [ - "darling 0.23.0", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ampc-secret-sharing" -version = "0.1.0" -source = "git+https://github.com/worldcoin/ampc-common.git?rev=3062538f0307471ed0dd2be8258952c807747141#3062538f0307471ed0dd2be8258952c807747141" -dependencies = [ - "aes-prng", - "bytemuck", - "eyre", - "itertools 0.13.0", - "num-traits", - "rand 0.8.8", - "rand_distr", - "serde", -] - -[[package]] -name = "android_system_properties" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" -dependencies = [ - "libc", -] - -[[package]] -name = "anstream" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" - -[[package]] -name = "anstyle-parse" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" -dependencies = [ - "anstyle", - "once_cell_polyfill", - "windows-sys 0.61.2", -] - -[[package]] -name = "anyhow" -version = "1.0.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" - -[[package]] -name = "anymap2" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" - -[[package]] -name = "anymap3" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5dfbc6d8d2675589ccbe4d0fd61df2419075625f8c1a62325e718e2b0049f9" - -[[package]] -name = "approx" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" -dependencies = [ - "num-traits", -] - -[[package]] -name = "aquamarine" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" -dependencies = [ - "include_dir", - "itertools 0.10.5", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" -dependencies = [ - "derive_arbitrary", -] - -[[package]] -name = "arg_enum_proc_macro" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-bn254" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" -dependencies = [ - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-bn254" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bc66f96ebe2a17a499475b4f94791d379817592ef494171586967ffdc6f95db" -dependencies = [ - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-r1cs-std", - "ark-std 0.6.0", -] - -[[package]] -name = "ark-crypto-primitives" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0c292754729c8a190e50414fd1a37093c786c709899f29c9f7daccecfa855e" -dependencies = [ - "ahash", - "ark-crypto-primitives-macros", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-relations 0.5.1", - "ark-serialize 0.5.0", - "ark-snark 0.5.1", - "ark-std 0.5.0", - "blake2 0.10.6", - "derivative", - "digest 0.10.7", - "fnv", - "merlin", - "sha2 0.10.9", -] - -[[package]] -name = "ark-crypto-primitives" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b3409b1846fe459d19c95df039481575ac6d5842ae63858ad75cc31219bfc1" -dependencies = [ - "ahash", - "ark-crypto-primitives-macros", - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-r1cs-std", - "ark-relations 0.6.0", - "ark-serialize 0.6.0", - "ark-snark 0.6.0", - "ark-std 0.6.0", - "blake2 0.10.6", - "blake3", - "derivative", - "digest 0.10.7", - "fnv", - "merlin", - "num-bigint", - "rayon", - "sha2 0.10.9", -] - -[[package]] -name = "ark-crypto-primitives-macros" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-ec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-poly 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe", - "fnv", - "hashbrown 0.15.5", - "itertools 0.13.0", - "num-bigint", - "num-integer", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8352a2b2aedf6ba2cc38f7520fc51191d518dde96175c729af19f2d059f191c4" -dependencies = [ - "ahash", - "ark-ff 0.6.0", - "ark-poly 0.6.0", - "ark-serialize 0.6.0", - "ark-std 0.6.0", - "educe", - "fnv", - "hashbrown 0.17.1", - "itertools 0.14.0", - "num-bigint", - "num-integer", - "num-traits", - "rayon", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" -dependencies = [ - "ark-ff-asm 0.3.0", - "ark-ff-macros 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.3.3", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" -dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "digest 0.10.7", - "itertools 0.10.5", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.4.1", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" -dependencies = [ - "ark-ff-asm 0.5.0", - "ark-ff-macros 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "educe", - "itertools 0.13.0", - "num-bigint", - "num-traits", - "paste", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7a806ac6c8307b929df4645776290a50ee2aac754ad09d8bdf73391309e43af" -dependencies = [ - "ark-ff-asm 0.6.0", - "ark-ff-macros 0.6.0", - "ark-serialize 0.6.0", - "ark-std 0.6.0", - "digest 0.10.7", - "educe", - "num-bigint", - "num-traits", - "rayon", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" -dependencies = [ - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-ff-asm" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1479009684adc073dff49a1025d3a7065b317a9ead25aaaca38cdc70058ba8a2" -dependencies = [ - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-ff-macros" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" -dependencies = [ - "num-bigint", - "num-traits", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-ff-macros" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0691ed21ef00ef89c1e9bda832eba493dda3ec2f8d892fb25b705f73f06bb8" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-groth16" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88f1d0f3a534bb54188b8dcc104307db6c56cdae574ddc3212aec0625740fc7e" -dependencies = [ - "ark-crypto-primitives 0.5.0", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-poly 0.5.0", - "ark-relations 0.5.1", - "ark-serialize 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-groth16" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a293328aa422e65527e285614ce5d1dceb0bd7b8b18d18b1b63191ee1f74cb41" -dependencies = [ - "ark-crypto-primitives 0.6.0", - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-poly 0.6.0", - "ark-relations 0.6.0", - "ark-serialize 0.6.0", - "ark-snark 0.6.0", - "ark-std 0.6.0", - "rayon", -] - -[[package]] -name = "ark-poly" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe", - "fnv", - "hashbrown 0.15.5", -] - -[[package]] -name = "ark-poly" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f55af10b672002b8d953e230282c51206842e20e5791a94432219b4201de5c" -dependencies = [ - "ahash", - "ark-ff 0.6.0", - "ark-serialize 0.6.0", - "ark-std 0.6.0", - "educe", - "fnv", - "hashbrown 0.17.1", - "rayon", -] - -[[package]] -name = "ark-r1cs-std" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291f1c6628bfcac79b0dc2adbe401aa9100e2e96daa971645e0b18fc94de9a98" -dependencies = [ - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-relations 0.6.0", - "ark-std 0.6.0", - "educe", - "itertools 0.14.0", - "num-bigint", - "num-integer", - "num-traits", - "tracing", -] - -[[package]] -name = "ark-relations" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" -dependencies = [ - "ark-ff 0.5.0", - "ark-std 0.5.0", - "tracing", -] - -[[package]] -name = "ark-relations" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4c11c797a64b8a23e22bf4e77bf582ac27bb21395e3183a9a506ba2561e9f9" -dependencies = [ - "ark-ff 0.6.0", - "ark-poly 0.6.0", - "ark-serialize 0.6.0", - "ark-std 0.6.0", - "foldhash 0.1.5", - "indexmap 2.14.2", - "rayon", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" -dependencies = [ - "ark-std 0.3.0", - "digest 0.9.0", -] - -[[package]] -name = "ark-serialize" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" -dependencies = [ - "ark-std 0.4.0", - "digest 0.10.7", - "num-bigint", -] - -[[package]] -name = "ark-serialize" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" -dependencies = [ - "ark-serialize-derive 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "num-bigint", -] - -[[package]] -name = "ark-serialize" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a74dd304fd536fb95d0a328e72be759209cc496a9da094c5bc56e5fea4f9e86b" -dependencies = [ - "ark-serialize-derive 0.6.0", - "ark-std 0.6.0", - "digest 0.10.7", - "num-bigint", - "rayon", - "serde_with", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f153690697a2b91e5e1251ff98411ee5371500a111a0fd317a70e588eb300f9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ark-snark" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d368e2848c2d4c129ce7679a7d0d2d612b6a274d3ea6a13bad4445d61b381b88" -dependencies = [ - "ark-ff 0.5.0", - "ark-relations 0.5.1", - "ark-serialize 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-snark" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bdb461d2be9b2bd6f303c79fffc89f5858790a7b4d33257bca3178e2c071fb9" -dependencies = [ - "ark-ff 0.6.0", - "ark-relations 0.6.0", - "ark-serialize 0.6.0", - "ark-std 0.6.0", -] - -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand 0.8.8", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand 0.8.8", -] - -[[package]] -name = "ark-std" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" -dependencies = [ - "num-traits", - "rand 0.8.8", -] - -[[package]] -name = "ark-std" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "367c9c827ed431bff6868b7aa926e05b16eb46603cc8b6e768e4a5553fa1d155" -dependencies = [ - "num-traits", - "rand 0.8.8", - "rayon", -] - -[[package]] -name = "arrayref" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" - -[[package]] -name = "arrayvec" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -dependencies = [ - "serde", - "zeroize", -] - -[[package]] -name = "as-slice" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" -dependencies = [ - "stable_deref_trait", -] - -[[package]] -name = "askama" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6024d73179f43f15ccd2b881bfea6fee7f3a46ec53f33b52210dea749ebebaa4" -dependencies = [ - "askama_macros", - "itoa", - "percent-encoding", - "serde", - "serde_json", -] - -[[package]] -name = "askama_derive" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071ee5ebf2138e3ad180e0aacf6940c2cab5e6d8333741d9925c7bee2b153f39" -dependencies = [ - "askama_parser", - "basic-toml", - "glob", - "memchr", - "proc-macro2", - "quote", - "rustc-hash", - "serde", - "serde_derive", - "syn 3.0.6", -] - -[[package]] -name = "askama_macros" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643e1c7cbb6aec1d920332fe51a7c0d8219e273dcb8602db03f5263e4d16487b" -dependencies = [ - "askama_derive", -] - -[[package]] -name = "askama_parser" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c5ae75772275d268b03ab8bdccdd12117b6169ee23256942b34e46c9f476583" -dependencies = [ - "rustc-hash", - "serde", - "serde_derive", - "unicode-ident", - "winnow 1.0.4", -] - -[[package]] -name = "async-compat" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c97d7ff3c25d6c10d64170c12acaf5d4245e76dece3779c1d92b153a64f11df" -dependencies = [ - "futures-core", - "futures-io", - "once_cell", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "async-lock" -version = "3.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" -dependencies = [ - "event-listener", - "event-listener-strategy", - "pin-project-lite", -] - -[[package]] -name = "async-trait" -version = "0.1.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "atomic-polyfill" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" -dependencies = [ - "critical-section", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "attestation-gateway-types" -version = "0.1.0" -source = "git+https://github.com/worldcoin/attestation-gateway?rev=f5d1f53#f5d1f53db6d1158b82c62dc02348c0e314d0b6ce" -dependencies = [ - "hex", - "http", - "serde", - "sha2 0.10.9", - "thiserror 2.0.21", -] - -[[package]] -name = "auto_impl" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "autocfg" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" - -[[package]] -name = "av-scenechange" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394" -dependencies = [ - "aligned", - "anyhow", - "arg_enum_proc_macro", - "arrayvec", - "log", - "num-rational", - "num-traits", - "pastey", - "rayon", - "thiserror 2.0.21", - "v_frame", - "y4m", -] - -[[package]] -name = "av1-grain" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8" -dependencies = [ - "anyhow", - "arrayvec", - "log", - "nom 8.0.0", - "num-rational", - "v_frame", -] - -[[package]] -name = "avif-serialize" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7178fe5f7d460b13895ebb9dcb28a3a6216d2df2574a0806cb51b555d297f38" -dependencies = [ - "arrayvec", -] - -[[package]] -name = "axum" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" -dependencies = [ - "axum-core", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "serde_core", - "sync_wrapper", - "tower", - "tower-layer", - "tower-service", -] - -[[package]] -name = "axum-core" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "sync_wrapper", - "tower-layer", - "tower-service", -] - -[[package]] -name = "backtrace" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide 0.8.9", - "object", - "rustc-demangle", - "windows-link", -] - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base16ct" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "base64" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" - -[[package]] -name = "base64ct" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" - -[[package]] -name = "basic-toml" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a" -dependencies = [ - "serde", -] - -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - -[[package]] -name = "bit_field" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" - -[[package]] -name = "bitcoin-consensus-encoding" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9daa31138eb443d5751b207f3f64154e2bb09cd59960562ccc7a7112be38147f" -dependencies = [ - "bitcoin-internals", - "hex-conservative 1.3.0", - "serde", -] - -[[package]] -name = "bitcoin-internals" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8bea3a9f0cfece4564e37cb49a38cc245ca5184719e50d7d0dda3268722c4e2" - -[[package]] -name = "bitcoin-io" -version = "0.1.101" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb5de036369d1ac59d3c1819ebc4d850f89466f5401c571a285b6ed564a4cb78" -dependencies = [ - "bitcoin-consensus-encoding", -] - -[[package]] -name = "bitcoin_hashes" -version = "0.14.101" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca4c7abb40c8817d77403c880988cfd484f23ab2365726afb2f798363e2c4a2" -dependencies = [ - "bitcoin-io", - "hex-conservative 0.2.3", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06" - -[[package]] -name = "bitstream-io" -version = "4.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f" -dependencies = [ - "no_std_io2", -] - -[[package]] -name = "bitvec" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddcec3d12c579d40898fe0a9a358a803c23e9c52ca3c425707f81c9436211837" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "blake2" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "blake2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b5d4d889834ee8ecfc0f8426ad30faf7cdcb10f741a8e6d7224d95325479f6f" -dependencies = [ - "digest 0.11.3", -] - -[[package]] -name = "blake3" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if", - "constant_time_eq", - "cpufeatures 0.2.17", - "digest 0.10.7", - "zeroize", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "block-buffer" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" -dependencies = [ - "hybrid-array", -] - -[[package]] -name = "block-padding" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" -dependencies = [ - "generic-array", -] - -[[package]] -name = "blst" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20659f9bbee16cbbd2f7393e40ab6309f5a98f76a2eb57a995ec508b72387fe" -dependencies = [ - "cc", - "glob", - "threadpool", - "zeroize", -] - -[[package]] -name = "borsh" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "553c5d846a6ba5150c65e3b1b8ec073bcf1abc20f9b7220de384a4443ea4e20a" -dependencies = [ - "borsh-derive", - "bytes", - "cfg_aliases", -] - -[[package]] -name = "borsh-derive" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cdfe656708a01f89b451a7d36466e6fe6c414de0aa18fc54f864f6f9ca9f56" -dependencies = [ - "once_cell", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "brillig" -version = "1.0.0-beta.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f985dfdc4f40039725ee3032e235900797db5987a99e1f8adbc5a449a67ef22" -dependencies = [ - "acir_field", - "itertools 0.14.0", - "serde", -] - -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "built" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c0e531d93d39c34eef561e929e8a7f86d77a5af08aac4f6d6e39976c51858e9" - -[[package]] -name = "bumpalo" -version = "3.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" - -[[package]] -name = "by_address" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" - -[[package]] -name = "byte-slice-cast" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" - -[[package]] -name = "bytemuck" -version = "1.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a1f896587b6f2c069c73d2f0913e2d590c3990285cd2f0b6aa02b786b4c679c" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "byteorder-lite" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" - -[[package]] -name = "bytes" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" -dependencies = [ - "serde", -] - -[[package]] -name = "c-kzg" -version = "2.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d04308254695569fdb9bfe3bacc1c91837a670d0806605eb82d63748fbd3a6" -dependencies = [ - "blst", - "cc", - "glob", - "hex", - "libc", - "once_cell", - "serde", -] - -[[package]] -name = "camino" -version = "1.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbad30e4b4c14a39e3cc8aed085a12a327257c316619c93581e017bc52be591" -dependencies = [ - "serde_core", -] - -[[package]] -name = "cargo-platform" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0061da739915fae12ea00e16397555ed4371a6bb285431aab930f61b0aa4ba" -dependencies = [ - "serde", - "serde_core", -] - -[[package]] -name = "cargo_metadata" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9" -dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.28", - "serde", - "serde_json", - "thiserror 2.0.21", -] - -[[package]] -name = "cbc" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" -dependencies = [ - "cipher", -] - -[[package]] -name = "cc" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f360145194ee8e21db5ee7f3fcd4fe52210864c75c985dae33218202c8bbe040" -dependencies = [ - "find-msvc-tools", - "jobserver", - "libc", - "shlex 2.0.1", -] - -[[package]] -name = "cfg-if" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" - -[[package]] -name = "cfg_aliases" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" - -[[package]] -name = "chacha20" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures 0.2.17", -] - -[[package]] -name = "chacha20" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" -dependencies = [ - "cfg-if", - "cpufeatures 0.3.1", - "rand_core 0.10.1", -] - -[[package]] -name = "chrono" -version = "0.4.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" -dependencies = [ - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-link", -] - -[[package]] -name = "ciborium" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" - -[[package]] -name = "ciborium-ll" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" -dependencies = [ - "ciborium-io", - "half", -] - -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common 0.1.7", - "inout", - "zeroize", -] - -[[package]] -name = "clang" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ed30b30e1e17966b55ddd0b9dd2758fd824f0a6da6875c8abb17e6aba47c28" -dependencies = [ - "clang-sys", - "libc", -] - -[[package]] -name = "clang-sys" -version = "1.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a" -dependencies = [ - "glob", - "libc", - "libloading", -] - -[[package]] -name = "clap" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "clap_lex" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486" - -[[package]] -name = "cmov" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" - -[[package]] -name = "cobs" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" -dependencies = [ - "thiserror 2.0.21", -] - -[[package]] -name = "codespan" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583f52b0658b321b25fd6b209b6c76cf058f433071297de64e5980c3d9aad937" -dependencies = [ - "codespan-reporting", - "serde", -] - -[[package]] -name = "codespan-reporting" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681" -dependencies = [ - "serde", - "termcolor", - "unicode-width", -] - -[[package]] -name = "color-eyre" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d" -dependencies = [ - "backtrace", - "color-spantrace", - "eyre", - "indenter", - "once_cell", - "owo-colors", - "tracing-error", -] - -[[package]] -name = "color-spantrace" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427" -dependencies = [ - "once_cell", - "owo-colors", - "tracing-core", - "tracing-error", -] - -[[package]] -name = "colorchoice" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" - -[[package]] -name = "colorutils-rs" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2fc25857fa523662de5cae84225b0e7bfb24a2a3f9ed8802fecf03df7252b1" -dependencies = [ - "erydanos", - "half", - "num-traits", - "rayon", -] - -[[package]] -name = "combine" -version = "4.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfc320937d09e6de266b31b9afb480f197d7a861be86be7cb2ea7e5d1bfffc5e" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "const-hex" -version = "1.19.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e59eef12462b0f9b0a3620219be5d639afd79fe39dff0a42c3997061f9298b4" -dependencies = [ - "cfg-if", - "cpufeatures 0.2.17", - "proptest", - "serde_core", -] - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "const-oid" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" - -[[package]] -name = "const_format" -version = "0.2.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4481a617ad9a412be3b97c5d403fef8ed023103368908b9c50af598ff467cc1e" -dependencies = [ - "const_format_proc_macros", - "konst", -] - -[[package]] -name = "const_format_proc_macros" -version = "0.2.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "constant_time_eq" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" - -[[package]] -name = "convert_case" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "core-foundation" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cpubits" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "cpufeatures" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" -dependencies = [ - "libc", -] - -[[package]] -name = "crc" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853" - -[[package]] -name = "crc32fast" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a7799fd6b852db0e61728dde9a204c423b44d689dbd432522543614b490e78" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "critical-section" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" - -[[package]] -name = "crossbeam-deque" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622f3fc73690be383c7214310406f28a90e6edeadc3cea882f9d71e495b9711a" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc74980687109a3b14c72fd458107bf0baa1da1a1a805e178d15501ba9b86d9d" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6" - -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-bigint" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" -dependencies = [ - "cpubits", - "ctutils", - "getrandom 0.4.3", - "hybrid-array", - "num-traits", - "rand_core 0.10.1", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", -] - -[[package]] -name = "crypto-common" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" -dependencies = [ - "getrandom 0.4.3", - "hybrid-array", - "rand_core 0.10.1", -] - -[[package]] -name = "crypto_box" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16182b4f39a82ec8a6851155cc4c0cda3065bb1db33651726a29e1951de0f009" -dependencies = [ - "aead", - "blake2 0.10.6", - "crypto_secretbox", - "curve25519-dalek", - "salsa20", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto_secretbox" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d6cf87adf719ddf43a805e92c6870a531aedda35ff640442cbaf8674e141e1" -dependencies = [ - "aead", - "cipher", - "generic-array", - "poly1305", - "salsa20", - "subtle", - "zeroize", -] - -[[package]] -name = "ctutils" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" -dependencies = [ - "cmov", - "subtle", -] - -[[package]] -name = "curve25519-dalek" -version = "4.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" -dependencies = [ - "cfg-if", - "cpufeatures 0.2.17", - "curve25519-dalek-derive", - "fiat-crypto", - "rustc_version 0.4.1", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "cxx-build" -version = "1.0.202" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fde53ca86b9704a943fef0f1e1d836239a6aedca5de3c65fa9f97ec0bd46d39" -dependencies = [ - "cc", - "codespan-reporting", - "indexmap 2.14.2", - "proc-macro2", - "quote", - "scratch", - "syn 3.0.6", -] - -[[package]] -name = "darling" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" -dependencies = [ - "darling_core 0.23.0", - "darling_macro 0.23.0", -] - -[[package]] -name = "darling" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed17f5901b6630b993ca003def43f2f8ef4014fc13b047b57aad617ff32bc2ec" -dependencies = [ - "darling_core 0.24.1", - "darling_macro 0.24.1", -] - -[[package]] -name = "darling_core" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" -dependencies = [ - "ident_case", - "proc-macro2", - "quote", - "serde", - "strsim", - "syn 2.0.119", -] - -[[package]] -name = "darling_core" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6837e2cf7485aaae18f86181d2f0e9a7ed297a025e220aeabf63fdebd3a2ddff" -dependencies = [ - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 3.0.6", -] - -[[package]] -name = "darling_macro" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" -dependencies = [ - "darling_core 0.23.0", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "darling_macro" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ac7135c3ef02b2f7833bbeb1be5ba7f966dcde8a87c6b87f65a778d71a02785" -dependencies = [ - "darling_core 0.24.1", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "data-encoding" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06" - -[[package]] -name = "deep_learning_backends" -version = "0.1.0" -source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" -dependencies = [ - "flexi_logger", - "image", - "log", - "ndarray", - "ndarray-stats", - "num-traits", - "ort", - "ort-tract", - "serde", - "thiserror 1.0.69", - "tracing", -] - -[[package]] -name = "defmt" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" -dependencies = [ - "bitflags 1.3.2", - "defmt-macros", -] - -[[package]] -name = "defmt-macros" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" -dependencies = [ - "defmt-parser", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "defmt-parser" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" -dependencies = [ - "thiserror 2.0.21", -] - -[[package]] -name = "der" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" -dependencies = [ - "const-oid 0.9.6", - "pem-rfc7468 0.7.0", - "zeroize", -] - -[[package]] -name = "der" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a878c850e9e421b20262e9b41f9c860e4785fa07541c266b62ff9d1ef998a80a" -dependencies = [ - "const-oid 0.10.2", - "pem-rfc7468 1.0.0", - "zeroize", -] - -[[package]] -name = "deranged" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" -dependencies = [ - "serde_core", -] - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "derive-new" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3418329ca0ad70234b9735dc4ceed10af4df60eff9c8e7b06cb5e520d92c3535" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "derive-where" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e2b94854e8576378ccda7c8de8a66ed8b4e8acbd2c50ec3418ea6c8aaf4b567" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "derive_arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "derive_more" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version 0.4.1", - "syn 2.0.119", - "unicode-xid", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer 0.10.4", - "const-oid 0.9.6", - "crypto-common 0.1.7", - "subtle", -] - -[[package]] -name = "digest" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" -dependencies = [ - "block-buffer 0.12.1", - "const-oid 0.10.2", - "crypto-common 0.2.2", - "ctutils", -] - -[[package]] -name = "displaydoc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "doc-comment" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9" - -[[package]] -name = "document-features" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" -dependencies = [ - "litrs", -] - -[[package]] -name = "downcast-rs" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" - -[[package]] -name = "dryoc" -version = "0.6.2" -source = "git+https://github.com/brndnmtthws/dryoc?rev=e0e0ef0#e0e0ef0e77c483eabcc266bd06ff058fd330de92" -dependencies = [ - "bitflags 2.13.2", - "chacha20 0.9.1", - "curve25519-dalek", - "generic-array", - "lazy_static", - "libc", - "rand_core 0.6.4", - "salsa20", - "sha2 0.10.9", - "subtle", - "winapi", - "zeroize", -] - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "dyn-hash" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15401da73a9ed8c80e3b2d4dc05fe10e7b72d7243b9f614e516a44fa99986e88" - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der 0.7.10", - "digest 0.10.7", - "elliptic-curve 0.13.8", - "rfc6979 0.4.0", - "serdect 0.2.0", - "signature 2.2.0", - "spki 0.7.3", -] - -[[package]] -name = "ecdsa" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" -dependencies = [ - "der 0.8.2", - "digest 0.11.3", - "elliptic-curve 0.14.1", - "rfc6979 0.6.0", - "signature 3.0.0", - "spki 0.8.0", - "zeroize", -] - -[[package]] -name = "educe" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" -dependencies = [ - "enum-ordinalize", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "either" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34" -dependencies = [ - "serde", -] - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct 0.2.0", - "crypto-bigint 0.5.5", - "digest 0.10.7", - "ff 0.13.1", - "generic-array", - "group 0.13.0", - "pem-rfc7468 0.7.0", - "pkcs8 0.10.2", - "rand_core 0.6.4", - "sec1 0.7.3", - "serdect 0.2.0", - "subtle", - "zeroize", -] - -[[package]] -name = "elliptic-curve" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" -dependencies = [ - "base16ct 1.0.0", - "crypto-bigint 0.7.5", - "crypto-common 0.2.2", - "digest 0.11.3", - "ff 0.14.0", - "group 0.14.0", - "hybrid-array", - "pem-rfc7468 1.0.0", - "pkcs8 0.11.0", - "rand_core 0.10.1", - "sec1 0.8.1", - "subtle", - "zeroize", -] - -[[package]] -name = "embed-doc-image" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af36f591236d9d822425cb6896595658fa558fcebf5ee8accac1d4b92c47166e" -dependencies = [ - "base64 0.13.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "embedded-io" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" - -[[package]] -name = "embedded-io" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" - -[[package]] -name = "enum-as-inner" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "enum-ordinalize" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89dd01549b09589510cf0647475075d12071456586d70f5c75c98ae2a5537677" -dependencies = [ - "enum-ordinalize-derive", -] - -[[package]] -name = "enum-ordinalize-derive" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a65863d15a4ce2888bd2f0f543cc963d3879c3a022c8ee43f6141d479a3ac815" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "equator" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" -dependencies = [ - "equator-macro", -] - -[[package]] -name = "equator-macro" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "erydanos" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cbdc4987ed8e9ece64845393c2d53596b3a4ccbfb3948d799d58f6450e89fb1" -dependencies = [ - "num-traits", -] - -[[package]] -name = "event-listener" -version = "5.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2" -dependencies = [ - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener", - "pin-project-lite", -] - -[[package]] -name = "exr" -version = "1.74.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711fe42c9964295e01ee3fba3f9fe0e1d24b98886950d68efe81b1c76e21adf3" -dependencies = [ - "bit_field", - "half", - "lebe", - "miniz_oxide 0.8.9", - "num-complex", - "pulp", - "rayon-core", - "smallvec 1.16.2", - "zune-inflate", -] - -[[package]] -name = "eyre" -version = "0.6.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08309dbcc659c5549a24ddb9b27027640641b282ef5768267c7e675558986a3" -dependencies = [ - "autocfg", - "indenter", - "once_cell", -] - -[[package]] -name = "face-engine" -version = "2.20.0" -source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" -dependencies = [ - "approx", - "aquamarine", - "async-lock", - "cfg-if", - "deep_learning_backends", - "fast_image_resize", - "flexi_logger", - "graph", - "image", - "imageproc", - "inventory", - "itertools 0.13.0", - "log", - "nalgebra", - "ndarray", - "ndarray-stats", - "num-traits", - "schemars 0.8.22", - "serde", - "serde_json", - "serde_with", - "serde_yaml", - "thiserror 1.0.69", - "tracing", - "uniffi", - "utils", - "utils_macros", -] - -[[package]] -name = "fast_image_resize" -version = "5.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc7fe45cf92b43817ff62a3723e862b85bd1d06288f63007f7645d1d2f7a060" -dependencies = [ - "bytemuck", - "cfg-if", - "document-features", - "image", - "num-traits", - "rayon", - "thiserror 2.0.21", -] - -[[package]] -name = "fastrand" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" - -[[package]] -name = "fastrlp" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "fastrlp" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "fdeflate" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "ff" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "ff" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" -dependencies = [ - "rand_core 0.10.1", - "subtle", -] - -[[package]] -name = "fiat-crypto" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" - -[[package]] -name = "filetime" -version = "0.2.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759" -dependencies = [ - "cfg-if", - "libc", -] - -[[package]] -name = "find-msvc-tools" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484" - -[[package]] -name = "fixed-cache" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fe63500644ef0269fe6b744e7e5dc5c20b5eebf3d881bc2be53f194636f6583" -dependencies = [ - "equivalent", - "rapidhash", -] - -[[package]] -name = "fixed-hash" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "byteorder", - "rand 0.8.8", - "rustc-hex", - "static_assertions", -] - -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - -[[package]] -name = "flate2" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb" -dependencies = [ - "crc32fast", - "miniz_oxide 0.9.1", - "zlib-rs", -] - -[[package]] -name = "flexi_logger" -version = "0.28.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cca927478b3747ba47f98af6ba0ac0daea4f12d12f55e9104071b3dc00276310" -dependencies = [ - "chrono", - "glob", - "log", - "nu-ansi-term", - "thiserror 1.0.69", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foldhash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "fs-err" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91aa448ca50d7e79433bdf3ee8d99215430d2ec02ade5aefab2a073a1822e8a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" - -[[package]] -name = "futures-executor" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" - -[[package]] -name = "futures-macro" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "futures-sink" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" - -[[package]] -name = "futures-task" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" - -[[package]] -name = "futures-util" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "slab", -] - -[[package]] -name = "futures-utils-wasm" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "r-efi 5.3.0", - "wasip2", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "r-efi 6.0.0", - "rand_core 0.10.1", - "wasm-bindgen", -] - -[[package]] -name = "gimli" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" - -[[package]] -name = "glob" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" - -[[package]] -name = "goblin" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" -dependencies = [ - "log", - "plain", - "scroll", -] - -[[package]] -name = "graph" -version = "0.1.0" -source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" -dependencies = [ - "graph_macros", - "inventory", - "log", - "schemars 0.8.22", - "serde", - "serde_with", - "serde_yaml", - "thiserror 1.0.69", - "tracing", -] - -[[package]] -name = "graph_macros" -version = "0.1.0" -source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" -dependencies = [ - "inventory", - "once_cell", - "proc-macro2", - "quote", - "serde", - "serde_yaml", - "syn 2.0.119", -] - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff 0.13.1", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "group" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" -dependencies = [ - "ff 0.14.0", - "rand_core 0.10.1", - "subtle", -] - -[[package]] -name = "h2" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8e5e5a340588f4452631496976cf8636d4a7ecf600239fdc27615d2530bc16" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http", - "indexmap 2.14.2", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "half" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" -dependencies = [ - "cfg-if", - "crunchy", - "num-traits", - "zerocopy", -] - -[[package]] -name = "hash32" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", -] - -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "allocator-api2", - "foldhash 0.1.5", -] - -[[package]] -name = "hashbrown" -version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" -dependencies = [ - "allocator-api2", - "foldhash 0.2.0", - "serde", - "serde_core", -] - -[[package]] -name = "heapless" -version = "0.7.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" -dependencies = [ - "atomic-polyfill", - "hash32", - "rustc_version 0.4.1", - "serde", - "spin 0.9.9", - "stable_deref_trait", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17592d60ebacc7d5e169f4663c5f84f9161cc90328abcfe8456f41e4dfcb284" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hex-conservative" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3fef046dca3ca91ee1408a8c1b80ab777e80a4d308d1bf4e7adb3fcb047e08" -dependencies = [ - "arrayvec", -] - -[[package]] -name = "hex-conservative" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271e0d19bcb473b6675739a2b536076b24a082316cb5199ad918edce10c599e8" -dependencies = [ - "arrayvec", -] - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - -[[package]] -name = "histogram_equalization" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cba4fb49502d10e699c8907af302e4ecdd930773a1cd63a9fce6a9ab8223d93" -dependencies = [ - "colorutils-rs", - "num-traits", - "rayon", - "yuv", -] - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "hmac" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" -dependencies = [ - "digest 0.11.3", -] - -[[package]] -name = "http" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" -dependencies = [ - "bytes", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "hybrid-array" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27f864f10dfb56725ce5ce5472bc52252c8f93a4ab86327122cebf62c5f59a17" -dependencies = [ - "subtle", - "typenum", - "zeroize", -] - -[[package]] -name = "hyper" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b501faa50e7a26c3d3560ca625132f4078a17771f4810baf70475ae48cbe43" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "smallvec 1.16.2", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa8e654703247911e29c23fbeaa261834bd9bb74efba2f9acddc37bfb127f53" -dependencies = [ - "http", - "hyper", - "hyper-util", - "rustls", - "tokio", - "tokio-rustls", - "tower-service", - "webpki-roots", -] - -[[package]] -name = "hyper-timeout" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" -dependencies = [ - "hyper", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc03d96684f9226b8a787cdb71488417b53ab5ea8fdb1dac946cb9431cc8bff" -dependencies = [ - "base64 0.23.1", - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "httparse", - "hyper", - "ipnet", - "libc", - "percent-encoding", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" -dependencies = [ - "displaydoc", - "potential_utf", - "utf8_iter", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec 1.16.2", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" - -[[package]] -name = "icu_properties" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" - -[[package]] -name = "icu_provider" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec 1.16.2", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "ignition" -version = "1.0.0" -source = "git+https://github.com/diego-a-orellana/ignition.git?branch=main#2693b9aa50ac7f94939809076926f76539775845" -dependencies = [ - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "image" -version = "0.25.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" -dependencies = [ - "bytemuck", - "byteorder-lite", - "exr", - "moxcms", - "num-traits", - "png", - "ravif", - "rayon", - "zune-core", - "zune-jpeg", -] - -[[package]] -name = "imageproc" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602b4e8a4cc3e98372b766cd184ab532999bc0e839b7469e759511ccabc65d77" -dependencies = [ - "ab_glyph", - "approx", - "getrandom 0.2.17", - "image", - "itertools 0.12.1", - "nalgebra", - "num", - "rand 0.8.8", - "rand_distr", - "rayon", -] - -[[package]] -name = "imgref" -version = "1.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e44b0a4eaa4c82f441d50a963f2d5f05a787240aeee097597033e72accfd22f" - -[[package]] -name = "impl-codec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "include_dir" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" -dependencies = [ - "include_dir_macros", -] - -[[package]] -name = "include_dir_macros" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "indenter" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855" -dependencies = [ - "equivalent", - "hashbrown 0.17.1", - "serde", - "serde_core", -] - -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "block-padding", - "generic-array", -] - -[[package]] -name = "interpolate_name" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "inventory" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" -dependencies = [ - "rustversion", -] - -[[package]] -name = "ipnet" -version = "2.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791930b43c0d5973160d90a8f3894509f2b273430f5c5c73b668636d0287c5c0" - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" - -[[package]] -name = "jiff" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1baf72f08796de0260609515130699b890ac25f30e610ad894bc5856cafdb" -dependencies = [ - "defmt", - "jiff-core", - "jiff-static", - "jiff-tzdb-platform", - "log", - "portable-atomic", - "portable-atomic-util", - "serde_core", - "windows-link", -] - -[[package]] -name = "jiff-core" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e52fe76043ccecc9005d2305ebaadf7d7fc0cc89ca6baa10a94d6bc68c7128c" -dependencies = [ - "defmt", - "log", -] - -[[package]] -name = "jiff-static" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "378268a1116ad67ae6228701118ac9f491d78fda38a40a1f1a9e1348de6f7212" -dependencies = [ - "jiff-core", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "jiff-tzdb" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e" - -[[package]] -name = "jiff-tzdb-platform" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" -dependencies = [ - "jiff-tzdb", -] - -[[package]] -name = "jobserver" -version = "0.1.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" -dependencies = [ - "getrandom 0.4.3", - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5" -dependencies = [ - "cfg-if", - "futures-util", - "wasm-bindgen", -] - -[[package]] -name = "k256" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" -dependencies = [ - "cfg-if", - "ecdsa 0.16.9", - "elliptic-curve 0.13.8", - "once_cell", - "serdect 0.2.0", - "sha2 0.10.9", -] - -[[package]] -name = "k256" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" -dependencies = [ - "cpubits", - "ecdsa 0.17.0", - "elliptic-curve 0.14.1", - "primeorder 0.14.0", - "sha2 0.11.0", - "signature 3.0.0", - "wnaf", -] - -[[package]] -name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "keccak" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f198d1db720e4940b5a493201d199d9f24f568f8f746bd13706243a2f71598" -dependencies = [ - "cfg-if", - "cpufeatures 0.3.1", -] - -[[package]] -name = "keccak-asm" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f32890f646914a263e39064295005972f0e95b928254061b2aca98445f304ee9" -dependencies = [ - "cfg-if", - "digest 0.10.7", - "sha3-asm", -] - -[[package]] -name = "konst" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128133ed7824fcd73d6e7b17957c5eb7bacb885649bd8c69708b2331a10bcefb" -dependencies = [ - "konst_macro_rules", -] - -[[package]] -name = "konst_macro_rules" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" - -[[package]] -name = "kstring" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a09b82a7f771ed02dc0dd9b27130a0fa5499fa15ed3027116c1e5e4e591bd9e" -dependencies = [ - "serde", - "static_assertions", -] - -[[package]] -name = "lazy_static" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20870f649af7073d53e38067b2a84312175d56ea15217e1b15bc83506ec50afb" -dependencies = [ - "spin 0.9.9", -] - -[[package]] -name = "lebe" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" - -[[package]] -name = "libc" -version = "0.2.189" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" - -[[package]] -name = "libfuzzer-sys" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2" -dependencies = [ - "arbitrary", - "cc", -] - -[[package]] -name = "libloading" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" -dependencies = [ - "cfg-if", - "windows-link", -] - -[[package]] -name = "libm" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" - -[[package]] -name = "linux-raw-sys" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" - -[[package]] -name = "liquid" -version = "0.26.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9338405fdbc0bce9b01695b2a2ef6b20eca5363f385d47bce48ddf8323cc25" -dependencies = [ - "doc-comment", - "liquid-core", - "liquid-derive", - "liquid-lib", - "serde", -] - -[[package]] -name = "liquid-core" -version = "0.26.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb8fed70857010ed9016ed2ce5a7f34e7cc51d5d7255c9c9dc2e3243e490b42" -dependencies = [ - "anymap2", - "itertools 0.13.0", - "kstring", - "liquid-derive", - "num-traits", - "pest", - "pest_derive", - "regex", - "serde", - "time", -] - -[[package]] -name = "liquid-derive" -version = "0.26.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b51f1d220e3fa869e24cfd75915efe3164bd09bb11b3165db3f37f57bf673e3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "liquid-lib" -version = "0.26.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee1794b5605e9f8864a8a4f41aa97976b42512cc81093f8c885d29fb94c6c556" -dependencies = [ - "itertools 0.13.0", - "liquid-core", - "once_cell", - "percent-encoding", - "regex", - "time", - "unicode-segmentation", -] - -[[package]] -name = "litemap" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" - -[[package]] -name = "litrs" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" - -[[package]] -name = "loop9" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" -dependencies = [ - "imgref", -] - -[[package]] -name = "lru-slab" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4050469837a6ff301cd14c1f8f24f88549e6d548f24f64e2148eb0f72cebc51f" - -[[package]] -name = "lzma-sys" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "mach2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" -dependencies = [ - "libc", -] - -[[package]] -name = "macro-string" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a9dbbfc75d2688ed057456ce8a3ee3f48d12eec09229f560f3643b9f275653" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "matchit" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" - -[[package]] -name = "matrixmultiply" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f607c237553f086e7043417a51df26b2eb899d3caff94e6a67592ff992fedc7" -dependencies = [ - "autocfg", - "rawpointer", -] - -[[package]] -name = "maybe-rayon" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" -dependencies = [ - "cfg-if", - "rayon", -] - -[[package]] -name = "memchr" -version = "2.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" - -[[package]] -name = "memmap2" -version = "0.9.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - -[[package]] -name = "merlin" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" -dependencies = [ - "byteorder", - "keccak 0.1.6", - "rand_core 0.6.4", - "zeroize", -] - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "miniz_oxide" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "mio" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8" -dependencies = [ - "libc", - "wasi", - "windows-sys 0.61.2", -] - -[[package]] -name = "mmap-rs" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86968d85441db75203c34deefd0c88032f275aaa85cee19a1dcfff6ae9df56da" -dependencies = [ - "bitflags 1.3.2", - "combine", - "libc", - "mach2", - "nix", - "sysctl", - "thiserror 1.0.69", - "widestring", - "windows 0.48.0", -] - -[[package]] -name = "moxcms" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" -dependencies = [ - "num-traits", - "pxfm", -] - -[[package]] -name = "multimap" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" - -[[package]] -name = "nalgebra" -version = "0.32.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5c17de023a86f59ed79891b2e5d5a94c705dbe904a5b5c9c952ea6221b03e4" -dependencies = [ - "approx", - "matrixmultiply", - "nalgebra-macros", - "num-complex", - "num-rational", - "num-traits", - "serde", - "simba", - "typenum", -] - -[[package]] -name = "nalgebra-macros" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ndarray" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" -dependencies = [ - "matrixmultiply", - "num-complex", - "num-integer", - "num-traits", - "portable-atomic", - "portable-atomic-util", - "rawpointer", - "serde", -] - -[[package]] -name = "ndarray-stats" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ebbe97acce52d06aebed4cd4a87c0941f4b2519b59b82b4feb5bd0ce003dfd" -dependencies = [ - "indexmap 2.14.2", - "itertools 0.13.0", - "ndarray", - "noisy_float", - "num-integer", - "num-traits", - "rand 0.8.8", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - -[[package]] -name = "nix" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset", - "pin-utils", -] - -[[package]] -name = "no_std_io2" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418abd1b6d34fbf6cae440dc874771b0525a604428704c76e48b29a5e67b8003" -dependencies = [ - "memchr", -] - -[[package]] -name = "noisy_float" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c16843be85dd410c6a12251c4eca0dd1d3ee8c5725f746c4d5e0fdcec0a864b2" -dependencies = [ - "num-traits", -] - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "nom" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" -dependencies = [ - "memchr", -] - -[[package]] -name = "noop_proc_macro" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" - -[[package]] -name = "nu-ansi-term" -version = "0.50.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "num" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" -dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" -dependencies = [ - "num-integer", - "num-traits", - "rand 0.8.8", -] - -[[package]] -name = "num-bigint-dig" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" -dependencies = [ - "lazy_static", - "libm", - "num-integer", - "num-iter", - "num-traits", - "rand 0.8.8", - "smallvec 1.16.2", - "zeroize", -] - -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "bytemuck", - "num-traits", - "serde", -] - -[[package]] -name = "num-conv" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" - -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "num-integer" -version = "0.1.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" -dependencies = [ - "num-bigint", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_cpus" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "nybbles" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d49ff0c0d00d4a502b39df9af3a525e1efeb14b9dabb5bb83335284c1309210" -dependencies = [ - "alloy-rlp", - "cfg-if", - "proptest", - "ruint", - "serde", - "smallvec 1.16.2", -] - -[[package]] -name = "object" -version = "0.37.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" - -[[package]] -name = "once_cell_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" - -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - -[[package]] -name = "opencv" -version = "0.98.1" -source = "git+https://github.com/diego-a-orellana/opencv-rust.git?branch=release%2Fv0.98.1b#201cbc77bbb7ad246e128d42d80fe6ad1dce83c9" -dependencies = [ - "cc", - "dunce", - "ignition", - "jobserver", - "libc", - "num-traits", - "opencv-binding-generator", - "pkg-config", - "semver 1.0.28", - "shlex 1.3.0", - "vcpkg", - "windows 0.62.2", -] - -[[package]] -name = "opencv-binding-generator" -version = "0.100.0" -source = "git+https://github.com/diego-a-orellana/opencv-rust.git?branch=release%2Fv0.98.1b#201cbc77bbb7ad246e128d42d80fe6ad1dce83c9" -dependencies = [ - "clang", - "clang-sys", - "dunce", - "percent-encoding", - "regex", - "shlex 1.3.0", -] - -[[package]] -name = "openssl-probe" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" - -[[package]] -name = "orb-qr-link" -version = "0.1.0" -source = "git+https://github.com/worldcoin/orb-software?rev=8b0a781db62b04ff0351cd3350b1a9f8d49f07a3#8b0a781db62b04ff0351cd3350b1a9f8d49f07a3" -dependencies = [ - "blake3", - "data-encoding", - "serde", - "thiserror 1.0.69", - "uuid", -] - -[[package]] -name = "orb-relay-messages" -version = "0.0.0" -source = "git+https://github.com/worldcoin/orb-relay-messages.git?rev=9bc83771b15cbf22796e93a7276040db4d63a64d#9bc83771b15cbf22796e93a7276040db4d63a64d" -dependencies = [ - "blake3", - "prost 0.14.4", - "prost-build", - "prost-types", - "tonic", - "tonic-prost", - "tonic-prost-build", -] - -[[package]] -name = "ordered-float" -version = "5.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c9e0d9b23589f26070720bac724174bfec1083e82f7854cdd0267518343c0" -dependencies = [ - "num-traits", - "rand 0.8.8", - "serde", -] - -[[package]] -name = "ort" -version = "2.0.0-rc.10" -source = "git+https://github.com/diego-a-orellana/ort.git?branch=release%2Fv2.0.0-rc.10b#7937928d62b3f8e447231f165eb0bec863235757" -dependencies = [ - "half", - "ndarray", - "ort-sys", - "smallvec 2.0.0-alpha.10", - "tracing", -] - -[[package]] -name = "ort-sys" -version = "2.0.0-rc.10" -source = "git+https://github.com/diego-a-orellana/ort.git?branch=release%2Fv2.0.0-rc.10b#7937928d62b3f8e447231f165eb0bec863235757" -dependencies = [ - "pkg-config", -] - -[[package]] -name = "ort-tract" -version = "0.1.0+0.21" -source = "git+https://github.com/diego-a-orellana/ort.git?branch=release%2Fv2.0.0-rc.10b#7937928d62b3f8e447231f165eb0bec863235757" -dependencies = [ - "ort-sys", - "parking_lot", - "tract-onnx", -] - -[[package]] -name = "owned_ttf_parser" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" -dependencies = [ - "ttf-parser", -] - -[[package]] -name = "owo-colors" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c45bb4a6ae1280ec0803b1ef9d3455eb50f01efbbe1447ab020f1d54fba9d8" - -[[package]] -name = "oxide" -version = "0.75.0" -source = "git+https://github.com/worldcoin/oxide.git?rev=329274a32be02be0bb39ca02adc4e4e4e438ada0#329274a32be02be0bb39ca02adc4e4e4e438ada0" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", - "ampc-secret-sharing", - "async-trait", - "attestation-gateway-types", - "base64 0.22.1", - "blake3", - "bytes", - "cc", - "chrono", - "ciborium", - "crypto_box", - "dryoc", - "face-engine", - "flate2", - "futures", - "hex", - "http", - "image", - "k256 0.13.4", - "log", - "orb-qr-link", - "orb-relay-messages", - "p256 0.13.2", - "prost 0.14.4", - "rand 0.8.8", - "reqwest", - "rsa", - "ruint", - "semaphore-rs", - "semaphore-rs-poseidon", - "semaphore-rs-trees", - "semaphore-rs-utils", - "serde", - "serde_json", - "sha2 0.10.9", - "strum 0.27.2", - "tar", - "thiserror 2.0.21", - "tokio", - "uniffi", - "uuid", - "world-id-primitives 0.13.0", - "zeroize", - "zip", -] - -[[package]] -name = "p256" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" -dependencies = [ - "ecdsa 0.16.9", - "elliptic-curve 0.13.8", - "primeorder 0.13.6", - "sha2 0.10.9", -] - -[[package]] -name = "p256" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c9239b2dbc807adbbe147e8cf72ea7450c3a0aabe62cb8e75ff4ec22e1f72a" -dependencies = [ - "ecdsa 0.17.0", - "elliptic-curve 0.14.1", - "primefield", - "primeorder 0.14.0", - "sha2 0.11.0", -] - -[[package]] -name = "p3-challenger" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7d2d45f5a51dc3f965e8d6da60a6c26c807e88657863d56da275eaa05ad36f1" -dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", - "tracing", -] - -[[package]] -name = "p3-dft" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beabb40bc8ac7f5f95870f271fb844c7e2e1ebb7f0761a8eebb2614b56c6b1c1" -dependencies = [ - "itertools 0.14.0", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", - "spin 0.10.1", - "tracing", -] - -[[package]] -name = "p3-field" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4819a3e4c1882431a63d4847ffa10d110017aee4cb9cf4319ca6dca191930969" -dependencies = [ - "itertools 0.14.0", - "num-bigint", - "p3-maybe-rayon", - "p3-util", - "paste", - "rand 0.9.5", - "serde", - "tracing", -] - -[[package]] -name = "p3-koala-bear" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfb02789fca0950e246123d652bd78e75a76e3b90a651fd88dbb215cd3e81f5a" -dependencies = [ - "p3-challenger", - "p3-field", - "p3-monty-31", - "p3-poseidon2", - "p3-symmetric", - "rand 0.9.5", -] - -[[package]] -name = "p3-matrix" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6fde449bd2963d394284ec46db8c647e6a5602d90601117b76752072ab54168" -dependencies = [ - "itertools 0.14.0", - "p3-field", - "p3-maybe-rayon", - "p3-util", - "rand 0.9.5", - "serde", - "tracing", -] - -[[package]] -name = "p3-maybe-rayon" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54afab3883d8a14676b492709d6c4e9fa535c36718b737db0817aacfaaaa11f6" - -[[package]] -name = "p3-mds" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3895055d735ac96d010747b3aaabd4c2645b9fd80226960550318db2e25afb75" -dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", - "rand 0.9.5", -] - -[[package]] -name = "p3-monty-31" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fe0be661891af1f703ceaf57334fcbd540804988984dc2b500dd99740e7c81" -dependencies = [ - "itertools 0.14.0", - "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon2", - "p3-symmetric", - "p3-util", - "paste", - "rand 0.9.5", - "serde", - "spin 0.10.1", - "tracing", -] - -[[package]] -name = "p3-poseidon2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6fc2368447576283f8b3849a36095017f25addf06eab9e33b0ce7f96b0b99d" -dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", - "rand 0.9.5", -] - -[[package]] -name = "p3-symmetric" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a14456a42a7d9e65f13999706f1bca2832175935169b3a54286e18331cf1d82f" -dependencies = [ - "itertools 0.14.0", - "p3-field", - "serde", -] - -[[package]] -name = "p3-util" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "911154accf66034b0eec4452956c088f92a200b37a8225c1caed74cfbd38cc8d" -dependencies = [ - "serde", - "transpose", -] - -[[package]] -name = "palette" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddeed8580d347d2abf3dcf06a5f0b3dc020258338526b277847cd4248a70fc64" -dependencies = [ - "approx", - "palette_derive", - "palette_math", - "phf", -] - -[[package]] -name = "palette_derive" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88537020289b719d81be994ccf1bbf4990f477e2f69ee52fe3e45f43a02e56be" -dependencies = [ - "by_address", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "palette_math" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e6eb142958d64335fb0e345c5b9ead2ecd6fc438c307e9d7d3c4fd428dbaf12" - -[[package]] -name = "parity-scale-codec" -version = "3.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "const_format", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "rustversion", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec 1.16.2", - "windows-link", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "pastey" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" - -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - -[[package]] -name = "pem-rfc7468" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6305423e0e7738146434843d1694d621cce767262b2a86910beab705e4493d9" -dependencies = [ - "base64ct", -] - -[[package]] -name = "percent-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "pest" -version = "2.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45d3aca230fad2e6f6317ca0a72724338c4960cb97168a85cdee66df4a9a21a8" -dependencies = [ - "memchr", - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284b60557f2c4a2e72ad3f2d34d42685a2fa4a6a61d0d2a10c0ae2a5e916c2cf" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9d1f08a115309ee99268cf85e5228e0e56aa9caf8841ec12866b6be07c3109" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "pest_meta" -version = "2.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed93ba1a9ffcca32130a5188701c81c0c49cf00d4b7c5007d5148951d743adcb" -dependencies = [ - "pest", -] - -[[package]] -name = "petgraph" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" -dependencies = [ - "fixedbitset", - "hashbrown 0.15.5", - "indexmap 2.14.2", -] - -[[package]] -name = "phf" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" -dependencies = [ - "phf_shared", -] - -[[package]] -name = "phf_shared" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project" -version = "1.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" - -[[package]] -name = "pin-utils" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13bee6c73da26345c729282832b60b0363cf3dd9f4bfd81d8551b7a1c889a113" - -[[package]] -name = "pkcs1" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" -dependencies = [ - "der 0.7.10", - "pkcs8 0.10.2", - "spki 0.7.3", -] - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der 0.7.10", - "spki 0.7.3", -] - -[[package]] -name = "pkcs8" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" -dependencies = [ - "der 0.8.2", - "spki 0.8.0", -] - -[[package]] -name = "pkg-config" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" - -[[package]] -name = "plain" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" - -[[package]] -name = "png" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" -dependencies = [ - "bitflags 2.13.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide 0.8.9", -] - -[[package]] -name = "poly1305" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" -dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", - "universal-hash", -] - -[[package]] -name = "portable-atomic" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" - -[[package]] -name = "portable-atomic-util" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10ab3eb7f3becc3a1cbc4f2c6f20267996cfc1a6467a873763411b136a122715" -dependencies = [ - "portable-atomic", -] - -[[package]] -name = "postcard" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" -dependencies = [ - "cobs", - "embedded-io 0.4.0", - "embedded-io 0.6.1", - "heapless", - "serde", -] - -[[package]] -name = "potential_utf" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn 2.0.119", -] - -[[package]] -name = "primal-check" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0d895b311e3af9902528fbb8f928688abbd95872819320517cc24ca6b2bd08" -dependencies = [ - "num-integer", -] - -[[package]] -name = "primefield" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" -dependencies = [ - "crypto-bigint 0.7.5", - "crypto-common 0.2.2", - "ff 0.14.0", - "rand_core 0.10.1", - "subtle", - "zeroize", -] - -[[package]] -name = "primeorder" -version = "0.13.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" -dependencies = [ - "elliptic-curve 0.13.8", -] - -[[package]] -name = "primeorder" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" -dependencies = [ - "elliptic-curve 0.14.1", - "once_cell", - "primefield", - "serdect 0.4.3", - "wnaf", -] - -[[package]] -name = "primitive-types" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" -dependencies = [ - "fixed-hash", - "impl-codec", - "uint", -] - -[[package]] -name = "proc-macro-crate" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" -dependencies = [ - "toml_edit 0.25.15+spec-1.1.0", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr3" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82366fd7d8b7a440d66d13418820c69df9b3908bcb1a0476d7f5ce5d12f5a04d" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error3" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b511283ea8a74b4b39447b128c5d00f03a356b7424554b13e298a5550100d9ac" -dependencies = [ - "proc-macro-error-attr3", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "proc-macro2" -version = "1.0.107" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "profiling" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" -dependencies = [ - "profiling-procmacros", -] - -[[package]] -name = "profiling-procmacros" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb" -dependencies = [ - "quote", - "syn 2.0.119", -] - -[[package]] -name = "proptest" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744" -dependencies = [ - "bitflags 2.13.2", - "num-traits", - "rand 0.9.5", - "rand_chacha 0.9.0", - "rand_xorshift", - "regex-syntax", - "unarray", -] - -[[package]] -name = "prost" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" -dependencies = [ - "bytes", - "prost-derive 0.11.9", -] - -[[package]] -name = "prost" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528ac67416ff8646872a3c02cad9cc4ee5dc9f9540c9b10771855c95cb2e5ae1" -dependencies = [ - "bytes", - "prost-derive 0.14.4", -] - -[[package]] -name = "prost-build" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03da047801ff44bb6a4d407d4860c05fd70bb81714e6b2f3812603d5b145b042" -dependencies = [ - "heck", - "itertools 0.14.0", - "log", - "multimap", - "petgraph", - "prettyplease", - "prost 0.14.4", - "prost-types", - "pulldown-cmark", - "pulldown-cmark-to-cmark", - "regex", - "syn 2.0.119", - "tempfile", -] - -[[package]] -name = "prost-derive" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" -dependencies = [ - "anyhow", - "itertools 0.10.5", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "prost-derive" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf" -dependencies = [ - "anyhow", - "itertools 0.14.0", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "prost-types" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f94967dc7688f3054c7fac87473ffae4cc4c3904800e2d9f5b857246d8963b0a" -dependencies = [ - "prost 0.14.4", -] - -[[package]] -name = "provekit-common" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd137e327416256ac7281b7c0eed960d59ab5cd10d805ae4ee0e5241a8e01938" -dependencies = [ - "anyhow", - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "base64 0.22.1", - "bytes", - "ciborium", - "getrandom 0.2.17", - "hex", - "itertools 0.14.0", - "postcard", - "provekit-spongefish", - "provekit-spongefish-pow", - "provekit-whir", - "provekit_acir", - "provekit_noirc_abi", - "rayon", - "ruint", - "serde", - "serde_json", - "sha2 0.10.9", - "sha3 0.10.9", - "tracing", - "xz2", - "zerocopy", - "zstd", -] - -[[package]] -name = "provekit-spongefish" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a705ff6cb8bc4566a2d1a9f665243db958cbd90a852c3eef0dcc8dc8879ce5" -dependencies = [ - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "blake3", - "digest 0.10.7", - "keccak 0.1.6", - "p3-koala-bear", - "rand 0.8.8", - "sha2 0.10.9", - "sha3 0.10.9", - "zeroize", -] - -[[package]] -name = "provekit-spongefish-pow" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef05687e1ea5d63b54f03c86cf2ddd2cd3752a70151921619d0c66d129e6f309" -dependencies = [ - "blake3", - "bytemuck", - "keccak 0.1.6", - "provekit-spongefish", - "rand 0.8.8", - "rayon", -] - -[[package]] -name = "provekit-whir" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35334259c6ad5b1287ecef6bfb3deb3dbb963c9366091951316bdb33c2080fe6" -dependencies = [ - "approx", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "blake3", - "ciborium", - "clap", - "const-oid 0.9.6", - "derive-where", - "digest 0.10.7", - "hex", - "hex-literal", - "itertools 0.14.0", - "ordered-float", - "provekit-spongefish", - "rayon", - "serde", - "serde_json", - "sha2 0.10.9", - "sha3 0.10.9", - "static_assertions", - "tracing", - "zerocopy", - "zeroize", -] - -[[package]] -name = "provekit_acir" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d8c433b4ec3fda649e7740d8afd5d0abbea77a096e5e9ee832028598ae1f15d" -dependencies = [ - "acir_field", - "base64 0.22.1", - "brillig", - "flate2", - "num-bigint", - "num-traits", - "num_enum", - "provekit_noirc_span", - "rmp-serde", - "serde", - "serde-big-array", - "strum 0.26.3", - "strum_macros 0.28.0", - "thiserror 2.0.21", -] - -[[package]] -name = "provekit_acvm" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9513cb6fc2dd4a5e61b6606c23d50b0c8b11634ef66a1a04dddf46103645af" -dependencies = [ - "indexmap 2.14.2", - "itertools 0.14.0", - "provekit_acir", - "provekit_acvm_blackbox_solver", - "provekit_brillig_vm", - "rustc-hash", - "serde", - "thiserror 2.0.21", - "tracing", -] - -[[package]] -name = "provekit_acvm_blackbox_solver" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "007a76b3874b05c09f651fd912a2bf7e4bde640a99b2863053f61b37a4851e47" -dependencies = [ - "aes", - "blake2 0.11.0", - "blake3", - "cbc", - "k256 0.14.0", - "keccak 0.2.2", - "log", - "p256 0.14.0", - "provekit_acir", - "sha2 0.11.0", - "thiserror 2.0.21", -] - -[[package]] -name = "provekit_brillig_vm" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64856dccbb0a86ac44df84954be6546184f8fe69a2fc2c89f427facc1a903768" -dependencies = [ - "itertools 0.14.0", - "num-bigint", - "num-traits", - "provekit_acir", - "provekit_acvm_blackbox_solver", - "thiserror 2.0.21", -] - -[[package]] -name = "provekit_iter-extended" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c36f1bbf749df7298cb7edfb342a2979b45b6f3e121a49f298c4df03776902c4" - -[[package]] -name = "provekit_noirc_abi" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "351d040825214dd67fd402bd19ad19ee0833d20482b0d5ddcbd50f91af4d5d88" -dependencies = [ - "itertools 0.14.0", - "num-bigint", - "num-traits", - "provekit_acvm", - "provekit_iter-extended", - "provekit_noirc_printable_type", - "serde", - "serde_json", - "thiserror 2.0.21", - "toml 0.8.23", -] - -[[package]] -name = "provekit_noirc_printable_type" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39accb3c40ee64ded0fa2798f83cee2f7a970b8e0d94eea230ede9dc6b866fef" -dependencies = [ - "itertools 0.14.0", - "provekit_acvm", - "provekit_iter-extended", - "serde", - "serde_json", -] - -[[package]] -name = "provekit_noirc_span" -version = "1.0.0-beta.20-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88568fabd82cc3dca3d3e67e830459a1a402ce538e8d6a759fa41f65ef6280bd" -dependencies = [ - "codespan", - "serde", -] - -[[package]] -name = "pulldown-cmark" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e" -dependencies = [ - "bitflags 2.13.2", - "memchr", - "unicase", -] - -[[package]] -name = "pulldown-cmark-to-cmark" -version = "22.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84bbb29c624230c4bd1047bbdb2aa47e41c860e9665ce62ba9504eebe91bf867" -dependencies = [ - "pulldown-cmark", -] - -[[package]] -name = "pulp" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046aa45b989642ec2e4717c8e72d677b13edd831a4d3b6cf37d9a3e54912496a" -dependencies = [ - "bytemuck", - "cfg-if", - "libm", - "num-complex", - "paste", - "pulp-wasm-simd-flag", - "raw-cpuid", - "reborrow", - "version_check", -] - -[[package]] -name = "pulp-wasm-simd-flag" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d8f70e07b9c3962945a74e59ca1c511bba65b6419468acc217c457d93f3c740" - -[[package]] -name = "pxfm" -version = "0.1.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea" - -[[package]] -name = "quick-error" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" - -[[package]] -name = "quinn" -version = "0.11.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4051e23e9185c255a7e33ef59cdbca87a22d359052eecd22fc6b901fb37d9d11" -dependencies = [ - "bytes", - "cfg_aliases", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash", - "rustls", - "socket2", - "thiserror 2.0.21", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-proto" -version = "0.11.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e750cca55fe4f0439a15d0bb529da9651e79993e8e72c61a899a36d462befbe" -dependencies = [ - "bytes", - "getrandom 0.4.3", - "lru-slab", - "rand 0.10.3", - "rand_pcg", - "ring", - "rustc-hash", - "rustls", - "rustls-pki-types", - "slab", - "thiserror 2.0.21", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af66907df18639dcf4db56ca65490cabc4b27a97dbadd96f2926cca73298f016" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2", - "tracing", - "windows-sys 0.61.2", -] - -[[package]] -name = "quote" -version = "1.0.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "r-efi" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e058c7de0b26af77780c769414d6257830bb240f3c38477dbc2c16e5f54d6d4c" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", - "serde", -] - -[[package]] -name = "rand" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.5", - "serde", -] - -[[package]] -name = "rand" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" -dependencies = [ - "chacha20 0.10.2", - "getrandom 0.4.3", - "rand_core 0.10.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.5", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.17", - "serde", -] - -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", - "serde", -] - -[[package]] -name = "rand_core" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" - -[[package]] -name = "rand_distr" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" -dependencies = [ - "num-traits", - "rand 0.8.8", -] - -[[package]] -name = "rand_pcg" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" -dependencies = [ - "rand_core 0.10.1", -] - -[[package]] -name = "rand_xorshift" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" -dependencies = [ - "rand_core 0.9.5", -] - -[[package]] -name = "rapidhash" -version = "4.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5da7e78a036ce858e8d55b7e7dc8ba3a88b78350fd2155d3591bbd966b58589e" -dependencies = [ - "rustversion", -] - -[[package]] -name = "rav1e" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b" -dependencies = [ - "aligned-vec", - "arbitrary", - "arg_enum_proc_macro", - "arrayvec", - "av-scenechange", - "av1-grain", - "bitstream-io", - "built", - "cfg-if", - "interpolate_name", - "itertools 0.14.0", - "libc", - "libfuzzer-sys", - "log", - "maybe-rayon", - "new_debug_unreachable", - "noop_proc_macro", - "num-derive", - "num-traits", - "paste", - "profiling", - "rand 0.9.5", - "rand_chacha 0.9.0", - "simd_helpers", - "thiserror 2.0.21", - "v_frame", - "wasm-bindgen", -] - -[[package]] -name = "ravif" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45" -dependencies = [ - "avif-serialize", - "imgref", - "loop9", - "quick-error", - "rav1e", - "rayon", - "rgb", -] - -[[package]] -name = "raw-cpuid" -version = "11.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" -dependencies = [ - "bitflags 2.13.2", -] - -[[package]] -name = "rawpointer" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" - -[[package]] -name = "rayon" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "reborrow" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags 2.13.2", -] - -[[package]] -name = "ref-cast" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e440fb4e4b4147295338efb76001ab9e4efc0e5839df2c47fc5ac2381d365c3" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecd8964f8453721699a1ed72037b0db49ce2f5a5138486ee89bed6f67cdf3a" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "regex" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" - -[[package]] -name = "reqwest" -version = "0.12.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", - "js-sys", - "log", - "mime_guess", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-rustls", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots", -] - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac 0.12.1", - "subtle", -] - -[[package]] -name = "rfc6979" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" -dependencies = [ - "crypto-bigint 0.7.5", - "hmac 0.13.0", -] - -[[package]] -name = "rgb" -version = "0.8.53" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" - -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.17", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rlp" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" -dependencies = [ - "bytes", - "rustc-hex", -] - -[[package]] -name = "rmp" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba8be72d372b2c9b35542551678538b562e7cf86c3315773cae48dfbfe7790c" -dependencies = [ - "num-traits", -] - -[[package]] -name = "rmp-serde" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f81bee8c8ef9b577d1681a70ebbc962c232461e397b22c208c43c04b67a155" -dependencies = [ - "rmp", - "serde", -] - -[[package]] -name = "rsa" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" -dependencies = [ - "const-oid 0.9.6", - "digest 0.10.7", - "num-bigint-dig", - "num-integer", - "num-traits", - "pkcs1", - "pkcs8 0.10.2", - "rand_core 0.6.4", - "sha2 0.10.9", - "signature 2.2.0", - "spki 0.7.3", - "subtle", - "zeroize", -] - -[[package]] -name = "ruint" -version = "1.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2973657b5127d510e230f5c63d2d106af9c8f79393d8b9f4647323e8196bdde5" -dependencies = [ - "alloy-rlp", - "ark-ff 0.3.0", - "ark-ff 0.4.2", - "ark-ff 0.5.0", - "ark-ff 0.6.0", - "bytemuck", - "bytes", - "fastrlp 0.3.1", - "fastrlp 0.4.0", - "num-bigint", - "num-integer", - "num-traits", - "parity-scale-codec", - "primitive-types", - "proptest", - "rand 0.8.8", - "rand 0.9.5", - "rlp", - "ruint-macro", - "serde_core", - "valuable", - "zeroize", -] - -[[package]] -name = "ruint-macro" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" - -[[package]] -name = "rustc-demangle" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb" - -[[package]] -name = "rustc-hash" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver 1.0.28", -] - -[[package]] -name = "rustfft" -version = "6.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21db5f9893e91f41798c88680037dba611ca6674703c1a18601b01a72c8adb89" -dependencies = [ - "num-complex", - "num-integer", - "num-traits", - "primal-check", - "strength_reduce", - "transpose", -] - -[[package]] -name = "rustix" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d" -dependencies = [ - "bitflags 2.13.2", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustls" -version = "0.23.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634" -dependencies = [ - "log", - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-native-certs" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" -dependencies = [ - "openssl-probe", - "rustls-pki-types", - "schannel", - "security-framework", -] - -[[package]] -name = "rustls-pki-types" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96" -dependencies = [ - "web-time", - "zeroize", -] - -[[package]] -name = "rustls-webpki" -version = "0.103.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" - -[[package]] -name = "ryu" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" - -[[package]] -name = "safe_arch" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "salsa20" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" -dependencies = [ - "cipher", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scan_fmt" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b53b0a5db882a8e2fdaae0a43f7b39e7e9082389e978398bdf223a55b581248" -dependencies = [ - "regex", -] - -[[package]] -name = "schannel" -version = "0.1.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "schemars" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" -dependencies = [ - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.119", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "scratch" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d68f2ec51b097e4c1a75b681a8bec621909b5e91f15bb7b840c4f2f7b01148b2" - -[[package]] -name = "scroll" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" -dependencies = [ - "scroll_derive", -] - -[[package]] -name = "scroll_derive" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1783eabc414609e28a5ba76aee5ddd52199f7107a0b24c2e9746a1ecc34a683d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct 0.2.0", - "der 0.7.10", - "generic-array", - "pkcs8 0.10.2", - "serdect 0.2.0", - "subtle", - "zeroize", -] - -[[package]] -name = "sec1" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" -dependencies = [ - "base16ct 1.0.0", - "ctutils", - "der 0.8.2", - "hybrid-array", - "subtle", - "zeroize", -] - -[[package]] -name = "secp256k1" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" -dependencies = [ - "bitcoin_hashes", - "rand 0.8.8", - "secp256k1-sys 0.10.1", - "serde", -] - -[[package]] -name = "secp256k1" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" -dependencies = [ - "bitcoin_hashes", - "rand 0.9.5", - "secp256k1-sys 0.11.0", -] - -[[package]] -name = "secp256k1-sys" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" -dependencies = [ - "cc", -] - -[[package]] -name = "secp256k1-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38" -dependencies = [ - "cc", -] - -[[package]] -name = "secrecy" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" -dependencies = [ - "zeroize", -] - -[[package]] -name = "security-framework" -version = "3.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" -dependencies = [ - "bitflags 2.13.2", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semaphore-rs" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f890beebbc8378b63bc84558afa165db97a6bd5087207e3de3d483badd13dc97" -dependencies = [ - "ark-bn254 0.6.0", - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-groth16 0.6.0", - "ark-relations 0.6.0", - "ark-std 0.6.0", - "bytemuck", - "color-eyre", - "hex", - "hex-literal", - "itertools 0.13.0", - "lazy_static", - "num-bigint", - "once_cell", - "rand 0.8.8", - "rayon", - "ruint", - "semaphore-rs-ark-circom", - "semaphore-rs-ark-zkey", - "semaphore-rs-depth-config", - "semaphore-rs-depth-macros", - "semaphore-rs-hasher", - "semaphore-rs-keccak", - "semaphore-rs-poseidon", - "semaphore-rs-proof", - "semaphore-rs-storage", - "semaphore-rs-trees", - "semaphore-rs-utils", - "semaphore-rs-witness", - "serde", - "sha2 0.10.9", - "thiserror 1.0.69", - "tiny-keccak", - "zeroize", -] - -[[package]] -name = "semaphore-rs-ark-circom" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b7086229a7c6ae2ca6f43a342f98eec747c73b41258620f0a2ed1ab37cd1e1" -dependencies = [ - "ark-bn254 0.6.0", - "ark-crypto-primitives 0.6.0", - "ark-ff 0.6.0", - "ark-groth16 0.6.0", - "ark-poly 0.6.0", - "ark-relations 0.6.0", - "ark-serialize 0.6.0", - "ark-std 0.6.0", - "byteorder", - "num-bigint", - "num-traits", - "ruint", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "semaphore-rs-ark-zkey" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d232b793bb44d2194c86047bac6905bc63294677bdf295b1dc415d7beb82abf7" -dependencies = [ - "ark-bn254 0.6.0", - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-groth16 0.6.0", - "ark-relations 0.6.0", - "ark-serialize 0.6.0", - "color-eyre", - "memmap2", - "semaphore-rs-ark-circom", -] - -[[package]] -name = "semaphore-rs-depth-config" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1182bb2e1c3eafc62896cbb557e7e3e5701f302aca7e0a7be4d64afdadf0bac" - -[[package]] -name = "semaphore-rs-depth-macros" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2f8c729ddc394204515cbfb8ad92c6f7ecae84e476bc83154dc0d29abbedc7a" -dependencies = [ - "itertools 0.13.0", - "proc-macro2", - "quote", - "semaphore-rs-depth-config", - "syn 2.0.119", -] - -[[package]] -name = "semaphore-rs-hasher" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0048be8cc87ca0176d0fb63bbe1dea1bedd585e21a06b5698b72c77991dc5965" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "semaphore-rs-keccak" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abbea1cf1a5c4268743222d23c09c6e9e8456d4907483302055b34b5690aedaf" -dependencies = [ - "semaphore-rs-hasher", - "tiny-keccak", -] - -[[package]] -name = "semaphore-rs-poseidon" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a33bc286ea7609af279bfd0558a9f44e67ae7e12c831b75ed9713a4b40b4ba0" -dependencies = [ - "ark-bn254 0.6.0", - "ark-ff 0.6.0", - "once_cell", - "ruint", - "semaphore-rs-hasher", -] - -[[package]] -name = "semaphore-rs-proof" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6394dbd24c5a6e61c468a78340e1595f2f9814c200120f26f967cbfd493e9534" -dependencies = [ - "alloy-core", - "ark-bn254 0.6.0", - "ark-ec 0.6.0", - "ark-groth16 0.6.0", - "getrandom 0.2.17", - "hex", - "lazy_static", - "ruint", - "semaphore-rs-ark-circom", - "semaphore-rs-utils", - "serde", - "serde_json", -] - -[[package]] -name = "semaphore-rs-storage" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58c20585a4f3a0a112a539b8d10df3da4adb181185ce5a4ad9fbd4891c110c0" -dependencies = [ - "bytemuck", - "color-eyre", - "mmap-rs", - "tempfile", -] - -[[package]] -name = "semaphore-rs-trees" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ca17f302fb03333d0e47ff8556e26ed2ab45ebc3ddf75525f7c5a3e2836e40" -dependencies = [ - "ark-bn254 0.6.0", - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-groth16 0.6.0", - "ark-relations 0.6.0", - "ark-std 0.6.0", - "bytemuck", - "color-eyre", - "derive-where", - "getrandom 0.2.17", - "hex", - "hex-literal", - "itertools 0.13.0", - "mmap-rs", - "once_cell", - "rayon", - "ruint", - "semaphore-rs-ark-circom", - "semaphore-rs-hasher", - "semaphore-rs-storage", - "serde", - "thiserror 1.0.69", - "tiny-keccak", -] - -[[package]] -name = "semaphore-rs-utils" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04ce32cd02f3217ea3096e2d07d7ac99317e6a1d5388c838eeddacdbc01bbbfe" -dependencies = [ - "hex", - "serde", - "tiny-keccak", -] - -[[package]] -name = "semaphore-rs-witness" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1abbd35e58c2f6fee33fa6c961e59e99849e25cca44c4599daf4556cb8b09c25" -dependencies = [ - "ark-bn254 0.6.0", - "ark-ff 0.6.0", - "ark-serialize 0.6.0", - "byteorder", - "color-eyre", - "cxx-build", - "hex", - "postcard", - "rand 0.8.8", - "ruint", - "serde", - "serde_json", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" -dependencies = [ - "serde", - "serde_core", -] - -[[package]] -name = "semver-parser" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" -dependencies = [ - "pest", -] - -[[package]] -name = "serde" -version = "1.0.229" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde-big-array" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_core" -version = "1.0.229" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.229" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "serde_json" -version = "1.0.151" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_spanned" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" -dependencies = [ - "serde_core", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df9adc193c780ef8f159aee8b61e2d5801aaa555e6eb0947fe45530ec506296f" -dependencies = [ - "base64 0.23.1", - "bs58", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.14.2", - "jiff", - "schemars 0.9.0", - "schemars 1.2.2", - "serde_core", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17bbc68e28663bbbb90df47e058aa7eda4fb445b89fe70457bb94fbccf6e49" -dependencies = [ - "darling 0.24.1", - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" -dependencies = [ - "indexmap 2.14.2", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - -[[package]] -name = "serdect" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" -dependencies = [ - "base16ct 0.2.0", - "serde", -] - -[[package]] -name = "serdect" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" -dependencies = [ - "base16ct 1.0.0", - "serde", -] - -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures 0.2.17", - "digest 0.10.7", - "sha2-asm", -] - -[[package]] -name = "sha2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" -dependencies = [ - "cfg-if", - "cpufeatures 0.3.1", - "digest 0.11.3", -] - -[[package]] -name = "sha2-asm" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b845214d6175804686b2bd482bcffe96651bb2d1200742b712003504a2dac1ab" -dependencies = [ - "cc", -] - -[[package]] -name = "sha3" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" -dependencies = [ - "digest 0.10.7", - "keccak 0.1.6", -] - -[[package]] -name = "sha3" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be176f1a57ce4e3d31c1a166222d9768de5954f811601fb7ca06fc8203905ce1" -dependencies = [ - "digest 0.11.3", - "keccak 0.2.2", -] - -[[package]] -name = "sha3-asm" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "471668161349031e3d415412f996b030c477488eec267cc3cadae3d06c0a367f" -dependencies = [ - "cc", - "cfg-if", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "shlex" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] - -[[package]] -name = "signature" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" -dependencies = [ - "digest 0.11.3", - "rand_core 0.10.1", -] - -[[package]] -name = "simba" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae" -dependencies = [ - "approx", - "num-complex", - "num-traits", - "paste", - "wide", -] - -[[package]] -name = "simd-adler32" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" - -[[package]] -name = "simd_helpers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" -dependencies = [ - "quote", -] - -[[package]] -name = "siphasher" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33f4fe9184a62d842c9ef383018f3306d8ba224fd9d836f56d7288308847c256" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - -[[package]] -name = "smallvec" -version = "1.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9395f0f0eee849a9b707b2f06bb92a6a422090e2123bb2ef8e87a0e61892a8e" -dependencies = [ - "serde", -] - -[[package]] -name = "smallvec" -version = "2.0.0-alpha.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d44cfb396c3caf6fbfd0ab422af02631b69ddd96d2eff0b0f0724f9024051b" - -[[package]] -name = "smawk" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8e2fb0f499abb4d162f2bedad68f5ef91a1682b5a03596ddb67efd37768d100" - -[[package]] -name = "socket2" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "spin" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" -dependencies = [ - "lock_api", -] - -[[package]] -name = "spin" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3" -dependencies = [ - "lock_api", -] - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der 0.7.10", -] - -[[package]] -name = "spki" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" -dependencies = [ - "base64ct", - "der 0.8.2", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "staging-face-crypto" -version = "0.1.0" -dependencies = [ - "ampc-secret-sharing", - "anyhow", - "base64 0.22.1", - "crypto_box", - "oxide", - "rand 0.8.8", - "serde", - "serde_json", - "taceo-ark-babyjubjub 0.5.3", - "tokio", - "world-id-primitives 0.14.0", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strength_reduce" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" - -[[package]] -name = "string-interner" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07f9fdfdd31a0ff38b59deb401be81b73913d76c9cc5b1aed4e1330a223420b9" -dependencies = [ - "cfg-if", - "hashbrown 0.14.5", - "serde", -] - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" - -[[package]] -name = "strum" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" -dependencies = [ - "strum_macros 0.27.2", -] - -[[package]] -name = "strum_macros" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "strum_macros" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.119" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "3.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn-solidity" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb6a2e3c7f7a3e4e83d1752cec5d1e357ced0cf96e85419b6a07f227db3def3a" -dependencies = [ - "paste", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "sysctl" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea" -dependencies = [ - "bitflags 2.13.2", - "byteorder", - "enum-as-inner", - "libc", - "thiserror 1.0.69", - "walkdir", -] - -[[package]] -name = "taceo-ark-babyjubjub" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55b5a2cc31c90e79778c4f6375e5d9828171d320db3f8c911a8ad47af4a70069" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "taceo-ark-babyjubjub" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14ecf2df99fec8b65be444d27f4ac20d75486be15423b4cd507517683312a4b0" -dependencies = [ - "ark-bn254 0.6.0", - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-std 0.6.0", -] - -[[package]] -name = "taceo-ark-serde-compat" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fcd6f55fec9dd131019bdc0319db2271915056607b75bf8b8bc0a6ec496347" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "num-bigint", - "serde", - "taceo-ark-babyjubjub 0.5.3", -] - -[[package]] -name = "taceo-ark-serde-compat" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7a255d21a01f083cf373ff6b4903f9dafad1e0a2a1a2119a4cee971d1bb995" -dependencies = [ - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-serialize 0.6.0", - "num-bigint", - "serde", - "taceo-ark-babyjubjub 0.6.0", -] - -[[package]] -name = "taceo-circom-types" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4ae56552ed9a44722d293640d5aedd90b9940284bf1f1bf4df727b3ce5bc34b" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-groth16 0.5.0", - "ark-poly 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "byteorder", - "serde", - "serde_json", - "taceo-ark-serde-compat 0.5.0", - "thiserror 2.0.21", - "tracing", -] - -[[package]] -name = "taceo-eddsa-babyjubjub" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10becbd559ee21d8376a4c2e18f0e38257ec1b5bfff3dcb2cb2945ca1db38906" -dependencies = [ - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "blake3", - "eyre", - "num-bigint", - "rand 0.8.8", - "serde", - "taceo-ark-babyjubjub 0.5.3", - "taceo-ark-serde-compat 0.5.0", - "taceo-poseidon2 0.2.1", - "zeroize", -] - -[[package]] -name = "taceo-oprf" -version = "0.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c10bf82ba41bbc8a6693362d67738145c77bdcec36345d85d4a86d2fb7dc44dc" -dependencies = [ - "taceo-oprf-types 0.15.1", -] - -[[package]] -name = "taceo-oprf" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "617cc21e04912e2b4989a110459e07b072ccac250d666f65bba5ffccc5b90795" -dependencies = [ - "taceo-oprf-types 0.16.1", -] - -[[package]] -name = "taceo-oprf-core" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f66b5a67d71a6022abb42198d87184aebbac1f45538b5858d22c87d0958a805" -dependencies = [ - "ark-ec 0.6.0", - "ark-ff 0.6.0", - "ark-serialize 0.6.0", - "blake3", - "itertools 0.15.0", - "num-bigint", - "rand 0.8.8", - "serde", - "subtle", - "taceo-ark-babyjubjub 0.6.0", - "taceo-ark-serde-compat 0.6.1", - "taceo-poseidon2 0.3.0", - "uuid", - "zeroize", -] - -[[package]] -name = "taceo-oprf-types" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de73b98dd21ab1048ffb869f09dac92d9f70e0f93f5956f3d3e9873640a78b3" -dependencies = [ - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "async-trait", - "eyre", - "http", - "ruint", - "serde", - "taceo-ark-babyjubjub 0.5.3", - "taceo-ark-serde-compat 0.5.0", - "taceo-oprf-core", - "uuid", -] - -[[package]] -name = "taceo-oprf-types" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d344eb6f0dc1a872a4cdf389099d4556a4633bc5c9e037bd4583ee810df981" -dependencies = [ - "ark-ff 0.6.0", - "ark-serialize 0.6.0", - "async-trait", - "eyre", - "http", - "ruint", - "serde", - "taceo-ark-babyjubjub 0.6.0", - "taceo-ark-serde-compat 0.6.1", - "taceo-oprf-core", - "uuid", -] - -[[package]] -name = "taceo-poseidon2" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac59d3df4c827b3496bff929aebd6440997a5c2e946f46ff4fdd76f318447581" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "ark-std 0.5.0", - "num-bigint", - "num-traits", -] - -[[package]] -name = "taceo-poseidon2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c167df5e799207335a7acfec5404aa8fae59fad877c6cd20205815d690ba7157" -dependencies = [ - "ark-bn254 0.6.0", - "ark-ff 0.6.0", - "ark-std 0.6.0", - "num-bigint", - "num-traits", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tar" -version = "0.4.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840" -dependencies = [ - "filetime", - "libc", - "xattr", -] - -[[package]] -name = "tempfile" -version = "3.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" -dependencies = [ - "fastrand", - "getrandom 0.4.3", - "once_cell", - "rustix", - "windows-sys 0.61.2", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "textwrap" -version = "0.16.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ecfad6c3abc80a577f2b91c1e412ee57e7a060d430b553c1b0c940974ebcd49" -dependencies = [ - "smawk", - "unicode-width", -] - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09e52cb86a36cede5cb101bf8908837b3e4c6e5e59fe7fd85c23fb56200d189e" -dependencies = [ - "thiserror-impl 2.0.21", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "thread_local" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - -[[package]] -name = "time" -version = "0.3.55" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" -dependencies = [ - "deranged", - "num-conv", - "powerfmt", - "serde_core", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" - -[[package]] -name = "time-macros" -version = "0.2.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinystr" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinyvec" -version = "1.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee" - -[[package]] -name = "tokio" -version = "1.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" -dependencies = [ - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "tokio-macros", - "windows-sys 0.61.2", -] - -[[package]] -name = "tokio-macros" -version = "2.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9cc2678c2cdd569ef8215e2afd7954ada2ae20b4fdd2c5fe6139a3b02d105db" -dependencies = [ - "rustls", - "tokio", -] - -[[package]] -name = "tokio-stream" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "libc", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_edit 0.22.27", -] - -[[package]] -name = "toml" -version = "1.1.6+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "920602543f0911ab71da12c50d59701da54c196d1a2bf5cb4b75667f137a406a" -dependencies = [ - "indexmap 2.14.2", - "serde_core", - "serde_spanned 1.1.1", - "toml_datetime 1.1.1+spec-1.1.0", - "toml_parser", - "toml_writer", - "winnow 1.0.4", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "1.1.1+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap 2.14.2", - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_write", - "winnow 0.7.15", -] - -[[package]] -name = "toml_edit" -version = "0.25.15+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1340ea94a5856333492c9064b02c778b191dd2c853778d9609debdcdfea3a614" -dependencies = [ - "indexmap 2.14.2", - "toml_datetime 1.1.1+spec-1.1.0", - "toml_parser", - "winnow 1.0.4", -] - -[[package]] -name = "toml_parser" -version = "1.1.3+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" -dependencies = [ - "winnow 1.0.4", -] - -[[package]] -name = "toml_write" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" - -[[package]] -name = "toml_writer" -version = "1.1.2+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" - -[[package]] -name = "tonic" -version = "0.14.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac2a5518c70fa84342385732db33fb3f44bc4cc748936eb5833d2df34d6445ef" -dependencies = [ - "async-trait", - "axum", - "base64 0.22.1", - "bytes", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-timeout", - "hyper-util", - "percent-encoding", - "pin-project", - "rustls-native-certs", - "socket2", - "sync_wrapper", - "tokio", - "tokio-rustls", - "tokio-stream", - "tower", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tonic-build" -version = "0.14.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68f61875ac5293cf72e6c8cf0158086428c82c37229e98c840878f1706b0322" -dependencies = [ - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "tonic-prost" -version = "0.14.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50849f68853be452acf590cde0b146665b8d507b3b8af17261df47e02c209ea0" -dependencies = [ - "bytes", - "prost 0.14.4", - "tonic", -] - -[[package]] -name = "tonic-prost-build" -version = "0.14.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "654e5643eff75d7f8c99197ce1440ed19a3474eada74c12bbac488b2cafdae27" -dependencies = [ - "prettyplease", - "proc-macro2", - "prost-build", - "prost-types", - "quote", - "syn 2.0.119", - "tempfile", - "tonic-build", -] - -[[package]] -name = "tower" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" -dependencies = [ - "futures-core", - "futures-util", - "indexmap 2.14.2", - "pin-project-lite", - "slab", - "sync_wrapper", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-http" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" -dependencies = [ - "bitflags 2.13.2", - "bytes", - "futures-util", - "http", - "http-body", - "pin-project-lite", - "tower", - "tower-layer", - "tower-service", - "url", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-error" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" -dependencies = [ - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" -dependencies = [ - "nu-ansi-term", - "sharded-slab", - "smallvec 1.16.2", - "thread_local", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "tract-core" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7b5347639690871b124593a8c8903f1f369531498b8abaebd18eb5c58163971" -dependencies = [ - "anyhow", - "anymap3", - "bit-set", - "derive-new", - "downcast-rs", - "dyn-clone", - "lazy_static", - "log", - "maplit", - "ndarray", - "num-complex", - "num-integer", - "num-traits", - "paste", - "rustfft", - "smallvec 1.16.2", - "tract-data", - "tract-linalg", -] - -[[package]] -name = "tract-data" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a3f476a1804e05708e9bc5e2d29dcab82bad531e357d3d14d7da80fbba0b6d" -dependencies = [ - "anyhow", - "downcast-rs", - "dyn-clone", - "dyn-hash", - "half", - "itertools 0.12.1", - "lazy_static", - "maplit", - "ndarray", - "nom 7.1.3", - "num-integer", - "num-traits", - "parking_lot", - "scan_fmt", - "smallvec 1.16.2", - "string-interner", -] - -[[package]] -name = "tract-hir" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dca047ba1151fe3446fb0194d4b6ddb9ae8f361337c47a267870c53605fbafb" -dependencies = [ - "derive-new", - "log", - "tract-core", -] - -[[package]] -name = "tract-linalg" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb8e0703eb53ef1bbf77050ff261675818dd5f0d6c27044c6e48ede9b845f9e0" -dependencies = [ - "byteorder", - "cc", - "derive-new", - "downcast-rs", - "dyn-clone", - "dyn-hash", - "half", - "lazy_static", - "liquid", - "liquid-core", - "liquid-derive", - "log", - "num-traits", - "paste", - "rayon", - "scan_fmt", - "smallvec 1.16.2", - "time", - "tract-data", - "unicode-normalization", - "walkdir", -] - -[[package]] -name = "tract-nnef" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72cb88a4367ec2c695610223cf886f01fc1deb5c9a82c7a74b1a5d32dc0b1466" -dependencies = [ - "byteorder", - "flate2", - "log", - "nom 7.1.3", - "tar", - "tract-core", - "walkdir", -] - -[[package]] -name = "tract-onnx" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5830aa672b2aa4dc98a97a36e5988eaf77b3ecee65e2601619588d2ca557008" -dependencies = [ - "bytes", - "derive-new", - "log", - "memmap2", - "num-integer", - "prost 0.11.9", - "smallvec 1.16.2", - "tract-hir", - "tract-nnef", - "tract-onnx-opl", -] - -[[package]] -name = "tract-onnx-opl" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121d3d224c806ba3d941f4bb50943ad33b59d1da5ae704d0e4e76d2808221f96" -dependencies = [ - "getrandom 0.2.17", - "log", - "rand 0.8.8", - "rand_distr", - "rustfft", - "tract-nnef", -] - -[[package]] -name = "transpose" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e" -dependencies = [ - "num-integer", - "strength_reduce", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "ttf-parser" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" - -[[package]] -name = "typenum" -version = "1.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" - -[[package]] -name = "ucd-trie" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" - -[[package]] -name = "uint" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] - -[[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicase" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" - -[[package]] -name = "unicode-ident" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954" - -[[package]] -name = "unicode-normalization" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" - -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "uniffi" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76407f5f396a2c949a069eff4a9fca9ce462410eb872bffef4c2b7b89804a77a" -dependencies = [ - "anyhow", - "cargo_metadata", - "uniffi_bindgen", - "uniffi_core", - "uniffi_macros", - "uniffi_pipeline", -] - -[[package]] -name = "uniffi_bindgen" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df3ced8f0eda3de99f6d50820e8628f443da8e4f447f477d1403ceba29dacbd" -dependencies = [ - "anyhow", - "askama", - "camino", - "cargo_metadata", - "fs-err", - "glob", - "goblin", - "heck", - "indexmap 2.14.2", - "once_cell", - "serde", - "tempfile", - "textwrap", - "toml 1.1.6+spec-1.1.0", - "uniffi_internal_macros", - "uniffi_meta", - "uniffi_pipeline", - "uniffi_udl", -] - -[[package]] -name = "uniffi_core" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7530ae8efeaaa488622865966763fe0294832779fff80508c36d69c6a874a6a" -dependencies = [ - "anyhow", - "async-compat", - "bytes", - "once_cell", - "static_assertions", -] - -[[package]] -name = "uniffi_internal_macros" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4bad017164375d99450d70495014810d15a84ba9da6ed14b9628b1424223ba" -dependencies = [ - "anyhow", - "indexmap 2.14.2", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "uniffi_macros" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b855a58da153739ce6e863f6e296edc3716a093768c4d3d957f17f5e4317c60" -dependencies = [ - "camino", - "fs-err", - "once_cell", - "proc-macro2", - "quote", - "serde", - "syn 2.0.119", - "toml 1.1.6+spec-1.1.0", - "uniffi_meta", -] - -[[package]] -name = "uniffi_meta" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af0c88664a9cb9559856f5a250283c9708923b303170e2e5c7db8f4ad65e9459" -dependencies = [ - "anyhow", - "siphasher", - "uniffi_internal_macros", - "uniffi_pipeline", -] - -[[package]] -name = "uniffi_pipeline" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d00f5c044b4a3dca0b1226c92ddaeea626f337470e22180dd182160c87a06b0b" -dependencies = [ - "anyhow", - "heck", - "indexmap 2.14.2", - "tempfile", - "uniffi_internal_macros", -] - -[[package]] -name = "uniffi_udl" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55dfd9c778d6b39cb5acd541d9ff63431974035d2bad83c897b766a6ee3152ac" -dependencies = [ - "anyhow", - "textwrap", - "uniffi_meta", - "weedle2", -] - -[[package]] -name = "universal-hash" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" -dependencies = [ - "crypto-common 0.1.7", - "subtle", -] - -[[package]] -name = "unsafe-libyaml" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", - "serde_derive", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "utils" -version = "0.1.0" -source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" -dependencies = [ - "approx", - "bincode", - "data-encoding", - "fast_image_resize", - "histogram_equalization", - "image", - "imageproc", - "inventory", - "itertools 0.13.0", - "log", - "nalgebra", - "ndarray", - "ndarray-stats", - "num-traits", - "opencv", - "palette", - "rustfft", - "schemars 0.8.22", - "serde", - "serde_yaml", - "sha2 0.10.9", - "thiserror 1.0.69", - "tracing", - "uniffi", -] - -[[package]] -name = "utils_macros" -version = "0.1.0" -source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "uuid" -version = "1.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ef6dac1e96601b4fb3acccccff2139741fcb757cb9a36089bf5be91cfb285ce" -dependencies = [ - "getrandom 0.4.3", - "js-sys", - "serde_core", - "wasm-bindgen", -] - -[[package]] -name = "v_frame" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" -dependencies = [ - "aligned-vec", - "num-traits", - "wasm-bindgen", -] - -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.4+wasi-0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.129" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cbab34de2d982e9b48e18d216d04c4a6f641066ff19ffb699980f591ee3610e" -dependencies = [ - "js-sys", - "tokio", - "wasm-bindgen", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.129" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.129" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn 3.0.6", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.129" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "web-sys" -version = "0.3.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88261b9deccee56594c11a3460c462c41f58d148598fe70ad77070126a68aba4" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "weedle2" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "998d2c24ec099a87daf9467808859f9d82b61f1d9c9701251aea037f514eae0e" -dependencies = [ - "nom 7.1.3", -] - -[[package]] -name = "wide" -version = "0.7.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" -dependencies = [ - "bytemuck", - "safe_arch", -] - -[[package]] -name = "widestring" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" -dependencies = [ - "windows-collections", - "windows-core", - "windows-future", - "windows-numerics", -] - -[[package]] -name = "windows-collections" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" -dependencies = [ - "windows-core", -] - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-future" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" -dependencies = [ - "windows-core", - "windows-link", - "windows-threading", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-numerics" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" -dependencies = [ - "windows-core", - "windows-link", -] - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-threading" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" -dependencies = [ - "memchr", -] - -[[package]] -name = "wit-bindgen" -version = "0.57.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" - -[[package]] -name = "wnaf" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "795ca18b3fdb5e62bf982199278341ddcf7ebf7d32e25e212ad05d496e95f6fa" -dependencies = [ - "ff 0.14.0", - "group 0.14.0", - "hybrid-array", - "primefield", -] - -[[package]] -name = "world-id-primitives" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7430d4229c914b7136a028ad478dacc7983a8bfb926af9f5a4e5e31550d4f1cf" -dependencies = [ - "alloy", - "alloy-primitives", - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "arrayvec", - "embed-doc-image", - "eyre", - "getrandom 0.3.4", - "hex", - "provekit-common", - "rand 0.8.8", - "ruint", - "secrecy", - "serde", - "serde_json", - "sha2 0.11.0", - "sha3 0.10.9", - "strum 0.27.2", - "taceo-ark-babyjubjub 0.5.3", - "taceo-ark-serde-compat 0.5.0", - "taceo-circom-types", - "taceo-eddsa-babyjubjub", - "taceo-oprf 0.17.2", - "taceo-poseidon2 0.2.1", - "thiserror 2.0.21", - "url", - "uuid", -] - -[[package]] -name = "world-id-primitives" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76ac44fcbb959d6460462b29ee8798ef28baa13cea47ac8e2e9ea4edb22be3b" -dependencies = [ - "alloy", - "alloy-primitives", - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "arrayvec", - "embed-doc-image", - "eyre", - "getrandom 0.3.4", - "hex", - "provekit-common", - "rand 0.8.8", - "ruint", - "secrecy", - "serde", - "serde_json", - "sha2 0.11.0", - "sha3 0.10.9", - "strum 0.27.2", - "taceo-ark-babyjubjub 0.5.3", - "taceo-ark-serde-compat 0.5.0", - "taceo-circom-types", - "taceo-eddsa-babyjubjub", - "taceo-oprf 0.18.2", - "taceo-poseidon2 0.2.1", - "thiserror 2.0.21", - "url", - "uuid", -] - -[[package]] -name = "writeable" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "xattr" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" -dependencies = [ - "libc", - "rustix", -] - -[[package]] -name = "xz2" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" -dependencies = [ - "lzma-sys", -] - -[[package]] -name = "y4m" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" - -[[package]] -name = "yoke" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", - "synstructure", -] - -[[package]] -name = "yuv" -version = "0.8.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a295923535c00a4e72a50a0a1130097f93160b39892dd4d2d006b1e2b90d6bf9" -dependencies = [ - "num-traits", -] - -[[package]] -name = "zerocopy" -version = "0.8.59" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6df92bf3d9227be3d53173901ddbffac2babc27ae50f397776ffd6dc33f800cb" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.59" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac4f328cf2f05d084e496c3e9c3f33ed0a183656a16e1fcec4d464d8373aec82" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "zerofrom" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "zerotrie" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", -] - -[[package]] -name = "zip" -version = "2.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" -dependencies = [ - "arbitrary", - "crc32fast", - "crossbeam-utils", - "displaydoc", - "flate2", - "indexmap 2.14.2", - "memchr", - "thiserror 2.0.21", - "zopfli", -] - -[[package]] -name = "zlib-rs" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b268e58e7c693d7c271f93ffc4ba3b380412554231c85bf61ca7af91042a4112" - -[[package]] -name = "zmij" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" - -[[package]] -name = "zopfli" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" -dependencies = [ - "bumpalo", - "crc32fast", - "log", - "simd-adler32", -] - -[[package]] -name = "zstd" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "7.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d80649ab6db9d9f6f9c80a40becd948eda4714a0a5ac8c4d157a32231c7882" -dependencies = [ - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.1.0+zstd.1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef0a8027ec3ee71300ab3bcbcd0393f434aa72b91ca6d635a39941deae8eea0" -dependencies = [ - "cc", - "pkg-config", -] - -[[package]] -name = "zune-core" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56377fd46368984a170bc5aac5567e52ca5da874caa60bea39fcbca78fb658b" - -[[package]] -name = "zune-inflate" -version = "0.2.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "zune-jpeg" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" -dependencies = [ - "zune-core", -] diff --git a/experiments/tee-demo/src/server/face-enrollment-helper/Cargo.toml b/experiments/tee-demo/src/server/face-enrollment-helper/Cargo.toml deleted file mode 100644 index 00bf367..0000000 --- a/experiments/tee-demo/src/server/face-enrollment-helper/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "staging-face-crypto" -version = "0.1.0" -edition = "2021" -publish = false - -[dependencies] -ampc-secret-sharing = { git = "https://github.com/worldcoin/ampc-common.git", rev = "3062538f0307471ed0dd2be8258952c807747141" } -oxide = { git = "https://github.com/worldcoin/oxide.git", rev = "329274a32be02be0bb39ca02adc4e4e4e438ada0" } -tokio = { version = "1", features = ["rt-multi-thread", "macros", "time"] } -crypto_box = { version = "0.9.1", features = ["seal"] } -base64 = "0.22" -rand = "0.8" -serde = { version = "1", features = ["derive"] } -serde_json = "1" -anyhow = "1" -world-id-primitives = "=0.14.0" -ark-babyjubjub = { package = "taceo-ark-babyjubjub", version = "0.5" } - -[profile.dev] -opt-level = 2 diff --git a/experiments/tee-demo/src/server/face-enrollment-helper/README.md b/experiments/tee-demo/src/server/face-enrollment-helper/README.md deleted file mode 100644 index 9f3aba2..0000000 --- a/experiments/tee-demo/src/server/face-enrollment-helper/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Local staging face enrollment helper - -This Rust executable supports the localhost-only selfie issuance route. It creates -and encrypts AMPC shares from synthetic input, obtains enrollment authentication -through Oxide, and verifies returned credential signatures and subject binding. -It is a server-side process, not a browser/WASM module or a face capture engine. - -Build from the repository root with `bun run build:selfie-helper`. The crate and -binary retain the name `staging-face-crypto`; the server invokes -`target/debug/staging-face-crypto` inside this directory. Build artifacts are ignored. - -Dependencies are pinned in `Cargo.toml` and `Cargo.lock`. The build command supplies -`build-config.toml` for Oxide's native dependency settings. Requests are bounded JSON -on stdin; successful responses are JSON on stdout, with failures on stderr and a -nonzero exit status. Never log the input or output payloads: they can contain -identity material and enrollment authentication headers. - -OpenCV is a transitive dependency of Oxide's Face Engine dependency, even though -this helper does not run face inference. The pinned dependency downloads its native -assets during the build. If this directory is moved, Ignition's cached metadata may -still reference its old absolute path. From the repository root, clear that package's -cache and rebuild: - -```sh -cargo clean --manifest-path src/server/face-enrollment-helper/Cargo.toml -p ignition -bun run build:selfie-helper -``` diff --git a/experiments/tee-demo/src/server/face-enrollment-helper/build-config.toml b/experiments/tee-demo/src/server/face-enrollment-helper/build-config.toml deleted file mode 100644 index ff08484..0000000 --- a/experiments/tee-demo/src/server/face-enrollment-helper/build-config.toml +++ /dev/null @@ -1,7 +0,0 @@ -# Native dependency settings from pinned Oxide .cargo/config.toml. -# Cargo does not inherit a git dependency's workspace configuration. -[env] -IGNITION_BUCKET_URL = "https://wld-ml-face-engine-public.worldcoin.org" -IGNITION_CACHE_PATH = "cache" -IGNITION_DIRECTORY_PATH = "assets/dependencies" -OPENCV_LINK_LIBS = "libopencv_imgproc,libopencv_core" diff --git a/experiments/tee-demo/src/server/face-enrollment-helper/src/main.rs b/experiments/tee-demo/src/server/face-enrollment-helper/src/main.rs deleted file mode 100644 index 5535b41..0000000 --- a/experiments/tee-demo/src/server/face-enrollment-helper/src/main.rs +++ /dev/null @@ -1,144 +0,0 @@ -//! Local staging adapter; no WalletKit custody. Oxide owns enrollment authentication. -//! Share serialization/sealing follows Oxide's face_embedding_shares.rs. -//! ZKP challenge fetching and header construction call Oxide directly. -use anyhow::{ensure, Context, Result}; -use base64::{engine::general_purpose::STANDARD as B64, Engine}; -use serde::Deserialize; -use serde_json::json; -use std::io::{self, Read}; -use std::str::FromStr; - -#[derive(Deserialize)] -#[serde(tag = "operation", rename_all = "snake_case", deny_unknown_fields)] -enum Input { - Shares { - public_keys: [String; 3], - }, - Authenticate { - seed: String, - kind: AuthenticationKind, - }, - Verify { - credential: String, - sub: String, - public_key: [String; 2], - }, -} - -#[derive(Deserialize)] -#[serde(rename_all = "lowercase")] -enum AuthenticationKind { - GetIdentity, - UserCentricEnrollment, -} - -fn shares(public_keys: [String; 3]) -> Result { - // A fresh synthetic int4 embedding. Never accepts a user's biometric input. - let mut rng = rand::thread_rng(); - let embedding = ampc_secret_sharing::FaceVector::random_normalized(&mut rng); - let shares = embedding - .secret_share(&mut rng) - .map_err(|_| anyhow::anyhow!("create AMPC shares"))?; - let mut encrypted = Vec::new(); - for (share, key) in shares.iter().zip(public_keys) { - let bytes: Vec = share - .0 - .iter() - .flat_map(|value| value.to_le_bytes()) - .collect(); - let encoded = - serde_json::to_vec(&json!({"version": "2.5", "share_data": B64.encode(bytes)}))?; - let key = B64.decode(key.trim()).context("decode staging PKI key")?; - let key = crypto_box::PublicKey::from_slice(&key).context("parse staging PKI key")?; - let sealed = key - .seal(&mut rng, &encoded) - .map_err(|_| anyhow::anyhow!("seal AMPC share"))?; - encrypted.push(B64.encode(sealed)); - } - Ok(json!({"shares": encrypted})) -} - -async fn authenticate(seed: String, kind: AuthenticationKind) -> Result { - ensure!( - seed.len() == 64 && seed.bytes().all(|c| c.is_ascii_hexdigit()), - "invalid enrollment seed" - ); - // Preserve the existing UTF-8 hex seed and identity_trapdoor domain. - // Switching to IdentityContext::Face would change saved enrollment identities. - let identity = - oxide::identity::Identity::new(seed, oxide::identity_context::IdentityContext::Orb); - let challenge_type = match kind { - AuthenticationKind::GetIdentity => oxide::ChallengeType::GetIdentity, - AuthenticationKind::UserCentricEnrollment => oxide::ChallengeType::UserCentricEnrollment, - }; - let authentication = oxide::ZkpAuthentication::new( - "https://app.stage.face.worldcoin.org".into(), - "WorldApp/1.0.0 Oxide/1.0.0 iOS".into(), - ); - let header = tokio::time::timeout( - std::time::Duration::from_secs(80), - authentication.create_header(&identity, challenge_type), - ) - .await - .context("enrollment authentication deadline expired")? - .context("Oxide enrollment authentication failed")?; - Ok(json!({"identityCommitment": identity.commitment().to_string(), "header": header})) -} - -fn verify(credential: String, sub: String, public_key: [String; 2]) -> Result { - let credential: world_id_primitives::Credential = - serde_json::from_slice(&B64.decode(credential)?)?; - let sub: world_id_primitives::FieldElement = sub - .parse() - .map_err(|_| anyhow::anyhow!("invalid subject"))?; - let x = ark_babyjubjub::Fq::from_str(&public_key[0]) - .map_err(|_| anyhow::anyhow!("invalid issuer key"))?; - let y = ark_babyjubjub::Fq::from_str(&public_key[1]) - .map_err(|_| anyhow::anyhow!("invalid issuer key"))?; - let point = ark_babyjubjub::EdwardsAffine::new_unchecked(x, y); - ensure!( - !point.is_zero() && point.is_on_curve() && point.is_in_correct_subgroup_assuming_on_curve(), - "invalid issuer key" - ); - let key = world_id_primitives::EdDSAPublicKey { pk: point }; - ensure!( - credential.issuer_schema_id == 11 && credential.sub == sub && credential.issuer == key, - "credential binding mismatch" - ); - ensure!( - credential - .verify_signature(&key) - .map_err(|_| anyhow::anyhow!("credential signature verification failed"))?, - "invalid credential signature" - ); - Ok(json!({"verified": true})) -} - -async fn run() -> Result<()> { - let mut text = String::new(); - io::stdin().take(262_145).read_to_string(&mut text)?; - ensure!(text.len() <= 262_144, "input too large"); - let output = match serde_json::from_str::(&text)? { - Input::Shares { public_keys } => shares(public_keys)?, - Input::Authenticate { seed, kind } => authenticate(seed, kind).await?, - Input::Verify { - credential, - sub, - public_key, - } => verify(credential, sub, public_key)?, - }; - println!("{}", serde_json::to_string(&output)?); - Ok(()) -} - -#[tokio::main] -async fn main() { - if let Err(error) = run().await { - // Do not print serde input, identity material, or proof data on failure. - let _ = error; - eprintln!( - "Staging face cryptography failed; check the helper input and pinned dependencies." - ); - std::process::exit(1); - } -} diff --git a/experiments/tee-demo/src/server/http.ts b/experiments/tee-demo/src/server/http.ts deleted file mode 100644 index 0e9d2a2..0000000 --- a/experiments/tee-demo/src/server/http.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { resolve, sep } from 'node:path' -import { GET as stagingRp } from './routes/staging-rp' -import { POST as teeAdmission } from './routes/tee-admission' -import { GET as clientContext } from './routes/client-context' -import { handle as selfieEnclave } from './routes/selfie-enclave' -import { POST as fauxCredential } from './routes/faux-credential' -import { POST as selfieCredential } from './routes/selfie-credential' - -const endpoints: Record Response | Promise }> = { - '/api/selfie-enclave': { method: 'GET', handle: selfieEnclave }, - '/api/selfie-admission': { method: 'POST', handle: selfieEnclave }, - '/api/tee-admission': { method: 'POST', handle: teeAdmission }, - '/api/client-context': { method: 'GET', handle: clientContext }, - '/api/staging-rp': { method: 'GET', handle: stagingRp }, - '/api/faux-credential': { method: 'POST', handle: fauxCredential }, - '/api/selfie-credential': { method: 'POST', handle: selfieCredential }, -} - -export async function handleRequest(request: Request): Promise { - const url = new URL(request.url) - const endpoint = endpoints[url.pathname] - let response: Response - if (endpoint) { - response = - request.method === endpoint.method - ? await endpoint.handle(request) - : new Response('Method not allowed', { status: 405, headers: { Allow: endpoint.method } }) - } else if (url.pathname.startsWith('/api/')) { - response = Response.json({ error: 'Not found' }, { status: 404 }) - } else if (!['GET', 'HEAD'].includes(request.method)) { - response = new Response('Method not allowed', { status: 405, headers: { Allow: 'GET, HEAD' } }) - } else { - const root = resolve('dist') - let path: string - try { - path = resolve(root, '.' + decodeURIComponent(url.pathname)) - } catch { - return new Response('Invalid path', { status: 400, headers: { 'Referrer-Policy': 'no-referrer' } }) - } - if (path !== root && !path.startsWith(root + sep)) { - response = new Response('Not found', { status: 404 }) - } else { - const page = ['/', '/verify', '/selfie-check', '/selfie-demo'].includes(url.pathname) - const file = Bun.file(page ? resolve(root, 'index.html') : path) - response = (await file.exists()) - ? new Response(request.method === 'HEAD' ? null : file, { - headers: { 'Content-Type': file.type, 'Cache-Control': page ? 'no-store' : 'no-cache' }, - }) - : new Response('Not found', { status: 404 }) - } - } - response.headers.set('Referrer-Policy', 'no-referrer') - return response -} diff --git a/experiments/tee-demo/src/server/index.ts b/experiments/tee-demo/src/server/index.ts deleted file mode 100644 index 7e78a25..0000000 --- a/experiments/tee-demo/src/server/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { handleRequest } from './http' - -const port = Number(process.env.PORT || 3100) -if (!Number.isInteger(port) || port < 1 || port > 65535) throw new Error('Invalid PORT') -const server = Bun.serve({ - hostname: '127.0.0.1', - port, - idleTimeout: 180, - maxRequestBodySize: 1024 * 1024, - fetch: handleRequest, - error() { - console.error('local_api_request_failed') - return Response.json( - { error: 'Local API request failed' }, - { status: 500, headers: { 'Referrer-Policy': 'no-referrer' } } - ) - }, -}) -console.info(`Local API listening on http://127.0.0.1:${server.port}`) -for (const signal of ['SIGINT', 'SIGTERM'] as const) { - process.on(signal, () => { - server.stop(true) - process.exit(0) - }) -} diff --git a/experiments/tee-demo/src/server/routes/client-context.ts b/experiments/tee-demo/src/server/routes/client-context.ts deleted file mode 100644 index 7174163..0000000 --- a/experiments/tee-demo/src/server/routes/client-context.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { requestIp } from '@/lib/request-ip' - -export function GET(request: Request) { - return Response.json(requestIp(request.headers), { headers: { 'Cache-Control': 'no-store' } }) -} diff --git a/experiments/tee-demo/src/server/routes/faux-credential.ts b/experiments/tee-demo/src/server/routes/faux-credential.ts deleted file mode 100644 index 5187d2f..0000000 --- a/experiments/tee-demo/src/server/routes/faux-credential.ts +++ /dev/null @@ -1,64 +0,0 @@ -const ISSUER = 'https://faux-issuer.us.id-infra.worldcoin.dev/issue' - -async function readText(body: ReadableStream | null, limit: number): Promise { - if (!body) throw new Error('Missing body') - const reader = body.getReader() - const decoder = new TextDecoder() - let size = 0 - let text = '' - try { - for (;;) { - const { done, value } = await reader.read() - if (done) return text + decoder.decode() - size += value.byteLength - if (size > limit) { - await reader.cancel() - throw new Error('Body too large') - } - text += decoder.decode(value, { stream: true }) - } - } finally { - reader.releaseLock() - } -} - -export async function POST(request: Request) { - if (request.headers.get('origin') !== new URL(request.url).origin) { - return Response.json({ error: 'Same-origin requests required' }, { status: 403 }) - } - if (request.headers.get('content-type')?.split(';')[0].trim() !== 'application/json') { - return Response.json({ error: 'Expected JSON' }, { status: 415 }) - } - let sub: string - try { - const body = JSON.parse(await readText(request.body, 1024)) as { sub?: unknown } | null - if (!body || typeof body.sub !== 'string' || !/^0x[0-9a-f]{64}$/.test(body.sub)) - throw new Error('Invalid subject') - sub = body.sub - } catch { - return Response.json({ error: 'Expected a 32-byte lowercase hex subject' }, { status: 400 }) - } - try { - const upstream = await fetch(ISSUER, { - method: 'POST', - headers: { 'content-type': 'application/json' }, - body: JSON.stringify({ sub }), - cache: 'no-store', - signal: AbortSignal.any([request.signal, AbortSignal.timeout(20_000)]), - }) - if (!upstream.ok) { - await upstream.body?.cancel() - console.warn('faux_issuer_failed', { operation: 'issue', upstreamStatus: upstream.status }) - return Response.json({ error: 'Staging faux issuer rejected the request' }, { status: 502 }) - } - const body = await readText(upstream.body, 1_000_000) - return new Response(body, { headers: { 'Content-Type': 'application/json', 'Cache-Control': 'no-store' } }) - } catch (cause) { - const failure = cause instanceof DOMException && cause.name === 'TimeoutError' ? 'timeout' : 'request_failed' - console.warn('faux_issuer_failed', { operation: 'issue', failure }) - return Response.json( - { error: 'Staging faux issuer unavailable' }, - { status: failure === 'timeout' ? 504 : 502 } - ) - } -} diff --git a/experiments/tee-demo/src/server/routes/selfie-credential.ts b/experiments/tee-demo/src/server/routes/selfie-credential.ts deleted file mode 100644 index a465501..0000000 --- a/experiments/tee-demo/src/server/routes/selfie-credential.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { EnrollmentError, issueOrPollSelfie } from '@/lib/selfie-issuer-server' - -export async function POST(request: Request) { - const url = new URL(request.url) - if (!['localhost', '127.0.0.1', '[::1]'].includes(url.hostname) || request.headers.get('origin') !== url.origin) - return Response.json( - { error: 'Synthetic staging issuance is available only from this localhost demo.' }, - { status: 403 } - ) - if (request.headers.get('content-type')?.split(';')[0].trim() !== 'application/json') - return Response.json({ error: 'Expected JSON.' }, { status: 415 }) - let body: { sub: string; token: string } - try { - const reader = request.body?.getReader() - if (!reader) throw new Error('Missing body') - let text = '' - try { - for (;;) { - const { done, value } = await reader.read() - if (done) break - text += new TextDecoder().decode(value) - if (text.length > 1024) { - await reader.cancel() - throw new Error('Body too large') - } - } - } finally { - reader.releaseLock() - } - body = JSON.parse(text) - if (!body || !/^0x[0-9a-f]{64}$/.test(body.sub) || !/^[0-9a-f]{64}$/.test(body.token)) - throw new Error('Invalid input') - } catch { - return Response.json({ error: 'Expected a schema-11 subject and resume token.' }, { status: 400 }) - } - try { - const result = await issueOrPollSelfie( - body.sub, - body.token, - AbortSignal.any([request.signal, AbortSignal.timeout(170_000)]) - ) - return Response.json(result, { headers: { 'Cache-Control': 'no-store' } }) - } catch (error) { - const status = error instanceof EnrollmentError ? error.status : 502 - console.warn('staging_selfie_issuance_failed', { status, operation: 'issue_or_poll' }) - return Response.json( - { - error: - error instanceof EnrollmentError - ? error.message - : 'Staging enrollment could not complete. Retry resumes the saved operation without enrolling again.', - }, - { status, headers: { 'Cache-Control': 'no-store' } } - ) - } -} diff --git a/experiments/tee-demo/src/server/routes/selfie-enclave.ts b/experiments/tee-demo/src/server/routes/selfie-enclave.ts deleted file mode 100644 index 9479f9c..0000000 --- a/experiments/tee-demo/src/server/routes/selfie-enclave.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { loadPolicy, parseChallenge, readSigningKey, signChallenge } from '../selfie-enclave' - -const reply = (status: number, data: unknown) => - Response.json(data, { status, headers: { 'Cache-Control': 'no-store' } }) -const configFromEnv = () => ({ - enabled: process.env.NODE_ENV !== 'production' && process.env.LOCAL_TEE_DEMO_ADMISSION === '1', - origin: process.env.LOCAL_TEE_ORIGIN || 'http://localhost:3100', - policyFile: process.env.TEE_ENROLLMENT_CONFIG_FILE, - keyFile: process.env.TEE_ADMISSION_KEY_FILE, -}) - -export async function handle(request: Request, config = configFromEnv()) { - if (!config.enabled) return reply(404, { error: 'Not found' }) - const url = new URL(request.url) - if ( - url.protocol !== 'http:' || - !['localhost', '127.0.0.1'].includes(url.hostname) || - url.origin !== config.origin || - request.headers.get('sec-fetch-site') !== 'same-origin' || - (request.method === 'POST' && request.headers.get('origin') !== config.origin) - ) - return reply(403, { error: 'Staging admission requires the configured localhost origin.' }) - if (!config.policyFile || !config.keyFile) - return reply(503, { error: 'Staging enclave policy and admission key are not configured.' }) - let policy - try { - policy = await loadPolicy(config.policyFile) - } catch { - return reply(503, { error: 'Staging enclave policy is unavailable or invalid.' }) - } - if (request.method === 'GET') return reply(200, policy) - if (request.method !== 'POST') return reply(405, { error: 'Expected GET or POST' }) - if (request.headers.get('content-type')?.split(';')[0].trim() !== 'application/json') - return reply(415, { error: 'Expected JSON' }) - let challenge - const reader = request.body?.getReader() - if (!reader) return reply(400, { error: 'Missing challenge' }) - let timer: ReturnType | undefined - try { - const body = await Promise.race([ - (async () => { - const chunks: Uint8Array[] = [] - let size = 0 - for (;;) { - const { done, value } = await reader.read() - if (done) break - size += value.length - if (size > 2048) throw new Error('Oversized challenge') - chunks.push(value) - } - return JSON.parse(Buffer.concat(chunks).toString('utf8')) - })(), - new Promise((_, reject) => { - timer = setTimeout(() => reject(new Error('Timed out')), 5000) - }), - ]) - challenge = parseChallenge(body, policy.audience) - } catch { - return reply(400, { error: 'Invalid or incomplete admission challenge.' }) - } finally { - clearTimeout(timer) - await reader.cancel().catch(() => { - /* Request already disconnected. */ - }) - } - try { - return reply(200, signChallenge(challenge, await readSigningKey(config.keyFile), Math.floor(Date.now() / 1000))) - } catch { - return reply(503, { error: 'Staging admission signing key is unavailable or invalid.' }) - } -} diff --git a/experiments/tee-demo/src/server/routes/staging-rp.ts b/experiments/tee-demo/src/server/routes/staging-rp.ts deleted file mode 100644 index 38c9948..0000000 --- a/experiments/tee-demo/src/server/routes/staging-rp.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { createPublicClient, http, parseAbi } from 'viem' - -// World ID protocol staging deployment on World Chain (chain 480). -const registry = '0x37d2462fE7B4a07987263AAd062C6593C4f567b9' -const client = createPublicClient({ - transport: http('https://worldchain-mainnet.g.alchemy.com/public', { timeout: 10000, retryCount: 0 }), -}) -const abi = parseAbi([ - 'function getRp(uint64 rpId) view returns ((bool initialized, bool active, address manager, address signer, uint160 oprfKeyId, string unverifiedWellKnownDomain))', -]) -export async function GET(request: Request) { - const id = new URL(request.url).searchParams.get('id') - if (!id || !/^rp_[0-9a-f]{1,16}$/i.test(id)) return Response.json({ error: 'Invalid RP ID.' }, { status: 400 }) - try { - const rp = await client.readContract({ - address: registry, - abi, - functionName: 'getRp', - args: [BigInt('0x' + id.slice(3))], - }) - if (!rp.initialized || !rp.active) - return Response.json({ error: 'This RP is not active on staging.' }, { status: 422 }) - return Response.json( - { signer: rp.signer, oprfKeyId: `0x${rp.oprfKeyId.toString(16)}` }, - { headers: { 'Cache-Control': 'no-store' } } - ) - } catch { - console.warn('staging_rp_lookup_failed', { operation: 'read_rp_registry' }) - return Response.json({ error: 'Could not validate this RP against the staging registry.' }, { status: 502 }) - } -} diff --git a/experiments/tee-demo/src/server/routes/tee-admission.ts b/experiments/tee-demo/src/server/routes/tee-admission.ts deleted file mode 100644 index 710e9c7..0000000 --- a/experiments/tee-demo/src/server/routes/tee-admission.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { open } from 'node:fs/promises' - -/** Explicit local-demo provisioning. Production admission belongs to the authenticated proxy. */ -export async function POST( - request: Request, - config = { - enabled: process.env.LOCAL_TEE_DEMO_ADMISSION === '1' && process.env.NODE_ENV !== 'production', - tokenFile: process.env.LOCAL_TEE_TOKEN_FILE, - origin: process.env.LOCAL_TEE_ORIGIN || 'http://localhost:3100', - } -): Promise { - const reply = (status: number, data: unknown) => - Response.json(data, { - status, - headers: { 'Cache-Control': 'no-store', 'Referrer-Policy': 'no-referrer' }, - }) - if (!config.enabled) return reply(404, { error: 'Not found' }) - const url = new URL(request.url) - if ( - url.protocol !== 'http:' || - !['localhost', '127.0.0.1'].includes(url.hostname) || - url.origin !== config.origin || - request.headers.get('origin') !== config.origin || - request.headers.get('sec-fetch-site') !== 'same-origin' - ) - return reply(403, { error: 'Demo admission requires the configured localhost origin.' }) - if (request.method !== 'POST') return reply(405, { error: 'Expected POST' }) - if (request.headers.get('content-type')?.split(';')[0].trim() !== 'application/json') - return reply(415, { error: 'Expected JSON' }) - if (!config.tokenFile) return reply(503, { error: 'Demo token is not configured.' }) - try { - const file = await open(config.tokenFile, 'r') - let data: unknown - try { - const stat = await file.stat() - if (!stat.isFile() || (stat.mode & 0o077) !== 0 || stat.size > 4096) throw new Error('Invalid token file') - const buffer = Buffer.alloc(4097) - const { bytesRead } = await file.read(buffer, 0, buffer.length, 0) - if (bytesRead > 4096) throw new Error('Oversized token file') - data = JSON.parse(buffer.toString('utf8', 0, bytesRead)) - } finally { - await file.close() - } - if (!data || typeof data !== 'object') throw new Error('Invalid token') - const value = data as Record - const now = Math.floor(Date.now() / 1000) - if ( - typeof value.token !== 'string' || - !/^[0-9a-f]{64}$/.test(value.token) || - typeof value.expires_at !== 'number' || - !Number.isSafeInteger(value.expires_at) || - value.expires_at <= now || - value.expires_at > now + 600 - ) - throw new Error('Invalid token') - return reply(200, { token: value.token, expires_at: value.expires_at, mode: 'local' }) - } catch { - // The response exposes the degraded state, never the file contents or filesystem path. - return reply(503, { error: 'Demo token is unavailable or expired. Refresh local provisioning.' }) - } -} diff --git a/experiments/tee-demo/src/server/selfie-enclave.ts b/experiments/tee-demo/src/server/selfie-enclave.ts deleted file mode 100644 index d9522c2..0000000 --- a/experiments/tee-demo/src/server/selfie-enclave.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { constants } from 'node:fs' -import { open } from 'node:fs/promises' -import { createECDH, createPrivateKey, sign } from 'node:crypto' - -export function parsePolicy(value: unknown) { - if (!value || typeof value !== 'object') throw new Error('Invalid enclave policy') - const policy = value as Record - if ( - policy.endpoint !== 'wss://selfie-enrollment-stage.worldcoin.dev/v1/embeddings' || - policy.audience !== 'selfie-enrollment-stage.worldcoin.dev' || - !Array.isArray(policy.releases) || - !policy.releases.length || - policy.releases.length > 8 - ) - throw new Error('Invalid staging enclave policy') - for (const release of policy.releases) { - if ( - !release || - typeof release !== 'object' || - !['pcr0', 'pcr1', 'pcr2', 'worker_sha384'].every( - key => - typeof release[key] === 'string' && - /^[0-9a-f]{96}$/.test(release[key]) && - !/^0+$/.test(release[key]) - ) - ) - throw new Error('Invalid release measurements') - } - return { endpoint: policy.endpoint, audience: policy.audience, releases: policy.releases } -} - -export async function loadPolicy(path: string) { - const file = await open(path, 'r') - try { - if ((await file.stat()).size > 8192) throw new Error('Policy is too large') - const buffer = Buffer.alloc(8193) - const { bytesRead } = await file.read(buffer, 0, buffer.length, 0) - if (bytesRead > 8192) throw new Error('Policy is too large') - return parsePolicy(JSON.parse(buffer.toString('utf8', 0, bytesRead))) - } finally { - await file.close() - } -} - -export function parseChallenge(value: unknown, audience: string) { - if (!value || typeof value !== 'object') throw new Error('Invalid challenge') - const challenge = value as Record - if ( - Object.keys(challenge).sort().join(',') !== 'audience,nonce' || - challenge.audience !== audience || - !Array.isArray(challenge.nonce) || - challenge.nonce.length !== 32 || - !challenge.nonce.every(byte => Number.isInteger(byte) && byte >= 0 && byte <= 255) - ) - throw new Error('Invalid challenge') - return { audience, nonce: challenge.nonce as number[] } -} - -export function signChallenge(challenge: ReturnType, privateHex: string, now: number) { - if (!/^[0-9a-f]{64}$/.test(privateHex)) throw new Error('Invalid signing key') - const ecdh = createECDH('prime256v1') - ecdh.setPrivateKey(Buffer.from(privateHex, 'hex')) - const publicKey = ecdh.getPublicKey() - const key = createPrivateKey({ - format: 'jwk', - key: { - kty: 'EC', - crv: 'P-256', - d: Buffer.from(privateHex, 'hex').toString('base64url'), - x: publicKey.subarray(1, 33).toString('base64url'), - y: publicKey.subarray(33).toString('base64url'), - }, - }) - const expires_at = now + 30 - const message = JSON.stringify(['selfie-enrollment/admission/v1', challenge.audience, challenge.nonce, expires_at]) - return { - expires_at, - signature: sign('sha256', Buffer.from(message), { key, dsaEncoding: 'ieee-p1363' }).toString('hex'), - } -} - -export async function readSigningKey(path: string) { - const file = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW) - try { - const stat = await file.stat() - if (!stat.isFile() || (stat.mode & 0o077) !== 0 || stat.size > 128) throw new Error('Invalid key file') - // Descriptor read keeps permission checks and contents tied to the same file. - const buffer = Buffer.alloc(129) - const { bytesRead } = await file.read(buffer, 0, buffer.length, 0) - if (bytesRead > 128) throw new Error('Invalid key file') - return buffer.toString('utf8', 0, bytesRead).trim() - } finally { - await file.close() - } -} diff --git a/experiments/tee-demo/src/styles.css b/experiments/tee-demo/src/styles.css deleted file mode 100644 index 6b41acc..0000000 --- a/experiments/tee-demo/src/styles.css +++ /dev/null @@ -1,108 +0,0 @@ -@import 'tailwindcss'; - -@font-face { - font-family: 'TWK Lausanne'; - src: url('./fonts/TWKLausanne-300.otf') format('opentype'); - font-weight: 300; - font-display: swap; -} -@font-face { - font-family: 'TWK Lausanne'; - src: url('./fonts/TWKLausanne-400.otf') format('opentype'); - font-weight: 400; - font-display: swap; -} -@font-face { - font-family: 'TWK Lausanne'; - src: url('./fonts/TWKLausanne-600.otf') format('opentype'); - font-weight: 600; - font-display: swap; -} -@font-face { - font-family: 'Tiempos Headline'; - src: url('./fonts/TiemposHeadline-Regular.ttf') format('truetype'); - font-weight: 400; - font-display: swap; -} -:root { - --raw-font-twk-lausanne: 'TWK Lausanne'; - --raw-font-tiempos: 'Tiempos Headline'; -} - -@theme inline { - --color-background: #f9f9f8; - --color-primary: #2d2c2c; - --color-secondary: #848382; - --color-border: #e1dfda; - - --font-tiempos: var(--raw-font-tiempos), var(--font-serif); - --font-brand: var(--raw-font-twk-lausanne), var(--font-sans); -} - -.credential-sheet { - position: fixed; - inset: auto 0 0; - margin: 0 auto; - width: min(100%, 480px); - max-width: 100%; - max-height: 92dvh; - overflow-y: auto; - border: 0; - border-radius: 28px 28px 0 0; - padding: 16px 32px max(32px, env(safe-area-inset-bottom)); - background: #fff; - color: var(--color-primary); - box-shadow: 0 -12px 48px #00000015; -} -.credential-sheet[open] { - animation: sheet-enter 180ms ease-out; -} -.credential-sheet::backdrop { - background: #0007; -} -.sheet-handle { - width: 36px; - height: 4px; - border-radius: 4px; - background: #dedddb; - margin: 0 auto 24px; -} -.sheet-primary, -.sheet-secondary { - min-height: 52px; - width: 100%; - border-radius: 999px; - padding: 14px 20px; - font-weight: 600; - cursor: pointer; -} -.sheet-primary { - background: #2d2c2c; - color: white; -} -.sheet-secondary { - background: #f1f0ee; -} -.sheet-primary:disabled { - opacity: 0.6; - cursor: wait; -} -.credential-sheet button:focus-visible { - outline: 2px solid #2d2c2c; - outline-offset: 3px; -} -@keyframes sheet-enter { - from { - transform: translateY(32px); - opacity: 0; - } - to { - transform: translateY(0); - opacity: 1; - } -} -@media (prefers-reduced-motion: reduce) { - .credential-sheet[open] { - animation: none; - } -} diff --git a/experiments/tee-demo/tests/authenticator-session.test.ts b/experiments/tee-demo/tests/authenticator-session.test.ts deleted file mode 100644 index f5976e6..0000000 --- a/experiments/tee-demo/tests/authenticator-session.test.ts +++ /dev/null @@ -1,137 +0,0 @@ -import { test } from 'node:test' -import assert from 'node:assert/strict' -import type { WalletKit } from '../src/lib/walletkit' -import { POST } from '../src/server/routes/faux-credential' -import { - initializeAuthenticator, - issueFauxCredential, - type FauxIssuanceExchange, -} from '../src/lib/authenticator-session' - -const material = { authenticatorAddress: '0x123', authenticatorPubkey: 'key', offchainSignerCommitment: 'commitment' } -const makeSecrets = () => ({ seed: new Uint8Array(32).fill(1), databaseKey: new Uint8Array(32).fill(2) }) - -test('initialization matches saved public material, opens vault, clears supplied secrets, keeps worker alive', async () => { - const secrets = makeSecrets() - let initialized = false - let terminated = false - const wallet = { - recoveryDataFromSeed: async () => material, - initializeAuthenticator: async (seed: Uint8Array) => { - assert.equal(seed[0], 1) - initialized = true - }, - terminate: () => { - terminated = true - }, - } as unknown as WalletKit - const result = await initializeAuthenticator( - secrets, - 'passkey-id', - material, - new AbortController().signal, - async options => { - assert.equal(options.environment, 'staging') - assert.equal(options.databaseKey[0], 2) - return wallet - } - ) - assert.equal(result, wallet) - assert.ok(initialized && !terminated) - assert.ok(secrets.seed.every(byte => byte === 0) && secrets.databaseKey.every(byte => byte === 0)) -}) - -test('identity mismatch stops before authenticator/vault initialization', async () => { - let terminated = false - let initialized = false - const secrets = makeSecrets() - await assert.rejects( - initializeAuthenticator( - secrets, - 'id', - material, - new AbortController().signal, - async () => - ({ - recoveryDataFromSeed: async () => ({ ...material, authenticatorPubkey: 'other' }), - initializeAuthenticator: async () => { - initialized = true - }, - terminate: () => { - terminated = true - }, - }) as unknown as WalletKit - ), - /saved account identity/ - ) - assert.ok(terminated && !initialized) - assert.ok(secrets.seed.every(byte => byte === 0)) -}) - -test('faux issuance preserves signed u64 values and sends only subject to issuer', async () => { - let stored = false - const wallet = { - prepareCredential: async (schema: bigint) => { - assert.equal(schema, BigInt(128)) - return { sub: 'subject', blindingFactor: 'factor' } - }, - storeCredential: async (bytes: Uint8Array, factor: string) => { - assert.equal(new TextDecoder().decode(bytes), '{"large":18446744073709551615}') - assert.equal(factor, 'factor') - stored = true - return { credentialId: BigInt(1), issuerSchemaId: BigInt(128) } - }, - terminate: () => { - throw new Error('Successful issuance should keep vault open') - }, - } as unknown as WalletKit - const request = (async (_url, options) => { - assert.deepEqual(JSON.parse(options!.body as string), { sub: 'subject' }) - return new Response('{"credential":{"large":18446744073709551615}}') - }) as typeof fetch - const exchanges: FauxIssuanceExchange[] = [] - await issueFauxCredential(wallet, new AbortController().signal, request, exchange => exchanges.push(exchange)) - assert.deepEqual(exchanges[0].request.body, { sub: 'subject' }) - assert.equal(exchanges[1].response?.body, '{"credential":{"large":18446744073709551615}}') - assert.equal(exchanges[1].response?.status, 200) - assert.ok(!JSON.stringify(exchanges).includes('factor')) - assert.ok(stored) -}) - -test('malformed issuer response never reaches storage and closes session', async () => { - let terminated = false - const wallet = { - prepareCredential: async () => ({ sub: 'subject', blindingFactor: 'factor' }), - storeCredential: async () => { - throw new Error('Should not store') - }, - terminate: () => { - terminated = true - }, - } as unknown as WalletKit - await assert.rejects( - issueFauxCredential( - wallet, - new AbortController().signal, - (async () => new Response('{"credential":null}')) as unknown as typeof fetch - ), - /request the staging faux credential/ - ) - assert.ok(terminated) -}) - -test('issuer proxy rejects cross-origin and malformed requests before upstream calls', async () => { - const crossOrigin = new Request('http://localhost:3100/api/faux-credential', { - method: 'POST', - headers: { origin: 'https://other.example' }, - }) - assert.equal((await POST(crossOrigin)).status, 403) - for (const body of ['not-json', '{"sub":"invalid"}', 'a'.repeat(2048)]) { - const request = new Request('http://localhost:3100/api/faux-credential', { - method: 'POST', - headers: { origin: 'http://localhost:3100', 'content-type': 'application/json' }, - body, - }) - assert.equal((await POST(request)).status, 400) - } -}) diff --git a/experiments/tee-demo/tests/demo-profile.test.ts b/experiments/tee-demo/tests/demo-profile.test.ts deleted file mode 100644 index 6b8ebdb..0000000 --- a/experiments/tee-demo/tests/demo-profile.test.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { test } from 'node:test' -import assert from 'node:assert/strict' -import { requestIp } from '../src/lib/request-ip' -import { loadDemoProfile, saveDemoProfile, type DemoProfile } from '../src/lib/demo-profile' - -const profile: DemoProfile = { - version: 1, - passkey: { credentialId: 'aGVsbG8', prfSupported: true }, - registration: 'created', -} - -test('persists only public metadata and resumes the same passkey', () => { - let saved = '' - saveDemoProfile( - { - setItem: (_key, value) => { - saved = value - }, - }, - { ...profile, seed: 'secret', databaseKey: 'secret' } as DemoProfile - ) - assert.ok(!saved.includes('secret')) - assert.deepEqual(loadDemoProfile({ getItem: () => saved }), profile) -}) - -test('preserves uncertain submission state and rejects malformed profiles without overwriting them', () => { - assert.equal( - loadDemoProfile({ getItem: () => JSON.stringify({ ...profile, registration: 'submitting' }) })?.registration, - 'submitting' - ) - assert.throws(() => loadDemoProfile({ getItem: () => '{invalid' }), /preserved/) - assert.throws( - () => loadDemoProfile({ getItem: () => JSON.stringify({ ...profile, registration: 'finalized' }) }), - /preserved/ - ) - assert.throws( - () => - saveDemoProfile( - { - setItem: () => { - throw new Error('Quota exceeded') - }, - }, - profile - ), - /Could not save/ - ) -}) - -test('IP headers are validated, bounded, and explicitly unverified', () => { - assert.deepEqual(requestIp(new Headers({ 'x-forwarded-for': '203.0.113.1, 10.0.0.1' })), { - ip: '203.0.113.1', - source: 'x-forwarded-for', - verified: false, - }) - assert.equal(requestIp(new Headers({ 'x-forwarded-for': 'untrusted text', 'x-real-ip': '::1' })).ip, '::1') - assert.equal(requestIp(new Headers({ 'x-forwarded-for': 'a'.repeat(1025) })).ip, null) - assert.equal(requestIp(new Headers()).source, 'unavailable') -}) diff --git a/experiments/tee-demo/tests/face-detector.test.ts b/experiments/tee-demo/tests/face-detector.test.ts deleted file mode 100644 index 5b8f1ab..0000000 --- a/experiments/tee-demo/tests/face-detector.test.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { test } from 'node:test' -import assert from 'node:assert/strict' -import { startFaceDetector } from '../src/components/selfie-check/face-detector' - -async function withWorker(run: (h: ReturnType) => Promise) { - const h = harness() - const replacements = { - Worker: h.Worker, - createImageBitmap: () => h.capture(), - setTimeout: h.setTimeout, - clearTimeout: h.clearTimeout, - } - const saved = new Map(Object.keys(replacements).map(key => [key, Object.getOwnPropertyDescriptor(globalThis, key)])) - for (const [key, value] of Object.entries(replacements)) - Object.defineProperty(globalThis, key, { value, configurable: true }) - try { - await run(h) - } finally { - for (const [key, descriptor] of saved) { - if (descriptor) Object.defineProperty(globalThis, key, descriptor) - else Reflect.deleteProperty(globalThis, key) - } - } -} - -function harness() { - const worker = { - onmessage: undefined as ((event: { data: unknown }) => void) | undefined, - onerror: undefined as (() => void) | undefined, - onmessageerror: undefined as (() => void) | undefined, - postMessage: (data: { type: string }) => { - messages.push(data.type) - }, - terminate: () => { - terminated++ - }, - } - const messages: string[] = [], - errors: string[] = [], - logs: string[] = [] - const timers = new Map void; ms: number }>() - let terminated = 0, - captures = 0, - closed = 0, - nextTimer = 0 - const bitmap = { - close: () => { - closed++ - }, - } as ImageBitmap - const h = { - Worker: function () { - return worker - }, - worker, - messages, - errors, - logs, - timers, - capture: () => { - captures++ - return Promise.resolve(bitmap) - }, - bitmap, - setTimeout: (fn: () => void, ms: number) => { - const id = ++nextTimer - timers.set(id, { fn, ms }) - return id - }, - clearTimeout: (id: number) => { - timers.delete(id) - }, - counts: () => ({ terminated, captures, closed }), - start: (signal: AbortSignal) => - startFaceDetector( - { readyState: 2, currentTime: 1 } as HTMLVideoElement, - signal, - false, - () => {}, - message => logs.push(message), - message => errors.push(message) - ), - emit: (data: unknown) => worker.onmessage?.({ data }), - } - return h -} - -test('detector waits for a result before capturing again and abort terminates pending inference', async () => { - await withWorker(async h => { - const controller = new AbortController() - h.start(controller.signal) - assert.deepEqual(h.messages, ['init']) - h.emit({ type: 'ready' }) - await Promise.resolve() - assert.deepEqual(h.messages, ['init', 'frame']) - assert.equal(h.counts().captures, 1) - assert.deepEqual( - [...h.timers.values()].map(t => t.ms), - [10_000] - ) - controller.abort() - assert.equal(h.counts().terminated, 1) - assert.equal(h.timers.size, 0) - }) -}) - -test('late bitmap capture after cancellation is closed and never sent to the terminated worker', async () => { - await withWorker(async h => { - let finish!: (image: ImageBitmap) => void - h.capture = () => - new Promise(resolve => { - finish = resolve - }) - const controller = new AbortController() - h.start(controller.signal) - h.emit({ type: 'ready' }) - controller.abort() - finish(h.bitmap) - await Promise.resolve() - assert.deepEqual(h.messages, ['init']) - assert.equal(h.counts().closed, 1) - }) -}) - -test('startup timeout and worker errors are surfaced and release the worker', async () => { - await withWorker(async h => { - h.start(new AbortController().signal) - const startup = [...h.timers.values()][0] - assert.equal(startup.ms, 45_000) - startup.fn() - assert.match(h.errors[0], /startup timed out/) - assert.equal(h.counts().terminated, 1) - assert.equal(h.timers.size, 0) - }) - await withWorker(async h => { - h.start(new AbortController().signal) - h.emit({ type: 'error', stage: 'model integrity', message: 'SHA-256 mismatch' }) - assert.match(h.errors[0], /model integrity: SHA-256 mismatch/) - assert.equal(h.counts().terminated, 1) - }) -}) diff --git a/experiments/tee-demo/tests/fixtures/rgbnet-decode.json b/experiments/tee-demo/tests/fixtures/rgbnet-decode.json deleted file mode 100644 index 72b1707..0000000 --- a/experiments/tee-demo/tests/fixtures/rgbnet-decode.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "rows": [ - { - "anchor": 0, - "box": [0, 0, 1, 1], - "score": 0.91, - "landmarks": [0.1, -0.2, 0.1, -0.2, 0.1, -0.2, 0.1, -0.2, 0.1, -0.2] - }, - { - "anchor": 1, - "box": [0, 0, 0, 0], - "score": 0.85, - "landmarks": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - { - "anchor": 1500, - "box": [0.5, -0.3, -0.2, 0.4], - "score": 0.99, - "landmarks": [ - -2.0, -1.5555555555555556, -1.1111111111111112, -0.6666666666666667, -0.22222222222222232, - 0.22222222222222232, 0.6666666666666665, 1.1111111111111107, 1.5555555555555554, 2.0 - ] - }, - { - "anchor": 2048, - "box": [0, 0, 0, 0], - "score": 0.9, - "landmarks": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - { - "anchor": 2687, - "box": [1, 1, 0.5, 0.5], - "score": 0.95, - "landmarks": [3, -3, 3, -3, 3, -3, 3, -3, 3, -3] - } - ], - "expected": [ - { - "box": [0.4195004105567932, 0.6897153258323669, 0.4945620894432068, 0.7743471264839172], - "landmarks": [ - 0.4375, 0.7222222089767456, 0.4444444477558136, 0.7291666865348816, 0.4513888955116272, - 0.7361111044883728, 0.4583333432674408, 0.7430555820465088, 0.4652777910232544, 0.75 - ], - "score": 0.9900000095367432 - }, - { - "box": [0.5308802127838135, 0.5308802127838135, 1.0, 1.0], - "landmarks": [1.0, 0.66796875, 1.0, 0.66796875, 1.0, 0.66796875, 1.0, 0.66796875, 1.0, 0.66796875], - "score": 0.949999988079071 - }, - { - "box": [0.0, 0.0, 0.06333604454994202, 0.06333604454994202], - "landmarks": [ - 0.01640624925494194, 0.01406249962747097, 0.01640624925494194, 0.01406249962747097, 0.01640624925494194, - 0.01406249962747097, 0.01640624925494194, 0.01406249962747097, 0.01640624925494194, 0.01406249962747097 - ], - "score": 0.9100000262260437 - }, - { - "box": [0.0, 0.0, 0.134765625, 0.134765625], - "landmarks": [0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125], - "score": 0.8999999761581421 - } - ] -} diff --git a/experiments/tee-demo/tests/fixtures/rgbnet-resize.json b/experiments/tee-demo/tests/fixtures/rgbnet-resize.json deleted file mode 100644 index 6d1c419..0000000 --- a/experiments/tee-demo/tests/fixtures/rgbnet-resize.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - { - "width": 256, - "height": 256, - "sha256": "d73337980d213a1761f50095b862405aef1d2907a3501fc1f2917d8902c5c9c7" - }, - { - "width": 640, - "height": 480, - "sha256": "a2b2126f83aa313df1b5ef572e2c2b9edc6809647fe2c82cedfa532d8fb075f6" - }, - { - "width": 720, - "height": 1280, - "sha256": "e692d07bace56720a085f88c5e3edf30ddcaeaf01f563822a3a5e4bbfb485c1d" - }, - { - "width": 17, - "height": 31, - "sha256": "aaafe38835cd786ead02cd582f9dbd483f2e29e6dc5c1b2a394fc9479b60127f" - }, - { - "width": 1, - "height": 1, - "sha256": "fa774c69dc768f36ef04d4def9d9f09f3578f12a828ab67f6d700b45779f6943" - }, - { - "width": 257, - "height": 193, - "sha256": "5faba04fb349809489ba32dfdecbbef4a51a499cd348f5b76954bf88d1e78aeb" - } -] diff --git a/experiments/tee-demo/tests/flow-logging.test.ts b/experiments/tee-demo/tests/flow-logging.test.ts deleted file mode 100644 index 0d30799..0000000 --- a/experiments/tee-demo/tests/flow-logging.test.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { expect, test, spyOn } from 'bun:test' -import { logFlowStep } from '../src/lib/flow-logging' - -test('step logging preserves failures without exposing their sensitive payloads', async () => { - const info = spyOn(console, 'info').mockImplementation(() => {}) - const error = spyOn(console, 'error').mockImplementation(() => {}) - const failure = new Error('secret request payload') - try { - await expect( - logFlowStep('walletkit.worker_initialize', async () => { - throw failure - }) - ).rejects.toBe(failure) - expect(error.mock.calls[0]?.[1]).toMatchObject({ - step: 'walletkit.worker_initialize', - status: 'failed', - category: 'OperationError', - }) - expect(JSON.stringify([...info.mock.calls, ...error.mock.calls])).not.toContain('secret request payload') - } finally { - info.mockRestore() - error.mockRestore() - } -}) diff --git a/experiments/tee-demo/tests/http-server.test.ts b/experiments/tee-demo/tests/http-server.test.ts deleted file mode 100644 index 4fde24d..0000000 --- a/experiments/tee-demo/tests/http-server.test.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { test } from 'node:test' -import assert from 'node:assert/strict' -import { handleRequest } from '../src/server/http' - -test('local API router dispatches existing handlers and keeps referrers private', async () => { - const response = await handleRequest(new Request('http://localhost:3100/api/client-context')) - assert.equal(response.status, 200) - assert.equal(response.headers.get('Referrer-Policy'), 'no-referrer') - assert.equal(response.headers.get('Cache-Control'), 'no-store') - assert.equal((await response.json()).verified, false) -}) - -test('API router rejects unknown routes and incorrect methods without serving the SPA', async () => { - assert.equal((await handleRequest(new Request('http://localhost:3100/api/missing'))).status, 404) - const response = await handleRequest(new Request('http://localhost:3100/api/selfie-credential')) - assert.equal(response.status, 405) - assert.equal(response.headers.get('Allow'), 'POST') -}) - -test('migrated selfie API preserves same-origin and localhost restrictions', async () => { - for (const [url, origin] of [ - ['http://localhost:3100/api/selfie-credential', 'https://other.example'], - ['https://public.example/api/selfie-credential', 'https://public.example'], - ]) { - const response = await handleRequest( - new Request(url, { - method: 'POST', - headers: { origin, 'content-type': 'application/json' }, - body: '{}', - }) - ) - assert.equal(response.status, 403) - } - const response = await handleRequest( - new Request('http://localhost:3100/api/selfie-credential', { - method: 'POST', - headers: { origin: 'http://localhost:3100', 'content-type': 'application/json' }, - body: '{}', - }) - ) - assert.equal(response.status, 400) -}) - -test('static server cannot expose files outside dist', async () => { - const response = await handleRequest(new Request('http://localhost:3100/..%2fpackage.json')) - assert.equal(response.status, 404) -}) diff --git a/experiments/tee-demo/tests/prf-result.test.ts b/experiments/tee-demo/tests/prf-result.test.ts deleted file mode 100644 index 10e4a82..0000000 --- a/experiments/tee-demo/tests/prf-result.test.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { test } from 'node:test' -import assert from 'node:assert/strict' -import { runInNewContext } from 'node:vm' -import { derivePasskeySecrets } from '../src/lib/passkey-secrets' -import { prfBytes, describePrfValue } from '../src/lib/prf-result' - -test('1Password byte arrays derive exactly the same secrets as native buffers', async () => { - const first = Array.from({ length: 32 }, (_, i) => i) - const second = Array.from({ length: 32 }, (_, i) => 255 - i) - const normalized = await derivePasskeySecrets(prfBytes(first)!.buffer, prfBytes(second)!.buffer) - const native = await derivePasskeySecrets(Uint8Array.from(first).buffer, Uint8Array.from(second).buffer) - assert.deepEqual(normalized, native) -}) - -test('normalizes typed-array slices and cross-realm buffers', () => { - const backing = new Uint8Array(40).fill(9) - assert.deepEqual(prfBytes(backing.subarray(4, 36)), new Uint8Array(32).fill(9)) - assert.equal(backing[0], 9) - assert.ok(backing.subarray(4, 36).every(byte => byte === 0)) - assert.deepEqual(prfBytes(runInNewContext('new Uint8Array(32).fill(7).buffer')), new Uint8Array(32).fill(7)) -}) - -test('rejects malformed outputs rather than coercing bytes', () => { - for (const value of [ - undefined, - null, - 'secret', - new Array(32), - Array(31).fill(1), - Array(33).fill(1), - Array(32).fill(-1), - Array(32).fill(256), - Array(32).fill(1.5), - Array(32).fill('7'), - Array(32).fill(NaN), - new Uint8Array(31), - ]) { - assert.equal(prfBytes(value), undefined) - } -}) - -test('diagnostic output contains shape only, never PRF values', () => { - assert.deepEqual(describePrfValue(Array(32).fill(123)), { type: 'array', byteLength: 32 }) - assert.deepEqual(describePrfValue(new Uint8Array(32).buffer), { type: 'array-buffer', byteLength: 32 }) - assert.deepEqual(describePrfValue(undefined), { type: 'missing' }) -}) diff --git a/experiments/tee-demo/tests/registration.test.ts b/experiments/tee-demo/tests/registration.test.ts deleted file mode 100644 index 08dda93..0000000 --- a/experiments/tee-demo/tests/registration.test.ts +++ /dev/null @@ -1,180 +0,0 @@ -import { test } from 'node:test' -import assert from 'node:assert/strict' -import type { WalletKit, InitializeOptions } from '../src/lib/walletkit' -import { derivePasskeySecrets, expandSecret } from '../src/lib/passkey-secrets' -import { passkeyStorageId, registerOnStaging } from '../src/lib/staging-registration' - -const bytes = (hex: string) => Uint8Array.from(Buffer.from(hex, 'hex')).buffer - -test('HKDF-Expand matches an independent HMAC-SHA256 oracle without an Extract step', async () => { - const prk = bytes('077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5') - const { createHmac } = await import('node:crypto') - const label = 'web.world.org/v1/authenticator-secret' - const expected = createHmac('sha256', Buffer.from(prk)) - .update(label) - .update(Buffer.from([1])) - .digest() - assert.deepEqual(Buffer.from(await expandSecret(prk, label)), expected) -}) - -test('derivation separates identity/storage secrets, is deterministic, and clears PRF buffers', async () => { - const first = new Uint8Array(32).fill(7) - const second = new Uint8Array(32).fill(7) - const secrets = await derivePasskeySecrets(first.buffer, second.buffer) - const again = await derivePasskeySecrets(new Uint8Array(32).fill(7).buffer, new Uint8Array(32).fill(7).buffer) - assert.notDeepEqual(secrets.seed, secrets.databaseKey) - assert.deepEqual(secrets.seed, again.seed) - assert.deepEqual(secrets.databaseKey, again.databaseKey) - assert.ok(first.every(byte => byte === 0) && second.every(byte => byte === 0)) -}) - -test('rejects malformed PRF output and clears both buffers', async () => { - const first = new Uint8Array(32).fill(7) - const second = new Uint8Array(31).fill(7) - await assert.rejects(derivePasskeySecrets(first.buffer, second.buffer), /32-byte/) - assert.ok(first.every(byte => byte === 0) && second.every(byte => byte === 0)) -}) - -const publicMaterial = { - authenticatorAddress: 'public-address', - authenticatorPubkey: 'public-key', - offchainSignerCommitment: 'public-commitment', -} -const secrets = () => ({ seed: new Uint8Array(32).fill(1), databaseKey: new Uint8Array(32).fill(2) }) -function fakeWallet(overrides: Partial = {}) { - return { - recoveryDataFromSeed: async () => publicMaterial, - register: async () => {}, - pollRegistration: async () => ({ state: 'finalized' }), - initializeAuthenticator: async () => {}, - terminate: () => {}, - ...overrides, - } as WalletKit -} - -test('registers exactly once on staging, initializes after finalized, retains the session, and clears secrets', async () => { - const input = secrets() - const phases: string[] = [] - let registrations = 0 - let polls = 0 - let stopped = false - let initialized = false - const wallet = fakeWallet({ - register: async seed => { - assert.deepEqual(seed, new Uint8Array(32).fill(1)) - registrations++ - }, - pollRegistration: async () => ({ state: ++polls === 1 ? 'submitted' : 'finalized' }), - initializeAuthenticator: async seed => { - assert.equal(polls, 2) - assert.deepEqual(seed, new Uint8Array(32).fill(1)) - initialized = true - }, - terminate: () => { - stopped = true - }, - }) - const session = await registerOnStaging( - input, - 'credential-id', - new AbortController().signal, - p => phases.push(p), - material => assert.deepEqual(material, publicMaterial), - async (options: InitializeOptions) => { - assert.equal(options.environment, 'staging') - assert.equal(options.storageId, await passkeyStorageId('credential-id')) - assert.deepEqual(options.databaseKey, new Uint8Array(32).fill(2)) - return wallet - } - ) - assert.equal(registrations, 1) - assert.deepEqual(phases, ['loading', 'registering', 'submitted', 'finalized', 'initializing']) - assert.ok(initialized) - assert.equal(session, wallet) - assert.equal(stopped, false) - assert.ok(input.seed.every(byte => byte === 0) && input.databaseKey.every(byte => byte === 0)) -}) - -test('uncertain submission fails without retrying or surfacing raw dependency payloads', async () => { - let registrations = 0 - const input = secrets() - const phases: string[] = [] - await assert.rejects( - registerOnStaging( - input, - 'id', - new AbortController().signal, - p => phases.push(p), - () => {}, - async () => - fakeWallet({ - register: async () => { - registrations++ - throw new Error('sensitive payload') - }, - }) - ), - error => - error instanceof Error && - /may already have been submitted/.test(error.message) && - !error.message.includes('sensitive payload') - ) - assert.equal(registrations, 1) - assert.ok(!phases.includes('finalized')) - assert.ok(input.seed.every(byte => byte === 0) && input.databaseKey.every(byte => byte === 0)) -}) - -test('abort bounds a hung registration call and releases the worker', async () => { - const controller = new AbortController() - const input = secrets() - let stopped = false - await assert.rejects( - registerOnStaging( - input, - 'id', - controller.signal, - () => {}, - () => {}, - async () => - fakeWallet({ - register: () => { - setTimeout(() => controller.abort(), 10) - return new Promise(() => {}) - }, - terminate: () => { - stopped = true - }, - }) - ) - ) - assert.ok(stopped) - assert.ok(input.seed.every(byte => byte === 0) && input.databaseKey.every(byte => byte === 0)) -}) - -test('initialization failure after finalization preserves success status and cleans up', async () => { - let stopped = false - const input = secrets() - const phases: string[] = [] - await assert.rejects( - registerOnStaging( - input, - 'id', - new AbortController().signal, - phase => phases.push(phase), - () => {}, - async () => - fakeWallet({ - initializeAuthenticator: async () => { - throw new Error('private dependency details') - }, - terminate: () => { - stopped = true - }, - }) - ), - /registration succeeded, but authenticator initialization failed/ - ) - assert.ok(phases.includes('finalized')) - assert.ok(stopped) - assert.ok(input.seed.every(byte => byte === 0) && input.databaseKey.every(byte => byte === 0)) -}) diff --git a/experiments/tee-demo/tests/rgbnet.test.ts b/experiments/tee-demo/tests/rgbnet.test.ts deleted file mode 100644 index 44b2f4d..0000000 --- a/experiments/tee-demo/tests/rgbnet.test.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { test } from 'node:test' -import assert from 'node:assert/strict' -import { createHash } from 'node:crypto' -import resizeReference from './fixtures/rgbnet-resize.json' -import decodeReference from './fixtures/rgbnet-decode.json' -import { - prepareRgbnet, - decodeRgbnet, - previewPoint, - faceGuidance, - ANCHOR_COUNT, - type ModelOutput, -} from '../src/components/selfie-check/rgbnet' - -function outputs(): ModelOutput[] { - return [4, 2, 10].map(n => ({ dims: [1, ANCHOR_COUNT, n], data: new Float32Array(ANCHOR_COUNT * n) })) -} - -test('RGBNet preprocessing matches native fast_image_resize reference tensors byte for byte', () => { - for (const { width, height, sha256 } of resizeReference) { - const rgba = Uint8ClampedArray.from( - { length: width * height * 4 }, - (_, i) => (i * 37 + Math.floor(i / 13)) % 256 - ) - const tensor = prepareRgbnet(rgba, width, height) - assert.equal( - createHash('sha256').update(new Uint8Array(tensor.buffer)).digest('hex'), - sha256, - `${width}x${height}` - ) - } -}) - -test('RGBNet decode matches native Rust boxes, landmarks and suppression with shuffled output heads', () => { - const heads = outputs() - for (const row of decodeReference.rows) { - heads[0].data.set(row.box, row.anchor * 4) - heads[1].data.set([1 - row.score, row.score], row.anchor * 2) - heads[2].data.set(row.landmarks, row.anchor * 10) - } - const actual = decodeRgbnet([heads[2], heads[0], heads[1]]) - assert.equal(actual.length, decodeReference.expected.length) - actual.forEach((face, i) => { - const expected = decodeReference.expected[i] - for (const key of ['box', 'landmarks'] as const) - face[key].forEach((value, j) => assert.ok(Math.abs(value - expected[key][j]) < 1e-7)) - assert.ok(Math.abs(face.score - expected.score) < 1e-7) - }) -}) - -test('invalid frames and missing, malformed or non-finite output heads fail explicitly', () => { - assert.throws(() => prepareRgbnet(new Uint8ClampedArray(4), 0, 1), /dimensions/) - assert.throws(() => prepareRgbnet(new Uint8ClampedArray(4), 2, 2), /dimensions/) - assert.throws(() => decodeRgbnet([]), /Missing/) - const heads = outputs() - assert.throws(() => decodeRgbnet([heads[0], heads[0], heads[2]]), /Unexpected/) - heads[0].data[0] = NaN - assert.throws(() => decodeRgbnet(heads), /non-finite/) - heads[0].data[0] = 0 - heads[0].dims = [1, 4] - assert.throws(() => decodeRgbnet(heads), /shape/) -}) - -test('empty detections and confidence boundary do not report a positioned face', () => { - const heads = outputs() - heads[1].data[1] = 0.8 - assert.deepEqual(decodeRgbnet(heads), []) - assert.equal(faceGuidance([], 640, 480), 'No face detected') -}) - -test('preview projection accounts for mirror and object-cover crop in landscape and portrait', () => { - assert.deepEqual(previewPoint(0.5, 0.5, 1920, 1080), [0.5, 0.5]) - const [x, y] = previewPoint(0.25, 0.25, 1920, 1080) - assert.ok(Math.abs(x - 0.9444444444) < 1e-8) - assert.equal(y, 0.25) - const portrait = previewPoint(0.25, 0.25, 1080, 1920) - assert.equal(portrait[0], 0.75) - assert.ok(Math.abs(portrait[1] - 0.0555555556) < 1e-8) -}) diff --git a/experiments/tee-demo/tests/selfie-camera.test.ts b/experiments/tee-demo/tests/selfie-camera.test.ts deleted file mode 100644 index 61ce86b..0000000 --- a/experiments/tee-demo/tests/selfie-camera.test.ts +++ /dev/null @@ -1,142 +0,0 @@ -import { test } from 'node:test' -import assert from 'node:assert/strict' -import { startCamera } from '../src/components/selfie-check/camera-capture' - -const flush = () => new Promise(resolve => setImmediate(resolve)) - -async function withCamera(run: (camera: ReturnType) => Promise) { - const camera = fakeCamera() - const replacements = { - window: camera.window, - document: camera.document, - navigator: { mediaDevices: { getUserMedia: () => camera.permission() } }, - requestAnimationFrame: (callback: (now: number) => void) => { - camera.animationCallback = callback - return 1 - }, - cancelAnimationFrame: () => { - camera.animationCallback = undefined - }, - } - const descriptors = new Map( - Object.keys(replacements).map(key => [key, Object.getOwnPropertyDescriptor(globalThis, key)]) - ) - for (const [key, value] of Object.entries(replacements)) - Object.defineProperty(globalThis, key, { value, configurable: true }) - try { - await run(camera) - } finally { - for (const [key, descriptor] of descriptors) { - if (descriptor) Object.defineProperty(globalThis, key, descriptor) - else Reflect.deleteProperty(globalThis, key) - } - } -} - -function fakeCamera() { - let stops = 0 - const track = Object.assign(new EventTarget(), { - stop: () => { - stops++ - }, - }) - const stream = { getTracks: () => [track], getVideoTracks: () => [track] } as unknown as MediaStream - const camera = { - window: Object.assign(new EventTarget(), { isSecureContext: true }), - document: Object.assign(new EventTarget(), { hidden: false }), - permission: () => Promise.resolve(stream), - stream, - track, - stops: () => stops, - frameCallback: undefined as ((now: number, metadata: { mediaTime: number }) => void) | undefined, - animationCallback: undefined as ((now: number) => void) | undefined, - drawn: [] as number[], - video: { - videoWidth: 1920, - videoHeight: 1080, - readyState: 2, - currentTime: 0, - srcObject: null as MediaStream | null, - play: () => Promise.resolve(), - pause: () => {}, - requestVideoFrameCallback: (callback: (now: number, metadata: { mediaTime: number }) => void) => { - camera.frameCallback = callback - return 1 - }, - cancelVideoFrameCallback: () => { - camera.frameCallback = undefined - }, - } as unknown as HTMLVideoElement, - canvas: { - width: 0, - height: 0, - getContext: () => ({ - drawImage: () => { - camera.drawn.push(camera.video.currentTime) - }, - }), - } as unknown as HTMLCanvasElement, - emit: (now: number, mediaTime = now / 1000) => { - camera.video.currentTime = mediaTime - const callback = camera.frameCallback - camera.frameCallback = undefined - callback?.(now, { mediaTime }) - const animation = camera.animationCallback - camera.animationCallback = undefined - animation?.(now) - }, - } - return camera -} - -test('preview stays open after startup until explicitly cancelled', async () => { - await withCamera(async camera => { - const controller = new AbortController() - let ready = false - const running = startCamera(camera.video, controller.signal, () => { - ready = true - }) - const rejected = assert.rejects(running) - await flush() - assert.equal(ready, true) - assert.equal(camera.video.srcObject, camera.stream) - assert.equal(camera.stops(), 0) - assert.deepEqual(camera.drawn, []) - controller.abort() - await rejected - assert.equal(camera.video.srcObject, null) - assert.equal(camera.stops(), 1) - }) -}) - -test('hiding the tab stops the preview and releases the camera', async () => { - await withCamera(async camera => { - const running = startCamera(camera.video, new AbortController().signal, () => {}) - const rejected = assert.rejects(running, /left this tab/) - await flush() - camera.document.hidden = true - camera.document.dispatchEvent(new Event('visibilitychange')) - await rejected - assert.equal(camera.stops(), 1) - assert.equal(camera.video.srcObject, null) - }) -}) - -test('permission granted after cancellation releases the late stream', async () => { - await withCamera(async camera => { - let grant!: (stream: MediaStream) => void - camera.permission = () => - new Promise(resolve => { - grant = resolve - }) - const controller = new AbortController() - const running = startCamera(camera.video, controller.signal, () => {}) - const rejected = assert.rejects(running) - controller.abort() - await rejected - grant(camera.stream) - await flush() - assert.equal(camera.stops(), 1) - assert.equal(camera.video.srcObject, null) - }) -}) diff --git a/experiments/tee-demo/tests/selfie-enclave.test.ts b/experiments/tee-demo/tests/selfie-enclave.test.ts deleted file mode 100644 index 800abf5..0000000 --- a/experiments/tee-demo/tests/selfie-enclave.test.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { tmpdir } from 'node:os' -import { join } from 'node:path' -import { afterAll, expect, test } from 'bun:test' -import { handle } from '../src/server/routes/selfie-enclave' -import { mkdtemp, rm, writeFile, chmod } from 'node:fs/promises' -import { createECDH, createPublicKey, verify } from 'node:crypto' -import { parseChallenge, parsePolicy, signChallenge, readSigningKey } from '../src/server/selfie-enclave' - -const directory = await mkdtemp(join(tmpdir(), 'selfie-admission-test-')) -afterAll(() => rm(directory, { recursive: true, force: true })) -const ecdh = createECDH('prime256v1') -ecdh.generateKeys() -const privateHex = ecdh.getPrivateKey().toString('hex').padStart(64, '0') -const publicBytes = ecdh.getPublicKey() -const publicKey = createPublicKey({ - format: 'jwk', - key: { - kty: 'EC', - crv: 'P-256', - x: publicBytes.subarray(1, 33).toString('base64url'), - y: publicBytes.subarray(33).toString('base64url'), - }, -}) -const audience = 'selfie-enrollment-stage.worldcoin.dev' -const challenge = { audience, nonce: Array.from({ length: 32 }, (_, index) => index) } -const policy = { - endpoint: `wss://${audience}/v1/embeddings`, - audience, - releases: [ - { - pcr0: 'a'.repeat(96), - pcr1: 'b'.repeat(96), - pcr2: 'c'.repeat(96), - worker_sha384: 'd'.repeat(96), - }, - ], -} -const policyFile = join(directory, 'policy.json') -const keyFile = join(directory, 'key.hex') -await writeFile(policyFile, JSON.stringify(policy)) -await writeFile(keyFile, privateHex, { mode: 0o600 }) -const config = { enabled: true, origin: 'http://localhost:3100', policyFile, keyFile } -function request(body: unknown = challenge, headers: Record = {}) { - return new Request('http://localhost:3100/api/selfie-admission', { - method: 'POST', - headers: { - origin: config.origin, - 'sec-fetch-site': 'same-origin', - 'content-type': 'application/json', - ...headers, - }, - body: JSON.stringify(body), - }) -} - -test('ticket uses the Rust JSON tuple, SHA-256 and fixed-width P256 signature', () => { - const ticket = signChallenge(challenge, privateHex, 1000) - expect(ticket.expires_at).toBe(1030) - expect(ticket.signature).toHaveLength(128) - const message = (nonce = challenge.nonce, expires = ticket.expires_at) => - Buffer.from(JSON.stringify(['selfie-enrollment/admission/v1', audience, nonce, expires])) - const options = { key: publicKey, dsaEncoding: 'ieee-p1363' as const } - const signature = Buffer.from(ticket.signature, 'hex') - expect(verify('sha256', message(), options, signature)).toBe(true) - expect(verify('sha256', message(Array(32).fill(9)), options, signature)).toBe(false) - expect(verify('sha256', message(challenge.nonce, 1031), options, signature)).toBe(false) -}) - -test('rejects wrong audiences, malformed nonces, extra fields and untrusted policies', () => { - for (const value of [ - null, - { ...challenge, audience: 'other' }, - { ...challenge, nonce: Array(32).fill(256) }, - { ...challenge, nonce: Array(31).fill(0) }, - { ...challenge, nonce: Array(32).fill(0.5) }, - { ...challenge, extra: true }, - ]) - expect(() => parseChallenge(value, audience)).toThrow() - expect(parsePolicy(policy)).toEqual(policy) - expect(() => parsePolicy({ ...policy, endpoint: 'ws://attacker.example' })).toThrow() - expect(() => parsePolicy({ ...policy, releases: [{ ...policy.releases[0], pcr0: '0'.repeat(96) }] })).toThrow() -}) - -test('local route gates origin, environment, content type, payload and configuration', async () => { - expect((await handle(request(), config)).status).toBe(200) - expect((await handle(request(), { ...config, enabled: false })).status).toBe(404) - expect((await handle(request(), { ...config, keyFile: undefined })).status).toBe(503) - expect((await handle(request(challenge, { origin: 'http://evil.example' }), config)).status).toBe(403) - expect((await handle(request(challenge, { 'sec-fetch-site': 'cross-site' }), config)).status).toBe(403) - expect((await handle(request(challenge, { 'content-type': 'text/plain' }), config)).status).toBe(415) - expect((await handle(request({ ...challenge, audience: 'wrong' }), config)).status).toBe(400) - expect((await handle(request('x'.repeat(3000)), config)).status).toBe(400) - expect((await handle(request(), { ...config, keyFile: join(directory, 'missing') })).status).toBe(503) -}) - -test('refuses signing keys readable by other users', async () => { - const insecure = join(directory, 'insecure.hex') - await writeFile(insecure, privateHex) - await chmod(insecure, 0o644) - await expect(readSigningKey(insecure)).rejects.toThrow('Invalid key file') -}) diff --git a/experiments/tee-demo/tests/selfie-routing.test.ts b/experiments/tee-demo/tests/selfie-routing.test.ts deleted file mode 100644 index 463bf18..0000000 --- a/experiments/tee-demo/tests/selfie-routing.test.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { test } from 'node:test' -import assert from 'node:assert/strict' -import type { CredentialMetadata } from '../src/lib/walletkit' -import { - credentialAvailability, - credentialRequirementsLabel, - type ProofRequest, - type Constraint, -} from '../src/lib/requests/proof-request' - -const request = (constraints?: Constraint): ProofRequest => ({ - id: 'test', - version: 1, - proof_type: 'uniqueness', - rp_id: 'rp_1', - oprf_key_id: '0x1', - nonce: '0x00', - signature: '0x00', - created_at: 100, - expires_at: 200, - action: '0x00', - session_id: null, - proof_requests: [ - { identifier: 'selfie', issuer_schema_id: 11 }, - { identifier: 'orb', issuer_schema_id: 1 }, - ], - constraints, -}) -const credential = (schema: number, overrides: Partial = {}): CredentialMetadata => - ({ - credentialId: BigInt(schema), - issuerSchemaId: BigInt(schema), - genesisIssuedAt: BigInt(100), - expiresAt: BigInt(300), - isExpired: false, - ...overrides, - }) as CredentialMetadata - -test('a missing selfie credential starts enrollment; an available one continues to proof', () => { - const selfie = request('selfie') - assert.equal(credentialAvailability(selfie, []).needsSelfieEnrollment, true) - const available = credentialAvailability(selfie, [credential(11)]) - assert.equal(available.satisfied, true) - assert.equal(available.needsSelfieEnrollment, false) -}) - -test('an expired selfie credential can enroll but an active credential outside date bounds does not loop', () => { - const selfie = request('selfie') - assert.equal(credentialAvailability(selfie, [credential(11, { isExpired: true })]).needsSelfieEnrollment, true) - selfie.proof_requests[0].genesis_issued_at_min = 150 - const unavailable = credentialAvailability(selfie, [credential(11)]) - assert.equal(unavailable.satisfied, false) - assert.equal(unavailable.needsSelfieEnrollment, false) -}) - -test('an available alternative skips selfie enrollment, including nested constraints', () => { - const alternative = request({ any: [{ all: ['selfie'] }, 'orb'] }) - for (const schema of [1, 11]) { - const available = credentialAvailability(alternative, [credential(schema)]) - assert.equal(available.satisfied, true) - assert.equal(available.canEnrollSelfie, false) - assert.equal(available.needsSelfieEnrollment, false) - } - const missing = credentialAvailability(alternative, []) - assert.equal(missing.satisfied, false) - assert.equal(missing.canEnrollSelfie, true) - assert.equal(missing.needsSelfieEnrollment, false) - assert.equal(missing.requiresOrb, false) -}) - -test('enrollment is offered only when adding selfie can satisfy the complete request', () => { - for (const all of [request(), request({ all: ['selfie', 'orb'] })]) { - assert.equal(credentialAvailability(all, []).needsSelfieEnrollment, false) - assert.equal(credentialAvailability(all, [credential(1)]).needsSelfieEnrollment, true) - } - assert.equal(credentialAvailability(request('orb'), []).needsSelfieEnrollment, false) -}) - -test('Orb-only requests use an eligible Orb credential and never substitute Selfie', () => { - const orb = request('orb') - for (const records of [[], [credential(11)], [credential(1, { isExpired: true })]]) { - const result = credentialAvailability(orb, records) - assert.equal(result.satisfied, false) - assert.equal(result.requiresOrb, true) - assert.equal(result.canEnrollSelfie, false) - assert.equal(result.needsSelfieEnrollment, false) - } - assert.equal(credentialAvailability(orb, [credential(1)]).satisfied, true) - orb.proof_requests[1].expires_at_min = 400 - assert.equal(credentialAvailability(orb, [credential(1)]).satisfied, false) -}) - -test('unknown issuers and nested alternatives do not become an automatic Selfie choice', () => { - const mixed = request({ any: ['selfie', { all: ['orb', 'other'] }] }) - mixed.proof_requests.push({ identifier: 'other', issuer_schema_id: 128 }) - const result = credentialAvailability(mixed, []) - assert.equal(result.canEnrollSelfie, true) - assert.equal(result.needsSelfieEnrollment, false) - mixed.constraints = 'other' - assert.equal(credentialAvailability(mixed, []).canEnrollSelfie, false) - assert.equal(credentialAvailability(mixed, [credential(128)]).satisfied, true) -}) - -test('Selfie required in every alternative only enrolls when it can complete the request', () => { - const mixed = request({ any: [{ all: ['selfie', 'orb'] }, { all: ['selfie', 'other'] }] }) - mixed.proof_requests.push({ identifier: 'other', issuer_schema_id: 128 }) - assert.equal(credentialAvailability(mixed, []).canEnrollSelfie, false) - assert.equal(credentialAvailability(mixed, [credential(128)]).needsSelfieEnrollment, true) -}) - -test('request summary preserves AND/OR groups and identifies credentials by schema', () => { - assert.equal(credentialRequirementsLabel(request('orb')), 'Orb') - assert.equal(credentialRequirementsLabel(request('selfie')), 'Selfie Check') - assert.equal(credentialRequirementsLabel(request()), '(Selfie Check and Orb)') - assert.equal(credentialRequirementsLabel(request({ any: ['selfie', 'orb'] })), '(Selfie Check or Orb)') - const nested = request({ any: ['selfie', { all: ['orb', 'other'] }] }) - nested.proof_requests.push({ identifier: 'other', issuer_schema_id: 128 }) - assert.equal(credentialRequirementsLabel(nested), '(Selfie Check or (Orb and Schema 128))') - nested.proof_requests[0].issuer_schema_id = 1 - assert.equal(credentialRequirementsLabel({ ...nested, constraints: 'selfie' }), 'Orb') -}) diff --git a/experiments/tee-demo/tests/tee-admission.test.ts b/experiments/tee-demo/tests/tee-admission.test.ts deleted file mode 100644 index 02ba6cb..0000000 --- a/experiments/tee-demo/tests/tee-admission.test.ts +++ /dev/null @@ -1,133 +0,0 @@ -import { tmpdir } from 'node:os' -import { test } from 'node:test' -import { join } from 'node:path' -import assert from 'node:assert/strict' -import { POST } from '../src/server/routes/tee-admission' -import { requestDemoToken } from '../src/lib/tee-admission' -import { mkdtemp, writeFile, chmod, rm } from 'node:fs/promises' - -const origin = 'http://localhost:3100' -const token = 'a'.repeat(64) -const valid = () => ({ token, expires_at: Math.floor(Date.now() / 1000) + 300 }) -const request = (headers: Record = {}, url = origin) => - new Request(url + '/api/tee-admission', { - method: 'POST', - headers: { origin, 'sec-fetch-site': 'same-origin', 'content-type': 'application/json', ...headers }, - body: '{}', - }) - -async function fixture(run: (config: { enabled: boolean; tokenFile: string; origin: string }) => Promise) { - const dir = await mkdtemp(join(tmpdir(), 'tee-admission-test-')) - const tokenFile = join(dir, 'token.json') - await writeFile(tokenFile, JSON.stringify(valid()), { mode: 0o600 }) - try { - await run({ enabled: true, tokenFile, origin }) - } finally { - await rm(dir, { recursive: true, force: true }) - } -} - -test('local provider returns only the configured valid token with no-store', async () => { - await fixture(async config => { - const response = await POST(request(), config) - assert.equal(response.status, 200) - assert.equal(response.headers.get('cache-control'), 'no-store') - assert.equal(response.headers.has('access-control-allow-origin'), false) - const data = await response.json() - assert.equal(data.token, token) - assert.equal(data.mode, 'local') - assert.deepEqual(Object.keys(data).sort(), ['expires_at', 'mode', 'token']) - }) -}) - -test('provider is disabled by default and rejects cross-origin or non-browser requests', async () => { - assert.equal((await POST(request(), { enabled: false, tokenFile: undefined, origin })).status, 404) - await fixture(async config => { - const deniedHeaders: Record[] = [ - { origin: 'http://localhost:9999' }, - { origin: 'https://evil.example' }, - { origin: '' }, - { 'sec-fetch-site': 'cross-site' }, - { 'sec-fetch-site': '' }, - ] - for (const headers of deniedHeaders) { - const response = await POST(request(headers), config) - assert.equal(response.status, 403) - assert.ok(!(await response.text()).includes(token)) - } - assert.equal( - (await POST(request({}, 'https://public.example'), { ...config, origin: 'https://public.example' })).status, - 403 - ) - }) -}) - -test('provider fails closed for missing, expired, malformed and insecure token files', async () => { - await fixture(async config => { - for (const value of [ - { ...valid(), expires_at: 1 }, - { ...valid(), expires_at: Math.floor(Date.now() / 1000) + 3600 }, - { ...valid(), token: 'short' }, - null, - 'x'.repeat(5000), - ]) { - await writeFile(config.tokenFile, JSON.stringify(value)) - const response = await POST(request(), config) - assert.equal(response.status, 503) - const body = await response.text() - assert.ok(!body.includes(config.tokenFile)) - assert.ok(!body.includes(token)) - } - await writeFile(config.tokenFile, JSON.stringify(valid())) - await chmod(config.tokenFile, 0o644) - assert.equal((await POST(request(), config)).status, 503) - assert.equal((await POST(request(), { ...config, tokenFile: undefined })).status, 503) - }) -}) - -async function withFetch( - fake: (...args: Parameters) => ReturnType, - run: () => Promise -) { - const original = globalThis.fetch - globalThis.fetch = Object.assign(fake, { preconnect: original.preconnect }) - try { - await run() - } finally { - globalThis.fetch = original - } -} - -test('browser obtains the provisioned credential through a same-origin POST', async () => { - await withFetch( - async (url, init) => { - assert.equal(url, '/api/tee-admission') - assert.equal(init?.method, 'POST') - assert.equal(init?.redirect, 'error') - assert.equal(init?.cache, 'no-store') - assert.equal(init?.credentials, 'same-origin') - return Response.json({ ...valid(), mode: 'local' }) - }, - async () => assert.equal(await requestDemoToken(new AbortController().signal), token) - ) -}) - -test('browser refuses invalid/expired provisioning and sanitizes errors', async () => { - for (const response of [ - Response.json({ ...valid(), mode: 'remote' }), - Response.json({ ...valid(), mode: 'local', expires_at: 1 }), - Response.json({ ...valid(), mode: 'local', padding: 'x'.repeat(5000) }), - new Response(token, { status: 503 }), - ]) { - await withFetch( - async () => response, - async () => { - await assert.rejects(requestDemoToken(new AbortController().signal), error => { - assert.ok(error instanceof Error) - assert.ok(!error.message.includes(token)) - return true - }) - } - ) - } -}) diff --git a/experiments/tee-demo/tests/tee-connection.test.ts b/experiments/tee-demo/tests/tee-connection.test.ts deleted file mode 100644 index 8d752fa..0000000 --- a/experiments/tee-demo/tests/tee-connection.test.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { test } from 'node:test' -import assert from 'node:assert/strict' -import { connect } from '../src/lib/tee-connection' - -const token = 'a'.repeat(64) -const origin = 'http://127.0.0.1:8010' -const signal = () => new AbortController().signal -const handshake = () => ({ - protocol_version: 1, - mode: 'local', - capabilities: ['face-image-check'], - expires_at: Math.floor(Date.now() / 1000) + 300, -}) -async function withFetch( - fake: (...args: Parameters) => ReturnType, - run: () => Promise -) { - const original = globalThis.fetch - globalThis.fetch = Object.assign(fake, { preconnect: original.preconnect }) - try { - await run() - } finally { - globalThis.fetch = original - } -} - -test('local handshake sends credential only in header and accepts a ready compatible response', async () => { - await withFetch( - async (url, init) => { - assert.equal(String(url), origin + '/v1/connect') - assert.equal(init?.method, 'POST') - assert.equal(new Headers(init?.headers).get('Authorization'), 'Bearer ' + token) - assert.equal(init?.redirect, 'error') - assert.equal(init?.credentials, 'omit') - assert.equal(init?.cache, 'no-store') - assert.ok(init?.signal) - assert.equal(init?.body, undefined) - return Response.json(handshake()) - }, - async () => { - const result = await connect(signal(), token, origin) - assert.equal(result.status, 'connected') - assert.ok(!JSON.stringify(result).includes(token)) - } - ) -}) - -test('forbidden and worker-unavailable responses never establish a connection', async () => { - for (const [status, expected] of [ - [403, 'forbidden'], - [503, 'unavailable'], - ] as const) { - await withFetch( - async () => new Response(null, { status }), - async () => { - assert.equal((await connect(signal(), token, origin)).status, expected) - } - ) - } -}) - -test('rejects remote destinations, URL credentials and malformed tokens before transmitting', async () => { - await withFetch( - async () => { - throw new Error('must not fetch') - }, - async () => { - for (const target of [ - 'https://example.com', - 'http://127.0.0.1.evil.test:8010', - 'http://user:secret@localhost:8010', - origin + '/path', - origin + '?token=bad', - ]) { - await assert.rejects(connect(signal(), token, target), /loopback/) - } - for (const value of ['short', token + '\r\n']) - assert.equal((await connect(signal(), value, origin)).status, 'forbidden') - } - ) -}) - -test('rejects unsupported, incomplete, expired and oversized success responses', async () => { - for (const data of [ - null, - {}, - { ...handshake(), protocol_version: 2 }, - { ...handshake(), mode: 'nitro' }, - { ...handshake(), capabilities: [] }, - { ...handshake(), expires_at: 1 }, - { ...handshake(), expires_at: Math.floor(Date.now() / 1000) + 3600 }, - { ...handshake(), padding: 'x'.repeat(5000) }, - ]) { - await withFetch( - async () => Response.json(data), - async () => { - await assert.rejects(connect(signal(), token, origin)) - } - ) - } - for (const response of [ - new Response('not JSON', { headers: { 'content-type': 'application/json' } }), - new Response('oops', { status: 500 }), - ]) { - await withFetch( - async () => response, - async () => { - await assert.rejects(connect(signal(), token, origin)) - } - ) - } -}) - -test('handles network errors without exposing their potentially sensitive message', async () => { - await withFetch( - async () => { - throw new Error(token) - }, - async () => { - await assert.rejects(connect(signal(), token, origin), error => { - assert.ok(error instanceof Error) - assert.ok(!error.message.includes(token)) - assert.match(error.message, /Cannot reach/) - return true - }) - } - ) -}) - -test('aborted connection does not send a request', async () => { - await withFetch( - async () => { - throw new Error('must not fetch') - }, - async () => { - const controller = new AbortController() - controller.abort() - await assert.rejects(connect(controller.signal, token, origin), { name: 'AbortError' }) - } - ) -}) - -test('without a provisioned token still posts and lets the host return forbidden', async () => { - await withFetch( - async (url, init) => { - assert.equal(String(url), origin + '/v1/connect') - assert.equal(init?.method, 'POST') - assert.equal(new Headers(init?.headers).has('Authorization'), false) - return new Response(null, { status: 403 }) - }, - async () => { - const result = await connect(signal(), '', origin) - assert.equal(result.status, 'forbidden') - assert.equal(result.httpStatus, 403) - } - ) -}) diff --git a/experiments/tee-demo/tests/walletkit.test.ts b/experiments/tee-demo/tests/walletkit.test.ts deleted file mode 100644 index 29a9e58..0000000 --- a/experiments/tee-demo/tests/walletkit.test.ts +++ /dev/null @@ -1,105 +0,0 @@ -import { test } from 'node:test' -import assert from 'node:assert/strict' -import { WalletKit } from '../src/lib/walletkit' -import type { WalletKit as PublishedWalletKit, CredentialStore } from '@worldcoin/walletkit-web' - -function fixture(actualSubject = '0x01') { - const freed: string[] = [] - const field = (name: string, hex: string) => ({ - toHexString: async () => hex, - free: () => freed.push(name), - }) - let writes = 0 - let failInit = false - let failSub = false - const credential = { - sub: async () => field('actual', actualSubject), - expiresAt: async () => BigInt(1000), - issuerSchemaId: async () => BigInt(11), - claimsHex: async () => ['score', 'matches', 'size'], - free: () => freed.push('credential'), - } - const response = { - toJson: async () => JSON.stringify({ responses: [{ issuer_schema_id: '11' }, { issuer_schema_id: '128' }] }), - free: () => freed.push('response'), - } - const authenticator = { - initStorage: async () => { - if (failInit) throw new Error('storage unavailable') - }, - computeCredentialSub: async () => { - if (failSub) throw new Error('subject unavailable') - return field('expected', '0x01') - }, - generateCredentialBlindingFactorRemote: async () => field('factor', '0x02'), - generateProof: async () => response, - free: () => freed.push('authenticator'), - } - const client = { - EmbeddedZkArtifacts: { new: async () => ({ free: () => freed.push('artifacts') }) }, - Authenticator: { initWithDefaults: async () => authenticator }, - Credential: { fromBytes: async () => credential }, - FieldElement: { tryFromHexString: async () => field('factor', '0x02') }, - ProofRequest: { fromJson: async () => ({ free: () => freed.push('request') }) }, - } as unknown as PublishedWalletKit - const store = { - storeCredential: async () => { - writes++ - return BigInt(7) - }, - fetchCredential: async () => credential, - } as unknown as CredentialStore - return { - wallet: new WalletKit(client, store, 'staging', 'us'), - freed, - writes: () => writes, - failInit: () => { - failInit = true - }, - failSub: () => { - failSub = true - }, - } -} - -test('published adapter refuses a different credential subject before writing and releases handles', async () => { - const f = fixture('0x03') - await f.wallet.initializeAuthenticator(new Uint8Array(32)) - await assert.rejects(f.wallet.storeCredential(new Uint8Array(), '0x02'), /subject does not match/) - assert.equal(f.writes(), 0) - for (const name of ['actual', 'expected', 'factor', 'credential']) assert.ok(f.freed.includes(name)) -}) - -test('published adapter stores a matching credential and returns its schema/id', async () => { - const f = fixture() - await f.wallet.initializeAuthenticator(new Uint8Array(32)) - assert.deepEqual(await f.wallet.storeCredential(new Uint8Array(), '0x02'), { - credentialId: BigInt(7), - issuerSchemaId: BigInt(11), - }) - assert.equal(f.writes(), 1) -}) - -test('failed vault initialization releases the authenticator and never marks the session ready', async () => { - const f = fixture() - f.failInit() - await assert.rejects(f.wallet.initializeAuthenticator(new Uint8Array(32)), /storage unavailable/) - assert.throws(() => f.wallet.listCredentials(), /Initialize the authenticator first/) - assert.deepEqual(f.freed, ['authenticator', 'artifacts']) -}) - -test('subject preparation releases the blinding factor when computation fails', async () => { - const f = fixture() - await f.wallet.initializeAuthenticator(new Uint8Array(32)) - f.failSub() - await assert.rejects(f.wallet.prepareCredential(BigInt(11)), /subject unavailable/) - assert.ok(f.freed.includes('factor')) -}) - -test('proof disclosure preserves only the selfie score and frees response/request/credential handles', async () => { - const f = fixture() - await f.wallet.initializeAuthenticator(new Uint8Array(32)) - const proof = JSON.parse(await f.wallet.generateProof('{}')) - assert.deepEqual(proof.responses, [{ issuer_schema_id: '11', claims: ['score'] }, { issuer_schema_id: '128' }]) - for (const name of ['response', 'request', 'credential']) assert.ok(f.freed.includes(name)) -}) diff --git a/experiments/tee-demo/tsconfig.json b/experiments/tee-demo/tsconfig.json deleted file mode 100644 index 4290997..0000000 --- a/experiments/tee-demo/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2017", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "react-jsx", - "incremental": true, - "paths": { - "@/*": ["./src/*"], - "@images/*": ["./public/images/*"] - }, - "types": ["vite/client", "bun"] - }, - "include": ["src", "tests", "scripts", "vite.config.ts"], - "exclude": ["node_modules", "demo", "src/server/**/target"] -} diff --git a/experiments/tee-demo/vite.config.ts b/experiments/tee-demo/vite.config.ts deleted file mode 100644 index 5f805fa..0000000 --- a/experiments/tee-demo/vite.config.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' -import { fileURLToPath, URL } from 'node:url' - -export default defineConfig({ - plugins: [react()], - resolve: { - alias: { - '@': fileURLToPath(new URL('./src', import.meta.url)), - '@images': fileURLToPath(new URL('./public/images', import.meta.url)), - }, - }, - // Keep worker-relative asset URLs in the installed WalletKit package intact. - optimizeDeps: { exclude: ['@worldcoin/walletkit-web'] }, - worker: { format: 'es' }, - server: { - host: 'localhost', - port: 3100, - strictPort: true, - headers: { 'Referrer-Policy': 'no-referrer' }, - proxy: { '/api': { target: `http://127.0.0.1:${process.env.API_PORT || '3101'}`, changeOrigin: false } }, - }, -}) diff --git a/web/README.md b/web/README.md new file mode 100644 index 0000000..eb4793e --- /dev/null +++ b/web/README.md @@ -0,0 +1,32 @@ +# Authenticator web app + +React UI for passkey wallet access and proof requests. Run `bun run dev` from the +repo root; Bun serves the app at `http://localhost:4173`. + +## App requests + +Open `/?i=REQUEST_ID&k=URL_ENCODED_KEY`. `/verify` redirects to `/` with the same +query. `i` is the bridge request UUID; `k` is a base64-encoded 32-byte encryption +key. The optional `b` parameter selects the official production or staging bridge. +Requests currently must target staging. + +The browser fetches and decrypts the request, checks its RP signature and asks +for approval before generating a proof. It removes the key from the address bar; +reloading loses the in-memory request. Open the original connector link to resume. + +## Camera guidance + +Install the optional model from the repo root: + +```sh +bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx +``` + +The source model is in `world-app-ios` at +`Sources/FaceAuthLibrary/Sources/FaceEngineFaceAuthModel/MLModels/RGBNet.onnx`. +The script checks its size and SHA-256 against [the model manifest](lib/rgbnet-model.json) +and copies it to `web/public/models/rgbnet.onnx`, which Git ignores. +Install it before building if camera guidance is needed. + +The detector runs locally in a worker and provides positioning guidance, not +liveness or identity verification. Wallet and proof flows work without it. From 2b7f2b52ca7bb23b6a1666fc83ba1679b929a161 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 13:28:13 -0700 Subject: [PATCH 30/38] Organize README sections and link upstream dependencies --- README.md | 42 ++++++++++++++++++++++++++++++------------ api/README.md | 2 +- web/README.md | 2 +- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index c69017e..22bf18d 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,12 @@ Unlock your World ID wallet with a passkey and approve requests from apps. Currently uses staging and supports proofs with existing Orb and Selfie credentials. Selfie enrollment, user presence and recovery are still to come. -The app uses published packages, including WalletKit `0.27.1`. +## Dependencies -## Run locally +- [WalletKit](https://github.com/worldcoin/walletkit) — `@worldcoin/walletkit-web@0.27.1` for wallet storage, registration and proofs. +- [Biometrics TEE](https://github.com/worldcoin/biometrics-tee) — intended for face processing; not integrated yet. + +## Local Development Install [Bun](https://bun.sh) **1.4.2**, then: @@ -15,28 +18,43 @@ bun install --frozen-lockfile bun run dev ``` -Open **http://localhost:4173** in a browser with WebAuthn PRF support. +Open [localhost:4173](http://localhost:4173) in a browser with WebAuthn PRF support. For camera guidance, [install the RGBNet model](web/README.md#camera-guidance). Wallet and proof flows work without it. -## Where things live +## Repository Structure -- [`web`](web): React UI, passkeys, wallet, camera and proof requests. -- [`api`](api): Bun server, API routes and server configuration. -- [`tests`](tests): browser tests and shared integration fixtures. +```text +web/ React UI, browser logic and public assets +api/ Bun HTTP server and API routes +packages/ Shared contracts and browser admission policy +tests/ Browser tests and integration fixtures +scripts/ Local setup tools +``` -Each app owns its dependencies. Bun serves the frontend and API from one origin. +`web/` and `api/` own their dependencies. Bun serves both from one origin. -## Check your changes +## Running Tests ```sh -bun run lint -bun run typecheck bun run test bun x playwright install chromium webkit # First run only bun run test:browser ``` -To run the compiled app: `bun run build && bun run start`. +Static checks: + +```sh +bun run lint +bun run typecheck +``` + +## Build and Run + +```sh +bun run build +bun run start +``` + [Container instructions](api/README.md#container) · [App request format](web/README.md#app-requests) diff --git a/api/README.md b/api/README.md index 61be0de..31be70b 100644 --- a/api/README.md +++ b/api/README.md @@ -1,7 +1,7 @@ # Authenticator API Bun serves the web build and `/api/staging-rp` from the same origin. The RP lookup -reads the staging registry; passkeys, WalletKit and proof generation run in the +reads the staging registry; passkeys, [WalletKit](https://github.com/worldcoin/walletkit) and proof generation run in the browser. Promon sessions and Redis are not implemented yet. Run `bun run dev` from the repo root to watch both apps. For the compiled app, diff --git a/web/README.md b/web/README.md index eb4793e..c695653 100644 --- a/web/README.md +++ b/web/README.md @@ -22,7 +22,7 @@ Install the optional model from the repo root: bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx ``` -The source model is in `world-app-ios` at +The source model is in [World App iOS](https://github.com/worldcoin/world-app-ios) at `Sources/FaceAuthLibrary/Sources/FaceEngineFaceAuthModel/MLModels/RGBNet.onnx`. The script checks its size and SHA-256 against [the model manifest](lib/rgbnet-model.json) and copies it to `web/public/models/rgbnet.onnx`, which Git ignores. From 1ef90128ca55fc729a24d3ef1c6c0a9666bdebd1 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 13:45:17 -0700 Subject: [PATCH 31/38] Provide a safe exit when proof delivery expires --- web/App.tsx | 20 +++++++++++++++----- web/test/app.test.tsx | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 5 deletions(-) diff --git a/web/App.tsx b/web/App.tsx index 06b7b65..fa2162f 100644 --- a/web/App.tsx +++ b/web/App.tsx @@ -129,8 +129,16 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof setPreview(false); setScreen("cancelled"); setProgress(""); closeWallet(); }); + const deliveryExpired = screen === "delivery" && expired; + const leaveDelivery = () => { + operation.current?.abort(); + retainedProof.current = null; + closeWallet(); + }; + const title = loading ? "Checking your request" : loadFailed ? "Request unavailable" : screen === "done" ? "Proof response sent" : screen === "cancelled" ? "Request cancelled" + : deliveryExpired ? "Request expired" : screen === "delivery" ? "Sending your proof" : screen === "enroll" ? "Set up Selfie Check" : incoming ? "Review your request" : wallet ? "Your World ID wallet" : "World ID authenticator"; const finished = screen === "done" || screen === "cancelled"; @@ -173,7 +181,9 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof {incoming.proof.proof_requests.some(item => item.issuer_schema_id === 11) &&

      A Selfie Check proof also shares the credential’s uniqueness score.

      } } {incoming?.unsupportedReason &&

      {incoming.unsupportedReason}

      } - {expired && !finished &&

      This request expired. Start a new request at the requesting app.

      } + {expired && !finished &&

      {deliveryExpired + ? "This request expired. Proof delivery is unconfirmed. Check the requesting app before starting a new request." + : "This request expired. Start a new request at the requesting app."}

      } {wallet && screen === "review" &&

      {records.length ? `${records.length} credential${records.length === 1 ? "" : "s"} in your encrypted wallet.` : "No credentials in your encrypted wallet yet."}

      {availability && !availability.satisfied &&

      {availability.canEnrollSelfie @@ -183,8 +193,8 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof

      } {screen === "enroll" &&

      Selfie Check enrollment is not available in this app yet. You can preview camera positioning, but it will not issue a credential.

      }
      - {progress && !finished &&

      {progress}

      } - {error &&

      {error}

      } + {progress && !finished && !deliveryExpired &&

      {progress}

      } + {error && !deliveryExpired &&

      {error}

      }

      !lvftXEEr51)s+Obx{|P5MUwpWVv8lRLVrj z1KT!VSzbf}!9#0}nLl|z4RYNKXxxepKX7a}#iIkDoNz1*3J3sRsCK0$cU!Eqti{St z69t}4PEykPs^qnSpjI<@Ld|;qURRWCabeaf$l>h`6TM`Joi*^WruD>C#=RsK)Xj~d z>f&gw0qP#T1&sMaX4d$Vr$-zrM5c%!d-)1>2;5Nfh%+7{sagn+m`%Ob{S2IFnF1nT z#WKM-QPAU8r#I0=WYvX@^7O2E|9ej*f#R)y4f`#^RtNd=gugAkFcyAZ;>8jEnwbWh zh$@pF4QvFjFfDSzZFyE@{Vv%~$0aBq~`O}9^^;N?&A}tUk9yT34 zlcej1ck2180!=o>m7W~_==#0XhG9Rn{HV{%tj|l!D7@);!2K6TnX`mdgZn-ABCuz5 zTPa7?vH@gvx9axi+J)JHDzF{drxZ{+W<@#6q=?mHwpZrQT@pe<_zGHylTcIg%y0Gp_nmGck@y!J^vbXH@R@StUv%kkWUKt|c|3#jXk@kWVPYkhokbm(%}tMwZBKE998gX7np^hH7`>oO=ZZmPa z2t03@4?7XUUr9If_j?4*J%sZ&^aH>^WaVIi6t@gGB%~(|600J;G9ZO5`wk9)f2H^0 z2jvch$L08!j=U@14x6KcI|o2t=@jcL0Pw)`q-|bhy$h)=e_~w!u?!2&k(4(i@HQ`T z-xT`%PMz>~Azk*WnKOq!s$w^@`aoNY3vW17Gp15wA_GlTyw>tm>H}l32|^tvMJso^ z(*G%$N!zCfzU-qIPX}+pAnKw4Fy|^4;Z;YnkTpA?!BIlj4lEMbHc8zozeIt7SO$tJ z8owh1(ZN)TWL@GVBw{?x0{x+A?b9;koV`S*6$V3!IR&wHIJPwXAjHhONNUVuVaUBF z_B-aEhE{fAIXAPNUhQO|apY_la9n@#3}G7X>4whNxat%55Xa+{<`ZF~nP*q*$z&c% z$}6rCv%Xau+*Ex3p>BoXLf@kd0WbJ!ietzA54q$2FC)`ua;k0reIZ3M`JMPHCUu)K z>3n~AIX~()W)JGNG{`boj&Ex_@nIiZ^B!iFYaaLf*si^~r(abxu@+uzFB)9#lsr~6 zy5OvxJaDu{Hwlk8)XJbgbjG2$E_AQ>soOBzBkt1^T%eG0Flqw!k2mDr2Hds`{j{Vf zDw+qbNx`>nM)E#fjz_RM?GRoyt0^F3<4COxeSV`to{Yk9`Nenu=&h7TbFk zP?3QfdhaR5c|{tS#d*qg|L+a(tv&iv8YJwCSrl|+eXgAoMEafEDBUSDX?J42Lu5zV z0-v6>?e06y1zrRf}vvN`=eoFN>B65h&TmSoIj^JjIiY!d|d}pSVi>eZi$UaZagwd z?6Zf2c<*n#D`uce(4Ib!_$_|qzkfHL>Wf?_yiK(|cw+56$kJ2sfM_0Vx&W>ZJYEq0 z(Nt+u?Iy|auf7L)3IB#_g+F@p&XhZsci|K!3}`xGcNcc7Hh+}d{?!$;HlEzVXxj|* z&Fu1@wrYI==c3BZi$z>)4eYqAQClyczUBhdu8(O2fbf*bQ`jb6iD~$i>OES0t@G1Cw+T%9@9%rB4$(n z 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

      {devMode && void refreshVault()} onDelete={id => void deleteCredential(id)} />} diff --git a/web/test/app.test.tsx b/web/test/app.test.tsx index 7d11403..5caebda 100644 --- a/web/test/app.test.tsx +++ b/web/test/app.test.tsx @@ -78,6 +78,47 @@ test("unsupported presence requirements stop before passkey setup", async () => expect(view.queryByRole("button", { name: "Create or unlock with passkey" })).toBeNull(); }); +for (const pending of [false, true]) { + test(`expired delivery offers a local exit after ${pending ? "a pending upload" : "an upload failure"}`, async () => { + const f = await fixture(11, true); + f.incoming.proof.expires_at = Math.ceil(Date.now() / 1000) + 1; + let deliverySignal: AbortSignal | undefined; + let cancellations = 0; + f.incoming.cancel = async () => { cancellations++; }; + f.incoming.deliver = async (proof, signal) => { + f.calls.deliver.push(proof); + deliverySignal = signal; + if (pending) await new Promise((_, reject) => { + signal.addEventListener("abort", () => reject(signal.reason), { once: true }); + }); + throw new Error("Transport unavailable"); + }; + const view = render(); + fireEvent.click(await view.findByRole("button", { name: "Create or unlock with passkey" })); + await waitFor(() => expect((view.getByRole("button", { name: "Approve and share proof" }) as HTMLButtonElement).disabled).toBe(false)); + fireEvent.click(view.getByRole("button", { name: "Approve and share proof" })); + await waitFor(() => expect(f.calls.deliver).toHaveLength(1)); + expect(await view.findByRole("heading", { name: "Request expired" }, { timeout: 3000 })).toBeTruthy(); + expect(view.getByText(/Proof delivery is unconfirmed\. Check the requesting app/)).toBeTruthy(); + expect(view.queryByText(/Retry sending the same proof/)).toBeNull(); + const retry = view.getByRole("button", { name: "Retry sending proof" }) as HTMLButtonElement; + expect(retry.disabled).toBe(true); + fireEvent.click(retry); + expect(f.calls.deliver).toHaveLength(1); + const exit = view.getByRole("link", { name: "Open authenticator" }); + expect(exit.getAttribute("href")).toBe("/"); + // Keep this DOM test on the page while exercising the exit's cleanup. + exit.addEventListener("click", event => event.preventDefault()); + fireEvent.click(exit); + expect(f.calls.terminated).toBe(1); + if (pending) expect(deliverySignal?.aborted).toBe(true); + expect(cancellations).toBe(0); + expect(f.calls.prove).toBe(1); + expect(view.queryByText("No proof was sent. You can return to the requesting app.")).toBeNull(); + view.unmount(); + }); +} + test("missing camera APIs show an actionable failure without crashing the flow", async () => { const original = Object.getOwnPropertyDescriptor(navigator, "mediaDevices"); Object.defineProperty(navigator, "mediaDevices", { value: undefined, configurable: true }); From c6c4234a57953fa240fd7e81b20ad5082c2b6a34 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 14:13:06 -0700 Subject: [PATCH 32/38] Recover failed registrations and show wallet setup timeouts --- web/App.tsx | 12 ++++++--- web/lib/wallet-errors.ts | 6 +++++ web/lib/wallet-persistence.ts | 4 +-- web/lib/wallet-registration.ts | 20 +++++++++----- web/lib/wallet-session.ts | 10 +++++-- web/test/app.test.tsx | 27 +++++++++++++++++++ web/test/registration.test.ts | 48 +++++++++++++++++++++++++++++++++- 7 files changed, 112 insertions(+), 15 deletions(-) diff --git a/web/App.tsx b/web/App.tsx index fa2162f..a7406e6 100644 --- a/web/App.tsx +++ b/web/App.tsx @@ -2,7 +2,7 @@ import { useEffect, useRef, useState } from "react"; import { CameraPreview } from "./components/CameraPreview"; import { DeveloperPanel } from "./components/DeveloperPanel"; import { openAuthenticator } from "./lib/wallet-session"; -import { walletOpenErrorMessage } from "./lib/wallet-errors"; +import { WalletRegistrationError, walletOpenErrorMessage } from "./lib/wallet-errors"; import { abortable } from "./lib/async"; import type { WalletKit, CredentialMetadata } from "./lib/walletkit"; import { loadIncomingRequest, type IncomingRequest } from "./lib/incoming-request"; @@ -10,7 +10,7 @@ import { credentialAvailability, credentialRequirementsLabel } from "./lib/proof import { createProof } from "./lib/prove"; const defaults = { open: openAuthenticator, load: loadIncomingRequest, prove: createProof }; -type Screen = "review" | "enroll" | "delivery" | "done" | "cancelled"; +type Screen = "review" | "enroll" | "delivery" | "done" | "cancelled" | "wallet-timeout" | "wallet-error"; export function AuthenticatorAppV1({ services = defaults }: { services?: typeof defaults }) { const [incoming, setIncoming] = useState(null); @@ -91,10 +91,13 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof } const unlock = () => run(async signal => { + setScreen("review"); setProgress("Use your passkey to open your wallet…"); let current: WalletKit; try { current = await services.open(signal, setProgress); } catch (cause) { + setProgress(""); + if (cause instanceof WalletRegistrationError) setScreen(cause.timedOut ? "wallet-timeout" : "wallet-error"); throw new Error(walletOpenErrorMessage(cause), { cause }); } if (signal.aborted) { current.terminate(); signal.throwIfAborted(); } @@ -139,6 +142,7 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof const title = loading ? "Checking your request" : loadFailed ? "Request unavailable" : screen === "done" ? "Proof response sent" : screen === "cancelled" ? "Request cancelled" : deliveryExpired ? "Request expired" + : screen === "wallet-timeout" ? "Wallet setup timed out" : screen === "wallet-error" ? "Wallet setup interrupted" : screen === "delivery" ? "Sending your proof" : screen === "enroll" ? "Set up Selfie Check" : incoming ? "Review your request" : wallet ? "Your World ID wallet" : "World ID authenticator"; const finished = screen === "done" || screen === "cancelled"; @@ -198,7 +202,7 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof
      {!loading && !finished && screen !== "delivery" && <> - {!wallet && supported && } + {!wallet && supported && } {wallet && screen === "review" && incoming && supported && } {wallet && screen === "review" && supported && (incoming ? availability?.canEnrollSelfie : !hasSelfie) && } {wallet && screen === "enroll" && supported && <> @@ -210,7 +214,7 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof } {screen === "delivery" && } {finished && incoming?.returnUrl && Return to requesting app} - {(finished || loadFailed || deliveryExpired) && Open authenticator} + {(finished || loadFailed || deliveryExpired || screen === "wallet-timeout" || screen === "wallet-error") && Open authenticator}
      {devMode && void refreshVault()} onDelete={id => void deleteCredential(id)} />} diff --git a/web/lib/wallet-errors.ts b/web/lib/wallet-errors.ts index 093c0d9..12153ac 100644 --- a/web/lib/wallet-errors.ts +++ b/web/lib/wallet-errors.ts @@ -1,6 +1,12 @@ /** Deliberate UI-safe failures; raw worker/provider errors may contain sensitive data. */ export class WalletOpenError extends Error {} +export class WalletRegistrationError extends WalletOpenError { + constructor(message: string, readonly timedOut: boolean, options?: ErrorOptions) { + super(message, options); + } +} + export function walletOpenErrorMessage(cause: unknown): string { if (cause instanceof WalletOpenError) return cause.message; if (cause instanceof Error) { diff --git a/web/lib/wallet-persistence.ts b/web/lib/wallet-persistence.ts index 8e582d1..7ade1a4 100644 --- a/web/lib/wallet-persistence.ts +++ b/web/lib/wallet-persistence.ts @@ -1,10 +1,10 @@ import { WalletOpenError } from "./wallet-errors"; -export type RegistrationState = "submitting" | "finalized"; +export type RegistrationState = "submitting" | "failed" | "finalized"; export function registrationState(credentialId: string): RegistrationState | null { const value = window.localStorage.getItem(`world-id-staging-registration-v1:${credentialId}`); - if (value !== null && value !== "submitting" && value !== "finalized") { + if (value !== null && value !== "submitting" && value !== "failed" && value !== "finalized") { throw new WalletOpenError("Saved registration status is invalid. Do not clear site data to retry registration."); } return value; diff --git a/web/lib/wallet-registration.ts b/web/lib/wallet-registration.ts index dbe6706..5344365 100644 --- a/web/lib/wallet-registration.ts +++ b/web/lib/wallet-registration.ts @@ -1,5 +1,5 @@ import { logFlowStep } from './flow-logging'; -import { WalletOpenError } from "./wallet-errors"; +import { WalletRegistrationError } from "./wallet-errors"; import type { WalletKit } from "./walletkit"; import { abortable, pause } from "./async"; import { registrationState, saveRegistrationState } from "./wallet-persistence"; @@ -14,15 +14,19 @@ export async function activateStagingWallet( const saved = registrationState(credentialId); let stage = "initialize the registered account"; try { - if (saved === null) { + if (saved === null || saved === "failed") { signal.throwIfAborted(); // Persist before the remote mutation: an ambiguous result must never trigger a second registration. saveRegistrationState(credentialId, "submitting"); stage = "confirm staging registration; it may already have been submitted"; progress("Registering your World ID account on staging…"); - await logFlowStep("registration.submit", () => abortable(wallet.register(seed), signal)); + await logFlowStep("registration.submit", () => abortable(wallet.register(seed), AbortSignal.any([signal, AbortSignal.timeout(30_000)]))); for (;;) { - const status = await logFlowStep("registration.poll", () => abortable(wallet.pollRegistration(), signal)); + const status = await logFlowStep("registration.poll", () => abortable(wallet.pollRegistration(), AbortSignal.any([signal, AbortSignal.timeout(30_000)]))); + if (status.state === "failed") { + saveRegistrationState(credentialId, "failed"); + throw new WalletRegistrationError("Registration failed. Retry with your existing passkey to submit registration again.", false); + } if (!["queued", "batching", "submitted", "finalized"].includes(status.state)) { throw new Error("Registration was not finalized."); } @@ -35,11 +39,15 @@ export async function activateStagingWallet( progress(saved === "submitting" ? "Checking the previously submitted account. No new registration will be sent…" : "Opening the registered authenticator and encrypted vault…"); - await logFlowStep("registration.initialize_authenticator", () => abortable(wallet.initializeAuthenticator(seed), signal)); + await logFlowStep("registration.initialize_authenticator", () => abortable(wallet.initializeAuthenticator(seed), AbortSignal.any([signal, AbortSignal.timeout(30_000)]))); signal.throwIfAborted(); saveRegistrationState(credentialId, "finalized"); } catch (cause) { wallet.terminate(); - throw new WalletOpenError(`Could not ${stage}. Unlock to check again. No automatic resubmission was made.`, { cause }); + if (cause instanceof WalletRegistrationError) throw cause; + const timedOut = cause instanceof Error && cause.name === "TimeoutError"; + throw new WalletRegistrationError(timedOut + ? "Wallet setup timed out. Registration may still finish. Retry with your existing passkey to check the account; no new registration will be submitted." + : `Could not ${stage}. Retry with your existing passkey to check the account. No automatic resubmission was made.`, timedOut, { cause }); } } diff --git a/web/lib/wallet-session.ts b/web/lib/wallet-session.ts index 14898fa..5ad8516 100644 --- a/web/lib/wallet-session.ts +++ b/web/lib/wallet-session.ts @@ -7,7 +7,7 @@ import { WalletKit as AccountWallet } from "./walletkit"; import { activateStagingWallet } from "./wallet-registration"; import { abortable } from "./async"; import { prfBytes } from "./prf-result"; -import { WalletOpenError } from "./wallet-errors"; +import { WalletOpenError, WalletRegistrationError } from "./wallet-errors"; const PROFILE_KEY = "world-id-wallet-v1"; const PRF_INPUT = new TextEncoder().encode("world-id/web-authenticator/prf/v1"); @@ -148,7 +148,10 @@ async function openWalletUnderLock(signal: AbortSignal, activate?: Activate): Pr let client: WalletKit | undefined; const opening = new AbortController(); const abort = () => { opening.abort(); client?.terminate(); }; - const timeout = setTimeout(abort, activate ? 300_000 : 60_000); + const timeout = setTimeout(() => { + opening.abort(new DOMException("Wallet setup timed out", "TimeoutError")); + client?.terminate(); + }, activate ? 300_000 : 60_000); signal.addEventListener("abort", abort, { once: true }); try { signal.throwIfAborted(); @@ -172,6 +175,9 @@ async function openWalletUnderLock(signal: AbortSignal, activate?: Activate): Pr return { client, store }; } catch (error) { client?.terminate(); + if (activate && opening.signal.reason instanceof Error && opening.signal.reason.name === "TimeoutError") { + throw new WalletRegistrationError("Wallet setup timed out. Retry with your existing passkey. Any previously submitted registration will be checked before continuing.", true, { cause: error }); + } throw error; } finally { clearTimeout(timeout); diff --git a/web/test/app.test.tsx b/web/test/app.test.tsx index 5caebda..c188390 100644 --- a/web/test/app.test.tsx +++ b/web/test/app.test.tsx @@ -7,10 +7,37 @@ import { signedRequest } from "../../tests/integration/fixtures/request"; import type { IncomingRequest } from "../lib/incoming-request"; import type { WalletKit, CredentialMetadata } from "../lib/walletkit"; import type { DetectorResponse } from "../lib/rgbnet.worker"; +import { WalletRegistrationError } from "../lib/wallet-errors"; beforeAll(() => GlobalRegistrator.register({ url: "http://localhost:4173/" })); afterAll(() => GlobalRegistrator.unregister()); afterEach(() => cleanup()); + +test("wallet setup timeout clears progress and offers a retry that preserves the incoming request", async () => { + const f = await fixture(1, true); + const open = f.services.open; + f.services.open = async () => { throw new WalletRegistrationError("Registration may still finish. Retry to check the account.", true); }; + const view = render(); + fireEvent.click(await view.findByRole("button", { name: "Create or unlock with passkey" })); + expect(await view.findByRole("heading", { name: "Wallet setup timed out" })).toBeTruthy(); + expect(view.queryByRole("status")).toBeNull(); + expect(view.getByText("Registration may still finish. Retry to check the account.")).toBeTruthy(); + expect(view.getByRole("link", { name: "Open authenticator" }).getAttribute("href")).toBe("/"); + f.services.open = open; + fireEvent.click(view.getByRole("button", { name: "Retry wallet setup" })); + await waitFor(() => expect((view.getByRole("button", { name: "Approve and share proof" }) as HTMLButtonElement).disabled).toBe(false)); + expect(view.queryByRole("alert")).toBeNull(); + expect(f.calls.prove).toBe(0); +}); + +test("definitive wallet setup failure offers retry", async () => { + const f = await fixture(1); + f.services.open = async () => { throw new WalletRegistrationError("Registration failed. Retry registration.", false); }; + const view = render(); + fireEvent.click(await view.findByRole("button", { name: "Create or unlock with passkey" })); + expect(await view.findByRole("heading", { name: "Wallet setup interrupted" })).toBeTruthy(); + expect((view.getByRole("button", { name: "Retry wallet setup" }) as HTMLButtonElement).disabled).toBe(false); +}); async function fixture(schema: number, available = false) { const { payload } = await signedRequest(schema); let records = available ? [{ credentialId: 1n, issuerSchemaId: BigInt(schema), isExpired: false, expiresAt: BigInt(Math.floor(Date.now()/1000)+3600), genesisIssuedAt: 0n } as CredentialMetadata] : []; diff --git a/web/test/registration.test.ts b/web/test/registration.test.ts index 7d0db25..44b9df6 100644 --- a/web/test/registration.test.ts +++ b/web/test/registration.test.ts @@ -1,8 +1,9 @@ -import { afterAll, beforeAll, beforeEach, expect, test } from "bun:test"; +import { afterAll, beforeAll, beforeEach, expect, spyOn, test } from "bun:test"; import { GlobalRegistrator } from "@happy-dom/global-registrator"; import { activateStagingWallet } from "../lib/wallet-registration"; import { registrationState, saveRegistrationState } from "../lib/wallet-persistence"; import type { WalletKit } from "../lib/walletkit"; +import { WalletRegistrationError } from "../lib/wallet-errors"; beforeAll(() => GlobalRegistrator.register()); afterAll(() => GlobalRegistrator.unregister()); @@ -39,3 +40,48 @@ test("malformed registration metadata fails closed", async () => { const f = fixture(); await expect(activate(f.wallet)).rejects.toThrow("Saved registration"); expect(f.calls).toEqual([]); }); + +test("a definitive registration failure allows an explicit retry with the same passkey", async () => { + const f = fixture(); + f.wallet.pollRegistration = async () => ({ state: "failed", error: "gateway rejected" }); + await expect(activate(f.wallet)).rejects.toThrow("Registration failed"); + expect(registrationState("ab")).toBe("failed"); + expect(f.calls).toEqual(["register", "terminate"]); + const retry = fixture(); + await activate(retry.wallet); + expect(retry.calls).toEqual(["register", "init"]); + expect(registrationState("ab")).toBe("finalized"); +}); + +for (const step of ["register", "pollRegistration"] as const) { + test(`${step} timeout stops the worker and retry checks without resubmitting`, async () => { + const f = fixture(); + f.wallet[step] = () => new Promise(() => {}); + const deadline = new AbortController(); + const timeout = spyOn(AbortSignal, "timeout").mockReturnValue(deadline.signal); + try { + const result = activate(f.wallet); + // Allow submission to finish and polling to start in the polling case. + await new Promise(resolve => setTimeout(resolve, 0)); + deadline.abort(new DOMException("Timed out", "TimeoutError")); + await expect(result).rejects.toBeInstanceOf(WalletRegistrationError); + await expect(result).rejects.toMatchObject({ timedOut: true }); + expect(timeout).toHaveBeenCalledWith(30_000); + expect(registrationState("ab")).toBe("submitting"); + expect(f.calls).toContain("terminate"); + } finally { timeout.mockRestore(); } + const retry = fixture(); + await activate(retry.wallet); + expect(retry.calls).toEqual(["init"]); + expect(registrationState("ab")).toBe("finalized"); + }); +} + +test("an unsuccessful account check after timeout preserves the uncertain registration", async () => { + saveRegistrationState("ab", "submitting"); + const f = fixture(); + f.wallet.initializeAuthenticator = async () => { throw new Error("Account unavailable"); }; + await expect(activate(f.wallet)).rejects.toThrow("Retry with your existing passkey"); + expect(registrationState("ab")).toBe("submitting"); + expect(f.calls).toEqual(["terminate"]); +}); From b3126d280675b4b90b7438023486d1269be61812 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 14:28:40 -0700 Subject: [PATCH 33/38] Keep model assets local and simplify setup documentation --- .gitignore | 3 ++- README.md | 4 ---- scripts/setup-rgbnet.ts | 14 -------------- .../integration/browser/rgbnet.browser.spec.ts | 2 +- tsconfig.tools.json | 1 - web/README.md | 17 ----------------- web/lib/rgbnet-model.json | 2 +- web/lib/rgbnet.worker.ts | 4 ++-- web/public/models/README.md | 4 ++++ 9 files changed, 10 insertions(+), 41 deletions(-) delete mode 100644 scripts/setup-rgbnet.ts create mode 100644 web/public/models/README.md diff --git a/.gitignore b/.gitignore index f33c4f4..fd0dba7 100644 --- a/.gitignore +++ b/.gitignore @@ -18,7 +18,8 @@ coverage/ .wrangler/ -web/public/models/rgbnet.onnx +web/public/models/* +!web/public/models/README.md .next/ demo/ diff --git a/README.md b/README.md index 22bf18d..c71e37e 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,6 @@ bun run dev Open [localhost:4173](http://localhost:4173) in a browser with WebAuthn PRF support. -For camera guidance, [install the RGBNet model](web/README.md#camera-guidance). -Wallet and proof flows work without it. - ## Repository Structure ```text @@ -30,7 +27,6 @@ web/ React UI, browser logic and public assets api/ Bun HTTP server and API routes packages/ Shared contracts and browser admission policy tests/ Browser tests and integration fixtures -scripts/ Local setup tools ``` `web/` and `api/` own their dependencies. Bun serves both from one origin. diff --git a/scripts/setup-rgbnet.ts b/scripts/setup-rgbnet.ts deleted file mode 100644 index 2cf5135..0000000 --- a/scripts/setup-rgbnet.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { resolve } from 'node:path' -import { createHash } from 'node:crypto' -import { mkdir, readFile, writeFile } from 'node:fs/promises' -import model from '../web/lib/rgbnet-model.json' - -const source = process.argv[2] -if (!source) throw new Error('Usage: bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx') -const bytes = await readFile(source) -if (bytes.length !== model.bytes || createHash('sha256').update(bytes).digest('hex') !== model.sha256) - throw new Error('RGBNet does not match the pinned model. Review model provenance before changing the manifest.') -const destination = resolve(import.meta.dir, '../web/public/models/rgbnet.onnx') -await mkdir(resolve(import.meta.dir, '../web/public/models'), { recursive: true }) -await writeFile(destination, bytes) -console.info(`Installed verified RGBNet (${bytes.length} bytes) at ${destination}`) diff --git a/tests/integration/browser/rgbnet.browser.spec.ts b/tests/integration/browser/rgbnet.browser.spec.ts index e8b2ed9..885dcd2 100644 --- a/tests/integration/browser/rgbnet.browser.spec.ts +++ b/tests/integration/browser/rgbnet.browser.spec.ts @@ -5,7 +5,7 @@ import type { DetectorResponse } from "../../../web/lib/rgbnet.worker"; if (!("bun" in process.versions)) { for (const missing of [false, true]) { test(`built RGBNet worker ${missing ? "reports missing weights" : "runs real ONNX inference"}`, async ({ page }) => { - test.skip(!missing && !existsSync("web/dist/models/rgbnet.onnx"), "Install the pinned RGBNet artifact to exercise real inference"); + test.skip(!missing && !existsSync("web/dist/models/rgbnet.onnx"), "Local model weights are unavailable"); test.setTimeout(60_000); const asset = readdirSync("web/dist/assets").find(name => /^rgbnet\.worker-.*\.js$/.test(name)); expect(asset).toBeTruthy(); diff --git a/tsconfig.tools.json b/tsconfig.tools.json index cac5658..bfe7ffa 100644 --- a/tsconfig.tools.json +++ b/tsconfig.tools.json @@ -11,7 +11,6 @@ }, "include": [ "web/vite.config.ts", - "scripts/**/*.ts", "tests/e2e/playwright.config.ts" ] } diff --git a/web/README.md b/web/README.md index c695653..4513d5e 100644 --- a/web/README.md +++ b/web/README.md @@ -13,20 +13,3 @@ Requests currently must target staging. The browser fetches and decrypts the request, checks its RP signature and asks for approval before generating a proof. It removes the key from the address bar; reloading loses the in-memory request. Open the original connector link to resume. - -## Camera guidance - -Install the optional model from the repo root: - -```sh -bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx -``` - -The source model is in [World App iOS](https://github.com/worldcoin/world-app-ios) at -`Sources/FaceAuthLibrary/Sources/FaceEngineFaceAuthModel/MLModels/RGBNet.onnx`. -The script checks its size and SHA-256 against [the model manifest](lib/rgbnet-model.json) -and copies it to `web/public/models/rgbnet.onnx`, which Git ignores. -Install it before building if camera guidance is needed. - -The detector runs locally in a worker and provides positioning guidance, not -liveness or identity verification. Wallet and proof flows work without it. diff --git a/web/lib/rgbnet-model.json b/web/lib/rgbnet-model.json index 989b9e5..0b12056 100644 --- a/web/lib/rgbnet-model.json +++ b/web/lib/rgbnet-model.json @@ -2,5 +2,5 @@ "url": "/models/rgbnet.onnx", "sha256": "35e9bdee626e16721e4566d1e552ad369d8334658b7893ee62cf3a026f1c0d06", "bytes": 1720022, - "source": "world-app-ios/Sources/FaceAuthLibrary/Sources/FaceEngineFaceAuthModel/MLModels/RGBNet.onnx" + "source": "world-app-ios/Sources/FaceAuth/Sources/FaceEngineFaceAuthModel/MLModels/RGBNet.onnx" } diff --git a/web/lib/rgbnet.worker.ts b/web/lib/rgbnet.worker.ts index d681141..92bda5a 100644 --- a/web/lib/rgbnet.worker.ts +++ b/web/lib/rgbnet.worker.ts @@ -47,9 +47,9 @@ self.onmessage = async ({ data }: MessageEvent) => { log(`Downloading RGBNet (${model.bytes} bytes expected). Frames remain on this device.`) const response = await fetch(model.url, { signal: AbortSignal.timeout(20_000), credentials: 'omit' }) if (!response.ok) - throw new Error(`Model download returned HTTP ${response.status}; run the RGBNet setup script`) + throw new Error(`Model download returned HTTP ${response.status}`) const bytes = await response.arrayBuffer() - if (bytes.byteLength !== model.bytes) throw new Error('Model length mismatch; run the RGBNet setup script') + if (bytes.byteLength !== model.bytes) throw new Error('Model length mismatch') stage = 'model integrity' const hash = Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256', bytes)), b => b.toString(16).padStart(2, '0') diff --git a/web/public/models/README.md b/web/public/models/README.md new file mode 100644 index 0000000..81f07f5 --- /dev/null +++ b/web/public/models/README.md @@ -0,0 +1,4 @@ +# Models + +RGBNet comes from Tools for Humanity's private [rgb-net repository](https://github.com/worldcoin/rgb-net). +Model binaries are excluded from Git. From 512976b94b020af9df765065642a2ee0652d355d Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 14:45:42 -0700 Subject: [PATCH 34/38] Remove camera preview from the shipped authenticator UI --- .../browser/rgbnet.browser.spec.ts | 52 ++++++------------- web/App.tsx | 15 +++--- web/components/DeveloperPanel.tsx | 9 ++-- web/test/app.test.tsx | 6 ++- 4 files changed, 29 insertions(+), 53 deletions(-) diff --git a/tests/integration/browser/rgbnet.browser.spec.ts b/tests/integration/browser/rgbnet.browser.spec.ts index 885dcd2..a88aa72 100644 --- a/tests/integration/browser/rgbnet.browser.spec.ts +++ b/tests/integration/browser/rgbnet.browser.spec.ts @@ -1,42 +1,20 @@ import { expect, test } from "@playwright/test"; -import { existsSync, readdirSync } from "node:fs"; -import type { DetectorResponse } from "../../../web/lib/rgbnet.worker"; +import { readdirSync } from "node:fs"; if (!("bun" in process.versions)) { - for (const missing of [false, true]) { - test(`built RGBNet worker ${missing ? "reports missing weights" : "runs real ONNX inference"}`, async ({ page }) => { - test.skip(!missing && !existsSync("web/dist/models/rgbnet.onnx"), "Local model weights are unavailable"); - test.setTimeout(60_000); - const asset = readdirSync("web/dist/assets").find(name => /^rgbnet\.worker-.*\.js$/.test(name)); - expect(asset).toBeTruthy(); - if (missing) await page.route("**/models/rgbnet.onnx", route => route.fulfill({ status: 404, body: "Not found" })); - await page.goto("/"); - const result = await page.evaluate(async ({ url, missing }) => { - return new Promise((resolve, reject) => { - const worker = new Worker(url, { type: "module" }); - const timer = setTimeout(() => { worker.terminate(); reject(new Error("Detector test timed out")); }, 45_000); - const finish = (value: DetectorResponse) => { clearTimeout(timer); worker.terminate(); resolve(value); }; - worker.onerror = () => { clearTimeout(timer); worker.terminate(); reject(new Error("Built worker failed to load")); }; - worker.onmessage = ({ data }: MessageEvent) => { - if (data.type === "error" || data.type === "result") finish(data); - if (data.type === "ready") { - if (missing) { clearTimeout(timer); worker.terminate(); reject(new Error("Missing weights must not initialize")); return; } - const canvas = new OffscreenCanvas(256, 256); - const context = canvas.getContext("2d"); - if (!context) { clearTimeout(timer); worker.terminate(); reject(new Error("Test canvas unavailable")); return; } - context.fillRect(0, 0, 256, 256); - const bitmap = canvas.transferToImageBitmap(); - worker.postMessage({ type: "frame", id: 1, bitmap }, [bitmap]); - } - }; - worker.postMessage({ type: "init", diagnostics: false }); - }); - }, { url: `/assets/${asset}`, missing }); - if (missing) expect(result).toMatchObject({ type: "error", stage: "model download" }); - else { - expect(result).toMatchObject({ type: "result", id: 1, width: 256, height: 256, faces: [] }); - if (result.type === "result") expect(result.timings).toContain("inference"); - } + test("shipped app has no camera preview or detector runtime", async ({ page }) => { + const assets = readdirSync("web/dist/assets"); + expect(assets.filter(name => /^(rgbnet\.worker-|ort-wasm-)/.test(name))).toEqual([]); + const modelRequests: string[] = []; + page.on("request", request => { + if (new URL(request.url()).pathname.startsWith("/models/")) modelRequests.push(request.url()); }); - } + await page.goto("/"); + await expect(page.getByRole("heading", { name: "World ID authenticator" })).toBeVisible(); + await page.getByRole("switch", { name: "Dev mode" }).click(); + await expect(page.getByText("Not available in this app", { exact: true })).toBeVisible(); + await expect(page.getByRole("button", { name: /camera preview/i })).toHaveCount(0); + await expect(page.locator("video")).toHaveCount(0); + expect(modelRequests).toEqual([]); + }); } diff --git a/web/App.tsx b/web/App.tsx index a7406e6..11e5ee3 100644 --- a/web/App.tsx +++ b/web/App.tsx @@ -1,5 +1,4 @@ import { useEffect, useRef, useState } from "react"; -import { CameraPreview } from "./components/CameraPreview"; import { DeveloperPanel } from "./components/DeveloperPanel"; import { openAuthenticator } from "./lib/wallet-session"; import { WalletRegistrationError, walletOpenErrorMessage } from "./lib/wallet-errors"; @@ -22,7 +21,6 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof const [progress, setProgress] = useState(""); const [error, setError] = useState(null); const [loadFailed, setLoadFailed] = useState(false); - const [preview, setPreview] = useState(false); const [expired, setExpired] = useState(false); const [devMode, setDevMode] = useState(false); const operation = useRef(null); @@ -129,7 +127,7 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof try { await incoming.cancel(AbortSignal.any([signal, AbortSignal.timeout(15_000)])); } catch (cause) { throw new Error("Could not send the rejection. Retry cancellation or close this tab and let the request expire.", { cause }); } } - setPreview(false); setScreen("cancelled"); setProgress(""); closeWallet(); + setScreen("cancelled"); setProgress(""); closeWallet(); }); const deliveryExpired = screen === "delivery" && expired; @@ -169,9 +167,9 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof return

      World ID

      -
      +
      - {preview && screen === "enroll" ? : } +

      {title}

      {screen === "done" &&

      Your proof reached the bridge. The requesting app verifies it.

      } @@ -195,7 +193,7 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof : availability.requiresOrb ? "This request needs an eligible Orb credential. Orb enrollment and transfer are not available here." : "Your wallet does not meet the requested credential and date requirements."}

      } } - {screen === "enroll" &&

      Selfie Check enrollment is not available in this app yet. You can preview camera positioning, but it will not issue a credential.

      } + {screen === "enroll" &&

      Selfie Check enrollment is not available in this app yet.

      }
      {progress && !finished && !deliveryExpired &&

      {progress}

      } {error && !deliveryExpired &&

      {error}

      } @@ -206,8 +204,7 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof {wallet && screen === "review" && incoming && supported && } {wallet && screen === "review" && supported && (incoming ? availability?.canEnrollSelfie : !hasSelfie) && } {wallet && screen === "enroll" && supported && <> - - + } {incoming && } {wallet && !incoming && screen === "review" && } @@ -217,7 +214,7 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof {(finished || loadFailed || deliveryExpired || screen === "wallet-timeout" || screen === "wallet-error") && Open authenticator}
      - {devMode && void refreshVault()} onDelete={id => void deleteCredential(id)} />} + {devMode && void refreshVault()} onDelete={id => void deleteCredential(id)} />}
      ; } diff --git a/web/components/DeveloperPanel.tsx b/web/components/DeveloperPanel.tsx index e8bcff9..af8b3e4 100644 --- a/web/components/DeveloperPanel.tsx +++ b/web/components/DeveloperPanel.tsx @@ -2,7 +2,6 @@ import { useState } from "react"; import type { CredentialMetadata } from "../lib/walletkit"; import type { IncomingRequest } from "../lib/incoming-request"; import { credentialRequirementsLabel } from "../lib/proof-request"; -import { LIVE_GUIDANCE_MODEL_V1 } from "../lib/model-provenance"; function credentialDescription(schema: bigint) { if (schema === 11n) return { name: "Selfie Check", description: "Schema 11. A proof can disclose the uniqueness score. Enrollment is not available in this app." }; @@ -13,12 +12,11 @@ function credentialDescription(schema: bigint) { function date(value: bigint) { return new Date(Number(value) * 1000).toLocaleString(); } -export function DeveloperPanel({ records, unlocked, disabled, incoming, preview, onRefresh, onDelete }: { +export function DeveloperPanel({ records, unlocked, disabled, incoming, onRefresh, onDelete }: { records: CredentialMetadata[]; unlocked: boolean; disabled: boolean; incoming: IncomingRequest | null; - preview: boolean; onRefresh: () => void; onDelete: (id: bigint) => void; }) { @@ -51,9 +49,8 @@ export function DeveloperPanel({ records, unlocked, disabled, incoming, preview,

      Current request

      {incoming ?
      Requesting RP
      {incoming.label}
      Action
      {incoming.actionLabel || "No action label"}
      Accepted credentials
      {credentialRequirementsLabel(incoming.proof)}
      Expires
      {date(BigInt(incoming.proof.expires_at))}
      :

      No RP request loaded. Open a request from the separate demo app.

      }
      -

      Camera & issuance

      -
      Preview
      {preview ? "Open — local camera guidance" : "Closed"}
      Guidance model
      {LIVE_GUIDANCE_MODEL_V1.modelKind}
      Runtime
      {LIVE_GUIDANCE_MODEL_V1.runtimePackage} · {LIVE_GUIDANCE_MODEL_V1.runtimeVersion} · CPU / WASM
      Staging issuance
      Not implemented
      TEE face verification
      Not connected
      -

      RGBNet face boxes drive face-count, centering and distance instructions. Inference runs in a dedicated worker, one frame at a time. Camera frames stay in this tab; they are not submitted for enrollment.

      +

      Selfie Check

      +
      Camera preview
      Not available in this app
      Staging issuance
      Not implemented
      TEE face verification
      Not connected
      ; } diff --git a/web/test/app.test.tsx b/web/test/app.test.tsx index c188390..65df28d 100644 --- a/web/test/app.test.tsx +++ b/web/test/app.test.tsx @@ -65,6 +65,10 @@ test("missing Selfie credentials show unavailable enrollment without an issuance expect(await view.findByRole("heading", { name: "Set up Selfie Check" })).toBeTruthy(); expect(view.getByText(/Selfie Check enrollment is not available/)).toBeTruthy(); expect(view.queryByRole("button", { name: /Issue.*credential/ })).toBeNull(); + expect(view.queryByRole("button", { name: /camera preview/i })).toBeNull(); + expect(view.container.querySelector("video")).toBeNull(); + fireEvent.click(view.getByRole("switch", { name: "Dev mode" })); + expect(view.queryByRole("button", { name: /camera preview/i })).toBeNull(); fireEvent.click(view.getByRole("button", { name: "Back to wallet" })); expect((view.getByRole("button", { name: "Approve and share proof" }) as HTMLButtonElement).disabled).toBe(true); expect(f.calls.prove).toBe(0); @@ -201,7 +205,7 @@ test("dev mode is opt-in, inspects metadata and refreshes without issuing", asyn fireEvent.click(await view.findByRole("button", { name: "Create or unlock with passkey" })); expect(await view.findByText("Credential ID")).toBeTruthy(); expect(view.getByText(/Schema 11. A proof can disclose/)).toBeTruthy(); - expect(view.getByText(/CPU \/ WASM/)).toBeTruthy(); + expect(view.getByText("Not available in this app")).toBeTruthy(); fireEvent.click(view.getByRole("button", { name: "Refresh vault" })); await waitFor(() => expect(f.calls.listed).toBe(2)); expect(f.calls.prove).toBe(0); From 2cf9a982b78d3da7c767fdad116d57088eb5ea37 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Fri, 16 Oct 2026 09:13:47 -0700 Subject: [PATCH 35/38] use bun router to replace the big if statement that was the backedn --- .github/workflows/ci.yml | 1 + README.md | 4 +- api/README.md | 26 +++++++++- api/http.ts | 68 ------------------------ api/{ => lib}/config.ts | 0 api/lib/http.ts | 38 ++++++++++++++ api/lib/rp-registry.ts | 14 +++++ api/lib/static.ts | 47 +++++++++++++++++ api/main.ts | 6 +-- api/routes/health.ts | 17 ++++++ api/routes/index.ts | 16 ++++++ api/{ => routes}/staging-rp.ts | 17 +----- api/routes/verify.ts | 4 ++ api/server.ts | 13 +++++ api/test/http-server.test.ts | 91 ++++++++++++++++++++++++--------- api/tsconfig.json | 4 +- eslint.config.mjs | 3 +- web/test/build-boundary.test.ts | 2 +- 18 files changed, 255 insertions(+), 116 deletions(-) delete mode 100644 api/http.ts rename api/{ => lib}/config.ts (100%) create mode 100644 api/lib/http.ts create mode 100644 api/lib/rp-registry.ts create mode 100644 api/lib/static.ts create mode 100644 api/routes/health.ts create mode 100644 api/routes/index.ts rename api/{ => routes}/staging-rp.ts (54%) create mode 100644 api/routes/verify.ts create mode 100644 api/server.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3a88269..c526f1a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,5 +51,6 @@ jobs: trap 'docker logs authenticator-test; docker rm --force authenticator-test' EXIT # Docker can reset connections before Bun starts accepting requests. curl --fail --retry 10 --retry-all-errors --retry-delay 1 --retry-max-time 30 --max-time 5 http://127.0.0.1:4195/ > /dev/null + curl --fail --silent --show-error --max-time 5 http://127.0.0.1:4195/api/health/ready > /dev/null status=$(curl --silent --show-error --output /dev/null --write-out '%{http_code}' --max-time 5 'http://127.0.0.1:4195/api/staging-rp?id=invalid') test "$status" = 400 diff --git a/README.md b/README.md index c71e37e..f11bd16 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,7 @@ # World ID Web Authenticator Unlock your World ID wallet with a passkey and approve requests from apps. -Currently uses staging and supports proofs with existing Orb and Selfie -credentials. Selfie enrollment, user presence and recovery are still to come. - +Currently uses **staging** contracts for enrollment. ## Dependencies - [WalletKit](https://github.com/worldcoin/walletkit) — `@worldcoin/walletkit-web@0.27.1` for wallet storage, registration and proofs. diff --git a/api/README.md b/api/README.md index 31be70b..84ad201 100644 --- a/api/README.md +++ b/api/README.md @@ -7,9 +7,33 @@ browser. Promon sessions and Redis are not implemented yet. Run `bun run dev` from the repo root to watch both apps. For the compiled app, run `bun run build` followed by `bun run start`. +## Layout + +``` +main.ts Bun.serve listener settings +server.ts wires the route table, static fallback and error handler +routes/index.ts every server route, using Bun's built-in router +routes/*.ts one file per endpoint, exporting GET/POST like Next.js route.ts +lib/ config, security headers, static serving, registry client +test/ runs against a real server on an ephemeral port +``` + +To add an endpoint, create `routes/.ts` and register it in +[`routes/index.ts`](routes/index.ts). Security headers are applied to every route +centrally in [`lib/http.ts`](lib/http.ts). Unmatched `/api/*` paths and methods +return JSON 404; everything else falls through to the web build. + +## Health + +- `GET /api/health/live` returns 200 whenever the process can serve requests. It + never checks dependencies. +- `GET /api/health/ready` returns 503 when the web build is missing. The staging + RP registry is not part of readiness: when it fails, only `/api/staging-rp` + degrades (502). + ## Configuration -[`config.ts`](config.ts) reads the listener settings and defines response +[`lib/config.ts`](lib/config.ts) reads the listener settings and defines response security headers. `AUTHENTICATOR_HOST` defaults to `127.0.0.1`; `PORT` defaults to `4173` (`AUTHENTICATOR_PORT` is also accepted). Invalid ports fail startup. diff --git a/api/http.ts b/api/http.ts deleted file mode 100644 index 3e75946..0000000 --- a/api/http.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { resolve, relative, sep, basename } from "node:path"; -import { AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "./config"; -import { GET as lookupRp } from "./staging-rp"; - -// Source files live in api/; the bundled server lives in api/dist/. -const DEFAULT_STATIC_ROOT = resolve(import.meta.dir, basename(import.meta.dir) === "dist" ? "../../web/dist" : "../web/dist"); -function headers(contentType?: string): Headers { - const result = new Headers(AUTHENTICATOR_APP_SECURITY_HEADERS_V0); - if (contentType !== undefined) result.set("Content-Type", contentType); - return result; -} - -function contentType(pathname: string): string { - if (pathname.endsWith(".html")) return "text/html; charset=utf-8"; - if ((pathname.endsWith(".js") || pathname.endsWith(".mjs"))) return "text/javascript; charset=utf-8"; - if (pathname.endsWith(".css")) return "text/css; charset=utf-8"; - if (pathname.endsWith(".svg")) return "image/svg+xml"; - if (pathname.endsWith(".png")) return "image/png"; - if (pathname.endsWith(".json")) return "application/json; charset=utf-8"; - if (pathname.endsWith(".wasm")) return "application/wasm"; - return "application/octet-stream"; -} - -async function serveStatic(pathname: string, staticRoot: string): Promise { - let decoded: string; - try { - decoded = decodeURIComponent(pathname); - } catch { - return new Response("Not found", { status: 404, headers: headers("text/plain; charset=utf-8") }); - } - if (decoded.includes("..") || decoded.includes("\\") || decoded.includes("\0")) { - return new Response("Not found", { status: 404, headers: headers("text/plain; charset=utf-8") }); - } - const assetPath = ["/"].includes(decoded) - ? "index.html" - : decoded.replace(/^\//, ""); - const resolved = resolve(staticRoot, assetPath); - const withinRoot = relative(staticRoot, resolved); - if (withinRoot.startsWith(`..${sep}`) || withinRoot === ".." || withinRoot.startsWith(sep)) { - return new Response("Not found", { status: 404, headers: headers("text/plain; charset=utf-8") }); - } - const file = Bun.file(resolved); - if (!(await file.exists())) { - return new Response("Not found", { status: 404, headers: headers("text/plain; charset=utf-8") }); - } - return new Response(file, { headers: headers(contentType(resolved)) }); -} - -export function createAuthenticatorHttpHandler(options: { staticRoot?: string } = {}) { - const staticRoot = resolve(options.staticRoot ?? DEFAULT_STATIC_ROOT); - return async (request: Request): Promise => { - const url = new URL(request.url); - let response: Response; - if (url.pathname === "/api/staging-rp" && request.method === "GET") { - response = await lookupRp(request); - } else if (url.pathname.startsWith("/api/")) { - response = Response.json({ error: "Not found" }, { status: 404 }); - } else if (request.method !== "GET" && request.method !== "HEAD") { - response = new Response("Method not allowed", { status: 405 }); - } else if (url.pathname === "/verify") { - response = new Response(null, { status: 302, headers: { Location: `/${url.search}` } }); - } else { - response = await serveStatic(url.pathname, staticRoot); - } - for (const [name, value] of Object.entries(AUTHENTICATOR_APP_SECURITY_HEADERS_V0)) response.headers.set(name, value); - return request.method === "HEAD" ? new Response(null, { status: response.status, headers: response.headers }) : response; - }; -} diff --git a/api/config.ts b/api/lib/config.ts similarity index 100% rename from api/config.ts rename to api/lib/config.ts diff --git a/api/lib/http.ts b/api/lib/http.ts new file mode 100644 index 0000000..e416f5b --- /dev/null +++ b/api/lib/http.ts @@ -0,0 +1,38 @@ +import { AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "./config"; + +export type Handler = (request: Request) => Response | Promise; +type Method = "GET" | "POST" | "PUT" | "PATCH" | "DELETE"; +export type RouteTable = Record>>; + +function applySecurityHeaders(response: Response): Response { + try { + for (const [name, value] of Object.entries(AUTHENTICATOR_APP_SECURITY_HEADERS_V0)) response.headers.set(name, value); + return response; + } catch { + // Response.redirect() and Response.error() have immutable headers. + const headers = new Headers(response.headers); + for (const [name, value] of Object.entries(AUTHENTICATOR_APP_SECURITY_HEADERS_V0)) headers.set(name, value); + return new Response(response.body, { status: response.status, statusText: response.statusText, headers }); + } +} + +export function withSecurityHeaders(handler: Handler): Handler { + return async request => applySecurityHeaders(await handler(request)); +} + +// Applied once here so a new route cannot ship without the security headers. +export function secureRoutes(routes: RouteTable): RouteTable { + return Object.fromEntries(Object.entries(routes).map(([path, route]) => [ + path, + typeof route === "function" + ? withSecurityHeaders(route) + : Object.fromEntries(Object.entries(route).flatMap(([method, handler]) => + handler === undefined ? [] : [[method, withSecurityHeaders(handler)]])), + ])); +} + +export function internalError(error: Error): Response { + // eslint-disable-next-line no-console -- Unhandled request failure; message only, no request material. + console.error("request_unhandled_error", { name: error.name, message: error.message }); + return applySecurityHeaders(Response.json({ error: "Internal server error" }, { status: 500 })); +} diff --git a/api/lib/rp-registry.ts b/api/lib/rp-registry.ts new file mode 100644 index 0000000..20fde86 --- /dev/null +++ b/api/lib/rp-registry.ts @@ -0,0 +1,14 @@ +import { createPublicClient, http, parseAbi } from 'viem' + +// World ID protocol staging deployment on World Chain (chain 480). +const registry = '0x37d2462fE7B4a07987263AAd062C6593C4f567b9' +const client = createPublicClient({ + transport: http('https://worldchain-mainnet.g.alchemy.com/public', { timeout: 10000, retryCount: 0 }), +}) +const abi = parseAbi([ + 'function getRp(uint64 rpId) view returns ((bool initialized, bool active, address manager, address signer, uint160 oprfKeyId, string unverifiedWellKnownDomain))', +]) + +export function readStagingRp(rpId: bigint) { + return client.readContract({ address: registry, abi, functionName: 'getRp', args: [rpId] }) +} diff --git a/api/lib/static.ts b/api/lib/static.ts new file mode 100644 index 0000000..a8c5462 --- /dev/null +++ b/api/lib/static.ts @@ -0,0 +1,47 @@ +import { resolve, relative, sep } from "node:path"; + +// Both api/lib/ (source) and api/dist/ (bundle) sit two levels below the repo root. +export const DEFAULT_STATIC_ROOT = resolve(import.meta.dir, "../../web/dist"); + +function contentType(pathname: string): string { + if (pathname.endsWith(".html")) return "text/html; charset=utf-8"; + if ((pathname.endsWith(".js") || pathname.endsWith(".mjs"))) return "text/javascript; charset=utf-8"; + if (pathname.endsWith(".css")) return "text/css; charset=utf-8"; + if (pathname.endsWith(".svg")) return "image/svg+xml"; + if (pathname.endsWith(".png")) return "image/png"; + if (pathname.endsWith(".json")) return "application/json; charset=utf-8"; + if (pathname.endsWith(".wasm")) return "application/wasm"; + return "application/octet-stream"; +} + +const notFound = () => new Response("Not found", { status: 404, headers: { "Content-Type": "text/plain; charset=utf-8" } }); + +async function serveFile(pathname: string, staticRoot: string): Promise { + let decoded: string; + try { + decoded = decodeURIComponent(pathname); + } catch { + return notFound(); + } + if (decoded.includes("..") || decoded.includes("\\") || decoded.includes("\0")) return notFound(); + const assetPath = decoded === "/" ? "index.html" : decoded.replace(/^\//, ""); + const resolved = resolve(staticRoot, assetPath); + const withinRoot = relative(staticRoot, resolved); + if (withinRoot.startsWith(`..${sep}`) || withinRoot === ".." || withinRoot.startsWith(sep)) return notFound(); + const file = Bun.file(resolved); + if (!(await file.exists())) return notFound(); + return new Response(file, { headers: { "Content-Type": contentType(resolved) } }); +} + +// Fallback for every request that no route in routes/index.ts matched. +export async function serveStatic(request: Request, staticRoot: string): Promise { + if (request.method !== "GET" && request.method !== "HEAD") { + return new Response("Method not allowed", { status: 405 }); + } + const response = await serveFile(new URL(request.url).pathname, staticRoot); + return request.method === "HEAD" ? new Response(null, { status: response.status, headers: response.headers }) : response; +} + +export function webBundleAvailable(staticRoot: string): Promise { + return Bun.file(resolve(staticRoot, "index.html")).exists(); +} diff --git a/api/main.ts b/api/main.ts index 8962a81..913b037 100644 --- a/api/main.ts +++ b/api/main.ts @@ -1,10 +1,10 @@ -import { AUTHENTICATOR_APP_CONFIG } from "./config"; -import { createAuthenticatorHttpHandler } from "./http"; +import { AUTHENTICATOR_APP_CONFIG } from "./lib/config"; +import { createServerOptions } from "./server"; Bun.serve({ hostname: AUTHENTICATOR_APP_CONFIG.host, port: AUTHENTICATOR_APP_CONFIG.port, maxRequestBodySize: 1024, idleTimeout: 180, - fetch: createAuthenticatorHttpHandler(), + ...createServerOptions(), }); diff --git a/api/routes/health.ts b/api/routes/health.ts new file mode 100644 index 0000000..0f524a4 --- /dev/null +++ b/api/routes/health.ts @@ -0,0 +1,17 @@ +import type { Handler } from "../lib/http"; +import { webBundleAvailable } from "../lib/static"; + +// Liveness: the process accepts requests. Never checks dependencies, so a +// dependency outage cannot trigger restarts. +export function live(): Response { + return Response.json({ status: "ok" }); +} + +// Readiness: this instance can serve the app. The staging RP registry is +// deliberately excluded: when it is down only /api/staging-rp degrades (502), +// and probing a shared public RPC would pull every instance at once. +export function ready(staticRoot: string): Handler { + return async () => (await webBundleAvailable(staticRoot)) + ? Response.json({ status: "ready" }) + : Response.json({ status: "unavailable", failed: ["web_bundle"] }, { status: 503 }); +} diff --git a/api/routes/index.ts b/api/routes/index.ts new file mode 100644 index 0000000..4ab450c --- /dev/null +++ b/api/routes/index.ts @@ -0,0 +1,16 @@ +import type { RouteTable } from "../lib/http"; +import * as health from "./health"; +import * as stagingRp from "./staging-rp"; +import * as verify from "./verify"; + +// Every server route. Anything unmatched falls through to the static web app, +// except /api/* which must never return the SPA. +export function createRoutes({ staticRoot }: { staticRoot: string }): RouteTable { + return { + "/api/health/live": { GET: health.live }, + "/api/health/ready": { GET: health.ready(staticRoot) }, + "/api/staging-rp": { GET: stagingRp.GET }, + "/api/*": () => Response.json({ error: "Not found" }, { status: 404 }), + "/verify": { GET: verify.GET }, + }; +} diff --git a/api/staging-rp.ts b/api/routes/staging-rp.ts similarity index 54% rename from api/staging-rp.ts rename to api/routes/staging-rp.ts index f894191..36fef0f 100644 --- a/api/staging-rp.ts +++ b/api/routes/staging-rp.ts @@ -1,23 +1,10 @@ -import { createPublicClient, http, parseAbi } from 'viem' +import { readStagingRp } from '../lib/rp-registry' -// World ID protocol staging deployment on World Chain (chain 480). -const registry = '0x37d2462fE7B4a07987263AAd062C6593C4f567b9' -const client = createPublicClient({ - transport: http('https://worldchain-mainnet.g.alchemy.com/public', { timeout: 10000, retryCount: 0 }), -}) -const abi = parseAbi([ - 'function getRp(uint64 rpId) view returns ((bool initialized, bool active, address manager, address signer, uint160 oprfKeyId, string unverifiedWellKnownDomain))', -]) export async function GET(request: Request) { const id = new URL(request.url).searchParams.get('id') if (!id || !/^rp_[0-9a-f]{1,16}$/i.test(id)) return Response.json({ error: 'Invalid RP ID.' }, { status: 400 }) try { - const rp = await client.readContract({ - address: registry, - abi, - functionName: 'getRp', - args: [BigInt('0x' + id.slice(3))], - }) + const rp = await readStagingRp(BigInt('0x' + id.slice(3))) if (!rp.initialized || !rp.active) return Response.json({ error: 'This RP is not active on staging.' }, { status: 422 }) return Response.json( diff --git a/api/routes/verify.ts b/api/routes/verify.ts new file mode 100644 index 0000000..aa88b4c --- /dev/null +++ b/api/routes/verify.ts @@ -0,0 +1,4 @@ +// Connector links point at /verify; the SPA reads the query from the root. +export function GET(request: Request): Response { + return new Response(null, { status: 302, headers: { Location: `/${new URL(request.url).search}` } }); +} diff --git a/api/server.ts b/api/server.ts new file mode 100644 index 0000000..2ac742b --- /dev/null +++ b/api/server.ts @@ -0,0 +1,13 @@ +import { resolve } from "node:path"; +import { internalError, secureRoutes, withSecurityHeaders } from "./lib/http"; +import { DEFAULT_STATIC_ROOT, serveStatic } from "./lib/static"; +import { createRoutes } from "./routes"; + +export function createServerOptions(options: { staticRoot?: string } = {}) { + const staticRoot = resolve(options.staticRoot ?? DEFAULT_STATIC_ROOT); + return { + routes: secureRoutes(createRoutes({ staticRoot })), + fetch: withSecurityHeaders(request => serveStatic(request, staticRoot)), + error: internalError, + }; +} diff --git a/api/test/http-server.test.ts b/api/test/http-server.test.ts index a83c57b..7c12f40 100644 --- a/api/test/http-server.test.ts +++ b/api/test/http-server.test.ts @@ -1,30 +1,42 @@ -import { expect, test } from "bun:test"; +import { afterAll, expect, test } from "bun:test"; import { mkdtemp, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { createAuthenticatorHttpHandler } from "../http"; -import { AUTHENTICATOR_APP_CONFIG, AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "../config"; -const handler = createAuthenticatorHttpHandler(); -const origin = `http://localhost:${AUTHENTICATOR_APP_CONFIG.port}`; -const post = (body: unknown, headerOrigin = origin, pathOrigin = origin) => handler(new Request(`${pathOrigin}/api/selfie-credential`, { +import { AUTHENTICATOR_APP_SECURITY_HEADERS_V0 } from "../lib/config"; +import { secureRoutes } from "../lib/http"; +import { createServerOptions } from "../server"; +const servers: ReturnType[] = []; +const start = (options: Parameters[0] = {}) => { + const server = Bun.serve({ hostname: "127.0.0.1", port: 0, ...createServerOptions(options) }); + servers.push(server); + return server.url.origin; +}; +afterAll(() => Promise.all(servers.map(server => server.stop(true)))); +const origin = start(); +const get = (path: string, init?: RequestInit) => fetch(origin + path, { redirect: "manual", ...init }); +const expectSecurityHeaders = (response: Response) => { + for (const [name, value] of Object.entries(AUTHENTICATOR_APP_SECURITY_HEADERS_V0)) expect(response.headers.get(name)).toBe(value); +}; +const post = (body: unknown, headerOrigin = origin) => get("/api/selfie-credential", { method: "POST", headers: { origin: headerOrigin, "content-type": "application/json" }, body: JSON.stringify(body), -})); +}); test("serves web assets and HEAD responses with security headers", async () => { const staticRoot = await mkdtemp(join(tmpdir(), "authenticator-assets-")); try { await writeFile(join(staticRoot, "index.html"), "

      Authenticator

      "); await writeFile(join(staticRoot, "app.js"), "export const ready = true;"); - const serve = createAuthenticatorHttpHandler({ staticRoot }); - const page = await serve(new Request(origin)); + const assets = start({ staticRoot }); + const page = await fetch(assets); expect(page.status).toBe(200); expect(page.headers.get("content-type")).toBe("text/html; charset=utf-8"); expect(await page.text()).toContain("Authenticator"); - const head = await serve(new Request(origin + "/app.js", { method: "HEAD" })); + const head = await fetch(assets + "/app.js", { method: "HEAD" }); expect(head.status).toBe(200); expect(head.headers.get("content-type")).toBe("text/javascript; charset=utf-8"); - expect(head.headers.get("x-content-type-options")).toBe("nosniff"); + expectSecurityHeaders(head); expect(await head.text()).toBe(""); - expect((await serve(new Request(origin + "/missing.js"))).status).toBe(404); + expect((await fetch(assets + "/missing.js")).status).toBe(404); + expect((await fetch(assets + "/app.js", { method: "POST" })).status).toBe(405); } finally { await rm(staticRoot, { recursive: true, force: true }); } @@ -33,35 +45,68 @@ test("verify links redirect to root with the original connector query and securi const query = "?i=550e8400-e29b-41d4-a716-446655440000&k=a%2Bb%2Fc%3D&b=https%3A%2F%2Fstaging-bridge.worldcoin.org&return_to=https%3A%2F%2Fexample.com%2Fdone"; for (const method of ["GET", "HEAD"]) { for (const search of ["", query]) { - const response = await handler(new Request(`${origin}/verify${search}`, { method })); + const response = await get(`/verify${search}`, { method }); expect(response.status).toBe(302); expect(response.headers.get("location")).toBe(`/${search}`); expect(await response.text()).toBe(""); - for (const [name, value] of Object.entries(AUTHENTICATOR_APP_SECURITY_HEADERS_V0)) { - expect(response.headers.get(name)).toBe(value); - } + expectSecurityHeaders(response); } } - expect((await handler(new Request(`${origin}/verify${query}`, { method: "POST" }))).status).toBe(405); + expect((await get(`/verify${query}`, { method: "POST" })).status).toBe(405); }); test("embedded demo routes and simulated endpoints are gone", async () => { for (const path of ["/demo", "/returned", "/api/v0/bootstrap", "/api/v0/session/create"]) { - expect((await handler(new Request(origin + path))).status).toBe(404); + expect((await get(path)).status).toBe(404); } }); test("synthetic enrollment is absent even for valid localhost requests", async () => { const body = { sub: "0x" + "a".repeat(64), token: "b".repeat(64) }; expect((await post(body)).status).toBe(404); expect((await post(body, "https://other.example")).status).toBe(404); - expect((await post(body, "https://auth.example", "https://auth.example")).status).toBe(404); - expect((await handler(new Request(origin + "/api/capabilities"))).status).toBe(404); + expect((await get("/api/capabilities")).status).toBe(404); }); test("RP lookup rejects malformed identifiers without a remote call", async () => { - expect((await handler(new Request(origin + "/api/staging-rp?id=bad"))).status).toBe(400); + const response = await get("/api/staging-rp?id=bad"); + expect(response.status).toBe(400); + expectSecurityHeaders(response); +}); +test("API routes reject other methods as JSON 404 instead of serving the web app", async () => { + for (const path of ["/api/staging-rp?id=rp_1", "/api/health/live"]) { + const response = await get(path, { method: "POST" }); + expect(response.status).toBe(404); + expect(await response.json()).toEqual({ error: "Not found" }); + expectSecurityHeaders(response); + } +}); +test("liveness ignores dependencies and readiness fails without the web bundle", async () => { + const live = await get("/api/health/live"); + expect(live.status).toBe(200); + expect(await live.json()).toEqual({ status: "ok" }); + expectSecurityHeaders(live); + const emptyRoot = await mkdtemp(join(tmpdir(), "authenticator-empty-")); + try { + const unready = start({ staticRoot: emptyRoot }); + const ready = await fetch(unready + "/api/health/ready"); + expect(ready.status).toBe(503); + expect(await ready.json()).toEqual({ status: "unavailable", failed: ["web_bundle"] }); + expect((await fetch(unready + "/api/health/live")).status).toBe(200); + await writeFile(join(emptyRoot, "index.html"), "

      Authenticator

      "); + expect((await fetch(unready + "/api/health/ready")).status).toBe(200); + } finally { + await rm(emptyRoot, { recursive: true, force: true }); + } +}); +test("security headers apply to responses with immutable headers", async () => { + const routes = secureRoutes({ "/x": () => Response.redirect("https://example.com", 302) }); + const handler = routes["/x"]; + if (typeof handler !== "function") throw new Error("expected a handler"); + const response = await handler(new Request(origin + "/x")); + expect(response.status).toBe(302); + expectSecurityHeaders(response); }); test("all responses include no-referrer/no-store and bounded CSP destinations", async () => { - const response = await handler(new Request(origin + "/api/missing")); - for (const [name, value] of Object.entries(AUTHENTICATOR_APP_SECURITY_HEADERS_V0)) expect(response.headers.get(name)).toBe(value); + const response = await get("/api/missing"); + expectSecurityHeaders(response); expect(response.headers.get("content-security-policy")).toContain("https://staging-bridge.worldcoin.org"); expect(response.headers.get("content-security-policy")).not.toContain("connect-src *"); }); diff --git a/api/tsconfig.json b/api/tsconfig.json index 47e6a05..d8d0e8d 100644 --- a/api/tsconfig.json +++ b/api/tsconfig.json @@ -11,6 +11,8 @@ ] }, "include": [ - "*.ts" + "*.ts", + "lib/**/*.ts", + "routes/**/*.ts" ] } diff --git a/eslint.config.mjs b/eslint.config.mjs index 48dc1d3..25b1131 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -98,6 +98,7 @@ export default tseslint.config( { files: [ "api/*.{ts,tsx}", + "api/{lib,routes}/**/*.{ts,tsx}", ], languageOptions: { globals: { @@ -139,7 +140,7 @@ export default tseslint.config( }, }, { - files: ["api/*.ts"], + files: ["api/*.ts", "api/{lib,routes}/**/*.ts"], rules: { "no-restricted-imports": ["error", { patterns: [ diff --git a/web/test/build-boundary.test.ts b/web/test/build-boundary.test.ts index 7be9aa4..1f32aad 100644 --- a/web/test/build-boundary.test.ts +++ b/web/test/build-boundary.test.ts @@ -14,7 +14,7 @@ for (const mode of ["static", "dynamic", "worker"] as const) { const directory = await mkdtemp(resolve(tmpdir(), "authenticator-boundary-")); temporaryDirectories.push(directory); const entry = resolve(directory, "entry.js"); - const apiConfig = resolve(import.meta.dir, "../../api/config.ts"); + const apiConfig = resolve(import.meta.dir, "../../api/lib/config.ts"); if (mode === "worker") { await writeFile(resolve(directory, "worker.js"), `import ${JSON.stringify(apiConfig)};`); await writeFile(entry, 'new Worker(new URL("./worker.js", import.meta.url), { type: "module" });'); From 8095f739590b556435305f52329407c4ce1a4d98 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Fri, 16 Oct 2026 09:19:49 -0700 Subject: [PATCH 36/38] Ignore query-only return URLs for authenticator requests --- web/README.md | 4 ++++ web/lib/incoming-request.ts | 6 +++--- web/test/requests.test.ts | 20 +++++++++++++++++++- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/web/README.md b/web/README.md index 4513d5e..e1aa1e1 100644 --- a/web/README.md +++ b/web/README.md @@ -13,3 +13,7 @@ Requests currently must target staging. The browser fetches and decrypts the request, checks its RP signature and asks for approval before generating a proof. It removes the key from the address bar; reloading loses the in-memory request. Open the original connector link to resume. + +Return navigation uses `return_to_url` from the encrypted request. A `return_to` +query parameter alone does not enable a return link; requests without a payload +callback still complete through the bridge. diff --git a/web/lib/incoming-request.ts b/web/lib/incoming-request.ts index 39ae87f..c9480d7 100644 --- a/web/lib/incoming-request.ts +++ b/web/lib/incoming-request.ts @@ -33,9 +33,9 @@ export async function loadIncomingRequest( progress('Request decrypted. Checking staging metadata and signature…') const payload = parsePayload(bridge.json) await validateSignature(payload.proof_request, signal) - const callback = returnUrl(payload.return_to_url) ?? connector.returnUrl - // URL metadata cannot replace a different callback inside the encrypted request. - if (connector.returnUrl && callback !== connector.returnUrl) + const callback = returnUrl(payload.return_to_url) + // Connector metadata may confirm a payload callback, but cannot supply one. + if (callback && connector.returnUrl && callback !== connector.returnUrl) throw new Error('Connector and encrypted request return URLs disagree.') return { proof: payload.proof_request, diff --git a/web/test/requests.test.ts b/web/test/requests.test.ts index d11592e..0e0ab49 100644 --- a/web/test/requests.test.ts +++ b/web/test/requests.test.ts @@ -9,8 +9,9 @@ import type { WalletKit } from "../lib/walletkit"; let restore: (() => void) | undefined; afterEach(() => { restore?.(); }); const signal = () => new AbortController().signal; -async function fixture() { +async function fixture(returnToUrl?: string) { const { payload, registry } = await signedRequest(); + if (returnToUrl !== undefined) payload.return_to_url = returnToUrl; const encrypted = await encryptedRequest(payload); const sent: unknown[] = []; const requests: string[] = []; @@ -40,6 +41,23 @@ test("fetches, decrypts and validates a real-format RP request; encrypts the mat expect(f.sent[1]).toEqual({ error_code: "verification_rejected" }); await expect(incoming!.deliver(JSON.stringify({ ...response, id: "wrong" }), signal())).rejects.toThrow("mismatched"); }); +test.each([ + { name: "no callback", payloadUrl: undefined, queryUrl: undefined }, + { name: "an injected query-only callback", payloadUrl: undefined, queryUrl: "https://attacker.example/" }, + { name: "a payload-only callback", payloadUrl: "https://app.example/done", queryUrl: undefined }, + { name: "matching callbacks", payloadUrl: "https://app.example/done", queryUrl: "https://app.example/done" }, +])("return navigation uses only the encrypted payload with $name", async ({ payloadUrl, queryUrl }) => { + const f = await fixture(payloadUrl); + const query = f.encrypted.query + (queryUrl ? `&return_to=${encodeURIComponent(queryUrl)}` : ""); + const incoming = await loadIncomingRequest("http://localhost" + query, signal(), () => {}); + expect(incoming).not.toBeNull(); + expect(incoming!.returnUrl).toBe(payloadUrl); +}); +test("conflicting connector and payload callbacks reject the request", async () => { + const f = await fixture("https://app.example/done"); + const query = f.encrypted.query + `&return_to=${encodeURIComponent("https://attacker.example/")}`; + await expect(loadIncomingRequest("http://localhost" + query, signal(), () => {})).rejects.toThrow("return URLs disagree"); +}); test("invalid signer and OPRF binding stop a request before wallet access", async () => { const f = await fixture(); f.registry.oprfKeyId = "0x2"; await expect(loadIncomingRequest("http://localhost" + f.encrypted.query, signal(), () => {})).rejects.toThrow("OPRF key"); From 9efdda8c8f98a2c1cb85b6322c2adf483f4f2c86 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Sat, 17 Oct 2026 12:49:21 -0700 Subject: [PATCH 37/38] Align the PRF contract with the wallet's passkey derivation The v1 contract named a different PRF input label and a verbatim output mapping, so an integration following it would derive other keys than this wallet. Describe the implemented input and HKDF mapping, and test that the wallet's label stays equal to the contract. --- packages/browser-admission/src/admission.ts | 3 ++- .../browser-admission/test/browser-admission.test.ts | 3 ++- .../contracts/src/webauthn-prf-authenticator-v1.ts | 12 +++++++++--- web/lib/wallet-session.ts | 4 +++- web/test/wallet-session.test.ts | 9 ++++++++- 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/packages/browser-admission/src/admission.ts b/packages/browser-admission/src/admission.ts index 6dd6a45..c4726d1 100644 --- a/packages/browser-admission/src/admission.ts +++ b/packages/browser-admission/src/admission.ts @@ -1,5 +1,6 @@ import { PRF_INPUT_V1_SHA256, + PRF_OUTPUT_MAPPING_V1, WEB_AUTHN_PRF_AUTHENTICATOR_V1, type WebAuthnPrfAuthenticatorPolicyV1, } from "../../contracts/src"; @@ -123,7 +124,7 @@ function hasFrozenAuthenticatorPolicy( policy.version === WEB_AUTHN_PRF_AUTHENTICATOR_V1 && policy.userVerification === "required" && policy.prfInputSha256 === PRF_INPUT_V1_SHA256 && - policy.prfOutputMapping === "verbatim_32_byte_first_result_to_world_id_4_signer_seed" && + policy.prfOutputMapping === PRF_OUTPUT_MAPPING_V1 && policy.secretLifecycle === "browser_memory_only" && Array.isArray(policy.allowedOrigins) ); diff --git a/packages/browser-admission/test/browser-admission.test.ts b/packages/browser-admission/test/browser-admission.test.ts index ddffdd0..dc4386f 100644 --- a/packages/browser-admission/test/browser-admission.test.ts +++ b/packages/browser-admission/test/browser-admission.test.ts @@ -9,6 +9,7 @@ import { } from "../src"; import { PRF_INPUT_V1_SHA256, + PRF_OUTPUT_MAPPING_V1, WEB_AUTHN_PRF_AUTHENTICATOR_V1, type WebAuthnPrfAuthenticatorPolicyV1, } from "../../contracts/src"; @@ -19,7 +20,7 @@ const policy: WebAuthnPrfAuthenticatorPolicyV1 = { allowedOrigins: ["https://auth.example.test"], userVerification: "required", prfInputSha256: PRF_INPUT_V1_SHA256, - prfOutputMapping: "verbatim_32_byte_first_result_to_world_id_4_signer_seed", + prfOutputMapping: PRF_OUTPUT_MAPPING_V1, secretLifecycle: "browser_memory_only", }; diff --git a/packages/contracts/src/webauthn-prf-authenticator-v1.ts b/packages/contracts/src/webauthn-prf-authenticator-v1.ts index 87be272..d616c88 100644 --- a/packages/contracts/src/webauthn-prf-authenticator-v1.ts +++ b/packages/contracts/src/webauthn-prf-authenticator-v1.ts @@ -1,9 +1,15 @@ import type { Base64Url, HexSha256, Identifier } from "./common"; export const WEB_AUTHN_PRF_AUTHENTICATOR_V1 = "webauthn_prf_authenticator_v1" as const; -export const PRF_INPUT_V1_LABEL = "world-id:web-authenticator:world-id-4:v1" as const; +// The exact UTF-8 bytes passed as the passkey PRF `first` input; the digest identifies them. +export const PRF_INPUT_V1_LABEL = "world-id/web-authenticator/prf/v1" as const; export const PRF_INPUT_V1_SHA256 = - "0b2ba181b397d6ac08ef7139cd2410c31fd416120d35f075420a4af38f3609e6" as const; + "98c8c3d877f05acf6f741759ae90d9353f08bced5fd199d8127b6539eb0feec5" as const; +// The 32-byte first PRF result is HKDF-SHA256 input key material (salt +// "world-id/web-authenticator/keys/v1"): info "authenticator-seed" yields the +// World ID 4 signer seed, info "credential-store" the encrypted vault key. +export const PRF_OUTPUT_MAPPING_V1 = + "hkdf_sha256_first_result_to_world_id_4_signer_seed_and_vault_key" as const; export const PRF_RESULT_LENGTH_BYTES_V1 = 32 as const; export interface WebAuthnPrfAuthenticatorPolicyV1 { @@ -12,7 +18,7 @@ export interface WebAuthnPrfAuthenticatorPolicyV1 { readonly allowedOrigins: readonly string[]; readonly userVerification: "required"; readonly prfInputSha256: typeof PRF_INPUT_V1_SHA256; - readonly prfOutputMapping: "verbatim_32_byte_first_result_to_world_id_4_signer_seed"; + readonly prfOutputMapping: typeof PRF_OUTPUT_MAPPING_V1; readonly secretLifecycle: "browser_memory_only"; } diff --git a/web/lib/wallet-session.ts b/web/lib/wallet-session.ts index 5ad8516..148c1d0 100644 --- a/web/lib/wallet-session.ts +++ b/web/lib/wallet-session.ts @@ -10,7 +10,9 @@ import { prfBytes } from "./prf-result"; import { WalletOpenError, WalletRegistrationError } from "./wallet-errors"; const PROFILE_KEY = "world-id-wallet-v1"; -const PRF_INPUT = new TextEncoder().encode("world-id/web-authenticator/prf/v1"); +/** Passkey PRF input label; must equal the contract's `PRF_INPUT_V1_LABEL`. */ +export const PRF_INPUT_LABEL = "world-id/web-authenticator/prf/v1"; +const PRF_INPUT = new TextEncoder().encode(PRF_INPUT_LABEL); const KEY_SALT = new TextEncoder().encode("world-id/web-authenticator/keys/v1"); export interface WalletProfile { diff --git a/web/test/wallet-session.test.ts b/web/test/wallet-session.test.ts index 075fcb0..4dc4de1 100644 --- a/web/test/wallet-session.test.ts +++ b/web/test/wallet-session.test.ts @@ -1,5 +1,6 @@ import { describe, expect, test } from "bun:test"; -import { deriveWalletKeys, parseWalletProfile } from "../lib/wallet-session"; +import { deriveWalletKeys, parseWalletProfile, PRF_INPUT_LABEL } from "../lib/wallet-session"; +import { PRF_INPUT_V1_LABEL, PRF_INPUT_V1_SHA256 } from "../../packages/contracts/src"; describe("passkey wallet key boundary", () => { test("rejects malformed metadata instead of silently creating a replacement wallet", () => { @@ -23,3 +24,9 @@ describe("passkey wallet key boundary", () => { await expect(deriveWalletKeys(new Uint8Array(31))).rejects.toThrow(); }); }); + +test("the passkey PRF input is the exported v1 contract input", async () => { + expect(PRF_INPUT_LABEL).toBe(PRF_INPUT_V1_LABEL); + const digest = new Uint8Array(await crypto.subtle.digest("SHA-256", new TextEncoder().encode(PRF_INPUT_LABEL))); + expect(Array.from(digest, byte => byte.toString(16).padStart(2, "0")).join("")).toBe(PRF_INPUT_V1_SHA256); +}); From 84f6a4b098f8b19bada8c8713e99d32b23740062 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Sat, 17 Oct 2026 12:49:21 -0700 Subject: [PATCH 38/38] Offer an exit when a request expires before delivery A request expiring on the review or enrollment screen removed every action except cancellation. Show the local exit and the requesting app's return link for any expired request. --- web/App.tsx | 4 ++-- web/test/app.test.tsx | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/web/App.tsx b/web/App.tsx index 11e5ee3..3130b04 100644 --- a/web/App.tsx +++ b/web/App.tsx @@ -210,8 +210,8 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof {wallet && !incoming && screen === "review" && } } {screen === "delivery" && } - {finished && incoming?.returnUrl && Return to requesting app} - {(finished || loadFailed || deliveryExpired || screen === "wallet-timeout" || screen === "wallet-error") && Open authenticator} + {(finished || expired) && incoming?.returnUrl && Return to requesting app} + {(finished || loadFailed || expired || screen === "wallet-timeout" || screen === "wallet-error") && Open authenticator}
      {devMode && void refreshVault()} onDelete={id => void deleteCredential(id)} />} diff --git a/web/test/app.test.tsx b/web/test/app.test.tsx index 65df28d..8c8046c 100644 --- a/web/test/app.test.tsx +++ b/web/test/app.test.tsx @@ -245,3 +245,18 @@ test("unconfirmed vault deletion locks the wallet and hides internal errors", as expect(view.queryByText("private worker error")).toBeNull(); expect(view.getByText("Unlock your wallet to inspect its credentials.")).toBeTruthy(); }); + +test("a request that expires on the review screen offers a local exit and the return link", async () => { + const f = await fixture(1, true); + f.incoming.proof.expires_at = Math.ceil(Date.now() / 1000) + 1; + f.incoming.returnUrl = "https://rp.example/done"; + const view = render(); + fireEvent.click(await view.findByRole("button", { name: "Create or unlock with passkey" })); + await view.findByRole("button", { name: "Approve and share proof" }); + expect(view.queryByRole("link", { name: "Open authenticator" })).toBeNull(); + expect(await view.findByText(/This request expired\. Start a new request/, undefined, { timeout: 3000 })).toBeTruthy(); + expect(view.queryByRole("button", { name: "Approve and share proof" })).toBeNull(); + expect(view.getByRole("link", { name: "Open authenticator" }).getAttribute("href")).toBe("/"); + expect(view.getByRole("link", { name: "Return to requesting app" }).getAttribute("href")).toBe("https://rp.example/done"); + expect(f.calls.prove).toBe(0); +});
      -
      +

      World ID · Staging

      - + {preview && screen === "enroll" ? : }

      {title}

      {screen === "done" &&

      Your proof reached the bridge. The requesting app verifies it.

      } @@ -210,7 +210,6 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof {screen === "enroll" && !canIssue &&

      Staging enrollment is available only when running this authenticator locally.

      } {!wallet && supported && !loading && !finished && screen !== "delivery" &&

      New wallets register an account on staging. Your passkey also unlocks encrypted credential storage on this browser.

      }
      - {preview && screen === "enroll" && } {progress && !finished &&

      {progress}

      } {error &&

      {error}

      }
      diff --git a/apps/authenticator/src/styles/app.css b/apps/authenticator/src/styles/app.css index ba5875d..3b8d7a2 100644 --- a/apps/authenticator/src/styles/app.css +++ b/apps/authenticator/src/styles/app.css @@ -551,6 +551,7 @@ h1:focus { .error-copy { color: #a32424; padding: 12px; background: #fff1f1; border-radius: 12px; } .return-link { display: block; text-align: center; text-decoration: none; } .camera-preview { display: grid; gap: 16px; width: 100%; font-size: 14px; text-align: center; } +.app-main--camera-preview .screen-content { align-items: flex-start; padding-block: 24px; } .camera-oval { position: relative; aspect-ratio: 345 / 482; width: min(100%, 260px); margin: auto; } .camera-oval video { width: 100%; height: 100%; object-fit: cover; transform: scaleX(-1); clip-path: ellipse(46% 47% at 50% 49%); } .camera-oval img { position: absolute; inset: 0; width: 100%; height: 100%; } From 6d0abb2275d18f676f71b21678af7ff84528726d Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Fri, 9 Oct 2026 14:29:07 -0700 Subject: [PATCH 11/38] Adapt authenticator layout to desktop and mobile browsers --- apps/authenticator/src/App.tsx | 3 +- apps/authenticator/src/styles/app.css | 47 ++++++++++-------- docs/review/authenticator-desktop.png | Bin 0 -> 41161 bytes docs/review/authenticator-mobile.png | Bin 0 -> 31888 bytes docs/review/dev-desktop.png | Bin 136576 -> 134231 bytes docs/review/dev-mobile.png | Bin 118032 -> 112420 bytes docs/review/request-desktop.png | Bin 56920 -> 52898 bytes docs/review/request-mobile.png | Bin 43578 -> 42700 bytes .../browser/authenticator.browser.spec.ts | 5 +- 9 files changed, 32 insertions(+), 23 deletions(-) create mode 100644 docs/review/authenticator-desktop.png create mode 100644 docs/review/authenticator-mobile.png diff --git a/apps/authenticator/src/App.tsx b/apps/authenticator/src/App.tsx index 4325020..46a8907 100644 --- a/apps/authenticator/src/App.tsx +++ b/apps/authenticator/src/App.tsx @@ -179,9 +179,8 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof }); return
      -
      +

      World ID · Staging

      -

      World ID · Staging

      {preview && screen === "enroll" ? : }
      diff --git a/apps/authenticator/src/styles/app.css b/apps/authenticator/src/styles/app.css index 3b8d7a2..0830fec 100644 --- a/apps/authenticator/src/styles/app.css +++ b/apps/authenticator/src/styles/app.css @@ -1,6 +1,6 @@ :root { color: #1f1f1f; - background: #f5f5f5; + background: #fff; font-family: "World Pro MVP", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-synthesis: none; text-rendering: optimizeLegibility; @@ -25,7 +25,7 @@ body, } body { - background: #f5f5f5; + background: var(--surface-page); } button, @@ -54,7 +54,8 @@ button:disabled { position: relative; display: flex; flex-direction: column; - width: min(100%, 393px); + width: 100%; + min-width: 0; min-height: 100svh; min-height: 100dvh; margin: 0 auto; @@ -69,11 +70,9 @@ button:disabled { .staging-banner { z-index: 5; align-self: center; - max-width: calc(100% - 64px); + max-width: 100%; margin: 0; - padding: 7px 12px; - border: 1px solid #d8d8d8; - border-radius: 999px; + padding: 0; color: #4e4e4e; background: rgb(255 255 255 / 92%); font-size: 13px; @@ -500,19 +499,13 @@ h1:focus { } } -@media (min-width: 394px) { - .app-main { - box-shadow: 0 0 40px rgb(0 0 0 / 8%); - } -} - -.dev-mode-bar { display: flex; justify-content: flex-end; max-width: 1040px; margin: 0 auto; padding: 8px 16px; } +.dev-mode-bar { display: flex; justify-content: space-between; align-items: center; gap: 16px; max-width: 1440px; margin: 0 auto; padding: max(12px, env(safe-area-inset-top)) 24px 12px; } .dev-mode-switch { display: flex; align-items: center; gap: 12px; padding: 0 12px; border: 1px solid #d8d8d8; border-radius: 999px; background: #fff; color: #444; font-size: 13px; } .dev-mode-switch span { border-radius: 999px; padding: 3px 10px; background: #eee; } .dev-mode-switch[aria-checked="true"] span { background: #1f1f1f; color: #fff; } -.authenticator-shell .app-main { min-height: calc(100svh - 60px); min-height: calc(100dvh - 60px); } -.authenticator-layout { margin: 0 auto; } -.developer-panel { min-width: 0; margin: 24px 16px; padding: 24px; border: 1px solid #ddd; border-radius: 20px; background: #fff; font-size: 14px; line-height: 1.55; overflow-wrap: anywhere; } +.authenticator-shell .app-main { min-height: calc(100svh - 68px); min-height: calc(100dvh - 68px); } +.authenticator-layout { max-width: 1440px; margin: 0 auto; } +.developer-panel { min-width: 0; margin: 24px 0 0; padding: 24px; border-top: 1px solid #e5e5e5; background: #fff; font-size: 14px; line-height: 1.55; overflow-wrap: anywhere; } .developer-panel h2 { font-size: 24px; margin: 0 0 8px; } .developer-panel h3 { font-size: 16px; margin: 0 0 8px; } .developer-panel p { margin: 8px 0 16px; } @@ -528,9 +521,23 @@ h1:focus { .dev-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; justify-content: space-between; } .dev-credential { border-top: 1px solid #eee; padding-bottom: 8px; } .dev-notice, .dev-confirm { background: #f5f5f5; padding: 12px; border-radius: 10px; } -@media (min-width: 850px) { - .authenticator-shell--dev .authenticator-layout { display: grid; grid-template-columns: 393px minmax(0, 440px); gap: 32px; max-width: 913px; padding: 0 24px; align-items: start; } - .developer-panel { margin: 0 0 24px; } +@media (min-width: 768px) { + .dev-mode-bar { padding: 20px 40px; } + .staging-banner { font-size: 15px; } + .authenticator-shell .app-main { min-height: calc(100svh - 84px); min-height: calc(100dvh - 84px); padding: 64px 40px; justify-content: center; } + .screen-content { flex: 0; padding: 0; } + .centered-layout { max-width: 560px; gap: 28px; padding-inline: 0; } + h1 { font-size: 38px; letter-spacing: -1px; } + .message-block > p { max-width: 500px; font-size: 18px; line-height: 1.5; } + .message-block .detail-copy { max-width: 480px; font-size: 15px; } + .actions { max-width: 400px; margin: 32px auto 0; padding-top: 0; } + .developer-panel { max-width: 640px; margin: 24px auto; } + .authenticator-shell .app-main--camera-preview { justify-content: flex-start; padding-top: 24px; } +} +@media (min-width: 1100px) { + .authenticator-shell--dev .authenticator-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 40px; padding: 0 40px; align-items: start; } + .authenticator-shell--dev .app-main { padding-inline: 0; } + .developer-panel { max-width: none; margin: 24px 0; padding: 8px 0 8px 32px; border-top: 0; border-left: 1px solid #e5e5e5; } } @media (prefers-reduced-motion: reduce) { diff --git a/docs/review/authenticator-desktop.png b/docs/review/authenticator-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..96e00003bfef457e3ecfe41280591b70776d6277 GIT binary patch literal 41161 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 literal 0 HcmV?d00001 diff --git a/docs/review/authenticator-mobile.png b/docs/review/authenticator-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..29e86193ae6d8596f2218912804b848b98ecfc7f GIT binary patch literal 31888 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 literal 0 HcmV?d00001 diff --git a/docs/review/dev-desktop.png b/docs/review/dev-desktop.png index 390a1b8d8011521bf179f3cf5be22a84db228aa8..7ab8f698d8fb4740488b2c4d3132e38987c95e24 100644 GIT binary patch literal 134231 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

      KO^6JPPSjXOpGq2rP(`#ySur8Z@CD2 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 ZGeeZ8(~9!jCc8jh^K|udS?83{1OOv)8Uz3U literal 136576 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ð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 Hb2tA3#vLy- diff --git a/docs/review/dev-mobile.png b/docs/review/dev-mobile.png index 023ca12ea979d06a5cdc71d8f34382d727fec4b0..0380d2cac27cd77d453987e3aa033f9a4b3996f7 100644 GIT binary patch literal 112420 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 EFQ^ig+yDRo literal 118032 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 Ccp-`a diff --git a/docs/review/request-desktop.png b/docs/review/request-desktop.png index 5c13183127885d7541a9cc0dcf1839146462d488..1e42a8cd0a9efa85ffed9699c38d86c5055df1be 100644 GIT binary patch literal 52898 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 E121sg+yDRo literal 56920 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 YZt_d%-}+md$k(Q!diX%SB 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 literal 43578 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 diff --git a/tests/integration/browser/authenticator.browser.spec.ts b/tests/integration/browser/authenticator.browser.spec.ts index 204bca5..a370873 100644 --- a/tests/integration/browser/authenticator.browser.spec.ts +++ b/tests/integration/browser/authenticator.browser.spec.ts @@ -12,9 +12,12 @@ if (!("bun" in process.versions)) { await expect(page.locator("body")).not.toContainText("Zoom"); expect(external).toEqual([]); expect(await page.evaluate(() => ({ local: Object.keys(localStorage), session: Object.keys(sessionStorage) }))).toEqual({ local: [], session: [] }); - for (const viewport of [{ width: 320, height: 568 }, { width: 393, height: 852 }, { width: 1280, height: 900 }]) { + for (const viewport of [{ width: 320, height: 568 }, { width: 393, height: 852 }, { width: 768, height: 1024 }, { width: 1280, height: 900 }]) { await page.setViewportSize(viewport); expect(await page.evaluate(() => document.documentElement.scrollWidth <= document.documentElement.clientWidth)).toBe(true); + expect(Math.round((await page.getByRole("main").boundingBox())!.width)).toBe(viewport.width); + await expect(page.locator("body")).toHaveCSS("background-color", "rgb(255, 255, 255)"); + await expect(page.getByRole("main")).toHaveCSS("box-shadow", "none"); await page.screenshot({ path: `test-results/screenshots/${info.project.name}-home-${viewport.width}.png`, fullPage: true }); } }); From ae0b1785a11361864f2846c2516a9411a9bd5765 Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Tue, 13 Oct 2026 14:40:31 -0700 Subject: [PATCH 12/38] Checkpoint local authenticator and TEE demo integration --- .github/workflows/ci.yml | 3 + .gitignore | 9 + .prettierignore | 7 +- README.md | 7 +- bun.lock | 666 +- docs/connector-bridge.md | 15 +- docs/local-tee-connect.md | 64 + docs/rgbnet-browser.md | 97 + docs/selfie-capture-plan.md | 154 + docs/selfie-enrollment.md | 12 +- docs/selfie-flow-comparison.md | 235 + docs/selfie-pr-integration.md | 118 + eslint.config.mjs | 35 +- index.html | 13 + next.config.ts | 7 - package.json | 33 +- postcss.config.mjs | 2 +- public/images/world-id/README.md | 10 + public/images/world-id/close.svg | 3 + public/images/world-id/mark.svg | 45 + public/images/world-id/shield.svg | 3 + public/images/world-id/success.svg | 4 + scripts/create-selfie-admission-key.ts | 22 + scripts/dev.ts | 22 + scripts/setup-rgbnet.ts | 14 + src/app/globals.css | 11 - src/app/layout.tsx | 30 - src/app/page.tsx | 115 - src/components/AuthenticatorScreen.tsx | 480 + src/components/AuthenticatorSession.tsx | 55 + src/components/CredentialRequestSheet.tsx | 506 + src/components/CredentialVault.tsx | 174 + src/components/RequestPreflight.tsx | 52 + src/components/UserDropdown.tsx | 12 +- .../selfie-check/LocalTeeConnection.tsx | 33 + src/components/selfie-check/SelfieCamera.tsx | 211 + .../selfie-check/SelfieCheckScreen.tsx | 215 + src/components/selfie-check/camera-capture.ts | 63 + src/components/selfie-check/face-detector.ts | 103 + src/components/selfie-check/rgbnet-model.json | 6 + src/components/selfie-check/rgbnet.ts | 162 + src/components/selfie-check/rgbnet.worker.ts | 150 + src/hooks/useLocalTeeConnection.ts | 73 + src/lib/authenticator-session.ts | 118 + src/lib/client-context.ts | 47 + src/lib/demo-profile.ts | 77 + src/lib/flow-logging.ts | 37 + src/lib/passkey-secrets.ts | 36 + src/lib/passkey.ts | 123 + src/lib/prf-result.ts | 44 + src/lib/request-ip.ts | 13 + src/lib/requests/bridge.ts | 84 + src/lib/requests/connector.ts | 57 + src/lib/requests/incoming-request.ts | 77 + src/lib/requests/proof-request.ts | 199 + src/lib/selfie-issuance.ts | 88 + src/lib/selfie-issuer-server.ts | 298 + src/lib/staging-face-enrollment.ts | 40 + src/lib/staging-registration.ts | 123 + src/lib/tee-admission.ts | 66 + src/lib/tee-connection.ts | 119 + src/lib/walletkit.ts | 213 + src/main.tsx | 33 + src/pages/SelfieDemoPage.tsx | 126 + src/server/face-enrollment-helper/Cargo.lock | 9727 +++++++++++++++++ src/server/face-enrollment-helper/Cargo.toml | 21 + src/server/face-enrollment-helper/README.md | 27 + .../face-enrollment-helper/build-config.toml | 7 + src/server/face-enrollment-helper/src/main.rs | 144 + src/server/http.ts | 54 + src/server/index.ts | 25 + src/server/routes/client-context.ts | 5 + src/server/routes/faux-credential.ts | 64 + src/server/routes/selfie-credential.ts | 56 + src/server/routes/selfie-enclave.ts | 71 + src/server/routes/staging-rp.ts | 31 + src/server/routes/tee-admission.ts | 61 + src/server/selfie-enclave.ts | 95 + src/styles.css | 108 + tests/authenticator-session.test.ts | 137 + tests/demo-profile.test.ts | 59 + tests/face-detector.test.ts | 141 + tests/fixtures/rgbnet-decode.json | 65 + tests/fixtures/rgbnet-resize.json | 32 + tests/flow-logging.test.ts | 24 + tests/http-server.test.ts | 47 + tests/prf-result.test.ts | 46 + tests/registration.test.ts | 180 + tests/rgbnet.test.ts | 79 + tests/selfie-camera.test.ts | 142 + tests/selfie-enclave.test.ts | 101 + tests/selfie-routing.test.ts | 121 + tests/tee-admission.test.ts | 133 + tests/tee-connection.test.ts | 157 + tests/walletkit.test.ts | 105 + tsconfig.json | 12 +- vite.config.ts | 23 + 97 files changed, 17481 insertions(+), 688 deletions(-) create mode 100644 docs/local-tee-connect.md create mode 100644 docs/rgbnet-browser.md create mode 100644 docs/selfie-capture-plan.md create mode 100644 docs/selfie-flow-comparison.md create mode 100644 docs/selfie-pr-integration.md create mode 100644 index.html delete mode 100644 next.config.ts create mode 100644 public/images/world-id/README.md create mode 100644 public/images/world-id/close.svg create mode 100644 public/images/world-id/mark.svg create mode 100644 public/images/world-id/shield.svg create mode 100644 public/images/world-id/success.svg create mode 100644 scripts/create-selfie-admission-key.ts create mode 100644 scripts/dev.ts create mode 100644 scripts/setup-rgbnet.ts delete mode 100644 src/app/globals.css delete mode 100644 src/app/layout.tsx delete mode 100644 src/app/page.tsx create mode 100644 src/components/AuthenticatorScreen.tsx create mode 100644 src/components/AuthenticatorSession.tsx create mode 100644 src/components/CredentialRequestSheet.tsx create mode 100644 src/components/CredentialVault.tsx create mode 100644 src/components/RequestPreflight.tsx create mode 100644 src/components/selfie-check/LocalTeeConnection.tsx create mode 100644 src/components/selfie-check/SelfieCamera.tsx create mode 100644 src/components/selfie-check/SelfieCheckScreen.tsx create mode 100644 src/components/selfie-check/camera-capture.ts create mode 100644 src/components/selfie-check/face-detector.ts create mode 100644 src/components/selfie-check/rgbnet-model.json create mode 100644 src/components/selfie-check/rgbnet.ts create mode 100644 src/components/selfie-check/rgbnet.worker.ts create mode 100644 src/hooks/useLocalTeeConnection.ts create mode 100644 src/lib/authenticator-session.ts create mode 100644 src/lib/client-context.ts create mode 100644 src/lib/demo-profile.ts create mode 100644 src/lib/flow-logging.ts create mode 100644 src/lib/passkey-secrets.ts create mode 100644 src/lib/passkey.ts create mode 100644 src/lib/prf-result.ts create mode 100644 src/lib/request-ip.ts create mode 100644 src/lib/requests/bridge.ts create mode 100644 src/lib/requests/connector.ts create mode 100644 src/lib/requests/incoming-request.ts create mode 100644 src/lib/requests/proof-request.ts create mode 100644 src/lib/selfie-issuance.ts create mode 100644 src/lib/selfie-issuer-server.ts create mode 100644 src/lib/staging-face-enrollment.ts create mode 100644 src/lib/staging-registration.ts create mode 100644 src/lib/tee-admission.ts create mode 100644 src/lib/tee-connection.ts create mode 100644 src/lib/walletkit.ts create mode 100644 src/main.tsx create mode 100644 src/pages/SelfieDemoPage.tsx create mode 100644 src/server/face-enrollment-helper/Cargo.lock create mode 100644 src/server/face-enrollment-helper/Cargo.toml create mode 100644 src/server/face-enrollment-helper/README.md create mode 100644 src/server/face-enrollment-helper/build-config.toml create mode 100644 src/server/face-enrollment-helper/src/main.rs create mode 100644 src/server/http.ts create mode 100644 src/server/index.ts create mode 100644 src/server/routes/client-context.ts create mode 100644 src/server/routes/faux-credential.ts create mode 100644 src/server/routes/selfie-credential.ts create mode 100644 src/server/routes/selfie-enclave.ts create mode 100644 src/server/routes/staging-rp.ts create mode 100644 src/server/routes/tee-admission.ts create mode 100644 src/server/selfie-enclave.ts create mode 100644 src/styles.css create mode 100644 tests/authenticator-session.test.ts create mode 100644 tests/demo-profile.test.ts create mode 100644 tests/face-detector.test.ts create mode 100644 tests/fixtures/rgbnet-decode.json create mode 100644 tests/fixtures/rgbnet-resize.json create mode 100644 tests/flow-logging.test.ts create mode 100644 tests/http-server.test.ts create mode 100644 tests/prf-result.test.ts create mode 100644 tests/registration.test.ts create mode 100644 tests/rgbnet.test.ts create mode 100644 tests/selfie-camera.test.ts create mode 100644 tests/selfie-enclave.test.ts create mode 100644 tests/selfie-routing.test.ts create mode 100644 tests/tee-admission.test.ts create mode 100644 tests/tee-connection.test.ts create mode 100644 tests/walletkit.test.ts create mode 100644 vite.config.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a438cf6..35940e3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,6 +29,9 @@ jobs: - name: Check formatting run: bun run format:check + - name: Run tests + run: bun run test + - name: Run linting run: bun run lint diff --git a/.gitignore b/.gitignore index 5ef6a52..f05ca9f 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ # production /build +/dist/ # misc .DS_Store @@ -39,3 +40,11 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +# Local playground and generated diagrams +/demo/ +/.codex-visualizations/ +/src/server/face-enrollment-helper/target/ + +# Installed with scripts/setup-rgbnet.ts; only the browser detector is served. +/public/models/*.onnx diff --git a/.prettierignore b/.prettierignore index 3035fb8..ad11891 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,6 @@ -relyance-sci.yml \ No newline at end of file +relyance-sci.yml +/demo/ +/.codex-visualizations/ +/src/server/**/target/ +/dist/ +/.next/ diff --git a/README.md b/README.md index 8ae9178..4c62edd 100644 --- a/README.md +++ b/README.md @@ -13,17 +13,18 @@ Open [localhost:3100](http://localhost:3100). The development command starts Vit - `/`: authenticator setup, unlock and request entry. - `/selfie-check`: Selfie Check request flow. -- `/selfie-demo`: camera preview and connection log. +- `/selfie-demo`: local RGBNet face positioning, ONNX diagnostics and connection log. + See [model setup and validation](docs/rgbnet-browser.md). Passkey setup requires a browser and provider that support the WebAuthn PRF extension. Camera access requires HTTPS or localhost. The TEE target is configured in `.env.local`: ```dotenv -VITE_TEE_BASE_URL=http://localhost:8000 +VITE_TEE_BASE_URL=http://127.0.0.1:8010 ``` -This only selects a target. It does not start a TEE, verify an enclave or enable uploads. The current `connect()` implementation reports that connection setup is unavailable. +The development selfie demo now makes an authenticated `POST /v1/connect` request using a short-lived demo token supplied automatically by the local backend. This is local admission, not enclave attestation. Missing/invalid/expired credentials are forbidden; a valid token receives 503 until the face worker is attached. See [local connection setup](docs/local-tee-connect.md). The developer enrollment flow can issue a staging credential using synthetic face data. It does not use the camera image, create a real face PCP or verify TEE enrollment evidence. diff --git a/bun.lock b/bun.lock index 6a1bab1..514036b 100644 --- a/bun.lock +++ b/bun.lock @@ -7,67 +7,75 @@ "dependencies": { "@radix-ui/react-dropdown-menu": "^2.1.16", "@types/qrcode": "^1.5.5", + "@worldcoin/walletkit-web": "file:../walletkit-selfie-integration/worldcoin-walletkit-web-0.22.1.tgz", "clsx": "^2.1.1", + "lossless-json": "4.3.1", "motion": "^12.23.22", - "next": "16.1.1", + "onnxruntime-web": "1.30.0", "qrcode": "^1.5.4", "react": "19.2.3", "react-dom": "19.2.3", + "react-router-dom": "^7.18.4", "tailwind-merge": "^3.3.1", + "viem": "2.56.0", }, "devDependencies": { "@eslint/eslintrc": "^3", + "@eslint/js": "^9", "@tailwindcss/postcss": "^4", + "@types/bun": "^1.4.2", "@types/node": "^20", "@types/react": "19.2.7", "@types/react-dom": "19.2.3", + "@vitejs/plugin-react": "^6.1.2", "eslint": "^9", - "eslint-config-next": "16.1.1", + "eslint-plugin-react-hooks": "^7.1.1", + "globals": "^17.13.0", "prettier": "^3.6.2", "prettier-plugin-sort-imports-desc": "^1.0.0", "tailwindcss": "^4", "typescript": "^5", + "typescript-eslint": "^8.71.1", + "vite": "^8.3.3", }, }, }, "packages": { - "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], - - "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + "@adraffy/ens-normalize": ["@adraffy/ens-normalize@1.11.1", "", {}, "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ=="], - "@babel/compat-data": ["@babel/compat-data@7.28.5", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="], + "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], - "@babel/core": ["@babel/core@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw=="], + "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], - "@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], + "@babel/compat-data": ["@babel/compat-data@7.29.7", "", {}, "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg=="], - "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="], + "@babel/core": ["@babel/core@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-compilation-targets": "^7.29.7", "@babel/helper-module-transforms": "^7.29.7", "@babel/helpers": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA=="], - "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], + "@babel/generator": ["@babel/generator@7.29.8", "", { "dependencies": { "@babel/parser": "^7.29.8", "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg=="], - "@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.29.7", "", { "dependencies": { "@babel/compat-data": "^7.29.7", "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g=="], - "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="], + "@babel/helper-globals": ["@babel/helper-globals@7.29.7", "", {}, "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA=="], - "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.29.7", "", { "dependencies": { "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g=="], - "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.29.7", "", { "dependencies": { "@babel/helper-module-imports": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7", "@babel/traverse": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg=="], - "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - "@babel/helpers": ["@babel/helpers@7.28.4", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="], + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], - "@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.29.7", "", {}, "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw=="], - "@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], + "@babel/helpers": ["@babel/helpers@7.29.10", "", { "dependencies": { "@babel/template": "^7.29.7", "@babel/types": "^7.29.8" } }, "sha512-EMCx3AGZ3WfAl6ht7AyQoPm2Lh+BGYEMdc4Q6Hf7uSCDOZFuLq44qNwL+iaim8VlyYhRAo4X43+weadK8ZB4Yg=="], - "@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], + "@babel/parser": ["@babel/parser@7.29.9", "", { "dependencies": { "@babel/types": "^7.29.8" }, "bin": "./bin/babel-parser.js" }, "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA=="], - "@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + "@babel/template": ["@babel/template@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg=="], - "@emnapi/core": ["@emnapi/core@1.5.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg=="], + "@babel/traverse": ["@babel/traverse@7.29.10", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", "@babel/parser": "^7.29.9", "@babel/template": "^7.29.7", "@babel/types": "^7.29.8", "debug": "^4.3.1" } }, "sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ=="], - "@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="], + "@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g=="], @@ -103,52 +111,6 @@ "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], - "@img/colour": ["@img/colour@1.0.0", "", {}, "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw=="], - - "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.3" }, "os": "darwin", "cpu": "arm64" }, "sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA=="], - - "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.3" }, "os": "darwin", "cpu": "x64" }, "sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg=="], - - "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw=="], - - "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA=="], - - "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.3", "", { "os": "linux", "cpu": "arm" }, "sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA=="], - - "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ=="], - - "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg=="], - - "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w=="], - - "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.3", "", { "os": "linux", "cpu": "x64" }, "sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg=="], - - "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw=="], - - "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.3", "", { "os": "linux", "cpu": "x64" }, "sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g=="], - - "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.3" }, "os": "linux", "cpu": "arm" }, "sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA=="], - - "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.3" }, "os": "linux", "cpu": "arm64" }, "sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ=="], - - "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.3" }, "os": "linux", "cpu": "ppc64" }, "sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ=="], - - "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.3" }, "os": "linux", "cpu": "s390x" }, "sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw=="], - - "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.3" }, "os": "linux", "cpu": "x64" }, "sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A=="], - - "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.3" }, "os": "linux", "cpu": "arm64" }, "sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA=="], - - "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.3" }, "os": "linux", "cpu": "x64" }, "sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg=="], - - "@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.4", "", { "dependencies": { "@emnapi/runtime": "^1.5.0" }, "cpu": "none" }, "sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA=="], - - "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA=="], - - "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw=="], - - "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.4", "", { "os": "win32", "cpu": "x64" }, "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig=="], - "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], @@ -161,35 +123,31 @@ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], - "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" } }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="], + "@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], - "@next/env": ["@next/env@16.1.1", "", {}, "sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA=="], + "@noble/curves": ["@noble/curves@1.9.1", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA=="], - "@next/eslint-plugin-next": ["@next/eslint-plugin-next@16.1.1", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-Ovb/6TuLKbE1UiPcg0p39Ke3puyTCIKN9hGbNItmpQsp+WX3qrjO3WaMVSi6JHr9X1NrmthqIguVHodMJbh/dw=="], + "@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], - "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.1.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JS3m42ifsVSJjSTzh27nW+Igfha3NdBOFScr9C80hHGrWx55pTrVL23RJbqir7k7/15SKlrLHhh/MQzqBBYrQA=="], + "@oxc-project/types": ["@oxc-project/types@0.153.0", "", {}, "sha512-jSNrRIyvPVLL5E1z/tS5zLAprosGz/FuI1PWwEOz59j3E4TTTzSpqKb/RDGqJhhW0QHYISGXxq582wGx6T11Tw=="], - "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.1.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-hbyKtrDGUkgkyQi1m1IyD3q4I/3m9ngr+V93z4oKHrPcmxwNL5iMWORvLSGAf2YujL+6HxgVvZuCYZfLfb4bGw=="], + "@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="], - "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.1.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-/fvHet+EYckFvRLQ0jPHJCUI5/B56+2DpI1xDSvi80r/3Ez+Eaa2Yq4tJcRTaB1kqj/HrYKn8Yplm9bNoMJpwQ=="], + "@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="], - "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.1.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg=="], + "@protobufjs/codegen": ["@protobufjs/codegen@2.0.5", "", {}, "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g=="], - "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.1.1", "", { "os": "linux", "cpu": "x64" }, "sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ=="], + "@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.1", "", {}, "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg=="], - "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.1.1", "", { "os": "linux", "cpu": "x64" }, "sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA=="], + "@protobufjs/fetch": ["@protobufjs/fetch@1.1.1", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1" } }, "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw=="], - "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.1.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA=="], + "@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="], - "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.1.1", "", { "os": "win32", "cpu": "x64" }, "sha512-Ncwbw2WJ57Al5OX0k4chM68DKhEPlrXBaSXDCi2kPi5f4d8b3ejr3RRJGfKBLrn2YJL5ezNS7w2TZLHSti8CMw=="], + "@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="], - "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + "@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="], - "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], - - "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], - - "@nolyfill/is-core-module": ["@nolyfill/is-core-module@1.0.39", "", {}, "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA=="], + "@protobufjs/utf8": ["@protobufjs/utf8@1.1.2", "", {}, "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug=="], "@radix-ui/primitive": ["@radix-ui/primitive@1.1.3", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="], @@ -243,9 +201,43 @@ "@radix-ui/rect": ["@radix-ui/rect@1.1.1", "", {}, "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="], - "@rtsao/scc": ["@rtsao/scc@1.1.0", "", {}, "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g=="], + "@rolldown/binding-android-arm-eabi": ["@rolldown/binding-android-arm-eabi@1.2.13", "", { "os": "android", "cpu": "arm" }, "sha512-Vu/NICrgdRvUOeaJZIyB2FP63s6fO/4ud5l8dXmxDx9yDyn+mN0y+gsvsVviSli+T361Aqo0h46EuMoobrwawA=="], + + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.2.13", "", { "os": "android", "cpu": "arm64" }, "sha512-6LEoIrGy5vvCd2boNnv2soPSUZj/PRvhp8R/t9KlX+mIZxThIE/ZqxrGXxmuNX0FuvQFvLdZr7S4HrYpYBVhEQ=="], - "@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.2.13", "", { "os": "darwin", "cpu": "arm64" }, "sha512-CaJSRzlQ6Q+zkDMVA9OkVxBjVoPRCDEE3v0FSJ9kIQBgRjFApA3Si4ijhbNVUji7ZJt+PfO0e46qy4nPInHUPA=="], + + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.2.13", "", { "os": "darwin", "cpu": "x64" }, "sha512-e4r340I5hxSzJkD3YJBxgzq/rJ3wwxwdLLb2FPt1Zpyem20nrQPT11DDEEkazwxaHumH8wpglsp/Ozgj/wT6mw=="], + + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.2.13", "", { "os": "freebsd", "cpu": "x64" }, "sha512-hoBWDZ4/K/mJKVMbsgUd1jfpA2DiOrJ54mpegObU9TBHBBrtX4FLIXJJQRDPZ/2Dn91GvPob+Z2hwKJzf4E5SQ=="], + + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.2.13", "", { "os": "linux", "cpu": "arm" }, "sha512-oF9fZu3vTWnTiVAkDFxU9PJLt1nh20K9RRpuHsR7ZnE2L7XookBbDBVLojCVSLGbvtSlxeUNnjAj6DbNsKyzbg=="], + + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.2.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-DTpb/+jMiqWMPgphn4ksW1zW+XLJ6dJJ9FMvnIk9I291LhCctMPhMYJrP5t9p6C9qa3KXadDdUEZHBaPh3kNxQ=="], + + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.2.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-xU+Kvv9N2A3SY35zFh1FWWNjxbadE/BKeqnkXe7vScU4GZsw757BlVmDLITZEq8DPpk6m7uoDYkK7P+x/uU5Ow=="], + + "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.2.13", "", { "os": "linux", "cpu": "ppc64" }, "sha512-XMk/hnhh25oQ756Lclb1Q11h4ll0xC0Esa5w4Vzp+mAE2S3AGJgeM0SonrIgY8fHhjarb6hcoTuwoFG0VVP2ig=="], + + "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.2.13", "", { "os": "linux", "cpu": "s390x" }, "sha512-U1BoTHYmlywE2n3HUWjzZ+8EQsKr+OwpxYuDWaubx42tUL8QSL7nOqRz/NVHanibbFP3M1Rxuprz/wNcbMKjqw=="], + + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.2.13", "", { "os": "linux", "cpu": "x64" }, "sha512-J4cm80Pc6wEwV5AZ42o62sIQgDk+Y7R2s646jIwuvO+4V46QB58N4vVuMPWCBaNgursXLpmUWJV//WQAkPvHBQ=="], + + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.2.13", "", { "os": "linux", "cpu": "x64" }, "sha512-W0euZS40U4V6JkmEnVCIX9mcsL6cbXQ4X8c2w+MMOIjFg68TXUW+u3RT+2e1t1pv9mg/EP3pDtK3POXdQ7Rxyw=="], + + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.2.13", "", { "os": "none", "cpu": "arm64" }, "sha512-do/AF/4n9MRshia3a5aXoy8xM2c6mgfT6D7H/dY6my5z+hfCIR4ab7mk4IRj++nsEQpKy39kd0DQnDq+r692tw=="], + + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.2.13", "", { "os": "win32", "cpu": "arm64" }, "sha512-6FtUf2cJZobutJdxnGYX8z0vtbgqU0b2v8vfBhkXb9wp2MppMFtkunE+IaOntyi01rkIQoPW2GHABtfzsC0BRQ=="], + + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.2.13", "", { "os": "win32", "cpu": "x64" }, "sha512-UKhFaZTeTcbKrb3iU82m17jVcPEAoqDkCN5MBqgPyZSwp/cQmib21crTS0DdH7T1B7wZRWEI89YQAOJMet5yhg=="], + + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], + + "@scure/base": ["@scure/base@1.2.6", "", {}, "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg=="], + + "@scure/bip32": ["@scure/bip32@1.7.0", "", { "dependencies": { "@noble/curves": "~1.9.0", "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5" } }, "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw=="], + + "@scure/bip39": ["@scure/bip39@1.6.0", "", { "dependencies": { "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5" } }, "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A=="], "@tailwindcss/node": ["@tailwindcss/node@4.1.14", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", "jiti": "^2.6.0", "lightningcss": "1.30.1", "magic-string": "^0.30.19", "source-map-js": "^1.2.1", "tailwindcss": "4.1.14" } }, "sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw=="], @@ -277,14 +269,12 @@ "@tailwindcss/postcss": ["@tailwindcss/postcss@4.1.14", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.1.14", "@tailwindcss/oxide": "4.1.14", "postcss": "^8.4.41", "tailwindcss": "4.1.14" } }, "sha512-BdMjIxy7HUNThK87C7BC8I1rE8BVUsfNQSI5siQ4JK3iIa3w0XyVvVL9SXLWO//CtYTcp1v7zci0fYwJOjB+Zg=="], - "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + "@types/bun": ["@types/bun@1.4.2", "", { "dependencies": { "bun-types": "1.4.2" } }, "sha512-GimotNn7+ZV0uVArItBbriZsR1oNf0+WTzPkdcFrzShI7k2norL0uzEaJT8T33dWr7O/c9ZDuAFQrctKCi72oQ=="], "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], - "@types/json5": ["@types/json5@0.0.29", "", {}, "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="], - "@types/node": ["@types/node@20.19.19", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg=="], "@types/qrcode": ["@types/qrcode@1.5.5", "", { "dependencies": { "@types/node": "*" } }, "sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg=="], @@ -293,63 +283,31 @@ "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], - "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.50.1", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.50.1", "@typescript-eslint/type-utils": "8.50.1", "@typescript-eslint/utils": "8.50.1", "@typescript-eslint/visitor-keys": "8.50.1", "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.50.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw=="], - - "@typescript-eslint/parser": ["@typescript-eslint/parser@8.50.1", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.50.1", "@typescript-eslint/types": "8.50.1", "@typescript-eslint/typescript-estree": "8.50.1", "@typescript-eslint/visitor-keys": "8.50.1", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg=="], - - "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.50.1", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.50.1", "@typescript-eslint/types": "^8.50.1", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg=="], - - "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.50.1", "", { "dependencies": { "@typescript-eslint/types": "8.50.1", "@typescript-eslint/visitor-keys": "8.50.1" } }, "sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw=="], - - "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.50.1", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw=="], - - "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.50.1", "", { "dependencies": { "@typescript-eslint/types": "8.50.1", "@typescript-eslint/typescript-estree": "8.50.1", "@typescript-eslint/utils": "8.50.1", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg=="], - - "@typescript-eslint/types": ["@typescript-eslint/types@8.50.1", "", {}, "sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA=="], - - "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.50.1", "", { "dependencies": { "@typescript-eslint/project-service": "8.50.1", "@typescript-eslint/tsconfig-utils": "8.50.1", "@typescript-eslint/types": "8.50.1", "@typescript-eslint/visitor-keys": "8.50.1", "debug": "^4.3.4", "minimatch": "^9.0.4", "semver": "^7.6.0", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ=="], - - "@typescript-eslint/utils": ["@typescript-eslint/utils@8.50.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.50.1", "@typescript-eslint/types": "8.50.1", "@typescript-eslint/typescript-estree": "8.50.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ=="], - - "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.50.1", "", { "dependencies": { "@typescript-eslint/types": "8.50.1", "eslint-visitor-keys": "^4.2.1" } }, "sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ=="], - - "@unrs/resolver-binding-android-arm-eabi": ["@unrs/resolver-binding-android-arm-eabi@1.11.1", "", { "os": "android", "cpu": "arm" }, "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw=="], - - "@unrs/resolver-binding-android-arm64": ["@unrs/resolver-binding-android-arm64@1.11.1", "", { "os": "android", "cpu": "arm64" }, "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g=="], + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.71.1", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.71.1", "@typescript-eslint/type-utils": "8.71.1", "@typescript-eslint/utils": "8.71.1", "@typescript-eslint/visitor-keys": "8.71.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.71.1", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-nNlBf6HuotqMgZvSkWD5hNdemiBIxQ2NmrlgfcUIeZRs+BbakjscCQRq/Hb74EFVnFiSWWdL12JruqwBy3ERDw=="], - "@unrs/resolver-binding-darwin-arm64": ["@unrs/resolver-binding-darwin-arm64@1.11.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g=="], + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.71.1", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.71.1", "@typescript-eslint/types": "8.71.1", "@typescript-eslint/typescript-estree": "8.71.1", "@typescript-eslint/visitor-keys": "8.71.1", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-oM/5sAqz/l1v/zYK1qTOPrn2+JIrBGC1V6uNYucRO5gh6eT9vWJ/RhPbGE59byvZEUQ4VP6XkLBaS5Jti5jpvw=="], - "@unrs/resolver-binding-darwin-x64": ["@unrs/resolver-binding-darwin-x64@1.11.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ=="], + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.71.1", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.71.1", "@typescript-eslint/types": "^8.71.1", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-Oijc9RUsohHjncg6iGi7gCtjnEjYt9FWv9u6ygK8uKcHK5eLjLAkqERQ9BaytbpceOFdk6kifPCS/zAZE+A99g=="], - "@unrs/resolver-binding-freebsd-x64": ["@unrs/resolver-binding-freebsd-x64@1.11.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw=="], + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.71.1", "", { "dependencies": { "@typescript-eslint/types": "8.71.1", "@typescript-eslint/visitor-keys": "8.71.1" } }, "sha512-1YUDZXdTnXLlob03SFHBipdyMBsDVm7zoSz0ytTJ39dk5J1TgsTK03VlR/dLXG/RLLUrPcYbD4rp23BmHxHP0w=="], - "@unrs/resolver-binding-linux-arm-gnueabihf": ["@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1", "", { "os": "linux", "cpu": "arm" }, "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw=="], + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.71.1", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-oTvkml5SxXhgg+WWKhod5qWQICDXtOB+/Hi9VdPKFAANJ2b7YOgMffgvzXuqog7R6A/JtrzRf128dsxummyWhg=="], - "@unrs/resolver-binding-linux-arm-musleabihf": ["@unrs/resolver-binding-linux-arm-musleabihf@1.11.1", "", { "os": "linux", "cpu": "arm" }, "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw=="], + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.71.1", "", { "dependencies": { "@typescript-eslint/types": "8.71.1", "@typescript-eslint/typescript-estree": "8.71.1", "@typescript-eslint/utils": "8.71.1", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-kH3t3jZCYv2PZSBEWPKTariLrCaoF1CLoPitYFBJOhAGEwWnSRAtGEifrfrpBa4K9JlwWNZotgA5w3/wLSk/FQ=="], - "@unrs/resolver-binding-linux-arm64-gnu": ["@unrs/resolver-binding-linux-arm64-gnu@1.11.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ=="], + "@typescript-eslint/types": ["@typescript-eslint/types@8.71.1", "", {}, "sha512-ybYnPTUwg3VQQOFEiBPLs8Jxl1ry2vXdn1kVKguomBbvxpetdu3MKTNDqFNUrlG8ylP9MpZosmXMFYlGQHk1oQ=="], - "@unrs/resolver-binding-linux-arm64-musl": ["@unrs/resolver-binding-linux-arm64-musl@1.11.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w=="], + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.71.1", "", { "dependencies": { "@typescript-eslint/project-service": "8.71.1", "@typescript-eslint/tsconfig-utils": "8.71.1", "@typescript-eslint/types": "8.71.1", "@typescript-eslint/visitor-keys": "8.71.1", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-pSKSEK1JJpHs6KiKVtABCE4iJK5d7FLFzDXQNBQ2oRY7LEd3UwOt3TZemTgu9syTIf56dJWlTn/pdmrO9oKUXQ=="], - "@unrs/resolver-binding-linux-ppc64-gnu": ["@unrs/resolver-binding-linux-ppc64-gnu@1.11.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA=="], + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.71.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.71.1", "@typescript-eslint/types": "8.71.1", "@typescript-eslint/typescript-estree": "8.71.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-CBjT6gfAz3DW2j9Q4moFnqt208Aq+506sVGXfpRcyAeqn0EpayL0mjdWoCO2t3RC7GewNrFxdeehuEaPg6DMzQ=="], - "@unrs/resolver-binding-linux-riscv64-gnu": ["@unrs/resolver-binding-linux-riscv64-gnu@1.11.1", "", { "os": "linux", "cpu": "none" }, "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ=="], + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.71.1", "", { "dependencies": { "@typescript-eslint/types": "8.71.1", "eslint-visitor-keys": "^5.0.0" } }, "sha512-0GxiUGqMU0qXJt58cBsiG3DP8lUmBaFo2vChtUX+CT7PnR3v/VGLLrzVP4K9r1lNiZXjHYefMBbPunplr09v6w=="], - "@unrs/resolver-binding-linux-riscv64-musl": ["@unrs/resolver-binding-linux-riscv64-musl@1.11.1", "", { "os": "linux", "cpu": "none" }, "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@6.1.2", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "oxc-transform-react": "^0.152.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler", "oxc-transform-react"] }, "sha512-fhJNGUdscQa4HkI0xFxwonWyhnVReCPDbXI7FH7jmzpnVCrFQI7PRrhWecO263610vOrs9tr2Y4xcf8uAdFxbw=="], - "@unrs/resolver-binding-linux-s390x-gnu": ["@unrs/resolver-binding-linux-s390x-gnu@1.11.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg=="], + "@worldcoin/walletkit-web": ["@worldcoin/walletkit-web@../walletkit-selfie-integration/worldcoin-walletkit-web-0.22.1.tgz", {}, "sha512-/JiALYeiJgj2+DGou2vKz8F1MyHun7aSCNSoF+DlKcOdsOzbl8iOn8atMmEHYVB9I+VhBL/J4NT+JrBbRmCzcg=="], - "@unrs/resolver-binding-linux-x64-gnu": ["@unrs/resolver-binding-linux-x64-gnu@1.11.1", "", { "os": "linux", "cpu": "x64" }, "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w=="], - - "@unrs/resolver-binding-linux-x64-musl": ["@unrs/resolver-binding-linux-x64-musl@1.11.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA=="], - - "@unrs/resolver-binding-wasm32-wasi": ["@unrs/resolver-binding-wasm32-wasi@1.11.1", "", { "dependencies": { "@napi-rs/wasm-runtime": "^0.2.11" }, "cpu": "none" }, "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ=="], - - "@unrs/resolver-binding-win32-arm64-msvc": ["@unrs/resolver-binding-win32-arm64-msvc@1.11.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw=="], - - "@unrs/resolver-binding-win32-ia32-msvc": ["@unrs/resolver-binding-win32-ia32-msvc@1.11.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ=="], - - "@unrs/resolver-binding-win32-x64-msvc": ["@unrs/resolver-binding-win32-x64-msvc@1.11.1", "", { "os": "win32", "cpu": "x64" }, "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g=="], + "abitype": ["abitype@1.2.3", "", { "peerDependencies": { "typescript": ">=5.0.4", "zod": "^3.22.0 || ^4.0.0" }, "optionalPeers": ["typescript", "zod"] }, "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg=="], "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], @@ -365,62 +323,26 @@ "aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], - "aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], - - "array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="], - - "array-includes": ["array-includes@3.1.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.0", "es-object-atoms": "^1.1.1", "get-intrinsic": "^1.3.0", "is-string": "^1.1.1", "math-intrinsics": "^1.1.0" } }, "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ=="], - - "array.prototype.findlast": ["array.prototype.findlast@1.2.5", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ=="], - - "array.prototype.findlastindex": ["array.prototype.findlastindex@1.2.6", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-shim-unscopables": "^1.1.0" } }, "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ=="], - - "array.prototype.flat": ["array.prototype.flat@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg=="], - - "array.prototype.flatmap": ["array.prototype.flatmap@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg=="], - - "array.prototype.tosorted": ["array.prototype.tosorted@1.1.4", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3", "es-errors": "^1.3.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA=="], - - "arraybuffer.prototype.slice": ["arraybuffer.prototype.slice@1.0.4", "", { "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "is-array-buffer": "^3.0.4" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="], - - "ast-types-flow": ["ast-types-flow@0.0.8", "", {}, "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ=="], - - "async-function": ["async-function@1.0.0", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="], - - "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], - - "axe-core": ["axe-core@4.10.3", "", {}, "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg=="], - - "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], - "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - "baseline-browser-mapping": ["baseline-browser-mapping@2.9.11", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ=="], + "baseline-browser-mapping": ["baseline-browser-mapping@2.11.27", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-ElY12DaROGuan+lMmZ8Cvo/ZUbXPe7Enc/9VU/b1T3Kp4dwytRcNdR8DoSJN5SNJT/CuvcCA0DHDVmMOCePdRQ=="], "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], - "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], - - "browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], - - "call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], - - "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], + "browserslist": ["browserslist@4.29.3", "", { "dependencies": { "baseline-browser-mapping": "^2.11.26", "caniuse-lite": "^1.0.30001813", "electron-to-chromium": "^1.5.439", "node-releases": "^2.0.57", "update-browserslist-db": "^1.3.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-1R4kiYKXGViqEN0CnoDrXc1StD9niAwu+j2dukWzrD4bJgsD4lDmEp0CRbc6E/vYJIfTHwPmwyaKtVSudICdPA=="], - "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], + "bun-types": ["bun-types@1.4.2", "", { "dependencies": { "@types/node": "*" } }, "sha512-bxV1FgK7yBIzjRe5zBozIM4Bem11ZJcCXSrjWRG3YWLt8yFDePu4cLjpebO8OvPeIE9trbyPF4fuj3Cia4Fj3w=="], "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], "camelcase": ["camelcase@5.3.1", "", {}, "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="], - "caniuse-lite": ["caniuse-lite@1.0.30001746", "", {}, "sha512-eA7Ys/DGw+pnkWWSE/id29f2IcPHVoE8wxtvE5JdvD2V28VTDPy1yEeo11Guz0sJ4ZeGRcm3uaTcAqK1LXaphA=="], + "caniuse-lite": ["caniuse-lite@1.0.30001815", "", {}, "sha512-uDybUEyfgbyJJ93J1vikTylBX31AkdVYeVPeffMQpf8XN7hSfr0oZOn4VFOIMNvtU5+rHvC5Udg2TgtJKHm23Q=="], "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], - "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], - "cliui": ["cliui@6.0.0", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ=="], "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], @@ -433,81 +355,37 @@ "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + "cookie": ["cookie@1.1.1", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="], + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], - "damerau-levenshtein": ["damerau-levenshtein@1.0.8", "", {}, "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="], - - "data-view-buffer": ["data-view-buffer@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="], - - "data-view-byte-length": ["data-view-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ=="], - - "data-view-byte-offset": ["data-view-byte-offset@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" } }, "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ=="], - "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], "decamelize": ["decamelize@1.2.0", "", {}, "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="], "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], - "define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], - - "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], - "detect-libc": ["detect-libc@2.1.1", "", {}, "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw=="], "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], "dijkstrajs": ["dijkstrajs@1.0.3", "", {}, "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="], - "doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], - - "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + "electron-to-chromium": ["electron-to-chromium@1.5.450", "", {}, "sha512-AC3HBt6+rJKNUJxpBA1FQPKjrJ2gV6zXu7uAL95PTqxdBxiHDELWpeJ8N5QK5qwBJqXU18hTsmv+hHjfwQ0gdQ=="], - "electron-to-chromium": ["electron-to-chromium@1.5.267", "", {}, "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw=="], - - "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "enhanced-resolve": ["enhanced-resolve@5.18.3", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww=="], - "es-abstract": ["es-abstract@1.24.0", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg=="], - - "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], - - "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], - - "es-iterator-helpers": ["es-iterator-helpers@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.6", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.4", "safe-array-concat": "^1.1.3" } }, "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w=="], - - "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], - - "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], - - "es-shim-unscopables": ["es-shim-unscopables@1.1.0", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw=="], - - "es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="], - "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], "eslint": ["eslint@9.36.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", "@eslint/config-helpers": "^0.3.1", "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.36.0", "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ=="], - "eslint-config-next": ["eslint-config-next@16.1.1", "", { "dependencies": { "@next/eslint-plugin-next": "16.1.1", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^7.0.0", "globals": "16.4.0", "typescript-eslint": "^8.46.0" }, "peerDependencies": { "eslint": ">=9.0.0", "typescript": ">=3.3.1" }, "optionalPeers": ["typescript"] }, "sha512-55nTpVWm3qeuxoQKLOjQVciKZJUphKrNM0fCcQHAIOGl6VFXgaqeMfv0aKJhs7QtcnlAPhNVqsqRfRjeKBPIUA=="], - - "eslint-import-resolver-node": ["eslint-import-resolver-node@0.3.9", "", { "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", "resolve": "^1.22.4" } }, "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g=="], - - "eslint-import-resolver-typescript": ["eslint-import-resolver-typescript@3.10.1", "", { "dependencies": { "@nolyfill/is-core-module": "1.0.39", "debug": "^4.4.0", "get-tsconfig": "^4.10.0", "is-bun-module": "^2.0.0", "stable-hash": "^0.0.5", "tinyglobby": "^0.2.13", "unrs-resolver": "^1.6.2" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*", "eslint-plugin-import-x": "*" }, "optionalPeers": ["eslint-plugin-import", "eslint-plugin-import-x"] }, "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ=="], - - "eslint-module-utils": ["eslint-module-utils@2.12.1", "", { "dependencies": { "debug": "^3.2.7" } }, "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw=="], - - "eslint-plugin-import": ["eslint-plugin-import@2.32.0", "", { "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", "array.prototype.findlastindex": "^1.2.6", "array.prototype.flat": "^1.3.3", "array.prototype.flatmap": "^1.3.3", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.12.1", "hasown": "^2.0.2", "is-core-module": "^2.16.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", "object.values": "^1.2.1", "semver": "^6.3.1", "string.prototype.trimend": "^1.0.9", "tsconfig-paths": "^3.15.0" }, "peerDependencies": { "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA=="], - - "eslint-plugin-jsx-a11y": ["eslint-plugin-jsx-a11y@6.10.2", "", { "dependencies": { "aria-query": "^5.3.2", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", "axe-core": "^4.10.0", "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "safe-regex-test": "^1.0.3", "string.prototype.includes": "^2.0.1" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q=="], - - "eslint-plugin-react": ["eslint-plugin-react@7.37.5", "", { "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA=="], - - "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@7.0.1", "", { "dependencies": { "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "hermes-parser": "^0.25.1", "zod": "^3.25.0 || ^4.0.0", "zod-validation-error": "^3.5.0 || ^4.0.0" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA=="], + "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@7.1.1", "", { "dependencies": { "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "hermes-parser": "^0.25.1", "zod": "^3.25.0 || ^4.0.0", "zod-validation-error": "^3.5.0 || ^4.0.0" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" } }, "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g=="], "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="], @@ -523,78 +401,46 @@ "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], - "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + "eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], - "fast-glob": ["fast-glob@3.3.1", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" } }, "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg=="], + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], - "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], - "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], - "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], - "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], - "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], + "flatbuffers": ["flatbuffers@25.9.23", "", {}, "sha512-MI1qs7Lo4Syw0EOzUl0xjs2lsoeqFku44KpngfIduHBYvzm8h2+7K8YMQh1JtVVVrUvhLpNwqVi4DERegUJhPQ=="], - "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], + "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], "framer-motion": ["framer-motion@12.23.22", "", { "dependencies": { "motion-dom": "^12.23.21", "motion-utils": "^12.23.6", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-ZgGvdxXCw55ZYvhoZChTlG6pUuehecgvEAJz0BHoC5pQKW1EC5xf1Mul1ej5+ai+pVY0pylyFfdl45qnM1/GsA=="], - "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], - - "function.prototype.name": ["function.prototype.name@1.1.8", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" } }, "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q=="], - - "functions-have-names": ["functions-have-names@1.2.3", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="], - - "generator-function": ["generator-function@2.0.1", "", {}, "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g=="], + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], - "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], - "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], - "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], - - "get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="], - - "get-tsconfig": ["get-tsconfig@4.10.1", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ=="], - "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], - "globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], - - "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], - - "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], + "globals": ["globals@17.13.0", "", {}, "sha512-RwMTC61u7hrG3ZJMkZQOK4JLJrKS8QtoTii63EmWvFXHqycY9FObBJQCbsLxSO8kjKhWE5kV1GC+Vb1g3RI0Zg=="], "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - "has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="], + "guid-typescript": ["guid-typescript@1.0.9", "", {}, "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ=="], "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], - "has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="], - - "has-proto": ["has-proto@1.2.0", "", { "dependencies": { "dunder-proto": "^1.0.0" } }, "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ=="], - - "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], - - "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], - - "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], - "hermes-estree": ["hermes-estree@0.25.1", "", {}, "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw=="], "hermes-parser": ["hermes-parser@0.25.1", "", { "dependencies": { "hermes-estree": "0.25.1" } }, "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA=="], @@ -605,67 +451,15 @@ "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], - "internal-slot": ["internal-slot@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="], - - "is-array-buffer": ["is-array-buffer@3.0.5", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="], - - "is-async-function": ["is-async-function@2.1.1", "", { "dependencies": { "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ=="], - - "is-bigint": ["is-bigint@1.1.0", "", { "dependencies": { "has-bigints": "^1.0.2" } }, "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ=="], - - "is-boolean-object": ["is-boolean-object@1.2.2", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A=="], - - "is-bun-module": ["is-bun-module@2.0.0", "", { "dependencies": { "semver": "^7.7.1" } }, "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ=="], - - "is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="], - - "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], - - "is-data-view": ["is-data-view@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" } }, "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw=="], - - "is-date-object": ["is-date-object@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg=="], - "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], - "is-finalizationregistry": ["is-finalizationregistry@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg=="], - "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], - "is-generator-function": ["is-generator-function@1.1.2", "", { "dependencies": { "call-bound": "^1.0.4", "generator-function": "^2.0.0", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA=="], - "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], - "is-map": ["is-map@2.0.3", "", {}, "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw=="], - - "is-negative-zero": ["is-negative-zero@2.0.3", "", {}, "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw=="], - - "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], - - "is-number-object": ["is-number-object@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw=="], - - "is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="], - - "is-set": ["is-set@2.0.3", "", {}, "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg=="], - - "is-shared-array-buffer": ["is-shared-array-buffer@1.0.4", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A=="], - - "is-string": ["is-string@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA=="], - - "is-symbol": ["is-symbol@1.1.1", "", { "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", "safe-regex-test": "^1.1.0" } }, "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w=="], - - "is-typed-array": ["is-typed-array@1.1.15", "", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="], - - "is-weakmap": ["is-weakmap@2.0.2", "", {}, "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w=="], - - "is-weakref": ["is-weakref@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew=="], - - "is-weakset": ["is-weakset@2.0.4", "", { "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ=="], - - "isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], - "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], - "iterator.prototype": ["iterator.prototype@1.1.5", "", { "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "get-proto": "^1.0.0", "has-symbols": "^1.1.0", "set-function-name": "^2.0.2" } }, "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g=="], + "isows": ["isows@1.0.7", "", { "peerDependencies": { "ws": "*" } }, "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg=="], "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], @@ -681,60 +475,50 @@ "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], - "json5": ["json5@1.0.2", "", { "dependencies": { "minimist": "^1.2.0" }, "bin": { "json5": "lib/cli.js" } }, "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA=="], - - "jsx-ast-utils": ["jsx-ast-utils@3.3.5", "", { "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", "object.assign": "^4.1.4", "object.values": "^1.1.6" } }, "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ=="], + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], - "language-subtag-registry": ["language-subtag-registry@0.3.23", "", {}, "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ=="], - - "language-tags": ["language-tags@1.0.9", "", { "dependencies": { "language-subtag-registry": "^0.3.20" } }, "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA=="], - "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], - "lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="], + "lightningcss": ["lightningcss@1.33.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.33.0", "lightningcss-darwin-arm64": "1.33.0", "lightningcss-darwin-x64": "1.33.0", "lightningcss-freebsd-x64": "1.33.0", "lightningcss-linux-arm-gnueabihf": "1.33.0", "lightningcss-linux-arm64-gnu": "1.33.0", "lightningcss-linux-arm64-musl": "1.33.0", "lightningcss-linux-x64-gnu": "1.33.0", "lightningcss-linux-x64-musl": "1.33.0", "lightningcss-win32-arm64-msvc": "1.33.0", "lightningcss-win32-x64-msvc": "1.33.0" } }, "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA=="], + + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.33.0", "", { "os": "android", "cpu": "arm64" }, "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg=="], - "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="], + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.33.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg=="], - "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="], + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.33.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ=="], - "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="], + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.33.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg=="], - "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="], + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.33.0", "", { "os": "linux", "cpu": "arm" }, "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ=="], - "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="], + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.33.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg=="], - "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="], + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.33.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ=="], - "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="], + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.33.0", "", { "os": "linux", "cpu": "x64" }, "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg=="], - "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="], + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.33.0", "", { "os": "linux", "cpu": "x64" }, "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw=="], - "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="], + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.33.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA=="], - "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="], + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.33.0", "", { "os": "win32", "cpu": "x64" }, "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA=="], "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], - "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], + "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="], + + "lossless-json": ["lossless-json@4.3.1", "", {}, "sha512-SqD/Bg3ZfltBJ2Z14hJ/BihnvtV553WO4g9/ePtlp4lrnl9jF3AdIJt53A/Wkg/0Li+LMfxaBqgx1MiFZdQlpQ=="], "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], "magic-string": ["magic-string@0.30.19", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw=="], - "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], - - "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], - - "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], - "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], "minizlib": ["minizlib@3.1.0", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="], @@ -749,33 +533,17 @@ "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], - "napi-postinstall": ["napi-postinstall@0.3.3", "", { "bin": { "napi-postinstall": "lib/cli.js" } }, "sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow=="], - "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], - "next": ["next@16.1.1", "", { "dependencies": { "@next/env": "16.1.1", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.1.1", "@next/swc-darwin-x64": "16.1.1", "@next/swc-linux-arm64-gnu": "16.1.1", "@next/swc-linux-arm64-musl": "16.1.1", "@next/swc-linux-x64-gnu": "16.1.1", "@next/swc-linux-x64-musl": "16.1.1", "@next/swc-win32-arm64-msvc": "16.1.1", "@next/swc-win32-x64-msvc": "16.1.1", "sharp": "^0.34.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-QI+T7xrxt1pF6SQ/JYFz95ro/mg/1Znk5vBebsWwbpejj1T0A23hO7GYEaVac9QUOT2BIMiuzm0L99ooq7k0/w=="], - - "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], - - "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], - - "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], - - "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], + "node-releases": ["node-releases@2.0.57", "", {}, "sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw=="], - "object.assign": ["object.assign@4.1.7", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0", "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw=="], + "onnxruntime-common": ["onnxruntime-common@1.30.0", "", {}, "sha512-7fdVWjAID1dVhH/G8qK3APARunV4VkBFoCQAP7qp4Wkab0mrorvmc+sqiT+mKXOzDqdjN5j+/Z9nb4gzNPWcyA=="], - "object.entries": ["object.entries@1.1.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-object-atoms": "^1.1.1" } }, "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw=="], - - "object.fromentries": ["object.fromentries@2.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0" } }, "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ=="], - - "object.groupby": ["object.groupby@1.0.3", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2" } }, "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ=="], - - "object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="], + "onnxruntime-web": ["onnxruntime-web@1.30.0", "", { "dependencies": { "flatbuffers": "^25.1.24", "guid-typescript": "^1.0.9", "long": "^5.2.3", "onnxruntime-common": "1.30.0", "platform": "^1.3.6", "protobufjs": "^7.2.4" } }, "sha512-q0y+JrrtukXSzsBWEMccVfqX25LRmosXHF+CaRJmg8pZClzcV7svNc4rKY3jL02Vb7QmRMDs1SigqR4CXAfKYQ=="], "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], - "own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="], + "ox": ["ox@0.14.34", "", { "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", "@noble/curves": "1.9.1", "@noble/hashes": "^1.8.0", "@scure/bip32": "^1.7.0", "@scure/bip39": "^1.6.0", "abitype": "^1.2.3", "eventemitter3": "5.0.1" }, "peerDependencies": { "typescript": ">=5.4.0" }, "optionalPeers": ["typescript"] }, "sha512-12seOIk7dv8eAoGQhcWaeKZxNz304IVcDvb9U5Y7JZAEVe21Nm1YMxLjhWah+su5BD4Omx4Zz0z5x3ij9M4GYQ=="], "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], @@ -789,15 +557,13 @@ "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], - "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], - "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + "picomatch": ["picomatch@4.0.7", "", {}, "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="], - "pngjs": ["pngjs@5.0.0", "", {}, "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="], + "platform": ["platform@1.3.6", "", {}, "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="], - "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], + "pngjs": ["pngjs@5.0.0", "", {}, "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="], "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], @@ -807,49 +573,33 @@ "prettier-plugin-sort-imports-desc": ["prettier-plugin-sort-imports-desc@1.0.0", "", { "dependencies": { "prettier": "^2.5.1", "typescript": "^4.0.3" } }, "sha512-tvEeXpKu5JHYbqzsAP+EdjXgqdONTi5NhOtr2ke2br6wV39PQLRAbeHGxTe8/jhS7goXkHQKVl3XLjsKKxpe4A=="], - "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], + "protobufjs": ["protobufjs@7.6.6", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.5", "@protobufjs/eventemitter": "^1.1.1", "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", "long": "^5.3.2" } }, "sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg=="], "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], "qrcode": ["qrcode@1.5.4", "", { "dependencies": { "dijkstrajs": "^1.0.1", "pngjs": "^5.0.0", "yargs": "^15.3.1" }, "bin": { "qrcode": "bin/qrcode" } }, "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg=="], - "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], - "react": ["react@19.2.3", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="], "react-dom": ["react-dom@19.2.3", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.3" } }, "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg=="], - "react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], - "react-remove-scroll": ["react-remove-scroll@2.7.1", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA=="], "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], - "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], + "react-router": ["react-router@7.18.4", "", { "dependencies": { "cookie": "^1.0.1", "set-cookie-parser": "^2.6.0" }, "peerDependencies": { "react": ">=18", "react-dom": ">=18" }, "optionalPeers": ["react-dom"] }, "sha512-PUPQcMhMGRAslLcvtlPz/kmzBEWPhLdgLFrL7pLNepBL6dX0lWj4WD2cUYVgYCuT3jxvghYFg81cDTj44DhetQ=="], - "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], + "react-router-dom": ["react-router-dom@7.18.4", "", { "dependencies": { "react-router": "7.18.4" }, "peerDependencies": { "react": ">=18", "react-dom": ">=18" } }, "sha512-yrfmJHIpDG7taCpqKjT1G5B6q3O2K+RN8/fgNf0lTjCwiPbQ0ei6vXX9ZjQR+7ld8Tr7Z5xmyMnZ8YJrphWQUw=="], - "regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="], + "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], "require-main-filename": ["require-main-filename@2.0.0", "", {}, "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="], - "resolve": ["resolve@1.22.10", "", { "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w=="], - "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], - "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], - - "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], - - "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], - - "safe-array-concat": ["safe-array-concat@1.1.3", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q=="], - - "safe-push-apply": ["safe-push-apply@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="], - - "safe-regex-test": ["safe-regex-test@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="], + "rolldown": ["rolldown@1.2.13", "", { "dependencies": { "@oxc-project/types": "=0.153.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm-eabi": "1.2.13", "@rolldown/binding-android-arm64": "1.2.13", "@rolldown/binding-darwin-arm64": "1.2.13", "@rolldown/binding-darwin-x64": "1.2.13", "@rolldown/binding-freebsd-x64": "1.2.13", "@rolldown/binding-linux-arm-gnueabihf": "1.2.13", "@rolldown/binding-linux-arm64-gnu": "1.2.13", "@rolldown/binding-linux-arm64-musl": "1.2.13", "@rolldown/binding-linux-ppc64-gnu": "1.2.13", "@rolldown/binding-linux-s390x-gnu": "1.2.13", "@rolldown/binding-linux-x64-gnu": "1.2.13", "@rolldown/binding-linux-x64-musl": "1.2.13", "@rolldown/binding-openharmony-arm64": "1.2.13", "@rolldown/binding-win32-arm64-msvc": "1.2.13", "@rolldown/binding-win32-x64-msvc": "1.2.13" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-/5apOkwWxtACcQtZ5WlrAsKS4JwXVThQPJZ3RqIruRY9UG9M8e0VlXN068xum/JRKA4aIUoJ13ghe/kGCvidiQ=="], "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], @@ -857,58 +607,22 @@ "set-blocking": ["set-blocking@2.0.0", "", {}, "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="], - "set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="], - - "set-function-name": ["set-function-name@2.0.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" } }, "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ=="], - - "set-proto": ["set-proto@1.0.0", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="], - - "sharp": ["sharp@0.34.4", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.0", "semver": "^7.7.2" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.4", "@img/sharp-darwin-x64": "0.34.4", "@img/sharp-libvips-darwin-arm64": "1.2.3", "@img/sharp-libvips-darwin-x64": "1.2.3", "@img/sharp-libvips-linux-arm": "1.2.3", "@img/sharp-libvips-linux-arm64": "1.2.3", "@img/sharp-libvips-linux-ppc64": "1.2.3", "@img/sharp-libvips-linux-s390x": "1.2.3", "@img/sharp-libvips-linux-x64": "1.2.3", "@img/sharp-libvips-linuxmusl-arm64": "1.2.3", "@img/sharp-libvips-linuxmusl-x64": "1.2.3", "@img/sharp-linux-arm": "0.34.4", "@img/sharp-linux-arm64": "0.34.4", "@img/sharp-linux-ppc64": "0.34.4", "@img/sharp-linux-s390x": "0.34.4", "@img/sharp-linux-x64": "0.34.4", "@img/sharp-linuxmusl-arm64": "0.34.4", "@img/sharp-linuxmusl-x64": "0.34.4", "@img/sharp-wasm32": "0.34.4", "@img/sharp-win32-arm64": "0.34.4", "@img/sharp-win32-ia32": "0.34.4", "@img/sharp-win32-x64": "0.34.4" } }, "sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA=="], + "set-cookie-parser": ["set-cookie-parser@2.7.2", "", {}, "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw=="], "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], - "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], - - "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], - - "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], - - "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], - "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], - "stable-hash": ["stable-hash@0.0.5", "", {}, "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA=="], - - "stop-iteration-iterator": ["stop-iteration-iterator@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" } }, "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ=="], - "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "string.prototype.includes": ["string.prototype.includes@2.0.1", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3" } }, "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg=="], - - "string.prototype.matchall": ["string.prototype.matchall@4.0.12", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA=="], - - "string.prototype.repeat": ["string.prototype.repeat@1.0.0", "", { "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" } }, "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w=="], - - "string.prototype.trim": ["string.prototype.trim@1.2.10", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" } }, "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA=="], - - "string.prototype.trimend": ["string.prototype.trimend@1.0.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ=="], - - "string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="], - "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="], - "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], - "styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="], - "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], - "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], - "tailwind-merge": ["tailwind-merge@3.3.1", "", {}, "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g=="], "tailwindcss": ["tailwindcss@4.1.14", "", {}, "sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA=="], @@ -917,37 +631,21 @@ "tar": ["tar@7.5.1", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g=="], - "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], - - "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], - "ts-api-utils": ["ts-api-utils@2.1.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ=="], - - "tsconfig-paths": ["tsconfig-paths@3.15.0", "", { "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg=="], + "ts-api-utils": ["ts-api-utils@2.5.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA=="], "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], - "typed-array-buffer": ["typed-array-buffer@1.0.3", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="], - - "typed-array-byte-length": ["typed-array-byte-length@1.0.3", "", { "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.14" } }, "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg=="], - - "typed-array-byte-offset": ["typed-array-byte-offset@1.0.4", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.15", "reflect.getprototypeof": "^1.0.9" } }, "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ=="], - - "typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="], - "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "typescript-eslint": ["typescript-eslint@8.50.1", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.50.1", "@typescript-eslint/parser": "8.50.1", "@typescript-eslint/typescript-estree": "8.50.1", "@typescript-eslint/utils": "8.50.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-ytTHO+SoYSbhAH9CrYnMhiLx8To6PSSvqnvXyPUgPETCvB6eBKmTI9w6XMPS3HsBRGkwTVBX+urA8dYQx6bHfQ=="], - - "unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="], + "typescript-eslint": ["typescript-eslint@8.71.1", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.71.1", "@typescript-eslint/parser": "8.71.1", "@typescript-eslint/typescript-estree": "8.71.1", "@typescript-eslint/utils": "8.71.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-oiNVPC3/NbV1FpaHU07l8O6ynqG9v4PAiW2WvTrAmZdR0f2HI/gE668ElMLCK7Xbsu5k2fK5C4fXNiq05j7/nQ=="], "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], - "unrs-resolver": ["unrs-resolver@1.11.1", "", { "dependencies": { "napi-postinstall": "^0.3.0" }, "optionalDependencies": { "@unrs/resolver-binding-android-arm-eabi": "1.11.1", "@unrs/resolver-binding-android-arm64": "1.11.1", "@unrs/resolver-binding-darwin-arm64": "1.11.1", "@unrs/resolver-binding-darwin-x64": "1.11.1", "@unrs/resolver-binding-freebsd-x64": "1.11.1", "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-musl": "1.11.1", "@unrs/resolver-binding-wasm32-wasi": "1.11.1", "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg=="], - - "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], + "update-browserslist-db": ["update-browserslist-db@1.3.4", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A=="], "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], @@ -955,22 +653,20 @@ "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], - "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], - - "which-boxed-primitive": ["which-boxed-primitive@1.1.1", "", { "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", "is-number-object": "^1.1.1", "is-string": "^1.1.1", "is-symbol": "^1.1.1" } }, "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA=="], + "viem": ["viem@2.56.0", "", { "dependencies": { "@noble/curves": "1.9.1", "@noble/hashes": "1.8.0", "@scure/bip32": "1.7.0", "@scure/bip39": "1.6.0", "abitype": "1.2.3", "isows": "1.0.7", "ox": "0.14.34", "ws": "8.21.0" }, "peerDependencies": { "typescript": ">=5.0.4" }, "optionalPeers": ["typescript"] }, "sha512-JmkgIk4jN+im4oguLxwPv19pwSaGH9kcGSq25Ilm55106ULBBMNR3eWKKA0wZoeyLPSHIiOwZ4sGceEYEIq7LA=="], - "which-builtin-type": ["which-builtin-type@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.1.0", "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", "which-typed-array": "^1.1.16" } }, "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q=="], + "vite": ["vite@8.3.3", "", { "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.7", "postcss": "^8.5.28", "rolldown": "~1.2.11", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.7.1", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cTAldKPImjg6c+gk48U19POPn3GCBzZwpdsN8ZMEEcbpes+6/wvfqUd0C2y3qYY4wsj8PwgFwrZ/1jBPVttMSg=="], - "which-collection": ["which-collection@1.0.2", "", { "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", "is-weakmap": "^2.0.2", "is-weakset": "^2.0.3" } }, "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw=="], + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], "which-module": ["which-module@2.0.1", "", {}, "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="], - "which-typed-array": ["which-typed-array@1.1.19", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw=="], - "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], "wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], + "ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="], + "y18n": ["y18n@4.0.3", "", {}, "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="], "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], @@ -981,19 +677,15 @@ "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], - "zod": ["zod@4.2.1", "", {}, "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw=="], + "zod": ["zod@4.6.5", "", {}, "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q=="], "zod-validation-error": ["zod-validation-error@4.0.2", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="], - "@babel/core/json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], - - "@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], - - "@emnapi/core/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], - "@emnapi/runtime/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], - "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + "@tailwindcss/node/lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.5.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg=="], @@ -1007,47 +699,47 @@ "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "@tybys/wasm-util/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@typescript-eslint/eslint-plugin/@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], - "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.12", "", {}, "sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg=="], - "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@10.2.6", "", { "dependencies": { "brace-expansion": "^5.0.8" } }, "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A=="], - "@typescript-eslint/typescript-estree/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "@typescript-eslint/typescript-estree/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], - "browserslist/caniuse-lite": ["caniuse-lite@1.0.30001761", "", {}, "sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g=="], + "@typescript-eslint/utils/@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.10.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg=="], - "eslint-config-next/globals": ["globals@16.4.0", "", {}, "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw=="], + "@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="], - "eslint-import-resolver-node/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + "lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], - "eslint-module-utils/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + "prettier-plugin-sort-imports-desc/prettier": ["prettier@2.8.8", "", { "bin": { "prettier": "bin-prettier.js" } }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], - "eslint-plugin-import/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + "prettier-plugin-sort-imports-desc/typescript": ["typescript@4.9.5", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g=="], - "eslint-plugin-react/resolve": ["resolve@2.0.0-next.5", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA=="], + "vite/postcss": ["postcss@8.5.29", "", { "dependencies": { "nanoid": "^3.3.19", "picocolors": "^1.1.1", "source-map-js": "^1.2.2" } }, "sha512-49cGhUbXj8Qenv0iTMxA1cFBzxXoctpC9Ujd77t1WcbJIr6nF/eI7g/8MgxrYldFRuAXvja7xQRwavoW7kgrxQ=="], - "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + "yargs/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], - "is-bun-module/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "@tailwindcss/node/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="], - "lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + "@tailwindcss/node/lightningcss/lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="], - "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "@tailwindcss/node/lightningcss/lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="], - "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], + "@tailwindcss/node/lightningcss/lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="], - "prettier-plugin-sort-imports-desc/prettier": ["prettier@2.8.8", "", { "bin": { "prettier": "bin-prettier.js" } }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], + "@tailwindcss/node/lightningcss/lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="], - "prettier-plugin-sort-imports-desc/typescript": ["typescript@4.9.5", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g=="], + "@tailwindcss/node/lightningcss/lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="], - "sharp/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "@tailwindcss/node/lightningcss/lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="], - "string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "@tailwindcss/node/lightningcss/lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="], - "yargs/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], + "@tailwindcss/node/lightningcss/lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="], - "@emnapi/core/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@tailwindcss/node/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], @@ -1065,7 +757,13 @@ "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@5.0.12", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ=="], + + "@typescript-eslint/utils/@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + + "vite/postcss/nanoid": ["nanoid@3.3.20", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ=="], + + "vite/postcss/source-map-js": ["source-map-js@1.2.2", "", {}, "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw=="], "yargs/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], @@ -1079,6 +777,8 @@ "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@typescript-eslint/typescript-estree/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + "yargs/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], diff --git a/docs/connector-bridge.md b/docs/connector-bridge.md index c1a3134..b27aaaa 100644 --- a/docs/connector-bridge.md +++ b/docs/connector-bridge.md @@ -1,6 +1,7 @@ # Native connector and bridge flow -The authenticator accepts World ID connector query parameters at `/verify` or `/`. +The authenticator accepts World ID connector query parameters at `/`. +Old `/verify` links redirect to `/`, preserving their connector parameters. This code is independent of the relying-party demo's request generation. - `src/lib/requests/connector.ts`: strict `i`/`k` parsing, official bridge allowlist, @@ -15,7 +16,17 @@ This code is independent of the relying-party demo's request generation. drawer can review. No signed request fields are rewritten to fit available credentials. - `CredentialRequestSheet`: opens automatically, shows the actual requested schemas, blocks unsatisfied or unsupported requests, and requires approval before generation. - The proof stays visible for review before explicit encrypted delivery/return. + Approval generates and automatically delivers the encrypted proof response. A + failed delivery retains the same proof for an explicit retry; it does not repeat + enrollment or proof generation. Successful delivery follows the return URL when supplied. + +Credential routing checks the vault before offering enrollment. A missing Selfie +credential opens setup automatically only when Selfie is required by the request +and enrollment can satisfy the complete constraint tree. Requests accepting +Selfie or another issuer show an explicit Selfie choice. Orb-only requests never +fall back to Selfie: they use an eligible Orb credential or explain that one is +missing. The sheet displays the AND/OR requirements and can recheck the vault; +it does not implement Orb enrollment or transfer from another authenticator. The connector query is removed from browser history after capture, and the app uses `Referrer-Policy: no-referrer`. Reloading that cleaned page loses the in-memory request; diff --git a/docs/local-tee-connect.md b/docs/local-tee-connect.md new file mode 100644 index 0000000..37c9821 --- /dev/null +++ b/docs/local-tee-connect.md @@ -0,0 +1,64 @@ +# Local TEE connection + +The demo supplies its configured access token automatically. There are no token +input fields. Clicking **Issue selfie credential** (or **Demo challenge**) opens +the camera and starts this independent connection sequence: + +1. `POST /api/tee-admission` obtains the local demo token from the development backend. +2. `POST http://127.0.0.1:8010/v1/connect` sends it in the Authorization header. +3. The response appears in the **TEE connection** box, separate from **Camera / ONNX**. + +**Retry TEE connection** fetches the configured token again without restarting +the camera. Leaving the demo cancels an in-flight admission/connection request. +Tokens are never put in logs, persistent browser storage, URLs or the JS bundle. + +## Development setup + +Generate the private ten-minute token and start `di-local-face-host` from the +sibling `biometrics-tee` repository using its `docs/local-face-images.md`. +Configure this demo's `.env.local` to use the **same file and browser origin**: + +```sh +LOCAL_TEE_TOKEN_FILE=/private/path/token.json +LOCAL_TEE_ORIGIN=http://localhost:3100 +VITE_TEE_BASE_URL=http://127.0.0.1:8010 +``` + +Run `bun run dev`. The development launcher enables `LOCAL_TEE_DEMO_ADMISSION=1` +for its backend. The provider is disabled by default and always disabled when +`NODE_ENV=production`. It requires the exact configured HTTP loopback origin, +POST, JSON content type and `Sec-Fetch-Site: same-origin`. Responses are no-store. +Open `http://localhost:3100`, unlock, and use **Developer menu → Issue selfie credential**. + +This local provider intentionally serves the shared demo credential to callers +on the configured demo origin. It is not the production proxy's user/device +authentication. Do not expose or tunnel this development provider publicly. +The production proxy will replace token provisioning and authenticate callers. + +The provider reads the private token file on each request and refuses invalid, +expired or permissively readable files. It does not extend token expiry or mint +credentials the TEE has not accepted. To rotate, generate a new token file, point +both services at it, and restart them. Browser users do not need to paste tokens. +Never place the token itself in `VITE_*` or source code. + +## Results + +Each browser network operation has a five-second deadline and a 4 KiB response +limit. The client refuses redirects and invalid/expired responses. `connect` +also validates protocol version, local mode and face-processing capability. + +- Admission provider **503**: local token is absent, invalid or expired; no TEE request is sent. +- TEE **403**: token is wrong/expired or the supplied Origin is not allowed. +- TEE **503**: authorization succeeded, but face processing is unavailable. +- TEE **200**: accepted only with a compatible response advertising a ready face worker. + +The local host now launches the real biometric worker in Docker. Once the worker +is ready, authorized connect returns **200**; worker failure returns **503**. +The authenticated image API runs the vanilla-selfie pipeline and marks results +`mode: local-docker`, `attested: false`. No image is uploaded by the browser yet. +Production attestation, encryption, enclave integration and the camera upload +action remain pending. +Every eventual image upload must carry authorization again; the local host +already enforces that rule. Production builds keep uploads disabled. + +Tests: `bun test tests/tee-admission.test.ts tests/tee-connection.test.ts`. diff --git a/docs/rgbnet-browser.md b/docs/rgbnet-browser.md new file mode 100644 index 0000000..9e236d8 --- /dev/null +++ b/docs/rgbnet-browser.md @@ -0,0 +1,97 @@ +# RGBNet browser demo + +`/selfie-demo` runs RGBNet locally in a dedicated Web Worker, draws a mirrored face +box and five landmarks, and supplies positioning guidance. Unlock the existing +authenticator first. Other camera flows remain preview-only. Positioning does not +establish image quality, identity, eye tracking or liveness; synthetic enrollment +and the unconnected TEE transport are unchanged. + +## Model setup + +```sh +bun install +bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx +bun run dev +``` + +Open `http://localhost:3100/selfie-demo`. The setup script installs only the detector +in `public/models/rgbnet.onnx`, after checking its byte length and SHA-256 against +`src/components/selfie-check/rgbnet-model.json`. The worker repeats these checks. +The model file is ignored by Git: install it before building a deployable demo. +No Hugging Face token or other model is included in the browser bundle. + +The initial artifact came from the local `world-app-ios` checkout at +`Sources/FaceAuthLibrary/Sources/FaceEngineFaceAuthModel/MLModels/RGBNet.onnx`. +That file's last change is commit `f468fbf5330b44604a803c7a39b542f50f0dd345` +(Face Engine 2.18.2 update). Its SHA-256 is +`35e9bdee626e16721e4566d1e552ad369d8334658b7893ee62cf3a026f1c0d06`. +This is an explicit artifact pin, not a claim that it matches the recommended +2.20.0 Hugging Face revision; that mapping still requires authenticated access. + +## Processing and language choice + +`rgbnet.ts` implements RGBNet's 256×256 fixed-kernel bilinear resize, RGB channel +mean subtraction, NCHW layout, 2,688 anchors, box/landmark decoding, confidence +threshold 0.8 and pixel-space NMS threshold 0.4. The resize reproduces the native +vertical-first u8 rounding and quantized filter weights; browser Canvas scaling +is deliberately not used for resizing. Canvas only extracts original pixels. + +The reference is `worldcoin/biometric-engines` commit +`5bd0d4650e2e9b45af4f445dfcff35a9630a139f`, specifically +`face_engine/src/nodes/detection/{rgbnet_detector,nms}.rs` and +`utils/src/image/operations/affine.rs`. + +Keep this small adapter in TypeScript for the demo. ONNX Runtime Web 1.30.0 already +executes inference with its Wasm CPU backend, SIMD and one thread, without requiring +cross-origin isolation. Compiling all of Face Engine into Wasm is unnecessary for +this detector. If we later share the full QA pipeline, extract a maintained Rust +processing library usable by both native and Wasm targets instead of duplicating +more of Face Engine in TypeScript. Compiling Rust to browser Wasm would still be +client-side execution; authoritative checks belong in the TEE. + +## Diagnostics and failure behavior + +- The demo log reports download, hash verification, session creation, warm-up, + readiness, timing summaries every two seconds, failures and worker termination. +- The checked **Detailed ONNX logs in browser console** toggle enables ONNX's + verbose initialization/graph logs plus every frame's extraction, preprocessing, + inference, decoding and tensor/bitmap disposal. Changing it restarts the worker. + ONNX's own Wasm logger can write informational messages to console.error; use + its `[I:onnxruntime]` / `[V:onnxruntime]` / `[E:onnxruntime]` severity prefix. +- Application diagnostics contain timings and model/runtime metadata, never + frames, tensors, boxes, landmarks, embeddings or credentials. Logs stay local. +- Only one frame can be in flight. Completion schedules the next capture after + 100 ms. Frames are never queued. Startup has a 45-second deadline, fetching a + 20-second deadline, and capture/inference a 10-second deadline. A stalled camera + also fails after 10 seconds. Failure clears the overlay and exposes retry. +- Unmounting, camera interruption or hiding the tab terminates the detector worker. + Worker termination releases its Wasm session even if inference is hung. + +## Validation + +`bun test tests/rgbnet.test.ts` checks native reference fixtures, malformed model +outputs, confidence filtering and mirrored object-cover geometry. Existing camera +tests cover camera cancellation and hidden-tab cleanup. + +`tests/fixtures/rgbnet-resize.json` contains SHA-256 hashes of little-endian f32 +tensors produced by native `fast_image_resize` 5.5.0 using +`ResizeAlg::Interpolation(FilterType::Bilinear)`, `PixelType::U8x3`, then RGB means +`[104,117,123]` and NCHW layout. Input RGBA byte `i` is +`(i * 37 + floor(i / 13)) % 256`; alpha is ignored. Sizes cover identity, portrait, +landscape, upsampling and non-integral scale ratios. + +`tests/fixtures/rgbnet-decode.json` supplies sparse nonzero output rows and the +expected detections produced by the native Rust RGBNet decode/filter methods and +NMS from the pinned commit. Other rows are zero. This checks the processing +functions, not the full Face Engine pipeline. + +Agent-run Chromium checks additionally exercised actual model inference, missing +model/retry, worker cleanup, and the overlay at desktop/mobile viewport sizes. +On the public scikit-image astronaut sample, browser inference with this TS adapter +and native ONNX Runtime with the Rust reference processing found one face; +maximum normalized box/landmark difference was about `5.96e-8`. This is a regression +comparison on one image, not a biometric accuracy or mobile performance evaluation. + +The distributed ONNX Wasm asset is about 14.2 MB uncompressed (3.7 MB gzip), plus +the 1.7 MB model. The worker loads only when face detection is enabled. Serve +compressed, cacheable assets when deploying the demo. diff --git a/docs/selfie-capture-plan.md b/docs/selfie-capture-plan.md new file mode 100644 index 0000000..b26a831 --- /dev/null +++ b/docs/selfie-capture-plan.md @@ -0,0 +1,154 @@ +# Browser capture and short challenge plan + +Status: proposed implementation, not an implemented liveness or issuance flow. + +## Existing capability + +`/selfie-demo` has local RGBNet inference, face boxes/landmarks, positioning guidance, +runtime diagnostics and worker lifecycle handling. The detector does not record a +sequence. `connect()` is still a stub: it does not verify attestation, establish an +enclave session or upload captures. Credential issuance currently uses synthetic +face data. + +## Browser models and source of the decision + +[Tobi, October 2](https://tfh.enterprise.slack.com/archives/C0ARSRLVCV7/p1790981917899729) +said face detection and QA models were acceptable in the open from the team's +perspective, except the TFH occlusion model. This is category-level guidance, not +an individually enumerated artifact approval or a claim of completed security review. +He also said the team did not have capacity to support Face Engine Wasm compilation. + +Mapping the QA category to the +[2.20.0 configuration](https://github.com/worldcoin/app-backend-app-config/blob/main/face-auth-config/face-engine/ios/default/deepFace/2.20.0.yaml): + +| Model | Config node | Browser purpose | +| ---------------------------- | ------------------------- | -------------------------------------------------------------------------------------------------------- | +| RGBNet | RGBNet | Locate face and five alignment landmarks; already integrated. | +| HeadPose | HeadPoseModel | Estimate yaw, pitch and roll; frontal capture guidance and measurements for a new head-motion evaluator. | +| FaceExpressionNeutrality | ExpressionNeutralityModel | Neutral expression / closed-eye quality feedback. | +| FaceImageQuality (LightQNet) | LightQNet | Face image quality score; not LightGuard and not a liveness verdict. | +| External glasses detector | Separate browser adapter | Early glasses feedback; does not replace full TEE occlusion checks. | + +[Gabi, September 8](https://tfh.enterprise.slack.com/archives/C0ARSRLVCV7/p1788863153310809) +explicitly discussed pose, expression and LightQNet. She noted LightQNet's public +MIT weights and the need to distribute the license/notice with the ONNX artifact. +[Tobi, October 5](https://tfh.enterprise.slack.com/archives/C0ARSRLVCV7/p1791222799827129) +recommended a lightweight glasses detector, following +[Ashima's comparison](https://tfh.enterprise.slack.com/archives/C0ARSRLVCV7/p1790634973889309) +of `mantasu/glasses-detector`. Its exact variant/export remains to be pinned. + +Exposure, sharpness, lighting, contrast, color and bounding-box checks also need +reproduction; many are deterministic image-processing routines, not additional +models. The relevant crop/alignment and thresholds matter as much as the weights. +The cited config is deepFace: enrollment must use its appropriate approved config, +not silently adopt verification settings. Resolve the existing RGBNet artifact's +release mapping before establishing the final shared browser/TEE model manifest. + +Keep TFH FaceOcclusion, FaceSpoofClassifier/FAS and embedding generation inside the +TEE. Do not infer permission for every model in the release manifest (for example +MeshLandmarks, MeshExpressions or LightGuard) from their presence in that manifest. + +## First challenge proposal + +Use a small head turn, then return to center, with a target of **three seconds of +capture**. The server/TEE selects direction, a bounded target angle and cue timing. +Start with approximately 10–15 degrees of horizontal movement, to be calibrated +against users/devices before setting acceptance thresholds. Display a moving target +with the instruction to turn the head toward it; an eyes-only dot-following task +cannot be scored with HeadPose. + +This deliberately uses the existing pose measurement model. Sequence scoring is +new deterministic code: establish a frontal pose reference, detect the requested +signed yaw change in order, then detect return to center. Allow a measured reaction +window and reject insufficient evidence. Pose QA for a neutral enrollment frame +must not reject the very movement requested by the challenge; use separate rules +for reference frames and challenge-response frames without relaxing spoof policy. + +Random direction/angle/timing has limited human-action entropy. A 128-bit session +nonce does not turn a left/right action into a 128-bit liveness proof. Evaluate this +as challenge compliance plus the existing FAS pipeline, not established resistance +to injected or generated video. The previous Slack agreement was static FAS in the +TEE, not an already-supported active gaze/head challenge. + +## Capture sequence + +1. On camera startup, load models and prepare verified TEE access concurrently. + Show positioning/quality guidance. No challenge timer runs during model download + or camera permission. Track those delays separately in total user time. +2. Require one usable, front-facing face and a ready capture pipeline. Reserve a + bounded in-memory capture buffer. Avoid multi-point gaze calibration. Measure + how long readiness takes instead of promising a fixed 500 ms. +3. Once ready, obtain a fresh challenge from the verifier. Bind its one-time ID, + random nonce, action parameters, policy version and expiry to the enclave session, + credential subject and enrollment/request ID. The enclave must originate or + authenticate this challenge; an arbitrary browser-supplied challenge is invalid. +4. Start sampling before displaying the first movement cue. Use one monotonic clock + for actual cue presentation times and frame receipt times, also recording video + media timestamps and contiguous sequence numbers. These are client claims, not + trusted proof of camera origin or time. Continue sampling during cue display and + return to center; stop at the bounded deadline. +5. Encrypt the capture and manifest to the verified enclave key. Submit, evaluate + and show the result. Erase transient frames after completion, failure or cancel; + a retry receives a new challenge rather than reusing prior evidence. + +Proposed initial transport: **ordered JPEG frames**, not a live video codec stack. +Target 10 frames/second for three seconds (about 30 frames), initially 640×480 for +motion evaluation. Preserve a full-resolution frontal frame from the same capture +for enrollment QA/embedding. Validate this resolution/cadence against the actual +model contract and device performance. Set hard count, encoded-byte, decoded-pixel +and duration limits on both ends; initial demo budgets can be 40 motion frames and +8 MiB total including the reference frame. These are starting budgets, not measured +bandwidth or security guarantees. + +JPEG sampling reuses single-image decoding in the worker and avoids introducing +WebRTC/video decoding. It costs more bandwidth than a compressed video; measure +total encode/upload time before committing to production. Start with one bounded +encrypted batch. Add authenticated chunked upload during capture only if measured +latency requires it; do not add a second transport for the initial demo. + +Capture sampling and cue animation must not wait for local model inference. The +capture coordinator owns frames/times; the inference worker consumes selected +frames with backpressure. If sampling/encoding cannot keep up, record gaps and fail +the attempt according to policy; never fabricate timestamps or queue indefinitely. + +## TEE evaluation and binding + +- Authenticate the challenge/session and subject/request binding; enforce expiry, + one-time consumption and replay protection at the verifier. +- Validate and bound payloads before decoding; verify frame count/order, decode + limits and submitted capture-manifest integrity. Client metadata remains untrusted. +- Run the correct native Face Engine QA, occlusion and FAS policy. Evaluate the + pose sequence against the server-selected task using measurements from received + images, never browser-reported scores. Existing single-image worker operations + require a new sequence orchestrator for this task. +- Check face continuity across the challenge/reference frames under an explicit + policy; do not let a good unrelated still satisfy the enrollment part of a clip. +- Produce evidence binding the result, challenge, subject/request, capture digest, + model/config/policy versions and protected enrollment outputs. The issuer must + verify that binding before credential issuance. + +An encrypted channel and challenge binding protect routing and replay semantics; +they cannot establish that an untrusted browser supplied authentic live-camera +pixels. Spoof/injection evaluation remains a separate acceptance requirement. + +## Implementation order and acceptance + +1. Pin compatible artifacts/configs. Add HeadPose, expression and quality feedback, + with the needed non-model QA and model-specific crops/normalization. Use native + reference fixtures for each adapter and include required model notices. +2. Add a capture coordinator and head-turn UI with bounded frame storage, timestamps, + visible cancel/retry and privacy-safe stage/timing logs. Until the backend exists, + explicitly label any challenge generated by the local demo server as development + only; it cannot authorize a credential. +3. Implement real attestation/session setup, challenge issuance and encrypted capture + submission in the browser and di-migration-tee. +4. Add native sequence evaluation, continuity checks, policy-specific QA/FAS, and + evidence verification/issuance integration. Test wrong order, wrong direction, + missing frames, replay, subject/request substitution and cross-session evidence. +5. Measure cold/warm readiness, challenge duration, encoding, upload, enclave + evaluation and issuance separately on target phones. Validate genuine-user success + and spoof/injection resistance before treating this as a production liveness flow. + +The three-second clip is a UX target. Total completion includes setup and verification +and must be measured against an agreed CAPTCHA baseline; no existing measurement +establishes that the full flow meets the earlier CAPTCHA-plus-three-seconds budget. diff --git a/docs/selfie-enrollment.md b/docs/selfie-enrollment.md index a2cf16a..6687e3e 100644 --- a/docs/selfie-enrollment.md +++ b/docs/selfie-enrollment.md @@ -2,8 +2,13 @@ ## Implemented synthetic staging issuance -**Issue selfie credential** appears only in the initialized developer menu, below -faux issuance. It prepares schema 11 in the existing browser WalletKit, calls the +**Issue selfie credential** is available in the initialized developer menu, below +faux issuance. Missing-credential requests also enter `/selfie-check`, which opens +a continuous circular camera preview. There is no timed photo capture or automatic +issuance. Developer tools on that screen offer manual synthetic enrollment. The +preview is not saved or uploaded and stops on leaving or hiding the tab. + +Issuance prepares schema 11 in the existing browser WalletKit, calls the localhost-only `/api/selfie-credential` route, polls staging, verifies the returned credential's signature against the current staging schema registry and its subject, and stores it with the browser-held blinding factor. An active schema-11 credential @@ -29,7 +34,8 @@ using `FaceVector::random_normalized`; the preview fixture below is separate. Only the staging enrollment endpoint is enabled. Like Orb Tools, this fixture uses `staging-test-token` headers, a synthetic associated-data hash, and omits attested -share hashes. It has no actual camera capture, liveness check, or recoverable PCP. +share hashes. The issuer does not consume the captured image and has no liveness +check or recoverable PCP. A private operation file under `~/.local/state/web-authenticator/synthetic-selfie-issuance` contains a separate diff --git a/docs/selfie-flow-comparison.md b/docs/selfie-flow-comparison.md new file mode 100644 index 0000000..a83537c --- /dev/null +++ b/docs/selfie-flow-comparison.md @@ -0,0 +1,235 @@ +# Selfie Check: browser demo versus iOS + +Source review: October 1, 2026. Browser diagrams describe this working tree, +including automatic proof delivery after approval. iOS diagrams describe the +local `world-app-ios` checkout's external v4 Selfie Check flow, not its sandbox +outcomes, Mini Apps, or DeepFace challenge flow. No iOS build was run. + +## Browser demo: concrete code path + +```mermaid +flowchart TD + RP["RP / IDKit creates request and deeplink"] + Entry["src/main.tsx
      AuthenticatorScreen + CredentialRequestSheet"] + Load["src/lib/requests/incoming-request.ts
      loadIncomingRequest()
      parseConnector → openBridge → parsePayload → validateSignature"] + Consent["RequestPreflight.tsx
      Share → passkey unlock / wallet initialization"] + Session["AuthenticatorSession.tsx
      wallet + incoming request retained in this tab"] + Check{"checkRequestCredentials()
      credentialAvailability()"} + Setup["app/selfie-check/page.tsx
      components/selfie-check/SelfieCheckScreen.tsx"] + Capture["SelfieCamera.tsx + camera-capture.ts
      continuous circular preview
      manual synthetic issuance in Developer tools"] + Issue["Issue demo selfie credential
      lib/selfie-issuance.ts: issueSelfieCredential()
      wallet.prepareCredential(11)"] + API["POST app/api/selfie-credential/route.ts
      lib/selfie-issuer-server.ts: issueOrPollSelfie()"] + Helper["server/face-enrollment-helper/src/main.rs
      shares: random synthetic vector + encrypted shares
      authenticate: Oxide ZKP header"] + Issuer["Staging face signup service
      submit / poll with staging integrity exception"] + Import["Helper verifies credential
      issueSelfieCredential → wallet.storeCredential()"] + Approve["CredentialRequestSheet.tsx
      Approve and share"] + Proof["approve()
      revalidate → wallet.generateProof()
      then returnToApp(generatedProof)"] + Deliver["incoming.deliver()
      bridge.ts: send()
      AES-GCM → PUT bridge response"] + Verify["demo/src/main.ts → /api/verify
      VerificationSession.verify()
      contract-verifier.ts: verifyCredentialProof()
      staging contract + replay checks"] + Block["Remain in drawer / show unsupported requirement"] + RP --> Entry --> Load --> Consent --> Session --> Check + Check -->|satisfied| Approve + Check -->|missing selfie can satisfy request| Setup --> Capture --> Issue --> API --> Helper --> Issuer --> Import + Import -->|same-tab replace /; check vault again| Check + Check -->|other missing requirements| Block + Approve --> Proof --> Deliver --> Verify +``` + +Unsupported presence/identity-attestation requirements remain blocked. A request +with a usable alternative credential does not need selfie enrollment. An active +selfie credential outside the RP's date bounds is not repaired by this demo issuer. + +The browser receives a real signed staging credential and produces a real proof, +but enrollment input is synthetic. Missing-credential setup keeps a circular camera +preview live until interrupted. It does not take a photo or automatically issue a +credential. Developer tools offer manual synthetic issuance. Video is not saved, +uploaded or used by the issuer. There is no face embedding derived from the +image, live-face verification, Face PCP, or Flamingo call in this path. The +source's image/model metadata does not mean inference ran. + +The issuer helper runs in a localhost server process, not browser WASM. The +response capability and unlocked wallet survive internal navigation through the +root session provider; they do not survive a reload. Failed proof delivery retains +the generated proof for an explicit retry, without enrolling or generating again. + +## iOS: concrete code path + +Most feature paths below are under `Sources/WorldAppLegacy/Sources/`; +`FaceAuthLibrary` is a separate package under `Sources/FaceAuthLibrary/`. + +```mermaid +flowchart TD + RP["RP / IDKit request → universal link"] + Entry["WorldIDAppLib/IDApp/IDAppReducer+UniversalLinks.swift
      RelyingPartyResponder preload / routing"] + Consent["SelfieCheck/Screens/SelfieCheckRoot.swift
      welcome consent → resolveFlowIfNeeded()"] + Check{"FaceCredentialIssuer.hasFaceCredential()
      usable local face package?"} + Enroll["FaceAuthGatekeeper
      enrollment configuration"] + Returning["FaceAuthGatekeeper
      verification configuration + enrolled reference"] + Camera["FaceAuthLibrary/Service/CaptureService.swift
      AVCaptureSession + front camera
      Views/FaceAuthCameraPreview.swift"] + Engine["FaceEngineFaceAuthModel/MobileFaceEngineWrapper.swift
      runCapturedImageAnalyzer()
      runTemplateGenerator() / compareEmbeddings()
      shared native Rust Face Engine via Oxide"] + Result{"FaceAuth result"} + Issue["SelfieCheckVerifying.swift
      faceCredentialIssuer.enroll()
      FaceCredentialIssuer/LiveFaceCredentialIssuerV4.swift"] + Prepare["authenticator.issuer(.face).prepare()
      faceEnrollment.generateFacePcp()
      embedding quantization + AMPC shares in Oxide"] + Custody["integritySigningService.mintSession()
      buildFacePcpTarball() → saveFacePcp()"] + Submit["enrollFacePcpWithIntegritySigner()
      face signup service → pollForCredential()"] + Store["faceIssuer.store()
      updateFacePcpCredential()"] + Proof["SelfieCheckRoot.completeSelfieCheckFlow() → submitProof()
      SelfieCheckRoot+Bridge.verifyWithBridge()
      authenticator.generateProof() + disclosed claims"] + Integrity["AnonymousWorldIDBridgeClient.uploadBridgePayload()
      claims-inclusive digest → integrityBundle()
      attested key + Apple App Attest assertion"] + Delivery["WorldIDBridgeCryptoService.encrypt()
      uploadBridgeResponse() → bridge → RP"] + RP --> Entry --> Consent --> Check + Check -->|no| Enroll --> Camera + Check -->|yes| Returning --> Camera + Camera --> Engine --> Result + Result -->|enrollmentSuccessful: embedding + image| Issue --> Prepare --> Custody --> Submit --> Store --> Proof + Result -->|verificationSuccessful| Proof + Proof --> Integrity --> Delivery +``` + +For this external v4 flow, iOS continues from enrollment/face verification into +proof generation and delivery automatically. It does not require this demo's +separate post-enrollment proof-approval drawer. Failed delivery can be retried +without repeating enrollment. The native retry path can rebuild the proof from +the retained request; our browser retry resends the already-generated proof. + +iOS returns `userPresenceCompleted: true` after the face flow and binds disclosed +claims into its integrity digest. Its v4 bridge client fails if integrity bundle +generation fails. Our browser currently sends no equivalent integrity bundle and +does not claim completed user presence. The RP's verification service is outside +the iOS app; choosing its endpoint is an RP integration decision. + +## Broad systems and the decided browser target + +```mermaid +flowchart TD + subgraph Current["Browser demo today"] + B["Browser
      passkey + WalletKit WASM
      credential storage + proofs"] + H["Local Next.js server + Rust helper
      synthetic enrollment input"] + S["Staging face signup service"] + BR["World ID bridge → demo RP
      direct staging-contract verification"] + B -->|missing credential| H --> S + S -->|signed credential| B + B -->|encrypted proof response| BR + end + subgraph Native["iOS Selfie Check today"] + I["iOS device
      camera + Face Engine + Oxide
      embedding, shares, PCP + WalletKit"] + A["Integrity service / App Attest"] + IS["Face signup service"] + IR["World ID bridge → RP verifier"] + I <-->|enrollment / response evidence| A + I -->|encrypted shares + bound enrollment| IS + IS -->|signed credential| I + I -->|proof + integrity bundle, bridge-encrypted| IR + end + subgraph Target["Decided browser architecture — not implemented"] + W["Browser
      camera + guidance + WalletKit
      encrypted channel + PCP custody"] + T["Flamingo TEE
      authoritative model checks / embedding
      quantize, generate and encrypt shares
      attest bound output"] + TS["Face signup service
      verify TEE evidence before acceptance"] + WR["World ID bridge → RP verifier
      accepted response-integrity contract still needed"] + W -.->|images encrypted to a verified enclave key| T + T -.->|bound enrollment output; submission route TBD| TS + T -.->|user-encrypted custody data| W + TS -.->|signed credential| W + W -.->|proof + agreed integrity evidence| WR + end +``` + +TEE image encryption is separate from bridge response encryption. The latter +already works in our demo; it does not establish a trusted channel to an enclave. +Moving embedding/share generation to the TEE does not by itself prove camera +provenance or solve RP response integrity. Promon integration remains separate +work; this diagram does not claim a deployed Promon evidence contract. + +## The five material differences + +| Area | Browser today | iOS | Browser target | +| ---------------- | ---------------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| Returning user | Existing credential goes straight to proof approval | Live face verification against enrolled reference | Add live capture and the agreed TEE reference check | +| First enrollment | Local helper generates synthetic input | Device generates real embedding and shares | TEE generates real embedding and shares | +| Custody | Encrypted credential vault, no Face PCP | Encrypted Face PCP and credential association | Portable PCP custody APIs + browser persistence/recovery | +| Evidence | Staging admission exception; no response integrity bundle | Enrollment integrity session and response App Attest bundle | TEE enrollment evidence plus a separately agreed web response-integrity solution | +| User flow | Share → optional demo issuance → approve proof → auto-send | Consent → capture/verify or enroll → auto-submit proof | Same-tab capture/enrollment continuation; final approval policy can be simplified separately | + +## Source entry points + +- Browser request/UI: [CredentialRequestSheet](../src/components/CredentialRequestSheet.tsx), + [SelfieCheckScreen](../src/components/selfie-check/SelfieCheckScreen.tsx), + [incoming request](../src/lib/requests/incoming-request.ts), + [bridge](../src/lib/requests/bridge.ts). +- Browser issuance: [issueSelfieCredential](../src/lib/selfie-issuance.ts), + [server adapter](../src/lib/selfie-issuer-server.ts), + [native helper](../src/server/face-enrollment-helper/src/main.rs). +- iOS flow: [SelfieCheckRoot](../../world-app-ios/Sources/WorldAppLegacy/Sources/SelfieCheck/Screens/SelfieCheckRoot.swift), + [v4 issuer](../../world-app-ios/Sources/WorldAppLegacy/Sources/FaceCredentialIssuer/LiveFaceCredentialIssuerV4.swift), + [proof and claims](../../world-app-ios/Sources/WorldAppLegacy/Sources/SelfieCheck/Screens/SelfieCheckRoot+Bridge.swift), + [integrity and transport](../../world-app-ios/Sources/WorldAppLegacy/Sources/RelyingPartyResponderCore/WorldIDBridge/AnonymousWorldIDBridgeClient.swift). +- Planned upstream work: [WASM/upstream plan](wasm-upstream-plan.md). + +## What chooses the iOS capture + +The camera produces a video stream. `CaptureService.SampleBufferDelegate` uses +`bufferingNewest(1)`; `FaceAuthVerificationReducer` skips incoming frames while +an image is being processed and waits for camera reveal/startup readiness before +analysis. This avoids accumulating an old-frame processing queue. + +```mermaid +flowchart LR + Camera["Live camera frames"] --> Analyze["Face Engine analyzer"] + Analyze -->|validation fails| Guidance["Instruction text / positioning guidance"] + Guidance --> Camera + Analyze -->|passes| Select["Vanilla: current accepted frame
      LightGuard: timestamp-selected pair"] + Select --> Template["Template generator + configured checks"] + Template -->|success| Result["Accepted image + embedding"] + Template -->|retryable failure| Guidance +``` + +- **Vanilla:** the accepted `subjectFace` and its `currentImageProcessed` feed the + template generator. Successful enrollment returns that image and embedding. + The UI does not take an unrelated second still photo after analysis. +- **LightGuard:** after framing/stability checks, the app captures a sequence + while changing screen illumination. `categorizeLightGuardFrames()` considers + exposure and screen-presentation timing and separates frames that overlap the + transition. It selects `illuminated.last` and `unilluminated.first`. Configuration + chooses which accepted image feeds identity embedding generation. Frame counts, + startup delays and stability settings depend on the selected configuration; + source defaults are not proof of deployed settings. +- **Ownership:** iOS `FaceAuthLibrary` owns capture timing, frame selection and + instruction presentation. Shared native Face Engine supplies analyzer/model + results through Oxide bindings. WalletKit does not select camera frames. + +References: [stream buffering](../../world-app-ios/Sources/FaceAuthLibrary/Sources/FaceAuthLibrary/Service/CaptureService.swift), +[capture reducer](../../world-app-ios/Sources/FaceAuthLibrary/Sources/FaceAuthLibrary/Screens/FaceAuthVerification/FaceAuthVerificationReducer.swift), +[LightGuard frame selection](../../world-app-ios/Sources/FaceAuthLibrary/Sources/FaceAuthLibrary/Screens/FaceAuthVerification/FaceAuthVerificationState.swift). + +## Credential expiry versus a fresh selfie check + +The selfie credential already contains a signed `expires_at`. The owner of that +value is `signup-service-credential-signer`, not the browser or camera code. +`CredentialService::generate_credential()` calls `calculate_expiry()` using +`CREDENTIAL_EXPIRY_DAYS`; the current implementation rounds to UTC midnight on +the resulting date. Checked-in face deployment values on main specify **90 days** +for both staging and production. Runtime overrides were not inspected. + +Changing this policy requires an issuer-side change and applies to newly signed +credentials. A browser cannot edit the expiry of an existing signed credential. +Minute-level lifetimes also require changing the current day-based calculation. +WalletKit stores the expiry and excludes expired credentials; the verifier must +enforce the required validity bounds too. + +Three different lifetimes must stay separate: + +| Lifetime | Owner / meaning | +| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| Credential expiry | Issuer-signed enrollment credential validity; currently 90-day checked-in face policy | +| Proof request / challenge expiry | How long an RP request can be completed; the local Zoom checkout sets its challenge window to 2 hours | +| Live-check freshness | How recently a face check happened for the current operation; requires accepted request-bound evidence, not merely an unexpired enrollment credential | + +Zoom's 24-hour DynamoDB TTL is record cleanup, not selfie credential expiry. +If the requirement is to see the user's face again on each request, retain the +enrollment credential and perform a fresh bound face check, as the iOS flow does. +Deleting credentials on a browser timer cannot provide that assurance. + +References: [signer calculation](https://github.com/worldcoin/signup-service-credential-signer/blob/main/src/services/credential_service.rs), +[staging face config](https://github.com/worldcoin/signup-service-credential-signer/blob/main/deploy/stage/orb-stage-v2-eu-central-1/values-face-signup-service-credential-signer.yaml), +[production face config](https://github.com/worldcoin/signup-service-credential-signer/blob/main/deploy/prod/orb-prod-v2-eu-central-1/values-face-signup-service-credential-signer.yaml), +[WalletKit expiry filtering](../../../walletkit/crates/walletkit-core/src/storage/credential_vault/mod.rs), +[Zoom lifetime constants](../../world-id-zoom/src/lib/constants.ts). diff --git a/docs/selfie-pr-integration.md b/docs/selfie-pr-integration.md new file mode 100644 index 0000000..bea1307 --- /dev/null +++ b/docs/selfie-pr-integration.md @@ -0,0 +1,118 @@ +# Selfie enrollment integration snapshot + +Updated on 2026-10-09. The product now installs the locally built #604 candidate. +Original WalletKit and biometrics-tee working checkouts remain untouched. + +## Isolated source checkouts + +| Checkout | Baseline plus PR | Result | +| --------------------------------- | ------------------------------------------- | ---------------------------------------------------------- | +| `../biometrics-tee-integration` | `main` at `c4cf511` plus biometrics-tee #70 | Fast-forward to `04481c5c9136ed2205e0d80d26ab495be6a2dd98` | +| `../walletkit-selfie-integration` | Published `v0.27.1` plus WalletKit #604 | Fast-forward to `61547ee3c9f861990b6baa52a13693f14c74ef96` | + +Branches: `integration/selfie-pr70` and `integration/selfie-pr604` respectively. +WalletKit's enrollment dependency pins exactly the TEE revision above. + +The WalletKit integration checkout also removes the obsolete assignment `nonce` +from `web/walletkit/tests/fixture/enrollment.worker.ts`. PR #70's assignment +schema rejects unknown fields; this stale fixture made the PR's browser CI +expect `Attestation` but receive `Protocol`. Admission challenge nonces remain. + +## What these PRs provide + +- #70: measured Nitro embedding extraction, a sandboxed real worker, encrypted + transport, host admission tickets, and native/browser attestation verification. +- #604: WalletKit's `extractSelfieEmbedding(configJson, imageBytes, admissionPath)` + wrapper around that verified TEE client. +- Verification covers enclave measurements, channel binding and worker identity. + Neither PR generates or verifies AMPC enrollment shares, assembles a PCP, or + issues a credential. Neither introduces an Oxide dependency for those jobs. + +The current Oxide crate has native biometric-engine/OpenCV dependencies. Reusing +its narrow portable sharing/PCP primitives is a separate integration task; importing +the entire crate into browser WalletKit is not a drop-in replacement for the TEE +client. Share generation inside the TEE belongs after accepted inference, before +the result crosses back to the client. + +## Product wiring + +`/selfie-demo` captures one JPEG only on an explicit button click. The existing +WalletKit worker calls `extractSelfieEmbedding` with the trusted policy returned +by `GET /api/selfie-enclave` and same-origin `POST /api/selfie-admission` callback. +No attestation check is disabled. Cancellation/timeout terminates the worker +and locks the account because #604 has no per-call cancellation API. + +The local-only backend checks the configured loopback origin, audience, exact +32-byte challenge, and private key file permissions. It signs the Rust admission +message with P256/SHA-256 and a 30-second expiry. This ticket authorizes a host +connection; it is separate from the proposed signup-service integrity JWT. + +Successful extraction displays type/version/backend, drops the vector reference, +and shows an explicitly mocked `issuer_assurance = 2` preview. No real score, +PCP, match result, credential, or user-presence assertion is invented. The old +synthetic issuance helper remains separate from this extraction demo. + +## Staging rollout + +The existing service is healthy but runs the pre-#604 assignment protocol. +[tee-apps #16](https://github.com/worldcoin/tee-apps/pull/16) prepares the matching +`04481c5` build. It leaves live images, measurements, origins and keys unchanged. +It separates build source from deployed source so preparation does not require +turning off the existing service. Repository review is required before merge. + +After review/merge: + +1. Dispatch `.github/workflows/selfie-enrollment.yml` on main with `publish=true`. +2. Download that run's `selfie-enrollment-stage-release` artifact. Use the existing + admission public key if its private key is available. Otherwise coordinate + replacement with the existing staging signer owner. +3. Run `scripts/prepare-selfie-enrollment.py release.json +--admission-public-key-file /private/path/admission-public.hex` in tee-apps. + Review/merge the generated paired release, measurements, values and manifests. + Promotion retains harness port 8765 and adds localhost/127.0.0.1 port 3100. +4. After Argo finishes deploying, point the local app at that reviewed policy and + the matching private key using `.env.local`: + +```sh +TEE_ENROLLMENT_CONFIG_FILE=/absolute/path/to/tee-apps/releases/selfie-enrollment/client-stage.json +TEE_ADMISSION_KEY_FILE=/private/path/admission-private.hex +LOCAL_TEE_ORIGIN=http://localhost:3100 +``` + +`bun run dev` enables the loopback test signer. Production disables it. Never put +private keys in `VITE_*` variables, source control, or browser storage. The existing +local bearer token and `VITE_TEE_BASE_URL` are not used by this new demo. + +A candidate key pair was generated outside the repositories at +`~/.config/web-authenticator-selfie-staging/`; it is **not trusted by staging**. +The helper `bun scripts/create-selfie-admission-key.ts /new/private/directory` +creates another pair without overwriting an existing directory. Only the public +key can be copied into deployment values. Rotating it invalidates the old signer. + +Real Nitro extraction and the wrong-PCR, wrong-worker, expired-ticket and +cancellation live checks remain pending deployment. No image has been uploaded +as part of this integration. Downstream AMPC sharing, PCP construction and real +credential issuance remain separate work. + +## Validation + +- Both source combinations merge cleanly. +- Existing local worker `/ready`: HTTP 200. +- WalletKit fixture formatting and `git diff --check`: passed. +- Upstream #604 browser CI at this revision: 18 passed, one stale-fixture failure. +- With the local fixture correction: all 19 browser tests passed in Chrome on + port 14173. Consumer and fixture TypeScript checks also passed. These include + mocked enrollment rejection tests, not live Nitro extraction. +- Web-authenticator with the installed candidate: typecheck, lint, Vite build + and all 62 tests passed. Admission tests verify signatures, altered challenges, + origin restrictions, malformed/oversized input, missing configuration and key permissions. +- tee-apps: four release-policy tests and source/activation checks passed. Full + local Helm rendering was blocked by network access to the private chart server; + CI must complete rendering and the measured enclave build. +- Candidate package built and packed successfully. Rust/WASM generation and + optimization ran in the native ARM Nix Docker devshell; TypeScript and esbuild + bundling completed on macOS after installing the host-platform JS dependencies. +- The prescribed Linux/amd64 Nix Docker build failed at `rustc -vV` with a QEMU + segmentation fault, before project compilation. The ARM fallback completed + WASM generation, but bundling initially reused the amd64 esbuild binary and + crashed; native macOS bundling resolved that environment mismatch. diff --git a/eslint.config.mjs b/eslint.config.mjs index cb9b362..feb812a 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,10 +1,31 @@ -import nextConfig from 'eslint-config-next' +import js from '@eslint/js' +import globals from 'globals' +import tseslint from 'typescript-eslint' +import hooks from 'eslint-plugin-react-hooks' -const eslintConfig = [ - ...nextConfig, +export default tseslint.config( { - ignores: ['node_modules/**', '.next/**', 'out/**', 'build/**', 'next-env.d.ts'], + ignores: [ + 'node_modules/**', + '.next/**', + 'dist/**', + 'out/**', + 'build/**', + 'demo/**', + 'src/server/**/target/**', + '.codex-visualizations/**', + ], }, -] - -export default eslintConfig + js.configs.recommended, + ...tseslint.configs.recommended, + { + files: ['**/*.{ts,tsx}'], + languageOptions: { globals: { ...globals.browser, ...globals.node, Bun: 'readonly' } }, + plugins: { 'react-hooks': hooks }, + rules: { + 'react-hooks/rules-of-hooks': 'error', + 'react-hooks/exhaustive-deps': 'warn', + '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], + }, + } +) diff --git a/index.html b/index.html new file mode 100644 index 0000000..089c0d8 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + World ID Authenticator + + +

      + + + diff --git a/next.config.ts b/next.config.ts deleted file mode 100644 index c02b914..0000000 --- a/next.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { NextConfig } from 'next' - -const nextConfig: NextConfig = { - /* config options here */ -} - -export default nextConfig diff --git a/package.json b/package.json index 256818a..d9cd74a 100644 --- a/package.json +++ b/package.json @@ -7,37 +7,51 @@ }, "packageManager": "bun@1.3.5", "scripts": { - "dev": "next dev --turbopack", - "build": "next build --turbopack", - "start": "next start", + "dev": "bun scripts/dev.ts", + "build": "vite build", + "start": "bun src/server/index.ts", "lint": "eslint", "typecheck": "tsc --noEmit", "format": "prettier --write .", - "format:check": "prettier --check ." + "format:check": "prettier --check .", + "test": "bun test tests", + "build:selfie-helper": "cargo build --locked --config src/server/face-enrollment-helper/build-config.toml --manifest-path src/server/face-enrollment-helper/Cargo.toml", + "dev:api": "bun --watch src/server/index.ts", + "dev:web": "vite" }, "dependencies": { "@radix-ui/react-dropdown-menu": "^2.1.16", "@types/qrcode": "^1.5.5", + "@worldcoin/walletkit-web": "file:../walletkit-selfie-integration/worldcoin-walletkit-web-0.22.1.tgz", "clsx": "^2.1.1", + "lossless-json": "4.3.1", "motion": "^12.23.22", - "next": "16.1.1", + "onnxruntime-web": "1.30.0", "qrcode": "^1.5.4", "react": "19.2.3", "react-dom": "19.2.3", - "tailwind-merge": "^3.3.1" + "react-router-dom": "^7.18.4", + "tailwind-merge": "^3.3.1", + "viem": "2.56.0" }, "devDependencies": { "@eslint/eslintrc": "^3", + "@eslint/js": "^9", "@tailwindcss/postcss": "^4", + "@types/bun": "^1.4.2", "@types/node": "^20", "@types/react": "19.2.7", "@types/react-dom": "19.2.3", + "@vitejs/plugin-react": "^6.1.2", "eslint": "^9", - "eslint-config-next": "16.1.1", + "eslint-plugin-react-hooks": "^7.1.1", + "globals": "^17.13.0", "prettier": "^3.6.2", "prettier-plugin-sort-imports-desc": "^1.0.0", "tailwindcss": "^4", - "typescript": "^5" + "typescript": "^5", + "typescript-eslint": "^8.71.1", + "vite": "^8.3.3" }, "prettier": { "semi": false, @@ -51,5 +65,6 @@ "plugins": [ "prettier-plugin-sort-imports-desc" ] - } + }, + "type": "module" } diff --git a/postcss.config.mjs b/postcss.config.mjs index ca0fd7a..782416e 100644 --- a/postcss.config.mjs +++ b/postcss.config.mjs @@ -1,5 +1,5 @@ const config = { - plugins: ['@tailwindcss/postcss'], + plugins: { '@tailwindcss/postcss': {} }, } export default config diff --git a/public/images/world-id/README.md b/public/images/world-id/README.md new file mode 100644 index 0000000..8388ef9 --- /dev/null +++ b/public/images/world-id/README.md @@ -0,0 +1,10 @@ +# Asset provenance + +Copied unchanged from `worldcoin/world-app-ios` at checkout +`d9c63c620dae2fe5ccc31f918acaa1260bf26c3e`, under +`Sources/WorldAppLegacy/Sources/WorldAppLegacyUI/Resources/Images.xcassets`: + +- `mark.svg`: `WorldID/icon-world-id-onboarding-mark.imageset/icon-world-id-onboarding-mark.svg` +- `close.svg`: `Common/icon-close-x-grey.imageset/icon-close-x-grey.svg` +- `shield.svg`: `Common/icon-shield-check.imageset/icon-shield-check.svg` +- `success.svg`: `Common/icon-check-circle-black.imageset/icon-check-circle.svg` diff --git a/public/images/world-id/close.svg b/public/images/world-id/close.svg new file mode 100644 index 0000000..dd40042 --- /dev/null +++ b/public/images/world-id/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/world-id/mark.svg b/public/images/world-id/mark.svg new file mode 100644 index 0000000..06cdaa9 --- /dev/null +++ b/public/images/world-id/mark.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/world-id/shield.svg b/public/images/world-id/shield.svg new file mode 100644 index 0000000..b02bbec --- /dev/null +++ b/public/images/world-id/shield.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/world-id/success.svg b/public/images/world-id/success.svg new file mode 100644 index 0000000..8aa683c --- /dev/null +++ b/public/images/world-id/success.svg @@ -0,0 +1,4 @@ + + + + diff --git a/scripts/create-selfie-admission-key.ts b/scripts/create-selfie-admission-key.ts new file mode 100644 index 0000000..2344f85 --- /dev/null +++ b/scripts/create-selfie-admission-key.ts @@ -0,0 +1,22 @@ +import { resolve } from 'node:path' +import { createECDH } from 'node:crypto' +import { mkdir, writeFile } from 'node:fs/promises' + +const directory = process.argv[2] +if (!directory) throw new Error('Usage: bun scripts/create-selfie-admission-key.ts /private/directory') +// Refuse existing directories so an active signing key cannot be overwritten. +await mkdir(directory, { mode: 0o700 }) +const key = createECDH('prime256v1') +key.generateKeys() +await writeFile( + resolve(directory, 'admission-private.hex'), + key.getPrivateKey().toString('hex').padStart(64, '0') + '\n', + { mode: 0o600, flag: 'wx' } +) +await writeFile(resolve(directory, 'admission-public.hex'), key.getPublicKey().toString('hex') + '\n', { + mode: 0o600, + flag: 'wx', +}) +console.log( + 'Created admission-private.hex and admission-public.hex. Only the public key belongs in staging configuration.' +) diff --git a/scripts/dev.ts b/scripts/dev.ts new file mode 100644 index 0000000..01becb8 --- /dev/null +++ b/scripts/dev.ts @@ -0,0 +1,22 @@ +export {} + +const apiPort = process.env.API_PORT || '3101' +const api = Bun.spawn([process.execPath, '--watch', 'src/server/index.ts'], { + env: { ...process.env, PORT: apiPort, NODE_ENV: 'development', LOCAL_TEE_DEMO_ADMISSION: '1' }, + stdout: 'inherit', + stderr: 'inherit', +}) +const web = Bun.spawn([process.execPath, 'node_modules/vite/bin/vite.js', ...process.argv.slice(2)], { + env: { ...process.env, API_PORT: apiPort }, + stdout: 'inherit', + stderr: 'inherit', +}) +const stop = () => { + api.kill() + web.kill() +} +for (const signal of ['SIGINT', 'SIGTERM'] as const) process.on(signal, stop) +const exitCode = await Promise.race([api.exited, web.exited]) +stop() +await Promise.all([api.exited, web.exited]) +process.exit(exitCode) diff --git a/scripts/setup-rgbnet.ts b/scripts/setup-rgbnet.ts new file mode 100644 index 0000000..2e4ca80 --- /dev/null +++ b/scripts/setup-rgbnet.ts @@ -0,0 +1,14 @@ +import { resolve } from 'node:path' +import { createHash } from 'node:crypto' +import { mkdir, readFile, writeFile } from 'node:fs/promises' +import model from '../src/components/selfie-check/rgbnet-model.json' + +const source = process.argv[2] +if (!source) throw new Error('Usage: bun scripts/setup-rgbnet.ts /path/to/RGBNet.onnx') +const bytes = await readFile(source) +if (bytes.length !== model.bytes || createHash('sha256').update(bytes).digest('hex') !== model.sha256) + throw new Error('RGBNet does not match the pinned model. Review model provenance before changing the manifest.') +const destination = resolve(import.meta.dir, '../public/models/rgbnet.onnx') +await mkdir(resolve(import.meta.dir, '../public/models'), { recursive: true }) +await writeFile(destination, bytes) +console.info(`Installed verified RGBNet (${bytes.length} bytes) at ${destination}`) diff --git a/src/app/globals.css b/src/app/globals.css deleted file mode 100644 index 768a171..0000000 --- a/src/app/globals.css +++ /dev/null @@ -1,11 +0,0 @@ -@import 'tailwindcss'; - -@theme inline { - --color-background: #f9f9f8; - --color-primary: #2d2c2c; - --color-secondary: #848382; - --color-border: #e1dfda; - - --font-tiempos: var(--raw-font-tiempos), var(--font-serif); - --font-brand: var(--raw-font-twk-lausanne), var(--font-sans); -} diff --git a/src/app/layout.tsx b/src/app/layout.tsx deleted file mode 100644 index 5b30f00..0000000 --- a/src/app/layout.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import './globals.css' -import LocalFont from 'next/font/local' - -const tiempos = LocalFont({ - preload: true, - display: 'swap', - adjustFontFallback: false, - variable: '--raw-font-tiempos', - src: '../fonts/TiemposHeadline-Regular.ttf', -}) - -const twkLausanne = LocalFont({ - preload: true, - display: 'swap', - adjustFontFallback: false, - variable: '--raw-font-twk-lausanne', - src: [ - { path: '../fonts/TWKLausanne-300.otf', weight: '300', style: 'normal' }, - { path: '../fonts/TWKLausanne-400.otf', weight: '400', style: 'normal' }, - { path: '../fonts/TWKLausanne-600.otf', weight: '600', style: 'normal' }, - ], -}) - -const RootLayout = ({ children }: Readonly<{ children: React.ReactNode }>) => ( - - {children} - -) - -export default RootLayout diff --git a/src/app/page.tsx b/src/app/page.tsx deleted file mode 100644 index 5082d0c..0000000 --- a/src/app/page.tsx +++ /dev/null @@ -1,115 +0,0 @@ -'use client' - -import { useState } from 'react' -import QRCode from '@/components/QRCode' -import spainFlag from '@images/spain.png' -import marbleImg from '@images/marble.png' -import * as motion from 'motion/react-client' -import { AnimatePresence } from 'motion/react' -import UserDropdown from '@/components/UserDropdown' -import WorldMark from '@/components/icons/WorldMark' -import FailedIcon from '@/components/icons/FailedIcon' -import SpinnerIcon from '@/components/icons/SpinnerIcon' - -export default function Home() { - const [didFail, setFailed] = useState(false) - const [isLoading, setLoading] = useState(false) - - return ( -
      -
      - - {}} /> -
      - -
      -
      -

      Welcome, Unique Human

      -

      - World ID is a privacy-preserving digital passport that lets you prove you're a real, unique - person—without revealing your identity. -

      -
      -
      -
      -
      - - {didFail ? 'Connection failed' : 'Connect your World ID'} - - - {didFail - ? 'Something went wrong. Please try scanning again.' - : 'Scan the following QR code with your World ID app to connect and start using immediately.'} - - - {didFail && ( - setFailed(false)} - className="mt-6 rounded-full bg-primary text-white py-3.5 px-6 font-semibold w-fit cursor-pointer" - > - Try again - - )} - -
      -
      setFailed(true)}> - - - - - {(isLoading || didFail) && ( - - {isLoading && } - {didFail && } - - )} - -
      -
      -
      - -
      -
      - ) -} diff --git a/src/components/AuthenticatorScreen.tsx b/src/components/AuthenticatorScreen.tsx new file mode 100644 index 0000000..22259ce --- /dev/null +++ b/src/components/AuthenticatorScreen.tsx @@ -0,0 +1,480 @@ +import { useNavigate } from 'react-router-dom' +import type { RecoveryData } from '../lib/walletkit' +import WorldMark from '@/components/icons/WorldMark' +import CredentialVault from '@/components/CredentialVault' +import { logRegistrationClick } from '@/lib/client-context' +import { useCallback, useEffect, useRef, useState } from 'react' +import CredentialRequestSheet from '@/components/CredentialRequestSheet' +import { useAuthenticatorSession } from '@/components/AuthenticatorSession' +import { createPasskey, unlockPasskey, type CreatedPasskey } from '@/lib/passkey' +import { loadDemoProfile, saveDemoProfile, type DemoProfile } from '@/lib/demo-profile' +import { abortable, registerOnStaging, type RegistrationPhase } from '@/lib/staging-registration' +import { initializeAuthenticator, issueFauxCredential, type FauxIssuanceExchange } from '@/lib/authenticator-session' + +const phaseLabels = { + idle: 'Ready to create a passkey', + saved: 'Your passkey is saved. Unlock it to continue registration.', + creating: 'Complete the passkey creation prompt.', + unlocking: 'Unlock your passkey to derive the two secrets.', + loading: 'Secrets derived. Loading WalletKit…', + registering: 'Submitting the public account to staging…', + queued: 'Registration queued…', + batching: 'Registration is being batched…', + submitted: 'Registration submitted. Waiting for finalization…', + finalized: 'Registration saved. Unlock your passkey to initialize this authenticator.', + initializing: 'Opening the registered authenticator and encrypted vault…', + ready: 'Authenticator initialized. Encrypted credential vault is open.', + issuing: 'Requesting a staging faux credential and storing it in the vault…', + issued: 'Faux credential issued and stored in the encrypted vault.', + issuingSelfie: 'Issuing a selfie credential using synthetic staging enrollment…', + selfieIssued: 'Selfie credential issued and stored in the encrypted vault.', +} +type Phase = keyof typeof phaseLabels + +function errorMessage(error: unknown): string { + if (error instanceof DOMException) { + if (error.name === 'NotAllowedError' || error.name === 'AbortError') { + return 'The passkey prompt was cancelled, timed out, or needs another click. You can try again.' + } + if (error.name === 'NotSupportedError') + return 'This browser or passkey provider does not support the requested operation.' + if (error.name === 'SecurityError') return 'Passkeys are unavailable for this origin. Use HTTPS or localhost.' + } + return error instanceof Error ? error.message : 'The operation failed. Registration has not been confirmed.' +} + +export default function AuthenticatorScreen() { + const autoStarted = useRef(new Set()) + const request = useRef(null) + const profile = useRef(null) + const { wallet, initialized, setInitialized, shareStarted, setShareStarted } = useAuthenticatorSession() + const [issuanceExchange, setIssuanceExchange] = useState(null) + const [hasActiveFaux, setHasActiveFaux] = useState(null) + const [hasActiveSelfie, setHasActiveSelfie] = useState(null) + const navigate = useNavigate() + const onVaultLoaded = useCallback((faux: boolean, selfie: boolean) => { + setHasActiveFaux(faux) + setHasActiveSelfie(selfie) + }, []) + const [issued, setIssued] = useState<{ credentialId: string; issuerSchemaId: string } | null>(null) + const [loaded, setLoaded] = useState(false) + const [requestEntry, setRequestEntry] = useState(null) + const [pending, setPending] = useState(false) + const [created, setCreated] = useState(null) + const [phase, setPhase] = useState('idle') + const [registrationAttempted, setRegistrationAttempted] = useState(false) + const [material, setMaterial] = useState(null) + const [error, setError] = useState(null) + + useEffect(() => { + try { + const saved = loadDemoProfile(localStorage) + profile.current = saved + if (saved) { + setCreated(saved.passkey) + setMaterial(saved.publicMaterial ?? null) + setRegistrationAttempted(saved.registration !== 'created') + setPhase(wallet.current ? 'ready' : saved.registration === 'finalized' ? 'finalized' : 'saved') + if (saved.registration === 'submitting') { + setError( + 'A previous registration attempt was interrupted. Its outcome is unknown; this demo will not submit again or create another passkey.' + ) + } + } + setLoaded(true) + } catch (cause) { + setError(errorMessage(cause)) + } + const abort = () => { + request.current?.abort() + } + window.addEventListener('pagehide', abort) + return () => { + window.removeEventListener('pagehide', abort) + abort() + } + }, [wallet]) + + const onStart = useCallback( + async (automatic = false) => { + if (!loaded || request.current || registrationAttempted) return + const controller = new AbortController() + request.current = controller + setPending(true) + setError(null) + try { + let passkey = created + if (!passkey) { + if (!automatic) void logRegistrationClick() + setPhase('creating') + passkey = await createPasskey(controller.signal) + controller.signal.throwIfAborted() + setCreated(passkey) + profile.current = { version: 1, passkey, registration: 'created' } + } + if (!profile.current) throw new Error('Missing saved passkey record.') + saveDemoProfile(localStorage, profile.current) + setPhase('unlocking') + // Try immediately after creation. If a provider requires fresh activation, + // the retry button calls this same get() directly from a new click. + const secrets = await unlockPasskey(passkey, controller.signal) + if (controller.signal.aborted) { + secrets.seed.fill(0) + secrets.databaseKey.fill(0) + controller.signal.throwIfAborted() + } + setRegistrationAttempted(true) + const session = await registerOnStaging( + secrets, + passkey.credentialId, + controller.signal, + (next: RegistrationPhase) => { + if (!controller.signal.aborted) { + if (next === 'registering' || next === 'finalized') { + const saved = profile.current! + const updated = { + ...saved, + registration: + next === 'registering' ? ('submitting' as const) : ('finalized' as const), + } + saveDemoProfile(localStorage, updated) + profile.current = updated + } + setPhase(next) + } + }, + publicMaterial => { + if (!controller.signal.aborted) { + profile.current = { ...profile.current!, publicMaterial } + setMaterial(publicMaterial) + } + } + ) + if (controller.signal.aborted) { + session.terminate() + return + } + wallet.current = session + setInitialized(true) + setPhase('ready') + } catch (cause) { + if (!controller.signal.aborted) setError(errorMessage(cause)) + } finally { + request.current = null + setPending(false) + } + }, + [loaded, registrationAttempted, created, wallet, setInitialized] + ) + + const onInitialize = useCallback(async () => { + const saved = profile.current + if (request.current || wallet.current || saved?.registration !== 'finalized' || !saved.publicMaterial) return + const controller = new AbortController() + request.current = controller + setPending(true) + setError(null) + setPhase('unlocking') + try { + const secrets = await unlockPasskey(saved.passkey, controller.signal) + setPhase('initializing') + const session = await initializeAuthenticator( + secrets, + saved.passkey.credentialId, + saved.publicMaterial, + controller.signal + ) + if (controller.signal.aborted) { + session.terminate() + return + } + setHasActiveFaux(null) + setHasActiveSelfie(null) + wallet.current = session + setInitialized(true) + setPhase('ready') + } catch (cause) { + if (!controller.signal.aborted) setError(errorMessage(cause)) + } finally { + request.current = null + setPending(false) + } + }, [wallet, setInitialized]) + + useEffect(() => { + if (requestEntry === null || (requestEntry && !shareStarted)) return + if (!loaded || initialized || pending || error || request.current) return + const registration = profile.current?.registration + if (registration === 'submitting') return + const action = registration === 'finalized' ? 'initialize' : 'register' + if (autoStarted.current.has(action)) return + autoStarted.current.add(action) + if (action === 'initialize') void onInitialize() + else void onStart(true) + }, [loaded, initialized, pending, error, onInitialize, onStart, requestEntry, shareStarted]) + + const onIssue = async () => { + if ( + request.current || + !initialized || + !wallet.current || + issued?.issuerSchemaId === '128' || + hasActiveFaux !== false + ) + return + const controller = new AbortController() + request.current = controller + setPending(true) + setError(null) + setPhase('issuing') + setIssuanceExchange(null) + try { + const records = await abortable( + wallet.current.listCredentials(), + AbortSignal.any([controller.signal, AbortSignal.timeout(10_000)]) + ) + if (records.some(record => record.issuerSchemaId === BigInt(128) && !record.isExpired)) { + setHasActiveFaux(true) + setPhase('ready') + return + } + const stored = await issueFauxCredential(wallet.current, controller.signal, fetch, exchange => { + if (!controller.signal.aborted) setIssuanceExchange(exchange) + }) + if (!controller.signal.aborted) { + setIssued({ + credentialId: stored.credentialId.toString(), + issuerSchemaId: stored.issuerSchemaId.toString(), + }) + setPhase('issued') + } + } catch (cause) { + wallet.current?.terminate() + wallet.current = null + setInitialized(false) + if (!controller.signal.aborted) setError(errorMessage(cause)) + } finally { + request.current = null + setPending(false) + } + } + + return ( +
      + {(requestEntry === false || shareStarted) && ( + <> +
      + +
      +
      +

      + {issued + ? issued.issuerSchemaId === '11' + ? 'Selfie credential stored' + : 'Faux credential stored' + : initialized + ? 'Authenticator ready' + : profile.current?.registration === 'finalized' + ? 'World ID registered' + : 'Create your World ID'} +

      +

      + Register on staging, initialize your authenticator, then issue a test credential. +

      +
      +

      + {error ? 'Flow stopped.' : !loaded ? 'Checking saved passkey…' : phaseLabels[phase]} +

      + {created && ( +
      +
      +
      Passkey ID
      +
      {created.credentialId}
      +
      +
      +
      Passkey PRF
      +
      {created.prfSupported ? 'Supported' : 'Not reported as supported'}
      +
      + {material && ( + <> +
      +
      Authenticator address
      +
      + {material.authenticatorAddress} +
      +
      +
      +
      Authenticator public key
      +
      + {material.authenticatorPubkey} +
      +
      +
      +
      Offchain signer commitment
      +
      + {material.offchainSignerCommitment} +
      +
      + + )} +
      + )} +
      + {error && ( +

      + {error} +

      + )} + {loaded && + (pending || error) && + !registrationAttempted && + (!created || created.prfSupported) && ( + + )} + {loaded && + (pending || error) && + profile.current?.registration === 'finalized' && + !initialized && ( + + )} + {initialized && wallet.current && ( +
      + Developer menu + { + setIssued(null) + setIssuanceExchange(null) + }} + /> + + + +

      + {hasActiveSelfie + ? 'Demo challenge opens a live camera preview. No image is sent and no face match is performed yet.' + : 'Opens a live camera preview that stays in this tab. Demo issuance uses synthetic face data; it does not verify your face or create a recoverable PCP.'} +

      + {issued && ( +

      + Stored credential ID: {issued.credentialId} · Issuer schema:{' '} + {issued.issuerSchemaId} +

      + )} + {issuanceExchange && ( +
      +

      Faux issuance request / response

      +

      + This button’s exchange with the staging issuer proxy. Visible only for this + visit. +

      +
      +

      Request

      +

      + POST /api/faux-credential +

      +
      +												{JSON.stringify(issuanceExchange.request.body, null, 2)}
      +											
      +
      +
      +

      + Response + {issuanceExchange.response + ? ` · HTTP ${issuanceExchange.response.status}` + : ''} +

      +
      +												{issuanceExchange.response?.body ??
      +													(pending ? 'Waiting for response…' : 'No response received.')}
      +											
      +
      +
      + )} +
      + )} +
      + + )} + { + setShareStarted(true) + if (initialized) return + // Start WebAuthn directly from the click to preserve user activation. + const action = profile.current?.registration === 'finalized' ? 'initialize' : 'register' + autoStarted.current.add(action) + if (action === 'initialize') void onInitialize() + else void onStart() + }} + onSessionClosed={() => { + wallet.current = null + setInitialized(false) + }} + /> +
      + ) +} diff --git a/src/components/AuthenticatorSession.tsx b/src/components/AuthenticatorSession.tsx new file mode 100644 index 0000000..2e1bd75 --- /dev/null +++ b/src/components/AuthenticatorSession.tsx @@ -0,0 +1,55 @@ +import type { WalletKit } from '../lib/walletkit' +import { useLocalTeeConnection } from '@/hooks/useLocalTeeConnection' +import type { IncomingRequest } from '@/lib/requests/incoming-request' +import { createContext, useCallback, useContext, useEffect, useRef, useState, type ReactNode } from 'react' + +function useSessionState() { + const tee = useLocalTeeConnection() + const stopTee = tee.stop + const wallet = useRef(null) + const [initialized, setInitialized] = useState(false) + // Keep the decrypted request and bridge response capability across in-tab routes only. + const [incoming, setIncoming] = useState(null) + const [shareStarted, setShareStarted] = useState(false) + const clearRequest = useCallback(() => { + setIncoming(null) + setShareStarted(false) + }, []) + useEffect(() => { + const close = () => { + stopTee() + wallet.current?.terminate() + wallet.current = null + setInitialized(false) + clearRequest() + } + window.addEventListener('pagehide', close) + return () => { + window.removeEventListener('pagehide', close) + close() + } + }, [clearRequest, stopTee]) + return { + tee, + wallet, + initialized, + setInitialized, + incoming, + setIncoming, + shareStarted, + setShareStarted, + clearRequest, + } +} +const SessionContext = createContext | null>(null) + +export function AuthenticatorSession({ children }: { children: ReactNode }) { + const session = useSessionState() + return {children} +} + +export function useAuthenticatorSession() { + const session = useContext(SessionContext) + if (!session) throw new Error('Authenticator session provider is missing.') + return session +} diff --git a/src/components/CredentialRequestSheet.tsx b/src/components/CredentialRequestSheet.tsx new file mode 100644 index 0000000..4a3dde7 --- /dev/null +++ b/src/components/CredentialRequestSheet.tsx @@ -0,0 +1,506 @@ +import { Link } from 'react-router-dom' +import { useNavigate } from 'react-router-dom' +import type { WalletKit } from '../lib/walletkit' +import { abortable } from '@/lib/staging-registration' +import RequestPreflight from '@/components/RequestPreflight' +import { useCallback, useEffect, useRef, useState } from 'react' +import { useAuthenticatorSession } from '@/components/AuthenticatorSession' +import { checkExpiry, credentialRequirementsLabel } from '@/lib/requests/proof-request' +import { loadIncomingRequest, checkRequestCredentials } from '@/lib/requests/incoming-request' + +export default function CredentialRequestSheet({ + wallet, + enabled, + canContinue, + continuationError, + onRequestDetected, + onContinue, + onSessionClosed, +}: { + wallet: WalletKit | null + enabled: boolean + canContinue: boolean + continuationError: string | null + onRequestDetected: (detected: boolean) => void + onContinue: () => void + onSessionClosed: () => void +}) { + const navigate = useNavigate() + const dialog = useRef(null) + const operation = useRef(null) + const loading = useRef(null) + const sourceUrl = useRef(null) + const { incoming, setIncoming, clearRequest, setShareStarted } = useAuthenticatorSession() + const resumedRequest = useRef(incoming) + const request = incoming?.proof + const [error, setError] = useState(null) + const [phase, setPhase] = useState<'review' | 'proving' | 'success'>('review') + const [sending, setSending] = useState(false) + const [sent, setSent] = useState(false) + const [confirmCancel, setConfirmCancel] = useState(false) + const [hasRequest, setHasRequest] = useState(false) + const [closed, setClosed] = useState(false) + const [proofResponse, setProofResponse] = useState(null) + const [credentialCheck, setCredentialCheck] = useState<{ + incoming: NonNullable + result: Awaited> + } | null>(null) + const availability = credentialCheck?.incoming === incoming ? credentialCheck?.result : null + const [vaultCheckAttempt, setVaultCheckAttempt] = useState(0) + const [progress, setProgress] = useState<{ time: string; message: string }[]>([]) + const logStep = useCallback( + (step: string, message: string, status: 'started' | 'completed' | 'failed' = 'completed') => { + const time = new Date().toISOString() + setProgress(entries => [...entries, { time, message }].slice(-30)) + console.info('world_id_proof_flow', { time, step, status }) + }, + [] + ) + + useEffect(() => { + const controller = new AbortController() + loading.current = controller + const stop = () => { + controller.abort() + operation.current?.abort() + } + window.addEventListener('pagehide', stop) + const cleanup = () => { + window.removeEventListener('pagehide', stop) + stop() + } + sourceUrl.current ??= window.location.href + const url = new URL(sourceUrl.current) + const hasConnector = ['i', 'k'].some(key => url.searchParams.has(key)) + const detected = hasConnector || !!resumedRequest.current + onRequestDetected(detected) + if (!detected) return cleanup + setHasRequest(true) + if (!hasConnector) return cleanup + setIncoming(null) + setShareStarted(false) + // The decrypted request's response capability stays in memory across routes. + if (url.searchParams.has('k')) window.history.replaceState(window.history.state, '', window.location.pathname) + void loadIncomingRequest(sourceUrl.current, controller.signal, message => { + if (!controller.signal.aborted) logStep('load_request', message, 'started') + }) + .then(loaded => { + if (!controller.signal.aborted) { + setIncoming(loaded) + logStep('validate_request', 'Request validated. Waiting for the authenticator to check its vault.') + } + }) + .catch(cause => { + if (!controller.signal.aborted) { + setError(cause instanceof Error ? cause.message : 'Could not load the request.') + logStep('load_request', 'Request loading or validation failed.', 'failed') + } + }) + return cleanup + }, [logStep, onRequestDetected, setIncoming, setShareStarted]) + + const needsEnrollment = !!availability?.needsSelfieEnrollment && !incoming?.unsupportedReason && !error + + useEffect(() => { + if (!enabled || !hasRequest || !wallet || (!availability && !error)) return + if (needsEnrollment) { + dialog.current?.close() + navigate('/selfie-check', { replace: true }) + } else if (!dialog.current?.open) dialog.current?.showModal() + }, [enabled, wallet, hasRequest, availability, needsEnrollment, error, navigate]) + + useEffect(() => { + if (!enabled || !wallet || !incoming) return + const controller = new AbortController() + void checkRequestCredentials(incoming, wallet, controller.signal) + .then(result => { + if (controller.signal.aborted) return + setCredentialCheck({ incoming, result }) + logStep( + 'check_credentials', + result.satisfied + ? 'Requested credentials are available. Waiting for approval.' + : 'The vault does not satisfy this request’s credential requirements.' + ) + }) + .catch(() => { + if (!controller.signal.aborted) setError('Could not read credential availability from the vault.') + }) + return () => controller.abort() + }, [enabled, wallet, incoming, logStep, vaultCheckAttempt]) + + useEffect(() => { + if (!request || sent) return + const timer = setTimeout( + () => setError('This request expired. Start a new request at the relying party.'), + Math.max(0, request.expires_at * 1000 - Date.now()) + ) + return () => clearTimeout(timer) + }, [request, sent]) + + const leave = () => { + loading.current?.abort() + dialog.current?.close() + clearRequest() + if (incoming?.returnUrl) window.location.assign(incoming.returnUrl) + else { + setHasRequest(false) + setClosed(true) + } + } + const returnToApp = async (proof = proofResponse) => { + if (!incoming || !proof || sending || operation.current) return + if (sent) { + leave() + return + } + setSending(true) + setError(null) + const controller = new AbortController() + operation.current = controller + try { + logStep('return_response', 'Encrypting and sending the proof response…', 'started') + await incoming.deliver(proof, controller.signal) + controller.signal.throwIfAborted() + setSent(true) + logStep('return_response', 'Response accepted by the transport. RP verification is separate.') + if (incoming.returnUrl) leave() + } catch { + if (!controller.signal.aborted) { + setError('Could not confirm proof delivery. Retry sending the same proof, or close this request.') + logStep('return_response', 'Response delivery failed; proof retained for retry.', 'failed') + } + } finally { + operation.current = null + setSending(false) + } + } + const cancel = async () => { + if (sending) return + operation.current?.abort() + if (!incoming) { + leave() + return + } + setSending(true) + try { + await incoming.cancel(AbortSignal.timeout(15000)) + logStep('cancel_request', 'Rejection returned to the relying party.') + leave() + } catch { + setError( + 'Could not send the rejection to the bridge. You can retry cancellation or close this tab; the RP request will expire.' + ) + } finally { + setSending(false) + } + } + const requestClose = () => { + if (sending) return + if (phase === 'success') { + leave() + return + } + setConfirmCancel(true) + } + const approve = async () => { + if ( + !wallet || + !incoming || + operation.current || + error || + !availability?.satisfied || + incoming.unsupportedReason + ) + return + const controller = new AbortController() + operation.current = controller + const deadline = AbortSignal.any([controller.signal, AbortSignal.timeout(120000)]) + const terminate = () => wallet.terminate() + deadline.addEventListener('abort', terminate, { once: true }) + setPhase('proving') + logStep('approval', 'Approval received.') + let generatedProof: string | null = null + try { + await incoming.validate(deadline) + logStep('revalidate_request', 'Request signature and expiry rechecked.') + const available = await checkRequestCredentials(incoming, wallet, deadline) + if (!available.satisfied) throw new Error('The required credentials are no longer available.') + logStep('generate_proof', 'WalletKit is generating the proof…', 'started') + const proof = await abortable(wallet.generateProof(JSON.stringify(incoming.proof)), deadline) + deadline.throwIfAborted() + checkExpiry(incoming.proof) + const result = JSON.parse(proof) as { error?: unknown; responses?: unknown } + if (result.error || !Array.isArray(result.responses) || !result.responses.length) + throw new Error('WalletKit could not satisfy this proof request.') + setProofResponse(proof) + setConfirmCancel(false) + setPhase('success') + generatedProof = proof + logStep('generate_proof', 'Proof created. Sending it to the relying party…') + } catch (cause) { + wallet.terminate() + onSessionClosed() + if (!controller.signal.aborted) + setError( + cause instanceof Error && cause.message === 'WalletKit could not satisfy this proof request.' + ? cause.message + : 'Proof generation failed or timed out. Reopen the authenticator and start a fresh request.' + ) + logStep('generate_proof', 'Proof generation stopped.', 'failed') + } finally { + deadline.removeEventListener('abort', terminate) + operation.current = null + } + // Delivery has its own deadline and retry path; a transport failure must not + // discard the proof or terminate the wallet after successful generation. + if (generatedProof && !controller.signal.aborted) await returnToApp(generatedProof) + } + + if (closed) + return ( +
      +

      Request closed

      +

      You can close this tab or return to the requesting app.

      + + Open authenticator + +
      + ) + if (!hasRequest) return null + if (!enabled) + return ( + void cancel()} + /> + ) + return ( + <> +
      +

      Request from {incoming?.label ?? 'relying party'}

      +

      + {error ?? + (wallet + ? 'Review the request in the approval sheet.' + : 'Initialize your authenticator with your passkey. The approval sheet will open automatically.')} +

      + {!request && ( + + )} + {request && !wallet && ( + + )} +
      + { + event.preventDefault() + requestClose() + }} + onClick={event => { + if (event.target === event.currentTarget) { + const rect = event.currentTarget.getBoundingClientRect() + if (event.clientY < rect.top || event.clientX < rect.left || event.clientX > rect.right) + requestClose() + } + }} + > +
      +
      +
      + +
      + +
      +

      {incoming?.label ?? 'Incoming request'} · Staging

      +

      + {confirmCancel + ? 'Cancel this request?' + : phase === 'success' + ? sent + ? 'Proof response sent' + : sending + ? 'Sharing proof…' + : 'Proof delivery unconfirmed' + : `Share a proof with ${incoming?.label ?? 'relying party'}`} +

      +

      + {confirmCancel + ? 'The relying party will receive a rejection without a proof.' + : phase === 'success' + ? sent + ? 'Your proof response has been sent. Verification happens on the relying party’s server.' + : sending + ? 'Sending your proof to the requesting app.' + : 'Your proof is ready. You can retry delivery without generating another proof.' + : 'Approving creates your proof and sends it to the requesting app.'} +

      + {!confirmCancel && phase !== 'success' && ( + <> +
      +

      Action: {incoming?.actionLabel ?? 'Loading…'}

      + {request && ( +

      Accepted credentials: {credentialRequirementsLabel(request)}

      + )} + {incoming?.appId && ( +

      + App ID: {incoming.appId} · RP signature checked against staging registry +

      + )} + {request?.proof_requests.map(item => ( +
      + +
      +

      {item.identifier.replaceAll('_', ' ')}

      +

      + Schema {item.issuer_schema_id} ·{' '} + {availability + ? availability.items.find(result => result.identifier === item.identifier) + ?.available + ? 'Available' + : 'Missing or outside date requirements' + : 'Checking vault…'} +

      +
      +
      + ))} + {availability && !availability.satisfied && ( +

      + {availability.requiresOrb && + availability.items.some(item => item.issuer_schema_id === 1 && !item.available) + ? 'This request requires an eligible Orb credential, which is missing from this vault. Selfie enrollment cannot replace it. Orb enrollment and transfer from another wallet are not available here; cancel and retry from the requesting app with an authenticator holding the required credential.' + : availability.canEnrollSelfie + ? 'This request accepts alternative credentials. You can choose Selfie Check below, or cancel and use another accepted credential from the requesting app.' + : 'Your vault does not contain credentials that satisfy all the required issuer and date conditions. Use an authenticator holding the accepted credentials.'} +

      + )} + {incoming?.unsupportedReason &&

      {incoming.unsupportedReason}

      } + {request && ( +
      + Request details +
      +									{JSON.stringify(request, null, 2)}
      +								
      +
      + )} + +

      + The app receives a cryptographic proof. Your passkey and secret keys are not shared. +

      + + )} + + {phase === 'success' && proofResponse && ( +
      +

      Proof response

      +
      +							{proofResponse}
      +						
      +
      + )} +
      +

      Progress

      +
        + {progress.map((entry, index) => ( +
      1. + · {entry.message} +
      2. + ))} +
      +
      + {error && ( +

      + {error} +

      + )} + {incoming?.returnUrl && ( +

      Return destination: {incoming.returnUrl}

      + )} +
      + {confirmCancel ? ( + <> + + + + ) : phase === 'success' ? ( + + ) : error ? ( + + ) : ( + <> + {availability?.canEnrollSelfie && !incoming?.unsupportedReason && ( + + )} + {availability && !availability.satisfied && !incoming?.unsupportedReason && ( + + )} + + + + )} +
      +
      + + ) +} diff --git a/src/components/CredentialVault.tsx b/src/components/CredentialVault.tsx new file mode 100644 index 0000000..284f5f6 --- /dev/null +++ b/src/components/CredentialVault.tsx @@ -0,0 +1,174 @@ +import { useEffect, useState } from 'react' +import { abortable } from '@/lib/staging-registration' +import type { CredentialMetadata, WalletKit } from '../lib/walletkit' + +export default function CredentialVault({ + wallet, + revision, + onLoaded, + onDeleted, + disabled, +}: { + wallet: WalletKit + revision: string | undefined + onLoaded: (hasActiveFaux: boolean, hasActiveSelfie: boolean) => void + onDeleted: () => void + disabled: boolean +}) { + const [credentials, setCredentials] = useState(null) + const [error, setError] = useState(null) + const [message, setMessage] = useState(null) + const [deleting, setDeleting] = useState(false) + const [refresh, setRefresh] = useState(0) + const [selection, setSelection] = useState(null) + useEffect(() => { + const controller = new AbortController() + void abortable(wallet.listCredentials(), AbortSignal.any([controller.signal, AbortSignal.timeout(10_000)])) + .then(records => { + if (controller.signal.aborted) return + setCredentials(records) + onLoaded( + records.some(record => record.issuerSchemaId === BigInt(128) && !record.isExpired), + records.some(record => record.issuerSchemaId === BigInt(11) && !record.isExpired) + ) + }) + .catch(() => { + if (!controller.signal.aborted) + setError('Could not read credential metadata. Refresh the list or unlock again.') + }) + return () => controller.abort() + }, [wallet, revision, onLoaded, refresh]) + async function removeSelected() { + if (!selection || deleting || disabled) return + setDeleting(true) + setError(null) + setMessage(null) + let removed = 0 + try { + const signal = AbortSignal.timeout(15_000) + for (const record of selection) { + signal.throwIfAborted() + await abortable(wallet.deleteCredential(record.credentialId), signal) + removed++ + } + setMessage(`Deleted ${removed} local credential${removed === 1 ? '' : 's'}.`) + } catch { + setError( + `Deletion stopped after ${removed} confirmed deletions. Refresh the list to check the current state before retrying.` + ) + } finally { + setSelection(null) + setDeleting(false) + onDeleted() + setRefresh(value => value + 1) + } + } + return ( +
      +

      Credential vault

      +

      + Encrypted browser storage · {credentials ? `${credentials.length} credentials` : 'Reading vault…'} +

      + {error && ( +

      + {error} +

      + )} + {message && ( +

      + {message} +

      + )} + + {credentials?.length === 0 &&

      No credentials stored.

      } +
        + {credentials?.map(record => ( +
      • +

        + {record.issuerSchemaId === BigInt(128) + ? 'Faux credential' + : record.issuerSchemaId === BigInt(11) + ? 'Selfie credential' + : 'Credential'}{' '} + · {record.isExpired ? 'Expired' : 'Active'} +

        +

        + ID {record.credentialId.toString()} · Schema {record.issuerSchemaId.toString()} +

        +

        + Expires {new Date(Number(record.expiresAt) * 1000).toLocaleString()} +

        + +
      • + ))} +
      + + {selection && ( +
      +

      + Delete {selection.length} selected local credential{selection.length === 1 ? '' : 's'}? Their + local blinding factors will also be removed. Issuer records, passkey, authenticator + registration, and PCP data are unchanged. This cannot be undone here. +

      +

      + Credential IDs: {selection.map(record => record.credentialId.toString()).join(', ')} +

      + + +
      + )} +
      +

      Local PCP storage

      +

      + No local PCP stored. PCP creation and persistence are not connected yet; the synthetic selfie + fixture is held only in memory. +

      + +
      +
      + ) +} diff --git a/src/components/RequestPreflight.tsx b/src/components/RequestPreflight.tsx new file mode 100644 index 0000000..3f89f35 --- /dev/null +++ b/src/components/RequestPreflight.tsx @@ -0,0 +1,52 @@ +import type { IncomingRequest } from '@/lib/requests/incoming-request' + +export default function RequestPreflight({ + incoming, + error, + busy, + canContinue, + onShare, + onCancel, +}: { + incoming: IncomingRequest | null + error: string | null + busy: boolean + canContinue: boolean + onShare: () => void + onCancel: () => void +}) { + const selfie = incoming?.proof.proof_requests.some(item => item.issuer_schema_id === 11) + const message = error ?? incoming?.unsupportedReason + return ( +
      + World ID +

      Request through World ID

      +

      + {incoming ? incoming.label : error ? 'Unable to open request' : 'Loading request…'} +

      +

      + {incoming + ? selfie + ? 'is requesting a Selfie Check through World.' + : 'is requesting a World ID proof.' + : error + ? 'Return to the requesting app and start a new request.' + : 'Checking the request before continuing.'} +

      + {incoming &&

      Action: {incoming.actionLabel}

      } + {message && ( +

      + {message} +

      + )} +
      + + +
      +
      + ) +} diff --git a/src/components/UserDropdown.tsx b/src/components/UserDropdown.tsx index aedc145..cd35906 100644 --- a/src/components/UserDropdown.tsx +++ b/src/components/UserDropdown.tsx @@ -1,10 +1,6 @@ -'use client' - import { FC } from 'react' -import Image from 'next/image' import LogOutIcon from './icons/LogOutIcon' import CheckmarkIcon from './icons/CheckmarkIcon' -import { StaticImport } from 'next/dist/shared/lib/get-img-props' import { DropdownMenu as DropdownRoot, DropdownMenuTrigger, @@ -15,15 +11,15 @@ import { type Props = { onLogOut?: () => void - marble: string | StaticImport - passport?: { country: string; flag: string | StaticImport } + marble: string + passport?: { country: string; flag: string } } const UserDropdown: FC = ({ marble, passport, onLogOut }) => ( + +
        + {tee.logs.map((entry, index) => ( +
      1. + +

        {entry.message}

        +
      2. + ))} +
      +

      Demo access is provisioned automatically.

      + + ) +} diff --git a/src/components/selfie-check/SelfieCamera.tsx b/src/components/selfie-check/SelfieCamera.tsx new file mode 100644 index 0000000..7af7729 --- /dev/null +++ b/src/components/selfie-check/SelfieCamera.tsx @@ -0,0 +1,211 @@ +import { startCamera } from './camera-capture' +import { useEffect, useRef, useState } from 'react' +import { startFaceDetector } from './face-detector' +import { faceGuidance, previewPoint, type FaceDetection } from './rgbnet' + +export default function SelfieCamera({ + onEvent, + detectFaces = false, + diagnostics = false, + onCapture, + captureDisabled = false, +}: { + onEvent?: (message: string) => void + detectFaces?: boolean + diagnostics?: boolean + onCapture?: (image: Uint8Array) => Promise + captureDisabled?: boolean +}) { + const video = useRef(null) + const mounted = useRef(false) + useEffect(() => { + mounted.current = true + return () => { + mounted.current = false + } + }, []) + const [attempt, setAttempt] = useState(0) + const [ready, setReady] = useState(false) + const [error, setError] = useState(null) + const [detectionError, setDetectionError] = useState(null) + const [detectionAttempt, setDetectionAttempt] = useState(0) + const [detection, setDetection] = useState<{ faces: FaceDetection[]; width: number; height: number } | null>(null) + + useEffect(() => { + if (!detectFaces || !ready || !video.current) return + const controller = new AbortController() + setDetection(null) + setDetectionError(null) + try { + startFaceDetector( + video.current, + controller.signal, + diagnostics, + (faces, width, height) => setDetection({ faces, width, height }), + message => onEvent?.(message), + message => { + setDetection(null) + setDetectionError(message) + } + ) + } catch (cause) { + const message = cause instanceof Error ? cause.message : 'Face detection is unavailable' + setDetectionError(message) + onEvent?.(`RGBNet error: ${message}`) + } + return () => controller.abort() + }, [detectFaces, diagnostics, ready, detectionAttempt, onEvent]) + + useEffect(() => { + const preview = video.current + if (!preview) return + const controller = new AbortController() + onEvent?.('startCamera(): requesting camera access.') + void startCamera(preview, controller.signal, () => { + setReady(true) + onEvent?.('startCamera(): live preview ready. No frames uploaded.') + }).catch(cause => { + if (!controller.signal.aborted) { + setReady(false) + setError(cause instanceof Error ? cause.message : 'Camera failed. Try again.') + onEvent?.('startCamera(): interrupted or unavailable. See camera error; retry is available.') + } + }) + return () => controller.abort() + }, [attempt, onEvent]) + + const [capturing, setCapturing] = useState(false) + async function capture() { + if (!onCapture || capturing || captureDisabled || !video.current || !ready) return + setCapturing(true) + const canvas = document.createElement('canvas') + let image: Uint8Array | undefined + try { + const preview = video.current + const scale = Math.min(1, 1280 / Math.max(preview.videoWidth, preview.videoHeight)) + canvas.width = Math.round(preview.videoWidth * scale) + canvas.height = Math.round(preview.videoHeight * scale) + if (!canvas.width || !canvas.height) throw new Error('Camera frame is unavailable.') + const context = canvas.getContext('2d') + if (!context) throw new Error('Camera capture is unavailable.') + context.drawImage(preview, 0, 0, canvas.width, canvas.height) + const blob = await new Promise((resolve, reject) => + canvas.toBlob( + value => (value ? resolve(value) : reject(new Error('Could not encode camera frame.'))), + 'image/jpeg', + 0.92 + ) + ) + if (blob.size > 8 * 1024 * 1024) throw new Error('Camera frame is too large.') + image = new Uint8Array(await blob.arrayBuffer()) + if (mounted.current) await onCapture(image) + } catch { + setError('Capture failed. Please retry the camera.') + } finally { + if (image?.byteLength) image.fill(0) + canvas.width = canvas.height = 0 + setCapturing(false) + } + } + + return ( +
      +
      +
      +

      + {error + ? 'Camera interrupted' + : !ready + ? 'Opening camera…' + : !detectFaces + ? 'Place your face in the circle' + : detectionError + ? 'Face detection unavailable' + : detection + ? faceGuidance(detection.faces, detection.width, detection.height) + : 'Loading face detector…'} +

      + {onCapture && ( + + )} + {detectFaces && detectionError && ready && ( + <> +

      + {detectionError} +

      + + + )} + {error && ( + <> +

      + {error} +

      + + + )} +
      + ) +} diff --git a/src/components/selfie-check/SelfieCheckScreen.tsx b/src/components/selfie-check/SelfieCheckScreen.tsx new file mode 100644 index 0000000..d7843fd --- /dev/null +++ b/src/components/selfie-check/SelfieCheckScreen.tsx @@ -0,0 +1,215 @@ +import { Link } from 'react-router-dom' +import SelfieCamera from './SelfieCamera' +import { useNavigate } from 'react-router-dom' +import { checkExpiry } from '@/lib/requests/proof-request' +import { useCallback, useEffect, useRef, useState } from 'react' +import { checkRequestCredentials } from '@/lib/requests/incoming-request' +import { useAuthenticatorSession } from '@/components/AuthenticatorSession' +import { issueSelfieCredential, SelfieWalletTimeout } from '@/lib/selfie-issuance' + +export default function SelfieCheckScreen() { + const navigate = useNavigate() + const { incoming, wallet, initialized, setInitialized, shareStarted, clearRequest } = useAuthenticatorSession() + const operation = useRef(null) + const [phase, setPhase] = useState<'checking' | 'ready' | 'issuing' | 'retry' | 'returning'>('checking') + const [error, setError] = useState(null) + const [expired, setExpired] = useState(false) + const [closing, setClosing] = useState(false) + const [closed, setClosed] = useState(false) + const [progress, setProgress] = useState([]) + + useEffect(() => { + const controller = new AbortController() + if (!incoming || !initialized || !wallet.current || !shareStarted) return + const currentWallet = wallet.current + const timer = setTimeout( + () => { + setExpired(true) + controller.abort() + operation.current?.abort() + }, + Math.max(0, incoming.proof.expires_at * 1000 - Date.now()) + ) + const stop = () => { + controller.abort() + operation.current?.abort() + } + window.addEventListener('pagehide', stop) + void (async () => { + await incoming.validate(controller.signal) + if (incoming.unsupportedReason) throw new Error(incoming.unsupportedReason) + const available = await checkRequestCredentials(incoming, currentWallet, controller.signal) + controller.signal.throwIfAborted() + if (operation.current) return + if (available.satisfied) { + setPhase('returning') + navigate('/', { replace: true }) + } else if (available.canEnrollSelfie) { + setPhase('ready') + } else { + throw new Error('This request cannot be completed by issuing a demo selfie credential.') + } + })().catch(cause => { + if (!controller.signal.aborted) + setError(cause instanceof Error ? cause.message : 'Could not check this request.') + }) + return () => { + clearTimeout(timer) + window.removeEventListener('pagehide', stop) + stop() + } + }, [incoming, initialized, wallet, shareStarted, navigate]) + + const issue = useCallback(async () => { + if ( + !incoming || + !wallet.current || + !initialized || + !shareStarted || + expired || + incoming.unsupportedReason || + operation.current + ) + return + const controller = new AbortController() + operation.current = controller + const currentWallet = wallet.current + setError(null) + setProgress([]) + setPhase('issuing') + try { + await incoming.validate(controller.signal) + await issueSelfieCredential(currentWallet, controller.signal, message => { + if (!controller.signal.aborted) + setProgress(steps => (steps.at(-1) === message ? steps : [...steps, message].slice(-20))) + }) + controller.signal.throwIfAborted() + checkExpiry(incoming.proof) + setPhase('returning') + navigate('/', { replace: true }) + } catch (cause) { + if (cause instanceof SelfieWalletTimeout) { + wallet.current = null + setInitialized(false) + } + if (!controller.signal.aborted) { + setError( + cause instanceof Error + ? cause.message + : 'Demo issuance failed. Retry to resume the same enrollment.' + ) + setPhase('retry') + } + } finally { + operation.current = null + } + }, [incoming, wallet, initialized, shareStarted, expired, navigate, setInitialized]) + + const cancel = async () => { + if (!incoming || operation.current) return + const controller = new AbortController() + operation.current = controller + setClosing(true) + try { + await incoming.cancel(AbortSignal.any([controller.signal, AbortSignal.timeout(15000)])) + controller.signal.throwIfAborted() + clearRequest() + setClosed(true) + if (incoming.returnUrl) window.location.assign(incoming.returnUrl) + } catch (cause) { + if (!controller.signal.aborted) + setError(cause instanceof Error ? cause.message : 'Could not cancel the request. Try again.') + } finally { + operation.current = null + setClosing(false) + } + } + + return ( +
      +
      + World ID +

      {closed ? 'Request closed' : 'Set up Selfie Check'}

      + {!incoming ? ( + <> +

      + Open a new request from the requesting app to continue. Requests are kept only in this tab + and are cleared on reload. +

      + + Open authenticator + + + ) : ( + <> +

      Requested by {incoming.label}

      +

      Set up a selfie credential to continue with this request.

      +

      + Staging demo: the camera preview stays in this tab. Credential issuance still uses synthetic + face data; this capture does not verify your face. +

      + {(phase === 'ready' || phase === 'issuing' || phase === 'retry') && + initialized && + shareStarted && + !expired && + !closing && } + {(error || expired) && ( +

      + {expired ? 'This request expired. Start a new request from the requesting app.' : error} +

      + )} +
        + {progress.map((message, index) => ( +
      1. {message}
      2. + ))} +
      +
      + {phase === 'ready' && initialized && shareStarted && !expired && ( +
      + Developer tools + +
      + )} + {!initialized || !shareStarted ? ( + + Continue with your passkey + + ) : phase === 'retry' ? ( + + ) : ( + phase !== 'ready' && ( +

      + {phase === 'checking' + ? 'Checking credential…' + : phase === 'issuing' + ? 'Issuing demo credential…' + : 'Opening proof request…'} +

      + ) + )} + +
      + + )} +
      +
      + ) +} diff --git a/src/components/selfie-check/camera-capture.ts b/src/components/selfie-check/camera-capture.ts new file mode 100644 index 0000000..894b4bf --- /dev/null +++ b/src/components/selfie-check/camera-capture.ts @@ -0,0 +1,63 @@ +import { abortable } from '@/lib/staging-registration' + +// Keep the preview live until cancellation, tab hiding, or camera disconnection. +export async function startCamera(video: HTMLVideoElement, signal: AbortSignal, onReady: () => void): Promise { + if (!window.isSecureContext || !navigator.mediaDevices?.getUserMedia) + throw new Error('Camera access requires HTTPS or localhost and a supported browser.') + const interrupted = new AbortController() + const lifetime = AbortSignal.any([signal, interrupted.signal]) + const deadline = AbortSignal.any([lifetime, AbortSignal.timeout(30_000)]) + let stream: MediaStream | undefined + const stopTracks = (media: MediaStream) => media.getTracks().forEach(track => track.stop()) + const hidden = () => { + if (document.hidden) interrupted.abort(new Error('Camera stopped when you left this tab. Try again.')) + } + const ended = () => interrupted.abort(new Error('The camera disconnected. Reconnect it and try again.')) + document.addEventListener('visibilitychange', hidden) + window.addEventListener('pagehide', ended) + try { + hidden() + deadline.throwIfAborted() + const media = navigator.mediaDevices + .getUserMedia({ + audio: false, + video: { facingMode: 'user', width: { ideal: 1280 }, height: { ideal: 720 } }, + }) + .then(result => { + // Permission can resolve after cancellation or timeout. Never retain that stream. + if (deadline.aborted) stopTracks(result) + return result + }) + stream = await abortable(media, deadline) + deadline.throwIfAborted() + for (const track of stream.getVideoTracks()) track.addEventListener('ended', ended) + video.srcObject = stream + await abortable(video.play(), deadline) + onReady() + await new Promise((_, reject) => { + const abort = () => reject(lifetime.reason) + if (lifetime.aborted) abort() + else lifetime.addEventListener('abort', abort, { once: true }) + }) + } catch (cause) { + if (signal.aborted) throw signal.reason + if (interrupted.signal.aborted) throw interrupted.signal.reason + if (deadline.aborted) throw new Error('Camera capture timed out. Allow camera access and try again.') + if (cause instanceof DOMException && cause.name === 'NotAllowedError') + throw new Error('Camera access was denied. Allow it in your browser settings, then try again.') + if (cause instanceof DOMException && cause.name === 'NotFoundError') + throw new Error('No camera was found. Connect a camera and try again.') + if (cause instanceof DOMException && cause.name === 'NotReadableError') + throw new Error('The camera is unavailable. Close other apps using it and try again.') + throw cause + } finally { + if (stream) { + for (const track of stream.getVideoTracks()) track.removeEventListener('ended', ended) + stopTracks(stream) + } + video.pause() + video.srcObject = null + document.removeEventListener('visibilitychange', hidden) + window.removeEventListener('pagehide', ended) + } +} diff --git a/src/components/selfie-check/face-detector.ts b/src/components/selfie-check/face-detector.ts new file mode 100644 index 0000000..d8759c5 --- /dev/null +++ b/src/components/selfie-check/face-detector.ts @@ -0,0 +1,103 @@ +import type { FaceDetection } from './rgbnet' +import type { DetectorRequest, DetectorResponse } from './rgbnet.worker' + +export function startFaceDetector( + video: HTMLVideoElement, + signal: AbortSignal, + diagnostics: boolean, + onResult: (faces: FaceDetection[], width: number, height: number) => void, + onEvent: (message: string) => void, + onError: (message: string) => void +): () => void { + const worker = new Worker(new URL('./rgbnet.worker.ts', import.meta.url), { type: 'module' }) + let stopped = false, + frameId = 0, + lastVideoTime = -1, + lastSummary = -Infinity + let lastFrameAt = performance.now() + let timer: ReturnType | undefined + let deadline: ReturnType | undefined + const clearDeadline = () => { + if (deadline) clearTimeout(deadline) + } + const stop = () => { + if (stopped) return + stopped = true + clearDeadline() + if (timer) clearTimeout(timer) + worker.terminate() + signal.removeEventListener('abort', stop) + onEvent('RGBNet: worker stopped; session and pending frame released.') + } + const fail = (message: string) => { + if (stopped) return + onEvent(`RGBNet error: ${message}`) + onError(message) + stop() + } + const armDeadline = (ms: number, operation: string) => { + clearDeadline() + deadline = setTimeout(() => fail(`${operation} timed out. Retry detection.`), ms) + } + const capture = async () => { + if (stopped) return + if (video.readyState < 2 || video.currentTime === lastVideoTime) { + if (performance.now() - lastFrameAt > 10_000) { + fail('Camera stopped producing frames. Restart the camera.') + return + } + timer = setTimeout(() => void capture(), 100) + return + } + lastVideoTime = video.currentTime + lastFrameAt = performance.now() + armDeadline(10_000, 'Frame capture/inference') + try { + const bitmap = await createImageBitmap(video) + if (stopped) { + bitmap.close() + return + } + const request: DetectorRequest = { type: 'frame', bitmap, id: ++frameId } + try { + worker.postMessage(request, [bitmap]) + } catch (cause) { + bitmap.close() + throw cause + } + } catch (cause) { + fail(cause instanceof Error ? cause.message : 'Could not capture a frame') + } + } + worker.onmessage = ({ data }: MessageEvent) => { + if (stopped) return + if (data.type === 'log') onEvent(`RGBNet: ${data.message}`) + else if (data.type === 'error') fail(`${data.stage}: ${data.message}`) + else if (data.type === 'ready') { + clearDeadline() + lastFrameAt = performance.now() + void capture() + } else { + clearDeadline() + onResult(data.faces, data.width, data.height) + if (performance.now() - lastSummary >= 2000) { + onEvent(`RGBNet frame ${data.id}: ${data.timings}`) + lastSummary = performance.now() + } + // At most one in-flight frame; schedule from completion, never queue video. + timer = setTimeout(() => void capture(), 100) + } + } + worker.onerror = () => fail('Worker failed to load or execute. Check browser console and retry.') + worker.onmessageerror = () => fail('Could not decode detector worker response.') + signal.addEventListener('abort', stop, { once: true }) + if (signal.aborted) stop() + else { + armDeadline(45_000, 'Model/session startup') + worker.postMessage({ type: 'init', diagnostics } satisfies DetectorRequest) + onEvent( + `RGBNet: worker starting; detailed runtime logs ${diagnostics ? 'enabled in browser console' : 'disabled'}.` + ) + } + return stop +} diff --git a/src/components/selfie-check/rgbnet-model.json b/src/components/selfie-check/rgbnet-model.json new file mode 100644 index 0000000..989b9e5 --- /dev/null +++ b/src/components/selfie-check/rgbnet-model.json @@ -0,0 +1,6 @@ +{ + "url": "/models/rgbnet.onnx", + "sha256": "35e9bdee626e16721e4566d1e552ad369d8334658b7893ee62cf3a026f1c0d06", + "bytes": 1720022, + "source": "world-app-ios/Sources/FaceAuthLibrary/Sources/FaceEngineFaceAuthModel/MLModels/RGBNet.onnx" +} diff --git a/src/components/selfie-check/rgbnet.ts b/src/components/selfie-check/rgbnet.ts new file mode 100644 index 0000000..35ab623 --- /dev/null +++ b/src/components/selfie-check/rgbnet.ts @@ -0,0 +1,162 @@ +// Port of biometric-engines RGBNet preprocessing/decoding and pixel-space NMS. +// This provides capture guidance only; the TEE repeats authoritative validation. +export const INPUT_SIZE = 256 +export const ANCHOR_COUNT = 2688 +export type FaceDetection = { box: [number, number, number, number]; landmarks: number[]; score: number } +export type ModelOutput = { dims: readonly number[]; data: Float32Array } + +// fast_image_resize uses fixed-kernel bilinear interpolation, quantized weights, +// and rounds the vertical u8 pass before the horizontal pass. Canvas resizing +// is browser-dependent and does not reproduce this operation. +function axisWeights(size: number) { + const weights = Array.from({ length: INPUT_SIZE }, (_, i) => { + const center = ((i + 0.5) * size) / INPUT_SIZE - 0.5 + const left = Math.max(0, Math.min(size - 1, Math.floor(center))) + const right = Math.max(0, Math.min(size - 1, Math.floor(center) + 1)) + const fraction = left === right ? 0 : center - Math.floor(center) + return { left, right, a: 1 - fraction, b: fraction } + }) + const maximum = Math.max(...weights.map(w => Math.max(w.a, w.b))) + let precision = 0 + while (precision < 21 && Math.round(maximum * 2 ** (precision + 1)) < 32768) precision++ + const scale = 2 ** precision + return weights.map(w => ({ ...w, a: Math.round(w.a * scale), b: Math.round(w.b * scale), scale })) +} + +export function prepareRgbnet(rgba: Uint8ClampedArray, width: number, height: number): Float32Array { + if ( + !Number.isInteger(width) || + !Number.isInteger(height) || + width < 1 || + height < 1 || + width > 4096 || + height > 4096 || + rgba.length !== width * height * 4 + ) + throw new Error('Invalid RGBNet frame dimensions or RGBA buffer') + const xs = axisWeights(width), + ys = axisWeights(height) + const plane = INPUT_SIZE * INPUT_SIZE + const output = new Float32Array(3 * plane) + const means = [104, 117, 123] + for (let y = 0; y < INPUT_SIZE; y++) { + const v = ys[y] + for (let x = 0; x < INPUT_SIZE; x++) { + const h = xs[x] + for (let c = 0; c < 3; c++) { + const left = Math.round( + (rgba[(v.left * width + h.left) * 4 + c] * v.a + rgba[(v.right * width + h.left) * 4 + c] * v.b) / + v.scale + ) + const right = Math.round( + (rgba[(v.left * width + h.right) * 4 + c] * v.a + rgba[(v.right * width + h.right) * 4 + c] * v.b) / + v.scale + ) + output[c * plane + y * INPUT_SIZE + x] = + Math.min(255, Math.round((left * h.a + right * h.b) / h.scale)) - means[c] + } + } + } + return output +} + +export const anchors: readonly (readonly number[])[] = [8, 16, 32].flatMap((step, level) => { + const sizes = [ + [20, 33], + [53, 87], + [141, 230], + ][level] + const grid = INPUT_SIZE / step + return Array.from({ length: grid * grid }, (_, i) => + sizes.map(size => [ + (((i % grid) + 0.5) * step) / INPUT_SIZE, + ((Math.floor(i / grid) + 0.5) * step) / INPUT_SIZE, + size / INPUT_SIZE, + size / INPUT_SIZE, + ]) + ).flat() +}) + +export function suppressDuplicates(faces: FaceDetection[], threshold = 0.4): FaceDetection[] { + const kept: FaceDetection[] = [] + for (const face of [...faces].sort((a, b) => b.score - a.score)) { + const a = face.box.map(x => x * INPUT_SIZE) + const area = (a[2] - a[0] + 1) * (a[3] - a[1] + 1) + if ( + kept.every(other => { + const b = other.box.map(x => x * INPUT_SIZE) + const intersection = + Math.max(0, Math.min(a[2], b[2]) - Math.max(a[0], b[0]) + 1) * + Math.max(0, Math.min(a[3], b[3]) - Math.max(a[1], b[1]) + 1) + return intersection / (area + (b[2] - b[0] + 1) * (b[3] - b[1] + 1) - intersection) <= threshold + }) + ) + kept.push(face) + } + return kept +} + +export function decodeRgbnet(outputs: ModelOutput[]): FaceDetection[] { + const heads = new Map() + for (const output of outputs) { + const dims = output.dims.length === 3 && output.dims[0] === 1 ? output.dims.slice(1) : output.dims + const columns = dims[1] + if ( + dims.length !== 2 || + dims[0] !== ANCHOR_COUNT || + ![2, 4, 10].includes(columns) || + heads.has(columns) || + !(output.data instanceof Float32Array) || + output.data.length !== ANCHOR_COUNT * columns || + !output.data.every(Number.isFinite) + ) + throw new Error('Unexpected RGBNet output shape, type or non-finite value') + heads.set(columns, output.data) + } + if (heads.size !== 3) throw new Error('Missing RGBNet output head') + const boxes = heads.get(4)!, + scores = heads.get(2)!, + points = heads.get(10)! + const faces: FaceDetection[] = [] + const f = Math.fround, + clamp = (n: number) => Math.min(1, Math.max(0, n)) + for (let i = 0; i < ANCHOR_COUNT; i++) { + if (scores[i * 2 + 1] <= f(0.8)) continue + const anchor = anchors[i] + const center = [0, 1].map(c => f(f(f(boxes[i * 4 + c] * f(0.1)) * anchor[c + 2]) + anchor[c])) + const size = [0, 1].map(c => f(f(Math.exp(f(boxes[i * 4 + c + 2] * f(0.2)))) * anchor[c + 2])) + const start = center.map((v, c) => f(v - f(size[c] / 2))) + const box: FaceDetection['box'] = [ + clamp(start[0]), + clamp(start[1]), + clamp(f(start[0] + size[0])), + clamp(f(start[1] + size[1])), + ] + const landmarks = Array.from({ length: 10 }, (_, j) => + clamp(f(f(f(points[i * 10 + j] * f(0.1)) * anchor[(j % 2) + 2]) + anchor[j % 2])) + ) + if (![...box, ...landmarks].every(Number.isFinite)) throw new Error('Invalid decoded RGBNet coordinates') + faces.push({ box, landmarks, score: scores[i * 2 + 1] }) + } + return suppressDuplicates(faces) +} + +// Normalized source coordinates -> mirrored, centered object-cover preview. +export function previewPoint(x: number, y: number, width: number, height: number): [number, number] { + const scale = Math.max(1 / width, 1 / height) + return [1 - (x * width * scale - (width * scale - 1) / 2), y * height * scale - (height * scale - 1) / 2] +} + +export function faceGuidance(faces: FaceDetection[], width: number, height: number): string { + if (!faces.length) return 'No face detected' + if (faces.length > 1) return 'Keep only one face in view' + const [x1, y1, x2, y2] = faces[0].box + const [cx, cy] = previewPoint((x1 + x2) / 2, (y1 + y2) / 2, width, height) + const scale = Math.max(width, height) / Math.min(width, height) + const visibleWidth = (x2 - x1) * (width >= height ? scale : 1) + const visibleHeight = (y2 - y1) * (height >= width ? scale : 1) + if (Math.hypot(cx - 0.5, cy - 0.5) > 0.12) return 'Center your face' + if (visibleWidth < 0.25 || visibleHeight < 0.35) return 'Move closer' + if (visibleWidth > 0.8 || visibleHeight > 0.85) return 'Move farther away' + return 'Face positioned' +} diff --git a/src/components/selfie-check/rgbnet.worker.ts b/src/components/selfie-check/rgbnet.worker.ts new file mode 100644 index 0000000..0ee242f --- /dev/null +++ b/src/components/selfie-check/rgbnet.worker.ts @@ -0,0 +1,150 @@ +import model from './rgbnet-model.json' +import * as ort from 'onnxruntime-web/wasm' +import wasmUrl from 'onnxruntime-web/ort-wasm-simd-threaded.wasm?url' +import wasmModuleUrl from 'onnxruntime-web/ort-wasm-simd-threaded.mjs?url' +import { decodeRgbnet, prepareRgbnet, INPUT_SIZE, type FaceDetection } from './rgbnet' + +export type DetectorRequest = + | { type: 'init'; diagnostics: boolean } + | { type: 'frame'; bitmap: ImageBitmap; id: number } +export type DetectorResponse = + | { type: 'log'; message: string } + | { type: 'ready' } + | { type: 'result'; faces: FaceDetection[]; width: number; height: number; id: number; timings: string } + | { type: 'error'; stage: string; message: string } + +let session: ort.InferenceSession | undefined +let diagnostics = false +let busy = false +let stage = 'initialization' +const send = (message: DetectorResponse) => self.postMessage(message) +const log = (message: string) => { + if (diagnostics) console.debug(`[RGBNet] ${message}`) + send({ type: 'log', message }) +} +const trace = (message: string) => { + if (diagnostics) console.debug(`[RGBNet] ${message}`) +} + +self.onmessage = async ({ data }: MessageEvent) => { + if (busy) { + if (data.type === 'frame') data.bitmap.close() + send({ type: 'error', stage: 'protocol', message: 'Concurrent detector requests are not supported' }) + return + } + busy = true + try { + if (data.type === 'init') { + if (session) throw new Error('Detector already initialized') + diagnostics = data.diagnostics + ort.env.wasm.numThreads = 1 + ort.env.wasm.proxy = false + ort.env.wasm.wasmPaths = { + wasm: new URL(wasmUrl, self.location.href).href, + mjs: new URL(wasmModuleUrl, self.location.href).href, + } + ort.env.logLevel = diagnostics ? 'verbose' : 'warning' + stage = 'model download' + log(`Downloading RGBNet (${model.bytes} bytes expected). Frames remain on this device.`) + const response = await fetch(model.url, { signal: AbortSignal.timeout(20_000), credentials: 'omit' }) + if (!response.ok) + throw new Error(`Model download returned HTTP ${response.status}; run the RGBNet setup script`) + const bytes = await response.arrayBuffer() + if (bytes.byteLength !== model.bytes) throw new Error('Model length mismatch; run the RGBNet setup script') + stage = 'model integrity' + const hash = Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256', bytes)), b => + b.toString(16).padStart(2, '0') + ).join('') + if (hash !== model.sha256) throw new Error('Model SHA-256 mismatch; refusing to run unpinned weights') + log(`Model SHA-256 verified: ${hash}`) + stage = 'Wasm session creation' + const start = performance.now() + log('Creating ONNX Runtime session: Wasm CPU, SIMD, one thread, dedicated worker.') + session = await ort.InferenceSession.create(bytes, { + executionProviders: ['wasm'], + graphOptimizationLevel: 'all', + logSeverityLevel: diagnostics ? 0 : 2, + logVerbosityLevel: diagnostics ? 1 : 0, + }) + if (session.inputNames.length !== 1 || session.outputNames.length !== 3) + throw new Error('Unexpected RGBNet model interface') + log( + `Session created in ${(performance.now() - start).toFixed(1)}ms; input=${session.inputNames.join(',')}; outputs=${session.outputNames.join(',')}.` + ) + stage = 'warm-up' + const warmup = new ort.Tensor( + 'float32', + prepareRgbnet(new Uint8ClampedArray(INPUT_SIZE * INPUT_SIZE * 4), INPUT_SIZE, INPUT_SIZE), + [1, 3, INPUT_SIZE, INPUT_SIZE] + ) + try { + const outputs = await session.run({ [session.inputNames[0]]: warmup }) + try { + decodeRgbnet(Object.values(outputs).map(t => ({ dims: t.dims, data: t.data as Float32Array }))) + } finally { + for (const output of Object.values(outputs)) output.dispose() + } + } finally { + warmup.dispose() + } + log('Warm-up and output-shape validation complete; detector ready.') + send({ type: 'ready' }) + } else { + const { bitmap, id } = data + try { + if (!session) throw new Error('Detector session is not ready') + const { width, height } = bitmap + if (width < 1 || height < 1 || width > 4096 || height > 4096) throw new Error('Unsupported frame size') + stage = 'frame extraction' + const start = performance.now() + trace(`frame ${id}: extraction begin (${width}x${height})`) + const canvas = new OffscreenCanvas(width, height) + const context = canvas.getContext('2d', { willReadFrequently: true }) + if (!context) throw new Error('OffscreenCanvas 2D is unavailable') + context.drawImage(bitmap, 0, 0) + const pixels = context.getImageData(0, 0, width, height) + const extracted = performance.now() + stage = 'preprocessing' + trace(`frame ${id}: preprocessing begin (bilinear RGB, mean subtraction, NCHW)`) + const input = new ort.Tensor('float32', prepareRgbnet(pixels.data, width, height), [ + 1, + 3, + INPUT_SIZE, + INPUT_SIZE, + ]) + const prepared = performance.now() + try { + stage = 'inference' + trace(`frame ${id}: ONNX session.run begin`) + const outputs = await session.run({ [session.inputNames[0]]: input }) + const inferred = performance.now() + try { + stage = 'decoding' + trace(`frame ${id}: output validation, anchors, confidence filter and NMS begin`) + const faces = decodeRgbnet( + Object.values(outputs).map(t => ({ dims: t.dims, data: t.data as Float32Array })) + ) + const timings = `extract ${(extracted - start).toFixed(1)}ms; preprocess ${(prepared - extracted).toFixed(1)}ms; inference ${(inferred - prepared).toFixed(1)}ms; decode ${(performance.now() - inferred).toFixed(1)}ms` + trace(`frame ${id}: completed; ${timings}`) + send({ type: 'result', faces, width, height, id, timings }) + } finally { + for (const output of Object.values(outputs)) output.dispose() + } + } finally { + input.dispose() + trace(`frame ${id}: tensors disposed`) + } + } finally { + bitmap.close() + trace(`frame ${id}: bitmap released`) + } + } + } catch (cause) { + // Only operation errors are logged; never frames, tensors, landmarks or embeddings. + const message = cause instanceof Error ? cause.message : 'ONNX Runtime operation failed' + console.error(`[RGBNet] ${stage}: ${message}`) + send({ type: 'error', stage, message }) + } finally { + busy = false + } +} diff --git a/src/hooks/useLocalTeeConnection.ts b/src/hooks/useLocalTeeConnection.ts new file mode 100644 index 0000000..c5b4b5c --- /dev/null +++ b/src/hooks/useLocalTeeConnection.ts @@ -0,0 +1,73 @@ +import { requestDemoToken } from '@/lib/tee-admission' +import { useCallback, useEffect, useRef, useState } from 'react' +import { connect, type ConnectionPreparation } from '@/lib/tee-connection' + +/** Keeps an in-flight admission request across the button-to-camera navigation. */ +export function useLocalTeeConnection() { + const operation = useRef(null) + const [pending, setPending] = useState(false) + const [logs, setLogs] = useState<{ time: string; message: string }[]>([]) + const [result, setResult] = useState({ + status: 'unavailable', + reason: 'TEE: not connected. Upload disabled.', + }) + const log = useCallback((message: string) => { + setLogs(entries => [...entries, { time: new Date().toLocaleTimeString(), message }].slice(-50)) + }, []) + const stop = useCallback(() => { + if (operation.current) { + operation.current.abort() + operation.current = null + log('Connection attempt cancelled.') + } + setPending(false) + setResult({ status: 'unavailable', reason: 'TEE: not connected. Upload disabled.' }) + }, [log]) + const start = useCallback(() => { + if (operation.current) return + const controller = new AbortController() + operation.current = controller + setPending(true) + setResult({ status: 'unavailable', reason: 'Connecting to local TEE… Upload disabled.' }) + log('Requesting the demo token from the local admission provider.') + void requestDemoToken(controller.signal) + .then(token => { + controller.signal.throwIfAborted() + log('Demo token provisioned. Starting POST /v1/connect.') + return connect(controller.signal, token) + }) + .then(next => { + if (!controller.signal.aborted) { + setResult(next) + log(`${next.httpStatus ? `HTTP ${next.httpStatus} · ` : ''}${next.reason}`) + } + }) + .catch(error => { + if (!controller.signal.aborted) { + const reason = error instanceof Error ? error.message : 'Local TEE connection failed.' + setResult({ status: 'unavailable', reason }) + log(reason) + } + }) + .finally(() => { + if (operation.current === controller) { + operation.current = null + setPending(false) + } + }) + }, [log]) + useEffect(() => () => operation.current?.abort(), []) + useEffect(() => { + if (result.status !== 'connected') return + const timer = setTimeout( + () => { + const reason = 'Local token expired. Reconnect with a new token. Upload disabled.' + setResult({ status: 'forbidden', reason }) + log(reason) + }, + Math.max(0, result.expiresAt - Date.now()) + ) + return () => clearTimeout(timer) + }, [result, log]) + return { start, stop, pending, result, logs } +} diff --git a/src/lib/authenticator-session.ts b/src/lib/authenticator-session.ts new file mode 100644 index 0000000..affbdc3 --- /dev/null +++ b/src/lib/authenticator-session.ts @@ -0,0 +1,118 @@ +import { parse, stringify } from 'lossless-json' +import type { PasskeySecrets } from './passkey-secrets' +import { abortable, passkeyStorageId } from './staging-registration' +import type { InitializeOptions, RecoveryData, WalletKit } from './walletkit' + +export async function initializeAuthenticator( + secrets: PasskeySecrets, + credentialId: string, + expected: RecoveryData, + signal: AbortSignal, + initialize?: (options: InitializeOptions) => Promise +): Promise { + const deadline = AbortSignal.any([signal, AbortSignal.timeout(120_000)]) + let wallet: WalletKit | undefined + const terminate = () => wallet?.terminate() + deadline.addEventListener('abort', terminate, { once: true }) + let stage = 'load WalletKit' + try { + const init = initialize ?? (await abortable(import('./walletkit'), deadline)).initializeWalletKit + const storageId = await passkeyStorageId(credentialId) + deadline.throwIfAborted() + wallet = await init({ + databaseKey: secrets.databaseKey, + storageId, + environment: 'staging', + region: 'us', + signal: deadline, + }) + stage = 'check the saved account identity' + const actual = await abortable(wallet.recoveryDataFromSeed(secrets.seed), deadline) + if ( + actual.authenticatorAddress.toLowerCase() !== expected.authenticatorAddress.toLowerCase() || + actual.authenticatorPubkey !== expected.authenticatorPubkey || + actual.offchainSignerCommitment !== expected.offchainSignerCommitment + ) { + throw new Error('Passkey-derived identity does not match the saved registration.') + } + stage = 'initialize the registered authenticator and encrypted vault' + await abortable(wallet.initializeAuthenticator(secrets.seed), deadline) + deadline.throwIfAborted() + return wallet + } catch (cause) { + wallet?.terminate() + if (signal.aborted) throw signal.reason + throw new Error( + `Could not ${stage}.${deadline.aborted ? ' The two-minute deadline expired.' : ''} Unlock again to retry.`, + { cause } + ) + } finally { + deadline.removeEventListener('abort', terminate) + secrets.seed.fill(0) + secrets.databaseKey.fill(0) + } +} + +export interface FauxIssuanceExchange { + request: { method: 'POST'; url: '/api/faux-credential'; body: { sub: string } } + response?: { status: number; body: string } +} + +export async function issueFauxCredential( + wallet: WalletKit, + signal: AbortSignal, + request: typeof fetch = fetch, + onExchange?: (exchange: FauxIssuanceExchange) => void +) { + const deadline = AbortSignal.any([signal, AbortSignal.timeout(60_000)]) + const terminate = () => wallet.terminate() + deadline.addEventListener('abort', terminate, { once: true }) + let stage = 'prepare the credential subject' + try { + deadline.throwIfAborted() + const { blindingFactor, sub } = await abortable(wallet.prepareCredential(BigInt(128)), deadline) + stage = 'request the staging faux credential' + const exchange: FauxIssuanceExchange = { + request: { method: 'POST', url: '/api/faux-credential', body: { sub } }, + } + onExchange?.(exchange) + const response = await request('/api/faux-credential', { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ sub }), + signal: deadline, + }) + const text = await response.text() + if (text.length > 1_000_000) throw new Error('Faux issuer response exceeds size limit') + onExchange?.({ ...exchange, response: { status: response.status, body: text } }) + if (!response.ok) throw new Error(`Faux issuer HTTP ${response.status}`) + // Signed credential integers can exceed Number.MAX_SAFE_INTEGER. Preserve their exact bytes. + const body = parse(text) as { credential?: unknown } | null + if ( + !body || + typeof body.credential !== 'object' || + body.credential === null || + Array.isArray(body.credential) + ) { + throw new Error('Faux issuer response did not contain a credential object') + } + const serialized = stringify(body.credential) + if (!serialized) throw new Error('Faux issuer credential could not be serialized') + stage = 'store the issued credential in the encrypted vault' + const stored = await abortable( + wallet.storeCredential(new TextEncoder().encode(serialized), blindingFactor), + deadline + ) + if (stored.issuerSchemaId !== BigInt(128)) throw new Error('Unexpected stored issuer schema') + return stored + } catch (cause) { + wallet.terminate() + if (signal.aborted) throw signal.reason + throw new Error( + `Could not ${stage}.${deadline.aborted ? ' The one-minute deadline expired.' : ''} No automatic retry was made; unlock and initialize again before retrying.`, + { cause } + ) + } finally { + deadline.removeEventListener('abort', terminate) + } +} diff --git a/src/lib/client-context.ts b/src/lib/client-context.ts new file mode 100644 index 0000000..c50db1f --- /dev/null +++ b/src/lib/client-context.ts @@ -0,0 +1,47 @@ +interface RequestNetwork { + ip: string | null + source: 'x-forwarded-for' | 'x-real-ip' | 'unavailable' + verified: false +} + +function parseNetwork(value: unknown): RequestNetwork { + if (typeof value !== 'object' || value === null) throw new Error('Invalid network context') + const record = value as Record + if ( + !(record.ip === null || (typeof record.ip === 'string' && record.ip.length <= 45)) || + !['x-forwarded-for', 'x-real-ip', 'unavailable'].includes(String(record.source)) || + record.verified !== false + ) { + throw new Error('Invalid network context') + } + return { ip: record.ip as string | null, source: record.source as RequestNetwork['source'], verified: false } +} + +// Intentionally logs the requested IP/device diagnostics only. No credential IDs or key material. +export async function logRegistrationClick(): Promise { + const timestamp = new Date().toISOString() + const device = { + userAgent: navigator.userAgent, + platform: navigator.platform, + language: navigator.language, + timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone, + } + let network: RequestNetwork = { ip: null, source: 'unavailable', verified: false } + let lookup: 'ok' | 'failed' = 'failed' + try { + const response = await fetch('/api/client-context', { cache: 'no-store', signal: AbortSignal.timeout(3000) }) + if (!response.ok) throw new Error('Network context lookup failed') + network = parseNetwork(await response.json()) + lookup = 'ok' + } catch { + // Diagnostics are best-effort and must not prevent the passkey operation. + console.warn('registration_context_lookup_failed', { operation: 'client-context', timeoutMs: 3000 }) + } + console.info('passkey_registration_click', { + event: 'passkey_registration_click', + timestamp, + network: { ...network, lookup }, + device, + integrity: { verified: false, source: 'unattested_browser_context' }, + }) +} diff --git a/src/lib/demo-profile.ts b/src/lib/demo-profile.ts new file mode 100644 index 0000000..4a785b9 --- /dev/null +++ b/src/lib/demo-profile.ts @@ -0,0 +1,77 @@ +import type { CreatedPasskey } from './passkey' +import type { RecoveryData } from './walletkit' + +export const PROFILE_KEY = 'world-id-passkey-registration-v1' + +// Only public metadata goes here. PRF outputs, seeds, and database keys never do. +export interface DemoProfile { + version: 1 + passkey: CreatedPasskey + registration: 'created' | 'submitting' | 'finalized' + publicMaterial?: RecoveryData +} + +function isPublicMaterial(value: unknown): value is RecoveryData { + if (typeof value !== 'object' || value === null) return false + const material = value as Record + return ['authenticatorAddress', 'authenticatorPubkey', 'offchainSignerCommitment'].every( + key => typeof material[key] === 'string' && material[key].length > 0 && material[key].length <= 1024 + ) +} + +export function loadDemoProfile(storage: Pick): DemoProfile | null { + let saved: string | null + try { + saved = storage.getItem(PROFILE_KEY) + } catch { + throw new Error('Browser storage is unavailable. Enable site storage before continuing.') + } + if (saved === null) return null + try { + const profile = JSON.parse(saved) as Partial | null + if ( + !profile || + profile.version !== 1 || + typeof profile.passkey?.credentialId !== 'string' || + !/^[A-Za-z0-9_-]{1,2048}$/.test(profile.passkey.credentialId) || + profile.passkey.credentialId.length % 4 === 1 || + typeof profile.passkey.prfSupported !== 'boolean' || + !['created', 'submitting', 'finalized'].includes(profile.registration ?? '') || + (profile.publicMaterial !== undefined && !isPublicMaterial(profile.publicMaterial)) || + (profile.registration === 'finalized' && !isPublicMaterial(profile.publicMaterial)) + ) { + throw new Error('Invalid profile') + } + return profile as DemoProfile + } catch { + throw new Error( + 'The saved passkey record is invalid. It has been preserved; this demo will not replace it with a new identity.' + ) + } +} + +export function saveDemoProfile(storage: Pick, profile: DemoProfile): void { + // Explicit projection prevents future callers from accidentally serializing secrets. + const material = profile.publicMaterial + const record: DemoProfile = { + version: 1, + passkey: { credentialId: profile.passkey.credentialId, prfSupported: profile.passkey.prfSupported }, + registration: profile.registration, + ...(material + ? { + publicMaterial: { + authenticatorAddress: material.authenticatorAddress, + authenticatorPubkey: material.authenticatorPubkey, + offchainSignerCommitment: material.offchainSignerCommitment, + }, + } + : {}), + } + try { + storage.setItem(PROFILE_KEY, JSON.stringify(record)) + } catch { + throw new Error( + 'Could not save passkey progress in browser storage. Keep this page open and enable site storage before continuing.' + ) + } +} diff --git a/src/lib/flow-logging.ts b/src/lib/flow-logging.ts new file mode 100644 index 0000000..4617c0b --- /dev/null +++ b/src/lib/flow-logging.ts @@ -0,0 +1,37 @@ +// Never log arguments, results, or raw dependency errors: they can contain secrets. +export async function logFlowStep(step: string, operation: () => Promise): Promise { + const started = performance.now() + console.info('authenticator_step', { step, status: 'started' }) + try { + const result = await operation() + console.info('authenticator_step', { + step, + status: 'completed', + durationMs: Math.round(performance.now() - started), + }) + return result + } catch (error) { + const allowedNames = [ + 'AbortError', + 'TimeoutError', + 'NotAllowedError', + 'NotSupportedError', + 'SecurityError', + 'TypeError', + 'LinkError', + 'CompileError', + 'RuntimeError', + 'DataError', + 'InvalidStateError', + 'QuotaExceededError', + ] + const category = error instanceof Error && allowedNames.includes(error.name) ? error.name : 'OperationError' + console.error('authenticator_step', { + step, + status: 'failed', + category, + durationMs: Math.round(performance.now() - started), + }) + throw error + } +} diff --git a/src/lib/passkey-secrets.ts b/src/lib/passkey-secrets.ts new file mode 100644 index 0000000..1211305 --- /dev/null +++ b/src/lib/passkey-secrets.ts @@ -0,0 +1,36 @@ +export const AUTHENTICATOR_SALT = 'web.world.org/authenticator' +export const STORAGE_SALT = 'web.world.org/storage' +export const AUTHENTICATOR_INFO = 'web.world.org/v1/authenticator-secret' +export const STORAGE_INFO = 'web.world.org/v1/storage-secret' + +export interface PasskeySecrets { + seed: Uint8Array + databaseKey: Uint8Array +} + +// RFC 5869 HKDF-Expand-SHA256 for exactly one 32-byte block: HMAC(PRK, info || 0x01). +// WebCrypto HKDF also performs Extract, which is not part of this derivation spec. +export async function expandSecret(prfOutput: ArrayBuffer, info: string): Promise> { + if (prfOutput.byteLength !== 32) throw new Error('Expected a 32-byte PRF output.') + const key = await crypto.subtle.importKey('raw', prfOutput, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']) + const label = new TextEncoder().encode(info) + const input = new Uint8Array(label.length + 1) + input.set(label) + input[label.length] = 1 + return new Uint8Array(await crypto.subtle.sign('HMAC', key, input)) +} + +export async function derivePasskeySecrets(first: ArrayBuffer, second: ArrayBuffer): Promise { + let seed: Uint8Array | undefined + try { + seed = await expandSecret(first, AUTHENTICATOR_INFO) + const databaseKey = await expandSecret(second, STORAGE_INFO) + return { seed, databaseKey } + } catch (error) { + seed?.fill(0) + throw error + } finally { + new Uint8Array(first).fill(0) + new Uint8Array(second).fill(0) + } +} diff --git a/src/lib/passkey.ts b/src/lib/passkey.ts new file mode 100644 index 0000000..8df9802 --- /dev/null +++ b/src/lib/passkey.ts @@ -0,0 +1,123 @@ +import { logFlowStep } from './flow-logging' +import { describePrfValue, prfBytes } from './prf-result' +import { AUTHENTICATOR_SALT, STORAGE_SALT, derivePasskeySecrets, type PasskeySecrets } from './passkey-secrets' + +export interface CreatedPasskey { + readonly credentialId: string + readonly prfSupported: boolean +} + +function ownedArrayBuffer(bytes: Uint8Array): ArrayBuffer { + const buffer = new ArrayBuffer(bytes.byteLength) + new Uint8Array(buffer).set(bytes) + return buffer +} + +// Local PRF ceremony: no server uses this challenge to authenticate a session. +// The random user handle identifies a new local passkey, not a World ID account. +export async function createPasskey(signal: AbortSignal): Promise { + if ( + !window.isSecureContext || + typeof PublicKeyCredential === 'undefined' || + typeof navigator.credentials?.create !== 'function' + ) { + throw new Error('Passkeys require a supported browser on HTTPS or localhost.') + } + const challengeBytes = crypto.getRandomValues(new Uint8Array(32)) + const userIdBytes = crypto.getRandomValues(new Uint8Array(32)) + const challenge = ownedArrayBuffer(challengeBytes) + const userId = ownedArrayBuffer(userIdBytes) + const rp = window.location.hostname === 'localhost' ? { id: 'localhost', name: 'World ID' } : { name: 'World ID' } + const publicKey = { + challenge, + rp, + user: { + id: userId, + name: `world-id-passkey-${Date.now()}`, + displayName: 'World ID', + }, + pubKeyCredParams: [ + { type: 'public-key' as const, alg: -7 }, + { type: 'public-key' as const, alg: -257 }, + ], + authenticatorSelection: { + residentKey: 'required' as const, + requireResidentKey: true, + userVerification: 'required' as const, + }, + timeout: 60_000, + attestation: 'none' as const, + extensions: { prf: {} }, + } satisfies PublicKeyCredentialCreationOptions & { + readonly extensions: AuthenticationExtensionsClientInputs & { + readonly prf: Record + } + } + + try { + const credential = await logFlowStep('passkey.create', () => + navigator.credentials.create({ publicKey, signal }) + ) + if (!(credential instanceof PublicKeyCredential)) { + throw new Error('The browser did not return a passkey. Please try again.') + } + const extensions = credential.getClientExtensionResults() as AuthenticationExtensionsClientOutputs & { + prf?: { enabled?: boolean } + } + return { credentialId: credential.id, prfSupported: extensions.prf?.enabled === true } + } finally { + challengeBytes.fill(0) + userIdBytes.fill(0) + new Uint8Array(challenge).fill(0) + new Uint8Array(userId).fill(0) + } +} + +export async function unlockPasskey(created: CreatedPasskey, signal: AbortSignal): Promise { + if (!created.prfSupported) + throw new Error('This passkey provider did not report PRF support. Registration requires PRF.') + const encoder = new TextEncoder() + const id = Uint8Array.from(atob(created.credentialId.replace(/-/g, '+').replace(/_/g, '/')), c => c.charCodeAt(0)) + const publicKey = { + challenge: crypto.getRandomValues(new Uint8Array(32)), + rpId: window.location.hostname, + allowCredentials: [{ type: 'public-key' as const, id }], + userVerification: 'required' as const, + timeout: 60_000, + extensions: { + prf: { eval: { first: encoder.encode(AUTHENTICATOR_SALT), second: encoder.encode(STORAGE_SALT) } }, + }, + } satisfies PublicKeyCredentialRequestOptions & { + extensions: AuthenticationExtensionsClientInputs & { + prf: { eval: { first: Uint8Array; second: Uint8Array } } + } + } + const credential = await logFlowStep('passkey.unlock_prf', () => navigator.credentials.get({ publicKey, signal })) + if (!(credential instanceof PublicKeyCredential) || credential.id !== created.credentialId) { + throw new Error('The browser did not return the selected passkey.') + } + const { prf } = credential.getClientExtensionResults() as AuthenticationExtensionsClientOutputs & { + prf?: { results?: { first?: unknown; second?: unknown } } + } + // Log shape only. Never pass the extension object or its secret bytes to console. + console.info('passkey_prf_result', { + prfPresent: prf !== undefined, + first: describePrfValue(prf?.results?.first), + second: describePrfValue(prf?.results?.second), + }) + const first = prfBytes(prf?.results?.first) + const second = prfBytes(prf?.results?.second) + try { + if (!first || !second) { + const missing = !first && !second ? 'either' : !first ? 'the authenticator' : 'the storage' + throw new Error( + `The passkey did not return a valid 32-byte result for ${missing} PRF input. Registration has not started. See passkey_prf_result in the console for output types and lengths.` + ) + } + signal.throwIfAborted() + return await logFlowStep('passkey.derive_secrets', () => derivePasskeySecrets(first.buffer, second.buffer)) + } finally { + first?.fill(0) + second?.fill(0) + } +} diff --git a/src/lib/prf-result.ts b/src/lib/prf-result.ts new file mode 100644 index 0000000..1d35aff --- /dev/null +++ b/src/lib/prf-result.ts @@ -0,0 +1,44 @@ +// Browser APIs return ArrayBuffers, but injected providers may return typed-array +// views or buffers from another realm. Normalize bytes without changing derivation. +// 1Password FS-5593 also reports plain byte arrays in its browser extension. +export function prfBytes(value: unknown): Uint8Array | undefined { + if (Array.isArray(value)) { + // Check every index: Array.every would skip holes, and Uint8Array would + // silently coerce missing, fractional, or out-of-range values. + if (value.length !== 32) return undefined + for (let i = 0; i < value.length; i++) { + if (!Number.isInteger(value[i]) || value[i] < 0 || value[i] > 255) return undefined + } + return Uint8Array.from(value) + } + let view: Uint8Array + try { + if (ArrayBuffer.isView(value)) { + view = new Uint8Array(value.buffer, value.byteOffset, value.byteLength) + } else { + // Use the native brand check; instanceof rejects cross-realm ArrayBuffers. + const byteLength = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength')!.get!.call(value) + view = new Uint8Array(value as ArrayBuffer, 0, byteLength) + } + } catch { + return undefined + } + try { + return view.byteLength === 32 ? new Uint8Array(view) : undefined + } finally { + view.fill(0) + } +} + +export function describePrfValue(value: unknown): { type: string; byteLength?: number } { + if (value === undefined) return { type: 'missing' } + if (value === null) return { type: 'null' } + if (Array.isArray(value)) return { type: 'array', byteLength: value.length } + if (ArrayBuffer.isView(value)) return { type: 'buffer-view', byteLength: value.byteLength } + try { + const byteLength = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength')!.get!.call(value) + return { type: 'array-buffer', byteLength } + } catch { + return { type: typeof value } + } +} diff --git a/src/lib/request-ip.ts b/src/lib/request-ip.ts new file mode 100644 index 0000000..e110870 --- /dev/null +++ b/src/lib/request-ip.ts @@ -0,0 +1,13 @@ +import { isIP } from 'node:net' + +export function requestIp(headers: Pick) { + // No deployment-specific trusted proxy is configured. These are observations, + // not verified client identity; never use them for an authorization decision. + for (const source of ['x-forwarded-for', 'x-real-ip'] as const) { + const header = headers.get(source) + if (!header || header.length > 1024) continue + const candidate = header.split(',')[0].trim() + if (isIP(candidate)) return { ip: candidate, source, verified: false as const } + } + return { ip: null, source: 'unavailable' as const, verified: false as const } +} diff --git a/src/lib/requests/bridge.ts b/src/lib/requests/bridge.ts new file mode 100644 index 0000000..6f5f0d4 --- /dev/null +++ b/src/lib/requests/bridge.ts @@ -0,0 +1,84 @@ +import { decodeBase64, type Connector } from './connector' + +function encode(bytes: Uint8Array): string { + let raw = '' + for (const byte of bytes) raw += String.fromCharCode(byte) + return btoa(raw) +} +export async function readBounded(response: Response, limit = 262144): Promise { + const reader = response.body?.getReader() + if (!reader) throw new Error('The bridge returned an empty response.') + const chunks: Uint8Array[] = [] + let size = 0 + try { + while (true) { + const { value, done } = await reader.read() + if (done) break + size += value.byteLength + if (size > limit) { + await reader.cancel() + throw new Error('The bridge response is too large.') + } + chunks.push(value) + } + } finally { + reader.releaseLock() + } + const bytes = new Uint8Array(size) + let offset = 0 + for (const chunk of chunks) { + bytes.set(chunk, offset) + offset += chunk.length + } + return new TextDecoder('utf-8', { fatal: true }).decode(bytes) +} +export async function openBridge(connector: Connector, signal: AbortSignal) { + const key = await crypto.subtle.importKey('raw', connector.key, 'AES-GCM', false, ['decrypt', 'encrypt']) + connector.key.fill(0) + const response = await fetch(`${connector.bridgeUrl}/request/${connector.requestId}`, { + signal: AbortSignal.any([signal, AbortSignal.timeout(15000)]), + credentials: 'omit', + referrerPolicy: 'no-referrer', + cache: 'no-store', + redirect: 'error', + }) + if (!response.ok) + throw new Error( + response.status === 404 + ? 'This request expired or was already consumed. Start a new request on the relying-party site.' + : `Bridge request fetch failed (HTTP ${response.status}).` + ) + const wrapper = JSON.parse(await readBounded(response)) as { iv?: unknown; payload?: unknown } + const iv = decodeBase64(wrapper.iv, 12) + const encrypted = decodeBase64(wrapper.payload, 196608) + if (iv.length !== 12 || encrypted.length < 16) throw new Error('Invalid encrypted bridge payload.') + let plaintext: ArrayBuffer + try { + plaintext = await crypto.subtle.decrypt({ name: 'AES-GCM', iv }, key, encrypted) + } catch { + throw new Error('Could not decrypt the request. The connector key may be invalid.') + } + const json = new TextDecoder('utf-8', { fatal: true }).decode(plaintext) + new Uint8Array(plaintext).fill(0) + return { + json, + async send(payload: unknown, signal: AbortSignal) { + const iv = crypto.getRandomValues(new Uint8Array(12)) + const encrypted = await crypto.subtle.encrypt( + { name: 'AES-GCM', iv }, + key, + new TextEncoder().encode(JSON.stringify(payload)) + ) + const response = await fetch(`${connector.bridgeUrl}/response/${connector.requestId}`, { + method: 'PUT', + headers: { 'content-type': 'application/json' }, + credentials: 'omit', + referrerPolicy: 'no-referrer', + redirect: 'error', + body: JSON.stringify({ iv: encode(iv), payload: encode(new Uint8Array(encrypted)) }), + signal: AbortSignal.any([signal, AbortSignal.timeout(15000)]), + }) + if (!response.ok) throw new Error(`Bridge response upload failed (HTTP ${response.status}).`) + }, + } +} diff --git a/src/lib/requests/connector.ts b/src/lib/requests/connector.ts new file mode 100644 index 0000000..67cdd9c --- /dev/null +++ b/src/lib/requests/connector.ts @@ -0,0 +1,57 @@ +export const BRIDGE_ORIGINS = ['https://bridge.worldcoin.org', 'https://staging-bridge.worldcoin.org'] +export type Connector = { requestId: string; key: Uint8Array; bridgeUrl: string; returnUrl?: string } + +export function decodeBase64(value: unknown, maxBytes: number): Uint8Array { + if ( + typeof value !== 'string' || + value.length > Math.ceil(maxBytes / 3) * 4 || + !/^[A-Za-z0-9+/]*={0,2}$/.test(value) + ) + throw new Error('Invalid bridge encoding.') + let raw: string + try { + raw = atob(value) + } catch { + throw new Error('Invalid bridge encoding.') + } + if (raw.length > maxBytes) throw new Error('Bridge payload is too large.') + return Uint8Array.from(raw, char => char.charCodeAt(0)) +} +export function returnUrl(value: string | null | undefined): string | undefined { + if (!value) return undefined + if (value.length > 2048) throw new Error('Return URL is too long.') + let url: URL + try { + url = new URL(value) + } catch { + throw new Error('Invalid return URL.') + } + if ( + url.username || + url.password || + !( + url.protocol === 'https:' || + (url.protocol === 'http:' && ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname)) + ) + ) + throw new Error('Return URL must use HTTPS or HTTP localhost.') + return url.href +} +export function parseConnector(href: string): Connector | null { + const params = new URL(href).searchParams + if (!params.has('i') && !params.has('k')) return null + for (const name of ['i', 'k', 'b', 't', 'return_to']) + if (params.getAll(name).length > 1) throw new Error('Duplicate connector parameters.') + const requestId = params.get('i') ?? '' + if ( + !/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(requestId) || + (params.has('t') && params.get('t') !== 'wld') + ) + throw new Error('Invalid World ID connector link.') + const key = decodeBase64(params.get('k'), 32) + if (key.byteLength !== 32) throw new Error('The connector needs a 32-byte bridge key.') + const bridgeUrl = (params.get('b') || BRIDGE_ORIGINS[0]).replace(/\/$/, '') + if (!BRIDGE_ORIGINS.includes(bridgeUrl)) + throw new Error('This authenticator only accepts the official World ID bridges.') + return { requestId, key, bridgeUrl, returnUrl: returnUrl(params.get('return_to')) } +} diff --git a/src/lib/requests/incoming-request.ts b/src/lib/requests/incoming-request.ts new file mode 100644 index 0000000..396f900 --- /dev/null +++ b/src/lib/requests/incoming-request.ts @@ -0,0 +1,77 @@ +import { openBridge } from './bridge' +import type { WalletKit } from '../walletkit' +import { abortable } from '../staging-registration' +import { parseConnector, returnUrl } from './connector' +import { + credentialAvailability, + parsePayload, + validateSignature, + checkExpiry, + type ProofRequest, +} from './proof-request' + +export type IncomingRequest = { + proof: ProofRequest + label: string + appId?: string + actionLabel: string + returnUrl?: string + unsupportedReason?: string + validate: (signal: AbortSignal) => Promise + deliver: (proof: string, signal: AbortSignal) => Promise + cancel: (signal: AbortSignal) => Promise +} +export async function loadIncomingRequest( + href: string, + signal: AbortSignal, + progress: (message: string) => void +): Promise { + const connector = parseConnector(href) + if (!connector) return null + progress('Fetching the encrypted request from the World ID bridge…') + const bridge = await openBridge(connector, signal) + progress('Request decrypted. Checking staging metadata and signature…') + const payload = parsePayload(bridge.json) + await validateSignature(payload.proof_request, signal) + const callback = returnUrl(payload.return_to_url) ?? connector.returnUrl + // URL metadata cannot replace a different callback inside the encrypted request. + if (connector.returnUrl && callback !== connector.returnUrl) + throw new Error('Connector and encrypted request return URLs disagree.') + return { + proof: payload.proof_request, + label: payload.proof_request.rp_id, + appId: payload.app_id, + actionLabel: payload.action, + returnUrl: callback, + unsupportedReason: payload.require_user_presence + ? 'This request requires World App user presence verification. The web authenticator does not implement that check.' + : payload.identity_attributes?.length + ? 'Identity attribute attestation is not implemented by this web authenticator.' + : undefined, + validate: async signal => { + await validateSignature(payload.proof_request, signal) + }, + deliver: async (proof, signal) => { + const response = JSON.parse(proof) as { + id?: unknown + error?: unknown + responses?: unknown + nonce?: unknown + } + if ( + response.error || + !Array.isArray(response.responses) || + !response.responses.length || + response.id !== payload.proof_request.id + ) + throw new Error('WalletKit returned an error or mismatched proof response.') + checkExpiry(payload.proof_request) + await bridge.send({ proof_response: response }, signal) + }, + cancel: signal => bridge.send({ error_code: 'verification_rejected' }, signal), + } +} +export async function checkRequestCredentials(incoming: IncomingRequest, wallet: WalletKit, signal: AbortSignal) { + const records = await abortable(wallet.listCredentials(), AbortSignal.any([signal, AbortSignal.timeout(10000)])) + return credentialAvailability(incoming.proof, records) +} diff --git a/src/lib/requests/proof-request.ts b/src/lib/requests/proof-request.ts new file mode 100644 index 0000000..08deee0 --- /dev/null +++ b/src/lib/requests/proof-request.ts @@ -0,0 +1,199 @@ +import type { CredentialMetadata } from '../walletkit' +import { hexToBytes, keccak256, stringToHex, verifyMessage, type Hex } from 'viem' + +export type Requirement = { + identifier: string + issuer_schema_id: number + signal?: string | null + genesis_issued_at_min?: number | null + expires_at_min?: number | null +} +export type Constraint = string | { any: Constraint[] } | { all: Constraint[] } +export type ProofRequest = { + id: string + version: 1 + proof_type: 'uniqueness' + rp_id: string + oprf_key_id: string + nonce: Hex + signature: Hex + created_at: number + expires_at: number + action: Hex + session_id: null + proof_requests: Requirement[] + constraints?: Constraint | null +} +export type Payload = { + app_id: string + action: string + environment: 'staging' + proof_request: ProofRequest + require_user_presence?: boolean + identity_attributes?: unknown[] + return_to_url?: string +} +const uint = (value: unknown): value is number => typeof value === 'number' && Number.isSafeInteger(value) && value >= 0 +const record = (value: unknown): value is Record => + typeof value === 'object' && value !== null && !Array.isArray(value) +const hex = (value: unknown, size: number): value is Hex => + typeof value === 'string' && new RegExp(`^0x[0-9a-fA-F]{${size * 2}}$`).test(value) +export function checkExpiry(request: ProofRequest) { + const now = Math.floor(Date.now() / 1000) + if ( + request.created_at > now + 30 || + request.expires_at <= now || + request.expires_at <= request.created_at || + request.expires_at - request.created_at > 86400 + ) + throw new Error('The request is expired or its timestamp is invalid. Start a new request at the relying party.') +} +export function parsePayload(json: string): Payload { + if (json.length > 131072) throw new Error('Request payload is too large.') + const p: unknown = JSON.parse(json) + if (!record(p) || p.environment !== 'staging') throw new Error('This authenticator accepts staging requests only.') + const r = p.proof_request + if (!record(r) || r.version !== 1 || r.proof_type !== 'uniqueness' || r.session_id != null) + throw new Error('Only World ID 4.0 uniqueness requests are supported by this web authenticator.') + if ( + typeof p.app_id !== 'string' || + !/^app_[0-9a-f]{32}$/i.test(p.app_id) || + typeof p.action !== 'string' || + p.action.length > 1024 || + typeof r.id !== 'string' || + r.id.length > 128 || + !r.id || + typeof r.rp_id !== 'string' || + !/^rp_[0-9a-f]{1,16}$/i.test(r.rp_id) || + typeof r.oprf_key_id !== 'string' || + !/^0x[0-9a-f]{1,40}$/i.test(r.oprf_key_id) || + !hex(r.nonce, 32) || + !hex(r.signature, 65) || + !hex(r.action, 32) || + !uint(r.created_at) || + !uint(r.expires_at) + ) + throw new Error('Malformed World ID request metadata.') + if (BigInt(r.action) !== BigInt(keccak256(stringToHex(p.action))) >> BigInt(8)) + throw new Error('The displayed action does not match the signed action.') + if (!Array.isArray(r.proof_requests) || r.proof_requests.length < 1 || r.proof_requests.length > 32) + throw new Error('Invalid credential requirements.') + const ids = new Set() + for (const item of r.proof_requests) { + if ( + !record(item) || + typeof item.identifier !== 'string' || + !/^[a-zA-Z0-9_-]{1,80}$/.test(item.identifier) || + ids.has(item.identifier) || + !uint(item.issuer_schema_id) || + (item.signal != null && + (typeof item.signal !== 'string' || + !/^0x(?:[0-9a-f]{2})*$/i.test(item.signal) || + item.signal.length > 4098)) || + (item.genesis_issued_at_min != null && !uint(item.genesis_issued_at_min)) || + (item.expires_at_min != null && !uint(item.expires_at_min)) + ) + throw new Error('Malformed credential requirement.') + ids.add(item.identifier) + } + let count = 0 + const constraint = (node: unknown, depth = 0): void => { + if (++count > 64 || depth > 8) throw new Error('Credential constraints exceed supported limits.') + if (typeof node === 'string' && ids.has(node)) return + if (!record(node) || Object.keys(node).length !== 1) throw new Error('Invalid credential constraints.') + const children = node.any ?? node.all + if (!Array.isArray(children) || children.length < 1) throw new Error('Invalid credential constraints.') + children.forEach(child => constraint(child, depth + 1)) + } + if (r.constraints != null) constraint(r.constraints) + if (p.require_user_presence !== undefined && typeof p.require_user_presence !== 'boolean') + throw new Error('Invalid user presence requirement.') + if (p.identity_attributes != null && !Array.isArray(p.identity_attributes)) + throw new Error('Invalid identity attribute requirements.') + const payload = p as unknown as Payload + checkExpiry(payload.proof_request) + return payload +} +export async function validateSignature(request: ProofRequest, signal: AbortSignal) { + checkExpiry(request) + const response = await fetch(`/api/staging-rp?id=${encodeURIComponent(request.rp_id)}`, { + signal: AbortSignal.any([signal, AbortSignal.timeout(15000)]), + cache: 'no-store', + }) + if (!response.ok) + throw new Error( + 'Could not validate this RP against the staging registry. It may be unregistered, inactive, or temporarily unavailable.' + ) + const rp = (await response.json()) as { signer: Hex; oprfKeyId: string } + if (BigInt(rp.oprfKeyId) !== BigInt(request.oprf_key_id)) + throw new Error('Request OPRF key does not match the registered RP.') + const message = new Uint8Array(81) + message[0] = 1 + message.set(hexToBytes(request.nonce), 1) + new DataView(message.buffer).setBigUint64(33, BigInt(request.created_at)) + new DataView(message.buffer).setBigUint64(41, BigInt(request.expires_at)) + message.set(hexToBytes(request.action), 49) + if (!(await verifyMessage({ address: rp.signer, message: { raw: message }, signature: request.signature }))) + throw new Error('The RP request signature is invalid.') +} +export function credentialRequirementsLabel(request: ProofRequest): string { + const names = new Map( + request.proof_requests.map(item => [ + item.identifier, + item.issuer_schema_id === 11 + ? 'Selfie Check' + : item.issuer_schema_id === 1 + ? 'Orb' + : `Schema ${item.issuer_schema_id}`, + ]) + ) + const describe = (node: Constraint): string => + typeof node === 'string' + ? (names.get(node) ?? node) + : 'any' in node + ? `(${node.any.map(describe).join(' or ')})` + : `(${node.all.map(describe).join(' and ')})` + return describe(request.constraints ?? { all: request.proof_requests.map(item => item.identifier) }) +} +export function credentialAvailability(request: ProofRequest, records: CredentialMetadata[]) { + const items = request.proof_requests.map(item => ({ + ...item, + available: records.some( + record => + record.issuerSchemaId === BigInt(item.issuer_schema_id) && + !record.isExpired && + record.expiresAt > BigInt(item.expires_at_min ?? request.created_at) && + record.genesisIssuedAt >= BigInt(item.genesis_issued_at_min ?? 0) + ), + })) + const matches = new Map(items.map(item => [item.identifier, item.available])) + const evaluate = (node: Constraint, available = matches): boolean => + typeof node === 'string' + ? available.get(node) === true + : 'any' in node + ? node.any.some(child => evaluate(child, available)) + : node.all.every(child => evaluate(child, available)) + const satisfies = (available: Map) => + request.constraints + ? evaluate(request.constraints, available) + : items.every(item => available.get(item.identifier) === true) + const satisfied = satisfies(matches) + const withSelfie = new Map(items.map(item => [item.identifier, item.available || item.issuer_schema_id === 11])) + // Possibility is not a choice: an OR branch must not silently select selfie enrollment. + const withoutSchema = (schema: number) => + satisfies(new Map(items.map(item => [item.identifier, item.issuer_schema_id !== schema]))) + const requiresSelfie = !withoutSchema(11) + const requiresOrb = !withoutSchema(1) + // An existing credential outside the RP's date bounds cannot be fixed by our demo issuer. + const canEnrollSelfie = + !satisfied && + !records.some(record => record.issuerSchemaId === BigInt(11) && !record.isExpired) && + satisfies(withSelfie) + return { + items, + satisfied, + requiresOrb, + canEnrollSelfie, + needsSelfieEnrollment: canEnrollSelfie && requiresSelfie, + } +} diff --git a/src/lib/selfie-issuance.ts b/src/lib/selfie-issuance.ts new file mode 100644 index 0000000..58669c3 --- /dev/null +++ b/src/lib/selfie-issuance.ts @@ -0,0 +1,88 @@ +import { parse } from 'lossless-json' +import type { WalletKit } from './walletkit' +import { abortable } from './staging-registration' + +export class SelfieWalletTimeout extends Error {} + +export async function issueSelfieCredential( + wallet: WalletKit, + signal: AbortSignal, + progress: (message: string) => void +) { + const deadline = AbortSignal.any([signal, AbortSignal.timeout(300_000)]) + async function walletCall(promise: Promise): Promise { + const walletDeadline = AbortSignal.any([deadline, AbortSignal.timeout(90_000)]) + try { + return await abortable(promise, walletDeadline) + } catch (error) { + if (walletDeadline.aborted) { + wallet.terminate() + throw new SelfieWalletTimeout( + 'WalletKit timed out or was interrupted. Unlock again, then resume selfie issuance.' + ) + } + throw error + } + } + progress('Checking the encrypted vault for an active selfie credential…') + const existing = (await walletCall(wallet.listCredentials())).find( + record => record.issuerSchemaId === BigInt(11) && !record.isExpired + ) + if (existing) { + progress('An active selfie credential is already stored.') + return existing + } + progress('Preparing the schema-11 subject with WalletKit…') + const { sub, blindingFactor } = await walletCall(wallet.prepareCredential(BigInt(11))) + // The OPRF derives the subject/factor for this account and schema again on resume. + // Only an opaque issuer-operation capability is persisted, never the factor or seed. + const key = `world-id-staging-selfie-resume:${sub}` + let token = localStorage.getItem(key) + if (!token) { + token = Array.from(crypto.getRandomValues(new Uint8Array(32)), byte => byte.toString(16).padStart(2, '0')).join( + '' + ) + localStorage.setItem(key, token) + } + if (!/^[0-9a-f]{64}$/.test(token)) throw new Error('The saved selfie enrollment resume token is invalid.') + progress('Preparing encrypted synthetic shares and staging identity authentication…') + for (;;) { + deadline.throwIfAborted() + const response = await fetch('/api/selfie-credential', { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ sub, token }), + signal: deadline, + }) + const text = await response.text() + if (text.length > 131_072) throw new Error('Selfie issuer response exceeded its size limit.') + const result = JSON.parse(text) + if (!response.ok) + throw new Error(typeof result.error === 'string' ? result.error : `Selfie issuer HTTP ${response.status}`) + if (result.status === 'pending') { + progress(result.stage) + await abortable(new Promise(resolve => setTimeout(resolve, 3000)), deadline) + continue + } + if (result.status !== 'issued' || typeof result.credential !== 'string') + throw new Error('Selfie issuance did not return a credential.') + progress('Staging issued the credential. Issuer signature and subject checked; storing in the vault…') + const bytes = Uint8Array.from(atob(result.credential), character => character.charCodeAt(0)) + const credential = parse(new TextDecoder().decode(bytes)) as { + sub?: unknown + issuer_schema_id?: unknown + expires_at?: unknown + } + if ( + !credential || + String(credential.sub).toLowerCase() !== sub.toLowerCase() || + String(credential.issuer_schema_id) !== '11' || + BigInt(String(credential.expires_at)) <= BigInt(Math.floor(Date.now() / 1000)) + ) + throw new Error('Issued selfie credential does not match this subject/schema or is expired.') + const stored = await walletCall(wallet.storeCredential(bytes, blindingFactor)) + if (stored.issuerSchemaId !== BigInt(11)) throw new Error('Unexpected stored credential schema.') + progress('Selfie credential stored in the encrypted vault. Synthetic staging enrollment complete.') + return stored + } +} diff --git a/src/lib/selfie-issuer-server.ts b/src/lib/selfie-issuer-server.ts new file mode 100644 index 0000000..26ae46b --- /dev/null +++ b/src/lib/selfie-issuer-server.ts @@ -0,0 +1,298 @@ +import { join } from 'node:path' +import { homedir } from 'node:os' +import { constants } from 'node:fs' +import { execFile } from 'node:child_process' +import { createPublicClient, http, parseAbi } from 'viem' +import { createHash, randomBytes, randomUUID } from 'node:crypto' +import { access, mkdir, readFile, rename, writeFile } from 'node:fs/promises' + +const FACE = 'https://app.stage.face.worldcoin.org' +const UA = 'WorldApp/1.0.0 Oxide/1.0.0 iOS' +const HELPER = join(process.cwd(), 'src/server/face-enrollment-helper/target/debug/staging-face-crypto') +const ROOT = join(homedir(), '.local/state/web-authenticator/synthetic-selfie-issuance') +const VERIFIER = '0x703a6316c975DEabF30b637c155edD53e24657DB' +const client = createPublicClient({ + transport: http('https://worldchain-mainnet.g.alchemy.com/public', { timeout: 20_000, retryCount: 0 }), +}) +const abi = parseAbi([ + 'function getCredentialSchemaIssuerRegistry() view returns (address)', + 'function issuerSchemaIdToPubkey(uint64) view returns ((uint256 x, uint256 y))', +]) + +type Operation = { + version: 1 + commitmentEncoding?: 'hex' + sub: string + tokenHash: string + seed: string + captureId: string + phase: 'prepared' | 'submitting' | 'submitted' | 'rejected' + rejection?: number +} +export class EnrollmentError extends Error { + constructor( + message: string, + public status = 502 + ) { + super(message) + } +} + +// Bound local cryptographic work. Persisted submission state also prevents a +// restarted process from re-enrolling an operation with an unknown outcome. +let busy = false +const hash = (value: string) => createHash('sha256').update(value).digest('hex') + +async function cryptoHelper(input: object, signal: AbortSignal): Promise { + signal.throwIfAborted() + return new Promise((resolve, reject) => { + const child = execFile(HELPER, [], { timeout: 90_000, maxBuffer: 262_144, signal }, (error, stdout) => { + if (error) return reject(new EnrollmentError('The local staging cryptography helper failed or timed out.')) + try { + resolve(JSON.parse(stdout) as T) + } catch { + reject(new EnrollmentError('The staging cryptography helper returned an invalid response.')) + } + }) + // Secrets travel over stdin, never process arguments or logs. + child.stdin?.on('error', () => { + /* execFile reports process/pipe failure through its callback. */ + }) + child.stdin?.end(JSON.stringify(input)) + }) +} + +async function boundedText(response: Response, limit: number): Promise { + if (!response.body) throw new EnrollmentError('Staging returned an empty response.') + const reader = response.body.getReader() + const chunks: Uint8Array[] = [] + let length = 0 + try { + for (;;) { + const { done, value } = await reader.read() + if (done) return Buffer.concat(chunks).toString('utf8') + length += value.length + if (length > limit) { + await reader.cancel() + throw new EnrollmentError('Staging response exceeded its size limit.') + } + chunks.push(value) + } + } finally { + reader.releaseLock() + } +} +async function remote(path: string, init: RequestInit, signal: AbortSignal) { + return fetch(path, { + ...init, + cache: 'no-store', + redirect: 'error', + signal: AbortSignal.any([signal, AbortSignal.timeout(20_000)]), + }) +} +async function auth(operation: Operation, kind: 'getidentity' | 'usercentricenrollment', signal: AbortSignal) { + const result = await cryptoHelper<{ identityCommitment: string; header: string }>( + { + operation: 'authenticate', + seed: operation.seed, + kind, + }, + signal + ) + if (!/^0x[0-9a-f]{64}$/.test(result.identityCommitment)) + throw new EnrollmentError( + 'The enrollment helper returned an invalid identity commitment. Rebuild it before retrying.', + 503 + ) + return result +} +async function save(path: string, operation: Operation) { + const temporary = `${path}.${randomUUID()}.tmp` + await writeFile(temporary, JSON.stringify(operation), { mode: 0o600, flag: 'wx' }) + await rename(temporary, path) +} + +export async function issueOrPollSelfie(sub: string, token: string, signal: AbortSignal) { + if (busy) throw new EnrollmentError('A staging enrollment operation is already running. Try again shortly.', 409) + busy = true + try { + try { + await access(HELPER, constants.X_OK) + } catch { + throw new EnrollmentError( + 'Build the local staging helper with npm run build:selfie-helper before issuing.', + 503 + ) + } + await mkdir(ROOT, { recursive: true, mode: 0o700 }) + const path = join(ROOT, `${hash(sub)}.json`) + let operation: Operation + try { + operation = JSON.parse(await readFile(path, 'utf8')) as Operation + if (operation.version !== 1 || operation.sub !== sub || operation.tokenHash !== hash(token)) + throw new EnrollmentError( + 'An enrollment already exists for this subject, but its resume token is unavailable. No new enrollment was submitted.', + 409 + ) + } catch (error) { + if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error + operation = { + version: 1, + commitmentEncoding: 'hex', + sub, + tokenHash: hash(token), + seed: randomBytes(32).toString('hex'), + captureId: randomUUID(), + phase: 'prepared', + } + await save(path, operation) + } + // The original helper sent decimal idComm, which the handler rejects + // before storing enrollment. Only that explicit 400 can be retried after + // this encoding fix; ambiguous submissions remain poll-only. + if (!operation.commitmentEncoding && operation.phase === 'rejected' && operation.rejection === 400) { + operation.commitmentEncoding = 'hex' + operation.phase = 'prepared' + delete operation.rejection + await save(path, operation) + } + if (operation.phase === 'rejected') + throw new EnrollmentError( + `Staging rejected this enrollment (HTTP ${operation.rejection}). It will not be resubmitted.`, + 422 + ) + if (operation.phase === 'prepared') { + operation.commitmentEncoding = 'hex' + const keys = await Promise.all( + [0, 1, 2].map(async index => { + const response = await remote( + `https://pki-face-ampc-stage.worldcoin.dev/public-key-${index}`, + {}, + signal + ) + if (!response.ok) { + await response.body?.cancel() + throw new EnrollmentError(`Staging share-key download failed (HTTP ${response.status}).`) + } + return boundedText(response, 1024) + }) + ) + const { shares } = await cryptoHelper<{ shares: string[] }>( + { operation: 'shares', public_keys: keys }, + signal + ) + if (shares.length !== 3 || shares.some(share => typeof share !== 'string' || share.length > 16_384)) + throw new EnrollmentError('Invalid encrypted shares.') + const proof = await auth(operation, 'usercentricenrollment', signal) + const body = new FormData() + const fields = { + capture_id: operation.captureId, + timestamp: Math.floor(Date.now() / 1000).toString(), + face_embedding_shares_0: shares[0], + face_embedding_shares_1: shares[1], + face_embedding_shares_2: shares[2], + face_embedding_version: '2.0.0', + face_embedding_type: 'ghostfacenet_flipped_mean', + face_embedding_inference_backend: 'face-engine', + pcp_version: '2.5', + sub, + // Orb Tools staging fixture: no recoverable PCP and no attested hash binding. + associated_data_hash: `0x${randomBytes(31).toString('hex').padStart(64, '0')}`, + } + for (const [key, value] of Object.entries(fields)) body.set(key, value) + signal.throwIfAborted() + operation.phase = 'submitting' + await save(path, operation) + const response = await remote( + `${FACE}/api/v1/identity?idComm=${encodeURIComponent(proof.identityCommitment)}`, + { + method: 'PUT', + body, + headers: { + 'user-agent': UA, + 'x-zkp-proof': proof.header, + 'integrity-token': 'staging-test-token', + 'integrity-signature': 'staging-test-token', + }, + }, + signal + ) + await response.body?.cancel() + if (!response.ok) { + if (response.status >= 400 && response.status < 500 && ![408, 409, 429].includes(response.status)) { + operation.phase = 'rejected' + operation.rejection = response.status + await save(path, operation) + } + throw new EnrollmentError( + operation.phase === 'rejected' + ? `Staging rejected the enrollment request (HTTP ${response.status}). No credential was issued; the request needs correcting before another submission.` + : `Staging enrollment returned HTTP ${response.status}. Retry checks the saved operation; it does not submit again.`, + operation.phase === 'rejected' ? 422 : 502 + ) + } + operation.phase = 'submitted' + await save(path, operation) + return { status: 'pending' as const, stage: 'Enrollment submitted. Waiting for staging issuance…' } + } + const proof = await auth(operation, 'getidentity', signal) + const response = await remote( + `${FACE}/api/v1/identity?idComm=${encodeURIComponent(proof.identityCommitment)}`, + { headers: { 'user-agent': UA, 'x-zkp-proof': proof.header } }, + signal + ) + if (!response.ok) { + await response.body?.cancel() + throw new EnrollmentError( + `Staging enrollment status failed (HTTP ${response.status}). Retry resumes the same operation.` + ) + } + const result = JSON.parse(await boundedText(response, 131_072)) + const enrollment = result.enrollment_status + if (!enrollment || enrollment.capture_id !== operation.captureId) + return { + status: 'pending' as const, + stage: 'Waiting for this capture. No duplicate enrollment will be submitted.', + } + if (['ENROLLMENT_FAILED', 'ENROLLMENT_NOT_UNIQUE'].includes(enrollment.status)) + throw new EnrollmentError( + `Staging enrollment finished with ${enrollment.status}. No credential was stored.`, + 422 + ) + if (enrollment.status === 'ENROLLMENT_IN_PROGRESS') + return { status: 'pending' as const, stage: 'Staging is processing the synthetic enrollment…' } + if ( + enrollment.status !== 'ENROLLMENT_UNIQUE_SUCCESSFUL' || + typeof enrollment.credential !== 'string' || + !/^[A-Za-z0-9+/]+={0,2}$/.test(enrollment.credential) || + enrollment.credential.length > 90_000 + ) + throw new EnrollmentError('Staging returned an invalid credential issuance response.') + if ((await client.getChainId()) !== 480) throw new EnrollmentError('Unexpected staging verifier chain.') + const registry = await client.readContract({ + address: VERIFIER, + abi, + functionName: 'getCredentialSchemaIssuerRegistry', + }) + const key = await client.readContract({ + address: registry, + abi, + functionName: 'issuerSchemaIdToPubkey', + args: [BigInt(11)], + }) + const verification = await cryptoHelper<{ verified: boolean }>( + { + operation: 'verify', + credential: enrollment.credential, + sub, + public_key: [key.x.toString(), key.y.toString()], + }, + signal + ) + if (verification.verified !== true) + throw new EnrollmentError('Staging credential signature verification failed.') + return { status: 'issued' as const, credential: enrollment.credential } + } finally { + busy = false + } +} diff --git a/src/lib/staging-face-enrollment.ts b/src/lib/staging-face-enrollment.ts new file mode 100644 index 0000000..da2df9a --- /dev/null +++ b/src/lib/staging-face-enrollment.ts @@ -0,0 +1,40 @@ +/** + * Orb Tools staging admission, not an RP proof-response integrity bundle. + * https://github.com/worldcoin/orb-tools/blob/a5c0848d/crates/signup-flow/src/orb_enrollment_harness.rs + * The caller must create the real multipart payload and obtain its identity proof. + */ +export function buildStagingFaceEnrollmentRequest(input: { + identityCommitment: string + identityProof: string + contentType: string + body: Uint8Array + signal: AbortSignal +}): Request { + if (typeof window !== 'undefined') throw new Error('Staging face enrollment must run on the server.') + if (!/^0x[0-9a-f]{64}$/.test(input.identityCommitment)) + throw new Error('Expected a 32-byte hex enrollment identity commitment.') + if (!input.identityProof || input.identityProof.length > 65_536 || /[\r\n]/.test(input.identityProof)) + throw new Error('A bounded identity-proof header is required for staging enrollment.') + if (!/^multipart\/form-data; boundary=[A-Za-z0-9_-]{1,70}$/.test(input.contentType)) + throw new Error('Expected a multipart enrollment content type with an explicit boundary.') + if (!input.body.byteLength || input.body.byteLength > 8 * 1024 * 1024) + throw new Error('Enrollment payload must contain between 1 byte and 8 MiB.') + input.signal.throwIfAborted() + const url = new URL('https://app.stage.face.worldcoin.org/api/v1/identity') + url.searchParams.set('idComm', input.identityCommitment) + return new Request(url, { + method: 'PUT', + headers: { + 'content-type': input.contentType, + 'x-zkp-proof': input.identityProof, + 'user-agent': 'WorldApp/1.0.0 Oxide/1.0.0 iOS', + 'integrity-token': 'staging-test-token', + 'integrity-signature': 'staging-test-token', + }, + body: input.body, + cache: 'no-store', + credentials: 'omit', + redirect: 'error', + signal: AbortSignal.any([input.signal, AbortSignal.timeout(30_000)]), + }) +} diff --git a/src/lib/staging-registration.ts b/src/lib/staging-registration.ts new file mode 100644 index 0000000..3c5ec91 --- /dev/null +++ b/src/lib/staging-registration.ts @@ -0,0 +1,123 @@ +import { logFlowStep } from './flow-logging' +import type { PasskeySecrets } from './passkey-secrets' +import type { InitializeOptions, RecoveryData, RegistrationStatus, WalletKit } from './walletkit' + +export type RegistrationPhase = + | 'loading' + | 'registering' + | 'initializing' + | Exclude + +// Bound worker RPCs too: the package's public methods do not expose per-call signals. +export function abortable(operation: Promise, signal: AbortSignal): Promise { + signal.throwIfAborted() + return new Promise((resolve, reject) => { + const abort = () => reject(signal.reason) + signal.addEventListener('abort', abort, { once: true }) + operation.then(resolve, reject).finally(() => signal.removeEventListener('abort', abort)) + }) +} + +function pause(signal: AbortSignal): Promise { + return new Promise((resolve, reject) => { + const abort = () => { + clearTimeout(timer) + reject(signal.reason) + } + const timer = setTimeout(() => { + signal.removeEventListener('abort', abort) + resolve() + }, 1000) + signal.addEventListener('abort', abort, { once: true }) + if (signal.aborted) abort() + }) +} + +// A digest gives this passkey a stable, path-safe namespace without persisting secrets. +export async function passkeyStorageId(credentialId: string): Promise { + const digest = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(credentialId)) + return `passkey-${Array.from(new Uint8Array(digest), byte => byte.toString(16).padStart(2, '0')).join('')}` +} + +type InitializeWalletKit = (options: InitializeOptions) => Promise + +export async function registerOnStaging( + secrets: PasskeySecrets, + credentialId: string, + signal: AbortSignal, + onPhase: (phase: RegistrationPhase) => void, + onPublicMaterial: (material: RecoveryData) => void, + initialize?: InitializeWalletKit +): Promise { + const deadline = AbortSignal.any([signal, AbortSignal.timeout(180_000)]) + let wallet: WalletKit | undefined + let registrationStarted = false + let sessionReady = false + let finalized = false + let reportedFailure: string | undefined + const terminate = () => wallet?.terminate() + deadline.addEventListener('abort', terminate, { once: true }) + try { + onPhase('loading') + const init = initialize ?? (await abortable(import('./walletkit'), deadline)).initializeWalletKit + const storageId = await passkeyStorageId(credentialId) + deadline.throwIfAborted() + wallet = await init({ + databaseKey: secrets.databaseKey, + storageId, + environment: 'staging', + region: 'us', + signal: deadline, + }) + deadline.throwIfAborted() + const material = await logFlowStep('registration.derive_public_material', () => + abortable(wallet!.recoveryDataFromSeed(secrets.seed), deadline) + ) + onPublicMaterial(material) + onPhase('registering') + registrationStarted = true + await logFlowStep('registration.submit', () => abortable(wallet!.register(secrets.seed), deadline)) + for (;;) { + deadline.throwIfAborted() + const status = await logFlowStep('registration.poll', () => abortable(wallet!.pollRegistration(), deadline)) + if (status.state === 'failed') { + reportedFailure = 'Staging reported a failed registration. No automatic retry was made.' + throw new Error(reportedFailure) + } + if (!['queued', 'batching', 'submitted', 'finalized'].includes(status.state)) { + reportedFailure = 'Staging returned an unrecognized status. Registration has not been confirmed.' + throw new Error(reportedFailure) + } + onPhase(status.state) + if (status.state === 'finalized') { + finalized = true + onPhase('initializing') + await logFlowStep('registration.initialize_authenticator', () => + abortable(wallet!.initializeAuthenticator(secrets.seed), deadline) + ) + deadline.throwIfAborted() + sessionReady = true + return wallet + } + await pause(deadline) + } + } catch (cause) { + if (signal.aborted) throw signal.reason + const timeout = deadline.aborted ? ' The three-minute deadline expired.' : '' + // Do not surface raw worker errors: dependency messages may contain sensitive request data. + throw new Error( + (finalized + ? 'World ID registration succeeded, but authenticator initialization failed. Unlock again to retry initialization.' + : reportedFailure) ?? + (registrationStarted + ? `Staging registration could not be confirmed.${timeout} It may already have been submitted. No automatic retry was made.` + : `WalletKit could not initialize or derive the public account material.${timeout} Registration was not submitted.`), + { cause } + ) + } finally { + deadline.removeEventListener('abort', terminate) + if (!sessionReady) wallet?.terminate() + secrets.seed.fill(0) + secrets.databaseKey.fill(0) + } +} diff --git a/src/lib/tee-admission.ts b/src/lib/tee-admission.ts new file mode 100644 index 0000000..dc8e4f8 --- /dev/null +++ b/src/lib/tee-admission.ts @@ -0,0 +1,66 @@ +/** Obtain the local demo credential from the backend; never persist it or log the response. */ +export async function requestDemoToken(signal: AbortSignal): Promise { + signal.throwIfAborted() + const deadline = AbortSignal.any([signal, AbortSignal.timeout(5000)]) + let response: Response + try { + response = await fetch('/api/tee-admission', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: '{}', + credentials: 'same-origin', + cache: 'no-store', + redirect: 'error', + signal: deadline, + }) + } catch { + signal.throwIfAborted() + throw new Error('Demo token provisioning could not be reached.') + } + if (response.status !== 200) { + await response.body?.cancel() + throw new Error( + `Demo token provisioning unavailable (HTTP ${response.status}). Check the local backend configuration and token expiry.` + ) + } + const reader = response.body?.getReader() + if (!reader) throw new Error('Empty demo admission response.') + let text = '', + size = 0 + const decoder = new TextDecoder() + try { + while (true) { + deadline.throwIfAborted() + const { done, value } = await reader.read() + if (done) break + size += value.byteLength + if (size > 4096) throw new Error('Oversized response') + text += decoder.decode(value, { stream: true }) + } + text += decoder.decode() + } catch { + await reader.cancel() + throw new Error('Could not read a bounded demo admission response.') + } finally { + reader.releaseLock() + } + let value: unknown + try { + value = JSON.parse(text) + } catch { + throw new Error('Invalid demo admission response.') + } + if (!value || typeof value !== 'object') throw new Error('Invalid demo admission response.') + const data = value as Record + if ( + data.mode !== 'local' || + typeof data.token !== 'string' || + !/^[0-9a-f]{64}$/.test(data.token) || + typeof data.expires_at !== 'number' || + !Number.isSafeInteger(data.expires_at) || + data.expires_at * 1000 <= Date.now() || + data.expires_at * 1000 > Date.now() + 600_000 + ) + throw new Error('Invalid or expired demo admission response.') + return data.token +} diff --git a/src/lib/tee-connection.ts b/src/lib/tee-connection.ts new file mode 100644 index 0000000..f0774d2 --- /dev/null +++ b/src/lib/tee-connection.ts @@ -0,0 +1,119 @@ +export type ConnectionPreparation = + | { status: 'connected'; reason: string; expiresAt: number; httpStatus: 200 } + | { status: 'unavailable' | 'forbidden'; reason: string; httpStatus?: 403 | 503 } + +/** Local bearer admission only. Production requires verified enclave attestation and encryption. */ +export async function connect( + signal: AbortSignal, + token: string, + configuredHost: string | undefined = import.meta.env?.VITE_TEE_BASE_URL +): Promise { + signal.throwIfAborted() + if (!configuredHost) + return { status: 'unavailable', reason: 'Configure VITE_TEE_BASE_URL to use the local TEE host.' } + let host: URL + try { + host = new URL(configuredHost) + } catch { + throw new Error('Invalid local TEE origin.') + } + if ( + host.protocol !== 'http:' || + !['localhost', '127.0.0.1'].includes(host.hostname) || + host.username || + host.password || + host.search || + host.hash || + host.pathname !== '/' + ) + throw new Error( + 'Development admission requires an HTTP loopback origin. Remote TEE verification is not implemented.' + ) + if (token && !/^[0-9a-f]{64}$/.test(token)) + return { status: 'forbidden', reason: 'Enter the 64-character local access token.' } + const deadline = AbortSignal.any([signal, AbortSignal.timeout(5000)]) + let response: Response + try { + response = await fetch(new URL('/v1/connect', host), { + method: 'POST', + headers: token ? { Authorization: `Bearer ${token}` } : {}, + credentials: 'omit', + cache: 'no-store', + redirect: 'error', + signal: deadline, + }) + } catch { + signal.throwIfAborted() + throw new Error( + deadline.aborted + ? 'Local TEE connection timed out.' + : 'Cannot reach the local TEE host. Check the server and allowed origin.' + ) + } + if (response.status === 403) { + await response.body?.cancel() + return { + status: 'forbidden', + httpStatus: 403, + reason: 'Forbidden: token is invalid or expired, or this browser origin is not allowed.', + } + } + if (response.status === 503) { + await response.body?.cancel() + return { + status: 'unavailable', + httpStatus: 503, + reason: 'Authorized, but the face worker is unavailable. Upload remains disabled.', + } + } + if (response.status !== 200 || !response.headers.get('content-type')?.startsWith('application/json')) { + await response.body?.cancel() + throw new Error('Unexpected local TEE handshake response.') + } + const reader = response.body?.getReader() + if (!reader) throw new Error('Empty local TEE handshake response.') + let text = '', + size = 0 + const decoder = new TextDecoder() + try { + while (true) { + deadline.throwIfAborted() + const { done, value } = await reader.read() + if (done) break + size += value.byteLength + if (size > 4096) throw new Error('Oversized local TEE handshake response.') + text += decoder.decode(value, { stream: true }) + } + text += decoder.decode() + } catch { + await reader.cancel() + throw new Error('Could not read a bounded local TEE handshake response.') + } finally { + reader.releaseLock() + } + let data: unknown + try { + data = JSON.parse(text) + } catch { + throw new Error('Invalid local TEE handshake JSON.') + } + if (typeof data !== 'object' || data === null) throw new Error('Invalid local TEE handshake.') + const result = data as Record + if ( + result.protocol_version !== 1 || + result.mode !== 'local' || + !Array.isArray(result.capabilities) || + !result.capabilities.includes('face-image-check') || + typeof result.expires_at !== 'number' || + !Number.isSafeInteger(result.expires_at) || + result.expires_at * 1000 <= Date.now() || + result.expires_at * 1000 > Date.now() + 600_000 + ) + throw new Error('Incompatible or expired local TEE handshake. Upload remains disabled.') + return { + status: 'connected', + httpStatus: 200, + expiresAt: result.expires_at * 1000, + reason: 'Local admission accepted; face worker ready. This is not an attested enclave connection.', + } +} diff --git a/src/lib/walletkit.ts b/src/lib/walletkit.ts new file mode 100644 index 0000000..1c1ab95 --- /dev/null +++ b/src/lib/walletkit.ts @@ -0,0 +1,213 @@ +import { logFlowStep } from './flow-logging' +import { + initializeWalletKit as initializePublishedWalletKit, + type Authenticator, + type CredentialStore, + type FieldElement, + type InitializingAuthenticator, + type InitializeOptions as WorkerOptions, + type WalletKit as PublishedWalletKit, +} from '@worldcoin/walletkit-web' +export type { RecoveryData, RegistrationStatus } from '@worldcoin/walletkit-web' +export type { CredentialRecord as CredentialMetadata } from '@worldcoin/walletkit-web' + +export interface InitializeOptions extends WorkerOptions { + databaseKey: Uint8Array + storageId: string + environment: 'staging' | 'production' + region: 'us' | 'eu' | 'ap' +} + +const nowSeconds = () => BigInt(Math.floor(Date.now() / 1000)) + +/** Owns the demo's account session; all Rust objects remain in the published worker. */ +export class WalletKit { + private authenticator?: Authenticator + private registration?: InitializingAuthenticator + + constructor( + private readonly client: PublishedWalletKit, + private readonly store: CredentialStore, + private readonly environment: InitializeOptions['environment'], + private readonly region: InitializeOptions['region'] + ) {} + + extractSelfieEmbedding(configJson: string, image: Uint8Array) { + return this.client.extractSelfieEmbedding(configJson, image, '/api/selfie-admission') + } + + terminate() { + this.client.terminate() + } + + async close() { + await this.client.close() + } + + recoveryDataFromSeed(seed: Uint8Array) { + return this.client.recoveryDataFromSeed(seed) + } + + async register(seed: Uint8Array) { + if (this.registration) throw new Error('Registration already started') + this.registration = await this.client.InitializingAuthenticator.registerWithDefaults( + seed, + undefined, + this.environment, + this.region, + undefined + ) + } + + pollRegistration() { + if (!this.registration) throw new Error('Start registration first') + return this.registration.pollStatus() + } + + async initializeAuthenticator(seed: Uint8Array, now = nowSeconds()) { + if (this.authenticator) throw new Error('Authenticator already initialized') + const artifacts = await this.client.EmbeddedZkArtifacts.new() + let authenticator: Authenticator | undefined + try { + authenticator = await this.client.Authenticator.initWithDefaults( + seed, + undefined, + this.environment, + this.region, + artifacts, + this.store + ) + await authenticator.initStorage(now) + this.authenticator = authenticator + } catch (error) { + authenticator?.free() + throw error + } finally { + artifacts.free() + } + } + + private currentAuthenticator() { + if (!this.authenticator) throw new Error('Initialize the authenticator first') + return this.authenticator + } + + listCredentials(now = nowSeconds()) { + this.currentAuthenticator() + return this.store.listCredentials(undefined, now) + } + + deleteCredential(id: bigint) { + this.currentAuthenticator() + return this.store.deleteCredential(id) + } + + async prepareCredential(issuerSchemaId: bigint) { + const authenticator = this.currentAuthenticator() + const factor = await authenticator.generateCredentialBlindingFactorRemote(issuerSchemaId) + let sub: FieldElement | undefined + try { + sub = await authenticator.computeCredentialSub(factor) + return { blindingFactor: await factor.toHexString(), sub: await sub.toHexString() } + } finally { + sub?.free() + factor.free() + } + } + + async storeCredential(serialized: Uint8Array, factor: string, now = nowSeconds()) { + const authenticator = this.currentAuthenticator() + const credential = await this.client.Credential.fromBytes(serialized) + let blindingFactor: FieldElement | undefined + let expectedSub: FieldElement | undefined + let actualSub: FieldElement | undefined + try { + blindingFactor = await this.client.FieldElement.tryFromHexString(factor) + expectedSub = await authenticator.computeCredentialSub(blindingFactor) + actualSub = await credential.sub() + if ((await expectedSub.toHexString()) !== (await actualSub.toHexString())) { + throw new Error('Credential subject does not match this authenticator') + } + const issuerSchemaId = await credential.issuerSchemaId() + const credentialId = await this.store.storeCredential( + credential, + blindingFactor, + await credential.expiresAt(), + undefined, + now + ) + return { credentialId, issuerSchemaId } + } finally { + actualSub?.free() + expectedSub?.free() + blindingFactor?.free() + credential.free() + } + } + + async generateProof(json: string, now = nowSeconds()) { + const authenticator = this.currentAuthenticator() + const request = await this.client.ProofRequest.fromJson(json) + try { + const response = await authenticator.generateProof(request, now) + try { + const result = JSON.parse(await response.toJson()) + for (const item of result.responses ?? []) { + if (String(item.issuer_schema_id) !== '11') continue + const credential = await this.store.fetchCredential(BigInt(11), now) + try { + const claims = await credential?.claimsHex() + if (!claims?.length) throw new Error('Selfie credential score is unavailable') + // Preserve the demo's schema-11 z-score disclosure; this does not assert user presence. + item.claims = [claims[0]] + } finally { + credential?.free() + } + } + return JSON.stringify(result) + } finally { + response.free() + } + } finally { + request.free() + } + } +} + +export async function initializeWalletKit(options: InitializeOptions): Promise { + const client = await logFlowStep('walletkit.worker_initialize', () => + initializePublishedWalletKit({ + signal: options.signal, + workerUrl: options.workerUrl, + wasmUrl: options.wasmUrl, + }) + ) + const abort = () => client.terminate() + options.signal?.addEventListener('abort', abort, { once: true }) + try { + options.signal?.throwIfAborted() + const keys = await logFlowStep('walletkit.storage_keys', () => + client.StorageKeys.fromBytes(options.databaseKey) + ) + try { + // Keep the exact pre-upgrade namespace so existing vaults can be reopened. + const paths = await logFlowStep('walletkit.storage_paths', () => + client.StoragePaths.fromRoot(`/walletkit/${options.storageId}`) + ) + try { + const store = await logFlowStep('walletkit.storage_open', () => client.CredentialStore.new(paths, keys)) + options.signal?.throwIfAborted() + return new WalletKit(client, store, options.environment, options.region) + } finally { + paths.free() + } + } finally { + keys.free() + } + } catch (error) { + client.terminate() + throw error + } finally { + options.signal?.removeEventListener('abort', abort) + } +} diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..d22d0eb --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,33 @@ +import './styles.css' +import { createRoot } from 'react-dom/client' +import SelfieDemoPage from '@/pages/SelfieDemoPage' +import AuthenticatorScreen from '@/components/AuthenticatorScreen' +import { AuthenticatorSession } from '@/components/AuthenticatorSession' +import SelfieCheckScreen from '@/components/selfie-check/SelfieCheckScreen' +import { BrowserRouter, Link, Navigate, Route, Routes, useLocation } from 'react-router-dom' + +function LegacyEntry() { + const location = useLocation() + return +} + +createRoot(document.getElementById('root')!).render( + + + + } /> + } /> + } /> + } /> + + Page not found. Open authenticator +
      + } + /> + + + +) diff --git a/src/pages/SelfieDemoPage.tsx b/src/pages/SelfieDemoPage.tsx new file mode 100644 index 0000000..5b52c10 --- /dev/null +++ b/src/pages/SelfieDemoPage.tsx @@ -0,0 +1,126 @@ +import { Link } from 'react-router-dom' +import { useEffect, useRef, useState } from 'react' +import { abortable } from '@/lib/staging-registration' +import SelfieCamera from '@/components/selfie-check/SelfieCamera' +import { useAuthenticatorSession } from '@/components/AuthenticatorSession' + +type Metadata = { embeddingType: string; version: string; inferenceBackend: string } + +export default function SelfieDemoPage() { + const { wallet, initialized, setInitialized } = useAuthenticatorSession() + const operation = useRef(null) + const [pending, setPending] = useState(false) + const [error, setError] = useState(null) + const [metadata, setMetadata] = useState(null) + const [progress, setProgress] = useState('Ready to capture.') + useEffect(() => () => operation.current?.abort(), []) + + async function extract(image: Uint8Array) { + const client = wallet.current + if (!client || !initialized || operation.current) return + const controller = new AbortController() + operation.current = controller + const signal = AbortSignal.any([controller.signal, AbortSignal.timeout(120000)]) + let extracting = false + const cancel = () => { + if (!extracting) return + // #604 has no per-extraction cancellation; release its worker and OPFS ownership. + client.terminate() + if (wallet.current === client) { + wallet.current = null + setInitialized(false) + } + } + signal.addEventListener('abort', cancel, { once: true }) + setPending(true) + setError(null) + setMetadata(null) + setProgress('Loading trusted staging release…') + try { + const response = await fetch('/api/selfie-enclave', { + signal: AbortSignal.any([signal, AbortSignal.timeout(5000)]), + cache: 'no-store', + }) + if (!response.ok) + throw new Error( + 'Staging is not configured. The backend needs the promoted release policy and admission key.' + ) + const config = await response.text() + if (config.length > 8192) throw new Error('Staging policy is too large.') + signal.throwIfAborted() + setProgress('Verifying enclave, encrypting the frame, and extracting…') + extracting = true + const result = await abortable(client.extractSelfieEmbedding(config, image), signal) + extracting = false + if (result.status !== 'success') throw new Error(`Extraction rejected: ${result.reason}`) + const { embeddingType, version, inferenceBackend } = result.embedding + // This demo deliberately retains neither the biometric vector nor the image. + result.embedding.vector = '' + setMetadata({ embeddingType, version, inferenceBackend }) + setProgress('Real enclave extraction succeeded. Downstream issuance is mocked.') + } catch (cause) { + if (!controller.signal.aborted) { + setError( + signal.aborted + ? 'Extraction timed out. Unlock your authenticator to retry.' + : cause instanceof Error && !extracting + ? cause.message + : 'Enclave extraction failed. Check the deployed version, release policy, and admission key.' + ) + setProgress('Extraction did not complete.') + } + } finally { + signal.removeEventListener('abort', cancel) + operation.current = null + if (!controller.signal.aborted) setPending(false) + } + } + + return ( +
      +
      +

      Staging Selfie Check

      + {initialized ? ( + <> +

      + Capture sends one encrypted frame to the verified staging enclave. Face positioning runs on + this device. +

      + + + ) : ( +

      Unlock your authenticator to open the camera.

      + )} +

      + {progress} +

      + {error && ( +

      + {error} +

      + )} + {metadata && ( +
      +

      Extraction result

      +
      +
      Embedding type
      +
      {metadata.embeddingType}
      +
      Embedding version
      +
      {metadata.version}
      +
      Inference backend
      +
      {metadata.inferenceBackend}
      +
      +

      Mock issuance preview

      +

      + issuer_assurance = 2 (web), mocked. Sybil score, match count, database size and PCP version + remain unavailable. No credential is signed or stored. +

      +
      + )} + + Back to authenticator + +
      +
      + ) +} diff --git a/src/server/face-enrollment-helper/Cargo.lock b/src/server/face-enrollment-helper/Cargo.lock new file mode 100644 index 0000000..c9bbe93 --- /dev/null +++ b/src/server/face-enrollment-helper/Cargo.lock @@ -0,0 +1,9727 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ab_glyph" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" + +[[package]] +name = "acir_field" +version = "1.0.0-beta.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "750990cd3514b93fbeacaa3e9e34cf1f61f02b340e3688d61a65992c64d8ee47" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "cfg-if", + "hex", + "num-bigint", + "serde", +] + +[[package]] +name = "addr2line" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common 0.1.7", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures 0.2.17", +] + +[[package]] +name = "aes-prng" +version = "0.2.1" +source = "git+https://github.com/tf-encrypted/aes-prng.git?branch=dragos%2Fdisplay#ebe79b1173ab6698c69d18dc464294f1893b44bb" +dependencies = [ + "aes", + "byteorder", + "rand 0.8.8", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685" +dependencies = [ + "as-slice", +] + +[[package]] +name = "aligned-vec" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" +dependencies = [ + "equator", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5a08ebfa51fdc243e0c6a662f5cf3428f04d1ad858e3fe77238cc78063eb86d" +dependencies = [ + "alloy-core", + "alloy-signer", + "alloy-signer-local", +] + +[[package]] +name = "alloy-consensus" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727016fed834c2392d014dd697ea473f3e47bcec31ba31ccffa9c1d18ed904e5" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-trie", + "alloy-tx-macros", + "auto_impl", + "borsh", + "c-kzg", + "derive_more", + "either", + "k256 0.13.4", + "once_cell", + "rand 0.8.8", + "secp256k1 0.30.0", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-consensus-any" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea5ae60bbb3ce9dc52685a70a3755ad4432045fd38079b763cfe5127c706134" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-core" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6a70852055d66af821d28497e690c95950020ed1ee4c7a0ab9b02a01ac75ee3" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", +] + +[[package]] +name = "alloy-eip2124" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "crc", + "serde", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-eip2930" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64579d931b3f8eacc7c9ab0b220e87e9c4816e5c724ede1947b55c2f8e92ae5" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "borsh", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "borsh", + "serde", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-eip7928" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a12e1dc70236cfb8e79b96dd8544aed47c39e2f45dc6b51c3703e969e052faa" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "borsh", + "once_cell", + "serde", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-eip8141" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36422c14bd57dcd638e276c8c9d7ac09eb16598e3a9dbd34e4b55267d4565b5e" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "borsh", + "serde", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-eips" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01905444bd2fc330673f11d2466c0f54e8488f7ce3132b6a5e6497916fca765" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-eip7928", + "alloy-eip8141", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "auto_impl", + "borsh", + "c-kzg", + "derive_more", + "either", + "serde", + "serde_with", + "sha2 0.10.9", +] + +[[package]] +name = "alloy-json-abi" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "858acd7fdad1e4a7057fd9c1b39c1f2cd6bcd57ebf3c56e2853c02ead049e816" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-json-rpc" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff9cb760601d352d1e59aab5803c3fb6dc99824b6883f5c7a781aacd4b54c66" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "http", + "serde", + "serde_json", + "thiserror 2.0.21", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e11dfba13dac9e54576bf41e1b7461491367e0bce6a2a4293b9e40ffa3ebd5e9" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-json-rpc", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-any", + "alloy-rpc-types-eth", + "alloy-serde", + "alloy-signer", + "alloy-sol-types", + "async-trait", + "auto_impl", + "derive_more", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-network-primitives" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3819bf6794d25f679d42c3f2b168e12cae08c56bb41d393cb6249b55e6d5933e" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-primitives" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5e9dbd49258ac3ab893a481d46be29b58be7f734dcac46cd80b6b13ee36566c" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "fixed-cache", + "foldhash 0.2.0", + "hashbrown 0.17.1", + "indexmap 2.14.2", + "itoa", + "k256 0.13.4", + "keccak-asm", + "paste", + "proptest", + "rand 0.9.5", + "rapidhash", + "ruint", + "rustc-hash", + "secp256k1 0.31.1", + "serde", + "sha3 0.11.0", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24671b1f62edcf0f9b62994c7bf72cd621a04a4b99f5020ece1a647b40e2f103" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d4311c03125e8a18296504560b9de3d75ecbd0dcda7f71e6cf2a196d57e6fba" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c5d320312e4a9481b18185429e57fa161dbf9468414ba5667aff4ebe7bd37e7" +dependencies = [ + "alloy-consensus-any", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32c475e21fe8a8caa02166b326ed22207a1a0597fc9b0dcdfb46e2fe6f80dadf" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-sol-types", + "alloy-trie", + "itertools 0.14.0", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-serde" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f44f297d3b9e3ca2c3039e3c0ed69acde9b35edda15381cf78f725b7263fbe2" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7de6fd34b5ba1789d482fa800dd97219b34765d6b07633a989a24d2dace770e" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "either", + "elliptic-curve 0.13.8", + "k256 0.13.4", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-signer-local" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6909c09d586c7b55eced688754d57dde8a6bcbae2b83e69a9b9250e74cfd79e" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "k256 0.13.4", + "rand 0.8.8", + "thiserror 2.0.21", +] + +[[package]] +name = "alloy-sol-macro" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60dd79f578c3912f1fc2a150dbeb8110b8cfb976c60f98ebf6de9d5da5965a2b" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error3", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edb8520f2f94275e1caa73c85207dcc78ec402a9a4c429240f9a0783a8f16c0" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap 2.14.2", + "proc-macro-error3", + "proc-macro2", + "quote", + "sha3 0.11.0", + "syn 2.0.119", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66af2d9344882172993be5f5cbfd349fdfa52cb548f7af8715b446fb35ef6001" +dependencies = [ + "const-hex", + "dunce", + "heck", + "macro-string", + "proc-macro2", + "quote", + "syn 2.0.119", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c2a8abc3334044013b23d5e438cc5dc802e5544cc42b713d0840d5185967cc" +dependencies = [ + "serde", + "winnow 1.0.4", +] + +[[package]] +name = "alloy-sol-types" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e6f87cf007caa54e95455875fbd25879b008d0d9c7c340a2c258b3a3400a28c" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "serde", +] + +[[package]] +name = "alloy-trie" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b94e3e0a88f8db47250ac8a95fb825d020719f833eb1dc661bd3609c3bbece7d" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "derive_more", + "nybbles", + "serde", + "smallvec 1.16.2", + "thiserror 2.0.21", + "tracing", +] + +[[package]] +name = "alloy-tx-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60fa90c57738ace5b38106c9f743f3d6d47de09a82e82ecfc42702c1acf116ee" +dependencies = [ + "darling 0.23.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ampc-secret-sharing" +version = "0.1.0" +source = "git+https://github.com/worldcoin/ampc-common.git?rev=3062538f0307471ed0dd2be8258952c807747141#3062538f0307471ed0dd2be8258952c807747141" +dependencies = [ + "aes-prng", + "bytemuck", + "eyre", + "itertools 0.13.0", + "num-traits", + "rand 0.8.8", + "rand_distr", + "serde", +] + +[[package]] +name = "android_system_properties" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + +[[package]] +name = "anyhow" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" + +[[package]] +name = "anymap2" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" + +[[package]] +name = "anymap3" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5dfbc6d8d2675589ccbe4d0fd61df2419075625f8c1a62325e718e2b0049f9" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "aquamarine" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "arg_enum_proc_macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-bn254" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bc66f96ebe2a17a499475b4f94791d379817592ef494171586967ffdc6f95db" +dependencies = [ + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-r1cs-std", + "ark-std 0.6.0", +] + +[[package]] +name = "ark-crypto-primitives" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0c292754729c8a190e50414fd1a37093c786c709899f29c9f7daccecfa855e" +dependencies = [ + "ahash", + "ark-crypto-primitives-macros", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-relations 0.5.1", + "ark-serialize 0.5.0", + "ark-snark 0.5.1", + "ark-std 0.5.0", + "blake2 0.10.6", + "derivative", + "digest 0.10.7", + "fnv", + "merlin", + "sha2 0.10.9", +] + +[[package]] +name = "ark-crypto-primitives" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31b3409b1846fe459d19c95df039481575ac6d5842ae63858ad75cc31219bfc1" +dependencies = [ + "ahash", + "ark-crypto-primitives-macros", + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-r1cs-std", + "ark-relations 0.6.0", + "ark-serialize 0.6.0", + "ark-snark 0.6.0", + "ark-std 0.6.0", + "blake2 0.10.6", + "blake3", + "derivative", + "digest 0.10.7", + "fnv", + "merlin", + "num-bigint", + "rayon", + "sha2 0.10.9", +] + +[[package]] +name = "ark-crypto-primitives-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8352a2b2aedf6ba2cc38f7520fc51191d518dde96175c729af19f2d059f191c4" +dependencies = [ + "ahash", + "ark-ff 0.6.0", + "ark-poly 0.6.0", + "ark-serialize 0.6.0", + "ark-std 0.6.0", + "educe", + "fnv", + "hashbrown 0.17.1", + "itertools 0.14.0", + "num-bigint", + "num-integer", + "num-traits", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7a806ac6c8307b929df4645776290a50ee2aac754ad09d8bdf73391309e43af" +dependencies = [ + "ark-ff-asm 0.6.0", + "ark-ff-macros 0.6.0", + "ark-serialize 0.6.0", + "ark-std 0.6.0", + "digest 0.10.7", + "educe", + "num-bigint", + "num-traits", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-ff-asm" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1479009684adc073dff49a1025d3a7065b317a9ead25aaaca38cdc70058ba8a2" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-ff-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0691ed21ef00ef89c1e9bda832eba493dda3ec2f8d892fb25b705f73f06bb8" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-groth16" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88f1d0f3a534bb54188b8dcc104307db6c56cdae574ddc3212aec0625740fc7e" +dependencies = [ + "ark-crypto-primitives 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-relations 0.5.1", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-groth16" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a293328aa422e65527e285614ce5d1dceb0bd7b8b18d18b1b63191ee1f74cb41" +dependencies = [ + "ark-crypto-primitives 0.6.0", + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-poly 0.6.0", + "ark-relations 0.6.0", + "ark-serialize 0.6.0", + "ark-snark 0.6.0", + "ark-std 0.6.0", + "rayon", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", +] + +[[package]] +name = "ark-poly" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f55af10b672002b8d953e230282c51206842e20e5791a94432219b4201de5c" +dependencies = [ + "ahash", + "ark-ff 0.6.0", + "ark-serialize 0.6.0", + "ark-std 0.6.0", + "educe", + "fnv", + "hashbrown 0.17.1", + "rayon", +] + +[[package]] +name = "ark-r1cs-std" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291f1c6628bfcac79b0dc2adbe401aa9100e2e96daa971645e0b18fc94de9a98" +dependencies = [ + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-relations 0.6.0", + "ark-std 0.6.0", + "educe", + "itertools 0.14.0", + "num-bigint", + "num-integer", + "num-traits", + "tracing", +] + +[[package]] +name = "ark-relations" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" +dependencies = [ + "ark-ff 0.5.0", + "ark-std 0.5.0", + "tracing", +] + +[[package]] +name = "ark-relations" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe4c11c797a64b8a23e22bf4e77bf582ac27bb21395e3183a9a506ba2561e9f9" +dependencies = [ + "ark-ff 0.6.0", + "ark-poly 0.6.0", + "ark-serialize 0.6.0", + "ark-std 0.6.0", + "foldhash 0.1.5", + "indexmap 2.14.2", + "rayon", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a74dd304fd536fb95d0a328e72be759209cc496a9da094c5bc56e5fea4f9e86b" +dependencies = [ + "ark-serialize-derive 0.6.0", + "ark-std 0.6.0", + "digest 0.10.7", + "num-bigint", + "rayon", + "serde_with", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f153690697a2b91e5e1251ff98411ee5371500a111a0fd317a70e588eb300f9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-snark" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d368e2848c2d4c129ce7679a7d0d2d612b6a274d3ea6a13bad4445d61b381b88" +dependencies = [ + "ark-ff 0.5.0", + "ark-relations 0.5.1", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-snark" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bdb461d2be9b2bd6f303c79fffc89f5858790a7b4d33257bca3178e2c071fb9" +dependencies = [ + "ark-ff 0.6.0", + "ark-relations 0.6.0", + "ark-serialize 0.6.0", + "ark-std 0.6.0", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand 0.8.8", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.8", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.8", +] + +[[package]] +name = "ark-std" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "367c9c827ed431bff6868b7aa926e05b16eb46603cc8b6e768e4a5553fa1d155" +dependencies = [ + "num-traits", + "rand 0.8.8", + "rayon", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" +dependencies = [ + "serde", + "zeroize", +] + +[[package]] +name = "as-slice" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "askama" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6024d73179f43f15ccd2b881bfea6fee7f3a46ec53f33b52210dea749ebebaa4" +dependencies = [ + "askama_macros", + "itoa", + "percent-encoding", + "serde", + "serde_json", +] + +[[package]] +name = "askama_derive" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071ee5ebf2138e3ad180e0aacf6940c2cab5e6d8333741d9925c7bee2b153f39" +dependencies = [ + "askama_parser", + "basic-toml", + "glob", + "memchr", + "proc-macro2", + "quote", + "rustc-hash", + "serde", + "serde_derive", + "syn 3.0.6", +] + +[[package]] +name = "askama_macros" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643e1c7cbb6aec1d920332fe51a7c0d8219e273dcb8602db03f5263e4d16487b" +dependencies = [ + "askama_derive", +] + +[[package]] +name = "askama_parser" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c5ae75772275d268b03ab8bdccdd12117b6169ee23256942b34e46c9f476583" +dependencies = [ + "rustc-hash", + "serde", + "serde_derive", + "unicode-ident", + "winnow 1.0.4", +] + +[[package]] +name = "async-compat" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c97d7ff3c25d6c10d64170c12acaf5d4245e76dece3779c1d92b153a64f11df" +dependencies = [ + "futures-core", + "futures-io", + "once_cell", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-lock" +version = "3.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-trait" +version = "0.1.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "attestation-gateway-types" +version = "0.1.0" +source = "git+https://github.com/worldcoin/attestation-gateway?rev=f5d1f53#f5d1f53db6d1158b82c62dc02348c0e314d0b6ce" +dependencies = [ + "hex", + "http", + "serde", + "sha2 0.10.9", + "thiserror 2.0.21", +] + +[[package]] +name = "auto_impl" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "av-scenechange" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394" +dependencies = [ + "aligned", + "anyhow", + "arg_enum_proc_macro", + "arrayvec", + "log", + "num-rational", + "num-traits", + "pastey", + "rayon", + "thiserror 2.0.21", + "v_frame", + "y4m", +] + +[[package]] +name = "av1-grain" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8" +dependencies = [ + "anyhow", + "arrayvec", + "log", + "nom 8.0.0", + "num-rational", + "v_frame", +] + +[[package]] +name = "avif-serialize" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7178fe5f7d460b13895ebb9dcb28a3a6216d2df2574a0806cb51b555d297f38" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "axum" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" +dependencies = [ + "axum-core", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde_core", + "sync_wrapper", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", +] + +[[package]] +name = "backtrace" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide 0.8.9", + "object", + "rustc-demangle", + "windows-link", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base16ct" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" + +[[package]] +name = "base64ct" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" + +[[package]] +name = "basic-toml" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a" +dependencies = [ + "serde", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bit_field" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" + +[[package]] +name = "bitcoin-consensus-encoding" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9daa31138eb443d5751b207f3f64154e2bb09cd59960562ccc7a7112be38147f" +dependencies = [ + "bitcoin-internals", + "hex-conservative 1.3.0", + "serde", +] + +[[package]] +name = "bitcoin-internals" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8bea3a9f0cfece4564e37cb49a38cc245ca5184719e50d7d0dda3268722c4e2" + +[[package]] +name = "bitcoin-io" +version = "0.1.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb5de036369d1ac59d3c1819ebc4d850f89466f5401c571a285b6ed564a4cb78" +dependencies = [ + "bitcoin-consensus-encoding", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.14.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bca4c7abb40c8817d77403c880988cfd484f23ab2365726afb2f798363e2c4a2" +dependencies = [ + "bitcoin-io", + "hex-conservative 0.2.3", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06" + +[[package]] +name = "bitstream-io" +version = "4.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f" +dependencies = [ + "no_std_io2", +] + +[[package]] +name = "bitvec" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddcec3d12c579d40898fe0a9a358a803c23e9c52ca3c425707f81c9436211837" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b5d4d889834ee8ecfc0f8426ad30faf7cdcb10f741a8e6d7224d95325479f6f" +dependencies = [ + "digest 0.11.3", +] + +[[package]] +name = "blake3" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures 0.2.17", + "digest 0.10.7", + "zeroize", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" +dependencies = [ + "hybrid-array", +] + +[[package]] +name = "block-padding" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blst" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20659f9bbee16cbbd2f7393e40ab6309f5a98f76a2eb57a995ec508b72387fe" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "borsh" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "553c5d846a6ba5150c65e3b1b8ec073bcf1abc20f9b7220de384a4443ea4e20a" +dependencies = [ + "borsh-derive", + "bytes", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cdfe656708a01f89b451a7d36466e6fe6c414de0aa18fc54f864f6f9ca9f56" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "brillig" +version = "1.0.0-beta.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f985dfdc4f40039725ee3032e235900797db5987a99e1f8adbc5a449a67ef22" +dependencies = [ + "acir_field", + "itertools 0.14.0", + "serde", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "built" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0e531d93d39c34eef561e929e8a7f86d77a5af08aac4f6d6e39976c51858e9" + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[package]] +name = "by_address" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "bytemuck" +version = "1.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a1f896587b6f2c069c73d2f0913e2d590c3990285cd2f0b6aa02b786b4c679c" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" +dependencies = [ + "serde", +] + +[[package]] +name = "c-kzg" +version = "2.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d04308254695569fdb9bfe3bacc1c91837a670d0806605eb82d63748fbd3a6" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "once_cell", + "serde", +] + +[[package]] +name = "camino" +version = "1.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbbad30e4b4c14a39e3cc8aed085a12a327257c316619c93581e017bc52be591" +dependencies = [ + "serde_core", +] + +[[package]] +name = "cargo-platform" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0061da739915fae12ea00e16397555ed4371a6bb285431aab930f61b0aa4ba" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "cargo_metadata" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.28", + "serde", + "serde_json", + "thiserror 2.0.21", +] + +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher", +] + +[[package]] +name = "cc" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f360145194ee8e21db5ee7f3fcd4fe52210864c75c985dae33218202c8bbe040" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex 2.0.1", +] + +[[package]] +name = "cfg-if" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" + +[[package]] +name = "cfg_aliases" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" + +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures 0.2.17", +] + +[[package]] +name = "chacha20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "rand_core 0.10.1", +] + +[[package]] +name = "chrono" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common 0.1.7", + "inout", + "zeroize", +] + +[[package]] +name = "clang" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ed30b30e1e17966b55ddd0b9dd2758fd824f0a6da6875c8abb17e6aba47c28" +dependencies = [ + "clang-sys", + "libc", +] + +[[package]] +name = "clang-sys" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "clap_lex" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486" + +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + +[[package]] +name = "cobs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.21", +] + +[[package]] +name = "codespan" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583f52b0658b321b25fd6b209b6c76cf058f433071297de64e5980c3d9aad937" +dependencies = [ + "codespan-reporting", + "serde", +] + +[[package]] +name = "codespan-reporting" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681" +dependencies = [ + "serde", + "termcolor", + "unicode-width", +] + +[[package]] +name = "color-eyre" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d" +dependencies = [ + "backtrace", + "color-spantrace", + "eyre", + "indenter", + "once_cell", + "owo-colors", + "tracing-error", +] + +[[package]] +name = "color-spantrace" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427" +dependencies = [ + "once_cell", + "owo-colors", + "tracing-core", + "tracing-error", +] + +[[package]] +name = "colorchoice" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + +[[package]] +name = "colorutils-rs" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2fc25857fa523662de5cae84225b0e7bfb24a2a3f9ed8802fecf03df7252b1" +dependencies = [ + "erydanos", + "half", + "num-traits", + "rayon", +] + +[[package]] +name = "combine" +version = "4.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfc320937d09e6de266b31b9afb480f197d7a861be86be7cb2ea7e5d1bfffc5e" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "const-hex" +version = "1.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e59eef12462b0f9b0a3620219be5d639afd79fe39dff0a42c3997061f9298b4" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "proptest", + "serde_core", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const-oid" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + +[[package]] +name = "const_format" +version = "0.2.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4481a617ad9a412be3b97c5d403fef8ed023103368908b9c50af598ff467cc1e" +dependencies = [ + "const_format_proc_macros", + "konst", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" + +[[package]] +name = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpubits" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853" + +[[package]] +name = "crc32fast" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01a7799fd6b852db0e61728dde9a204c423b44d689dbd432522543614b490e78" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "crossbeam-deque" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622f3fc73690be383c7214310406f28a90e6edeadc3cea882f9d71e495b9711a" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc74980687109a3b14c72fd458107bf0baa1da1a1a805e178d15501ba9b86d9d" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-bigint" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" +dependencies = [ + "cpubits", + "ctutils", + "getrandom 0.4.3", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "crypto-common" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" +dependencies = [ + "getrandom 0.4.3", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "crypto_box" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16182b4f39a82ec8a6851155cc4c0cda3065bb1db33651726a29e1951de0f009" +dependencies = [ + "aead", + "blake2 0.10.6", + "crypto_secretbox", + "curve25519-dalek", + "salsa20", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto_secretbox" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d6cf87adf719ddf43a805e92c6870a531aedda35ff640442cbaf8674e141e1" +dependencies = [ + "aead", + "cipher", + "generic-array", + "poly1305", + "salsa20", + "subtle", + "zeroize", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "curve25519-dalek-derive", + "fiat-crypto", + "rustc_version 0.4.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "cxx-build" +version = "1.0.202" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fde53ca86b9704a943fef0f1e1d836239a6aedca5de3c65fa9f97ec0bd46d39" +dependencies = [ + "cc", + "codespan-reporting", + "indexmap 2.14.2", + "proc-macro2", + "quote", + "scratch", + "syn 3.0.6", +] + +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core 0.23.0", + "darling_macro 0.23.0", +] + +[[package]] +name = "darling" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed17f5901b6630b993ca003def43f2f8ef4014fc13b047b57aad617ff32bc2ec" +dependencies = [ + "darling_core 0.24.1", + "darling_macro 0.24.1", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "serde", + "strsim", + "syn 2.0.119", +] + +[[package]] +name = "darling_core" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6837e2cf7485aaae18f86181d2f0e9a7ed297a025e220aeabf63fdebd3a2ddff" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 3.0.6", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core 0.23.0", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "darling_macro" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ac7135c3ef02b2f7833bbeb1be5ba7f966dcde8a87c6b87f65a778d71a02785" +dependencies = [ + "darling_core 0.24.1", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "data-encoding" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06" + +[[package]] +name = "deep_learning_backends" +version = "0.1.0" +source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" +dependencies = [ + "flexi_logger", + "image", + "log", + "ndarray", + "ndarray-stats", + "num-traits", + "ort", + "ort-tract", + "serde", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "defmt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" +dependencies = [ + "defmt-parser", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror 2.0.21", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid 0.9.6", + "pem-rfc7468 0.7.0", + "zeroize", +] + +[[package]] +name = "der" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a878c850e9e421b20262e9b41f9c860e4785fa07541c266b62ff9d1ef998a80a" +dependencies = [ + "const-oid 0.10.2", + "pem-rfc7468 1.0.0", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "serde_core", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive-new" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3418329ca0ad70234b9735dc4ceed10af4df60eff9c8e7b06cb5e520d92c3535" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive-where" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e2b94854e8576378ccda7c8de8a66ed8b4e8acbd2c50ec3418ea6c8aaf4b567" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "syn 2.0.119", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "const-oid 0.9.6", + "crypto-common 0.1.7", + "subtle", +] + +[[package]] +name = "digest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.1", + "const-oid 0.10.2", + "crypto-common 0.2.2", + "ctutils", +] + +[[package]] +name = "displaydoc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "doc-comment" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9" + +[[package]] +name = "document-features" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dryoc" +version = "0.6.2" +source = "git+https://github.com/brndnmtthws/dryoc?rev=e0e0ef0#e0e0ef0e77c483eabcc266bd06ff058fd330de92" +dependencies = [ + "bitflags 2.13.2", + "chacha20 0.9.1", + "curve25519-dalek", + "generic-array", + "lazy_static", + "libc", + "rand_core 0.6.4", + "salsa20", + "sha2 0.10.9", + "subtle", + "winapi", + "zeroize", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "dyn-hash" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15401da73a9ed8c80e3b2d4dc05fe10e7b72d7243b9f614e516a44fa99986e88" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der 0.7.10", + "digest 0.10.7", + "elliptic-curve 0.13.8", + "rfc6979 0.4.0", + "serdect 0.2.0", + "signature 2.2.0", + "spki 0.7.3", +] + +[[package]] +name = "ecdsa" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" +dependencies = [ + "der 0.8.2", + "digest 0.11.3", + "elliptic-curve 0.14.1", + "rfc6979 0.6.0", + "signature 3.0.0", + "spki 0.8.0", + "zeroize", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "either" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34" +dependencies = [ + "serde", +] + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct 0.2.0", + "crypto-bigint 0.5.5", + "digest 0.10.7", + "ff 0.13.1", + "generic-array", + "group 0.13.0", + "pem-rfc7468 0.7.0", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "sec1 0.7.3", + "serdect 0.2.0", + "subtle", + "zeroize", +] + +[[package]] +name = "elliptic-curve" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" +dependencies = [ + "base16ct 1.0.0", + "crypto-bigint 0.7.5", + "crypto-common 0.2.2", + "digest 0.11.3", + "ff 0.14.0", + "group 0.14.0", + "hybrid-array", + "pem-rfc7468 1.0.0", + "pkcs8 0.11.0", + "rand_core 0.10.1", + "sec1 0.8.1", + "subtle", + "zeroize", +] + +[[package]] +name = "embed-doc-image" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af36f591236d9d822425cb6896595658fa558fcebf5ee8accac1d4b92c47166e" +dependencies = [ + "base64 0.13.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + +[[package]] +name = "enum-as-inner" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "enum-ordinalize" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89dd01549b09589510cf0647475075d12071456586d70f5c75c98ae2a5537677" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65863d15a4ce2888bd2f0f543cc963d3879c3a022c8ee43f6141d479a3ac815" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "equator" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" +dependencies = [ + "equator-macro", +] + +[[package]] +name = "equator-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "erydanos" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cbdc4987ed8e9ece64845393c2d53596b3a4ccbfb3948d799d58f6450e89fb1" +dependencies = [ + "num-traits", +] + +[[package]] +name = "event-listener" +version = "5.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2" +dependencies = [ + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "exr" +version = "1.74.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711fe42c9964295e01ee3fba3f9fe0e1d24b98886950d68efe81b1c76e21adf3" +dependencies = [ + "bit_field", + "half", + "lebe", + "miniz_oxide 0.8.9", + "num-complex", + "pulp", + "rayon-core", + "smallvec 1.16.2", + "zune-inflate", +] + +[[package]] +name = "eyre" +version = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08309dbcc659c5549a24ddb9b27027640641b282ef5768267c7e675558986a3" +dependencies = [ + "autocfg", + "indenter", + "once_cell", +] + +[[package]] +name = "face-engine" +version = "2.20.0" +source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" +dependencies = [ + "approx", + "aquamarine", + "async-lock", + "cfg-if", + "deep_learning_backends", + "fast_image_resize", + "flexi_logger", + "graph", + "image", + "imageproc", + "inventory", + "itertools 0.13.0", + "log", + "nalgebra", + "ndarray", + "ndarray-stats", + "num-traits", + "schemars 0.8.22", + "serde", + "serde_json", + "serde_with", + "serde_yaml", + "thiserror 1.0.69", + "tracing", + "uniffi", + "utils", + "utils_macros", +] + +[[package]] +name = "fast_image_resize" +version = "5.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc7fe45cf92b43817ff62a3723e862b85bd1d06288f63007f7645d1d2f7a060" +dependencies = [ + "bytemuck", + "cfg-if", + "document-features", + "image", + "num-traits", + "rayon", + "thiserror 2.0.21", +] + +[[package]] +name = "fastrand" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "ff" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" +dependencies = [ + "rand_core 0.10.1", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "filetime" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759" +dependencies = [ + "cfg-if", + "libc", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484" + +[[package]] +name = "fixed-cache" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fe63500644ef0269fe6b744e7e5dc5c20b5eebf3d881bc2be53f194636f6583" +dependencies = [ + "equivalent", + "rapidhash", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand 0.8.8", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + +[[package]] +name = "flate2" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb" +dependencies = [ + "crc32fast", + "miniz_oxide 0.9.1", + "zlib-rs", +] + +[[package]] +name = "flexi_logger" +version = "0.28.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cca927478b3747ba47f98af6ba0ac0daea4f12d12f55e9104071b3dc00276310" +dependencies = [ + "chrono", + "glob", + "log", + "nu-ansi-term", + "thiserror 1.0.69", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs-err" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91aa448ca50d7e79433bdf3ee8d99215430d2ec02ade5aefab2a073a1822e8a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" + +[[package]] +name = "futures-executor" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" + +[[package]] +name = "futures-macro" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "futures-sink" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" + +[[package]] +name = "futures-task" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" + +[[package]] +name = "futures-util" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "futures-utils-wasm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" + +[[package]] +name = "glob" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" + +[[package]] +name = "goblin" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" +dependencies = [ + "log", + "plain", + "scroll", +] + +[[package]] +name = "graph" +version = "0.1.0" +source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" +dependencies = [ + "graph_macros", + "inventory", + "log", + "schemars 0.8.22", + "serde", + "serde_with", + "serde_yaml", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "graph_macros" +version = "0.1.0" +source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" +dependencies = [ + "inventory", + "once_cell", + "proc-macro2", + "quote", + "serde", + "serde_yaml", + "syn 2.0.119", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff 0.13.1", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "group" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" +dependencies = [ + "ff 0.14.0", + "rand_core 0.10.1", + "subtle", +] + +[[package]] +name = "h2" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef8e5e5a340588f4452631496976cf8636d4a7ecf600239fdc27615d2530bc16" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.14.2", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "num-traits", + "zerocopy", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "allocator-api2", + "foldhash 0.2.0", + "serde", + "serde_core", +] + +[[package]] +name = "heapless" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32", + "rustc_version 0.4.1", + "serde", + "spin 0.9.9", + "stable_deref_trait", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17592d60ebacc7d5e169f4663c5f84f9161cc90328abcfe8456f41e4dfcb284" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-conservative" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3fef046dca3ca91ee1408a8c1b80ab777e80a4d308d1bf4e7adb3fcb047e08" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "hex-conservative" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271e0d19bcb473b6675739a2b536076b24a082316cb5199ad918edce10c599e8" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "histogram_equalization" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cba4fb49502d10e699c8907af302e4ecdd930773a1cd63a9fce6a9ab8223d93" +dependencies = [ + "colorutils-rs", + "num-traits", + "rayon", + "yuv", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "hmac" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" +dependencies = [ + "digest 0.11.3", +] + +[[package]] +name = "http" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hybrid-array" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27f864f10dfb56725ce5ce5472bc52252c8f93a4ab86327122cebf62c5f59a17" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + +[[package]] +name = "hyper" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b501faa50e7a26c3d3560ca625132f4078a17771f4810baf70475ae48cbe43" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec 1.16.2", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa8e654703247911e29c23fbeaa261834bd9bb74efba2f9acddc37bfb127f53" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc03d96684f9226b8a787cdb71488417b53ab5ea8fdb1dac946cb9431cc8bff" +dependencies = [ + "base64 0.23.1", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "httparse", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec 1.16.2", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" + +[[package]] +name = "icu_properties" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" + +[[package]] +name = "icu_provider" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec 1.16.2", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "ignition" +version = "1.0.0" +source = "git+https://github.com/diego-a-orellana/ignition.git?branch=main#2693b9aa50ac7f94939809076926f76539775845" +dependencies = [ + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "image" +version = "0.25.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" +dependencies = [ + "bytemuck", + "byteorder-lite", + "exr", + "moxcms", + "num-traits", + "png", + "ravif", + "rayon", + "zune-core", + "zune-jpeg", +] + +[[package]] +name = "imageproc" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "602b4e8a4cc3e98372b766cd184ab532999bc0e839b7469e759511ccabc65d77" +dependencies = [ + "ab_glyph", + "approx", + "getrandom 0.2.17", + "image", + "itertools 0.12.1", + "nalgebra", + "num", + "rand 0.8.8", + "rand_distr", + "rayon", +] + +[[package]] +name = "imgref" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e44b0a4eaa4c82f441d50a963f2d5f05a787240aeee097597033e72accfd22f" + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "include_dir" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "indenter" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855" +dependencies = [ + "equivalent", + "hashbrown 0.17.1", + "serde", + "serde_core", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "interpolate_name" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "inventory" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" +dependencies = [ + "rustversion", +] + +[[package]] +name = "ipnet" +version = "2.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791930b43c0d5973160d90a8f3894509f2b273430f5c5c73b668636d0287c5c0" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "jiff" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1baf72f08796de0260609515130699b890ac25f30e610ad894bc5856cafdb" +dependencies = [ + "defmt", + "jiff-core", + "jiff-static", + "jiff-tzdb-platform", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", + "windows-link", +] + +[[package]] +name = "jiff-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e52fe76043ccecc9005d2305ebaadf7d7fc0cc89ca6baa10a94d6bc68c7128c" +dependencies = [ + "defmt", + "log", +] + +[[package]] +name = "jiff-static" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "378268a1116ad67ae6228701118ac9f491d78fda38a40a1f1a9e1348de6f7212" +dependencies = [ + "jiff-core", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +dependencies = [ + "jiff-tzdb", +] + +[[package]] +name = "jobserver" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" +dependencies = [ + "getrandom 0.4.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5" +dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "once_cell", + "serdect 0.2.0", + "sha2 0.10.9", +] + +[[package]] +name = "k256" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" +dependencies = [ + "cpubits", + "ecdsa 0.17.0", + "elliptic-curve 0.14.1", + "primeorder 0.14.0", + "sha2 0.11.0", + "signature 3.0.0", + "wnaf", +] + +[[package]] +name = "keccak" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" +dependencies = [ + "cpufeatures 0.2.17", +] + +[[package]] +name = "keccak" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8f198d1db720e4940b5a493201d199d9f24f568f8f746bd13706243a2f71598" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", +] + +[[package]] +name = "keccak-asm" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f32890f646914a263e39064295005972f0e95b928254061b2aca98445f304ee9" +dependencies = [ + "cfg-if", + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "konst" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "128133ed7824fcd73d6e7b17957c5eb7bacb885649bd8c69708b2331a10bcefb" +dependencies = [ + "konst_macro_rules", +] + +[[package]] +name = "konst_macro_rules" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" + +[[package]] +name = "kstring" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a09b82a7f771ed02dc0dd9b27130a0fa5499fa15ed3027116c1e5e4e591bd9e" +dependencies = [ + "serde", + "static_assertions", +] + +[[package]] +name = "lazy_static" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20870f649af7073d53e38067b2a84312175d56ea15217e1b15bc83506ec50afb" +dependencies = [ + "spin 0.9.9", +] + +[[package]] +name = "lebe" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" + +[[package]] +name = "libc" +version = "0.2.189" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" + +[[package]] +name = "libfuzzer-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2" +dependencies = [ + "arbitrary", + "cc", +] + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "liquid" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e9338405fdbc0bce9b01695b2a2ef6b20eca5363f385d47bce48ddf8323cc25" +dependencies = [ + "doc-comment", + "liquid-core", + "liquid-derive", + "liquid-lib", + "serde", +] + +[[package]] +name = "liquid-core" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feb8fed70857010ed9016ed2ce5a7f34e7cc51d5d7255c9c9dc2e3243e490b42" +dependencies = [ + "anymap2", + "itertools 0.13.0", + "kstring", + "liquid-derive", + "num-traits", + "pest", + "pest_derive", + "regex", + "serde", + "time", +] + +[[package]] +name = "liquid-derive" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b51f1d220e3fa869e24cfd75915efe3164bd09bb11b3165db3f37f57bf673e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "liquid-lib" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee1794b5605e9f8864a8a4f41aa97976b42512cc81093f8c885d29fb94c6c556" +dependencies = [ + "itertools 0.13.0", + "liquid-core", + "once_cell", + "percent-encoding", + "regex", + "time", + "unicode-segmentation", +] + +[[package]] +name = "litemap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" + +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" + +[[package]] +name = "loop9" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" +dependencies = [ + "imgref", +] + +[[package]] +name = "lru-slab" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4050469837a6ff301cd14c1f8f24f88549e6d548f24f64e2148eb0f72cebc51f" + +[[package]] +name = "lzma-sys" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "mach2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" +dependencies = [ + "libc", +] + +[[package]] +name = "macro-string" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a9dbbfc75d2688ed057456ce8a3ee3f48d12eec09229f560f3643b9f275653" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "matrixmultiply" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f607c237553f086e7043417a51df26b2eb899d3caff94e6a67592ff992fedc7" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", +] + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "memmap2" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak 0.1.6", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "mmap-rs" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86968d85441db75203c34deefd0c88032f275aaa85cee19a1dcfff6ae9df56da" +dependencies = [ + "bitflags 1.3.2", + "combine", + "libc", + "mach2", + "nix", + "sysctl", + "thiserror 1.0.69", + "widestring", + "windows 0.48.0", +] + +[[package]] +name = "moxcms" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" +dependencies = [ + "num-traits", + "pxfm", +] + +[[package]] +name = "multimap" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" + +[[package]] +name = "nalgebra" +version = "0.32.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5c17de023a86f59ed79891b2e5d5a94c705dbe904a5b5c9c952ea6221b03e4" +dependencies = [ + "approx", + "matrixmultiply", + "nalgebra-macros", + "num-complex", + "num-rational", + "num-traits", + "serde", + "simba", + "typenum", +] + +[[package]] +name = "nalgebra-macros" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ndarray" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" +dependencies = [ + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "portable-atomic", + "portable-atomic-util", + "rawpointer", + "serde", +] + +[[package]] +name = "ndarray-stats" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ebbe97acce52d06aebed4cd4a87c0941f4b2519b59b82b4feb5bd0ce003dfd" +dependencies = [ + "indexmap 2.14.2", + "itertools 0.13.0", + "ndarray", + "noisy_float", + "num-integer", + "num-traits", + "rand 0.8.8", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset", + "pin-utils", +] + +[[package]] +name = "no_std_io2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418abd1b6d34fbf6cae440dc874771b0525a604428704c76e48b29a5e67b8003" +dependencies = [ + "memchr", +] + +[[package]] +name = "noisy_float" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c16843be85dd410c6a12251c4eca0dd1d3ee8c5725f746c4d5e0fdcec0a864b2" +dependencies = [ + "num-traits", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nom" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" +dependencies = [ + "memchr", +] + +[[package]] +name = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" +dependencies = [ + "num-integer", + "num-traits", + "rand 0.8.8", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" +dependencies = [ + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.8", + "smallvec 1.16.2", + "zeroize", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "bytemuck", + "num-traits", + "serde", +] + +[[package]] +name = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "num-integer" +version = "0.1.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "nybbles" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d49ff0c0d00d4a502b39df9af3a525e1efeb14b9dabb5bb83335284c1309210" +dependencies = [ + "alloy-rlp", + "cfg-if", + "proptest", + "ruint", + "serde", + "smallvec 1.16.2", +] + +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "opencv" +version = "0.98.1" +source = "git+https://github.com/diego-a-orellana/opencv-rust.git?branch=release%2Fv0.98.1b#201cbc77bbb7ad246e128d42d80fe6ad1dce83c9" +dependencies = [ + "cc", + "dunce", + "ignition", + "jobserver", + "libc", + "num-traits", + "opencv-binding-generator", + "pkg-config", + "semver 1.0.28", + "shlex 1.3.0", + "vcpkg", + "windows 0.62.2", +] + +[[package]] +name = "opencv-binding-generator" +version = "0.100.0" +source = "git+https://github.com/diego-a-orellana/opencv-rust.git?branch=release%2Fv0.98.1b#201cbc77bbb7ad246e128d42d80fe6ad1dce83c9" +dependencies = [ + "clang", + "clang-sys", + "dunce", + "percent-encoding", + "regex", + "shlex 1.3.0", +] + +[[package]] +name = "openssl-probe" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + +[[package]] +name = "orb-qr-link" +version = "0.1.0" +source = "git+https://github.com/worldcoin/orb-software?rev=8b0a781db62b04ff0351cd3350b1a9f8d49f07a3#8b0a781db62b04ff0351cd3350b1a9f8d49f07a3" +dependencies = [ + "blake3", + "data-encoding", + "serde", + "thiserror 1.0.69", + "uuid", +] + +[[package]] +name = "orb-relay-messages" +version = "0.0.0" +source = "git+https://github.com/worldcoin/orb-relay-messages.git?rev=9bc83771b15cbf22796e93a7276040db4d63a64d#9bc83771b15cbf22796e93a7276040db4d63a64d" +dependencies = [ + "blake3", + "prost 0.14.4", + "prost-build", + "prost-types", + "tonic", + "tonic-prost", + "tonic-prost-build", +] + +[[package]] +name = "ordered-float" +version = "5.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c7c9e0d9b23589f26070720bac724174bfec1083e82f7854cdd0267518343c0" +dependencies = [ + "num-traits", + "rand 0.8.8", + "serde", +] + +[[package]] +name = "ort" +version = "2.0.0-rc.10" +source = "git+https://github.com/diego-a-orellana/ort.git?branch=release%2Fv2.0.0-rc.10b#7937928d62b3f8e447231f165eb0bec863235757" +dependencies = [ + "half", + "ndarray", + "ort-sys", + "smallvec 2.0.0-alpha.10", + "tracing", +] + +[[package]] +name = "ort-sys" +version = "2.0.0-rc.10" +source = "git+https://github.com/diego-a-orellana/ort.git?branch=release%2Fv2.0.0-rc.10b#7937928d62b3f8e447231f165eb0bec863235757" +dependencies = [ + "pkg-config", +] + +[[package]] +name = "ort-tract" +version = "0.1.0+0.21" +source = "git+https://github.com/diego-a-orellana/ort.git?branch=release%2Fv2.0.0-rc.10b#7937928d62b3f8e447231f165eb0bec863235757" +dependencies = [ + "ort-sys", + "parking_lot", + "tract-onnx", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "owo-colors" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c45bb4a6ae1280ec0803b1ef9d3455eb50f01efbbe1447ab020f1d54fba9d8" + +[[package]] +name = "oxide" +version = "0.75.0" +source = "git+https://github.com/worldcoin/oxide.git?rev=329274a32be02be0bb39ca02adc4e4e4e438ada0#329274a32be02be0bb39ca02adc4e4e4e438ada0" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "ampc-secret-sharing", + "async-trait", + "attestation-gateway-types", + "base64 0.22.1", + "blake3", + "bytes", + "cc", + "chrono", + "ciborium", + "crypto_box", + "dryoc", + "face-engine", + "flate2", + "futures", + "hex", + "http", + "image", + "k256 0.13.4", + "log", + "orb-qr-link", + "orb-relay-messages", + "p256 0.13.2", + "prost 0.14.4", + "rand 0.8.8", + "reqwest", + "rsa", + "ruint", + "semaphore-rs", + "semaphore-rs-poseidon", + "semaphore-rs-trees", + "semaphore-rs-utils", + "serde", + "serde_json", + "sha2 0.10.9", + "strum 0.27.2", + "tar", + "thiserror 2.0.21", + "tokio", + "uniffi", + "uuid", + "world-id-primitives 0.13.0", + "zeroize", + "zip", +] + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "primeorder 0.13.6", + "sha2 0.10.9", +] + +[[package]] +name = "p256" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c9239b2dbc807adbbe147e8cf72ea7450c3a0aabe62cb8e75ff4ec22e1f72a" +dependencies = [ + "ecdsa 0.17.0", + "elliptic-curve 0.14.1", + "primefield", + "primeorder 0.14.0", + "sha2 0.11.0", +] + +[[package]] +name = "p3-challenger" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7d2d45f5a51dc3f965e8d6da60a6c26c807e88657863d56da275eaa05ad36f1" +dependencies = [ + "p3-field", + "p3-maybe-rayon", + "p3-monty-31", + "p3-symmetric", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-dft" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beabb40bc8ac7f5f95870f271fb844c7e2e1ebb7f0761a8eebb2614b56c6b1c1" +dependencies = [ + "itertools 0.14.0", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "spin 0.10.1", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4819a3e4c1882431a63d4847ffa10d110017aee4cb9cf4319ca6dca191930969" +dependencies = [ + "itertools 0.14.0", + "num-bigint", + "p3-maybe-rayon", + "p3-util", + "paste", + "rand 0.9.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-koala-bear" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfb02789fca0950e246123d652bd78e75a76e3b90a651fd88dbb215cd3e81f5a" +dependencies = [ + "p3-challenger", + "p3-field", + "p3-monty-31", + "p3-poseidon2", + "p3-symmetric", + "rand 0.9.5", +] + +[[package]] +name = "p3-matrix" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6fde449bd2963d394284ec46db8c647e6a5602d90601117b76752072ab54168" +dependencies = [ + "itertools 0.14.0", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand 0.9.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54afab3883d8a14676b492709d6c4e9fa535c36718b737db0817aacfaaaa11f6" + +[[package]] +name = "p3-mds" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3895055d735ac96d010747b3aaabd4c2645b9fd80226960550318db2e25afb75" +dependencies = [ + "p3-dft", + "p3-field", + "p3-symmetric", + "p3-util", + "rand 0.9.5", +] + +[[package]] +name = "p3-monty-31" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9fe0be661891af1f703ceaf57334fcbd540804988984dc2b500dd99740e7c81" +dependencies = [ + "itertools 0.14.0", + "num-bigint", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "paste", + "rand 0.9.5", + "serde", + "spin 0.10.1", + "tracing", +] + +[[package]] +name = "p3-poseidon2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6fc2368447576283f8b3849a36095017f25addf06eab9e33b0ce7f96b0b99d" +dependencies = [ + "p3-field", + "p3-mds", + "p3-symmetric", + "p3-util", + "rand 0.9.5", +] + +[[package]] +name = "p3-symmetric" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a14456a42a7d9e65f13999706f1bca2832175935169b3a54286e18331cf1d82f" +dependencies = [ + "itertools 0.14.0", + "p3-field", + "serde", +] + +[[package]] +name = "p3-util" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911154accf66034b0eec4452956c088f92a200b37a8225c1caed74cfbd38cc8d" +dependencies = [ + "serde", + "transpose", +] + +[[package]] +name = "palette" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddeed8580d347d2abf3dcf06a5f0b3dc020258338526b277847cd4248a70fc64" +dependencies = [ + "approx", + "palette_derive", + "palette_math", + "phf", +] + +[[package]] +name = "palette_derive" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88537020289b719d81be994ccf1bbf4990f477e2f69ee52fe3e45f43a02e56be" +dependencies = [ + "by_address", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "palette_math" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e6eb142958d64335fb0e345c5b9ead2ecd6fc438c307e9d7d3c4fd428dbaf12" + +[[package]] +name = "parity-scale-codec" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec 1.16.2", + "windows-link", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pastey" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "pem-rfc7468" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6305423e0e7738146434843d1694d621cce767262b2a86910beab705e4493d9" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pest" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45d3aca230fad2e6f6317ca0a72724338c4960cb97168a85cdee66df4a9a21a8" +dependencies = [ + "memchr", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284b60557f2c4a2e72ad3f2d34d42685a2fa4a6a61d0d2a10c0ae2a5e916c2cf" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d9d1f08a115309ee99268cf85e5228e0e56aa9caf8841ec12866b6be07c3109" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "pest_meta" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed93ba1a9ffcca32130a5188701c81c0c49cf00d4b7c5007d5148951d743adcb" +dependencies = [ + "pest", +] + +[[package]] +name = "petgraph" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" +dependencies = [ + "fixedbitset", + "hashbrown 0.15.5", + "indexmap 2.14.2", +] + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pin-utils" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13bee6c73da26345c729282832b60b0363cf3dd9f4bfd81d8551b7a1c889a113" + +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der 0.7.10", + "pkcs8 0.10.2", + "spki 0.7.3", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der 0.7.10", + "spki 0.7.3", +] + +[[package]] +name = "pkcs8" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" +dependencies = [ + "der 0.8.2", + "spki 0.8.0", +] + +[[package]] +name = "pkg-config" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "png" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" +dependencies = [ + "bitflags 2.13.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide 0.8.9", +] + +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures 0.2.17", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" + +[[package]] +name = "portable-atomic-util" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10ab3eb7f3becc3a1cbc4f2c6f20267996cfc1a6467a873763411b136a122715" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "postcard" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" +dependencies = [ + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "heapless", + "serde", +] + +[[package]] +name = "potential_utf" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.119", +] + +[[package]] +name = "primal-check" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc0d895b311e3af9902528fbb8f928688abbd95872819320517cc24ca6b2bd08" +dependencies = [ + "num-integer", +] + +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint 0.7.5", + "crypto-common 0.2.2", + "ff 0.14.0", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve 0.13.8", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve 0.14.1", + "once_cell", + "primefield", + "serdect 0.4.3", + "wnaf", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit 0.25.15+spec-1.1.0", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr3" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82366fd7d8b7a440d66d13418820c69df9b3908bcb1a0476d7f5ce5d12f5a04d" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error3" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b511283ea8a74b4b39447b128c5d00f03a356b7424554b13e298a5550100d9ac" +dependencies = [ + "proc-macro-error-attr3", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "proc-macro2" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "proptest" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744" +dependencies = [ + "bitflags 2.13.2", + "num-traits", + "rand 0.9.5", + "rand_chacha 0.9.0", + "rand_xorshift", + "regex-syntax", + "unarray", +] + +[[package]] +name = "prost" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +dependencies = [ + "bytes", + "prost-derive 0.11.9", +] + +[[package]] +name = "prost" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528ac67416ff8646872a3c02cad9cc4ee5dc9f9540c9b10771855c95cb2e5ae1" +dependencies = [ + "bytes", + "prost-derive 0.14.4", +] + +[[package]] +name = "prost-build" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03da047801ff44bb6a4d407d4860c05fd70bb81714e6b2f3812603d5b145b042" +dependencies = [ + "heck", + "itertools 0.14.0", + "log", + "multimap", + "petgraph", + "prettyplease", + "prost 0.14.4", + "prost-types", + "pulldown-cmark", + "pulldown-cmark-to-cmark", + "regex", + "syn 2.0.119", + "tempfile", +] + +[[package]] +name = "prost-derive" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +dependencies = [ + "anyhow", + "itertools 0.10.5", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-derive" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf" +dependencies = [ + "anyhow", + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "prost-types" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f94967dc7688f3054c7fac87473ffae4cc4c3904800e2d9f5b857246d8963b0a" +dependencies = [ + "prost 0.14.4", +] + +[[package]] +name = "provekit-common" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd137e327416256ac7281b7c0eed960d59ab5cd10d805ae4ee0e5241a8e01938" +dependencies = [ + "anyhow", + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "base64 0.22.1", + "bytes", + "ciborium", + "getrandom 0.2.17", + "hex", + "itertools 0.14.0", + "postcard", + "provekit-spongefish", + "provekit-spongefish-pow", + "provekit-whir", + "provekit_acir", + "provekit_noirc_abi", + "rayon", + "ruint", + "serde", + "serde_json", + "sha2 0.10.9", + "sha3 0.10.9", + "tracing", + "xz2", + "zerocopy", + "zstd", +] + +[[package]] +name = "provekit-spongefish" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a705ff6cb8bc4566a2d1a9f665243db958cbd90a852c3eef0dcc8dc8879ce5" +dependencies = [ + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "blake3", + "digest 0.10.7", + "keccak 0.1.6", + "p3-koala-bear", + "rand 0.8.8", + "sha2 0.10.9", + "sha3 0.10.9", + "zeroize", +] + +[[package]] +name = "provekit-spongefish-pow" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef05687e1ea5d63b54f03c86cf2ddd2cd3752a70151921619d0c66d129e6f309" +dependencies = [ + "blake3", + "bytemuck", + "keccak 0.1.6", + "provekit-spongefish", + "rand 0.8.8", + "rayon", +] + +[[package]] +name = "provekit-whir" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35334259c6ad5b1287ecef6bfb3deb3dbb963c9366091951316bdb33c2080fe6" +dependencies = [ + "approx", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "blake3", + "ciborium", + "clap", + "const-oid 0.9.6", + "derive-where", + "digest 0.10.7", + "hex", + "hex-literal", + "itertools 0.14.0", + "ordered-float", + "provekit-spongefish", + "rayon", + "serde", + "serde_json", + "sha2 0.10.9", + "sha3 0.10.9", + "static_assertions", + "tracing", + "zerocopy", + "zeroize", +] + +[[package]] +name = "provekit_acir" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d8c433b4ec3fda649e7740d8afd5d0abbea77a096e5e9ee832028598ae1f15d" +dependencies = [ + "acir_field", + "base64 0.22.1", + "brillig", + "flate2", + "num-bigint", + "num-traits", + "num_enum", + "provekit_noirc_span", + "rmp-serde", + "serde", + "serde-big-array", + "strum 0.26.3", + "strum_macros 0.28.0", + "thiserror 2.0.21", +] + +[[package]] +name = "provekit_acvm" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9513cb6fc2dd4a5e61b6606c23d50b0c8b11634ef66a1a04dddf46103645af" +dependencies = [ + "indexmap 2.14.2", + "itertools 0.14.0", + "provekit_acir", + "provekit_acvm_blackbox_solver", + "provekit_brillig_vm", + "rustc-hash", + "serde", + "thiserror 2.0.21", + "tracing", +] + +[[package]] +name = "provekit_acvm_blackbox_solver" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "007a76b3874b05c09f651fd912a2bf7e4bde640a99b2863053f61b37a4851e47" +dependencies = [ + "aes", + "blake2 0.11.0", + "blake3", + "cbc", + "k256 0.14.0", + "keccak 0.2.2", + "log", + "p256 0.14.0", + "provekit_acir", + "sha2 0.11.0", + "thiserror 2.0.21", +] + +[[package]] +name = "provekit_brillig_vm" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64856dccbb0a86ac44df84954be6546184f8fe69a2fc2c89f427facc1a903768" +dependencies = [ + "itertools 0.14.0", + "num-bigint", + "num-traits", + "provekit_acir", + "provekit_acvm_blackbox_solver", + "thiserror 2.0.21", +] + +[[package]] +name = "provekit_iter-extended" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c36f1bbf749df7298cb7edfb342a2979b45b6f3e121a49f298c4df03776902c4" + +[[package]] +name = "provekit_noirc_abi" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "351d040825214dd67fd402bd19ad19ee0833d20482b0d5ddcbd50f91af4d5d88" +dependencies = [ + "itertools 0.14.0", + "num-bigint", + "num-traits", + "provekit_acvm", + "provekit_iter-extended", + "provekit_noirc_printable_type", + "serde", + "serde_json", + "thiserror 2.0.21", + "toml 0.8.23", +] + +[[package]] +name = "provekit_noirc_printable_type" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39accb3c40ee64ded0fa2798f83cee2f7a970b8e0d94eea230ede9dc6b866fef" +dependencies = [ + "itertools 0.14.0", + "provekit_acvm", + "provekit_iter-extended", + "serde", + "serde_json", +] + +[[package]] +name = "provekit_noirc_span" +version = "1.0.0-beta.20-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88568fabd82cc3dca3d3e67e830459a1a402ce538e8d6a759fa41f65ef6280bd" +dependencies = [ + "codespan", + "serde", +] + +[[package]] +name = "pulldown-cmark" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e" +dependencies = [ + "bitflags 2.13.2", + "memchr", + "unicase", +] + +[[package]] +name = "pulldown-cmark-to-cmark" +version = "22.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84bbb29c624230c4bd1047bbdb2aa47e41c860e9665ce62ba9504eebe91bf867" +dependencies = [ + "pulldown-cmark", +] + +[[package]] +name = "pulp" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046aa45b989642ec2e4717c8e72d677b13edd831a4d3b6cf37d9a3e54912496a" +dependencies = [ + "bytemuck", + "cfg-if", + "libm", + "num-complex", + "paste", + "pulp-wasm-simd-flag", + "raw-cpuid", + "reborrow", + "version_check", +] + +[[package]] +name = "pulp-wasm-simd-flag" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8f70e07b9c3962945a74e59ca1c511bba65b6419468acc217c457d93f3c740" + +[[package]] +name = "pxfm" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea" + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quinn" +version = "0.11.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4051e23e9185c255a7e33ef59cdbca87a22d359052eecd22fc6b901fb37d9d11" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.21", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e750cca55fe4f0439a15d0bb529da9651e79993e8e72c61a899a36d462befbe" +dependencies = [ + "bytes", + "getrandom 0.4.3", + "lru-slab", + "rand 0.10.3", + "rand_pcg", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.21", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af66907df18639dcf4db56ca65490cabc4b27a97dbadd96f2926cca73298f016" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.61.2", +] + +[[package]] +name = "quote" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e058c7de0b26af77780c769414d6257830bb240f3c38477dbc2c16e5f54d6d4c" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "serde", +] + +[[package]] +name = "rand" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", + "serde", +] + +[[package]] +name = "rand" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" +dependencies = [ + "chacha20 0.10.2", + "getrandom 0.4.3", + "rand_core 0.10.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", + "serde", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", + "serde", +] + +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + +[[package]] +name = "rand_distr" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +dependencies = [ + "num-traits", + "rand 0.8.8", +] + +[[package]] +name = "rand_pcg" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" +dependencies = [ + "rand_core 0.10.1", +] + +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.5", +] + +[[package]] +name = "rapidhash" +version = "4.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5da7e78a036ce858e8d55b7e7dc8ba3a88b78350fd2155d3591bbd966b58589e" +dependencies = [ + "rustversion", +] + +[[package]] +name = "rav1e" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b" +dependencies = [ + "aligned-vec", + "arbitrary", + "arg_enum_proc_macro", + "arrayvec", + "av-scenechange", + "av1-grain", + "bitstream-io", + "built", + "cfg-if", + "interpolate_name", + "itertools 0.14.0", + "libc", + "libfuzzer-sys", + "log", + "maybe-rayon", + "new_debug_unreachable", + "noop_proc_macro", + "num-derive", + "num-traits", + "paste", + "profiling", + "rand 0.9.5", + "rand_chacha 0.9.0", + "simd_helpers", + "thiserror 2.0.21", + "v_frame", + "wasm-bindgen", +] + +[[package]] +name = "ravif" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45" +dependencies = [ + "avif-serialize", + "imgref", + "loop9", + "quick-error", + "rav1e", + "rayon", + "rgb", +] + +[[package]] +name = "raw-cpuid" +version = "11.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" +dependencies = [ + "bitflags 2.13.2", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rayon" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "reborrow" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.13.2", +] + +[[package]] +name = "ref-cast" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e440fb4e4b4147295338efb76001ab9e4efc0e5839df2c47fc5ac2381d365c3" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecd8964f8453721699a1ed72037b0db49ce2f5a5138486ee89bed6f67cdf3a" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "regex" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle", +] + +[[package]] +name = "rfc6979" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" +dependencies = [ + "crypto-bigint 0.7.5", + "hmac 0.13.0", +] + +[[package]] +name = "rgb" +version = "0.8.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rmp" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ba8be72d372b2c9b35542551678538b562e7cf86c3315773cae48dfbfe7790c" +dependencies = [ + "num-traits", +] + +[[package]] +name = "rmp-serde" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f81bee8c8ef9b577d1681a70ebbc962c232461e397b22c208c43c04b67a155" +dependencies = [ + "rmp", + "serde", +] + +[[package]] +name = "rsa" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" +dependencies = [ + "const-oid 0.9.6", + "digest 0.10.7", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "sha2 0.10.9", + "signature 2.2.0", + "spki 0.7.3", + "subtle", + "zeroize", +] + +[[package]] +name = "ruint" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2973657b5127d510e230f5c63d2d106af9c8f79393d8b9f4647323e8196bdde5" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "ark-ff 0.5.0", + "ark-ff 0.6.0", + "bytemuck", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand 0.8.8", + "rand 0.9.5", + "rlp", + "ruint-macro", + "serde_core", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb" + +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.28", +] + +[[package]] +name = "rustfft" +version = "6.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21db5f9893e91f41798c88680037dba611ca6674703c1a18601b01a72c8adb89" +dependencies = [ + "num-complex", + "num-integer", + "num-traits", + "primal-check", + "strength_reduce", + "transpose", +] + +[[package]] +name = "rustix" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d" +dependencies = [ + "bitflags 2.13.2", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.23.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pki-types" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "safe_arch" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scan_fmt" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b53b0a5db882a8e2fdaae0a43f7b39e7e9082389e978398bdf223a55b581248" +dependencies = [ + "regex", +] + +[[package]] +name = "schannel" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.119", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scratch" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d68f2ec51b097e4c1a75b681a8bec621909b5e91f15bb7b840c4f2f7b01148b2" + +[[package]] +name = "scroll" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1783eabc414609e28a5ba76aee5ddd52199f7107a0b24c2e9746a1ecc34a683d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct 0.2.0", + "der 0.7.10", + "generic-array", + "pkcs8 0.10.2", + "serdect 0.2.0", + "subtle", + "zeroize", +] + +[[package]] +name = "sec1" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" +dependencies = [ + "base16ct 1.0.0", + "ctutils", + "der 0.8.2", + "hybrid-array", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes", + "rand 0.8.8", + "secp256k1-sys 0.10.1", + "serde", +] + +[[package]] +name = "secp256k1" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" +dependencies = [ + "bitcoin_hashes", + "rand 0.9.5", + "secp256k1-sys 0.11.0", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "secp256k1-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38" +dependencies = [ + "cc", +] + +[[package]] +name = "secrecy" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" +dependencies = [ + "zeroize", +] + +[[package]] +name = "security-framework" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" +dependencies = [ + "bitflags 2.13.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semaphore-rs" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f890beebbc8378b63bc84558afa165db97a6bd5087207e3de3d483badd13dc97" +dependencies = [ + "ark-bn254 0.6.0", + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-groth16 0.6.0", + "ark-relations 0.6.0", + "ark-std 0.6.0", + "bytemuck", + "color-eyre", + "hex", + "hex-literal", + "itertools 0.13.0", + "lazy_static", + "num-bigint", + "once_cell", + "rand 0.8.8", + "rayon", + "ruint", + "semaphore-rs-ark-circom", + "semaphore-rs-ark-zkey", + "semaphore-rs-depth-config", + "semaphore-rs-depth-macros", + "semaphore-rs-hasher", + "semaphore-rs-keccak", + "semaphore-rs-poseidon", + "semaphore-rs-proof", + "semaphore-rs-storage", + "semaphore-rs-trees", + "semaphore-rs-utils", + "semaphore-rs-witness", + "serde", + "sha2 0.10.9", + "thiserror 1.0.69", + "tiny-keccak", + "zeroize", +] + +[[package]] +name = "semaphore-rs-ark-circom" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b7086229a7c6ae2ca6f43a342f98eec747c73b41258620f0a2ed1ab37cd1e1" +dependencies = [ + "ark-bn254 0.6.0", + "ark-crypto-primitives 0.6.0", + "ark-ff 0.6.0", + "ark-groth16 0.6.0", + "ark-poly 0.6.0", + "ark-relations 0.6.0", + "ark-serialize 0.6.0", + "ark-std 0.6.0", + "byteorder", + "num-bigint", + "num-traits", + "ruint", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "semaphore-rs-ark-zkey" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d232b793bb44d2194c86047bac6905bc63294677bdf295b1dc415d7beb82abf7" +dependencies = [ + "ark-bn254 0.6.0", + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-groth16 0.6.0", + "ark-relations 0.6.0", + "ark-serialize 0.6.0", + "color-eyre", + "memmap2", + "semaphore-rs-ark-circom", +] + +[[package]] +name = "semaphore-rs-depth-config" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1182bb2e1c3eafc62896cbb557e7e3e5701f302aca7e0a7be4d64afdadf0bac" + +[[package]] +name = "semaphore-rs-depth-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2f8c729ddc394204515cbfb8ad92c6f7ecae84e476bc83154dc0d29abbedc7a" +dependencies = [ + "itertools 0.13.0", + "proc-macro2", + "quote", + "semaphore-rs-depth-config", + "syn 2.0.119", +] + +[[package]] +name = "semaphore-rs-hasher" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0048be8cc87ca0176d0fb63bbe1dea1bedd585e21a06b5698b72c77991dc5965" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "semaphore-rs-keccak" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abbea1cf1a5c4268743222d23c09c6e9e8456d4907483302055b34b5690aedaf" +dependencies = [ + "semaphore-rs-hasher", + "tiny-keccak", +] + +[[package]] +name = "semaphore-rs-poseidon" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a33bc286ea7609af279bfd0558a9f44e67ae7e12c831b75ed9713a4b40b4ba0" +dependencies = [ + "ark-bn254 0.6.0", + "ark-ff 0.6.0", + "once_cell", + "ruint", + "semaphore-rs-hasher", +] + +[[package]] +name = "semaphore-rs-proof" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6394dbd24c5a6e61c468a78340e1595f2f9814c200120f26f967cbfd493e9534" +dependencies = [ + "alloy-core", + "ark-bn254 0.6.0", + "ark-ec 0.6.0", + "ark-groth16 0.6.0", + "getrandom 0.2.17", + "hex", + "lazy_static", + "ruint", + "semaphore-rs-ark-circom", + "semaphore-rs-utils", + "serde", + "serde_json", +] + +[[package]] +name = "semaphore-rs-storage" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c58c20585a4f3a0a112a539b8d10df3da4adb181185ce5a4ad9fbd4891c110c0" +dependencies = [ + "bytemuck", + "color-eyre", + "mmap-rs", + "tempfile", +] + +[[package]] +name = "semaphore-rs-trees" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ca17f302fb03333d0e47ff8556e26ed2ab45ebc3ddf75525f7c5a3e2836e40" +dependencies = [ + "ark-bn254 0.6.0", + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-groth16 0.6.0", + "ark-relations 0.6.0", + "ark-std 0.6.0", + "bytemuck", + "color-eyre", + "derive-where", + "getrandom 0.2.17", + "hex", + "hex-literal", + "itertools 0.13.0", + "mmap-rs", + "once_cell", + "rayon", + "ruint", + "semaphore-rs-ark-circom", + "semaphore-rs-hasher", + "semaphore-rs-storage", + "serde", + "thiserror 1.0.69", + "tiny-keccak", +] + +[[package]] +name = "semaphore-rs-utils" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ce32cd02f3217ea3096e2d07d7ac99317e6a1d5388c838eeddacdbc01bbbfe" +dependencies = [ + "hex", + "serde", + "tiny-keccak", +] + +[[package]] +name = "semaphore-rs-witness" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1abbd35e58c2f6fee33fa6c961e59e99849e25cca44c4599daf4556cb8b09c25" +dependencies = [ + "ark-bn254 0.6.0", + "ark-ff 0.6.0", + "ark-serialize 0.6.0", + "byteorder", + "color-eyre", + "cxx-build", + "hex", + "postcard", + "rand 0.8.8", + "ruint", + "serde", + "serde_json", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "serde_json" +version = "1.0.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_spanned" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9adc193c780ef8f159aee8b61e2d5801aaa555e6eb0947fe45530ec506296f" +dependencies = [ + "base64 0.23.1", + "bs58", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.14.2", + "jiff", + "schemars 0.9.0", + "schemars 1.2.2", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e17bbc68e28663bbbb90df47e058aa7eda4fb445b89fe70457bb94fbccf6e49" +dependencies = [ + "darling 0.24.1", + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.14.2", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct 0.2.0", + "serde", +] + +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct 1.0.0", + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest 0.10.7", + "sha2-asm", +] + +[[package]] +name = "sha2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "digest 0.11.3", +] + +[[package]] +name = "sha2-asm" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b845214d6175804686b2bd482bcffe96651bb2d1200742b712003504a2dac1ab" +dependencies = [ + "cc", +] + +[[package]] +name = "sha3" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +dependencies = [ + "digest 0.10.7", + "keccak 0.1.6", +] + +[[package]] +name = "sha3" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be176f1a57ce4e3d31c1a166222d9768de5954f811601fb7ca06fc8203905ce1" +dependencies = [ + "digest 0.11.3", + "keccak 0.2.2", +] + +[[package]] +name = "sha3-asm" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471668161349031e3d415412f996b030c477488eec267cc3cadae3d06c0a367f" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "signature" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" +dependencies = [ + "digest 0.11.3", + "rand_core 0.10.1", +] + +[[package]] +name = "simba" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simd-adler32" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" + +[[package]] +name = "simd_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", +] + +[[package]] +name = "siphasher" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33f4fe9184a62d842c9ef383018f3306d8ba224fd9d836f56d7288308847c256" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9395f0f0eee849a9b707b2f06bb92a6a422090e2123bb2ef8e87a0e61892a8e" +dependencies = [ + "serde", +] + +[[package]] +name = "smallvec" +version = "2.0.0-alpha.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d44cfb396c3caf6fbfd0ab422af02631b69ddd96d2eff0b0f0724f9024051b" + +[[package]] +name = "smawk" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8e2fb0f499abb4d162f2bedad68f5ef91a1682b5a03596ddb67efd37768d100" + +[[package]] +name = "socket2" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "spin" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spin" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der 0.7.10", +] + +[[package]] +name = "spki" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" +dependencies = [ + "base64ct", + "der 0.8.2", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "staging-face-crypto" +version = "0.1.0" +dependencies = [ + "ampc-secret-sharing", + "anyhow", + "base64 0.22.1", + "crypto_box", + "oxide", + "rand 0.8.8", + "serde", + "serde_json", + "taceo-ark-babyjubjub 0.5.3", + "tokio", + "world-id-primitives 0.14.0", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strength_reduce" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" + +[[package]] +name = "string-interner" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07f9fdfdd31a0ff38b59deb401be81b73913d76c9cc5b1aed4e1330a223420b9" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "serde", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "strum_macros" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb6a2e3c7f7a3e4e83d1752cec5d1e357ced0cf96e85419b6a07f227db3def3a" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "sysctl" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea" +dependencies = [ + "bitflags 2.13.2", + "byteorder", + "enum-as-inner", + "libc", + "thiserror 1.0.69", + "walkdir", +] + +[[package]] +name = "taceo-ark-babyjubjub" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55b5a2cc31c90e79778c4f6375e5d9828171d320db3f8c911a8ad47af4a70069" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "taceo-ark-babyjubjub" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14ecf2df99fec8b65be444d27f4ac20d75486be15423b4cd507517683312a4b0" +dependencies = [ + "ark-bn254 0.6.0", + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-std 0.6.0", +] + +[[package]] +name = "taceo-ark-serde-compat" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fcd6f55fec9dd131019bdc0319db2271915056607b75bf8b8bc0a6ec496347" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "num-bigint", + "serde", + "taceo-ark-babyjubjub 0.5.3", +] + +[[package]] +name = "taceo-ark-serde-compat" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7a255d21a01f083cf373ff6b4903f9dafad1e0a2a1a2119a4cee971d1bb995" +dependencies = [ + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-serialize 0.6.0", + "num-bigint", + "serde", + "taceo-ark-babyjubjub 0.6.0", +] + +[[package]] +name = "taceo-circom-types" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4ae56552ed9a44722d293640d5aedd90b9940284bf1f1bf4df727b3ce5bc34b" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-groth16 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "byteorder", + "serde", + "serde_json", + "taceo-ark-serde-compat 0.5.0", + "thiserror 2.0.21", + "tracing", +] + +[[package]] +name = "taceo-eddsa-babyjubjub" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10becbd559ee21d8376a4c2e18f0e38257ec1b5bfff3dcb2cb2945ca1db38906" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "blake3", + "eyre", + "num-bigint", + "rand 0.8.8", + "serde", + "taceo-ark-babyjubjub 0.5.3", + "taceo-ark-serde-compat 0.5.0", + "taceo-poseidon2 0.2.1", + "zeroize", +] + +[[package]] +name = "taceo-oprf" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c10bf82ba41bbc8a6693362d67738145c77bdcec36345d85d4a86d2fb7dc44dc" +dependencies = [ + "taceo-oprf-types 0.15.1", +] + +[[package]] +name = "taceo-oprf" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617cc21e04912e2b4989a110459e07b072ccac250d666f65bba5ffccc5b90795" +dependencies = [ + "taceo-oprf-types 0.16.1", +] + +[[package]] +name = "taceo-oprf-core" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f66b5a67d71a6022abb42198d87184aebbac1f45538b5858d22c87d0958a805" +dependencies = [ + "ark-ec 0.6.0", + "ark-ff 0.6.0", + "ark-serialize 0.6.0", + "blake3", + "itertools 0.15.0", + "num-bigint", + "rand 0.8.8", + "serde", + "subtle", + "taceo-ark-babyjubjub 0.6.0", + "taceo-ark-serde-compat 0.6.1", + "taceo-poseidon2 0.3.0", + "uuid", + "zeroize", +] + +[[package]] +name = "taceo-oprf-types" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de73b98dd21ab1048ffb869f09dac92d9f70e0f93f5956f3d3e9873640a78b3" +dependencies = [ + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "async-trait", + "eyre", + "http", + "ruint", + "serde", + "taceo-ark-babyjubjub 0.5.3", + "taceo-ark-serde-compat 0.5.0", + "taceo-oprf-core", + "uuid", +] + +[[package]] +name = "taceo-oprf-types" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d344eb6f0dc1a872a4cdf389099d4556a4633bc5c9e037bd4583ee810df981" +dependencies = [ + "ark-ff 0.6.0", + "ark-serialize 0.6.0", + "async-trait", + "eyre", + "http", + "ruint", + "serde", + "taceo-ark-babyjubjub 0.6.0", + "taceo-ark-serde-compat 0.6.1", + "taceo-oprf-core", + "uuid", +] + +[[package]] +name = "taceo-poseidon2" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac59d3df4c827b3496bff929aebd6440997a5c2e946f46ff4fdd76f318447581" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", + "num-bigint", + "num-traits", +] + +[[package]] +name = "taceo-poseidon2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c167df5e799207335a7acfec5404aa8fae59fad877c6cd20205815d690ba7157" +dependencies = [ + "ark-bn254 0.6.0", + "ark-ff 0.6.0", + "ark-std 0.6.0", + "num-bigint", + "num-traits", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tar" +version = "0.4.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.3", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ecfad6c3abc80a577f2b91c1e412ee57e7a060d430b553c1b0c940974ebcd49" +dependencies = [ + "smawk", + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09e52cb86a36cede5cb101bf8908837b3e4c6e5e59fe7fd85c23fb56200d189e" +dependencies = [ + "thiserror-impl 2.0.21", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "thread_local" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + +[[package]] +name = "time-macros" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee" + +[[package]] +name = "tokio" +version = "1.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9cc2678c2cdd569ef8215e2afd7954ada2ae20b4fdd2c5fe6139a3b02d105db" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "libc", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", +] + +[[package]] +name = "toml" +version = "1.1.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "920602543f0911ab71da12c50d59701da54c196d1a2bf5cb4b75667f137a406a" +dependencies = [ + "indexmap 2.14.2", + "serde_core", + "serde_spanned 1.1.1", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 1.0.4", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap 2.14.2", + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.11", + "toml_write", + "winnow 0.7.15", +] + +[[package]] +name = "toml_edit" +version = "0.25.15+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1340ea94a5856333492c9064b02c778b191dd2c853778d9609debdcdfea3a614" +dependencies = [ + "indexmap 2.14.2", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "winnow 1.0.4", +] + +[[package]] +name = "toml_parser" +version = "1.1.3+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" +dependencies = [ + "winnow 1.0.4", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "toml_writer" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" + +[[package]] +name = "tonic" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac2a5518c70fa84342385732db33fb3f44bc4cc748936eb5833d2df34d6445ef" +dependencies = [ + "async-trait", + "axum", + "base64 0.22.1", + "bytes", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "rustls-native-certs", + "socket2", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic-build" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68f61875ac5293cf72e6c8cf0158086428c82c37229e98c840878f1706b0322" +dependencies = [ + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "tonic-prost" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50849f68853be452acf590cde0b146665b8d507b3b8af17261df47e02c209ea0" +dependencies = [ + "bytes", + "prost 0.14.4", + "tonic", +] + +[[package]] +name = "tonic-prost-build" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "654e5643eff75d7f8c99197ce1440ed19a3474eada74c12bbac488b2cafdae27" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build", + "prost-types", + "quote", + "syn 2.0.119", + "tempfile", + "tonic-build", +] + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 2.14.2", + "pin-project-lite", + "slab", + "sync_wrapper", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" +dependencies = [ + "bitflags 2.13.2", + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", + "url", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-error" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" +dependencies = [ + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec 1.16.2", + "thread_local", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "tract-core" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7b5347639690871b124593a8c8903f1f369531498b8abaebd18eb5c58163971" +dependencies = [ + "anyhow", + "anymap3", + "bit-set", + "derive-new", + "downcast-rs", + "dyn-clone", + "lazy_static", + "log", + "maplit", + "ndarray", + "num-complex", + "num-integer", + "num-traits", + "paste", + "rustfft", + "smallvec 1.16.2", + "tract-data", + "tract-linalg", +] + +[[package]] +name = "tract-data" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0a3f476a1804e05708e9bc5e2d29dcab82bad531e357d3d14d7da80fbba0b6d" +dependencies = [ + "anyhow", + "downcast-rs", + "dyn-clone", + "dyn-hash", + "half", + "itertools 0.12.1", + "lazy_static", + "maplit", + "ndarray", + "nom 7.1.3", + "num-integer", + "num-traits", + "parking_lot", + "scan_fmt", + "smallvec 1.16.2", + "string-interner", +] + +[[package]] +name = "tract-hir" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dca047ba1151fe3446fb0194d4b6ddb9ae8f361337c47a267870c53605fbafb" +dependencies = [ + "derive-new", + "log", + "tract-core", +] + +[[package]] +name = "tract-linalg" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb8e0703eb53ef1bbf77050ff261675818dd5f0d6c27044c6e48ede9b845f9e0" +dependencies = [ + "byteorder", + "cc", + "derive-new", + "downcast-rs", + "dyn-clone", + "dyn-hash", + "half", + "lazy_static", + "liquid", + "liquid-core", + "liquid-derive", + "log", + "num-traits", + "paste", + "rayon", + "scan_fmt", + "smallvec 1.16.2", + "time", + "tract-data", + "unicode-normalization", + "walkdir", +] + +[[package]] +name = "tract-nnef" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72cb88a4367ec2c695610223cf886f01fc1deb5c9a82c7a74b1a5d32dc0b1466" +dependencies = [ + "byteorder", + "flate2", + "log", + "nom 7.1.3", + "tar", + "tract-core", + "walkdir", +] + +[[package]] +name = "tract-onnx" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5830aa672b2aa4dc98a97a36e5988eaf77b3ecee65e2601619588d2ca557008" +dependencies = [ + "bytes", + "derive-new", + "log", + "memmap2", + "num-integer", + "prost 0.11.9", + "smallvec 1.16.2", + "tract-hir", + "tract-nnef", + "tract-onnx-opl", +] + +[[package]] +name = "tract-onnx-opl" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121d3d224c806ba3d941f4bb50943ad33b59d1da5ae704d0e4e76d2808221f96" +dependencies = [ + "getrandom 0.2.17", + "log", + "rand 0.8.8", + "rand_distr", + "rustfft", + "tract-nnef", +] + +[[package]] +name = "transpose" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e" +dependencies = [ + "num-integer", + "strength_reduce", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + +[[package]] +name = "unicode-ident" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954" + +[[package]] +name = "unicode-normalization" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "uniffi" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76407f5f396a2c949a069eff4a9fca9ce462410eb872bffef4c2b7b89804a77a" +dependencies = [ + "anyhow", + "cargo_metadata", + "uniffi_bindgen", + "uniffi_core", + "uniffi_macros", + "uniffi_pipeline", +] + +[[package]] +name = "uniffi_bindgen" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df3ced8f0eda3de99f6d50820e8628f443da8e4f447f477d1403ceba29dacbd" +dependencies = [ + "anyhow", + "askama", + "camino", + "cargo_metadata", + "fs-err", + "glob", + "goblin", + "heck", + "indexmap 2.14.2", + "once_cell", + "serde", + "tempfile", + "textwrap", + "toml 1.1.6+spec-1.1.0", + "uniffi_internal_macros", + "uniffi_meta", + "uniffi_pipeline", + "uniffi_udl", +] + +[[package]] +name = "uniffi_core" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7530ae8efeaaa488622865966763fe0294832779fff80508c36d69c6a874a6a" +dependencies = [ + "anyhow", + "async-compat", + "bytes", + "once_cell", + "static_assertions", +] + +[[package]] +name = "uniffi_internal_macros" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f4bad017164375d99450d70495014810d15a84ba9da6ed14b9628b1424223ba" +dependencies = [ + "anyhow", + "indexmap 2.14.2", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "uniffi_macros" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b855a58da153739ce6e863f6e296edc3716a093768c4d3d957f17f5e4317c60" +dependencies = [ + "camino", + "fs-err", + "once_cell", + "proc-macro2", + "quote", + "serde", + "syn 2.0.119", + "toml 1.1.6+spec-1.1.0", + "uniffi_meta", +] + +[[package]] +name = "uniffi_meta" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af0c88664a9cb9559856f5a250283c9708923b303170e2e5c7db8f4ad65e9459" +dependencies = [ + "anyhow", + "siphasher", + "uniffi_internal_macros", + "uniffi_pipeline", +] + +[[package]] +name = "uniffi_pipeline" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d00f5c044b4a3dca0b1226c92ddaeea626f337470e22180dd182160c87a06b0b" +dependencies = [ + "anyhow", + "heck", + "indexmap 2.14.2", + "tempfile", + "uniffi_internal_macros", +] + +[[package]] +name = "uniffi_udl" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55dfd9c778d6b39cb5acd541d9ff63431974035d2bad83c897b766a6ee3152ac" +dependencies = [ + "anyhow", + "textwrap", + "uniffi_meta", + "weedle2", +] + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common 0.1.7", + "subtle", +] + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + "serde_derive", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "utils" +version = "0.1.0" +source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" +dependencies = [ + "approx", + "bincode", + "data-encoding", + "fast_image_resize", + "histogram_equalization", + "image", + "imageproc", + "inventory", + "itertools 0.13.0", + "log", + "nalgebra", + "ndarray", + "ndarray-stats", + "num-traits", + "opencv", + "palette", + "rustfft", + "schemars 0.8.22", + "serde", + "serde_yaml", + "sha2 0.10.9", + "thiserror 1.0.69", + "tracing", + "uniffi", +] + +[[package]] +name = "utils_macros" +version = "0.1.0" +source = "git+https://github.com/worldcoin/biometric-engines?rev=face-engine-v2.20.0#a52b195514444f1ba5a88634670420657c83a74f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "uuid" +version = "1.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ef6dac1e96601b4fb3acccccff2139741fcb757cb9a36089bf5be91cfb285ce" +dependencies = [ + "getrandom 0.4.3", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "v_frame" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" +dependencies = [ + "aligned-vec", + "num-traits", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.4+wasi-0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.129" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cbab34de2d982e9b48e18d216d04c4a6f641066ff19ffb699980f591ee3610e" +dependencies = [ + "js-sys", + "tokio", + "wasm-bindgen", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.129" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.129" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 3.0.6", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.129" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88261b9deccee56594c11a3460c462c41f58d148598fe70ad77070126a68aba4" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "weedle2" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "998d2c24ec099a87daf9467808859f9d82b61f1d9c9701251aea037f514eae0e" +dependencies = [ + "nom 7.1.3", +] + +[[package]] +name = "wide" +version = "0.7.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +dependencies = [ + "windows-collections", + "windows-core", + "windows-future", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" +dependencies = [ + "windows-core", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-future" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +dependencies = [ + "windows-core", + "windows-link", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-numerics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +dependencies = [ + "windows-core", + "windows-link", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-threading" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "wnaf" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "795ca18b3fdb5e62bf982199278341ddcf7ebf7d32e25e212ad05d496e95f6fa" +dependencies = [ + "ff 0.14.0", + "group 0.14.0", + "hybrid-array", + "primefield", +] + +[[package]] +name = "world-id-primitives" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7430d4229c914b7136a028ad478dacc7983a8bfb926af9f5a4e5e31550d4f1cf" +dependencies = [ + "alloy", + "alloy-primitives", + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "arrayvec", + "embed-doc-image", + "eyre", + "getrandom 0.3.4", + "hex", + "provekit-common", + "rand 0.8.8", + "ruint", + "secrecy", + "serde", + "serde_json", + "sha2 0.11.0", + "sha3 0.10.9", + "strum 0.27.2", + "taceo-ark-babyjubjub 0.5.3", + "taceo-ark-serde-compat 0.5.0", + "taceo-circom-types", + "taceo-eddsa-babyjubjub", + "taceo-oprf 0.17.2", + "taceo-poseidon2 0.2.1", + "thiserror 2.0.21", + "url", + "uuid", +] + +[[package]] +name = "world-id-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76ac44fcbb959d6460462b29ee8798ef28baa13cea47ac8e2e9ea4edb22be3b" +dependencies = [ + "alloy", + "alloy-primitives", + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "arrayvec", + "embed-doc-image", + "eyre", + "getrandom 0.3.4", + "hex", + "provekit-common", + "rand 0.8.8", + "ruint", + "secrecy", + "serde", + "serde_json", + "sha2 0.11.0", + "sha3 0.10.9", + "strum 0.27.2", + "taceo-ark-babyjubjub 0.5.3", + "taceo-ark-serde-compat 0.5.0", + "taceo-circom-types", + "taceo-eddsa-babyjubjub", + "taceo-oprf 0.18.2", + "taceo-poseidon2 0.2.1", + "thiserror 2.0.21", + "url", + "uuid", +] + +[[package]] +name = "writeable" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xattr" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" +dependencies = [ + "libc", + "rustix", +] + +[[package]] +name = "xz2" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" +dependencies = [ + "lzma-sys", +] + +[[package]] +name = "y4m" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" + +[[package]] +name = "yoke" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", + "synstructure", +] + +[[package]] +name = "yuv" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a295923535c00a4e72a50a0a1130097f93160b39892dd4d2d006b1e2b90d6bf9" +dependencies = [ + "num-traits", +] + +[[package]] +name = "zerocopy" +version = "0.8.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6df92bf3d9227be3d53173901ddbffac2babc27ae50f397776ffd6dc33f800cb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac4f328cf2f05d084e496c3e9c3f33ed0a183656a16e1fcec4d464d8373aec82" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "zerotrie" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap 2.14.2", + "memchr", + "thiserror 2.0.21", + "zopfli", +] + +[[package]] +name = "zlib-rs" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b268e58e7c693d7c271f93ffc4ba3b380412554231c85bf61ca7af91042a4112" + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" + +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d80649ab6db9d9f6f9c80a40becd948eda4714a0a5ac8c4d157a32231c7882" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.1.0+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef0a8027ec3ee71300ab3bcbcd0393f434aa72b91ca6d635a39941deae8eea0" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "zune-core" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56377fd46368984a170bc5aac5567e52ca5da874caa60bea39fcbca78fb658b" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zune-jpeg" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" +dependencies = [ + "zune-core", +] diff --git a/src/server/face-enrollment-helper/Cargo.toml b/src/server/face-enrollment-helper/Cargo.toml new file mode 100644 index 0000000..00bf367 --- /dev/null +++ b/src/server/face-enrollment-helper/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "staging-face-crypto" +version = "0.1.0" +edition = "2021" +publish = false + +[dependencies] +ampc-secret-sharing = { git = "https://github.com/worldcoin/ampc-common.git", rev = "3062538f0307471ed0dd2be8258952c807747141" } +oxide = { git = "https://github.com/worldcoin/oxide.git", rev = "329274a32be02be0bb39ca02adc4e4e4e438ada0" } +tokio = { version = "1", features = ["rt-multi-thread", "macros", "time"] } +crypto_box = { version = "0.9.1", features = ["seal"] } +base64 = "0.22" +rand = "0.8" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +anyhow = "1" +world-id-primitives = "=0.14.0" +ark-babyjubjub = { package = "taceo-ark-babyjubjub", version = "0.5" } + +[profile.dev] +opt-level = 2 diff --git a/src/server/face-enrollment-helper/README.md b/src/server/face-enrollment-helper/README.md new file mode 100644 index 0000000..9f3aba2 --- /dev/null +++ b/src/server/face-enrollment-helper/README.md @@ -0,0 +1,27 @@ +# Local staging face enrollment helper + +This Rust executable supports the localhost-only selfie issuance route. It creates +and encrypts AMPC shares from synthetic input, obtains enrollment authentication +through Oxide, and verifies returned credential signatures and subject binding. +It is a server-side process, not a browser/WASM module or a face capture engine. + +Build from the repository root with `bun run build:selfie-helper`. The crate and +binary retain the name `staging-face-crypto`; the server invokes +`target/debug/staging-face-crypto` inside this directory. Build artifacts are ignored. + +Dependencies are pinned in `Cargo.toml` and `Cargo.lock`. The build command supplies +`build-config.toml` for Oxide's native dependency settings. Requests are bounded JSON +on stdin; successful responses are JSON on stdout, with failures on stderr and a +nonzero exit status. Never log the input or output payloads: they can contain +identity material and enrollment authentication headers. + +OpenCV is a transitive dependency of Oxide's Face Engine dependency, even though +this helper does not run face inference. The pinned dependency downloads its native +assets during the build. If this directory is moved, Ignition's cached metadata may +still reference its old absolute path. From the repository root, clear that package's +cache and rebuild: + +```sh +cargo clean --manifest-path src/server/face-enrollment-helper/Cargo.toml -p ignition +bun run build:selfie-helper +``` diff --git a/src/server/face-enrollment-helper/build-config.toml b/src/server/face-enrollment-helper/build-config.toml new file mode 100644 index 0000000..ff08484 --- /dev/null +++ b/src/server/face-enrollment-helper/build-config.toml @@ -0,0 +1,7 @@ +# Native dependency settings from pinned Oxide .cargo/config.toml. +# Cargo does not inherit a git dependency's workspace configuration. +[env] +IGNITION_BUCKET_URL = "https://wld-ml-face-engine-public.worldcoin.org" +IGNITION_CACHE_PATH = "cache" +IGNITION_DIRECTORY_PATH = "assets/dependencies" +OPENCV_LINK_LIBS = "libopencv_imgproc,libopencv_core" diff --git a/src/server/face-enrollment-helper/src/main.rs b/src/server/face-enrollment-helper/src/main.rs new file mode 100644 index 0000000..5535b41 --- /dev/null +++ b/src/server/face-enrollment-helper/src/main.rs @@ -0,0 +1,144 @@ +//! Local staging adapter; no WalletKit custody. Oxide owns enrollment authentication. +//! Share serialization/sealing follows Oxide's face_embedding_shares.rs. +//! ZKP challenge fetching and header construction call Oxide directly. +use anyhow::{ensure, Context, Result}; +use base64::{engine::general_purpose::STANDARD as B64, Engine}; +use serde::Deserialize; +use serde_json::json; +use std::io::{self, Read}; +use std::str::FromStr; + +#[derive(Deserialize)] +#[serde(tag = "operation", rename_all = "snake_case", deny_unknown_fields)] +enum Input { + Shares { + public_keys: [String; 3], + }, + Authenticate { + seed: String, + kind: AuthenticationKind, + }, + Verify { + credential: String, + sub: String, + public_key: [String; 2], + }, +} + +#[derive(Deserialize)] +#[serde(rename_all = "lowercase")] +enum AuthenticationKind { + GetIdentity, + UserCentricEnrollment, +} + +fn shares(public_keys: [String; 3]) -> Result { + // A fresh synthetic int4 embedding. Never accepts a user's biometric input. + let mut rng = rand::thread_rng(); + let embedding = ampc_secret_sharing::FaceVector::random_normalized(&mut rng); + let shares = embedding + .secret_share(&mut rng) + .map_err(|_| anyhow::anyhow!("create AMPC shares"))?; + let mut encrypted = Vec::new(); + for (share, key) in shares.iter().zip(public_keys) { + let bytes: Vec = share + .0 + .iter() + .flat_map(|value| value.to_le_bytes()) + .collect(); + let encoded = + serde_json::to_vec(&json!({"version": "2.5", "share_data": B64.encode(bytes)}))?; + let key = B64.decode(key.trim()).context("decode staging PKI key")?; + let key = crypto_box::PublicKey::from_slice(&key).context("parse staging PKI key")?; + let sealed = key + .seal(&mut rng, &encoded) + .map_err(|_| anyhow::anyhow!("seal AMPC share"))?; + encrypted.push(B64.encode(sealed)); + } + Ok(json!({"shares": encrypted})) +} + +async fn authenticate(seed: String, kind: AuthenticationKind) -> Result { + ensure!( + seed.len() == 64 && seed.bytes().all(|c| c.is_ascii_hexdigit()), + "invalid enrollment seed" + ); + // Preserve the existing UTF-8 hex seed and identity_trapdoor domain. + // Switching to IdentityContext::Face would change saved enrollment identities. + let identity = + oxide::identity::Identity::new(seed, oxide::identity_context::IdentityContext::Orb); + let challenge_type = match kind { + AuthenticationKind::GetIdentity => oxide::ChallengeType::GetIdentity, + AuthenticationKind::UserCentricEnrollment => oxide::ChallengeType::UserCentricEnrollment, + }; + let authentication = oxide::ZkpAuthentication::new( + "https://app.stage.face.worldcoin.org".into(), + "WorldApp/1.0.0 Oxide/1.0.0 iOS".into(), + ); + let header = tokio::time::timeout( + std::time::Duration::from_secs(80), + authentication.create_header(&identity, challenge_type), + ) + .await + .context("enrollment authentication deadline expired")? + .context("Oxide enrollment authentication failed")?; + Ok(json!({"identityCommitment": identity.commitment().to_string(), "header": header})) +} + +fn verify(credential: String, sub: String, public_key: [String; 2]) -> Result { + let credential: world_id_primitives::Credential = + serde_json::from_slice(&B64.decode(credential)?)?; + let sub: world_id_primitives::FieldElement = sub + .parse() + .map_err(|_| anyhow::anyhow!("invalid subject"))?; + let x = ark_babyjubjub::Fq::from_str(&public_key[0]) + .map_err(|_| anyhow::anyhow!("invalid issuer key"))?; + let y = ark_babyjubjub::Fq::from_str(&public_key[1]) + .map_err(|_| anyhow::anyhow!("invalid issuer key"))?; + let point = ark_babyjubjub::EdwardsAffine::new_unchecked(x, y); + ensure!( + !point.is_zero() && point.is_on_curve() && point.is_in_correct_subgroup_assuming_on_curve(), + "invalid issuer key" + ); + let key = world_id_primitives::EdDSAPublicKey { pk: point }; + ensure!( + credential.issuer_schema_id == 11 && credential.sub == sub && credential.issuer == key, + "credential binding mismatch" + ); + ensure!( + credential + .verify_signature(&key) + .map_err(|_| anyhow::anyhow!("credential signature verification failed"))?, + "invalid credential signature" + ); + Ok(json!({"verified": true})) +} + +async fn run() -> Result<()> { + let mut text = String::new(); + io::stdin().take(262_145).read_to_string(&mut text)?; + ensure!(text.len() <= 262_144, "input too large"); + let output = match serde_json::from_str::(&text)? { + Input::Shares { public_keys } => shares(public_keys)?, + Input::Authenticate { seed, kind } => authenticate(seed, kind).await?, + Input::Verify { + credential, + sub, + public_key, + } => verify(credential, sub, public_key)?, + }; + println!("{}", serde_json::to_string(&output)?); + Ok(()) +} + +#[tokio::main] +async fn main() { + if let Err(error) = run().await { + // Do not print serde input, identity material, or proof data on failure. + let _ = error; + eprintln!( + "Staging face cryptography failed; check the helper input and pinned dependencies." + ); + std::process::exit(1); + } +} diff --git a/src/server/http.ts b/src/server/http.ts new file mode 100644 index 0000000..0e9d2a2 --- /dev/null +++ b/src/server/http.ts @@ -0,0 +1,54 @@ +import { resolve, sep } from 'node:path' +import { GET as stagingRp } from './routes/staging-rp' +import { POST as teeAdmission } from './routes/tee-admission' +import { GET as clientContext } from './routes/client-context' +import { handle as selfieEnclave } from './routes/selfie-enclave' +import { POST as fauxCredential } from './routes/faux-credential' +import { POST as selfieCredential } from './routes/selfie-credential' + +const endpoints: Record Response | Promise }> = { + '/api/selfie-enclave': { method: 'GET', handle: selfieEnclave }, + '/api/selfie-admission': { method: 'POST', handle: selfieEnclave }, + '/api/tee-admission': { method: 'POST', handle: teeAdmission }, + '/api/client-context': { method: 'GET', handle: clientContext }, + '/api/staging-rp': { method: 'GET', handle: stagingRp }, + '/api/faux-credential': { method: 'POST', handle: fauxCredential }, + '/api/selfie-credential': { method: 'POST', handle: selfieCredential }, +} + +export async function handleRequest(request: Request): Promise { + const url = new URL(request.url) + const endpoint = endpoints[url.pathname] + let response: Response + if (endpoint) { + response = + request.method === endpoint.method + ? await endpoint.handle(request) + : new Response('Method not allowed', { status: 405, headers: { Allow: endpoint.method } }) + } else if (url.pathname.startsWith('/api/')) { + response = Response.json({ error: 'Not found' }, { status: 404 }) + } else if (!['GET', 'HEAD'].includes(request.method)) { + response = new Response('Method not allowed', { status: 405, headers: { Allow: 'GET, HEAD' } }) + } else { + const root = resolve('dist') + let path: string + try { + path = resolve(root, '.' + decodeURIComponent(url.pathname)) + } catch { + return new Response('Invalid path', { status: 400, headers: { 'Referrer-Policy': 'no-referrer' } }) + } + if (path !== root && !path.startsWith(root + sep)) { + response = new Response('Not found', { status: 404 }) + } else { + const page = ['/', '/verify', '/selfie-check', '/selfie-demo'].includes(url.pathname) + const file = Bun.file(page ? resolve(root, 'index.html') : path) + response = (await file.exists()) + ? new Response(request.method === 'HEAD' ? null : file, { + headers: { 'Content-Type': file.type, 'Cache-Control': page ? 'no-store' : 'no-cache' }, + }) + : new Response('Not found', { status: 404 }) + } + } + response.headers.set('Referrer-Policy', 'no-referrer') + return response +} diff --git a/src/server/index.ts b/src/server/index.ts new file mode 100644 index 0000000..7e78a25 --- /dev/null +++ b/src/server/index.ts @@ -0,0 +1,25 @@ +import { handleRequest } from './http' + +const port = Number(process.env.PORT || 3100) +if (!Number.isInteger(port) || port < 1 || port > 65535) throw new Error('Invalid PORT') +const server = Bun.serve({ + hostname: '127.0.0.1', + port, + idleTimeout: 180, + maxRequestBodySize: 1024 * 1024, + fetch: handleRequest, + error() { + console.error('local_api_request_failed') + return Response.json( + { error: 'Local API request failed' }, + { status: 500, headers: { 'Referrer-Policy': 'no-referrer' } } + ) + }, +}) +console.info(`Local API listening on http://127.0.0.1:${server.port}`) +for (const signal of ['SIGINT', 'SIGTERM'] as const) { + process.on(signal, () => { + server.stop(true) + process.exit(0) + }) +} diff --git a/src/server/routes/client-context.ts b/src/server/routes/client-context.ts new file mode 100644 index 0000000..7174163 --- /dev/null +++ b/src/server/routes/client-context.ts @@ -0,0 +1,5 @@ +import { requestIp } from '@/lib/request-ip' + +export function GET(request: Request) { + return Response.json(requestIp(request.headers), { headers: { 'Cache-Control': 'no-store' } }) +} diff --git a/src/server/routes/faux-credential.ts b/src/server/routes/faux-credential.ts new file mode 100644 index 0000000..5187d2f --- /dev/null +++ b/src/server/routes/faux-credential.ts @@ -0,0 +1,64 @@ +const ISSUER = 'https://faux-issuer.us.id-infra.worldcoin.dev/issue' + +async function readText(body: ReadableStream | null, limit: number): Promise { + if (!body) throw new Error('Missing body') + const reader = body.getReader() + const decoder = new TextDecoder() + let size = 0 + let text = '' + try { + for (;;) { + const { done, value } = await reader.read() + if (done) return text + decoder.decode() + size += value.byteLength + if (size > limit) { + await reader.cancel() + throw new Error('Body too large') + } + text += decoder.decode(value, { stream: true }) + } + } finally { + reader.releaseLock() + } +} + +export async function POST(request: Request) { + if (request.headers.get('origin') !== new URL(request.url).origin) { + return Response.json({ error: 'Same-origin requests required' }, { status: 403 }) + } + if (request.headers.get('content-type')?.split(';')[0].trim() !== 'application/json') { + return Response.json({ error: 'Expected JSON' }, { status: 415 }) + } + let sub: string + try { + const body = JSON.parse(await readText(request.body, 1024)) as { sub?: unknown } | null + if (!body || typeof body.sub !== 'string' || !/^0x[0-9a-f]{64}$/.test(body.sub)) + throw new Error('Invalid subject') + sub = body.sub + } catch { + return Response.json({ error: 'Expected a 32-byte lowercase hex subject' }, { status: 400 }) + } + try { + const upstream = await fetch(ISSUER, { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ sub }), + cache: 'no-store', + signal: AbortSignal.any([request.signal, AbortSignal.timeout(20_000)]), + }) + if (!upstream.ok) { + await upstream.body?.cancel() + console.warn('faux_issuer_failed', { operation: 'issue', upstreamStatus: upstream.status }) + return Response.json({ error: 'Staging faux issuer rejected the request' }, { status: 502 }) + } + const body = await readText(upstream.body, 1_000_000) + return new Response(body, { headers: { 'Content-Type': 'application/json', 'Cache-Control': 'no-store' } }) + } catch (cause) { + const failure = cause instanceof DOMException && cause.name === 'TimeoutError' ? 'timeout' : 'request_failed' + console.warn('faux_issuer_failed', { operation: 'issue', failure }) + return Response.json( + { error: 'Staging faux issuer unavailable' }, + { status: failure === 'timeout' ? 504 : 502 } + ) + } +} diff --git a/src/server/routes/selfie-credential.ts b/src/server/routes/selfie-credential.ts new file mode 100644 index 0000000..a465501 --- /dev/null +++ b/src/server/routes/selfie-credential.ts @@ -0,0 +1,56 @@ +import { EnrollmentError, issueOrPollSelfie } from '@/lib/selfie-issuer-server' + +export async function POST(request: Request) { + const url = new URL(request.url) + if (!['localhost', '127.0.0.1', '[::1]'].includes(url.hostname) || request.headers.get('origin') !== url.origin) + return Response.json( + { error: 'Synthetic staging issuance is available only from this localhost demo.' }, + { status: 403 } + ) + if (request.headers.get('content-type')?.split(';')[0].trim() !== 'application/json') + return Response.json({ error: 'Expected JSON.' }, { status: 415 }) + let body: { sub: string; token: string } + try { + const reader = request.body?.getReader() + if (!reader) throw new Error('Missing body') + let text = '' + try { + for (;;) { + const { done, value } = await reader.read() + if (done) break + text += new TextDecoder().decode(value) + if (text.length > 1024) { + await reader.cancel() + throw new Error('Body too large') + } + } + } finally { + reader.releaseLock() + } + body = JSON.parse(text) + if (!body || !/^0x[0-9a-f]{64}$/.test(body.sub) || !/^[0-9a-f]{64}$/.test(body.token)) + throw new Error('Invalid input') + } catch { + return Response.json({ error: 'Expected a schema-11 subject and resume token.' }, { status: 400 }) + } + try { + const result = await issueOrPollSelfie( + body.sub, + body.token, + AbortSignal.any([request.signal, AbortSignal.timeout(170_000)]) + ) + return Response.json(result, { headers: { 'Cache-Control': 'no-store' } }) + } catch (error) { + const status = error instanceof EnrollmentError ? error.status : 502 + console.warn('staging_selfie_issuance_failed', { status, operation: 'issue_or_poll' }) + return Response.json( + { + error: + error instanceof EnrollmentError + ? error.message + : 'Staging enrollment could not complete. Retry resumes the saved operation without enrolling again.', + }, + { status, headers: { 'Cache-Control': 'no-store' } } + ) + } +} diff --git a/src/server/routes/selfie-enclave.ts b/src/server/routes/selfie-enclave.ts new file mode 100644 index 0000000..9479f9c --- /dev/null +++ b/src/server/routes/selfie-enclave.ts @@ -0,0 +1,71 @@ +import { loadPolicy, parseChallenge, readSigningKey, signChallenge } from '../selfie-enclave' + +const reply = (status: number, data: unknown) => + Response.json(data, { status, headers: { 'Cache-Control': 'no-store' } }) +const configFromEnv = () => ({ + enabled: process.env.NODE_ENV !== 'production' && process.env.LOCAL_TEE_DEMO_ADMISSION === '1', + origin: process.env.LOCAL_TEE_ORIGIN || 'http://localhost:3100', + policyFile: process.env.TEE_ENROLLMENT_CONFIG_FILE, + keyFile: process.env.TEE_ADMISSION_KEY_FILE, +}) + +export async function handle(request: Request, config = configFromEnv()) { + if (!config.enabled) return reply(404, { error: 'Not found' }) + const url = new URL(request.url) + if ( + url.protocol !== 'http:' || + !['localhost', '127.0.0.1'].includes(url.hostname) || + url.origin !== config.origin || + request.headers.get('sec-fetch-site') !== 'same-origin' || + (request.method === 'POST' && request.headers.get('origin') !== config.origin) + ) + return reply(403, { error: 'Staging admission requires the configured localhost origin.' }) + if (!config.policyFile || !config.keyFile) + return reply(503, { error: 'Staging enclave policy and admission key are not configured.' }) + let policy + try { + policy = await loadPolicy(config.policyFile) + } catch { + return reply(503, { error: 'Staging enclave policy is unavailable or invalid.' }) + } + if (request.method === 'GET') return reply(200, policy) + if (request.method !== 'POST') return reply(405, { error: 'Expected GET or POST' }) + if (request.headers.get('content-type')?.split(';')[0].trim() !== 'application/json') + return reply(415, { error: 'Expected JSON' }) + let challenge + const reader = request.body?.getReader() + if (!reader) return reply(400, { error: 'Missing challenge' }) + let timer: ReturnType | undefined + try { + const body = await Promise.race([ + (async () => { + const chunks: Uint8Array[] = [] + let size = 0 + for (;;) { + const { done, value } = await reader.read() + if (done) break + size += value.length + if (size > 2048) throw new Error('Oversized challenge') + chunks.push(value) + } + return JSON.parse(Buffer.concat(chunks).toString('utf8')) + })(), + new Promise((_, reject) => { + timer = setTimeout(() => reject(new Error('Timed out')), 5000) + }), + ]) + challenge = parseChallenge(body, policy.audience) + } catch { + return reply(400, { error: 'Invalid or incomplete admission challenge.' }) + } finally { + clearTimeout(timer) + await reader.cancel().catch(() => { + /* Request already disconnected. */ + }) + } + try { + return reply(200, signChallenge(challenge, await readSigningKey(config.keyFile), Math.floor(Date.now() / 1000))) + } catch { + return reply(503, { error: 'Staging admission signing key is unavailable or invalid.' }) + } +} diff --git a/src/server/routes/staging-rp.ts b/src/server/routes/staging-rp.ts new file mode 100644 index 0000000..38c9948 --- /dev/null +++ b/src/server/routes/staging-rp.ts @@ -0,0 +1,31 @@ +import { createPublicClient, http, parseAbi } from 'viem' + +// World ID protocol staging deployment on World Chain (chain 480). +const registry = '0x37d2462fE7B4a07987263AAd062C6593C4f567b9' +const client = createPublicClient({ + transport: http('https://worldchain-mainnet.g.alchemy.com/public', { timeout: 10000, retryCount: 0 }), +}) +const abi = parseAbi([ + 'function getRp(uint64 rpId) view returns ((bool initialized, bool active, address manager, address signer, uint160 oprfKeyId, string unverifiedWellKnownDomain))', +]) +export async function GET(request: Request) { + const id = new URL(request.url).searchParams.get('id') + if (!id || !/^rp_[0-9a-f]{1,16}$/i.test(id)) return Response.json({ error: 'Invalid RP ID.' }, { status: 400 }) + try { + const rp = await client.readContract({ + address: registry, + abi, + functionName: 'getRp', + args: [BigInt('0x' + id.slice(3))], + }) + if (!rp.initialized || !rp.active) + return Response.json({ error: 'This RP is not active on staging.' }, { status: 422 }) + return Response.json( + { signer: rp.signer, oprfKeyId: `0x${rp.oprfKeyId.toString(16)}` }, + { headers: { 'Cache-Control': 'no-store' } } + ) + } catch { + console.warn('staging_rp_lookup_failed', { operation: 'read_rp_registry' }) + return Response.json({ error: 'Could not validate this RP against the staging registry.' }, { status: 502 }) + } +} diff --git a/src/server/routes/tee-admission.ts b/src/server/routes/tee-admission.ts new file mode 100644 index 0000000..710e9c7 --- /dev/null +++ b/src/server/routes/tee-admission.ts @@ -0,0 +1,61 @@ +import { open } from 'node:fs/promises' + +/** Explicit local-demo provisioning. Production admission belongs to the authenticated proxy. */ +export async function POST( + request: Request, + config = { + enabled: process.env.LOCAL_TEE_DEMO_ADMISSION === '1' && process.env.NODE_ENV !== 'production', + tokenFile: process.env.LOCAL_TEE_TOKEN_FILE, + origin: process.env.LOCAL_TEE_ORIGIN || 'http://localhost:3100', + } +): Promise { + const reply = (status: number, data: unknown) => + Response.json(data, { + status, + headers: { 'Cache-Control': 'no-store', 'Referrer-Policy': 'no-referrer' }, + }) + if (!config.enabled) return reply(404, { error: 'Not found' }) + const url = new URL(request.url) + if ( + url.protocol !== 'http:' || + !['localhost', '127.0.0.1'].includes(url.hostname) || + url.origin !== config.origin || + request.headers.get('origin') !== config.origin || + request.headers.get('sec-fetch-site') !== 'same-origin' + ) + return reply(403, { error: 'Demo admission requires the configured localhost origin.' }) + if (request.method !== 'POST') return reply(405, { error: 'Expected POST' }) + if (request.headers.get('content-type')?.split(';')[0].trim() !== 'application/json') + return reply(415, { error: 'Expected JSON' }) + if (!config.tokenFile) return reply(503, { error: 'Demo token is not configured.' }) + try { + const file = await open(config.tokenFile, 'r') + let data: unknown + try { + const stat = await file.stat() + if (!stat.isFile() || (stat.mode & 0o077) !== 0 || stat.size > 4096) throw new Error('Invalid token file') + const buffer = Buffer.alloc(4097) + const { bytesRead } = await file.read(buffer, 0, buffer.length, 0) + if (bytesRead > 4096) throw new Error('Oversized token file') + data = JSON.parse(buffer.toString('utf8', 0, bytesRead)) + } finally { + await file.close() + } + if (!data || typeof data !== 'object') throw new Error('Invalid token') + const value = data as Record + const now = Math.floor(Date.now() / 1000) + if ( + typeof value.token !== 'string' || + !/^[0-9a-f]{64}$/.test(value.token) || + typeof value.expires_at !== 'number' || + !Number.isSafeInteger(value.expires_at) || + value.expires_at <= now || + value.expires_at > now + 600 + ) + throw new Error('Invalid token') + return reply(200, { token: value.token, expires_at: value.expires_at, mode: 'local' }) + } catch { + // The response exposes the degraded state, never the file contents or filesystem path. + return reply(503, { error: 'Demo token is unavailable or expired. Refresh local provisioning.' }) + } +} diff --git a/src/server/selfie-enclave.ts b/src/server/selfie-enclave.ts new file mode 100644 index 0000000..d9522c2 --- /dev/null +++ b/src/server/selfie-enclave.ts @@ -0,0 +1,95 @@ +import { constants } from 'node:fs' +import { open } from 'node:fs/promises' +import { createECDH, createPrivateKey, sign } from 'node:crypto' + +export function parsePolicy(value: unknown) { + if (!value || typeof value !== 'object') throw new Error('Invalid enclave policy') + const policy = value as Record + if ( + policy.endpoint !== 'wss://selfie-enrollment-stage.worldcoin.dev/v1/embeddings' || + policy.audience !== 'selfie-enrollment-stage.worldcoin.dev' || + !Array.isArray(policy.releases) || + !policy.releases.length || + policy.releases.length > 8 + ) + throw new Error('Invalid staging enclave policy') + for (const release of policy.releases) { + if ( + !release || + typeof release !== 'object' || + !['pcr0', 'pcr1', 'pcr2', 'worker_sha384'].every( + key => + typeof release[key] === 'string' && + /^[0-9a-f]{96}$/.test(release[key]) && + !/^0+$/.test(release[key]) + ) + ) + throw new Error('Invalid release measurements') + } + return { endpoint: policy.endpoint, audience: policy.audience, releases: policy.releases } +} + +export async function loadPolicy(path: string) { + const file = await open(path, 'r') + try { + if ((await file.stat()).size > 8192) throw new Error('Policy is too large') + const buffer = Buffer.alloc(8193) + const { bytesRead } = await file.read(buffer, 0, buffer.length, 0) + if (bytesRead > 8192) throw new Error('Policy is too large') + return parsePolicy(JSON.parse(buffer.toString('utf8', 0, bytesRead))) + } finally { + await file.close() + } +} + +export function parseChallenge(value: unknown, audience: string) { + if (!value || typeof value !== 'object') throw new Error('Invalid challenge') + const challenge = value as Record + if ( + Object.keys(challenge).sort().join(',') !== 'audience,nonce' || + challenge.audience !== audience || + !Array.isArray(challenge.nonce) || + challenge.nonce.length !== 32 || + !challenge.nonce.every(byte => Number.isInteger(byte) && byte >= 0 && byte <= 255) + ) + throw new Error('Invalid challenge') + return { audience, nonce: challenge.nonce as number[] } +} + +export function signChallenge(challenge: ReturnType, privateHex: string, now: number) { + if (!/^[0-9a-f]{64}$/.test(privateHex)) throw new Error('Invalid signing key') + const ecdh = createECDH('prime256v1') + ecdh.setPrivateKey(Buffer.from(privateHex, 'hex')) + const publicKey = ecdh.getPublicKey() + const key = createPrivateKey({ + format: 'jwk', + key: { + kty: 'EC', + crv: 'P-256', + d: Buffer.from(privateHex, 'hex').toString('base64url'), + x: publicKey.subarray(1, 33).toString('base64url'), + y: publicKey.subarray(33).toString('base64url'), + }, + }) + const expires_at = now + 30 + const message = JSON.stringify(['selfie-enrollment/admission/v1', challenge.audience, challenge.nonce, expires_at]) + return { + expires_at, + signature: sign('sha256', Buffer.from(message), { key, dsaEncoding: 'ieee-p1363' }).toString('hex'), + } +} + +export async function readSigningKey(path: string) { + const file = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW) + try { + const stat = await file.stat() + if (!stat.isFile() || (stat.mode & 0o077) !== 0 || stat.size > 128) throw new Error('Invalid key file') + // Descriptor read keeps permission checks and contents tied to the same file. + const buffer = Buffer.alloc(129) + const { bytesRead } = await file.read(buffer, 0, buffer.length, 0) + if (bytesRead > 128) throw new Error('Invalid key file') + return buffer.toString('utf8', 0, bytesRead).trim() + } finally { + await file.close() + } +} diff --git a/src/styles.css b/src/styles.css new file mode 100644 index 0000000..6b41acc --- /dev/null +++ b/src/styles.css @@ -0,0 +1,108 @@ +@import 'tailwindcss'; + +@font-face { + font-family: 'TWK Lausanne'; + src: url('./fonts/TWKLausanne-300.otf') format('opentype'); + font-weight: 300; + font-display: swap; +} +@font-face { + font-family: 'TWK Lausanne'; + src: url('./fonts/TWKLausanne-400.otf') format('opentype'); + font-weight: 400; + font-display: swap; +} +@font-face { + font-family: 'TWK Lausanne'; + src: url('./fonts/TWKLausanne-600.otf') format('opentype'); + font-weight: 600; + font-display: swap; +} +@font-face { + font-family: 'Tiempos Headline'; + src: url('./fonts/TiemposHeadline-Regular.ttf') format('truetype'); + font-weight: 400; + font-display: swap; +} +:root { + --raw-font-twk-lausanne: 'TWK Lausanne'; + --raw-font-tiempos: 'Tiempos Headline'; +} + +@theme inline { + --color-background: #f9f9f8; + --color-primary: #2d2c2c; + --color-secondary: #848382; + --color-border: #e1dfda; + + --font-tiempos: var(--raw-font-tiempos), var(--font-serif); + --font-brand: var(--raw-font-twk-lausanne), var(--font-sans); +} + +.credential-sheet { + position: fixed; + inset: auto 0 0; + margin: 0 auto; + width: min(100%, 480px); + max-width: 100%; + max-height: 92dvh; + overflow-y: auto; + border: 0; + border-radius: 28px 28px 0 0; + padding: 16px 32px max(32px, env(safe-area-inset-bottom)); + background: #fff; + color: var(--color-primary); + box-shadow: 0 -12px 48px #00000015; +} +.credential-sheet[open] { + animation: sheet-enter 180ms ease-out; +} +.credential-sheet::backdrop { + background: #0007; +} +.sheet-handle { + width: 36px; + height: 4px; + border-radius: 4px; + background: #dedddb; + margin: 0 auto 24px; +} +.sheet-primary, +.sheet-secondary { + min-height: 52px; + width: 100%; + border-radius: 999px; + padding: 14px 20px; + font-weight: 600; + cursor: pointer; +} +.sheet-primary { + background: #2d2c2c; + color: white; +} +.sheet-secondary { + background: #f1f0ee; +} +.sheet-primary:disabled { + opacity: 0.6; + cursor: wait; +} +.credential-sheet button:focus-visible { + outline: 2px solid #2d2c2c; + outline-offset: 3px; +} +@keyframes sheet-enter { + from { + transform: translateY(32px); + opacity: 0; + } + to { + transform: translateY(0); + opacity: 1; + } +} +@media (prefers-reduced-motion: reduce) { + .credential-sheet[open] { + animation: none; + } +} diff --git a/tests/authenticator-session.test.ts b/tests/authenticator-session.test.ts new file mode 100644 index 0000000..f5976e6 --- /dev/null +++ b/tests/authenticator-session.test.ts @@ -0,0 +1,137 @@ +import { test } from 'node:test' +import assert from 'node:assert/strict' +import type { WalletKit } from '../src/lib/walletkit' +import { POST } from '../src/server/routes/faux-credential' +import { + initializeAuthenticator, + issueFauxCredential, + type FauxIssuanceExchange, +} from '../src/lib/authenticator-session' + +const material = { authenticatorAddress: '0x123', authenticatorPubkey: 'key', offchainSignerCommitment: 'commitment' } +const makeSecrets = () => ({ seed: new Uint8Array(32).fill(1), databaseKey: new Uint8Array(32).fill(2) }) + +test('initialization matches saved public material, opens vault, clears supplied secrets, keeps worker alive', async () => { + const secrets = makeSecrets() + let initialized = false + let terminated = false + const wallet = { + recoveryDataFromSeed: async () => material, + initializeAuthenticator: async (seed: Uint8Array) => { + assert.equal(seed[0], 1) + initialized = true + }, + terminate: () => { + terminated = true + }, + } as unknown as WalletKit + const result = await initializeAuthenticator( + secrets, + 'passkey-id', + material, + new AbortController().signal, + async options => { + assert.equal(options.environment, 'staging') + assert.equal(options.databaseKey[0], 2) + return wallet + } + ) + assert.equal(result, wallet) + assert.ok(initialized && !terminated) + assert.ok(secrets.seed.every(byte => byte === 0) && secrets.databaseKey.every(byte => byte === 0)) +}) + +test('identity mismatch stops before authenticator/vault initialization', async () => { + let terminated = false + let initialized = false + const secrets = makeSecrets() + await assert.rejects( + initializeAuthenticator( + secrets, + 'id', + material, + new AbortController().signal, + async () => + ({ + recoveryDataFromSeed: async () => ({ ...material, authenticatorPubkey: 'other' }), + initializeAuthenticator: async () => { + initialized = true + }, + terminate: () => { + terminated = true + }, + }) as unknown as WalletKit + ), + /saved account identity/ + ) + assert.ok(terminated && !initialized) + assert.ok(secrets.seed.every(byte => byte === 0)) +}) + +test('faux issuance preserves signed u64 values and sends only subject to issuer', async () => { + let stored = false + const wallet = { + prepareCredential: async (schema: bigint) => { + assert.equal(schema, BigInt(128)) + return { sub: 'subject', blindingFactor: 'factor' } + }, + storeCredential: async (bytes: Uint8Array, factor: string) => { + assert.equal(new TextDecoder().decode(bytes), '{"large":18446744073709551615}') + assert.equal(factor, 'factor') + stored = true + return { credentialId: BigInt(1), issuerSchemaId: BigInt(128) } + }, + terminate: () => { + throw new Error('Successful issuance should keep vault open') + }, + } as unknown as WalletKit + const request = (async (_url, options) => { + assert.deepEqual(JSON.parse(options!.body as string), { sub: 'subject' }) + return new Response('{"credential":{"large":18446744073709551615}}') + }) as typeof fetch + const exchanges: FauxIssuanceExchange[] = [] + await issueFauxCredential(wallet, new AbortController().signal, request, exchange => exchanges.push(exchange)) + assert.deepEqual(exchanges[0].request.body, { sub: 'subject' }) + assert.equal(exchanges[1].response?.body, '{"credential":{"large":18446744073709551615}}') + assert.equal(exchanges[1].response?.status, 200) + assert.ok(!JSON.stringify(exchanges).includes('factor')) + assert.ok(stored) +}) + +test('malformed issuer response never reaches storage and closes session', async () => { + let terminated = false + const wallet = { + prepareCredential: async () => ({ sub: 'subject', blindingFactor: 'factor' }), + storeCredential: async () => { + throw new Error('Should not store') + }, + terminate: () => { + terminated = true + }, + } as unknown as WalletKit + await assert.rejects( + issueFauxCredential( + wallet, + new AbortController().signal, + (async () => new Response('{"credential":null}')) as unknown as typeof fetch + ), + /request the staging faux credential/ + ) + assert.ok(terminated) +}) + +test('issuer proxy rejects cross-origin and malformed requests before upstream calls', async () => { + const crossOrigin = new Request('http://localhost:3100/api/faux-credential', { + method: 'POST', + headers: { origin: 'https://other.example' }, + }) + assert.equal((await POST(crossOrigin)).status, 403) + for (const body of ['not-json', '{"sub":"invalid"}', 'a'.repeat(2048)]) { + const request = new Request('http://localhost:3100/api/faux-credential', { + method: 'POST', + headers: { origin: 'http://localhost:3100', 'content-type': 'application/json' }, + body, + }) + assert.equal((await POST(request)).status, 400) + } +}) diff --git a/tests/demo-profile.test.ts b/tests/demo-profile.test.ts new file mode 100644 index 0000000..6b8ebdb --- /dev/null +++ b/tests/demo-profile.test.ts @@ -0,0 +1,59 @@ +import { test } from 'node:test' +import assert from 'node:assert/strict' +import { requestIp } from '../src/lib/request-ip' +import { loadDemoProfile, saveDemoProfile, type DemoProfile } from '../src/lib/demo-profile' + +const profile: DemoProfile = { + version: 1, + passkey: { credentialId: 'aGVsbG8', prfSupported: true }, + registration: 'created', +} + +test('persists only public metadata and resumes the same passkey', () => { + let saved = '' + saveDemoProfile( + { + setItem: (_key, value) => { + saved = value + }, + }, + { ...profile, seed: 'secret', databaseKey: 'secret' } as DemoProfile + ) + assert.ok(!saved.includes('secret')) + assert.deepEqual(loadDemoProfile({ getItem: () => saved }), profile) +}) + +test('preserves uncertain submission state and rejects malformed profiles without overwriting them', () => { + assert.equal( + loadDemoProfile({ getItem: () => JSON.stringify({ ...profile, registration: 'submitting' }) })?.registration, + 'submitting' + ) + assert.throws(() => loadDemoProfile({ getItem: () => '{invalid' }), /preserved/) + assert.throws( + () => loadDemoProfile({ getItem: () => JSON.stringify({ ...profile, registration: 'finalized' }) }), + /preserved/ + ) + assert.throws( + () => + saveDemoProfile( + { + setItem: () => { + throw new Error('Quota exceeded') + }, + }, + profile + ), + /Could not save/ + ) +}) + +test('IP headers are validated, bounded, and explicitly unverified', () => { + assert.deepEqual(requestIp(new Headers({ 'x-forwarded-for': '203.0.113.1, 10.0.0.1' })), { + ip: '203.0.113.1', + source: 'x-forwarded-for', + verified: false, + }) + assert.equal(requestIp(new Headers({ 'x-forwarded-for': 'untrusted text', 'x-real-ip': '::1' })).ip, '::1') + assert.equal(requestIp(new Headers({ 'x-forwarded-for': 'a'.repeat(1025) })).ip, null) + assert.equal(requestIp(new Headers()).source, 'unavailable') +}) diff --git a/tests/face-detector.test.ts b/tests/face-detector.test.ts new file mode 100644 index 0000000..5b8f1ab --- /dev/null +++ b/tests/face-detector.test.ts @@ -0,0 +1,141 @@ +import { test } from 'node:test' +import assert from 'node:assert/strict' +import { startFaceDetector } from '../src/components/selfie-check/face-detector' + +async function withWorker(run: (h: ReturnType) => Promise) { + const h = harness() + const replacements = { + Worker: h.Worker, + createImageBitmap: () => h.capture(), + setTimeout: h.setTimeout, + clearTimeout: h.clearTimeout, + } + const saved = new Map(Object.keys(replacements).map(key => [key, Object.getOwnPropertyDescriptor(globalThis, key)])) + for (const [key, value] of Object.entries(replacements)) + Object.defineProperty(globalThis, key, { value, configurable: true }) + try { + await run(h) + } finally { + for (const [key, descriptor] of saved) { + if (descriptor) Object.defineProperty(globalThis, key, descriptor) + else Reflect.deleteProperty(globalThis, key) + } + } +} + +function harness() { + const worker = { + onmessage: undefined as ((event: { data: unknown }) => void) | undefined, + onerror: undefined as (() => void) | undefined, + onmessageerror: undefined as (() => void) | undefined, + postMessage: (data: { type: string }) => { + messages.push(data.type) + }, + terminate: () => { + terminated++ + }, + } + const messages: string[] = [], + errors: string[] = [], + logs: string[] = [] + const timers = new Map void; ms: number }>() + let terminated = 0, + captures = 0, + closed = 0, + nextTimer = 0 + const bitmap = { + close: () => { + closed++ + }, + } as ImageBitmap + const h = { + Worker: function () { + return worker + }, + worker, + messages, + errors, + logs, + timers, + capture: () => { + captures++ + return Promise.resolve(bitmap) + }, + bitmap, + setTimeout: (fn: () => void, ms: number) => { + const id = ++nextTimer + timers.set(id, { fn, ms }) + return id + }, + clearTimeout: (id: number) => { + timers.delete(id) + }, + counts: () => ({ terminated, captures, closed }), + start: (signal: AbortSignal) => + startFaceDetector( + { readyState: 2, currentTime: 1 } as HTMLVideoElement, + signal, + false, + () => {}, + message => logs.push(message), + message => errors.push(message) + ), + emit: (data: unknown) => worker.onmessage?.({ data }), + } + return h +} + +test('detector waits for a result before capturing again and abort terminates pending inference', async () => { + await withWorker(async h => { + const controller = new AbortController() + h.start(controller.signal) + assert.deepEqual(h.messages, ['init']) + h.emit({ type: 'ready' }) + await Promise.resolve() + assert.deepEqual(h.messages, ['init', 'frame']) + assert.equal(h.counts().captures, 1) + assert.deepEqual( + [...h.timers.values()].map(t => t.ms), + [10_000] + ) + controller.abort() + assert.equal(h.counts().terminated, 1) + assert.equal(h.timers.size, 0) + }) +}) + +test('late bitmap capture after cancellation is closed and never sent to the terminated worker', async () => { + await withWorker(async h => { + let finish!: (image: ImageBitmap) => void + h.capture = () => + new Promise(resolve => { + finish = resolve + }) + const controller = new AbortController() + h.start(controller.signal) + h.emit({ type: 'ready' }) + controller.abort() + finish(h.bitmap) + await Promise.resolve() + assert.deepEqual(h.messages, ['init']) + assert.equal(h.counts().closed, 1) + }) +}) + +test('startup timeout and worker errors are surfaced and release the worker', async () => { + await withWorker(async h => { + h.start(new AbortController().signal) + const startup = [...h.timers.values()][0] + assert.equal(startup.ms, 45_000) + startup.fn() + assert.match(h.errors[0], /startup timed out/) + assert.equal(h.counts().terminated, 1) + assert.equal(h.timers.size, 0) + }) + await withWorker(async h => { + h.start(new AbortController().signal) + h.emit({ type: 'error', stage: 'model integrity', message: 'SHA-256 mismatch' }) + assert.match(h.errors[0], /model integrity: SHA-256 mismatch/) + assert.equal(h.counts().terminated, 1) + }) +}) diff --git a/tests/fixtures/rgbnet-decode.json b/tests/fixtures/rgbnet-decode.json new file mode 100644 index 0000000..72b1707 --- /dev/null +++ b/tests/fixtures/rgbnet-decode.json @@ -0,0 +1,65 @@ +{ + "rows": [ + { + "anchor": 0, + "box": [0, 0, 1, 1], + "score": 0.91, + "landmarks": [0.1, -0.2, 0.1, -0.2, 0.1, -0.2, 0.1, -0.2, 0.1, -0.2] + }, + { + "anchor": 1, + "box": [0, 0, 0, 0], + "score": 0.85, + "landmarks": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + }, + { + "anchor": 1500, + "box": [0.5, -0.3, -0.2, 0.4], + "score": 0.99, + "landmarks": [ + -2.0, -1.5555555555555556, -1.1111111111111112, -0.6666666666666667, -0.22222222222222232, + 0.22222222222222232, 0.6666666666666665, 1.1111111111111107, 1.5555555555555554, 2.0 + ] + }, + { + "anchor": 2048, + "box": [0, 0, 0, 0], + "score": 0.9, + "landmarks": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + }, + { + "anchor": 2687, + "box": [1, 1, 0.5, 0.5], + "score": 0.95, + "landmarks": [3, -3, 3, -3, 3, -3, 3, -3, 3, -3] + } + ], + "expected": [ + { + "box": [0.4195004105567932, 0.6897153258323669, 0.4945620894432068, 0.7743471264839172], + "landmarks": [ + 0.4375, 0.7222222089767456, 0.4444444477558136, 0.7291666865348816, 0.4513888955116272, + 0.7361111044883728, 0.4583333432674408, 0.7430555820465088, 0.4652777910232544, 0.75 + ], + "score": 0.9900000095367432 + }, + { + "box": [0.5308802127838135, 0.5308802127838135, 1.0, 1.0], + "landmarks": [1.0, 0.66796875, 1.0, 0.66796875, 1.0, 0.66796875, 1.0, 0.66796875, 1.0, 0.66796875], + "score": 0.949999988079071 + }, + { + "box": [0.0, 0.0, 0.06333604454994202, 0.06333604454994202], + "landmarks": [ + 0.01640624925494194, 0.01406249962747097, 0.01640624925494194, 0.01406249962747097, 0.01640624925494194, + 0.01406249962747097, 0.01640624925494194, 0.01406249962747097, 0.01640624925494194, 0.01406249962747097 + ], + "score": 0.9100000262260437 + }, + { + "box": [0.0, 0.0, 0.134765625, 0.134765625], + "landmarks": [0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125], + "score": 0.8999999761581421 + } + ] +} diff --git a/tests/fixtures/rgbnet-resize.json b/tests/fixtures/rgbnet-resize.json new file mode 100644 index 0000000..6d1c419 --- /dev/null +++ b/tests/fixtures/rgbnet-resize.json @@ -0,0 +1,32 @@ +[ + { + "width": 256, + "height": 256, + "sha256": "d73337980d213a1761f50095b862405aef1d2907a3501fc1f2917d8902c5c9c7" + }, + { + "width": 640, + "height": 480, + "sha256": "a2b2126f83aa313df1b5ef572e2c2b9edc6809647fe2c82cedfa532d8fb075f6" + }, + { + "width": 720, + "height": 1280, + "sha256": "e692d07bace56720a085f88c5e3edf30ddcaeaf01f563822a3a5e4bbfb485c1d" + }, + { + "width": 17, + "height": 31, + "sha256": "aaafe38835cd786ead02cd582f9dbd483f2e29e6dc5c1b2a394fc9479b60127f" + }, + { + "width": 1, + "height": 1, + "sha256": "fa774c69dc768f36ef04d4def9d9f09f3578f12a828ab67f6d700b45779f6943" + }, + { + "width": 257, + "height": 193, + "sha256": "5faba04fb349809489ba32dfdecbbef4a51a499cd348f5b76954bf88d1e78aeb" + } +] diff --git a/tests/flow-logging.test.ts b/tests/flow-logging.test.ts new file mode 100644 index 0000000..0d30799 --- /dev/null +++ b/tests/flow-logging.test.ts @@ -0,0 +1,24 @@ +import { expect, test, spyOn } from 'bun:test' +import { logFlowStep } from '../src/lib/flow-logging' + +test('step logging preserves failures without exposing their sensitive payloads', async () => { + const info = spyOn(console, 'info').mockImplementation(() => {}) + const error = spyOn(console, 'error').mockImplementation(() => {}) + const failure = new Error('secret request payload') + try { + await expect( + logFlowStep('walletkit.worker_initialize', async () => { + throw failure + }) + ).rejects.toBe(failure) + expect(error.mock.calls[0]?.[1]).toMatchObject({ + step: 'walletkit.worker_initialize', + status: 'failed', + category: 'OperationError', + }) + expect(JSON.stringify([...info.mock.calls, ...error.mock.calls])).not.toContain('secret request payload') + } finally { + info.mockRestore() + error.mockRestore() + } +}) diff --git a/tests/http-server.test.ts b/tests/http-server.test.ts new file mode 100644 index 0000000..4fde24d --- /dev/null +++ b/tests/http-server.test.ts @@ -0,0 +1,47 @@ +import { test } from 'node:test' +import assert from 'node:assert/strict' +import { handleRequest } from '../src/server/http' + +test('local API router dispatches existing handlers and keeps referrers private', async () => { + const response = await handleRequest(new Request('http://localhost:3100/api/client-context')) + assert.equal(response.status, 200) + assert.equal(response.headers.get('Referrer-Policy'), 'no-referrer') + assert.equal(response.headers.get('Cache-Control'), 'no-store') + assert.equal((await response.json()).verified, false) +}) + +test('API router rejects unknown routes and incorrect methods without serving the SPA', async () => { + assert.equal((await handleRequest(new Request('http://localhost:3100/api/missing'))).status, 404) + const response = await handleRequest(new Request('http://localhost:3100/api/selfie-credential')) + assert.equal(response.status, 405) + assert.equal(response.headers.get('Allow'), 'POST') +}) + +test('migrated selfie API preserves same-origin and localhost restrictions', async () => { + for (const [url, origin] of [ + ['http://localhost:3100/api/selfie-credential', 'https://other.example'], + ['https://public.example/api/selfie-credential', 'https://public.example'], + ]) { + const response = await handleRequest( + new Request(url, { + method: 'POST', + headers: { origin, 'content-type': 'application/json' }, + body: '{}', + }) + ) + assert.equal(response.status, 403) + } + const response = await handleRequest( + new Request('http://localhost:3100/api/selfie-credential', { + method: 'POST', + headers: { origin: 'http://localhost:3100', 'content-type': 'application/json' }, + body: '{}', + }) + ) + assert.equal(response.status, 400) +}) + +test('static server cannot expose files outside dist', async () => { + const response = await handleRequest(new Request('http://localhost:3100/..%2fpackage.json')) + assert.equal(response.status, 404) +}) diff --git a/tests/prf-result.test.ts b/tests/prf-result.test.ts new file mode 100644 index 0000000..10e4a82 --- /dev/null +++ b/tests/prf-result.test.ts @@ -0,0 +1,46 @@ +import { test } from 'node:test' +import assert from 'node:assert/strict' +import { runInNewContext } from 'node:vm' +import { derivePasskeySecrets } from '../src/lib/passkey-secrets' +import { prfBytes, describePrfValue } from '../src/lib/prf-result' + +test('1Password byte arrays derive exactly the same secrets as native buffers', async () => { + const first = Array.from({ length: 32 }, (_, i) => i) + const second = Array.from({ length: 32 }, (_, i) => 255 - i) + const normalized = await derivePasskeySecrets(prfBytes(first)!.buffer, prfBytes(second)!.buffer) + const native = await derivePasskeySecrets(Uint8Array.from(first).buffer, Uint8Array.from(second).buffer) + assert.deepEqual(normalized, native) +}) + +test('normalizes typed-array slices and cross-realm buffers', () => { + const backing = new Uint8Array(40).fill(9) + assert.deepEqual(prfBytes(backing.subarray(4, 36)), new Uint8Array(32).fill(9)) + assert.equal(backing[0], 9) + assert.ok(backing.subarray(4, 36).every(byte => byte === 0)) + assert.deepEqual(prfBytes(runInNewContext('new Uint8Array(32).fill(7).buffer')), new Uint8Array(32).fill(7)) +}) + +test('rejects malformed outputs rather than coercing bytes', () => { + for (const value of [ + undefined, + null, + 'secret', + new Array(32), + Array(31).fill(1), + Array(33).fill(1), + Array(32).fill(-1), + Array(32).fill(256), + Array(32).fill(1.5), + Array(32).fill('7'), + Array(32).fill(NaN), + new Uint8Array(31), + ]) { + assert.equal(prfBytes(value), undefined) + } +}) + +test('diagnostic output contains shape only, never PRF values', () => { + assert.deepEqual(describePrfValue(Array(32).fill(123)), { type: 'array', byteLength: 32 }) + assert.deepEqual(describePrfValue(new Uint8Array(32).buffer), { type: 'array-buffer', byteLength: 32 }) + assert.deepEqual(describePrfValue(undefined), { type: 'missing' }) +}) diff --git a/tests/registration.test.ts b/tests/registration.test.ts new file mode 100644 index 0000000..08dda93 --- /dev/null +++ b/tests/registration.test.ts @@ -0,0 +1,180 @@ +import { test } from 'node:test' +import assert from 'node:assert/strict' +import type { WalletKit, InitializeOptions } from '../src/lib/walletkit' +import { derivePasskeySecrets, expandSecret } from '../src/lib/passkey-secrets' +import { passkeyStorageId, registerOnStaging } from '../src/lib/staging-registration' + +const bytes = (hex: string) => Uint8Array.from(Buffer.from(hex, 'hex')).buffer + +test('HKDF-Expand matches an independent HMAC-SHA256 oracle without an Extract step', async () => { + const prk = bytes('077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5') + const { createHmac } = await import('node:crypto') + const label = 'web.world.org/v1/authenticator-secret' + const expected = createHmac('sha256', Buffer.from(prk)) + .update(label) + .update(Buffer.from([1])) + .digest() + assert.deepEqual(Buffer.from(await expandSecret(prk, label)), expected) +}) + +test('derivation separates identity/storage secrets, is deterministic, and clears PRF buffers', async () => { + const first = new Uint8Array(32).fill(7) + const second = new Uint8Array(32).fill(7) + const secrets = await derivePasskeySecrets(first.buffer, second.buffer) + const again = await derivePasskeySecrets(new Uint8Array(32).fill(7).buffer, new Uint8Array(32).fill(7).buffer) + assert.notDeepEqual(secrets.seed, secrets.databaseKey) + assert.deepEqual(secrets.seed, again.seed) + assert.deepEqual(secrets.databaseKey, again.databaseKey) + assert.ok(first.every(byte => byte === 0) && second.every(byte => byte === 0)) +}) + +test('rejects malformed PRF output and clears both buffers', async () => { + const first = new Uint8Array(32).fill(7) + const second = new Uint8Array(31).fill(7) + await assert.rejects(derivePasskeySecrets(first.buffer, second.buffer), /32-byte/) + assert.ok(first.every(byte => byte === 0) && second.every(byte => byte === 0)) +}) + +const publicMaterial = { + authenticatorAddress: 'public-address', + authenticatorPubkey: 'public-key', + offchainSignerCommitment: 'public-commitment', +} +const secrets = () => ({ seed: new Uint8Array(32).fill(1), databaseKey: new Uint8Array(32).fill(2) }) +function fakeWallet(overrides: Partial = {}) { + return { + recoveryDataFromSeed: async () => publicMaterial, + register: async () => {}, + pollRegistration: async () => ({ state: 'finalized' }), + initializeAuthenticator: async () => {}, + terminate: () => {}, + ...overrides, + } as WalletKit +} + +test('registers exactly once on staging, initializes after finalized, retains the session, and clears secrets', async () => { + const input = secrets() + const phases: string[] = [] + let registrations = 0 + let polls = 0 + let stopped = false + let initialized = false + const wallet = fakeWallet({ + register: async seed => { + assert.deepEqual(seed, new Uint8Array(32).fill(1)) + registrations++ + }, + pollRegistration: async () => ({ state: ++polls === 1 ? 'submitted' : 'finalized' }), + initializeAuthenticator: async seed => { + assert.equal(polls, 2) + assert.deepEqual(seed, new Uint8Array(32).fill(1)) + initialized = true + }, + terminate: () => { + stopped = true + }, + }) + const session = await registerOnStaging( + input, + 'credential-id', + new AbortController().signal, + p => phases.push(p), + material => assert.deepEqual(material, publicMaterial), + async (options: InitializeOptions) => { + assert.equal(options.environment, 'staging') + assert.equal(options.storageId, await passkeyStorageId('credential-id')) + assert.deepEqual(options.databaseKey, new Uint8Array(32).fill(2)) + return wallet + } + ) + assert.equal(registrations, 1) + assert.deepEqual(phases, ['loading', 'registering', 'submitted', 'finalized', 'initializing']) + assert.ok(initialized) + assert.equal(session, wallet) + assert.equal(stopped, false) + assert.ok(input.seed.every(byte => byte === 0) && input.databaseKey.every(byte => byte === 0)) +}) + +test('uncertain submission fails without retrying or surfacing raw dependency payloads', async () => { + let registrations = 0 + const input = secrets() + const phases: string[] = [] + await assert.rejects( + registerOnStaging( + input, + 'id', + new AbortController().signal, + p => phases.push(p), + () => {}, + async () => + fakeWallet({ + register: async () => { + registrations++ + throw new Error('sensitive payload') + }, + }) + ), + error => + error instanceof Error && + /may already have been submitted/.test(error.message) && + !error.message.includes('sensitive payload') + ) + assert.equal(registrations, 1) + assert.ok(!phases.includes('finalized')) + assert.ok(input.seed.every(byte => byte === 0) && input.databaseKey.every(byte => byte === 0)) +}) + +test('abort bounds a hung registration call and releases the worker', async () => { + const controller = new AbortController() + const input = secrets() + let stopped = false + await assert.rejects( + registerOnStaging( + input, + 'id', + controller.signal, + () => {}, + () => {}, + async () => + fakeWallet({ + register: () => { + setTimeout(() => controller.abort(), 10) + return new Promise(() => {}) + }, + terminate: () => { + stopped = true + }, + }) + ) + ) + assert.ok(stopped) + assert.ok(input.seed.every(byte => byte === 0) && input.databaseKey.every(byte => byte === 0)) +}) + +test('initialization failure after finalization preserves success status and cleans up', async () => { + let stopped = false + const input = secrets() + const phases: string[] = [] + await assert.rejects( + registerOnStaging( + input, + 'id', + new AbortController().signal, + phase => phases.push(phase), + () => {}, + async () => + fakeWallet({ + initializeAuthenticator: async () => { + throw new Error('private dependency details') + }, + terminate: () => { + stopped = true + }, + }) + ), + /registration succeeded, but authenticator initialization failed/ + ) + assert.ok(phases.includes('finalized')) + assert.ok(stopped) + assert.ok(input.seed.every(byte => byte === 0) && input.databaseKey.every(byte => byte === 0)) +}) diff --git a/tests/rgbnet.test.ts b/tests/rgbnet.test.ts new file mode 100644 index 0000000..44b2f4d --- /dev/null +++ b/tests/rgbnet.test.ts @@ -0,0 +1,79 @@ +import { test } from 'node:test' +import assert from 'node:assert/strict' +import { createHash } from 'node:crypto' +import resizeReference from './fixtures/rgbnet-resize.json' +import decodeReference from './fixtures/rgbnet-decode.json' +import { + prepareRgbnet, + decodeRgbnet, + previewPoint, + faceGuidance, + ANCHOR_COUNT, + type ModelOutput, +} from '../src/components/selfie-check/rgbnet' + +function outputs(): ModelOutput[] { + return [4, 2, 10].map(n => ({ dims: [1, ANCHOR_COUNT, n], data: new Float32Array(ANCHOR_COUNT * n) })) +} + +test('RGBNet preprocessing matches native fast_image_resize reference tensors byte for byte', () => { + for (const { width, height, sha256 } of resizeReference) { + const rgba = Uint8ClampedArray.from( + { length: width * height * 4 }, + (_, i) => (i * 37 + Math.floor(i / 13)) % 256 + ) + const tensor = prepareRgbnet(rgba, width, height) + assert.equal( + createHash('sha256').update(new Uint8Array(tensor.buffer)).digest('hex'), + sha256, + `${width}x${height}` + ) + } +}) + +test('RGBNet decode matches native Rust boxes, landmarks and suppression with shuffled output heads', () => { + const heads = outputs() + for (const row of decodeReference.rows) { + heads[0].data.set(row.box, row.anchor * 4) + heads[1].data.set([1 - row.score, row.score], row.anchor * 2) + heads[2].data.set(row.landmarks, row.anchor * 10) + } + const actual = decodeRgbnet([heads[2], heads[0], heads[1]]) + assert.equal(actual.length, decodeReference.expected.length) + actual.forEach((face, i) => { + const expected = decodeReference.expected[i] + for (const key of ['box', 'landmarks'] as const) + face[key].forEach((value, j) => assert.ok(Math.abs(value - expected[key][j]) < 1e-7)) + assert.ok(Math.abs(face.score - expected.score) < 1e-7) + }) +}) + +test('invalid frames and missing, malformed or non-finite output heads fail explicitly', () => { + assert.throws(() => prepareRgbnet(new Uint8ClampedArray(4), 0, 1), /dimensions/) + assert.throws(() => prepareRgbnet(new Uint8ClampedArray(4), 2, 2), /dimensions/) + assert.throws(() => decodeRgbnet([]), /Missing/) + const heads = outputs() + assert.throws(() => decodeRgbnet([heads[0], heads[0], heads[2]]), /Unexpected/) + heads[0].data[0] = NaN + assert.throws(() => decodeRgbnet(heads), /non-finite/) + heads[0].data[0] = 0 + heads[0].dims = [1, 4] + assert.throws(() => decodeRgbnet(heads), /shape/) +}) + +test('empty detections and confidence boundary do not report a positioned face', () => { + const heads = outputs() + heads[1].data[1] = 0.8 + assert.deepEqual(decodeRgbnet(heads), []) + assert.equal(faceGuidance([], 640, 480), 'No face detected') +}) + +test('preview projection accounts for mirror and object-cover crop in landscape and portrait', () => { + assert.deepEqual(previewPoint(0.5, 0.5, 1920, 1080), [0.5, 0.5]) + const [x, y] = previewPoint(0.25, 0.25, 1920, 1080) + assert.ok(Math.abs(x - 0.9444444444) < 1e-8) + assert.equal(y, 0.25) + const portrait = previewPoint(0.25, 0.25, 1080, 1920) + assert.equal(portrait[0], 0.75) + assert.ok(Math.abs(portrait[1] - 0.0555555556) < 1e-8) +}) diff --git a/tests/selfie-camera.test.ts b/tests/selfie-camera.test.ts new file mode 100644 index 0000000..61ce86b --- /dev/null +++ b/tests/selfie-camera.test.ts @@ -0,0 +1,142 @@ +import { test } from 'node:test' +import assert from 'node:assert/strict' +import { startCamera } from '../src/components/selfie-check/camera-capture' + +const flush = () => new Promise(resolve => setImmediate(resolve)) + +async function withCamera(run: (camera: ReturnType) => Promise) { + const camera = fakeCamera() + const replacements = { + window: camera.window, + document: camera.document, + navigator: { mediaDevices: { getUserMedia: () => camera.permission() } }, + requestAnimationFrame: (callback: (now: number) => void) => { + camera.animationCallback = callback + return 1 + }, + cancelAnimationFrame: () => { + camera.animationCallback = undefined + }, + } + const descriptors = new Map( + Object.keys(replacements).map(key => [key, Object.getOwnPropertyDescriptor(globalThis, key)]) + ) + for (const [key, value] of Object.entries(replacements)) + Object.defineProperty(globalThis, key, { value, configurable: true }) + try { + await run(camera) + } finally { + for (const [key, descriptor] of descriptors) { + if (descriptor) Object.defineProperty(globalThis, key, descriptor) + else Reflect.deleteProperty(globalThis, key) + } + } +} + +function fakeCamera() { + let stops = 0 + const track = Object.assign(new EventTarget(), { + stop: () => { + stops++ + }, + }) + const stream = { getTracks: () => [track], getVideoTracks: () => [track] } as unknown as MediaStream + const camera = { + window: Object.assign(new EventTarget(), { isSecureContext: true }), + document: Object.assign(new EventTarget(), { hidden: false }), + permission: () => Promise.resolve(stream), + stream, + track, + stops: () => stops, + frameCallback: undefined as ((now: number, metadata: { mediaTime: number }) => void) | undefined, + animationCallback: undefined as ((now: number) => void) | undefined, + drawn: [] as number[], + video: { + videoWidth: 1920, + videoHeight: 1080, + readyState: 2, + currentTime: 0, + srcObject: null as MediaStream | null, + play: () => Promise.resolve(), + pause: () => {}, + requestVideoFrameCallback: (callback: (now: number, metadata: { mediaTime: number }) => void) => { + camera.frameCallback = callback + return 1 + }, + cancelVideoFrameCallback: () => { + camera.frameCallback = undefined + }, + } as unknown as HTMLVideoElement, + canvas: { + width: 0, + height: 0, + getContext: () => ({ + drawImage: () => { + camera.drawn.push(camera.video.currentTime) + }, + }), + } as unknown as HTMLCanvasElement, + emit: (now: number, mediaTime = now / 1000) => { + camera.video.currentTime = mediaTime + const callback = camera.frameCallback + camera.frameCallback = undefined + callback?.(now, { mediaTime }) + const animation = camera.animationCallback + camera.animationCallback = undefined + animation?.(now) + }, + } + return camera +} + +test('preview stays open after startup until explicitly cancelled', async () => { + await withCamera(async camera => { + const controller = new AbortController() + let ready = false + const running = startCamera(camera.video, controller.signal, () => { + ready = true + }) + const rejected = assert.rejects(running) + await flush() + assert.equal(ready, true) + assert.equal(camera.video.srcObject, camera.stream) + assert.equal(camera.stops(), 0) + assert.deepEqual(camera.drawn, []) + controller.abort() + await rejected + assert.equal(camera.video.srcObject, null) + assert.equal(camera.stops(), 1) + }) +}) + +test('hiding the tab stops the preview and releases the camera', async () => { + await withCamera(async camera => { + const running = startCamera(camera.video, new AbortController().signal, () => {}) + const rejected = assert.rejects(running, /left this tab/) + await flush() + camera.document.hidden = true + camera.document.dispatchEvent(new Event('visibilitychange')) + await rejected + assert.equal(camera.stops(), 1) + assert.equal(camera.video.srcObject, null) + }) +}) + +test('permission granted after cancellation releases the late stream', async () => { + await withCamera(async camera => { + let grant!: (stream: MediaStream) => void + camera.permission = () => + new Promise(resolve => { + grant = resolve + }) + const controller = new AbortController() + const running = startCamera(camera.video, controller.signal, () => {}) + const rejected = assert.rejects(running) + controller.abort() + await rejected + grant(camera.stream) + await flush() + assert.equal(camera.stops(), 1) + assert.equal(camera.video.srcObject, null) + }) +}) diff --git a/tests/selfie-enclave.test.ts b/tests/selfie-enclave.test.ts new file mode 100644 index 0000000..800abf5 --- /dev/null +++ b/tests/selfie-enclave.test.ts @@ -0,0 +1,101 @@ +import { tmpdir } from 'node:os' +import { join } from 'node:path' +import { afterAll, expect, test } from 'bun:test' +import { handle } from '../src/server/routes/selfie-enclave' +import { mkdtemp, rm, writeFile, chmod } from 'node:fs/promises' +import { createECDH, createPublicKey, verify } from 'node:crypto' +import { parseChallenge, parsePolicy, signChallenge, readSigningKey } from '../src/server/selfie-enclave' + +const directory = await mkdtemp(join(tmpdir(), 'selfie-admission-test-')) +afterAll(() => rm(directory, { recursive: true, force: true })) +const ecdh = createECDH('prime256v1') +ecdh.generateKeys() +const privateHex = ecdh.getPrivateKey().toString('hex').padStart(64, '0') +const publicBytes = ecdh.getPublicKey() +const publicKey = createPublicKey({ + format: 'jwk', + key: { + kty: 'EC', + crv: 'P-256', + x: publicBytes.subarray(1, 33).toString('base64url'), + y: publicBytes.subarray(33).toString('base64url'), + }, +}) +const audience = 'selfie-enrollment-stage.worldcoin.dev' +const challenge = { audience, nonce: Array.from({ length: 32 }, (_, index) => index) } +const policy = { + endpoint: `wss://${audience}/v1/embeddings`, + audience, + releases: [ + { + pcr0: 'a'.repeat(96), + pcr1: 'b'.repeat(96), + pcr2: 'c'.repeat(96), + worker_sha384: 'd'.repeat(96), + }, + ], +} +const policyFile = join(directory, 'policy.json') +const keyFile = join(directory, 'key.hex') +await writeFile(policyFile, JSON.stringify(policy)) +await writeFile(keyFile, privateHex, { mode: 0o600 }) +const config = { enabled: true, origin: 'http://localhost:3100', policyFile, keyFile } +function request(body: unknown = challenge, headers: Record = {}) { + return new Request('http://localhost:3100/api/selfie-admission', { + method: 'POST', + headers: { + origin: config.origin, + 'sec-fetch-site': 'same-origin', + 'content-type': 'application/json', + ...headers, + }, + body: JSON.stringify(body), + }) +} + +test('ticket uses the Rust JSON tuple, SHA-256 and fixed-width P256 signature', () => { + const ticket = signChallenge(challenge, privateHex, 1000) + expect(ticket.expires_at).toBe(1030) + expect(ticket.signature).toHaveLength(128) + const message = (nonce = challenge.nonce, expires = ticket.expires_at) => + Buffer.from(JSON.stringify(['selfie-enrollment/admission/v1', audience, nonce, expires])) + const options = { key: publicKey, dsaEncoding: 'ieee-p1363' as const } + const signature = Buffer.from(ticket.signature, 'hex') + expect(verify('sha256', message(), options, signature)).toBe(true) + expect(verify('sha256', message(Array(32).fill(9)), options, signature)).toBe(false) + expect(verify('sha256', message(challenge.nonce, 1031), options, signature)).toBe(false) +}) + +test('rejects wrong audiences, malformed nonces, extra fields and untrusted policies', () => { + for (const value of [ + null, + { ...challenge, audience: 'other' }, + { ...challenge, nonce: Array(32).fill(256) }, + { ...challenge, nonce: Array(31).fill(0) }, + { ...challenge, nonce: Array(32).fill(0.5) }, + { ...challenge, extra: true }, + ]) + expect(() => parseChallenge(value, audience)).toThrow() + expect(parsePolicy(policy)).toEqual(policy) + expect(() => parsePolicy({ ...policy, endpoint: 'ws://attacker.example' })).toThrow() + expect(() => parsePolicy({ ...policy, releases: [{ ...policy.releases[0], pcr0: '0'.repeat(96) }] })).toThrow() +}) + +test('local route gates origin, environment, content type, payload and configuration', async () => { + expect((await handle(request(), config)).status).toBe(200) + expect((await handle(request(), { ...config, enabled: false })).status).toBe(404) + expect((await handle(request(), { ...config, keyFile: undefined })).status).toBe(503) + expect((await handle(request(challenge, { origin: 'http://evil.example' }), config)).status).toBe(403) + expect((await handle(request(challenge, { 'sec-fetch-site': 'cross-site' }), config)).status).toBe(403) + expect((await handle(request(challenge, { 'content-type': 'text/plain' }), config)).status).toBe(415) + expect((await handle(request({ ...challenge, audience: 'wrong' }), config)).status).toBe(400) + expect((await handle(request('x'.repeat(3000)), config)).status).toBe(400) + expect((await handle(request(), { ...config, keyFile: join(directory, 'missing') })).status).toBe(503) +}) + +test('refuses signing keys readable by other users', async () => { + const insecure = join(directory, 'insecure.hex') + await writeFile(insecure, privateHex) + await chmod(insecure, 0o644) + await expect(readSigningKey(insecure)).rejects.toThrow('Invalid key file') +}) diff --git a/tests/selfie-routing.test.ts b/tests/selfie-routing.test.ts new file mode 100644 index 0000000..463bf18 --- /dev/null +++ b/tests/selfie-routing.test.ts @@ -0,0 +1,121 @@ +import { test } from 'node:test' +import assert from 'node:assert/strict' +import type { CredentialMetadata } from '../src/lib/walletkit' +import { + credentialAvailability, + credentialRequirementsLabel, + type ProofRequest, + type Constraint, +} from '../src/lib/requests/proof-request' + +const request = (constraints?: Constraint): ProofRequest => ({ + id: 'test', + version: 1, + proof_type: 'uniqueness', + rp_id: 'rp_1', + oprf_key_id: '0x1', + nonce: '0x00', + signature: '0x00', + created_at: 100, + expires_at: 200, + action: '0x00', + session_id: null, + proof_requests: [ + { identifier: 'selfie', issuer_schema_id: 11 }, + { identifier: 'orb', issuer_schema_id: 1 }, + ], + constraints, +}) +const credential = (schema: number, overrides: Partial = {}): CredentialMetadata => + ({ + credentialId: BigInt(schema), + issuerSchemaId: BigInt(schema), + genesisIssuedAt: BigInt(100), + expiresAt: BigInt(300), + isExpired: false, + ...overrides, + }) as CredentialMetadata + +test('a missing selfie credential starts enrollment; an available one continues to proof', () => { + const selfie = request('selfie') + assert.equal(credentialAvailability(selfie, []).needsSelfieEnrollment, true) + const available = credentialAvailability(selfie, [credential(11)]) + assert.equal(available.satisfied, true) + assert.equal(available.needsSelfieEnrollment, false) +}) + +test('an expired selfie credential can enroll but an active credential outside date bounds does not loop', () => { + const selfie = request('selfie') + assert.equal(credentialAvailability(selfie, [credential(11, { isExpired: true })]).needsSelfieEnrollment, true) + selfie.proof_requests[0].genesis_issued_at_min = 150 + const unavailable = credentialAvailability(selfie, [credential(11)]) + assert.equal(unavailable.satisfied, false) + assert.equal(unavailable.needsSelfieEnrollment, false) +}) + +test('an available alternative skips selfie enrollment, including nested constraints', () => { + const alternative = request({ any: [{ all: ['selfie'] }, 'orb'] }) + for (const schema of [1, 11]) { + const available = credentialAvailability(alternative, [credential(schema)]) + assert.equal(available.satisfied, true) + assert.equal(available.canEnrollSelfie, false) + assert.equal(available.needsSelfieEnrollment, false) + } + const missing = credentialAvailability(alternative, []) + assert.equal(missing.satisfied, false) + assert.equal(missing.canEnrollSelfie, true) + assert.equal(missing.needsSelfieEnrollment, false) + assert.equal(missing.requiresOrb, false) +}) + +test('enrollment is offered only when adding selfie can satisfy the complete request', () => { + for (const all of [request(), request({ all: ['selfie', 'orb'] })]) { + assert.equal(credentialAvailability(all, []).needsSelfieEnrollment, false) + assert.equal(credentialAvailability(all, [credential(1)]).needsSelfieEnrollment, true) + } + assert.equal(credentialAvailability(request('orb'), []).needsSelfieEnrollment, false) +}) + +test('Orb-only requests use an eligible Orb credential and never substitute Selfie', () => { + const orb = request('orb') + for (const records of [[], [credential(11)], [credential(1, { isExpired: true })]]) { + const result = credentialAvailability(orb, records) + assert.equal(result.satisfied, false) + assert.equal(result.requiresOrb, true) + assert.equal(result.canEnrollSelfie, false) + assert.equal(result.needsSelfieEnrollment, false) + } + assert.equal(credentialAvailability(orb, [credential(1)]).satisfied, true) + orb.proof_requests[1].expires_at_min = 400 + assert.equal(credentialAvailability(orb, [credential(1)]).satisfied, false) +}) + +test('unknown issuers and nested alternatives do not become an automatic Selfie choice', () => { + const mixed = request({ any: ['selfie', { all: ['orb', 'other'] }] }) + mixed.proof_requests.push({ identifier: 'other', issuer_schema_id: 128 }) + const result = credentialAvailability(mixed, []) + assert.equal(result.canEnrollSelfie, true) + assert.equal(result.needsSelfieEnrollment, false) + mixed.constraints = 'other' + assert.equal(credentialAvailability(mixed, []).canEnrollSelfie, false) + assert.equal(credentialAvailability(mixed, [credential(128)]).satisfied, true) +}) + +test('Selfie required in every alternative only enrolls when it can complete the request', () => { + const mixed = request({ any: [{ all: ['selfie', 'orb'] }, { all: ['selfie', 'other'] }] }) + mixed.proof_requests.push({ identifier: 'other', issuer_schema_id: 128 }) + assert.equal(credentialAvailability(mixed, []).canEnrollSelfie, false) + assert.equal(credentialAvailability(mixed, [credential(128)]).needsSelfieEnrollment, true) +}) + +test('request summary preserves AND/OR groups and identifies credentials by schema', () => { + assert.equal(credentialRequirementsLabel(request('orb')), 'Orb') + assert.equal(credentialRequirementsLabel(request('selfie')), 'Selfie Check') + assert.equal(credentialRequirementsLabel(request()), '(Selfie Check and Orb)') + assert.equal(credentialRequirementsLabel(request({ any: ['selfie', 'orb'] })), '(Selfie Check or Orb)') + const nested = request({ any: ['selfie', { all: ['orb', 'other'] }] }) + nested.proof_requests.push({ identifier: 'other', issuer_schema_id: 128 }) + assert.equal(credentialRequirementsLabel(nested), '(Selfie Check or (Orb and Schema 128))') + nested.proof_requests[0].issuer_schema_id = 1 + assert.equal(credentialRequirementsLabel({ ...nested, constraints: 'selfie' }), 'Orb') +}) diff --git a/tests/tee-admission.test.ts b/tests/tee-admission.test.ts new file mode 100644 index 0000000..02ba6cb --- /dev/null +++ b/tests/tee-admission.test.ts @@ -0,0 +1,133 @@ +import { tmpdir } from 'node:os' +import { test } from 'node:test' +import { join } from 'node:path' +import assert from 'node:assert/strict' +import { POST } from '../src/server/routes/tee-admission' +import { requestDemoToken } from '../src/lib/tee-admission' +import { mkdtemp, writeFile, chmod, rm } from 'node:fs/promises' + +const origin = 'http://localhost:3100' +const token = 'a'.repeat(64) +const valid = () => ({ token, expires_at: Math.floor(Date.now() / 1000) + 300 }) +const request = (headers: Record = {}, url = origin) => + new Request(url + '/api/tee-admission', { + method: 'POST', + headers: { origin, 'sec-fetch-site': 'same-origin', 'content-type': 'application/json', ...headers }, + body: '{}', + }) + +async function fixture(run: (config: { enabled: boolean; tokenFile: string; origin: string }) => Promise) { + const dir = await mkdtemp(join(tmpdir(), 'tee-admission-test-')) + const tokenFile = join(dir, 'token.json') + await writeFile(tokenFile, JSON.stringify(valid()), { mode: 0o600 }) + try { + await run({ enabled: true, tokenFile, origin }) + } finally { + await rm(dir, { recursive: true, force: true }) + } +} + +test('local provider returns only the configured valid token with no-store', async () => { + await fixture(async config => { + const response = await POST(request(), config) + assert.equal(response.status, 200) + assert.equal(response.headers.get('cache-control'), 'no-store') + assert.equal(response.headers.has('access-control-allow-origin'), false) + const data = await response.json() + assert.equal(data.token, token) + assert.equal(data.mode, 'local') + assert.deepEqual(Object.keys(data).sort(), ['expires_at', 'mode', 'token']) + }) +}) + +test('provider is disabled by default and rejects cross-origin or non-browser requests', async () => { + assert.equal((await POST(request(), { enabled: false, tokenFile: undefined, origin })).status, 404) + await fixture(async config => { + const deniedHeaders: Record[] = [ + { origin: 'http://localhost:9999' }, + { origin: 'https://evil.example' }, + { origin: '' }, + { 'sec-fetch-site': 'cross-site' }, + { 'sec-fetch-site': '' }, + ] + for (const headers of deniedHeaders) { + const response = await POST(request(headers), config) + assert.equal(response.status, 403) + assert.ok(!(await response.text()).includes(token)) + } + assert.equal( + (await POST(request({}, 'https://public.example'), { ...config, origin: 'https://public.example' })).status, + 403 + ) + }) +}) + +test('provider fails closed for missing, expired, malformed and insecure token files', async () => { + await fixture(async config => { + for (const value of [ + { ...valid(), expires_at: 1 }, + { ...valid(), expires_at: Math.floor(Date.now() / 1000) + 3600 }, + { ...valid(), token: 'short' }, + null, + 'x'.repeat(5000), + ]) { + await writeFile(config.tokenFile, JSON.stringify(value)) + const response = await POST(request(), config) + assert.equal(response.status, 503) + const body = await response.text() + assert.ok(!body.includes(config.tokenFile)) + assert.ok(!body.includes(token)) + } + await writeFile(config.tokenFile, JSON.stringify(valid())) + await chmod(config.tokenFile, 0o644) + assert.equal((await POST(request(), config)).status, 503) + assert.equal((await POST(request(), { ...config, tokenFile: undefined })).status, 503) + }) +}) + +async function withFetch( + fake: (...args: Parameters) => ReturnType, + run: () => Promise +) { + const original = globalThis.fetch + globalThis.fetch = Object.assign(fake, { preconnect: original.preconnect }) + try { + await run() + } finally { + globalThis.fetch = original + } +} + +test('browser obtains the provisioned credential through a same-origin POST', async () => { + await withFetch( + async (url, init) => { + assert.equal(url, '/api/tee-admission') + assert.equal(init?.method, 'POST') + assert.equal(init?.redirect, 'error') + assert.equal(init?.cache, 'no-store') + assert.equal(init?.credentials, 'same-origin') + return Response.json({ ...valid(), mode: 'local' }) + }, + async () => assert.equal(await requestDemoToken(new AbortController().signal), token) + ) +}) + +test('browser refuses invalid/expired provisioning and sanitizes errors', async () => { + for (const response of [ + Response.json({ ...valid(), mode: 'remote' }), + Response.json({ ...valid(), mode: 'local', expires_at: 1 }), + Response.json({ ...valid(), mode: 'local', padding: 'x'.repeat(5000) }), + new Response(token, { status: 503 }), + ]) { + await withFetch( + async () => response, + async () => { + await assert.rejects(requestDemoToken(new AbortController().signal), error => { + assert.ok(error instanceof Error) + assert.ok(!error.message.includes(token)) + return true + }) + } + ) + } +}) diff --git a/tests/tee-connection.test.ts b/tests/tee-connection.test.ts new file mode 100644 index 0000000..8d752fa --- /dev/null +++ b/tests/tee-connection.test.ts @@ -0,0 +1,157 @@ +import { test } from 'node:test' +import assert from 'node:assert/strict' +import { connect } from '../src/lib/tee-connection' + +const token = 'a'.repeat(64) +const origin = 'http://127.0.0.1:8010' +const signal = () => new AbortController().signal +const handshake = () => ({ + protocol_version: 1, + mode: 'local', + capabilities: ['face-image-check'], + expires_at: Math.floor(Date.now() / 1000) + 300, +}) +async function withFetch( + fake: (...args: Parameters) => ReturnType, + run: () => Promise +) { + const original = globalThis.fetch + globalThis.fetch = Object.assign(fake, { preconnect: original.preconnect }) + try { + await run() + } finally { + globalThis.fetch = original + } +} + +test('local handshake sends credential only in header and accepts a ready compatible response', async () => { + await withFetch( + async (url, init) => { + assert.equal(String(url), origin + '/v1/connect') + assert.equal(init?.method, 'POST') + assert.equal(new Headers(init?.headers).get('Authorization'), 'Bearer ' + token) + assert.equal(init?.redirect, 'error') + assert.equal(init?.credentials, 'omit') + assert.equal(init?.cache, 'no-store') + assert.ok(init?.signal) + assert.equal(init?.body, undefined) + return Response.json(handshake()) + }, + async () => { + const result = await connect(signal(), token, origin) + assert.equal(result.status, 'connected') + assert.ok(!JSON.stringify(result).includes(token)) + } + ) +}) + +test('forbidden and worker-unavailable responses never establish a connection', async () => { + for (const [status, expected] of [ + [403, 'forbidden'], + [503, 'unavailable'], + ] as const) { + await withFetch( + async () => new Response(null, { status }), + async () => { + assert.equal((await connect(signal(), token, origin)).status, expected) + } + ) + } +}) + +test('rejects remote destinations, URL credentials and malformed tokens before transmitting', async () => { + await withFetch( + async () => { + throw new Error('must not fetch') + }, + async () => { + for (const target of [ + 'https://example.com', + 'http://127.0.0.1.evil.test:8010', + 'http://user:secret@localhost:8010', + origin + '/path', + origin + '?token=bad', + ]) { + await assert.rejects(connect(signal(), token, target), /loopback/) + } + for (const value of ['short', token + '\r\n']) + assert.equal((await connect(signal(), value, origin)).status, 'forbidden') + } + ) +}) + +test('rejects unsupported, incomplete, expired and oversized success responses', async () => { + for (const data of [ + null, + {}, + { ...handshake(), protocol_version: 2 }, + { ...handshake(), mode: 'nitro' }, + { ...handshake(), capabilities: [] }, + { ...handshake(), expires_at: 1 }, + { ...handshake(), expires_at: Math.floor(Date.now() / 1000) + 3600 }, + { ...handshake(), padding: 'x'.repeat(5000) }, + ]) { + await withFetch( + async () => Response.json(data), + async () => { + await assert.rejects(connect(signal(), token, origin)) + } + ) + } + for (const response of [ + new Response('not JSON', { headers: { 'content-type': 'application/json' } }), + new Response('oops', { status: 500 }), + ]) { + await withFetch( + async () => response, + async () => { + await assert.rejects(connect(signal(), token, origin)) + } + ) + } +}) + +test('handles network errors without exposing their potentially sensitive message', async () => { + await withFetch( + async () => { + throw new Error(token) + }, + async () => { + await assert.rejects(connect(signal(), token, origin), error => { + assert.ok(error instanceof Error) + assert.ok(!error.message.includes(token)) + assert.match(error.message, /Cannot reach/) + return true + }) + } + ) +}) + +test('aborted connection does not send a request', async () => { + await withFetch( + async () => { + throw new Error('must not fetch') + }, + async () => { + const controller = new AbortController() + controller.abort() + await assert.rejects(connect(controller.signal, token, origin), { name: 'AbortError' }) + } + ) +}) + +test('without a provisioned token still posts and lets the host return forbidden', async () => { + await withFetch( + async (url, init) => { + assert.equal(String(url), origin + '/v1/connect') + assert.equal(init?.method, 'POST') + assert.equal(new Headers(init?.headers).has('Authorization'), false) + return new Response(null, { status: 403 }) + }, + async () => { + const result = await connect(signal(), '', origin) + assert.equal(result.status, 'forbidden') + assert.equal(result.httpStatus, 403) + } + ) +}) diff --git a/tests/walletkit.test.ts b/tests/walletkit.test.ts new file mode 100644 index 0000000..29a9e58 --- /dev/null +++ b/tests/walletkit.test.ts @@ -0,0 +1,105 @@ +import { test } from 'node:test' +import assert from 'node:assert/strict' +import { WalletKit } from '../src/lib/walletkit' +import type { WalletKit as PublishedWalletKit, CredentialStore } from '@worldcoin/walletkit-web' + +function fixture(actualSubject = '0x01') { + const freed: string[] = [] + const field = (name: string, hex: string) => ({ + toHexString: async () => hex, + free: () => freed.push(name), + }) + let writes = 0 + let failInit = false + let failSub = false + const credential = { + sub: async () => field('actual', actualSubject), + expiresAt: async () => BigInt(1000), + issuerSchemaId: async () => BigInt(11), + claimsHex: async () => ['score', 'matches', 'size'], + free: () => freed.push('credential'), + } + const response = { + toJson: async () => JSON.stringify({ responses: [{ issuer_schema_id: '11' }, { issuer_schema_id: '128' }] }), + free: () => freed.push('response'), + } + const authenticator = { + initStorage: async () => { + if (failInit) throw new Error('storage unavailable') + }, + computeCredentialSub: async () => { + if (failSub) throw new Error('subject unavailable') + return field('expected', '0x01') + }, + generateCredentialBlindingFactorRemote: async () => field('factor', '0x02'), + generateProof: async () => response, + free: () => freed.push('authenticator'), + } + const client = { + EmbeddedZkArtifacts: { new: async () => ({ free: () => freed.push('artifacts') }) }, + Authenticator: { initWithDefaults: async () => authenticator }, + Credential: { fromBytes: async () => credential }, + FieldElement: { tryFromHexString: async () => field('factor', '0x02') }, + ProofRequest: { fromJson: async () => ({ free: () => freed.push('request') }) }, + } as unknown as PublishedWalletKit + const store = { + storeCredential: async () => { + writes++ + return BigInt(7) + }, + fetchCredential: async () => credential, + } as unknown as CredentialStore + return { + wallet: new WalletKit(client, store, 'staging', 'us'), + freed, + writes: () => writes, + failInit: () => { + failInit = true + }, + failSub: () => { + failSub = true + }, + } +} + +test('published adapter refuses a different credential subject before writing and releases handles', async () => { + const f = fixture('0x03') + await f.wallet.initializeAuthenticator(new Uint8Array(32)) + await assert.rejects(f.wallet.storeCredential(new Uint8Array(), '0x02'), /subject does not match/) + assert.equal(f.writes(), 0) + for (const name of ['actual', 'expected', 'factor', 'credential']) assert.ok(f.freed.includes(name)) +}) + +test('published adapter stores a matching credential and returns its schema/id', async () => { + const f = fixture() + await f.wallet.initializeAuthenticator(new Uint8Array(32)) + assert.deepEqual(await f.wallet.storeCredential(new Uint8Array(), '0x02'), { + credentialId: BigInt(7), + issuerSchemaId: BigInt(11), + }) + assert.equal(f.writes(), 1) +}) + +test('failed vault initialization releases the authenticator and never marks the session ready', async () => { + const f = fixture() + f.failInit() + await assert.rejects(f.wallet.initializeAuthenticator(new Uint8Array(32)), /storage unavailable/) + assert.throws(() => f.wallet.listCredentials(), /Initialize the authenticator first/) + assert.deepEqual(f.freed, ['authenticator', 'artifacts']) +}) + +test('subject preparation releases the blinding factor when computation fails', async () => { + const f = fixture() + await f.wallet.initializeAuthenticator(new Uint8Array(32)) + f.failSub() + await assert.rejects(f.wallet.prepareCredential(BigInt(11)), /subject unavailable/) + assert.ok(f.freed.includes('factor')) +}) + +test('proof disclosure preserves only the selfie score and frees response/request/credential handles', async () => { + const f = fixture() + await f.wallet.initializeAuthenticator(new Uint8Array(32)) + const proof = JSON.parse(await f.wallet.generateProof('{}')) + assert.deepEqual(proof.responses, [{ issuer_schema_id: '11', claims: ['score'] }, { issuer_schema_id: '128' }]) + for (const name of ['response', 'request', 'credential']) assert.ok(f.freed.includes(name)) +}) diff --git a/tsconfig.json b/tsconfig.json index 7c8c878..4290997 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,16 +13,12 @@ "isolatedModules": true, "jsx": "react-jsx", "incremental": true, - "plugins": [ - { - "name": "next" - } - ], "paths": { "@/*": ["./src/*"], "@images/*": ["./public/images/*"] - } + }, + "types": ["vite/client", "bun"] }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", ".next/dev/types/**/*.ts"], - "exclude": ["node_modules"] + "include": ["src", "tests", "scripts", "vite.config.ts"], + "exclude": ["node_modules", "demo", "src/server/**/target"] } diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..5f805fa --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,23 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import { fileURLToPath, URL } from 'node:url' + +export default defineConfig({ + plugins: [react()], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + '@images': fileURLToPath(new URL('./public/images', import.meta.url)), + }, + }, + // Keep worker-relative asset URLs in the installed WalletKit package intact. + optimizeDeps: { exclude: ['@worldcoin/walletkit-web'] }, + worker: { format: 'es' }, + server: { + host: 'localhost', + port: 3100, + strictPort: true, + headers: { 'Referrer-Policy': 'no-referrer' }, + proxy: { '/api': { target: `http://127.0.0.1:${process.env.API_PORT || '3101'}`, changeOrigin: false } }, + }, +}) From e0780e84146658347fb528eaefa450b05ddd9dee Mon Sep 17 00:00:00 2001 From: Kartike Chawla Date: Wed, 14 Oct 2026 10:38:31 -0700 Subject: [PATCH 13/38] Isolate synthetic enrollment and organize browser test configuration --- .github/workflows/ci.yml | 2 +- apps/authenticator/src/App.tsx | 32 +- .../src/components/CameraPreview.tsx | 4 +- .../src/components/DeveloperPanel.tsx | 10 +- apps/authenticator/src/lib/selfie-issuance.ts | 82 - apps/authenticator/src/server/http.server.ts | 12 +- .../src/server/selfie-credential.server.ts | 57 - .../src/server/selfie-issuer.server.ts | 298 - apps/authenticator/src/wallet/persistence.ts | 12 - apps/authenticator/test/app.test.tsx | 22 +- apps/authenticator/test/http-server.test.ts | 15 +- config/authenticator-app-v0.ts | 32 +- eslint.config.mjs | 11 + package.json | 11 +- .../face-enrollment-helper/Cargo.lock | 9727 ----------------- .../face-enrollment-helper/Cargo.toml | 21 - .../face-enrollment-helper/build-config.toml | 7 - .../face-enrollment-helper/src/main.rs | 144 - .../e2e/playwright.config.ts | 13 +- tsconfig.tools.json | 2 +- vite.config.ts | 2 + 21 files changed, 54 insertions(+), 10462 deletions(-) delete mode 100644 apps/authenticator/src/lib/selfie-issuance.ts delete mode 100644 apps/authenticator/src/server/selfie-credential.server.ts delete mode 100644 apps/authenticator/src/server/selfie-issuer.server.ts delete mode 100644 services/staging-issuance/face-enrollment-helper/Cargo.lock delete mode 100644 services/staging-issuance/face-enrollment-helper/Cargo.toml delete mode 100644 services/staging-issuance/face-enrollment-helper/build-config.toml delete mode 100644 services/staging-issuance/face-enrollment-helper/src/main.rs rename playwright.integration.config.ts => tests/e2e/playwright.config.ts (74%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c1a1047..2e1a52d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,4 +42,4 @@ jobs: run: bunx playwright install --with-deps chromium webkit - name: Browser regression tests - run: bunx playwright test -c playwright.integration.config.ts + run: bunx playwright test -c tests/e2e/playwright.config.ts diff --git a/apps/authenticator/src/App.tsx b/apps/authenticator/src/App.tsx index 46a8907..b1d155b 100644 --- a/apps/authenticator/src/App.tsx +++ b/apps/authenticator/src/App.tsx @@ -5,12 +5,11 @@ import { openAuthenticator } from "./wallet/session"; import { walletOpenErrorMessage } from "./wallet/errors"; import { abortable } from "./lib/async"; import type { WalletKit, CredentialMetadata } from "./lib/walletkit"; -import { issueSelfieCredential } from "./lib/selfie-issuance"; import { loadIncomingRequest, type IncomingRequest } from "./lib/requests/incoming-request"; import { credentialAvailability, credentialRequirementsLabel } from "./lib/requests/proof-request"; import { createProof } from "./lib/requests/prove"; -const defaults = { open: openAuthenticator, load: loadIncomingRequest, issue: issueSelfieCredential, prove: createProof }; +const defaults = { open: openAuthenticator, load: loadIncomingRequest, prove: createProof }; type Screen = "review" | "enroll" | "delivery" | "done" | "cancelled"; export function AuthenticatorAppV1({ services = defaults }: { services?: typeof defaults }) { @@ -23,8 +22,6 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof const [progress, setProgress] = useState(""); const [error, setError] = useState(null); const [loadFailed, setLoadFailed] = useState(false); - const [canIssue, setCanIssue] = useState(false); - const [configurationError, setConfigurationError] = useState(false); const [preview, setPreview] = useState(false); const [expired, setExpired] = useState(false); const [devMode, setDevMode] = useState(false); @@ -39,13 +36,6 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof const url = new URL(source.current); // Keep the response capability in memory; remove the bridge key from browser history immediately. if (url.searchParams.has("k")) window.history.replaceState(null, "", window.location.pathname); - void fetch("/api/capabilities", { signal: AbortSignal.any([controller.signal, AbortSignal.timeout(10_000)]), cache: "no-store" }) - .then(async response => { - if (!response.ok) throw new Error("Configuration unavailable"); - const value = await response.json() as { environment?: unknown; syntheticSelfieIssuance?: unknown }; - if (value.environment !== "staging" || typeof value.syntheticSelfieIssuance !== "boolean") throw new Error("Invalid configuration"); - if (!controller.signal.aborted) setCanIssue(value.syntheticSelfieIssuance); - }).catch(() => { if (!controller.signal.aborted) setConfigurationError(true); }); void services.load(source.current, controller.signal, setProgress).then(request => { if (!controller.signal.aborted) { setIncoming(request); setLoading(false); setProgress(""); } }).catch(cause => { @@ -114,19 +104,6 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof setProgress("Wallet unlocked."); }); - const issue = () => run(async signal => { - if (!wallet || !canIssue || !supported || (incoming && !availability?.canEnrollSelfie)) return; - setPreview(false); - try { await services.issue(wallet, signal, setProgress); } - catch (cause) { - closeWallet(); - throw new Error(cause instanceof Error ? cause.message : "Issuance failed. Unlock and retry to resume the same operation.", { cause }); - } - await refresh(wallet, signal); - setScreen("review"); - setProgress("Selfie credential stored in your encrypted wallet."); - }); - async function deliver(signal: AbortSignal) { if (!incoming || !retainedProof.current) return; setProgress("Encrypting and sending your proof…"); @@ -204,9 +181,7 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof : availability.requiresOrb ? "This request needs an eligible Orb credential. Orb enrollment and transfer are not available here." : "Your wallet does not meet the requested credential and date requirements."}

      } } - {screen === "enroll" &&

      This local flow issues a real staging credential using synthetic face data. Camera preview is optional; face verification and TEE issuance are not connected yet.

      } - {configurationError &&

      Issuance configuration is unavailable. Reload to retry; request verification can still continue.

      } - {screen === "enroll" && !canIssue &&

      Staging enrollment is available only when running this authenticator locally.

      } + {screen === "enroll" &&

      Selfie Check enrollment is not available in this app yet. You can preview camera positioning, but it will not issue a credential.

      } {!wallet && supported && !loading && !finished && screen !== "delivery" &&

      New wallets register an account on staging. Your passkey also unlocks encrypted credential storage on this browser.

      }
      {progress && !finished &&

      {progress}

      } @@ -218,7 +193,6 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof {wallet && screen === "review" && incoming && supported && } {wallet && screen === "review" && supported && (incoming ? availability?.canEnrollSelfie : !hasSelfie) && } {wallet && screen === "enroll" && supported && <> - } @@ -230,7 +204,7 @@ export function AuthenticatorAppV1({ services = defaults }: { services?: typeof {(finished || loadFailed) && Open authenticator}
      - {devMode && void refreshVault()} onDelete={id => void deleteCredential(id)} />} + {devMode && void refreshVault()} onDelete={id => void deleteCredential(id)} />}
      ; } diff --git a/apps/authenticator/src/components/CameraPreview.tsx b/apps/authenticator/src/components/CameraPreview.tsx index b32ff49..ebb370b 100644 --- a/apps/authenticator/src/components/CameraPreview.tsx +++ b/apps/authenticator/src/components/CameraPreview.tsx @@ -2,7 +2,7 @@ import { useEffect, useRef, useState } from "react"; import { startFaceDetector } from "../face/face-detector"; import { faceGuidance } from "../face/rgbnet"; -/** Local framing guidance only. No camera data enters synthetic staging issuance. */ +/** Local framing guidance only. No camera data is submitted for enrollment. */ export function CameraPreview() { const video = useRef(null); const [message, setMessage] = useState("Starting your camera…"); @@ -60,6 +60,6 @@ export function CameraPreview() {

    W37PyqDD)%ogpxYvQ3sfA!0{E$>7`;>$Nv)5K+ zT8u|tm+vwPqyK98#_{AxvbADCua0b9hhC7aM*ta*)=x9Fke zKkF-@9d}hIY&3yNEW9_ z!1Ok|n%+jl0qu5g}g0bhvS@`*IV zZ(vipk#&uYe7kIA=^(t0zaFT?s6?O11Dp%4;vsatt-t>VciFxk{|r<|h2(T~J70}H z$Mdwl%0AQ%els@8=)n>n5U`Mi@DpInWVl_eBwgcc(}Co$J&5*^n#x#B;-1ps?q`Og zQZIa+drnM(lfB(Z)?F+St_<6Wz6$TfT$;NxtKwrQTwIS@`P!>}&==P>w7{-|Da=z) zkNz>*i51o6T3RC`zem^MU7#WyL0#Nk-y*tDnanM6?bS*%>gi_t7he@p1Qs&y^Nh@r zNRs^_o0b%n0y0GpP*+YP2WUL~z_h2scQ_Ck$bMlw)AKwogwnyQe{5khA+&}%W0{MQv3ive*^EJR$ z_)P0B^duEXSK+GKDo|F`@NMCi7^b}yPWfiS-y|FrwG;z8Xmi_Hd<*%sg75$x95aqK0uuweXtnq;I2^R5pK)WW3(thLH`k>h62_-m=h8f@ z(fST;!FPRq#d+wcVT>5TDucGl&j?QWhPn#*Y_qM&frGfXw-^`YuOB}bjTIKbjY3!K z!^sx5(IgASB)S`y_N|BsqcPledY5}=E)P?+{h%Ic#f1lUDv;!*7nF9O0yK@$Fo0<& z{}jws2MT-A+KUB1{kWkOyrv7FsJa9XU^U}0QDNDrJH&X^fk%=!Ex(lMKBL4ak@7cK zKWmKKA3ak($JtS3aX5Viw&I!emj8uNnv5`ewJO*R_n2prMXZh=q}~=Qlbya-WW1U! z1}OArYHsF>Brj+N`3H9X$^gE1)Mdau5Oux*R7nck9QRB>1+<|RikaC;;x9K@Rqzp^?n{K-+ zu29O!$huGMf~&H`kcsS8_)8wZb%U93AI@F-6kXF^aF=+E&eQ(oznHx+M&mO@t~6c% z*9VxwlRpC6L(vt6*NBhFAXt}x&BM7kKAhyhA+bT*#C5fmY~dT64DB4#SAd@=k}RW{ zV4k)#z6PzN&1BBsWKagaRSN)nz@4XE$z+SC4=xLP){ufBwsD~Nv*}tW@pMPVHSX-uj?%-NLxir^^^c_wAz_R~^K%EJGNqXd^y%r;4_c3h%*Vj7+ZP;8gO7=|;`~ynq%M3Tr zDSUMKBjq)H?Kuka>j%}Q*(Iztp^!OO@$${E$54sHfRT*Z(OFw0HzH?XAMhTPBHuC( z`7iTYU^;GWUV_%*sz`vFvhIlwXgn^dS=XMV1$3wOlVxy3xx!iAO9w&1SG`>s@hj0f z-O`Nd)=l)CXs6xMreG&5z)#1etvQkiS`Uq?Jsk8 z+?6yBxaD5BGHM?48s!s`U^&ky{0NjvHuAYR3^GHn_qco-C}@fS4@j;!Ui+$i z^QL(T_bhXS=eqq0RV{6VY7~+wa5|Vse0&^jDwg4odz$is);sgQa!5TW_n|KGS}O)D zVi?y`Iii-}zLRa@aauOLy0V$EO0IEV)0n%3bVc*TtETqiXv;8}TJ@;6SO@Vm3%)nm z)jIGYb3@EDM%tp$b##@qA)jq~IWMXUW0?!Gy67ci07sU20U3ezFon`$aV0neM{It8 zYT9aSa+7VPuVS8z;J>PsBV2Seou$ta>she#_{-3I*JW>{c&nrJ$SCWT}Iki$X zp$uh>T#m~X+7YJ3LZf^=?K`>Mv6aD0w3zgWN>c0jM#~M+3n9^d#r;WZTKO25Dg@9p zkRK~xO-2j;5;`qj21%A_=F+$y{!WYH^I4rMo`o0C2eBu+TMDGi6aOf?GX~HKegjxy zi{NaQ<9N4t&Xp=mHWGI+Yb*Q^Y1{}S1-zfuVvsLdN@5DrL#HkWLTMP6zh=;Z#VS;7#ujeXf9^~6guckms_ZV>cG-^ zE%7=jO)~M2>}l!q`R*`GH`_8%yhIqUvb5NcyfD?!2wv^Cla{8^QhQ~rQbicS-v*Dw zvzEO~?=5RKd8R7`m9|=iY3Tpt!%aJFGue(e=pEx$w+rSYhroeERwDI-fq zkG+YITuttYuNxieUV7gU#^61DL3isb&{2Wl7TAGzkx%p{`hm)d{lPai7S~j}(OI5j z>I8V5Wf)SWn)r)--ZA)%_YE!uI*`|LMG43UT(iUi`Y3aA=4*lI6Y3@wWT`SX97C3| zPOC4>R0e}Ab6HO-(udFTul1+G2wz*V2bT(?`9E?U%_6-=|H>m!7T=HkZ)Ro~*N*09 z$7U|U8jE5<8chvY=i%olVq*+CVS0du&>ytE^+oBrwx6<}yNM2ykLkMj*}sM7V%q~s zI{Tk8r|M@em7ghhL|t(!>Jy(rBUlO#iA`COV*_JVnrirAEDm&Sk!yu;UwA6MhCA^m zP$$FfU#MO4x#28Nobp(>!~Ccwyfu(jHo|20T~>pEA)vo^5SmL~C=v8;6lGl~2g!6e z$54@*tqAg9a+YP9mgBG6Lg2h*lC2N?>>4UWNnc`u=7L;rFocUy{=>uMG0Jc*9eg7N zTz$y!jD}2Y-;P$+&kBDD4PwiS4)4&&8+;FtN|(_@A>MOWE`p8)US};tUXaUX7KKSZ zxX=GW+~(OTbO6zMSJ^@S_00!6#SQ90Q>Iwmc7i-6AoC|2MT*jV zp0}7h-#9REG0@o*5@wK(ww<^&%tNnfH=o8gRx;Fv9;dA#xP-=7|3+g2vL>JkWCSh?&s(!eL+!0NhjC&`aznjGv_)|} za5AZ>71dbYJnrK&N{b@*#82bKvCplPR8`onbwM4ogP@&~Uwf~NcDDk9XFG&q$}(X>za zWFI7EvGjxLbW7_5s7JV|^3BV6C(Jl6a6d!~Oh?Y&WqLl-9ZsH-DR6VO8Tu z^@7|MSM}KGNR(sgs_iH{1~0d`w8oi-80r5WS%!L|Vjx0Y7Ga|WrH^VO?oeP9>)B0O zK^eyMvX6?6qQikxo@I^ZKJlBywxZx~<5k6i(qsSMfx~n-Y6PdHPgTFF9b%4yYUD6{ zf>vAJlBEcWKZTX1Ww?xge86Q$-@H#gVZ93=EsKU}1>hHG)4B;UrUOjzy%0Bm#pJbG zN%|EvlXC&1nQ7yMi|DqwE8oR7LHP&mUSE}_k?vM2V;t;JCxh+&leje8;btj`{2)+D z>5Kmoq40noN`|p2=WkbE%L@9*RzYgQ|F(Tv+m)<^Y#Yg3qPJ)wxf*j4UkDh%V0E!C zNh>B2_`%af8yDzEcfyGQi|09Kg{$K-X%YRJFoS=f9Koa2333qmZAVq3R7_|9F2JeC zFQ#bS1*fl=&#W({J+%l^0r@K_2Sj*UZb&Q^YjiDdx_^oxh6W9(95U~--Q@4mY4A4M zPA(|LeBu0jHxGxs6K*`=)arjN=ouF1NZj%)HtBkSio1-y-DIA; zMK*9d_^o(V)~Ucm#V1tf3kro%S1_1MQkS3x{-dUu%6{-4ea)4j>DpNBFELUb8lOT> zc*nrcke~-l^OX-a^m3gS4SEzFObl4MoSZo|6aR^X_$ z4LF4y7MS_fxCX zY$cx9~QTYD93!#snq}TfpM`aY7wJ%VT^yKxkxO0T2{dNi z*mheYqZ{-G_r*%Eq_?Gbbu*z7lvP3}_QIUay^vfKI(j^s9rBYe?vyf(wS zQeC3-Fn`ewXeRg`7eHzLvz`HeFv_F<;ZD!rdTAqEK4gXh}-hZkwq}cH;OM1_E{?7 zbL5j{fWN0)%zr^_MkDpgbT5s76ilF7Kqp@<+eNU6vkJ0(ziI;6#uwHDQQ5F25=l4H z2&TtqsBJM+g!#yJxR|+F3#!`#4QN`*0C1L@X#dSsAvfr0GKM@7!axhUU2U!H(elJM zfnrhhvTw^}aJ6+UfX&jJY-Q*73pVdw4r0XV_7Cbi{0?W+&6LhC72zs8AbKHFZS6t- zD7hfbU_&bTWS$2`k@Eaim=A102i3NLqqb&3Gz|rYc`v~c_JeXM{*%^PZKP^sXLOKm zkkuHE(E(PmEW(|9Zr~%j3eJJXs?%7I>AW{1iOmcIZV8E_KS?;q06+YX$PS!MbRU=30Z z9!Rar=H*`n4_;v&0#sJ>V4pv`kZH8g0^IRmvK9(7(<%ib`CTkk<=Doz*~yGzQD8$1 z?w8)0zbZe_ZiSyzv#1|a<7+q(jiQI=C8m|r@*)QN?V?XJfrXITSK(*cxC(JNm8G%0 z(Z)i~ctj|RE646r4%mKE&U#1fL5^8>iv_&Jxs~cQ?uyuerijZpYU{^MGL1I1(8d8S zdMxXLM*6oQkGE1bq$TuUw3aX@wlM$1yM>R(uLDcDGwNsX7u)dM^>z2n5#G>r+69j@ zf95X2!M^3R7rex}h@v=bb0yazdb|7)ypV18+nAogj$}9dh981o_>gZKcrSeS)+U7O z$9~^BUS>T?n)+KSJ3XUOY1>qM1&!j@roIrPVLsO&?-<5r>}oCnyeO{x4r_}0hPn~d z6pw>la5!8-s^a%r5#e7(ByU7zdoH)k_*w~(Mis+a4-W|r@i zW}c1q3~~+L=gQmSY%@KpEDZpZ7l4~^nzgU!=D$Oh-6*6mO>QmA_{@g%pthZqmT#4H zpgmk&yo1#*kGZvUpHjc9;vRz4N*}bktRpR`Yw&7%dvPtjnH^?7L0?+^!Wpij-k2n& zcN1g4FtneMHN8SHcqp?0Yz$}62e2IV`SO!qq)OluudAa_KQa|OVcq{WZ5M5UZTP$p z2TF0{_yWkKzEhm&kvP|P!q*zrB!7c4AP)4U?X@AsVW@?AMogfi`Ri6gtcS}?YVLiSr?=|PM zhv`$a3$_-9c;T|P(RIu=Ui)C@#8)KQI+Uj1g|sS(Amg)pnOJ>_aUv*o4&<4#&mC!KdzU@5e%S&utb(8H_OQTF~qkRE7O6n?oiJTQ<^}||X ze!Rr@85GCsF)KK6OYDOMv=>Y@@(^_3-_vv6C?UTb%Vz6w{QmL}ZDxhAO;8u|3Q+a4 zcononXJBV?9+gycjSe&rzdZ${(Ejt7S<-hG zp(u$`SIfWfV(TZ^7z|S@8egJp^DBi{%j13N1z;Cjo>IYF3wBbfa*xOtcuqY_3W@P# z0?ntUt8bNYq&MA1-2xD8z9V7On@^<2*#WG#N^p; zimTBrdAjcqdK7yDEjHg)H^%9(n37M>z%z9wZxuLme|kxszzF)X(INJwwfzcFJqfIr z&J2r>txvuR&%C$oep;F=!D+%OailkeZiJITTSf;gp-nVap(oJ<)LbaFxrb$?FjB~Z zE%0fv720lPN<}sq{6(W}ozXI;nrXy%m#>&3q@o_H4az!hABpZn7lprZ7Pv}J_-keF z!c#yUbX@Dfopv>&netLl2}dahgi^*vLW($2oQqq+XUb+vB4|w7T8kJiz$~0cRN-XS z3$7FhSDO2pyY|60?rak7UBQ>7%W+vDTkIWW$!^Lz?w6)rAQdO3Y$SZ(oV_W~nf85{ z=NC@L4Zw7epq^u-?g}(YKkT~>Zi>^WY<^_>1Qt_vODLz6XCRK)yxq`0X|t6ymcW~9 z8)Dz=Enz+2R?%-$hJUwzB(ZaqQE_cJG4m|{f$fNj;C<+a@d!9hvq5iYC)*<5aW&vX zc7|EVe6mtq0JfuO_L+uIWq1^ol_tT@wmO1=byojT?CQ?Z(5tg$Wr zt!eO^Cke*6uM%YGJI{kU7^2OK{b|afjE;PG*$MIslNDT)Q%Db{2?VTCb|6jIri=ks zV;DU`T}MaTEMggaL$rdMYHolL4?HyXJUvM3A_Cf(4{uXzPrk@ffB$Gx!E4}C%CnldESaQ@X6HdzzzRC!4rHc0BP$%8CPwCS$RI#)(j==< zD4em#(+w8I=eXZ&&-ljkS9~y{7MYnnaN|+siqV5o`9E+v%FkE|gCokolJdOlm!J>5 zLl5{Dar@IRV+lNAWWV|7FiUr-YCA5sq>=JNlR(*(aIB6Oj3FEyIT#?e# zA_caSSGXts!n&(}vKuQh91Gj?z0h;GN4({&jMLa|b30!Y$zC2+RIRS1e06OEbZT$C z9%j*diXK}3vFAi;+B3eOY5+W=@|%V0U;yn#-0UeHjY45m^h&f4YJGJ7< z7k7X26R;Q+M+Sch+Rm@J6SbA(?&3#*$^273o$HDVNM=`ixRu>*6>Uq*y7n|)hN-ms z`j3{Q_S*bW%N(%~2$w|u1iv-@6AhTJ_#Vh%`ekCsm<(2Dec}FLjQ@>_6Pz%f+mOb! zKq1>En&fx!&$RZgDVBT@(A5@)d*)yqFd7c4j4QoJFUf#O?CiJ>^ z7k^IQK}*xG?50V?nPP407WkO{WBJMP*h_v}G6PjM98i|Q($Z(pR47PeK?I5{UmuT9 z8=)_Te5eoija$l{j*pi{`)8srzQwR8a??NjNz+g0jlPe|;tI4htM+S?H()>8UoG)% zAwz80a8;a3dL^W>M4`3#i~A5ii9J)h#K}Mw-=O1` z=E@$eGN=uX!8z(?{}p}w{Diu-DuRm-(?76G-U{fkR)NIm zPM3nV2+O!r;0<$HP6Cmh*%7McnRNnFK@?Vpiur^_hV#lA`$zY`U>?f>YwYoB|D~_Q zgT%H%GWrNxfyuB7w}xh-OnYJ09UiuR5%bZ3zzmMZv=J_7(Y|DVC-tGaU--b4Hh)V7SzM%{2hf zG}VbJ>)#EZGZSbD+?tU^r>D<`g91NsZxSsPhQG*7G+=W+vO#lz;*t)-v;Rfc#ATqP zd_&&FvUcRGH19Hc81A&?s-3vo>Nln(>S}o!_$v^D=T^9sb(I2-Ur59UQ4O)3rJa_- zI;>_iPYs$b82fo;r3b660rat6AX1&G_66nC?_?`pPtVgQ71}F@dDY$;mV!l;SJ;Af zlYEvV%#Z#T>H$8`Nu@bdj$E*x1P}3N?&VnD6@pM1D z0>_k3PkV3fi86&)OCoal8?dS(Ef9ulkSOhuxL;O@ab(~K z*vNGhce>ipy5fe75lRfXV)?&v2!L*;%F+~ApBx1xiY3$k(kG>y=h4pn$Zf5()S8&R8~K6pvi zQML=$cEUt3&CV2yk!O`{U_HGGXQK|;E7{rHM-0Lp^pd@f&4x$9KTJI`pXRyh;-Sdo z`Y86N9e9e)Wf!3x{l%q9_!_dp6M-49fw8*MI#AdB+OjxMl(e_hkW+z!UW6Sv0nNbo z8PD&rc84>9hTK^i9T(?gu0gRS?5B2D9@?HNlNcpEMn26|P)7Lfl4|y9B1H+pBu^N5 zPWuSsP)&3dQCLoD8e`LY`4*#+Xs7q6?Y?-9sOl!Ak&qBmllDaY@KXAORp7l*yU1#8 zG3z+DNSm`F2b2*v!Gmx?_D_1!4`@@N7s)RWki21jRCN%B!$~{KLNr-p34{P=KjBPx zAC_VU+E(zk*m7&lcm=nDJzFMsA@4$PnPY^uKp0%DKC{p`>e5VVqQ zo(Bl8(0&kf?N=l-coLHJ>a^{dF~Es)u>e@$9Rx0&j*o7 z`U_Tu8`W3bP4X5rg8;7#|78Cc|CW1zFUlUJF82rhB;5;2+HsHrpVE64DBR%JnJpPJ zl|-ct(`pp91we6IVK(*cMn4BCWS5bz@g{wszX%@dsS3xjcjA8(odrV`O&`TA>;O~* zC2s8AyD>A@uE*}j!tUp8ytiC(i$O&N)Yq zXm$OA@l3GTnTiH$3&9++3H>9!*N?(-j4&?+Sf*lnVQ7d0wEIdu*bwZDiewB+68flz z;;@W*<|eq|ER2JgfR%1Ps_)DZ5^C=?^Y>x9?>W}Q~yQpjyr2*8OEK1F`FAKC23&N|~L|nDp9K0Nli>o9Q zpf}MfV~-_{DMFp`d-~2y5*_9^RKr~#ZIcEvuhWa9{;;dk99GrZJAkhu`b6J}k~qy? zkG6BxbV_uvbW6AZ)9?TWTD+2bGB4Ug>8F$gt_iD9PqQJ$ET|$#P{wI*jec}7sEbulk$y&(=ziEj%9bxMeJTsC z78fWLY#qe5)~%qQJWYBfzR(6UuCo|ZMLP(p)?Ep=_Yh)n6=}cRUt>8}+;whDawYld z|1)p+skDaa3mEj2{2u&;9DJbHVAl6%7;mvs-x?$L)X-_Lx31r^>JO{l*wHUo6B{s|)0K z@!fn&cmThoX53nEA48*>w+u-_Pw6}96P}@UV)<$7E|MbsCEAbNYIJKl}m%AxSGU_RHl9FI1Ip+9e*(A?p6Qhg% z@4{9RFSYbd(UbTZxCgCn`yx?sdb!*Xre>hdbcj9+p9{?J>u6*^2GNYCDo=dD_#rnMKWnr?Wn8ezgvqfD@uvYch zB2+>X$qIB8PNrYwo7#my4am!%@i5w*wNI^*Mj55`pSTrn4HWvs%9EX>luQC#spc7L zVJ3({2-=|)PcF3)Or^79hh>bz52UGLB{TpI(w@N^s2fVZER4QGOA&`V!! z?2w)~1{?d)+pt{HQ#~iz$48)Ma5JspJtcRfV`GkrH@Nct=V*b$i+^f)l{3y;Xq5Cr zdJm@J>WqUr#pXHPzyNsH+S}h;pUCb)v1||f?H>){++LbwnEp zA)N>^DjOY@LH=!0Ay*q%-Ik>|$Y^H(bdk~Lw7_RX7txQZ!BG9 z8%tlJ1A1NYAnl-^(8maIsDXGPwWlMAwv!UMA7Hy2&q9&=!~e)%YmT4@Zc>~a41_xp z;Yjh1c3KY;<}wg>U^9s z#r}*I35K)z;Bk2o{RB`(BX4i>HZI0xQQbNP&C^za>&jjoN!f^^|&J~0QVPid?_}&bG1wmeDFIxl7fLnnCzxa2gRf=59&JTkv z-O+wyE}TREMe$lX`7YjJ`7`S?rtp=>ZIX)SN{!4}iZ|WjDlY|%%5Ky44vd0V@J&@E zHR-?J0cm>}o!?*A!9+(z-$+=_Tx!ICBD5_G�*{Axj;D%`R{#>ILp_>D+R?7amKx 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

    31-QfCMgK?$y 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�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π~iKK9`6#4_7w>266UgTiab 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

    + return

    +

    World ID · Staging

    +
    + +
    +

    {title}

    + {screen === "done" &&

    Your proof reached the bridge. The requesting app verifies it.

    } + {screen === "cancelled" &&

    No proof was sent. You can return to the requesting app.

    } + {!incoming && !loading && !loadFailed && !finished &&

    Open a request from your app, or unlock your wallet to manage your credentials.

    } + {incoming && !finished &&
    +

    Requesting RP
    {incoming.label}

    +

    Action
    {incoming.actionLabel || "No action label"}

    +

    Accepted credentials
    {credentialRequirementsLabel(incoming.proof)}

    +

    RP signature checked against the staging registry. Your passkey and secret keys stay in your wallet.

    + {incoming.proof.proof_requests.some(item => item.issuer_schema_id === 11) &&

    A Selfie Check proof also shares the credential’s uniqueness score.

    } +
    } + {incoming?.unsupportedReason &&

    {incoming.unsupportedReason}

    } + {expired && !finished &&

    This request expired. Start a new request at the requesting app.

    } + {wallet && screen === "review" &&
    +

    {records.length ? `${records.length} credential${records.length === 1 ? "" : "s"} in your encrypted wallet.` : "No credentials in your encrypted wallet yet."}

    + {availability && !availability.satisfied &&

    {availability.canEnrollSelfie + ? availability.needsSelfieEnrollment ? "This request needs Selfie Check." : "Choose Selfie Check, or use another accepted credential from the requesting app." + : availability.requiresOrb ? "This request needs an eligible Orb credential. Orb enrollment and transfer are not available here." + : "Your wallet does not meet the requested credential and date requirements."}

    } +
    } + {screen === "enroll" &&

    This local flow issues a real staging credential using synthetic face data. Camera preview is optional; face verification and TEE issuance are not connected yet.

    } + {configurationError &&

    Issuance configuration is unavailable. Reload to retry; request verification can still continue.

    } + {screen === "enroll" && !canIssue &&

    Staging enrollment is available only when running this authenticator locally.

    } + {!wallet && supported && !loading && !finished && screen !== "delivery" &&

    New wallets register an account on staging. Your passkey also unlocks encrypted credential storage on this browser.

    } +
    + {preview && screen === "enroll" && } + {progress && !finished &&

    {progress}

    } + {error &&

    {error}

    } +
    +
    + {!loading && !finished && screen !== "delivery" && <> + {!wallet && supported && } + {wallet && screen === "review" && incoming && supported && } + {wallet && screen === "review" && supported && (incoming ? availability?.canEnrollSelfie : !hasSelfie) && } + {wallet && screen === "enroll" && supported && <> + + + + } + {incoming && } + {wallet && !incoming && screen === "review" && } + } + {screen === "delivery" && } + {finished && incoming?.returnUrl && Return to requesting app} + {(finished || loadFailed) && Open authenticator} +
    +

W37PyqDD)%ogpxYvQ3sfA!0{E$>7`;>$Nv)5K+ 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�*{Axj;D%`R{#>ILp_>D+R?7amKx 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

31-QfCMgK?$y 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�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π~iKK9`6#4_7w>266UgTiab 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