diff --git a/.claude/launch.json b/.claude/launch.json index 69fd6d8a..23d0fc91 100644 --- a/.claude/launch.json +++ b/.claude/launch.json @@ -42,7 +42,7 @@ "runtimeExecutable": "bash", "runtimeArgs": [ "-c", - "cd /Users/architsharma/guardrails/.claude/worktrees/gap-analysis-failure-modes-2a3ba9/dashboard && AGENTFOX_API_URL=http://127.0.0.1:8081 NOMETRIA_API_URL=http://127.0.0.1:8081 NEXT_DIST_DIR=.next-dev PORT=3001 npm run dev -- -p 3001" + "cd /Users/architsharma/guardrails/.claude/worktrees/gap-analysis-failure-modes-2a3ba9/dashboard && AGENTFOX_API_URL=http://127.0.0.1:8081 NEXT_DIST_DIR=.next-dev PORT=3001 npm run dev -- -p 3001" ], "port": 3001 } diff --git a/.gitignore b/.gitignore index 53d43ed2..6769043f 100644 --- a/.gitignore +++ b/.gitignore @@ -19,9 +19,6 @@ dashboard/.npm-cache/ **/.env **/.env.* !**/.env.example -# Written by `agentfox init` when run from the repo root without an explicit -# --path — a local dev convenience file, not a repo artifact. -/nometria.toml # Business, go-to-market and competitor material that must not reach a public # repository: drafted grant and RFP packages, launch screenshots, post copy, a diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 99f8f1f9..59712ab9 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -309,10 +309,7 @@ URL a user typed (a spec, an MCP server, a probe target) goes through `core/outb not open a database or import a client library. **Settings names.** `AGENTFOX_*` settings, `agentfox.toml` / `[agentfox]` and `X-AgentFox-*` -headers are the only names written or documented. The pre-rename `NOMETRIA_*`, `nometria.toml` -/ `[nometria]` and `x-nometria-*` are still *read*, at lower precedence and with a startup -deprecation warning (`core/config.py`, `core/headers.py`), until the deployments that set -them are renamed (`docs/deployment/vercel-env-rename.md`). +headers are the only names read or written. **Published numbers are bound.** [`benchmarks/claims.yaml`](benchmarks/claims.yaml) binds each quoted figure (in this README, `benchmarks/`, `docs/`, website pages) to the result file it diff --git a/CHANGELOG.md b/CHANGELOG.md index 405b6102..0fa40832 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,10 +31,9 @@ the file it came from. `system_scope`. `chain.verify` accepts one key or several. - The `verify_chain.py` in evidence packages accepts several comma-separated keys in `AGENTFOX_AUDIT_KEY`, for a chain that spans a rotation. -- One-time migration bridge (this release only): when both `AGENTFOX_` and - `NOMETRIA_` are set and differ for `TOKEN_ENCRYPTION_KEY` or - `AUDIT_SIGNING_KEY`, the `NOMETRIA_` value is used as the previous key. See - docs/deployment/vercel-env-rename.md. +- One-time migration bridge: when both `AGENTFOX_` and `NOMETRIA_` were set + and differed for `TOKEN_ENCRYPTION_KEY` or `AUDIT_SIGNING_KEY`, the `NOMETRIA_` value + was used as the previous key. Removed again by rename stage B (below). - **Capability packs.** A business use case or framework is one directory with a `pack.yaml` (id, version, maturity, owners, compliance mappings, vocabulary) and its @@ -57,7 +56,31 @@ the file it came from. ### Removed -- The `nometria` Python package shim and the `nometria` console script. Import from `agentfox` (e.g. `agentfox.frameworks.langgraph`) and run `agentfox`. The `NOMETRIA_*` environment variables, `nometria.toml` and `x-nometria-*` headers are still read. +- The `nometria` Python package shim and the `nometria` console script. Import from `agentfox` (e.g. `agentfox.frameworks.langgraph`) and run `agentfox`. +- **The last of the Nometria names (rename stage B). Breaking.** The `NOMETRIA_*` + environment fallback (settings, `NOMETRIA_CONFIG`, the CLI's `NOMETRIA_API_URL` / + `NOMETRIA_API_TOKEN` / `NOMETRIA_USER`, `NOMETRIA_AGENT`, `NOMETRIA_MCP_LOG_LEVEL`, the + evidence package's `NOMETRIA_AUDIT_KEY`, the dashboard's `NOMETRIA_*`, the demos' + `NOMETRIA_DEMO_MODEL` and `NOMETRIA_DATABASE_*`), the `nometria.toml` / `[nometria]` + config file, acceptance of `x-nometria-*` request headers, the `legacy names` doctor + line and the one-time `NOMETRIA_` key bridge are gone. Only `AGENTFOX_*`, + `agentfox.toml` / `[agentfox]` and `X-AgentFox-*` are read; an old name is ignored + without a warning. Key rotation (`*_PREVIOUS`) stays. +- **Breaking:** the dashboard session cookie is `agentfox_session` (was + `nometria_session`). Everyone is signed out once and signs in again. +- **Breaking:** the LangGraph governance state key is `__agentfox__` (was + `__nometria__`). Declare `__agentfox__` in your state schema. Graph state checkpointed + before the upgrade keeps its governance state under the old key, where it is no + longer read: an in-flight thread resumed across the upgrade starts a new trace. +- **Breaking:** OPA policy documents are pushed as `agentfox_` (were + `nometria_`). An OPA sidecar that kept documents pushed by an older version + holds both under the same package; restart it (pushed policies are in memory) or + `DELETE /v1/policies/nometria_` for each. +- The secrets detector's entity for AgentFox API and agent keys (`nom_api_…`, + `nom_agt_…`) is `SECRET.AGENTFOX_KEY` (was `SECRET.NOMETRIA_KEY`). The `SECRET.*` + policy rules match it unchanged; a rule naming the old entity must be updated. The + key prefixes themselves are unchanged, so issued keys keep working and keep being + detected. - The hidden pre-consolidation CLI names. `agentfox --help` shows thirteen verbs, and the old top-level names had kept running, hidden, with a "now called" hint. They no @@ -116,7 +139,7 @@ the file it came from. variable. `render.yaml`, `deploy/`, the docs and the plugins use only the new names. The self-host blueprint now prompts for `AGENTFOX_AUDIT_SIGNING_KEY` instead of generating it, so a blueprint sync can never rotate an existing deployment's key. - Renaming the hosted deployment: `docs/deployment/vercel-env-rename.md`. + Renaming the hosted deployment: `docs/deployment/vercel-env-rename.md` (since removed). - The shipped policies and the control catalog moved from `policies_data/` and `compliance_data/` into the capability packs (`packs//policies/`, `packs/compliance/catalog/controls/`). `compliance_dir` and `policies_dir` still diff --git a/api/vendor/.gitignore b/api/vendor/.gitignore index b402d852..e4941382 100644 --- a/api/vendor/.gitignore +++ b/api/vendor/.gitignore @@ -3,8 +3,8 @@ # This directory was `*`, which is why the deployment rotted silently: the Vercel # function installs `../vendor/agentfox-0.3.0-py3-none-any.whl` by name from # api/requirements.txt, but that file was ignored, so no rebuild ever reached the -# repository. What was actually committed here was `nometria-0.1.0-py3-none-any.whl` -# — the package name from before the rename — force-added once and then frozen, +# repository. What was actually committed here was a wheel under the package's +# pre-rename name, force-added once and then frozen, # while every later `uv build` landed only on the machine that ran it. # # Negating the one named wheel means a rebuild shows up in `git status` like any diff --git a/api/vendor/agentfox-0.3.1-py3-none-any.whl b/api/vendor/agentfox-0.3.1-py3-none-any.whl index 2bf4c1ed..a0c5e866 100644 Binary files a/api/vendor/agentfox-0.3.1-py3-none-any.whl and b/api/vendor/agentfox-0.3.1-py3-none-any.whl differ diff --git a/dashboard/app/(marketing)/privacy/page.tsx b/dashboard/app/(marketing)/privacy/page.tsx index a099ed03..e87bd83c 100644 --- a/dashboard/app/(marketing)/privacy/page.tsx +++ b/dashboard/app/(marketing)/privacy/page.tsx @@ -214,7 +214,7 @@ export default function Privacy() {

-

nometria_session

+

agentfox_session

The API token minted for you at sign-in, which is what the control plane checks on every request. httpOnly diff --git a/dashboard/app/api/auth/logout/route.test.ts b/dashboard/app/api/auth/logout/route.test.ts index fc40b941..f5be0b38 100644 --- a/dashboard/app/api/auth/logout/route.test.ts +++ b/dashboard/app/api/auth/logout/route.test.ts @@ -12,7 +12,7 @@ const { POST } = await import("./route"); function logout(cookie?: string) { return new NextRequest("http://localhost:3000/api/auth/logout", { method: "POST", - headers: cookie ? { Cookie: `nometria_session=${cookie}` } : {}, + headers: cookie ? { Cookie: `agentfox_session=${cookie}` } : {}, }); } @@ -34,13 +34,13 @@ describe("sign out", () => { expect(init.method).toBe("POST"); expect(init.headers.Authorization).toBe("Bearer nom_api_session123"); expect(res.headers.get("location")).toMatch(/\/login$/); - expect(res.headers.get("set-cookie") || "").toMatch(/nometria_session=;/); + expect(res.headers.get("set-cookie") || "").toMatch(/agentfox_session=;/); }); it("still signs the browser out when the gateway is unreachable", async () => { fetchMock.mockRejectedValueOnce(new Error("ECONNREFUSED")); const res = await POST(logout("nom_api_session123")); - expect(res.headers.get("set-cookie") || "").toMatch(/nometria_session=;/); + expect(res.headers.get("set-cookie") || "").toMatch(/agentfox_session=;/); }); it("makes no gateway call without a session", async () => { diff --git a/dashboard/app/api/auth/token/route.test.ts b/dashboard/app/api/auth/token/route.test.ts index 0491909d..20996870 100644 --- a/dashboard/app/api/auth/token/route.test.ts +++ b/dashboard/app/api/auth/token/route.test.ts @@ -33,7 +33,7 @@ describe("sign in with an API token", () => { expect(String(url)).toMatch(/\/api\/me$/); expect(init.headers.Authorization).toBe("Bearer nom_api_good"); expect(res.headers.get("location")).toMatch(/\/app\/start$/); - expect(res.headers.get("set-cookie") || "").toMatch(/nometria_session=nom_api_good/); + expect(res.headers.get("set-cookie") || "").toMatch(/agentfox_session=nom_api_good/); }); it("refuses a token the gateway rejects", async () => { diff --git a/dashboard/app/docs/app/page.tsx b/dashboard/app/docs/app/page.tsx index 97f278f4..4585756b 100644 --- a/dashboard/app/docs/app/page.tsx +++ b/dashboard/app/docs/app/page.tsx @@ -126,10 +126,10 @@ AGENTFOX_API_URL=http://127.0.0.1:8080 npm run dev`} {`{"error":"GitHub sign-in is not configured (GITHUB_CLIENT_ID is unset)."}`}

For a local evaluation only, the session is the token itself, held in a cookie - named nometria_session. Open http://localhost:3000/login, + named agentfox_session. Open http://localhost:3000/login, then in the browser console:

- {`document.cookie = "nometria_session=; path=/"; location.href = "/app";`} + {`document.cookie = "agentfox_session=; path=/"; location.href = "/app";`} This is a workaround for a local instance, not a sign-in method. Anything with that cookie acts as the token's user. Do not do it on a shared or public diff --git a/dashboard/app/docs/guides/langgraph/page.tsx b/dashboard/app/docs/guides/langgraph/page.tsx index 431c5c82..fddd03e4 100644 --- a/dashboard/app/docs/guides/langgraph/page.tsx +++ b/dashboard/app/docs/guides/langgraph/page.tsx @@ -67,7 +67,7 @@ def keep_latest(old: dict, new: dict) -> dict: class State(TypedDict, total=False): messages: Annotated[list, add_messages] docs: str - __nometria__: Annotated[dict[str, Any], keep_latest] # AgentFox's governance state + __agentfox__: Annotated[dict[str, Any], keep_latest] # AgentFox's governance state guard = AgentFoxGuard( @@ -246,7 +246,7 @@ resumed: Ticket filed.`}

The governance key in your state

The guard returns its bookkeeping (trace id, last verdict, what retrieval nodes - read, the tools called and each step) under the state key __nometria__{" "} + read, the tools called and each step) under the state key __agentfox__{" "} (exported as STATE_KEY). Declare it in your state, as in{" "} graph.py:

@@ -265,7 +265,7 @@ resumed: Ticket filed.`}
  • A grant's --limit refuses with "this call passed None": the tool node found no arguments. Pass arguments=, or put the model's tool call in state["messages"].
  • A node refused with capability.denied: grant the tool to the agent; the first run registers the agent so the grant can name it.
  • A paused run cannot be resumed: compile the graph with a checkpointer (InMemorySaver for tests) and pass the same thread_id.
  • -
  • Trace id missing from the result: declare __nometria__ in the state, with a merging reducer.
  • +
  • Trace id missing from the result: declare __agentfox__ in the state, with a merging reducer.
  • Limits

    diff --git a/dashboard/app/docs/install/page.tsx b/dashboard/app/docs/install/page.tsx index f98eb743..9abd1e67 100644 --- a/dashboard/app/docs/install/page.tsx +++ b/dashboard/app/docs/install/page.tsx @@ -253,11 +253,6 @@ taint_scope = "session"`}
  • AGENTFOX_* environment variables;
  • -
  • - the pre-rename NOMETRIA_* environment variables, deprecated: still - read, with a startup warning naming each one (agentfox doctor lists - every one still set); -
  • the [agentfox] table of $AGENTFOX_CONFIG if set (it must exist), otherwise of ./agentfox.toml in the working directory; diff --git a/dashboard/app/docs/reference/api/page.tsx b/dashboard/app/docs/reference/api/page.tsx index 3a37c5bd..bb15435b 100644 --- a/dashboard/app/docs/reference/api/page.tsx +++ b/dashboard/app/docs/reference/api/page.tsx @@ -60,10 +60,7 @@ export default function Page() {

    - Headers are X-AgentFox-*. The pre-rename X-Nometria-*{" "} - request headers are still accepted, for clients not yet updated; where a request - carries both, X-AgentFox-* wins. Responses carry only{" "} - X-AgentFox-*. + Headers are X-AgentFox-*.

    diff --git a/dashboard/app/docs/reference/config/page.tsx b/dashboard/app/docs/reference/config/page.tsx index afb3cb60..9ebf808d 100644 --- a/dashboard/app/docs/reference/config/page.tsx +++ b/dashboard/app/docs/reference/config/page.tsx @@ -814,15 +814,15 @@ const GROUPS: { id: string; title: string; rows: Row[] }[] = [ } ]; -const OUTSIDE: { name: string; legacy: string; what: string }[] = [ - { name: "AGENTFOX_STATE_DIR", legacy: "—", what: "Directory for the default database and evidence. It decides the defaults of database_url and evidence_dir, so it is not itself a setting." }, - { name: "AGENTFOX_CONFIG", legacy: "NOMETRIA_CONFIG", what: "Path to the TOML file to read. It must exist. none, off or - turns file loading off." }, - { name: "AGENTFOX_AGENT", legacy: "NOMETRIA_AGENT", what: "Agent slug for agentfox.auto() when none is passed. Then OTEL_SERVICE_NAME, SERVICE_NAME, APP_NAME, K_SERVICE, the script name, and finally default-agent." }, - { name: "AGENTFOX_API_URL, AGENTFOX_API_TOKEN, AGENTFOX_USER", legacy: "NOMETRIA_API_URL, NOMETRIA_API_TOKEN, NOMETRIA_USER", what: "Where agentfox scan --submit sends a redacted summary, and the credential it uses." }, - { name: "AGENTFOX_AUDIT_KEY", legacy: "NOMETRIA_AUDIT_KEY, then the *_AUDIT_SIGNING_KEY names", what: "Read by the verify_chain.py inside an evidence package to check checkpoint signatures." }, - { name: "AGENTFOX_MCP_LOG_LEVEL", legacy: "NOMETRIA_MCP_LOG_LEVEL", what: "Log level of agentfox serve mcp. Default WARNING." }, - { name: "CRON_SECRET", legacy: "—", what: "Accepted in addition to cron_secret by /api/internal/jobs/run (Vercel Cron sets it)." }, - { name: "JEV_API_KEY", legacy: "—", what: "Key for the hosted jev judgment tier. Without it that tier is unavailable." }, +const OUTSIDE: { name: string; what: string }[] = [ + { name: "AGENTFOX_STATE_DIR", what: "Directory for the default database and evidence. It decides the defaults of database_url and evidence_dir, so it is not itself a setting." }, + { name: "AGENTFOX_CONFIG", what: "Path to the TOML file to read. It must exist. none, off or - turns file loading off." }, + { name: "AGENTFOX_AGENT", what: "Agent slug for agentfox.auto() when none is passed. Then OTEL_SERVICE_NAME, SERVICE_NAME, APP_NAME, K_SERVICE, the script name, and finally default-agent." }, + { name: "AGENTFOX_API_URL, AGENTFOX_API_TOKEN, AGENTFOX_USER", what: "Where agentfox scan --submit sends a redacted summary, and the credential it uses." }, + { name: "AGENTFOX_AUDIT_KEY", what: "Then AGENTFOX_AUDIT_SIGNING_KEY. Read by the verify_chain.py inside an evidence package to check checkpoint signatures." }, + { name: "AGENTFOX_MCP_LOG_LEVEL", what: "Log level of agentfox serve mcp. Default WARNING." }, + { name: "CRON_SECRET", what: "Accepted in addition to cron_secret by /api/internal/jobs/run (Vercel Cron sets it)." }, + { name: "JEV_API_KEY", what: "Key for the hosted jev judgment tier. Without it that tier is unavailable." }, ]; const DASHBOARD: { name: string; def: string; what: string }[] = [ @@ -859,17 +859,9 @@ export default function Page() {
  • AGENTFOX_<KEY> in the environment.
  • -
  • - NOMETRIA_<KEY>, the pre-rename name: deprecated, still read so - existing deployments keep working, with one startup warning naming each one in - use. agentfox doctor lists every one still set. Where both are set,{" "} - AGENTFOX_ wins. -
  • The [agentfox] table of the file named by AGENTFOX_CONFIG, - or of ./agentfox.toml in the working directory. A pre-rename{" "} - nometria.toml or [nometria] table is still read, with the - same warning. + or of ./agentfox.toml in the working directory.
  • The default in the tables below.
  • @@ -945,7 +937,6 @@ python -c "from agentfox.core.config import Settings as S; s = S(); print(s.fail Variable - Deprecated name, still read What it does @@ -955,7 +946,6 @@ python -c "from agentfox.core.config import Settings as S; s = S(); print(s.fail {v.name} - {v.legacy} {v.what} ))} diff --git a/dashboard/app/docs/reference/detectors/page.tsx b/dashboard/app/docs/reference/detectors/page.tsx index 0d14a529..29cf5314 100644 --- a/dashboard/app/docs/reference/detectors/page.tsx +++ b/dashboard/app/docs/reference/detectors/page.tsx @@ -65,7 +65,7 @@ const OPTIN: Row[] = [ const ENTITIES: Row[] = [ ["INJECTION.*", "INSTRUCTION_OVERRIDE, INSTRUCTION_INJECTION, INSTRUCTION_LEAK, INSTRUCTION_PERSONA, PERSONA_OVERRIDE, SYSTEM_PROMPT_LEAK, JAILBREAK, COVERT_INSTRUCTION, EXFILTRATION, ROLE_DELIMITER, CONTROL_TOKENS, FAKE_SYSTEM_BLOCK, INSTRUCTION_IN_DATA, HIDDEN_CHARACTERS, HIDDEN_INSTRUCTION, ENCODED_PAYLOAD, OBFUSCATED_CONTENT (injection.heuristic); JAILBREAK (classifiers); SEMANTIC_SIMILARITY (injection.similarity); CLASSIFIER, UNUSUAL (Hub validators)"], ["PII.*", "EMAIL, IP_ADDRESS, CREDIT_CARD, IBAN, DATE_OF_BIRTH, US_SSN, US_PHONE, US_PASSPORT, US_MRN, UK_NINO, UK_NHS, EU_VAT, IN_AADHAAR, IN_PAN (pii.native); PERSON, LOCATION, DATE_TIME, US_DRIVER_LICENSE, MEDICAL_LICENSE, CRYPTO_WALLET (pii.presidio); PRESENT_UNLOCATED (pii.judgment: personal data present, location unknown); HUB"], - ["SECRET.*", "OPENAI_KEY, ANTHROPIC_KEY, AWS_ACCESS_KEY, GITHUB_TOKEN, SLACK_TOKEN, GOOGLE_API_KEY, STRIPE_KEY, NOMETRIA_KEY, PRIVATE_KEY, JWT, CONNECTION_STRING, GENERIC (secrets.native); HUB"], + ["SECRET.*", "OPENAI_KEY, ANTHROPIC_KEY, AWS_ACCESS_KEY, GITHUB_TOKEN, SLACK_TOKEN, GOOGLE_API_KEY, STRIPE_KEY, AGENTFOX_KEY, PRIVATE_KEY, JWT, CONNECTION_STRING, GENERIC (secrets.native); HUB"], ["SAFETY.*", "HARM, SELF_HARM, ILLICIT, HARASSMENT, EXTREMISM (safety.lexicon; SEXUAL is a category with no patterns yet); HARM (Granite, Llama Guard); TOXIC, NSFW, PROFANITY, DRUGS, BIAS, BANNED_TERM, LLAMA_GUARD, SHIELD_GEMMA (Hub validators)"], ["SCHEMA.*", "VIOLATION, UNPARSEABLE (schema.json); SQL_INVALID, JSON_INVALID (Hub validators)"], ["RAILS.BLOCKED", "A NeMo rail refused the content."], diff --git a/dashboard/app/docs/reference/python/page.tsx b/dashboard/app/docs/reference/python/page.tsx index ca7b80a7..f511bbdc 100644 --- a/dashboard/app/docs/reference/python/page.tsx +++ b/dashboard/app/docs/reference/python/page.tsx @@ -659,7 +659,7 @@ guard.tool_node(fn=None, *, tool: str, provenance=None, arguments=None, messages
  • Governance state (trace id, last verdict, what was retrieved, tools called) is written under the{" "} - "__nometria__" key of the graph state, so it survives a + "__agentfox__" key of the graph state, so it survives a checkpoint. Add that key to your state schema.
  • diff --git a/dashboard/app/docs/self-host/page.tsx b/dashboard/app/docs/self-host/page.tsx index 7a085ad7..94b0e5d4 100644 --- a/dashboard/app/docs/self-host/page.tsx +++ b/dashboard/app/docs/self-host/page.tsx @@ -110,10 +110,7 @@ export default function Page() { {`python3 -c "import secrets; print(secrets.token_urlsafe(48))" python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"`}

    - Every setting is on Configuration. The - pre-rename NOMETRIA_* names are still read as a deprecated fallback, - with a startup warning naming each one; where both are set, AGENTFOX_*{" "} - wins. Rename them: a later release stops reading them. + Every setting is on Configuration.

    The gateway as a Python app

    @@ -299,9 +296,10 @@ docker compose -f deploy/docker-compose.yml up -d`} https://<your-dashboard-host>/api/auth/github/callback, exactly, including the scheme. The blueprint asks for{" "} AGENTFOX_AUDIT_SIGNING_KEY once, on creation: paste a random value and - keep a copy. A deployment made from an older blueprint has it as{" "} - NOMETRIA_AUDIT_SIGNING_KEY; copy that value to the new name rather than - generating a new one, or entries signed before the change stop verifying. The dashboard runbook, including Fly.io, is{" "} + keep a copy. To change it later, keep the old value as{" "} + AGENTFOX_AUDIT_SIGNING_KEY_PREVIOUS and run{" "} + agentfox admin keys rotate (docs/deployment/key-rotation.md). + The dashboard runbook, including Fly.io, is{" "} deploy/README-dashboard.md.

    diff --git a/dashboard/components/ui/index.tsx b/dashboard/components/ui/index.tsx index 4adaf637..c6535451 100644 --- a/dashboard/components/ui/index.tsx +++ b/dashboard/components/ui/index.tsx @@ -361,7 +361,7 @@ export function Empty({ children }: { children: React.ReactNode }) { * True only where someone can actually act on "run `agentfox serve`" — i.e. the * control plane is a process on their own machine or in their own deployment. * - * `AGENTFOX_SELF_HOSTED` (or the deprecated `NOMETRIA_SELF_HOSTED`) is the explicit switch; with it unset we infer from + * `AGENTFOX_SELF_HOSTED` is the explicit switch; with it unset we infer from * whether the configured API URL is a loopback address, which is exactly the * local-dev case and never the hosted one. The default direction matters: on the * hosted deployment nobody can run that command, so telling them to is worse diff --git a/dashboard/lib/env.test.ts b/dashboard/lib/env.test.ts index 4890db49..4621b76d 100644 --- a/dashboard/lib/env.test.ts +++ b/dashboard/lib/env.test.ts @@ -1,7 +1,7 @@ -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { apiBase, env, resetLegacyEnvWarnings } from "./env"; +import { afterEach, beforeEach, describe, expect, it } from "vitest"; +import { apiBase, env } from "./env"; -const NAMES = ["AGENTFOX_API_URL", "NOMETRIA_API_URL", "AGENTFOX_USER", "NOMETRIA_USER"]; +const NAMES = ["AGENTFOX_API_URL", "AGENTFOX_USER"]; describe("env", () => { const saved: Record = {}; @@ -11,7 +11,6 @@ describe("env", () => { saved[name] = process.env[name]; delete process.env[name]; } - resetLegacyEnvWarnings(); }); afterEach(() => { @@ -19,24 +18,16 @@ describe("env", () => { if (saved[name] === undefined) delete process.env[name]; else process.env[name] = saved[name]; } - vi.restoreAllMocks(); }); - it("reads AGENTFOX_ first", () => { + it("reads AGENTFOX_", () => { process.env.AGENTFOX_API_URL = "https://new.example"; - process.env.NOMETRIA_API_URL = "https://old.example"; - const warn = vi.spyOn(console, "warn").mockImplementation(() => {}); expect(env("API_URL")).toBe("https://new.example"); - expect(warn).not.toHaveBeenCalled(); + expect(apiBase()).toBe("https://new.example"); }); - it("falls back to NOMETRIA_ and warns once per name", () => { - process.env.NOMETRIA_USER = "old@example.com"; - const warn = vi.spyOn(console, "warn").mockImplementation(() => {}); - expect(env("USER")).toBe("old@example.com"); - expect(env("USER")).toBe("old@example.com"); - expect(warn).toHaveBeenCalledTimes(1); - expect(String(warn.mock.calls[0][0])).toContain("AGENTFOX_USER"); + it("is undefined when unset", () => { + expect(env("USER")).toBeUndefined(); }); it("treats an empty value as unset", () => { diff --git a/dashboard/lib/env.ts b/dashboard/lib/env.ts index 5c1e440a..7117230c 100644 --- a/dashboard/lib/env.ts +++ b/dashboard/lib/env.ts @@ -1,37 +1,13 @@ /** - * Environment variables, read the way the gateway reads them: `AGENTFOX_` - * first, then the pre-rename `NOMETRIA_` as a deprecated fallback. - * - * The fallback exists so a deployment whose variables still carry the old prefix - * (Vercel, Render, a self-hoster's `.env`) keeps working until they are renamed. - * Using it logs one warning per name, on the server, naming the variable to rename. + * Environment variables, read the way the gateway reads them: `AGENTFOX_`. * An empty value counts as unset. * * Server-side only, like every caller: the lookup is dynamic, so nothing here is * inlined into the client bundle (see next.config.mjs). */ -const warned = new Set(); - export function env(name: string): string | undefined { - const current = process.env[`AGENTFOX_${name}`]; - if (current) return current; - const legacy = process.env[`NOMETRIA_${name}`]; - if (legacy) { - if (!warned.has(name)) { - warned.add(name); - console.warn( - `NOMETRIA_${name} is deprecated and will stop being read; rename it to AGENTFOX_${name}.`, - ); - } - return legacy; - } - return undefined; -} - -/** Test hook: forget which legacy names were already warned about. */ -export function resetLegacyEnvWarnings(): void { - warned.clear(); + return process.env[`AGENTFOX_${name}`] || undefined; } /** The gateway's base URL for server-to-server calls. */ diff --git a/dashboard/lib/product/api.ts b/dashboard/lib/product/api.ts index 76be0602..115cc8a6 100644 --- a/dashboard/lib/product/api.ts +++ b/dashboard/lib/product/api.ts @@ -24,7 +24,7 @@ const TOKEN = env("API_TOKEN"); //: a real per-user token on sign-in and sets it here. Checked ahead of the static //: env var, so a signed-in user's own token — not a shared service token — is what //: the gateway sees, and its tenant scoping applies to everything the UI shows them. -export const SESSION_COOKIE = "nometria_session"; +export const SESSION_COOKIE = "agentfox_session"; export class ApiError extends Error { constructor( diff --git a/dashboard/tsconfig.tsbuildinfo b/dashboard/tsconfig.tsbuildinfo index 64f3669c..1dca446e 100644 --- a/dashboard/tsconfig.tsbuildinfo +++ b/dashboard/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["../../../../dashboard/node_modules/typescript/lib/lib.es5.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2016.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2018.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2019.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2021.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2022.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2023.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.esnext.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.dom.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.esnext.array.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.decorators.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../dashboard/node_modules/next/dist/server/after/builtin-request-context.d.ts","../../../../dashboard/node_modules/next/dist/compiled/webpack/webpack.d.ts","../../../../dashboard/node_modules/next/dist/server/config.d.ts","../../../../dashboard/node_modules/next/dist/lib/load-custom-routes.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/image-config.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","../../../../dashboard/node_modules/next/dist/server/get-page-files.d.ts","../../../../dashboard/node_modules/@types/node/compatibility/disposable.d.ts","../../../../dashboard/node_modules/@types/node/compatibility/indexable.d.ts","../../../../dashboard/node_modules/@types/node/compatibility/iterators.d.ts","../../../../dashboard/node_modules/@types/node/compatibility/index.d.ts","../../../../dashboard/node_modules/@types/node/globals.typedarray.d.ts","../../../../dashboard/node_modules/@types/node/buffer.buffer.d.ts","../../../../dashboard/node_modules/undici-types/header.d.ts","../../../../dashboard/node_modules/undici-types/readable.d.ts","../../../../dashboard/node_modules/undici-types/file.d.ts","../../../../dashboard/node_modules/undici-types/fetch.d.ts","../../../../dashboard/node_modules/undici-types/formdata.d.ts","../../../../dashboard/node_modules/undici-types/connector.d.ts","../../../../dashboard/node_modules/undici-types/client.d.ts","../../../../dashboard/node_modules/undici-types/errors.d.ts","../../../../dashboard/node_modules/undici-types/dispatcher.d.ts","../../../../dashboard/node_modules/undici-types/global-dispatcher.d.ts","../../../../dashboard/node_modules/undici-types/global-origin.d.ts","../../../../dashboard/node_modules/undici-types/pool-stats.d.ts","../../../../dashboard/node_modules/undici-types/pool.d.ts","../../../../dashboard/node_modules/undici-types/handlers.d.ts","../../../../dashboard/node_modules/undici-types/balanced-pool.d.ts","../../../../dashboard/node_modules/undici-types/agent.d.ts","../../../../dashboard/node_modules/undici-types/mock-interceptor.d.ts","../../../../dashboard/node_modules/undici-types/mock-agent.d.ts","../../../../dashboard/node_modules/undici-types/mock-client.d.ts","../../../../dashboard/node_modules/undici-types/mock-pool.d.ts","../../../../dashboard/node_modules/undici-types/mock-errors.d.ts","../../../../dashboard/node_modules/undici-types/proxy-agent.d.ts","../../../../dashboard/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../dashboard/node_modules/undici-types/retry-handler.d.ts","../../../../dashboard/node_modules/undici-types/retry-agent.d.ts","../../../../dashboard/node_modules/undici-types/api.d.ts","../../../../dashboard/node_modules/undici-types/interceptors.d.ts","../../../../dashboard/node_modules/undici-types/util.d.ts","../../../../dashboard/node_modules/undici-types/cookies.d.ts","../../../../dashboard/node_modules/undici-types/patch.d.ts","../../../../dashboard/node_modules/undici-types/websocket.d.ts","../../../../dashboard/node_modules/undici-types/eventsource.d.ts","../../../../dashboard/node_modules/undici-types/filereader.d.ts","../../../../dashboard/node_modules/undici-types/diagnostics-channel.d.ts","../../../../dashboard/node_modules/undici-types/content-type.d.ts","../../../../dashboard/node_modules/undici-types/cache.d.ts","../../../../dashboard/node_modules/undici-types/index.d.ts","../../../../dashboard/node_modules/@types/node/globals.d.ts","../../../../dashboard/node_modules/@types/node/assert.d.ts","../../../../dashboard/node_modules/@types/node/assert/strict.d.ts","../../../../dashboard/node_modules/@types/node/async_hooks.d.ts","../../../../dashboard/node_modules/@types/node/buffer.d.ts","../../../../dashboard/node_modules/@types/node/child_process.d.ts","../../../../dashboard/node_modules/@types/node/cluster.d.ts","../../../../dashboard/node_modules/@types/node/console.d.ts","../../../../dashboard/node_modules/@types/node/constants.d.ts","../../../../dashboard/node_modules/@types/node/crypto.d.ts","../../../../dashboard/node_modules/@types/node/dgram.d.ts","../../../../dashboard/node_modules/@types/node/diagnostics_channel.d.ts","../../../../dashboard/node_modules/@types/node/dns.d.ts","../../../../dashboard/node_modules/@types/node/dns/promises.d.ts","../../../../dashboard/node_modules/@types/node/domain.d.ts","../../../../dashboard/node_modules/@types/node/dom-events.d.ts","../../../../dashboard/node_modules/@types/node/events.d.ts","../../../../dashboard/node_modules/@types/node/fs.d.ts","../../../../dashboard/node_modules/@types/node/fs/promises.d.ts","../../../../dashboard/node_modules/@types/node/http.d.ts","../../../../dashboard/node_modules/@types/node/http2.d.ts","../../../../dashboard/node_modules/@types/node/https.d.ts","../../../../dashboard/node_modules/@types/node/inspector.d.ts","../../../../dashboard/node_modules/@types/node/module.d.ts","../../../../dashboard/node_modules/@types/node/net.d.ts","../../../../dashboard/node_modules/@types/node/os.d.ts","../../../../dashboard/node_modules/@types/node/path.d.ts","../../../../dashboard/node_modules/@types/node/perf_hooks.d.ts","../../../../dashboard/node_modules/@types/node/process.d.ts","../../../../dashboard/node_modules/@types/node/punycode.d.ts","../../../../dashboard/node_modules/@types/node/querystring.d.ts","../../../../dashboard/node_modules/@types/node/readline.d.ts","../../../../dashboard/node_modules/@types/node/readline/promises.d.ts","../../../../dashboard/node_modules/@types/node/repl.d.ts","../../../../dashboard/node_modules/@types/node/sea.d.ts","../../../../dashboard/node_modules/@types/node/sqlite.d.ts","../../../../dashboard/node_modules/@types/node/stream.d.ts","../../../../dashboard/node_modules/@types/node/stream/promises.d.ts","../../../../dashboard/node_modules/@types/node/stream/consumers.d.ts","../../../../dashboard/node_modules/@types/node/stream/web.d.ts","../../../../dashboard/node_modules/@types/node/string_decoder.d.ts","../../../../dashboard/node_modules/@types/node/test.d.ts","../../../../dashboard/node_modules/@types/node/timers.d.ts","../../../../dashboard/node_modules/@types/node/timers/promises.d.ts","../../../../dashboard/node_modules/@types/node/tls.d.ts","../../../../dashboard/node_modules/@types/node/trace_events.d.ts","../../../../dashboard/node_modules/@types/node/tty.d.ts","../../../../dashboard/node_modules/@types/node/url.d.ts","../../../../dashboard/node_modules/@types/node/util.d.ts","../../../../dashboard/node_modules/@types/node/v8.d.ts","../../../../dashboard/node_modules/@types/node/vm.d.ts","../../../../dashboard/node_modules/@types/node/wasi.d.ts","../../../../dashboard/node_modules/@types/node/worker_threads.d.ts","../../../../dashboard/node_modules/@types/node/zlib.d.ts","../../../../dashboard/node_modules/@types/node/index.d.ts","../../../../dashboard/node_modules/@types/react/global.d.ts","../../../../dashboard/node_modules/csstype/index.d.ts","../../../../dashboard/node_modules/@types/react/index.d.ts","../../../../dashboard/node_modules/@types/react/canary.d.ts","../../../../dashboard/node_modules/@types/react/experimental.d.ts","../../../../dashboard/node_modules/next/dist/lib/fallback.d.ts","../../../../dashboard/node_modules/next/dist/server/base-http/index.d.ts","../../../../dashboard/node_modules/next/dist/server/api-utils/index.d.ts","../../../../dashboard/node_modules/next/dist/server/node-environment-baseline.d.ts","../../../../dashboard/node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","../../../../dashboard/node_modules/next/dist/server/node-environment-extensions/random.d.ts","../../../../dashboard/node_modules/next/dist/server/node-environment-extensions/date.d.ts","../../../../dashboard/node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","../../../../dashboard/node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","../../../../dashboard/node_modules/next/dist/server/node-environment.d.ts","../../../../dashboard/node_modules/next/dist/server/require-hook.d.ts","../../../../dashboard/node_modules/next/dist/server/node-polyfill-crypto.d.ts","../../../../dashboard/node_modules/next/dist/lib/page-types.d.ts","../../../../dashboard/node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","../../../../dashboard/node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","../../../../dashboard/node_modules/next/dist/build/analysis/get-page-static-info.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/cache-control.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/cache-handlers/types.d.ts","../../../../dashboard/node_modules/next/dist/server/route-kind.d.ts","../../../../dashboard/node_modules/next/dist/server/response-cache/types.d.ts","../../../../dashboard/node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","../../../../dashboard/node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","../../../../dashboard/node_modules/next/dist/lib/constants.d.ts","../../../../dashboard/node_modules/next/dist/client/components/app-router-headers.d.ts","../../../../dashboard/node_modules/next/dist/server/render-result.d.ts","../../../../dashboard/node_modules/next/dist/server/body-streams.d.ts","../../../../dashboard/node_modules/next/dist/lib/setup-exception-listeners.d.ts","../../../../dashboard/node_modules/next/dist/lib/worker.d.ts","../../../../dashboard/node_modules/next/dist/build/rendering-mode.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/experimental/ppr.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/app-build-manifest-plugin.d.ts","../../../../dashboard/node_modules/next/dist/build/page-extensions-type.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","../../../../dashboard/node_modules/next/dist/server/instrumentation/types.d.ts","../../../../dashboard/node_modules/next/dist/lib/coalesced-function.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/router-utils/types.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/constants.d.ts","../../../../dashboard/node_modules/next/dist/trace/types.d.ts","../../../../dashboard/node_modules/next/dist/trace/trace.d.ts","../../../../dashboard/node_modules/next/dist/trace/shared.d.ts","../../../../dashboard/node_modules/next/dist/trace/index.d.ts","../../../../dashboard/node_modules/next/dist/build/load-jsconfig.d.ts","../../../../dashboard/node_modules/@next/env/dist/index.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.d.ts","../../../../dashboard/node_modules/next/dist/telemetry/storage.d.ts","../../../../dashboard/node_modules/next/dist/build/build-context.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/bloom-filter.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack-config.d.ts","../../../../dashboard/node_modules/next/dist/server/route-definitions/route-definition.d.ts","../../../../dashboard/node_modules/next/dist/build/swc/generated-native.d.ts","../../../../dashboard/node_modules/next/dist/build/swc/types.d.ts","../../../../dashboard/node_modules/next/dist/server/dev/parse-version-info.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/shared/types.d.ts","../../../../dashboard/node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/parse-stack.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/server/shared.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/shared/stack-frame.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/dev-overlay/utils/get-error-by-type.d.ts","../../../../dashboard/node_modules/@types/react/jsx-runtime.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/dev-overlay/container/runtime-error/render-error.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/dev-overlay/shared.d.ts","../../../../dashboard/node_modules/next/dist/server/dev/hot-reloader-types.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/types.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/lru-cache.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/dev-bundler-service.d.ts","../../../../dashboard/node_modules/next/dist/server/route-matchers/route-matcher.d.ts","../../../../dashboard/node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","../../../../dashboard/node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","../../../../dashboard/node_modules/next/dist/server/base-http/node.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","../../../../dashboard/node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","../../../../dashboard/node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/mitt.d.ts","../../../../dashboard/node_modules/next/dist/client/with-router.d.ts","../../../../dashboard/node_modules/next/dist/client/router.d.ts","../../../../dashboard/node_modules/next/dist/client/route-loader.d.ts","../../../../dashboard/node_modules/next/dist/client/page-loader.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router/router.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/app-dir-module.d.ts","../../../../dashboard/node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/cookies.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","../../../../dashboard/node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/cache-signal.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","../../../../dashboard/node_modules/next/dist/server/request/fallback-params.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","../../../../dashboard/node_modules/next/dist/server/response-cache/index.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/lazy-result.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/implicit-tags.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/deep-readonly.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/app-render.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/amp-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","../../../../dashboard/node_modules/next/dist/client/components/error-boundary.d.ts","../../../../dashboard/node_modules/next/dist/client/components/layout-router.d.ts","../../../../dashboard/node_modules/next/dist/client/components/render-from-template-context.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","../../../../dashboard/node_modules/next/dist/client/components/client-page.d.ts","../../../../dashboard/node_modules/next/dist/client/components/client-segment.d.ts","../../../../dashboard/node_modules/next/dist/server/request/search-params.d.ts","../../../../dashboard/node_modules/next/dist/client/components/hooks-server-context.d.ts","../../../../dashboard/node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/extra-types.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/resolvers.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/icons.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/metadata.d.ts","../../../../dashboard/node_modules/next/dist/lib/framework/boundary-components.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/rsc/preloads.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/rsc/postpone.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/rsc/taint.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/collect-segment-data.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/entry-base.d.ts","../../../../dashboard/node_modules/next/dist/build/templates/app-page.d.ts","../../../../dashboard/node_modules/@types/react/jsx-dev-runtime.d.ts","../../../../dashboard/node_modules/@types/react/compiler-runtime.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-page/module.d.ts","../../../../dashboard/node_modules/next/dist/server/web/adapter.d.ts","../../../../dashboard/node_modules/next/dist/server/use-cache/cache-life.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/types.d.ts","../../../../dashboard/node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","../../../../dashboard/node_modules/next/dist/client/flight-data-helpers.d.ts","../../../../dashboard/node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","../../../../dashboard/node_modules/next/dist/build/templates/pages.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/pages/module.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/userspace/pages/pages-dev-overlay-setup.d.ts","../../../../dashboard/node_modules/next/dist/server/render.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","../../../../dashboard/node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","../../../../dashboard/node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/normalizer.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/request/suffix.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/request/rsc.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/request/prefetch-rsc.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/request/next-data.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","../../../../dashboard/node_modules/next/dist/build/static-paths/types.d.ts","../../../../dashboard/node_modules/next/dist/server/base-server.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/render-server.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/router-server.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/router-utils/router-server-context.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/route-module.d.ts","../../../../dashboard/node_modules/next/dist/server/load-components.d.ts","../../../../dashboard/node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","../../../../dashboard/node_modules/next/dist/server/async-storage/work-store.d.ts","../../../../dashboard/node_modules/next/dist/server/web/http.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","../../../../dashboard/node_modules/next/dist/client/components/redirect-status-code.d.ts","../../../../dashboard/node_modules/next/dist/client/components/redirect-error.d.ts","../../../../dashboard/node_modules/next/dist/build/templates/app-route.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-route/module.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","../../../../dashboard/node_modules/next/dist/build/segment-config/app/app-segments.d.ts","../../../../dashboard/node_modules/next/dist/build/utils.d.ts","../../../../dashboard/node_modules/next/dist/build/turborepo-access-trace/types.d.ts","../../../../dashboard/node_modules/next/dist/build/turborepo-access-trace/result.d.ts","../../../../dashboard/node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","../../../../dashboard/node_modules/next/dist/build/turborepo-access-trace/index.d.ts","../../../../dashboard/node_modules/next/dist/export/routes/types.d.ts","../../../../dashboard/node_modules/next/dist/export/types.d.ts","../../../../dashboard/node_modules/next/dist/export/worker.d.ts","../../../../dashboard/node_modules/next/dist/build/worker.d.ts","../../../../dashboard/node_modules/next/dist/build/index.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/incremental-cache/index.d.ts","../../../../dashboard/node_modules/next/dist/server/after/after.d.ts","../../../../dashboard/node_modules/next/dist/server/after/after-context.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","../../../../dashboard/node_modules/next/dist/server/request/params.d.ts","../../../../dashboard/node_modules/next/dist/server/route-matches/route-match.d.ts","../../../../dashboard/node_modules/next/dist/server/request-meta.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/i18n-provider.d.ts","../../../../dashboard/node_modules/next/dist/server/web/next-url.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/response.d.ts","../../../../dashboard/node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","../../../../dashboard/node_modules/next/dist/server/web/types.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/async-callback-set.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","../../../../dashboard/node_modules/sharp/lib/index.d.ts","../../../../dashboard/node_modules/next/dist/server/image-optimizer.d.ts","../../../../dashboard/node_modules/next/dist/server/next-server.d.ts","../../../../dashboard/node_modules/next/dist/server/dev/static-paths-worker.d.ts","../../../../dashboard/node_modules/next/dist/server/dev/next-dev-server.d.ts","../../../../dashboard/node_modules/next/dist/server/next.d.ts","../../../../dashboard/node_modules/next/dist/types.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/utils.d.ts","../../../../dashboard/node_modules/next/dist/cli/next-test.d.ts","../../../../dashboard/node_modules/next/dist/server/config-shared.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/request.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","../../../../dashboard/node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/image-response.d.ts","../../../../dashboard/node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","../../../../dashboard/node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","../../../../dashboard/node_modules/next/dist/compiled/@vercel/og/types.d.ts","../../../../dashboard/node_modules/next/dist/server/after/index.d.ts","../../../../dashboard/node_modules/next/dist/server/request/root-params.d.ts","../../../../dashboard/node_modules/next/dist/server/request/connection.d.ts","../../../../dashboard/node_modules/next/server.d.ts","../../../../dashboard/node_modules/next/dist/server/request/cookies.d.ts","../../../../dashboard/node_modules/next/dist/server/request/headers.d.ts","../../../../dashboard/node_modules/next/dist/server/request/draft-mode.d.ts","../../../../dashboard/node_modules/next/headers.d.ts","./lib/env.ts","./lib/product/api.ts","./middleware.ts","../../../../dashboard/node_modules/next/dist/styled-jsx/types/css.d.ts","../../../../dashboard/node_modules/next/dist/styled-jsx/types/macro.d.ts","../../../../dashboard/node_modules/next/dist/styled-jsx/types/style.d.ts","../../../../dashboard/node_modules/next/dist/styled-jsx/types/global.d.ts","../../../../dashboard/node_modules/next/dist/styled-jsx/types/index.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/amp.d.ts","../../../../dashboard/node_modules/next/amp.d.ts","../../../../dashboard/node_modules/next/dist/pages/_app.d.ts","../../../../dashboard/node_modules/next/app.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","../../../../dashboard/node_modules/next/dist/server/use-cache/cache-tag.d.ts","../../../../dashboard/node_modules/next/cache.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/runtime-config.external.d.ts","../../../../dashboard/node_modules/next/config.d.ts","../../../../dashboard/node_modules/next/dist/pages/_document.d.ts","../../../../dashboard/node_modules/next/document.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/dynamic.d.ts","../../../../dashboard/node_modules/next/dynamic.d.ts","../../../../dashboard/node_modules/next/dist/pages/_error.d.ts","../../../../dashboard/node_modules/next/error.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/head.d.ts","../../../../dashboard/node_modules/next/head.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/get-img-props.d.ts","../../../../dashboard/node_modules/next/dist/client/image-component.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/image-external.d.ts","../../../../dashboard/node_modules/next/image.d.ts","../../../../dashboard/node_modules/next/dist/client/link.d.ts","../../../../dashboard/node_modules/next/link.d.ts","../../../../dashboard/node_modules/next/dist/client/components/redirect.d.ts","../../../../dashboard/node_modules/next/dist/client/components/not-found.d.ts","../../../../dashboard/node_modules/next/dist/client/components/forbidden.d.ts","../../../../dashboard/node_modules/next/dist/client/components/unauthorized.d.ts","../../../../dashboard/node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","../../../../dashboard/node_modules/next/dist/client/components/unstable-rethrow.d.ts","../../../../dashboard/node_modules/next/dist/client/components/navigation.react-server.d.ts","../../../../dashboard/node_modules/next/dist/client/components/unrecognized-action-error.d.ts","../../../../dashboard/node_modules/next/dist/client/components/navigation.d.ts","../../../../dashboard/node_modules/next/navigation.d.ts","../../../../dashboard/node_modules/next/router.d.ts","../../../../dashboard/node_modules/next/dist/client/script.d.ts","../../../../dashboard/node_modules/next/script.d.ts","../../../../dashboard/node_modules/next/types/global.d.ts","../../../../dashboard/node_modules/next/types/compiled.d.ts","../../../../dashboard/node_modules/next/types.d.ts","../../../../dashboard/node_modules/next/index.d.ts","../../../../dashboard/node_modules/next/image-types/global.d.ts","./next-env.d.ts","../../../../dashboard/node_modules/@vitest/spy/optional-types.d.ts","../../../../dashboard/node_modules/@vitest/spy/dist/index.d.ts","../../../../dashboard/node_modules/tinyrainbow/dist/index.d.ts","../../../../dashboard/node_modules/@standard-schema/spec/dist/index.d.ts","../../../../dashboard/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/types.d-bcelap-c.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/diff.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/display.d.ts","../../../../dashboard/node_modules/@types/deep-eql/index.d.ts","../../../../dashboard/node_modules/assertion-error/index.d.ts","../../../../dashboard/node_modules/@types/chai/index.d.ts","../../../../dashboard/node_modules/@vitest/expect/dist/index.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/hmrpayload.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/dist/node/chunks/modulerunnertransport.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/customevent.d.ts","../../../../dashboard/node_modules/rolldown/dist/shared/logging-xuho4may.d.mts","../../../../dashboard/node_modules/@oxc-project/types/types.d.ts","../../../../dashboard/node_modules/rolldown/dist/shared/binding-dzunhvw4.d.mts","../../../../dashboard/node_modules/@rolldown/pluginutils/dist/filter/index.d.mts","../../../../dashboard/node_modules/@rolldown/pluginutils/dist/index.d.mts","../../../../dashboard/node_modules/rolldown/dist/shared/define-config-dnx0wekp.d.mts","../../../../dashboard/node_modules/rolldown/dist/index.d.mts","../../../../dashboard/node_modules/rolldown/dist/parse-ast-index.d.mts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/internal/rolluptypecompat.d.ts","../../../../dashboard/node_modules/rolldown/dist/shared/constructors-bm20b11r.d.mts","../../../../dashboard/node_modules/rolldown/dist/plugins-index.d.mts","../../../../dashboard/node_modules/rolldown/dist/shared/transform-cvse9_mh.d.mts","../../../../dashboard/node_modules/rolldown/dist/utils-index.d.mts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/hot.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/dist/node/module-runner.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/internal/esbuildoptions.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/metadata.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/internal/terseroptions.d.ts","../../../../dashboard/node_modules/source-map-js/source-map.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/previous-map.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/input.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/css-syntax-error.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/declaration.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/root.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/warning.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/lazy-result.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/no-work-result.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/processor.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/result.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/document.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/rule.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/node.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/comment.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/container.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/at-rule.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/list.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/postcss.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/postcss.d.mts","../../../../dashboard/node_modules/lightningcss/node/ast.d.ts","../../../../dashboard/node_modules/lightningcss/node/targets.d.ts","../../../../dashboard/node_modules/lightningcss/node/index.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/internal/lightningcssoptions.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/internal/csspreprocessoroptions.d.ts","../../../../dashboard/node_modules/rolldown/dist/filter-index.d.mts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/importglob.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/dist/node/index.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/types.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/helpers.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/timers.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/index.d.ts","../../../../dashboard/node_modules/@vitest/runner/dist/tasks.d-deyaimiu.d.ts","../../../../dashboard/node_modules/@vitest/runner/dist/index.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/traces.d.d2t_r8rx.d.ts","../../../../dashboard/node_modules/@vitest/snapshot/dist/environment.d-dojxxzv9.d.ts","../../../../dashboard/node_modules/@vitest/snapshot/dist/rawsnapshot.d-d_x3-62x.d.ts","../../../../dashboard/node_modules/@vitest/snapshot/dist/index.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/config.d.a1h_y6jt.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/environment.d.crsxczp1.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/rpc.d.b_8spu0w.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/worker.d.zphpo4yb.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/browser.d.bcoexmfg.d.ts","../../../../dashboard/node_modules/vitest/optional-types.d.ts","../../../../dashboard/node_modules/@vitest/runner/dist/utils.d.ts","../../../../dashboard/node_modules/tinybench/dist/index.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/benchmark.d.daahlpsq.d.ts","../../../../dashboard/node_modules/vitest/node_modules/@vitest/mocker/dist/types.d-bji5eawu.d.ts","../../../../dashboard/node_modules/vitest/node_modules/@vitest/mocker/dist/index.d-b41z0auw.d.ts","../../../../dashboard/node_modules/vitest/node_modules/@vitest/mocker/dist/index.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/source-map.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/coverage.d.bztk59wp.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/serialize.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/error.d.ts","../../../../dashboard/node_modules/vitest/dist/browser.d.ts","../../../../dashboard/node_modules/vitest/browser/context.d.ts","../../../../dashboard/node_modules/@vitest/snapshot/dist/manager.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/reporters.d.dtokvv2s.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/plugin.d.dwfiij7i.d.ts","../../../../dashboard/node_modules/vitest/dist/config.d.ts","../../../../dashboard/node_modules/vitest/config.d.ts","./vitest.config.ts","../../../../dashboard/node_modules/vitest/dist/chunks/global.d.dvssrdq5.d.ts","../../../../dashboard/node_modules/vitest/optional-runtime-types.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/suite.d.udjtyagw.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/evaluatedmodules.d.bxj5omdx.d.ts","../../../../dashboard/node_modules/vitest/dist/runners.d.ts","../../../../dashboard/node_modules/expect-type/dist/utils.d.ts","../../../../dashboard/node_modules/expect-type/dist/overloads.d.ts","../../../../dashboard/node_modules/expect-type/dist/branding.d.ts","../../../../dashboard/node_modules/expect-type/dist/messages.d.ts","../../../../dashboard/node_modules/expect-type/dist/index.d.ts","../../../../dashboard/node_modules/vitest/dist/index.d.ts","./lib/site.ts","./app/agents.md/route.ts","./lib/marketing/blog.ts","./lib/marketing/nav.ts","./app/llms.txt/route.ts","./app/.well-known/security.txt/route.ts","./app/machine-readable.test.ts","./app/nav-complete.test.ts","./app/og-mark.ts","./app/robots.ts","./lib/docs/pages.ts","./app/sitemap.ts","./app/(product)/app/links.test.ts","./lib/product/proxy.ts","./app/api/agents/route.ts","./app/api/agents/[slug]/approve/route.ts","./app/api/agents/[slug]/boundary/route.ts","./app/api/agents/[slug]/control/route.ts","./app/api/agents/[slug]/owner/route.ts","./app/api/agents/[slug]/reject/route.ts","./app/api/approvals/[id]/approve/route.ts","./app/api/approvals/[id]/deny/route.ts","./app/api/audit/verify/route.ts","./app/api/auth/github/callback/route.ts","./app/api/auth/github/login/route.ts","./app/api/auth/logout/route.ts","./app/api/auth/logout/route.test.ts","./app/api/auth/token/route.ts","./app/api/auth/token/route.test.ts","./app/api/compliance/compute/route.ts","./app/api/compliance/sync/route.ts","./lib/product/entitlement.ts","./app/api/entitlement/grants/route.ts","./app/api/entitlement/principals/route.ts","./app/api/escalation/handoffs/acknowledge/route.ts","./app/api/escalation/policy/route.ts","./app/api/eval/online/route.ts","./app/api/eval/results/[id]/annotate/route.ts","./app/api/eval/runs/route.ts","./app/api/eval/slos/route.ts","./app/api/eval/suites/route.ts","./app/api/eval/suites/[key]/cases/route.ts","./app/api/eval/suites/[key]/promote/route.ts","./app/api/evidence/route.ts","./app/api/evidence/[id]/download/route.ts","./app/api/findings/[id]/route.ts","./app/api/frameworks/review/route.ts","./app/api/guardrails/feedback/route.ts","./app/api/guardrails/suppressions/route.ts","./app/api/guardrails/suppressions/revoke/route.ts","./app/api/integrations/github/scan/route.ts","./app/api/integrations/hosted-api/scan/route.ts","./app/api/judgment/posture/route.ts","./app/api/judgment/posture/route.test.ts","./app/api/legal-holds/route.ts","./app/api/policies/[key]/approve/route.ts","./app/api/policies/[key]/canary/route.ts","./app/api/policies/[key]/canary/advance/route.ts","./app/api/policies/[key]/canary/rollback/route.ts","./app/api/policies/[key]/canary/start/route.ts","./app/api/policies/[key]/mode/route.ts","./app/api/policies/[key]/reject/route.ts","./app/api/policies/[key]/save/route.ts","./app/api/policies/simulate/route.ts","./app/api/policies/validate/route.ts","./app/api/redteam/campaigns/route.ts","./app/api/risk/assessments/[slug]/route.ts","./app/api/sources/route.ts","./lib/product/sourceconnection.ts","./app/api/sources/add/route.ts","./app/api/sources/connections/route.ts","./app/api/sources/context-check/route.ts","./app/api/sources/delete/route.ts","./app/api/sources/deprecate/route.ts","./app/api/sources/validate/route.ts","./app/api/tokens/route.ts","./app/api/tokens/[id]/revoke/route.ts","./app/api/traces/[id]/route.ts","./app/api/waitlist/route.ts","./app/blog/feed.xml/route.ts","./components/marketing/shot.tsx","./components/marketing/blog/blocks.tsx","./components/marketing/blog/card.tsx","./components/marketing/brand.tsx","./components/ui/themetoggle.tsx","./components/marketing/motion.tsx","./components/marketing/menu.tsx","./components/marketing/nav.tsx","./components/marketing/sections.tsx","./components/marketing/blog/article.tsx","./components/docs/copy.tsx","./components/docs/blocks.tsx","./components/marketing/blog/posts/ai-agent-audit-trail.tsx","./components/marketing/blog/posts/claude-code-hooks-security.tsx","./lib/generated/coverage.json","./components/marketing/blog/posts/continuous-red-teaming-ai-agents.tsx","./components/marketing/blog/posts/hidden-indirect-prompt-injection.tsx","./components/marketing/blog/posts/mcp-rug-pull-tool-poisoning.tsx","./components/marketing/blog/posts/prompt-injection-containment-not-detection.tsx","./components/marketing/blog/posts/index.ts","./lib/env.test.ts","./lib/marketing/blog.test.ts","./lib/marketing/showcase.ts","./lib/marketing/showcase.test.ts","./lib/product/controls.ts","./lib/product/coverage.ts","./lib/product/coverage.test.ts","./lib/product/entitlement.test.ts","./lib/generated/reference/finding-types.json","./lib/product/findingtypes.test.ts","./lib/product/legacyredirect.ts","./lib/product/legacyredirect.test.ts","./lib/product/proxy.test.ts","./lib/product/sourceoptions.ts","./app/error.tsx","../../../../dashboard/node_modules/next/dist/compiled/@next/font/dist/types.d.ts","../../../../dashboard/node_modules/geist/font.d.ts","../../../../dashboard/node_modules/geist/dist/mono.d.ts","../../../../dashboard/node_modules/geist/dist/sans.d.ts","../../../../dashboard/node_modules/next/dist/compiled/@next/font/dist/google/index.d.ts","../../../../dashboard/node_modules/next/font/google/index.d.ts","./app/layout.tsx","./app/loading.tsx","./app/not-found.tsx","../../../../dashboard/node_modules/next/dist/compiled/@vercel/og/index.edge.d.ts","../../../../dashboard/node_modules/next/dist/compiled/@vercel/og/index.node.d.ts","../../../../dashboard/node_modules/next/dist/server/og/image-response.d.ts","../../../../dashboard/node_modules/next/og.d.ts","./app/og.tsx","./app/opengraph-image.tsx","./app/(marketing)/how-it-works/_public.tsx","./components/marketing/platform.tsx","./components/marketing/sequence.tsx","./components/marketing/home.tsx","./app/page.tsx","./app/twitter-image.tsx","./components/marketing/charts.tsx","./app/(marketing)/benchmark/page.tsx","./app/(marketing)/compare/page.tsx","./components/marketing/capability.tsx","./app/(marketing)/control-points/page.tsx","./app/(marketing)/coverage/page.tsx","./app/(marketing)/discovery/page.tsx","./app/(marketing)/evidence/page.tsx","./app/(marketing)/frameworks/page.tsx","./app/(marketing)/grants/page.tsx","./app/(marketing)/hooks/page.tsx","./components/marketing/path.tsx","./components/marketing/product.tsx","./components/marketing/follow.tsx","./app/(marketing)/how-it-works/page.tsx","./app/(marketing)/legal/page.tsx","./app/(marketing)/live/page.tsx","./app/(marketing)/mcp/page.tsx","./components/ui/infotip.tsx","./components/ui/index.tsx","./components/marketing/playground.tsx","./app/(marketing)/playground/page.tsx","./components/marketing/waitlist.tsx","./components/marketing/editions.tsx","./app/(marketing)/pricing/page.tsx","./app/(marketing)/privacy/page.tsx","./components/marketing/mocks.tsx","./components/marketing/grant.tsx","./components/marketing/visuals.tsx","./components/marketing/pillars.tsx","./components/marketing/index-grid.tsx","./app/(marketing)/product/page.tsx","./app/(marketing)/runtime/page.tsx","./app/(marketing)/security/page.tsx","./app/(marketing)/support/page.tsx","./app/(marketing)/terms/page.tsx","./components/product/logo.tsx","./components/product/accountmenu.tsx","./components/product/notificationsbell.tsx","./components/product/commandsearch.tsx","./components/product/navicons.tsx","./components/product/sidenav.tsx","./components/product/topbarstats.tsx","./app/(product)/app/layout.tsx","./components/product/pageheader.tsx","./components/product/coverage.tsx","./app/(product)/app/page.tsx","./components/product/modal.tsx","./components/product/explainer.tsx","./app/(product)/app/agents/page.tsx","./components/product/breadcrumbs.tsx","./components/product/agentmap.tsx","./app/(product)/app/agents/[slug]/page.tsx","./components/product/countdown.tsx","./app/(product)/app/approvals/page.tsx","./app/(product)/app/board/page.tsx","./components/product/printbutton.tsx","./app/(product)/app/compliance/page.tsx","./app/(product)/app/compliance/frameworks/[key]/page.tsx","./app/(product)/app/coverage/page.tsx","./app/(product)/app/entitlement/page.tsx","./app/(product)/app/escalation/page.tsx","./app/(product)/app/escalation/conversations/[sessionid]/page.tsx","./app/(product)/app/evals/page.tsx","./app/(product)/app/evals/[key]/page.tsx","./app/(product)/app/evals/[key]/runs/[runid]/page.tsx","./components/product/findingevidence.tsx","./components/product/expandablefindingrow.tsx","./app/(product)/app/findings/page.tsx","./app/(product)/app/findings/[id]/page.tsx","./components/product/glossaryfilter.tsx","./components/product/productmap.tsx","./app/(product)/app/glossary/page.tsx","./app/(product)/app/guardrails/page.tsx","./components/product/detectorcatalogue.tsx","./components/product/judgmentposture.tsx","./app/(product)/app/policies/page.tsx","./components/product/policyeditor.tsx","./components/product/canarypanel.tsx","./app/(product)/app/policies/[key]/page.tsx","./app/(product)/app/settings/integrations/page.tsx","./app/(product)/app/settings/tokens/page.tsx","./components/product/contextcheck.tsx","./components/product/connectionfields.tsx","./components/product/sourceaddflow.tsx","./components/product/sourcerowactions.tsx","./app/(product)/app/sources/page.tsx","./components/product/repotable.tsx","./components/product/tokenmanager.tsx","./app/(product)/app/start/page.tsx","./components/product/expandabletracerow.tsx","./app/(product)/app/traces/page.tsx","./components/product/whyblocked.tsx","./app/(product)/app/traces/[id]/page.tsx","./app/(product)/login/page.tsx","./app/blog/page.tsx","./app/blog/[slug]/opengraph-image.tsx","./app/blog/[slug]/page.tsx","./app/blog/[slug]/twitter-image.tsx","./components/docs/sidebar.tsx","./app/docs/layout.tsx","./app/docs/page.tsx","./app/docs/app/page.tsx","./app/docs/app/access-and-sources/page.tsx","./app/docs/app/agents/page.tsx","./app/docs/app/approvals/page.tsx","./app/docs/app/compliance/page.tsx","./app/docs/app/evals/page.tsx","./app/docs/app/findings/page.tsx","./app/docs/app/playground/page.tsx","./app/docs/app/policies/page.tsx","./app/docs/app/start/page.tsx","./app/docs/app/traces/page.tsx","./app/docs/benchmarks/page.tsx","./app/docs/concepts/page.tsx","./app/docs/guides/approvals/page.tsx","./app/docs/guides/audit-evidence/page.tsx","./app/docs/guides/business-rules/page.tsx","./app/docs/guides/coding-agents/page.tsx","./app/docs/guides/contain-tool-calls/page.tsx","./app/docs/guides/gateway/page.tsx","./app/docs/guides/langgraph/page.tsx","./app/docs/guides/live-probes/page.tsx","./app/docs/guides/mcp/page.tsx","./app/docs/guides/monitoring/page.tsx","./app/docs/guides/observability/page.tsx","./app/docs/guides/python-auto/page.tsx","./app/docs/guides/rag/page.tsx","./app/docs/guides/red-team-and-evals/page.tsx","./app/docs/guides/scan-a-repo/page.tsx","./app/docs/guides/tuning/page.tsx","./app/docs/install/page.tsx","./app/docs/limits/page.tsx","./app/docs/plugin/page.tsx","./app/docs/quickstart/page.tsx","./lib/generated/reference/api.json","./lib/generated/reference/cli.json","./components/docs/reference.tsx","./app/docs/reference/api/page.tsx","./app/docs/reference/cli/page.tsx","./app/docs/reference/config/page.tsx","./app/docs/reference/detectors/page.tsx","./app/docs/reference/policies/page.tsx","./app/docs/reference/python/page.tsx","./app/docs/self-host/page.tsx","./app/docs/support/page.tsx","./components/marketing/boundary.tsx","./components/marketing/decisions.tsx","./components/marketing/explain.tsx","./components/marketing/hero.tsx","../../../../dashboard/node_modules/@types/estree/index.d.ts","./.next/types/routes.d.ts"],"fileIdsList":[[91,133,468,485,594,681,682,730],[91,133,186,468,485,594,681,682],[91,133,468,485,594,733],[91,133,485,594,681,682,688],[91,133,485,594,733],[91,133],[91,133,468,485,594,681,682,741,742,743],[91,133,468,485,594,681,682],[91,133,186,468,485,594,681,682,696],[91,133,436,485,594,681,682,750],[91,133,468,485,594,681,682,753],[91,133,468,485,594,681,682,759,760],[91,133,437,468,485,594,749,780,781],[91,133,437,468,485,594,749,774,777,778],[91,133,437,468,485,594,749,774,783],[91,133,485,594,704],[91,133,437,485,594,749,780],[91,133,437,468,485,594,749,774,786],[91,133,437,468,485,594,749,774],[91,133,437,468,485,594,749,774,777],[91,133,437,468,485,594,749,780],[91,133,437,468,485,594,749,777,780],[91,133,437,468,485,594,749,774,778],[91,133,437,485,594,698,749,780,796],[91,133,437,468,485,594,698,749,774,797],[91,133,485,594,774,800,801],[91,133,435,437,468,678,766,767,768,769,771,772],[91,133,146,155,593],[91,133,437,468,485,594,749,774,775],[91,133,437,485,594,749,780,807,808],[91,133,437,468,485,594,749,774,783,804,805],[91,133,437,468,485,594,707,749,774,777,812,814,815],[91,133,437,468,478,485,594,749,774,817,818],[91,133,437,468,485,594,698,749,780,822],[91,133,437,468,485,594,749,774,820],[91,133,435,437,468,478,485,594,766],[91,133,594],[91,133,431,607],[91,133,431,436,437],[91,133,431],[91,133,431,593,619],[91,133,431,593,621],[91,133,431,607,625],[91,133,431,435,436,437],[91,133,431,593,646],[91,133,431,435,436,437,662],[91,133,431,607,662],[91,133,607],[91,133,596,722],[91,133,478,485,594,596,683,693],[91,133,594,596],[91,133,468,485,594,596,676,681,682],[91,133,468,485,594,685],[91,133,186,468,485,594,685],[91,133,186,681,682,829],[91,133,468,485,594,604,685],[91,133,468,485,594,685,867],[91,133,186,468],[91,133,485,594,710,711,712,714],[91,133,594,596,597],[91,133,478],[91,133,593,594,595,596,597,598,599],[91,133,146,155,593,597],[91,133,468],[91,133,602,721],[91,133,722],[91,133,485,594,681,682,724,725,727],[91,133,485,594],[91,133,485,594,596,597,604],[91,133,186,468,684],[91,133,186],[91,133,865,866],[91,133,468,478,604],[91,133,186,466,468,594,596,675,676,681,682],[91,133,186,468,674],[91,133,466,468,596],[91,133,468,675,683,685],[91,133,468,675,683,685,688],[91,133,186,596,675,683,686,687,689,690,691,692],[91,133,186,468,597,681,682],[91,133,186,468,752],[91,133,186,756],[91,133,468,681,877],[91,133,186,468,674,681,726],[91,133,468,597],[91,133,186,468,597],[91,133,435,437,468,597,677,678,679,680],[91,133,186,468,756,757,758],[91,133,186,749],[91,133,468,597,677],[91,133,466],[91,133,186,478],[91,133,707],[91,133,468,699,749],[91,133,186,468,749,796],[91,133,186,468,749],[91,133,186,777],[91,133,468,749],[91,133,468,478,770],[91,133,186,707,813],[91,133,186,783],[91,133,436,468,702,748],[91,133,436,593],[91,133,146,155,593,596,597,604,605],[91,133,593,696],[91,133,436],[91,133,435,436],[91,133,437],[91,133,593,699],[91,133,593,625],[91,133,593,702],[91,133,593,704],[91,133,431,593,607],[91,133,431,437],[91,133,485,486,881],[91,133,155,581],[91,133,506],[91,133,496,497],[91,130,133],[91,132,133],[133],[91,133,138,168],[91,133,134,139,145,146,153,165,176],[91,133,134,135,145,153],[86,87,88,91,133],[91,133,136,177],[91,133,137,138,146,154],[91,133,138,165,173],[91,133,139,141,145,153],[91,132,133,140],[91,133,141,142],[91,133,145],[91,133,143,145],[91,132,133,145],[91,133,145,146,147,165,176],[91,133,145,146,147,160,165,168],[91,128,133,181],[91,128,133,141,145,148,153,165,176],[91,133,145,146,148,149,153,165,173,176],[91,133,148,150,165,173,176],[89,90,91,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182],[91,133,145,151],[91,133,152,176,181],[91,133,141,145,153,165],[91,133,154],[91,133,155],[91,132,133,156],[91,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182],[91,133,158],[91,133,159],[91,133,145,160,161],[91,133,160,162,177,179],[91,133,145,165,166,167,168],[91,133,165,167],[91,133,165,166],[91,133,168],[91,133,169],[91,130,133,165],[91,133,145,171,172],[91,133,171,172],[91,133,138,153,165,173],[91,133,174],[91,133,153,175],[91,133,148,159,176],[91,133,138,177],[91,133,165,178],[91,133,152,179],[91,133,180],[91,133,138,145,147,156,165,176,179,181],[91,133,165,182],[91,133,186,188,415,427,442],[91,133,186,187,415,427,442],[91,133,184,185],[91,133,489,490,491,494,495,498],[91,133,494,552,553],[91,133,494,552],[91,133,552],[91,133,492,552,556,557],[91,133,492,552,556],[91,133,488],[91,133,492,493],[91,133,492],[91,133,492,493,549,573],[91,133,549],[91,133,492,495,549,550,551],[91,133,588,589],[91,133,588,589,590,591],[91,133,588,590],[91,133,588],[91,133,710],[91,133,709,711,712],[91,133,541,542],[91,133,444],[91,133,446],[91,133,448,449,450,451],[91,133,453],[82,91,133,201,202,203,205,419],[82,91,133,191,234,236,238,239,242,419],[82,91,133,191,207,213,214,218,219,220,390,419],[91,133,419],[91,133,202,302,371,380,397],[82,91,133],[91,133,189,397],[91,133,245],[91,133,191,244,419],[91,133,148,282,302,331,483],[91,133,148,295,311,380,396],[91,133,148,346],[91,133,384],[91,133,383,384,385],[91,133,383],[82,85,91,133,148,189,198,199,202,206,207,213,221,222,223,339,362,381,415,419],[82,91,133,204,230,234,235,240,241,419,483],[91,133,204,483],[91,133,223,230,280,419,483],[91,133,483],[82,91,133,204,205,483],[91,133,237,483],[91,133,199,382,389],[91,133,159,253,397],[91,133,253,397],[91,133,186,253],[91,133,186,303],[91,133,299,344,397,475,476],[91,133,377,469,470,471,472,474],[91,133,376],[91,133,376,377],[91,133,214,340,341,342],[91,133,340,343,344],[91,133,473],[91,133,340,344],[83,91,133,186,463],[91,133,176,186],[91,133,186,204,270],[91,133,186,204],[91,133,268,272],[91,133,186,269,417],[91,133,709],[91,133,186,427],[91,133,165,183,186,427,718],[91,133,148,183,186,187,188,415,425,426,442],[91,133,148],[91,133,148,190,207,212,340,350,363,371,386,387,419,483],[91,133,198,388],[91,133,415],[81,91,133],[91,133,186,282,298,310,320,322,396],[91,133,159,282,298,319,320,321,396,482],[91,133,313,314,315,316,317,318],[91,133,315],[91,133,319],[91,133,251,252,253,255],[91,133,186,246,247,248,254],[91,133,251,254],[91,133,249],[91,133,250],[91,133,186,253,269,417],[91,133,186,253,416,417],[91,133,186,253,417],[91,133,363,393],[91,133,393],[91,133,148,190,417],[91,133,307],[91,132,133,306],[91,133,190,215,224,290,292,294,295,296,297,337,340,396,399],[91,133,224,328,340,344],[91,133,295,396],[91,133,186,295,304,305,307,308,309,310,311,312,323,324,325,326,327,329,330,396,397,483],[91,133,289],[91,133,148,159,190,191,212,224,225,264,296,337,338,339,344,363,371,392,415,419,483],[91,133,396],[91,132,133,190,202,293,296,339,392,394,395],[91,133,295],[91,132,133,212,284,285,286,287,288,289,290,291,292,294,396,397],[91,133,148,190,191,284,285,420],[91,133,190,202,339,340,363,392,396],[91,133,148,191,419],[91,133,148,165,190,191,399],[79,91,133,148,159,176,189,190,191,204,207,215,224,225,227,262,264,292,296,340,350,351,353,355,358,359,360,361,362,371,391,392,397,399,400,419],[91,133,148,165],[82,83,84,91,133,204,207,219,221,230,391,399,415,417,418,483],[91,133,148,165,176,242,243,245,246,247,248,255,483],[91,133,159,176,189,234,243,259,262,263,292,340,351,362,363,371,392,397,399,404,405,411,412],[91,133,198,199,221,339,362,392,419],[83,91,133,148,176,207,292,399,409,419],[91,133,281],[91,133,148,257,258,368],[91,133,399,419],[91,133,290,293],[91,133,292,296,391,417],[91,133,148,159,228,234,259,262,263,363,399,411,414],[91,133,148,198,199,234,364],[82,91,133,227,366,391,419],[91,133,148,176,419],[91,133,148,204,226,227,228,239,256,365,367,391,419],[85,91,133,224,296,370,415,417],[79,91,133,148,159,176,198,199,206,207,215,225,263,264,292,340,351,353,363,371,391,392,397,398,399,404,405,406,408,410,417],[91,133,148,165,199,368,399,411,413],[91,133,193,194,195,196,197],[91,133,354,400],[91,133,356],[91,133,354],[91,133,356,357],[91,133,719],[91,133,148,190,207,212,213,214],[81,83,91,133,148,159,191,215,224,264,296,348,349,371,399,415,417],[91,133,148,159,176,190,214,216,292,349,398],[91,133,285],[91,133,286],[91,133,287],[91,133,397],[91,133,209,210],[91,133,148,207,209,215],[91,133,208,210],[91,133,211],[91,133,209,243],[91,133,209,265],[91,133,209],[91,133,261,398,400],[91,133,260],[91,133,243,397,398],[91,133,352,398],[91,133,243,397],[91,133,337],[91,133,190,207,215,219,279,282,290,292,296,298,301,332,335,336,340,370,391,399],[91,133,273,276,277,278,299,300,344],[91,133,186,253,333,334],[91,133,379],[91,133,202,295,296,307,311,340,370,372,373,374,375,377,378,381,391,396,419,420],[91,133,344],[91,133,348],[91,133,148,215,266,345,347,350,370,399,415,417],[91,133,273,274,275,276,277,278,299,300,344,416],[85,91,133,148,159,176,190,209,225,243,264,292,296,368,369,371,391,392,415,419],[91,133,392,404,420,421],[91,133,148,400,419],[91,133,284,295],[91,133,283],[79,91,133,420],[91,133,284,401,419],[91,133,148,190,216,402,403,419,420,421],[91,133,186,340,341,343],[91,133,229],[83,91,133,186],[91,133,186,397],[85,91,133,186,264,296,415,417],[83,91,133,463,464],[91,133,186,272],[81,91,133,159,176,186,241,267,269,271,417],[91,133,190,204,397],[91,133,397,407],[91,133,340],[81,91,133,146,148,159,186,230,236,272,415,416],[91,133,186,187,188,415,427],[91,133,186,439,440,441,442],[91,133,138],[91,133,231,232,233],[91,133,231],[81,91,133,148,150,159,183,186,187,188,189,191,225,319,414,417,419,427,442],[91,133,455],[91,133,457],[91,133,459],[91,133,713],[91,133,461],[91,133,432,433,434],[91,133,465],[91,133,431,435,443,445,447,452,454,456,458,460,462,466,468,478,479,481,482,483,484],[91,133,467],[91,133,477],[91,133,720],[91,133,269],[91,133,480],[91,132,133,310,397,402,404,420,421,422,423,424,427,428,429,430],[91,133,183],[91,133,508],[91,133,503,505,508],[91,133,504,505],[91,133,505,508,512],[91,133,504],[91,133,505,508],[91,133,503,504,505,507],[91,133,503,505],[91,133,504,505,514],[91,133,165,183],[91,100,104,133,176],[91,100,133,165,176],[91,95,133],[91,97,100,133,173,176],[91,133,153,173],[91,95,133,183],[91,97,100,133,153,176],[91,92,93,96,99,133,145,165,176],[91,100,107,133],[91,92,98,133],[91,100,121,122,133],[91,96,100,133,168,176,183],[91,121,133,183],[91,94,95,133,183],[91,100,133],[91,94,95,96,97,98,99,100,101,102,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,122,123,124,125,126,127,133],[91,100,115,133],[91,100,107,108,133],[91,98,100,108,109,133],[91,99,133],[91,92,95,100,133],[91,100,104,108,109,133],[91,104,133],[91,98,100,103,133,176],[91,92,97,100,107,133],[91,133,165],[91,95,100,121,133,181,183],[91,133,575],[91,133,499,580,583],[91,133,489,492,494,495,550,551,552,554,555,558,559,571,572,574,583],[91,133,554,565,566,583],[91,133,554,555,562,583],[91,133,492,494,554,555,558,583],[91,133,517],[91,133,492,499,554,555,558,567,583],[91,133,548,578,580],[91,133,136,146,165,492,494,499,548,552,554,555,558,559,562,563,564,567,570,571,572,576,577,580,583],[91,133,517,554,555,558,583],[91,133,554,565,566,567,583],[91,133,517,554,559,560,561,583],[91,133,136,146,165,492,494,499,517,548,552,554,555,558,559,560,561,562,563,564,565,566,567,570,571,572,576,577,578,579,580,583],[91,133,489,492,494,499,517,552,554,555,558,559,560,561,562,563,565,566,567,570,583,584,585,586,587,592],[91,133,492,494,554,555,558,559,565,566,567,583,585],[91,133,568],[91,133,568,569],[91,133,536],[91,133,534,536],[91,133,525,533,534,535,537,539],[91,133,523],[91,133,526,531,536,539],[91,133,522,539],[91,133,526,527,530,531,532,539],[91,133,526,527,528,530,531,539],[91,133,523,524,525,526,527,531,532,533,535,536,537,539],[91,133,539],[91,133,521,523,524,525,526,527,528,530,531,532,533,534,535,536,537,538],[91,133,521,539],[91,133,526,528,529,531,532,539],[91,133,530,539],[91,133,531,532,536,539],[91,133,524,534],[91,133,500],[91,133,145,146,148,149,150,153,165,173,176,182,183,500,501,502,509,510,511,513,515,517,518,519,520,540,544,545,546,547,548],[91,133,500,501,502,516],[91,133,502],[91,133,543],[91,133,509,519,548],[91,133,509,548]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"e12a46ce14b817d4c9e6b2b478956452330bf00c9801b79de46f7a1815b5bd40","impliedFormat":1},{"version":"4fd3f3422b2d2a3dfd5cdd0f387b3a8ec45f006c6ea896a4cb41264c2100bb2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"69e65d976bf166ce4a9e6f6c18f94d2424bf116e90837ace179610dbccad9b42","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"bab26767638ab3557de12c900f0b91f710c7dc40ee9793d5a27d32c04f0bf646","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"61d6a2092f48af66dbfb220e31eea8b10bc02b6932d6e529005fd2d7b3281290","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","impliedFormat":1},{"version":"829b9e6028b29e6a8b1c01ddb713efe59da04d857089298fa79acbdb3cfcfdef","impliedFormat":1},{"version":"24f8562308dd8ba6013120557fa7b44950b619610b2c6cb8784c79f11e3c4f90","impliedFormat":1},{"version":"5f90b8c733a1bda63e42160b15a2301051e83a6f9d5332a59d16eb12f463270d","impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","impliedFormat":1},{"version":"631eff75b0e35d1b1b31081d55209abc43e16b49426546ab5a9b40bdd40b1f60","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fd06258805d26c72f5997e07a23155d322d5f05387adb3744a791fe6a0b042d","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"ba97261afafe85aafe76d988e65e531da8e8cf791c49caf0531f5dd1689bd91b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f52e8dacc97d71dcc96af29e49584353f9c54cb916d132e3e768d8b8129c928d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"53eac70430b30089a3a1959d8306b0f9cfaf0de75224b68ef25243e0b5ad1ca3","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"86956cc2eb9dd371d6fab493d326a574afedebf76eef3fa7833b8e0d9b52d6f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"24642567d3729bcc545bacb65ee7c0db423400c7f1ef757cab25d05650064f98","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"e9ad08a376ac84948fcca0013d6f1d4ae4f9522e26b91f87945b97c99d7cc30b","impliedFormat":1},{"version":"eaf9ee1d90a35d56264f0bf39842282c58b9219e112ac7d0c1bce98c6c5da672","impliedFormat":1},{"version":"c15c4427ae7fd1dcd7f312a8a447ac93581b0d4664ddf151ecd07de4bf2bb9d7","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"aeac7c51bde4658c192bc45819344eb20fc64743264b0465be6025201220a6b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4047ed87e765bd3bcc316a0c4c4c8b0061628460d8a5412d1c4b53a4658665a","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"3eb62baae4df08c9173e6903d3ca45942ccec8c3659b0565684a75f3292cffbb","affectsGlobalScope":true,"impliedFormat":1},{"version":"42aaa94addeed66a04b61e433c14e829c43d1efd653cf2fda480c5fb3d722ed8","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"15c5e91b5f08be34a78e3d976179bf5b7a9cc28dc0ef1ffebffeb3c7812a2dca","impliedFormat":1},{"version":"58832ded29e0094047596544ac391d68c799d7bd7d35936f47221857141628f1","impliedFormat":1},{"version":"553870e516f8c772b89f3820576152ebc70181d7994d96917bb943e37da7f8a7","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"745c4240220559bd340c8aeb6e3c5270a709d3565e934dc22a69c304703956bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"9212c6e9d80cb45441a3614e95afd7235a55a18584c2ed32d6c1aca5a0c53d93","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"6bd91a2a356600dee28eb0438082d0799a18a974a6537c4410a796bab749813c","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"ae25afbbf1ed5df63a177d67b9048bf7481067f1b8dc9c39212e59db94fc9fc6","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"da172a28c35d5f298bf5f0361725cc80f45e89e803a353c56e1aa347e10f572d","impliedFormat":1},{"version":"865a2612f5ec073dd48d454307ccabb04c48f8b96fda9940c5ebfe6b4b451f51","impliedFormat":1},{"version":"4558ac151f289d39f651a630cc358111ef72c1148e06627ef7edaeb01eb26c82","impliedFormat":1},{"version":"413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","impliedFormat":1},{"version":"35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","impliedFormat":1},{"version":"1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"acf5a2ac47b59ca07afa9abbd2b31d001bf7448b041927befae2ea5b1951d9f9","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"d71291eff1e19d8762a908ba947e891af44749f3a2cbc5bd2ec4b72f72ea795f","impliedFormat":1},{"version":"c0480e03db4b816dff2682b347c95f2177699525c54e7e6f6aa8ded890b76be7","impliedFormat":1},{"version":"27ab780875bcbb65e09da7496f2ca36288b0c541abaa75c311450a077d54ec15","impliedFormat":1},{"version":"ffa495b17a5ef1d0399586b590bd281056cee6ce3583e34f39926f8dcc6ecdb5","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","impliedFormat":1},{"version":"b6db56e4903e9c32e533b78ac85522de734b3d3a8541bf24d256058d464bf04b","impliedFormat":1},{"version":"24daa0366f837d22c94a5c0bad5bf1fd0f6b29e1fae92dc47c3072c3fdb2fbd5","impliedFormat":1},{"version":"570bb5a00836ffad3e4127f6adf581bfc4535737d8ff763a4d6f4cc877e60d98","impliedFormat":1},{"version":"889c00f3d32091841268f0b994beba4dceaa5df7573be12c2c829d7c5fbc232c","impliedFormat":1},{"version":"65f43099ded6073336e697512d9b80f2d4fec3182b7b2316abf712e84104db00","impliedFormat":1},{"version":"ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","impliedFormat":1},{"version":"d6e73f8010935b7b4c7487b6fb13ea197cc610f0965b759bec03a561ccf8423a","impliedFormat":1},{"version":"3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","impliedFormat":1},{"version":"174f3864e398f3f33f9a446a4f403d55a892aa55328cf6686135dfaf9e171657","impliedFormat":1},{"version":"824c76aec8d8c7e65769688cbee102238c0ef421ed6686f41b2a7d8e7e78a931","impliedFormat":1},{"version":"75b868be3463d5a8cfc0d9396f0a3d973b8c297401d00bfb008a42ab16643f13","impliedFormat":1},{"version":"5178eb4415a172c287c711dc60a619e110c3fd0b7de01ed0627e51a5336aa09c","impliedFormat":1},{"version":"ca6e5264278b53345bc1ce95f42fb0a8b733a09e3d6479c6ccfca55cdc45038c","impliedFormat":1},{"version":"15a234e5031b19c48a69ccc1607522d6e4b50f57d308ecb7fe863d44cd9f9eb3","impliedFormat":1},{"version":"ad0d1d75d129b1c80f911be438d6b61bfa8703930a8ff2be2f0e1f8a91841c64","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"496bbf339f3838c41f164238543e9fe5f1f10659cb30b68903851618464b98ba","impliedFormat":1},{"version":"9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","impliedFormat":1},{"version":"fb1d8e814a3eeb5101ca13515e0548e112bd1ff3fb358ece535b93e94adf5a3a","impliedFormat":1},{"version":"98b18458acb46072947aabeeeab1e410f047e0cacc972943059ca5500b0a5e95","impliedFormat":1},{"version":"361e2b13c6765d7f85bb7600b48fde782b90c7c41105b7dab1f6e7871071ba20","impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","impliedFormat":1},{"version":"380647d8f3b7f852cca6d154a376dbf8ac620a2f12b936594504a8a852e71d2f","impliedFormat":1},{"version":"208c9af9429dd3c76f5927b971263174aaa4bc7621ddec63f163640cbd3c473c","impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","impliedFormat":1},{"version":"a23185bc5ef590c287c28a91baf280367b50ae4ea40327366ad01f6f4a8edbc5","impliedFormat":1},{"version":"bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","impliedFormat":1},{"version":"002eae065e6960458bda3cf695e578b0d1e2785523476f8a9170b103c709cd4f","impliedFormat":1},{"version":"c83bb0c9c5645a46c68356c2f73fdc9de339ce77f7f45a954f560c7e0b8d5ebb","impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","impliedFormat":1},{"version":"72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","impliedFormat":1},{"version":"2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","impliedFormat":1},{"version":"c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","impliedFormat":1},{"version":"dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","impliedFormat":1},{"version":"b064c36f35de7387d71c599bfcf28875849a1dbc733e82bd26cae3d1cd060521","impliedFormat":1},{"version":"6a148329edecbda07c21098639ef4254ef7869fb25a69f58e5d6a8b7b69d4236","impliedFormat":1},{"version":"8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","impliedFormat":1},{"version":"f63ab283a1c8f5c79fabe7ca4ef85f9633339c4f0e822fce6a767f9d59282af2","impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","impliedFormat":1},{"version":"a54c996c8870ef1728a2c1fa9b8eaec0bf4a8001cd2583c02dd5869289465b10","impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","impliedFormat":1},{"version":"3754982006a3b32c502cff0867ca83584f7a43b1035989ca73603f400de13c96","impliedFormat":1},{"version":"a30ae9bb8a8fa7b90f24b8a0496702063ae4fe75deb27da731ed4a03b2eb6631","impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","impliedFormat":1},{"version":"50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","impliedFormat":1},{"version":"7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","impliedFormat":1},{"version":"413586add0cfe7369b64979d4ec2ed56c3f771c0667fbde1bf1f10063ede0b08","impliedFormat":1},{"version":"06472528e998d152375ad3bd8ebcb69ff4694fd8d2effaf60a9d9f25a37a097a","impliedFormat":1},{"version":"50b5bc34ce6b12eccb76214b51aadfa56572aa6cc79c2b9455cdbb3d6c76af1d","impliedFormat":1},{"version":"b7e16ef7f646a50991119b205794ebfd3a4d8f8e0f314981ebbe991639023d0e","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"a401617604fa1f6ce437b81689563dfdc377069e4c58465dbd8d16069aede0a5","impliedFormat":1},{"version":"e9dd71cf12123419c60dab867d44fbee5c358169f99529121eaef277f5c83531","impliedFormat":1},{"version":"5b6a189ba3a0befa1f5d9cb028eb9eec2af2089c32f04ff50e2411f63d70f25d","impliedFormat":1},{"version":"d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","impliedFormat":1},{"version":"e91f7b1344577a02f051b9b471f33044fef8334a76dc9e1de003d17595a5219b","impliedFormat":1},{"version":"3af3584f79c57853028ef9421ec172539e1fe01853296dc05a9d615ade4ffaf6","impliedFormat":1},{"version":"20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","impliedFormat":1},{"version":"461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","impliedFormat":1},{"version":"1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","impliedFormat":1},{"version":"0c7c947ff881c4274c0800deaa0086971e0bfe51f89a33bd3048eaa3792d4876","affectsGlobalScope":true,"impliedFormat":1},{"version":"db01d18853469bcb5601b9fc9826931cc84cc1a1944b33cad76fd6f1e3d8c544","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","impliedFormat":1},{"version":"15b36126e0089bfef173ab61329e8286ce74af5e809d8a72edcafd0cc049057f","impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","impliedFormat":1},{"version":"a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","impliedFormat":1},{"version":"ad10d4f0517599cdeca7755b930f148804e3e0e5b5a3847adce0f1f71bbccd74","impliedFormat":1},{"version":"1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","impliedFormat":1},{"version":"0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","impliedFormat":1},{"version":"c49469a5349b3cc1965710b5b0f98ed6c028686aa8450bcb3796728873eb923e","impliedFormat":1},{"version":"4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","impliedFormat":1},{"version":"7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","impliedFormat":1},{"version":"72d63643a657c02d3e51cd99a08b47c9b020a565c55f246907050d3c8a5e77fb","impliedFormat":1},{"version":"1d415445ea58f8033ba199703e55ff7483c52ac6742075b803bd3e7bbe9f5d61","impliedFormat":1},{"version":"d6406c629bb3efc31aedb2de809bef471e475c86c7e67f3ef9b676b5d7e0d6b2","impliedFormat":1},{"version":"27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","impliedFormat":1},{"version":"71d8ba39a9e024d9e4bb922464d18542ed8d2c25ee78efa7890c27213cc6e5d3","impliedFormat":1},{"version":"8c030e515014c10a2b98f9f48408e3ba18023dfd3f56e3312c6c2f3ae1f55a16","impliedFormat":1},{"version":"dafc31e9e8751f437122eb8582b93d477e002839864410ff782504a12f2a550c","impliedFormat":1},{"version":"754498c5208ce3c5134f6eabd49b25cf5e1a042373515718953581636491f3c3","impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","impliedFormat":1},{"version":"f56bdc6884648806d34bc66d31cdb787c4718d04105ce2cd88535db214631f82","impliedFormat":1},{"version":"633d58a237f4bb25ec7d565e4ffa32cecdcee8660ac12189c4351c52557cee9e","impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","impliedFormat":1},{"version":"13283350547389802aa35d9f2188effaeac805499169a06ef5cd77ce2a0bd63f","impliedFormat":1},{"version":"ce791f6ea807560f08065d1af6014581eeb54a05abd73294777a281b6dfd73c2","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"49f95e989b4632c6c2a578cc0078ee19a5831832d79cc59abecf5160ea71abad","impliedFormat":1},{"version":"9666533332f26e8995e4d6fe472bdeec9f15d405693723e6497bf94120c566c8","impliedFormat":1},{"version":"ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","impliedFormat":1},{"version":"796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","impliedFormat":1},{"version":"5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","impliedFormat":1},{"version":"e17cd049a1448de4944800399daa4a64c5db8657cc9be7ef46be66e2a2cd0e7c","impliedFormat":1},{"version":"43fa6ea8714e18adc312b30450b13562949ba2f205a1972a459180fa54471018","impliedFormat":1},{"version":"6e89c2c177347d90916bad67714d0fb473f7e37fb3ce912f4ed521fe2892cd0d","impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","impliedFormat":1},{"version":"4d4927cbee21750904af7acf940c5e3c491b4d5ebc676530211e389dd375607a","impliedFormat":1},{"version":"72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","impliedFormat":1},{"version":"8a97e578a9bc40eb4f1b0ca78f476f2e9154ecbbfd5567ee72943bab37fc156a","impliedFormat":1},{"version":"c857e0aae3f5f444abd791ec81206020fbcc1223e187316677e026d1c1d6fe08","impliedFormat":1},{"version":"ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","impliedFormat":1},{"version":"2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","impliedFormat":1},{"version":"2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","impliedFormat":1},{"version":"f22d05663d873ee7a600faf78abb67f3f719d32266803440cf11d5db7ac0cab2","impliedFormat":1},{"version":"d93c544ad20197b3976b0716c6d5cd5994e71165985d31dcab6e1f77feb4b8f2","impliedFormat":1},{"version":"35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","impliedFormat":1},{"version":"a8b1c79a833ee148251e88a2553d02ce1641d71d2921cce28e79678f3d8b96aa","impliedFormat":1},{"version":"126d4f950d2bba0bd45b3a86c76554d4126c16339e257e6d2fabf8b6bf1ce00c","impliedFormat":1},{"version":"7e0b7f91c5ab6e33f511efc640d36e6f933510b11be24f98836a20a2dc914c2d","impliedFormat":1},{"version":"045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","impliedFormat":1},{"version":"2d3cc2211f352f46ea6b7cf2c751c141ffcdf514d6e7ae7ee20b7b6742da313f","impliedFormat":1},{"version":"c75445151ff8b77d9923191efed7203985b1a9e09eccf4b054e7be864e27923d","impliedFormat":1},{"version":"0aedb02516baf3e66b2c1db9fef50666d6ed257edac0f866ea32f1aa05aa474f","impliedFormat":1},{"version":"fa8a8fbf91ee2a4779496225f0312aac6635b0f21aa09cdafa4283fe32d519c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e8aef93d79b000deb6ec336b5645c87de167168e184e84521886f9ecc69a4b5","impliedFormat":1},{"version":"56ccb49443bfb72e5952f7012f0de1a8679f9f75fc93a5c1ac0bafb28725fc5f","impliedFormat":1},{"version":"20fa37b636fdcc1746ea0738f733d0aed17890d1cd7cb1b2f37010222c23f13e","impliedFormat":1},{"version":"d90b9f1520366d713a73bd30c5a9eb0040d0fb6076aff370796bc776fd705943","impliedFormat":1},{"version":"bef86adb77316505c6b471da1d9b8c9e428867c2566270e8894d4d773a1c4dc2","impliedFormat":1},{"version":"de7052bfee2981443498239a90c04ea5cc07065d5b9bb61b12cb6c84313ad4ef","impliedFormat":1},{"version":"a3e7d932dc9c09daa99141a8e4800fc6c58c625af0d4bbb017773dc36da75426","impliedFormat":1},{"version":"43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","impliedFormat":1},{"version":"4a2edd238d9104eac35b60d727f1123de5062f452b70ed8e0366cb36387dfdfd","impliedFormat":1},{"version":"ca921bf56756cb6fe957f6af693a35251b134fb932dc13f3dfff0bb7106f80b4","impliedFormat":1},{"version":"fee92c97f1aa59eb7098a0cc34ff4df7e6b11bae71526aca84359a2575f313d8","impliedFormat":1},{"version":"0bd0297484aacea217d0b76e55452862da3c5d9e33b24430e0719d1161657225","impliedFormat":1},{"version":"2ab6d334bcbf2aff3acfc4fd8c73ecd82b981d3c3aa47b3f3b89281772286904","impliedFormat":1},{"version":"d07cbc787a997d83f7bde3877fec5fb5b12ce8c1b7047eb792996ed9726b4dde","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"4805f6161c2c8cefb8d3b8bd96a080c0fe8dbc9315f6ad2e53238f9a79e528a6","impliedFormat":1},{"version":"b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","impliedFormat":1},{"version":"f374cb24e93e7798c4d9e83ff872fa52d2cdb36306392b840a6ddf46cb925cb6","impliedFormat":1},{"version":"49179c6a23701c642bd99abe30d996919748014848b738d8e85181fc159685ff","impliedFormat":1},{"version":"7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","impliedFormat":1},{"version":"fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","impliedFormat":1},{"version":"45490817629431853543adcb91c0673c25af52a456479588b6486daba34f68bb","impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","impliedFormat":1},{"version":"8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","impliedFormat":1},{"version":"8514c62ce38e58457d967e9e73f128eedc1378115f712b9eef7127f7c88f82ae","impliedFormat":1},{"version":"f1289e05358c546a5b664fbb35a27738954ec2cc6eb4137350353099d154fc62","impliedFormat":1},{"version":"752513f35f6cff294ffe02d6027c41373adf7bfa35e593dbfd53d95c203635ee","impliedFormat":1},{"version":"6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","impliedFormat":1},{"version":"7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","impliedFormat":1},{"version":"1a7e2ea171726446850ec72f4d1525d547ff7e86724cc9e7eec509725752a758","impliedFormat":1},{"version":"8c901126d73f09ecdea4785e9a187d1ac4e793e07da308009db04a7283ec2f37","impliedFormat":1},{"version":"c1de754ab5f3b0f4036d6893c74a0fc984c7fcb07936086f19bbe2974406775b","impliedFormat":1},{"version":"aab290b8e4b7c399f2c09b957666fc95335eb4522b2dd9ead1bf0cb64da6d6ee","impliedFormat":1},{"version":"94fe3281392e1015b22f39535878610b4fa6f1388dc8d78746be3bc4e4bb8950","impliedFormat":1},{"version":"2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","impliedFormat":1},{"version":"06c25ddfc2242bd06c19f66c9eae4c46d937349a267810f89783680a1d7b5259","impliedFormat":1},{"version":"120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","impliedFormat":1},{"version":"5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","impliedFormat":1},{"version":"bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","impliedFormat":1},{"version":"c7f6485931085bf010fbaf46880a9b9ec1a285ad9dc8c695a9e936f5a48f34b4","impliedFormat":1},{"version":"14f6b927888a1112d662877a5966b05ac1bf7ed25d6c84386db4c23c95a5363b","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"0427df5c06fafc5fe126d14b9becd24160a288deff40e838bfbd92a35f8d0d00","impliedFormat":1},{"version":"90c54a02432d04e4246c87736e53a6a83084357acfeeba7a489c5422b22f5c7a","impliedFormat":1},{"version":"49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","impliedFormat":1},{"version":"bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","impliedFormat":1},{"version":"92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","impliedFormat":1},{"version":"f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","impliedFormat":1},{"version":"83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","impliedFormat":1},{"version":"0a372c2d12a259da78e21b25974d2878502f14d89c6d16b97bd9c5017ab1bc12","impliedFormat":1},{"version":"57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","impliedFormat":1},{"version":"6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","impliedFormat":1},{"version":"ec1ca97598eda26b7a5e6c8053623acbd88e43be7c4d29c77ccd57abc4c43999","impliedFormat":1},{"version":"efc0e6a64feef102d5edef7525de0c2ac5961821f12ae5038f0d3a8631457e10","impliedFormat":1},{"version":"a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","impliedFormat":1},{"version":"771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","impliedFormat":1},{"version":"232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","impliedFormat":1},{"version":"a47e6d954d22dd9ebb802e7e431b560ed7c581e79fb885e44dc92ed4f60d4c07","impliedFormat":1},{"version":"f019e57d2491c159d47a107fd90219a1734bdd2e25cd8d1db3c8fae5c6b414c4","impliedFormat":1},{"version":"8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","impliedFormat":1},{"version":"d1c9bf292a54312888a77bb19dba5e2503ad803f5393beafd45d78d2f4fe9b48","impliedFormat":1},{"version":"d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","impliedFormat":1},{"version":"6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","impliedFormat":1},{"version":"4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","impliedFormat":1},{"version":"6dcf60530c25194a9ee0962230e874ff29d34c59605d8e069a49928759a17e0a","impliedFormat":1},{"version":"1a42d2ec31a1fe62fdc51591768695ed4a2dc64c01be113e7ff22890bebb5e3f","impliedFormat":1},{"version":"4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","impliedFormat":1},{"version":"1d17ba45cfbe77a9c7e0df92f7d95f3eefd49ee23d1104d0548b215be56945ad","impliedFormat":1},{"version":"f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","impliedFormat":1},{"version":"1d879125d1ec570bf04bc1f362fdbe0cb538315c7ac4bcfcdf0c1e9670846aa6","impliedFormat":1},{"version":"a84d677a6172185d541b1b00ea8e4e04217b64351098f9e5c07403fdec305683","impliedFormat":1},{"version":"46273e8c29816125d0d0b56ce9a849cc77f60f9a5ba627447501d214466f0ff3","impliedFormat":1},{"version":"f82579d87701d639ff4e3930a9b24f4ee13ca74221a9a3a792feb47f01881a9c","impliedFormat":1},{"version":"d7e5d5245a8ba34a274717d085174b2c9827722778129b0081fefd341cca8f55","impliedFormat":1},{"version":"d9d32f94056181c31f553b32ce41d0ef75004912e27450738d57efcd2409c324","impliedFormat":1},{"version":"3be035da7bee86b4c3abf392e0edaa44fc6e45092995eefe36b39118c8a84068","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f828825d077c2fa0ea606649faeb122749273a353daab23924fe674e98ba44c","impliedFormat":1},{"version":"2896c2e673a5d3bd9b4246811f79486a073cbb03950c3d252fba10003c57411a","impliedFormat":1},{"version":"9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","impliedFormat":1},{"version":"d9c46395b3980848a6c4b2f44e986d27d07faee3b3b4b1f214793255b8c64f2a","impliedFormat":1},{"version":"4fbd3116e00ed3a6410499924b6403cc9367fdca303e34838129b328058ede40","impliedFormat":1},{"version":"0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","impliedFormat":1},{"version":"5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","impliedFormat":1},{"version":"a68d4b3182e8d776cdede7ac9630c209a7bfbb59191f99a52479151816ef9f9e","impliedFormat":99},{"version":"39644b343e4e3d748344af8182111e3bbc594930fff0170256567e13bbdbebb0","impliedFormat":99},{"version":"ed7fd5160b47b0de3b1571c5c5578e8e7e3314e33ae0b8ea85a895774ee64749","impliedFormat":99},{"version":"63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","impliedFormat":1},{"version":"ecbaf0da125974be39c0aac869e403f72f033a4e7fd0d8cd821a8349b4159628","impliedFormat":1},{"version":"4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6","impliedFormat":1},{"version":"ceec3c81b2d81f5e3b855d9367c1d4c664ab5046dff8fd56552df015b7ccbe8f","affectsGlobalScope":true,"impliedFormat":1},{"version":"fec01479923e169fb52bd4f668dbeef1d7a7ea6e6d491e15617b46f2cacfa37d","impliedFormat":1},{"version":"8a8fb3097ba52f0ae6530ec6ab34e43e316506eb1d9aa29420a4b1e92a81442d","impliedFormat":1},{"version":"44e09c831fefb6fe59b8e65ad8f68a7ecc0e708d152cfcbe7ba6d6080c31c61e","impliedFormat":1},{"version":"1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","impliedFormat":1},{"version":"8385f3ce7be08e6625e91a03cccc423585d5b46f75e33557cfe0ca20e442be8e","signature":"4117e648d4533fad919112e15e3b8fd26c5944b5f2999ba01c01431d17f874fe"},{"version":"3c2427d2b1af5c390a352f9e38f0c64d486150c44572c57a59fc2196631927d4","signature":"b64b513bbff0c49393d482fb652c10e83c55fcc0806aaf86834fc8450a6317db"},{"version":"ed947637acd101bfdc566f5e640c79c986f14de22987660aaf62b84247fe68ee","signature":"1d4eab0c5dd0e1ea56f82736ca04fcbe7c46e281d5143f9f5e38ceee213fb3c2"},{"version":"acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","impliedFormat":1},{"version":"d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","impliedFormat":1},{"version":"f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","impliedFormat":1},{"version":"643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","impliedFormat":1},{"version":"0f6666b58e9276ac3a38fdc80993d19208442d6027ab885580d93aec76b4ef00","impliedFormat":1},{"version":"05fd364b8ef02fb1e174fbac8b825bdb1e5a36a016997c8e421f5fab0a6da0a0","impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","impliedFormat":1},{"version":"407a06ba04eede4074eec470ecba2784cbb3bf4e7de56833b097dd90a2aa0651","impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","impliedFormat":1},{"version":"98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","impliedFormat":1},{"version":"5c96bad5f78466785cdad664c056e9e2802d5482ca5f862ed19ba34ffbb7b3a4","impliedFormat":1},{"version":"81d8603ac527e75cfec72bb9391228b58f161c2b33514a9d814c7f3ebd3ef466","impliedFormat":1},{"version":"5f3dc10ae646f375776b4e028d2bed039a93eebbba105694d8b910feebbe8b9c","impliedFormat":1},{"version":"bb0cd7862b72f5eba39909c9889d566e198fcaddf7207c16737d0c2246112678","impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","impliedFormat":1},{"version":"320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","impliedFormat":1},{"version":"d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","impliedFormat":1},{"version":"bad68fd0401eb90fe7da408565c8aee9c7a7021c2577aec92fa1382e8876071a","impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","impliedFormat":1},{"version":"4655709c9cb3fd6db2b866cab7c418c40ed9533ce8ea4b66b5f17ec2feea46a9","impliedFormat":1},{"version":"87affad8e2243635d3a191fa72ef896842748d812e973b7510a55c6200b3c2a4","impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","impliedFormat":1},{"version":"3eecb25bb467a948c04874d70452b14ae7edb707660aac17dc053e42f2088b00","impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","impliedFormat":1},{"version":"330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","impliedFormat":1},{"version":"1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","impliedFormat":1},{"version":"84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","impliedFormat":1},{"version":"1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","impliedFormat":1},{"version":"30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","impliedFormat":1},{"version":"03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","impliedFormat":1},{"version":"5f0292a40df210ab94b9fb44c8b775c51e96777e14e073900e392b295ca1061b","impliedFormat":1},{"version":"bc9ee0192f056b3d5527bcd78dc3f9e527a9ba2bdc0a2c296fbc9027147df4b2","impliedFormat":1},{"version":"8627ad129bcf56e82adff0ab5951627c993937aa99f5949c33240d690088b803","impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","impliedFormat":1},{"version":"5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","impliedFormat":1},{"version":"8fac4a15690b27612d8474fb2fc7cc00388df52d169791b78d1a3645d60b4c8b","affectsGlobalScope":true,"impliedFormat":1},{"version":"064ac1c2ac4b2867c2ceaa74bbdce0cb6a4c16e7c31a6497097159c18f74aa7c","impliedFormat":1},{"version":"3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","impliedFormat":1},{"version":"1d63055b690a582006435ddd3aa9c03aac16a696fac77ce2ed808f3e5a06efab","impliedFormat":1},{"version":"b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","impliedFormat":1},"85ae5aee75f011967cf2d25cbc342f62d69314e9d925f7f4aa3456fc2cffcca6",{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"4ead13a482c539b77394b2a97e3b877b809eac596390371cea490286f53b996a","impliedFormat":99},{"version":"12405c748be62bbefb6df7515956b0921f84d7b444d1f6c3e00af1980cc3af17","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"3a582c6e8906f5b094ccf0de6cc6f4f8a54b05a34f52517aba5c9c7f704f6b28","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"49ab4f1d153a252779958fc87b700743d32b5ffa42addd70ae23ad3f429daa5c","impliedFormat":99},{"version":"0528f6d21f7a02d4092895090d2dd86104bd5a3e79eced96d5a1a7dd90943d17","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"5c935b7fc4ddc1410ea1cd7cd4e35ed106a6e4920dd27a9480a40fd224359dc3","affectsGlobalScope":true,"impliedFormat":99},{"version":"64ccfe7dcbcad9b8a661a042ecb2309e41b9ab957f7b8cd070b05583a7821a13","impliedFormat":99},{"version":"c911b3bd083dade8fdb7775261aa25feae695d562a3b11209650b47be90043fc","impliedFormat":99},{"version":"98580d6ed68c9cee7f956685abbb6502d70bd92f48175ac807ae6c5e254fadc6","impliedFormat":99},{"version":"fc5ad2ec8b130a59612c5cfcc2cdca9bcdd80851adb8acdb004aaeff00cc978d","impliedFormat":99},{"version":"f76d2226b20ec0d3e884114cfbbb933cb4d25d26cc306e8315e21a0e3afafc39","impliedFormat":99},{"version":"709b4ace1214759ca558d2b85c1ac20011c384077769ed8e08d6b2e6d68ef6d9","impliedFormat":99},{"version":"638a22f8e16b31c37297483fa38cfc760ed309b16d4c606a7b4532f4394c9c0c","impliedFormat":99},{"version":"9394183f4c37b8591156f32e41223c9e0dd211eefe7499155d4cdf15268eaea8","impliedFormat":99},{"version":"3ad031a1ffc57462a2c14b2f2e1e6eaa22787748fbcc32dd6a8a534a8e5e18b9","impliedFormat":99},{"version":"4273ef5d82e0f998bf38e777967753cde645668daf16dc8c3a72162c9cb4ff71","impliedFormat":99},{"version":"0824e917b53180b0b433f4fa85a1cc1d689a6c5f118bfdbe2086aa3b328c12db","impliedFormat":99},{"version":"7d3e062a778b8f5ea4f0cac7e925e31f88e6739812ebc5f827474324a4048f14","impliedFormat":99},{"version":"ca8bf149019241a83e9ace4f614d0410c00bff1246dbd1bbe63f88737823723d","impliedFormat":99},{"version":"33338bdcc31a340ca3a62ca2fac6086c5ac899b98cc50246d8fd4333c138e501","impliedFormat":99},{"version":"e27361b231a041b6c4da9fae61463d39d99f64926e1cd732513fd413b77bf869","impliedFormat":99},{"version":"ae1da3dbcdf34006350c132fd8795b1fc9a86d8fa398cd00de50463bd1eba9e2","impliedFormat":99},{"version":"4e003c868b0d8f8ad200b96cbc653e18e513fa23e1c19c4fe3cc25d4394efc47","impliedFormat":99},{"version":"046271de66ae07ca543f79eba0de19f342b78e759b597929159b2392e0a7ac87","impliedFormat":99},{"version":"e0864480ea083087d705f9405bd6bf59b795e8474c3447f0d6413b2bce535a09","impliedFormat":99},{"version":"e67cbea16f1994af89efd700542dbf3828a46a52b29e4d67e801bd7869dc103c","impliedFormat":99},{"version":"f582b0fcbf1eea9b318ab92fb89ea9ab2ebb84f9b60af89328a91155e1afce72","impliedFormat":99},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"52dcc257df5119fb66d864625112ce5033ac51a4c2afe376a0b299d2f7f76e4a","impliedFormat":1},{"version":"e5bab5f871ef708d52d47b3e5d0aa72a08ee7a152f33931d9a60809711a2a9a3","impliedFormat":1},{"version":"e16dc2a81595736024a206c7d5c8a39bfe2e6039208ef29981d0d95434ba8fcf","impliedFormat":1},{"version":"38cb107048cd8ba54a70014ef9a30cf57bee0d9f10a0ca4cefa974056e1ee460","impliedFormat":1},{"version":"19ee8416e6473ed6c7adb868fa796b5653cf0fa2a337658e677eaa0d134388c3","impliedFormat":1},{"version":"1328ab4e442614b28cdb3d4b414cf68325c0da0dca07287a338d0654b7a00261","impliedFormat":1},{"version":"a039dc21f045919f3cbee2ec13812cc6cc3eebc99dae4be00973230f468d19a6","impliedFormat":1},{"version":"3fbe57af01460e49dcd29df55d6931e1672bc6f1be0fb073d11410bc16f9037d","impliedFormat":1},{"version":"f760be449e8562ec5c09bb5187e8e1eabf3c113c0c58cddda53ef8c69f3e2131","impliedFormat":1},{"version":"44325ed13294fce6ab825b82947bbeed2611db7dad9d9135260192f375e5a189","impliedFormat":1},{"version":"e392e8fb5b514eafc585601c1d781485aa6dd6a320e75daf1064a4c6918a1b45","impliedFormat":1},{"version":"46e4a36e8ddbdfb4e7330e11c81c970dc8b218611df9183d39c41c5f8c653b55","impliedFormat":1},{"version":"3cc8a3d123b6b232d48d34b51b785f9da8d193f5b5817fa521fcd2f3b9315c55","impliedFormat":1},{"version":"6332f565867cf4a740a70e30f31cefba37ef7cebcf74f22eab8d744fde6d193e","impliedFormat":1},{"version":"9a195d8476f48523446ece812e5450b5b1ec8c3b6abf99efb8ee2479524f6f56","impliedFormat":1},{"version":"17f2922d41ddd032830a91371c948cd9ce903b35c95adca72271a54584f19b0b","impliedFormat":1},{"version":"3eed76ede2a1a14d7c9bb0a642041282dcc264811139d3dd275c9fe14efc9840","impliedFormat":1},{"version":"354a7f8e1287d9d6b7561bc97fdd8cbc2f7c1dd79e4cb37b942e8a5cfaff1085","impliedFormat":1},{"version":"8d369483f0c2b9ee388129cfdb6a43bc8112b377e86a41884bd06e19ce04f4c1","impliedFormat":99},{"version":"f3fe8197217cb6fd6e07c0eaa0966e4ece77cd779cbfc55767a93704cc692e04","impliedFormat":1},{"version":"a18642ddf216f162052a16cba0944892c4c4c977d3306a87cb673d46abbb0cbf","impliedFormat":1},{"version":"617112682fcb55805f0a0e16450397edc016881962eee4298f4f4e3ef795aee8","impliedFormat":1},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":99},{"version":"960bd764c62ac43edc24eaa2af958a4b4f1fa5d27df5237e176d0143b36a39c6","affectsGlobalScope":true,"impliedFormat":99},{"version":"4a2479741e1be22a0537a0a0b341ac0df26df60c62d3d0f1bcda536936066526","impliedFormat":99},{"version":"e50d04d261120f8f9d07e85698735d5b88f3a66bc395c08ce26c3d817d141a73","affectsGlobalScope":true,"impliedFormat":99},{"version":"b0d00966e18eb7d205f31e4766dba87631e14bc121c5bef41bc70dad3c39a902","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"72ce5b734c05da85c85a6f6dc05823b051d6aa41acaedeeb1d17c72f3b4efa72","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"53cf4076f42b29b8d411259d168d51b3a0274c42c8814e5b44dfa8803a35d4fc","impliedFormat":99},{"version":"a39461ee1f27cf3e6cfd63d21045713d26d521da55ea4d8efccb705f689e6dbb","impliedFormat":99},{"version":"61bb64660ee150f3ab618340e15cca0a81664801bede7c966ca0eca3a952fe63","impliedFormat":99},{"version":"42a12f2faa483c9b48195ed794d22698162274e755f6e07219c2351c4f08d732","impliedFormat":99},{"version":"ec0c42bb0f465e4993f2bc68a6ce9df9a2dcbc7b83e21748f82f1b69561938e3","impliedFormat":99},{"version":"f50ff37a9cbbe74475f426474d9827083c7c2c138a954d28f1690df338f69291","impliedFormat":99},{"version":"61fd6c17235d530c40f543dd7c40afab091d91c1ef890baeed30db6d82b04b28","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"091767bc841f937654ed597d49e023ed59850355e746ae1a6f20ab31076ee1fb","impliedFormat":99},{"version":"19c6d6135af59693698d384050b45a8a049493500add442f58e4bd7c8a255ab6","impliedFormat":99},{"version":"6a0dba12d55314638a8c51108b20fe2f68f1364a619d098918bda91c22dec154","impliedFormat":99},{"version":"8124828a11be7db984fcdab052fd4ff756b18edcfa8d71118b55388176210923","impliedFormat":99},{"version":"2b39c6cf59088713babbfc3e20ee85f1375d40e66953156fa658346b8346f24f","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"5e2ba3d18d78aebbde1f34bde356e41e9c76eeaeaeee56a37036596a9eff4211","impliedFormat":99},{"version":"8280ae8ccc0493b32d1742d585357ab9f0a508ea050af25a5a20d64010d0a5cf","impliedFormat":99},{"version":"7adfd9f9056ecd4ae6c65fde2a98654960c662714c73f048478959d04c09e144","impliedFormat":99},{"version":"437b7613a30a2fcde463f7b707c6d5567a8823fbc51de50b8641bf5b1d126fad","impliedFormat":99},{"version":"63ea959e28c110923f495576e614fb8b36c09b6828b467b2c7cd7f03b03ccf9f","impliedFormat":99},{"version":"1601a95dbb33059fc3d12638ed2a9aecff899e339c5c0f3a0b28768866d385b4","impliedFormat":99},{"version":"56fc978580577d30f4c2cdb5b1eb9217b66ed66537dd27141256f426e4b8dd68","impliedFormat":99},{"version":"2c5413050a2580becf9d82dd7e3006b95623e96f145356bf73230cd635352f70","impliedFormat":99},{"version":"860bedc71ead192ea4a0ea5ef4686e65724d14b391ebd1a6671a7044e6bd8e15","impliedFormat":99},{"version":"7c0a845bee4a084cbb8654709f48e5f13e2f6d45e5e2dde7c57cadf79fd9e3d5","impliedFormat":99},{"version":"7fa6fdc6eeeb3850e6b3166836f8c9199594c4f4bed3cee02cac0ca33d71894d","impliedFormat":99},{"version":"e53757f3e6688e8be16b36ccbeedc85637e607353fc67ff7b6665d6005aeaa12","impliedFormat":99},{"version":"88ba2660f5b024c7afd02ea700bc0c677687e17e34f0a94c3256ddb55e0f1c5d","impliedFormat":99},{"version":"7bbff6783e96c691a41a7cf12dd5486b8166a01b0c57d071dbcfca55c9525ec4","impliedFormat":99},{"version":"bd239b4c5e0a4de626d2bd30febe7d4596de481248e9e7436b1029363b45660e","signature":"ab48dcbb58c478548b4a6150e58104a481db9d7cb101c2b670e28522d00cefc5"},{"version":"4ffba3c5848b4fe62ee59b754fd5f256ad9656a0db6d37b9a2a8cb40dfc7ac21","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"32b35cf0dc3a1b1a7118b61c34ce2ad1a29695851679f9ec34e0776f2ece2a69","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"59e5e964b84fdb2378e9455e4e59405030e4ed2b4c6f891ce395f17796af3cbb","impliedFormat":99},{"version":"dd51e53752b310bd20c9b1a87bbf12b1fe2be7fe40f505b43199496481096275","impliedFormat":1},{"version":"a87be4662442b3feeffc331ecafe6b36cafd08727e2d7f2425a5099577e7fd18","impliedFormat":1},{"version":"cd4cd9220a1ba793bc935e76d8e5481c110a90d9868ae7866a182ee71cdb6abb","impliedFormat":1},{"version":"0a7fb8619b10bc05fd933ca9ac1c8b2ab2220be7a57b57565c3ac158595494ef","impliedFormat":1},{"version":"c4a5f91feb9c5a6b2a91089d959c38391b79a961db3b9cc73b8877d57ad7dcdc","impliedFormat":1},{"version":"90ba95a763101bb61b8a799731a2ed60b5016b8135c1a2d5186862d4b534d4a1","impliedFormat":99},{"version":"b272e3a799aeea8cdaee7ec9c4a808f8ad389517f8bd86dd0f06773701d4ae6b","signature":"9743b09c1b5e0e8385c6bdfc1917efbf55cab712c569a6f70f188e1d83ae4107"},"e03ea500dcefe6b2cb49aaca7293a978e65714638b7051ba42dd3d3cad167d3c",{"version":"cf4b891366fc80b363cea636efcafecc5ba8899817f8d6a1ffc15b42f6a6a8ce","signature":"40229b3b5d4fe2c57887134e413593dd966eda5165bb8f07b5f12830305a3941"},{"version":"3294cd20c885b9037a59bbbd99f3191312cd3d5ec5526fc6a87128c6076ede0e","signature":"8cafbdb0da6961dac0675263cd2bff5e208379e46e6bab52a7a28ded48b6bcf2"},{"version":"812f9799d736a8a570ca380048e3862b815eab0e545ac2512b5366bdcd57380c","signature":"3fb1c16dff3882f5f23a249aa9cb9e81f84a970ca38167f003ee836f7f64a468"},"8c4055dfa42680fd733cd22ae5f42f3cd7ba07bf55ac8298b3d7fe474e7ee984",{"version":"c25475eb4f6a445194bf8c869b3b19b88da31a8320de2e7ff5056fa06cfc903e","signature":"eeba8050498df8c2a01e8c1b07e0d53909b4361f6c53efb35634241c37489d76"},{"version":"458fd4c21d68557326a0425a048ffed886dede7c1c4ebf9e5f6da504d7f5aa88","signature":"1683d0ed29923c3af0e10b5e79a4ec57fe78f03e7dbab1fb69310934fbd59aee"},{"version":"e5e1f95b4a85239946bd42e36205c3f2361074816772ada23b5a2fbd53f36b3a","signature":"f3b8bb7015e732039323fda73fb19ce95e9c1912a80022fba04d8dc2aba7cf48"},"cb201b98c3065d198799f7aebfdd1780eb0dfda090b02814fee0f0e9c0b206a7",{"version":"332671962ca0a8a51584bce79785bff40d37b58d666c107f6c43ceee7ce584c2","signature":"775ee4c1901811383e799e0f39f4b2937267d39f171b019fc0f0ee8bef979517"},{"version":"1b70e8278d2e05b92031bd26962f513aeea07e0a7d63eabf1d511b4be076f07f","signature":"afb67696aef51bb54e53c6878d54e4793e9f890c2c48b203478ce89f595ee9d8"},{"version":"d5776f63cec3a73e311ebf99c290eeed0572bad2301f1b977cdccb68cf52e46d","signature":"0135847364b4501d9d090e495007653aa9a112447565c83006b6f80a4a9109e2"},{"version":"ccdf20d78f853ef71cc2db6d6bfff29e71695d5925ff6bbd43a0ae3dd5b7cd51","signature":"3b8599ec5b7d8b4cfb27344b9f7be1610ffb691ebc9f371d44ae3646a6ce5ddd"},{"version":"804fc33126136a3fa07a8c63ea86b78b007c16f45468550301e2ce8de0f79484","signature":"565713ad1c2b46ecc073bf2b5851aacfd0ae5f8ce2dcc55b282afe243cdde770"},{"version":"6df011d36a7c5ec8985e2d25064543eac053ac750afc3d9f15830052610b943e","signature":"205c25acdf2ba4adb587fae5600804a1d11f2d47e09e78097c66faf0304967e8"},{"version":"718834bb09520d71c2784165c2e8bf2d9144a996d6c4f2e4e42018102238ce58","signature":"7fc7e69470635304be38af9f2007f76aa6011acd79559efa38abb967773b891d"},{"version":"c80b22219eba22d07a60fb9f591ac296ccbee02f8735f6c97bbf5195b7b3266a","signature":"3a0500fdf90fdb8391f8dd4ff940cace58f9a0acd79218800acd26b19c592602"},{"version":"f3754863fab84024ca0dac9a0e4b7e4064c2a2cf3c4d2c822c1b2c042cc102d0","signature":"205c25acdf2ba4adb587fae5600804a1d11f2d47e09e78097c66faf0304967e8"},{"version":"d71e66be066702d69814e388f7a6bcdd375cc6484bac8cc844b10e784e88f304","signature":"205c25acdf2ba4adb587fae5600804a1d11f2d47e09e78097c66faf0304967e8"},{"version":"15bb738b082a76b7d04a8365d9a6844b377cc0c5efc25f6e56717f41a8742b04","signature":"64de59a0ac6bf2a8969811475378f6d66219433e2b70fda84e482e65b52cbdc3"},{"version":"e615ce2e516ee9add50da36c23b052f17bc616ede79f85494dddd7ec0cd6805c","signature":"64de59a0ac6bf2a8969811475378f6d66219433e2b70fda84e482e65b52cbdc3"},{"version":"dc28000206b6b7be252e10f650845ce96294bd6e63632de575a1c0d960099359","signature":"9523d732998ffd7854f4f49c08fe9b376a326d087486eb367b28d9e08167e66f"},{"version":"c86ff00df3cef4cf4afcda8e75d779876c0a677ab6d2102140a590c94023162d","signature":"bcbecde939aa17ff1ad4f768a1aedae3130b8efdee2276c1a32b7825722ef8f5"},{"version":"2018384efa86247beedc65e0d3725e88a40182922789bc6107091252fa347332","signature":"75d858a79b0fee3d078876fc73598d94930516a6750eccd670cdda097cc9a903"},{"version":"ab26736130252fb0811b5dfce3bf99605726dad97671f625a7e0aeedabe14c6b","signature":"260d086373dd742fafff87b6176c58c9804174780ee6e2a9aa4644fe5eeb8152"},"70113bfef357df90b0f2b41832126ab69703008d462d8a2b57cdf40fa75c7812",{"version":"e3bda27f09a0acf14596b250db1e44408ed4d5b91b4563ffd31f82f94c029470","signature":"148ebec4be798bc5d3d98118ca2c019b5e72025959eb7ec675aca562ff898ef9"},"9070e0a1e012d84015374a4b58a29e1b21d8b66e90faa66e90b70d149160df45",{"version":"df56f1a082f98d1866832821383deb4061e7bf09dc3c5a3e6061295a1906cf0f","signature":"ed09dafdbc7ba5b5b4b82c95bed45443149fdc510cfe6b30a80057641fda7682"},{"version":"25d9febbc258e7c26ae84862377ff23df7e8b8b6f2fa5b413c4be223af893a0a","signature":"ed09dafdbc7ba5b5b4b82c95bed45443149fdc510cfe6b30a80057641fda7682"},{"version":"392c02f9a8617cd6c3346885d164b3732bebae9c0d933e190915b62f25d7af8c","signature":"9798fbd8cd02331b5c2812dbed806a71357ac7ce1dcd32af7ae1b01f6527d547"},{"version":"c0c6586ee01734ae247fe280b7ce9456a87d667c003faab3b23d62181afe8916","signature":"57356f6a018e4d0cc688cbf82ba9d4af28f3357ba98f86b7ce95f76cfe80e7b7"},{"version":"a469403c6604688edfda3fffb4c0144c0778b2b3abc09691b84b3dd2c3beabc2","signature":"7b1a45d3d160c62e5dbb548c024b4c65fbb8053d0eb158805290385e5eb89bc3"},{"version":"23daea964a114a289a51a5b6cd4ff95792f5e74d8b01fbf49b06eed20049da0b","signature":"a87dbf641869c9e1ea39d817fa229a89efbbe9a9702d5096332863968274461a"},{"version":"bbc4289fbbc080f0d640858ffb2066468561a64f1f49c8ad268135ef08c1d307","signature":"786e7f0024b87371748fa4d509831ea62cd5ba37f605ce5c99092446717a4e89"},{"version":"de3229fff02f5ea6543a756883edc353fdbfe33e7d6d0a2faa62afe55fb2a78e","signature":"8f06ba0178d88d96af1cffc66ec281e0a1ec8a316172fa58ff9f39e7320de4c2"},{"version":"419888a4953da818c7bae3c73b04ef7d6ac2e6efbaf73cb9e9faea2df213d29d","signature":"8a58ff096f6ea1119d5b93e472b0acec40a8b55231da8f8aa98cf6fc9ef42a90"},{"version":"06fe1e12e8417d2e18f39cbe1191383b15d0603146c7be2b09e0004947de22f6","signature":"f16d990d89aaa952a1ac95e7e50af24c94435a7d6268f7b0e41e2523161c05f1"},{"version":"53433d5311c37192e6865b188b6d3337cccc045e6b6da7768826dfcf129d0a28","signature":"ed09dafdbc7ba5b5b4b82c95bed45443149fdc510cfe6b30a80057641fda7682"},{"version":"6660690e3107eacfc3c480d58574ab8a35c14089d2c325ef79da1c0106cde468","signature":"ed09dafdbc7ba5b5b4b82c95bed45443149fdc510cfe6b30a80057641fda7682"},{"version":"3d55ec80f5ec2d43c6bda6e26d50a03a28526e94c44812e650c8cfbc61db3bc2","signature":"f2a520df9e3a19f25fcee3dba47faa79d40abe6031d990639abfa0ec08fabf5b"},{"version":"2c768e18356d2c4be1c5cd5a54a1983badf752dfe7746c7c6161935a3d7fdd03","signature":"cb5c321a6b8db73ea27cd92a8cd6e31e8541144787246f6810e6640b25c5f735"},{"version":"51d23372bdddb45499c4c5568e71ac4ce33af279edf15877c8aab03af7ffb40a","signature":"9197a64fd63675117c7da2482b0b305208277d87adc9f03fdca66393b3bed6fd"},{"version":"0466d87ccb5e10975ec359300da6d7d0c05732af752c09323cdb2521720e62c5","signature":"08875cceb85ca123216d7caf655c1343c6a21d553c9113c9f2d7e5b742e3a1c2"},{"version":"8049e0c1041eac5a8f6c39badbef82174074d2400cb384bf43b1224a638ca9dc","signature":"e4def3aa6de8b83815c6b843319a70823e13715478bdc149ae037f3f535c310c"},{"version":"ebef7d378faa8a7715220fd906d88996794bd48a4ea258bccb0a21ea55b40d8f","signature":"552859b9bd3660f4d64c130b94c76c8213b197b6f1d68105626cfab2853c40bf"},{"version":"180fe9b4e684870831cb141738d5f9388d90e804df8d5c06daa580e7b291da1f","signature":"e4f9208fb378663fb93eec036456f0bd0e46c5236ce5198983008d21766db5c2"},{"version":"26fdc4b60439fcf84005bf69331f84d8ae87fba82c9057baebcc1ac1307dd95a","signature":"4706a28c7039a784600878f3ece50eb5f26a3c0c364639ff08a648a93c389055"},{"version":"f32bd7e0f6ed0a18b9a50e67b597692776ca5265e71f1ebb61bbdf54e0464e57","signature":"ffe0ac73457ebca82bce457532777b466962bc0eb2c7cf865e2fb418783fec71"},{"version":"040119b2efd8308034b33871572b308e0beac06ffdd8b41c7d722819219cbf3d","signature":"450d7b6084c1ca2b5b34aa4cd29fc1734dcdbf1c16055df4299400eca47b0873"},{"version":"0be24e498506cfeaf8463f719277c8f5d52b0d4afd2e22f5d45fc0de43bd6022","signature":"da3b4b6318c69ad102718e8adc70e8c766067b69a82d1caa5d12fb65d03e26ca"},{"version":"f3a2ac82af9d8a14375ddd4e3225f8578b3195ad33e85681bd18865328df5b43","signature":"2feb7e7a8972b21ae40e2bff167ec679a34fc135616c7c526fe2ee422dd0f520"},"3a15a4731a96d9dacb9cf735f12fcdca09d9c577823ec32b278c45fc48b08b05",{"version":"72eb6665bcc46c277e2d5568d9f3b883058fc62e19a28e4a227200b721310b68","signature":"e3ce352dac45731bbbffd2777f8c241025f704ff7c9c41aef5548216e626ce74"},{"version":"5df54120520aa61969b28350c3e13e018d73253963f07d3e5b8480f6e5ee21ee","signature":"4e76afb5136973cd8e9c754befdd30b7c96ed969b211715b623d70b5cbccc956"},{"version":"2b1a2590469ea2d5f44c8909a08a449a269d01ca1a7c0fabb367c5bc28baa52a","signature":"944d09b5f167e7b016cfa9cc66f574553674a1f643bb7000752c9d75480f9622"},{"version":"c1b32a30289157cc33dbb9b66ccb96df89ab6d8a59bea1a8ce2a5981231571a2","signature":"6a5e7eac890b886cc3f44825a99ef4403903dd83ff5351d491acbe3d0a81248c"},{"version":"369be937e86002ff2532a401e2a4984f1f91c42a1effe2b97b6506237b820b8e","signature":"6a5e7eac890b886cc3f44825a99ef4403903dd83ff5351d491acbe3d0a81248c"},{"version":"56fb3fad4d94088134313449798ff3f92c5289e65bd8f87a18838b000ac94618","signature":"4e76afb5136973cd8e9c754befdd30b7c96ed969b211715b623d70b5cbccc956"},{"version":"edbdb6e286f67c9151d6b65816d30603f134683851432c83f728979a50904742","signature":"4e76afb5136973cd8e9c754befdd30b7c96ed969b211715b623d70b5cbccc956"},{"version":"d4a84657e7b960484e8fb28aa9eb3ddc3c27199a14b6d21e72ee6e82b317ebb6","signature":"4e76afb5136973cd8e9c754befdd30b7c96ed969b211715b623d70b5cbccc956"},{"version":"22b4f46fd2e8a1d5c3d466c80a1e0eaba1100f072c4a5dc5cc232ffeaa7d9779","signature":"ed09dafdbc7ba5b5b4b82c95bed45443149fdc510cfe6b30a80057641fda7682"},{"version":"9a77b64a695927b45bb880f0ea155d0081e768d4d7322a8d78f0ca86ba9a0c2a","signature":"ed09dafdbc7ba5b5b4b82c95bed45443149fdc510cfe6b30a80057641fda7682"},{"version":"250f08b35fb145bea8fe00cde3d712b643e7fef2d06210b6d55628b092544104","signature":"ed09dafdbc7ba5b5b4b82c95bed45443149fdc510cfe6b30a80057641fda7682"},{"version":"72e42a0de9369b59bfe42e68cd19c9ad07b765f570c676d21610b75473d9eed6","signature":"3ed58601b803cb17cfbc86f1899b93cd012631856b3296e1fe35bba90d45c052"},{"version":"490950319536b3ea28024df0c91e59ed2bf20cb0cc8029ae1a42df48874ab00f","signature":"7e763eec61ddf51f6683cc0f4fb42059d93de2d966f334d70eceff9cf41718d6"},{"version":"385b814c0666e0f401a37735e60ff34c1a1019b7074b34421701a590375170da","signature":"ed09dafdbc7ba5b5b4b82c95bed45443149fdc510cfe6b30a80057641fda7682"},{"version":"4d28868258b7208be3f4501d503a48863bf3203ee75aed2be4a73a205fe3dea6","signature":"be74e7487272d0772891b0ea2b337cac457c7009c984398965027398c293022a"},{"version":"86fb262322739f7304d8b5bbebdc002a937fa981356347d12dce01fa264eecee","signature":"1357984c5669c5f78a38aa61aa4990a623ff8dfb05640b557ab1e25bce0ff4b7"},{"version":"4f0c190d4d71dc49ec4ef696f6012d328f1edba0215180f7e84b1193c381f383","signature":"7e3e0f27f1d33424de9694e9f598f897ea24be0569fda90d64fe26ff02fae4b1"},{"version":"7c70468076711abcee49afe4e6050546db72705b31891b88a280f8481d40ccf5","signature":"ed09dafdbc7ba5b5b4b82c95bed45443149fdc510cfe6b30a80057641fda7682"},{"version":"9a8dd2ae94882c056f8d3d238ff51f7990d29a0289a7063cb617820b48037dba","signature":"3dc1c94fb475f3a6b317921bffd54558f6e25f10220cff2db9e42b0086271ef4"},{"version":"15b5783ba8e9edec259fdc2d63199f1b64cb9bae124e8dc6f5b283aa7d217783","signature":"7208bc51a067f2e14347812e036ab7bb948949808eea7a2c25d7f49cd33e7c7f"},{"version":"8daaebd183a2fca2a80d5c1e1b284f628c7210930798559f174eb2178e5c2f47","signature":"00d47ad8341fbfdf10ae30d294b17a55501168006a0b6d1aa745279db7ad4a75"},{"version":"fe64813e84d2c7a8a7b732dcf73d676b75c11ec055cc2bea0a6eb7e7c72eedb0","signature":"3e6a7cca0b67698df362aa0b0feda4f2e423d5b46cfb9cbe153ba3ab93c613f4"},{"version":"99bfa019855a100dcf3d356624654b8c6fe2fbf053b2d5ebc8158e08d0dc079d","signature":"7230fd5614f4e2e620d7e5534922dccc87ac1e999fe672fa51d7ec0ec269bed4"},{"version":"1027a91ba0123b3119a8f6915bfd669f4813a2a33775b1a99a2a2171b7b35a12","signature":"68cd1270d1b44578cb1d18773b3ac4b24818b5ead641855aeaee6d9bb930eee6"},{"version":"d2f14ea53465caea54d4d584cd3ef68aa53534688839e3c0741205f9bae3075f","signature":"552859b9bd3660f4d64c130b94c76c8213b197b6f1d68105626cfab2853c40bf"},{"version":"33074f64be05338c7fb1ae89639ab9407d504c94d0d04f8f74f2f70c6678a997","signature":"e1414c452da3ebc0a70ff10a48fd9821cb06cca69aa030e109b806d4d106ff9c"},{"version":"15ae1ab5a3a467251aa3f58ee75f2cddbee32c98e3b597643577f538c2278769","signature":"96f99143319c234b768df03636e2674b787f4e4cdbf9e7c56947662f8144d12f"},{"version":"65e527e36a23a080d7ddc1636336b7d950112ac730360e18a5f7cc5f26977a7f","signature":"a4c5ca81dd6d42310a36e8ad5ed90ccd2288fcbac6f859917f5edec2b7de5d5b"},{"version":"5190600f2dd216333ef3aabad92da2185875315911ab5a19df9f23b809a13f31","signature":"a22b2a342ea7f18daec3d8f5f001deab95554b88930a7eafdd778c515847d82b"},{"version":"f8031790fb56b71ef1b501ddf066279f87769e741795fcdcd2c9d229ee0548b7","signature":"dc6cb8983fd0f072b86d5f6d451ed47523a3d7eca8fb08d64be6b6ab665c4cdb"},{"version":"731440639cff59b0c13fa28235b2836f378e2071b7443bb8b8361c299b699efb","signature":"50f1ae1749aa5aff6e8f83bb68b4b7cd57b36162bc3b17f09f78cfbd9b25ea40"},{"version":"d92adc7b952212d5d29b499602af59502823954f00c7e94ce2597d264c5c7c39","signature":"bd9462d89069f1a2dd735a3cc856120ecfa20c41bf1a019248d046a87fcbb560"},{"version":"db270b9c29fb25ef1c64fb9c71f050a8178f156ab69782a3dc92eb3820248145","signature":"19a01b4243aca91ffd0119b172bef715962cd440b32158544776cc8f2516d863"},{"version":"03a6589b2ca2a81c8513864bc8fc75eb10cc20ab91230cf9b62cdc8275dd589d","signature":"8ca649ea98705580d2ede60f727bfb9d0e84aca5de7a0ed8c1e532ef587be790"},{"version":"d8ac524371b44eb53682626abcb3524693b74dc0009c8013971eadbb1bc7d8f6","signature":"b4e3a98b622e0df12acbe0c5c67c9985ef290ca9a5b3877437f1717c6cecd8ce"},{"version":"33dd8a66151aae844148c1e4d90b3a993c776594bc19ee9e772360e4affb48af","signature":"b917933d8465f25e06e9777f35f1df80047c39ed250aeeb164c07c8d42184f19"},{"version":"cd13fcb9c9fca230e5391b20312cb60c56b3fef1ef264e95b574133987250586","signature":"adb11d6fb416e5e7c1931812ac6bd4baca455b110fd8841b4a6905f9e299d08c"},{"version":"609bd5324d58c6d8a903abae530e83fa8f64d0816ff82e8eb8b2471d6d1a7373","signature":"b71520965bb4a5223a60f774275465e046c9e8b74532e8b408dce576cfd4e22a"},{"version":"2961e56145cdb9dbba7f8ad63e57a426a3aecad9c71922f98eafe47c3f1d0b82","signature":"d6b2d87eab2f22563b8c07a2a4d61b9d0d8f43f70e70058fb19140f1ced5a74c"},{"version":"692bc7a0e0aefc4921352890a79aeadc4a68f45c5171794fd0a0cea24d535b34","signature":"d6b2d87eab2f22563b8c07a2a4d61b9d0d8f43f70e70058fb19140f1ced5a74c"},{"version":"1b78ae8c38c922360d4c70325cf83e594f76e391e0d6bc39b0697c65a30a3a1b","signature":"666273a11838a8e9ba821630e1ce06fba622390cf7fbfc362ced4d28b5b449c4"},{"version":"f4c24f58866aeb2dafbb1233d5213c323b66fb731f8f018c0a3440a9f255e75f","signature":"d6b2d87eab2f22563b8c07a2a4d61b9d0d8f43f70e70058fb19140f1ced5a74c"},{"version":"0787f87c2026088ab2a84da42544e24df8c1fa965cf6dfa6bee1e836a3493919","signature":"d6b2d87eab2f22563b8c07a2a4d61b9d0d8f43f70e70058fb19140f1ced5a74c"},{"version":"77bfe2af58b9dda5ee7b11b8424b6cad7e7745ba1aaff7bf58657b7a31fdf87d","signature":"d6b2d87eab2f22563b8c07a2a4d61b9d0d8f43f70e70058fb19140f1ced5a74c"},{"version":"2a1ceb639417a528170aea1d8924e61d8b5bf8d95de37dc7e4b431011d2a49c2","signature":"d6b2d87eab2f22563b8c07a2a4d61b9d0d8f43f70e70058fb19140f1ced5a74c"},{"version":"71ff0a7cfba4209a055cf9b8abd8cb0ee468e5f512ad8163c07766213aac64d7","signature":"8c4ba97747b48c2827af6d81bd627f5aa0e4d893c679e35ccb5288bf248a6352"},{"version":"8f2e481faaac47cd4ffcafc05125b746f5ea7d38458e39512a17640f0c425339","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"954078297f1913ccec8bc3f35957e2a791dc4189f93bbe49d9df0c7e85d8f72f","signature":"779cef8804fece12ff351c25026638ccf404bfe69427fa0dc1395d2c21365d5f"},{"version":"3db978b42a198aeac30a981735a516c70d2ac7670bb666b7a0297b64e8ea4c38","signature":"c53eb0fc2e6c3e0a588b039bdb23874a3171293355c528c8891f33000d37b344"},{"version":"9f69c6f9b97ac89f0eb75173e552d79367b11c9e4fd298d5085f4eef99379b95","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"35414df28dac03ed6e220af5a212f9aba38afeba214fae9802fec81a8399e5f9","signature":"3ac80ff1fc95461cffcbfe3eef686ebeeb0d3127e9b73ce3f46eaa5e73bff9fa"},{"version":"efbe6f29c56234634cddf69a318308620c714519fa65f153205ed2ba4386e2ba","signature":"4cc01d45183a43fa9402ec7c2d5e9fd4733cbca1fb778a5132b313b08bd43f64"},{"version":"71438a74370b6c0568ea3eee86caced05d220d748b8f336cb7be512e961674a4","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"b0f6e812446471de0e3fc28cdeb7ee1912a9be2018ac3db3a47d9eaad172e204","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1be62b0ae46d1fcc7bde98beb709e92ec69c64b824d3bc94589031b55eacbc0d","signature":"96223fdac3aaddd6718243f127330e50898d12240336e53725209a1f6160db67"},{"version":"16d3b90751bcff1bbd53309e05a696267e5da68539ae7c829fef13312e8ce858","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"6e813effc479e7c5da7f9f4fda2df90f44e091db140e912c24e865dc16e7f16a","signature":"48404e226478f761ac667cd55a81db0e53bb6c8ec85871965b9f953f99262193"},{"version":"6ac8190d670c15f82d051cace93a0c02ea2922c29ceea1e14105e29402a126ec","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"f7d6846e8af1042ffef67520fa719bc7a3c74fbaa6bdc29bd4cd624497a029dd","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"a76f042d64f8dff3c5e1d557847dd12560cc8e7fee996878e52ec1c92389a3b3","signature":"03985eb6c5ad09ef5151cc758c2f1034edf94a92c5019f4ee37533abc36da13f"},{"version":"21ac4d7b2fe2a8fc098acd752db64bca82c5e86db9a0c6d77e95f09e0ee0c7fd","signature":"61e0696065b325ed71e05401bd01a88916690d1664db0fbbc576e6a6528d8822"},{"version":"fe93c474ab38ac02e30e3af073412b4f92b740152cf3a751fdaee8cbea982341","impliedFormat":1},{"version":"d377c38b3921c35350c9b50ba202d5452fc7a21a0ad734b9d3f886f021d9ce1b","impliedFormat":99},{"version":"54d9695325331b7549212c33c8cf84d040206fe7b58c8c849a798456cb45216d","impliedFormat":99},{"version":"54d9695325331b7549212c33c8cf84d040206fe7b58c8c849a798456cb45216d","impliedFormat":99},{"version":"476e83e2c9e398265eed2c38773ae9081932b08ea5597b579a7d2e0c690ead56","impliedFormat":1},{"version":"1e00b8bf9e3766c958218cd6144ffe08418286f89ff44ba5a2cc830c03dd22c7","impliedFormat":1},{"version":"e8cd54078749c737e2c39bbf5577d7bbcbed30cdf28e6f1cc24e550c0f7b92be","signature":"aeb923c4b9000d637a8d83ad84efcd4b297453d95368833e7713963c675dd460"},{"version":"1ac71842b15c610aed71e7376b1e8a19b65dbb7ffff51b646fe404ce1054673c","signature":"555a4eb7b23abcf5c4e7e06976191f275021081b8e95fbc361e0301138639a0f"},{"version":"2a30c38a4687c848f0fcb6ed9adc9bdf4d2103f3ea44047eceb1976c95cf0a8c","signature":"442fc65a2a0732a9c559e7689f2c25cfb6ce646a2b5f218cb9a45a26f398ed59"},{"version":"0c996be745af11ccf07b28eb3e007aa4277d01b16f53259cb355daafab167abf","impliedFormat":99},{"version":"27c1b57e01b13f914e9d3507202036d676222057d6fa1032332e2954296b9d45","impliedFormat":99},{"version":"7348c35ce10f8323a515ea6a6c237c0dc7c3fd5e491c4dacec2a7b93f0dfcd26","impliedFormat":1},{"version":"258e67b2638408b67fbf5fe6c953b8f2dd2a69f9171d31c9a976cd2329716e4c","impliedFormat":1},{"version":"74137333f57d632f001828cee60b2094ec332abcef1aeee18a0970037923dcd4","signature":"dcce64474115c89001de4c463109080539b325c44858306e722b15cd18d98219"},{"version":"802e7bb6cae1c72dada49e132b6b28eb3f7afbaa27b5ab266b92b662b5327e47","signature":"4a6858702ce17a29995b5e223489b3481cb9998754d7d409dd97d00963d76e05"},{"version":"e479cd25cfbd4bc91642f4b12f351d658c484d1a7b70d0ecfc4a52697906a045","signature":"ab02b9b1f41df13cd6eacd101dc4cccf32b677c5df88f9d6f9d58ec9fe648a67"},{"version":"34bc3cfeffd604398847bb96e61f637be37d999ca0c10d67368136dc1be463cc","signature":"2571a03d3ed5d860359c75c177e55747b7ccccb97e898a5a320fc05623beddd8"},{"version":"c3edac43c4a1d3e16edf15e258d82bf554250a017ef4e3576834c63457f4d6c3","signature":"0e5889f9a92cc3fe8fe1871bfba2f90c1e6848c6e407ce9562ef95c36231f002"},"347343db651932270ab093d5830ea54f419111eeae659b77a9e2cb13f328a9f7",{"version":"3b5ec50e7b2d52f8cbc0070ed5556ef15c90833fcd899cc2ecc5d47c46c74973","signature":"bfd36eb40e4feedcbb2b1569a62fe03bcfc254876ac7b9ddf67d557212f4ed17"},{"version":"cf59492bcef122d8585008c4752000175c53abce051c882757b7f1bbd8a58961","signature":"870fe0dd8e82102dbadf0760b77925e9412c93d95da14cb998f138177d26f222"},{"version":"f6aefd3198da082563b438f5a5c1563480e772730c9c51366edb199ec937ea4b","signature":"659b8c23e1a6160444eae10dbc944dc8cf37b17c25b6a75b021660376ba49cb9"},{"version":"6f4dadc8756570c85f25fab29d5025a744d41f61ed1f617fb77db1eae40d9b79","signature":"276075e8fdefbb6e5a265304d12971616bb734fdc37f9f651d6bbae2659abd7e"},{"version":"19da3542472ab262424b57bec72fc4d400b67497ad03b42c6007a25f23f4993c","signature":"8f85de6d7af972550454e0b30b716f0ec91b67657a52c610e28f26e491664319"},{"version":"55c69554020aeee5a248a84206d957cdf889bd5c931b66986770edf909ae07cb","signature":"f233cb1e16368c11db6b6ad86e4c617e36eba9dd67656387f5fa66da2dd916cc"},{"version":"c0fbb82566e3c587cdef075991cdc0e83e544ff71ca6ad7fc0a8b4114210d401","signature":"9dc2555b0e38d3bd51c5f9e4bd00b9c4c3ec1a958578102e8bc4ba861eaa9d31"},{"version":"345fab538a281744e1ae6a55feef5b467d5389e48eed730ec49c4f782e0cc496","signature":"9fc9bd7c5196f960796b6fb6124087d8246745f4e3ff55839c9654280c3465e7"},{"version":"64e6a475df2e8aa93aaf367c5df92364e0ec677411bd068405184f83e517c84e","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"77a094e4e0ab32fb00ddde5c78476d5fe0828c712c6c2efde60a17a226eed0ab","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"cb7f713163f0c90bc6db0370b8a87fb73c98b358f8bcf48aead28597f55b0f86","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"56f427e398577979ee99d890fef5d9dc53f3f2c557085104eb6890019787d916","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"56dd16a4d896aead6a4cd787098fc91eb1b3835dc4b015f6f17e770551e9fb18","signature":"8e75987e889ce34bf56367d53e70335b895b4262cc767e233a8fa975a6897c78"},{"version":"39532325082bde9873919451c6f1a8ad91f5bef582b3ea16547062bdb7143065","signature":"bf25c45519d3efd692b7bd7387b41720d23d5dbdcab032c9cb4891a4e10910a0"},{"version":"fdb783a322c675e4561918088c76fa4adf691afc7c1935300138e093c1285f83","signature":"0cbc40d93c13b47faa989bdbfca8eed5a48f277a850366c910af796afe035935"},{"version":"f247359cb12728389b7bb2d3225d2e2376aa5fa7b2d7f46572372e14b415c69f","signature":"91e9bcbb27abdc6de28aba65757ad7c0371120f96af6c16c62f339f1e3745b51"},{"version":"d65387fc3ba09cca1a3303e645d498b33bc70a59528ea21ec210b2e78b842974","signature":"4b149e9fa0a6ae676a7307a768790b180ca83457e63c54b4299d44bbf19a1d62"},{"version":"43c417abe8e54d69d037f666583cba8bf222070cb005f5cbb5fcc1b02e0fc01a","signature":"903fea19f3268eae6bb181957b559c581ee202af35822e6d77a41bc5d89e879a"},{"version":"5c8e29eb6fca80933c1fb4e7f4ddfaf1a14a3392e5277ba1d327258f8dc99783","signature":"1f25afa953f8c28d8bc0a8602617cd0df27af4eca8a8bbc66228162cd11bbb66"},{"version":"495d68e9b25ae0c7407b6e8c8695cf3e7395eaacf7dfc2617c6ecfe6eba8dbf2","signature":"99d74df147976e2cf01e6ebf287fdb34a7a8ae676421d4c91d875f6a9b0cd2bd"},{"version":"d151733bcd9d22e12fe89b0a59bad214872b2d561afe7fc0a727901a79ccbdb1","signature":"5839809854919e435a02ab674580cfac5a4110e68d9012d333b6342a573e513c"},{"version":"e9afecacd01fbe4a37414e33fc857461c6689e45e85f2b3ac9207c4e595c10f4","signature":"214b97d6fc9a99cac29651af928b444edb053979a55a1da2d7cc4f63c6ca7ee0"},{"version":"52cf598a1b721f3329bfc2ae6103b23f76173e61adc77bfa64c01bbb6002504d","signature":"aeaa3ed647162c2e6433cadde95e35b75be2b92bad104cbc965108dde9e5b8b3"},{"version":"72992d605284c2a96ce10507cf3dab03536cb9bbec569ed3de7d07a55fd35c7c","signature":"9c40d1c6298bdb2274e7c038e7e66d638429009f00a917472b26fec7c39c4ae9"},{"version":"05b3581ba268fc0794a9299ce2fe953bdd7eceec017d53deb79228ac13555be5","signature":"a941cfd36c68ded25c50c689518976de4e6669d5a633eb0b3b31a43127e0b786"},{"version":"f1b3b1d73ecdc7df1e5968f4154fbeb1b24d975c13f696d049d96653141ddf98","signature":"bf2ff4f10ea73bd8971ecd08059845bdef23875e2a1e1d36ef5ece5c21c8b83b"},{"version":"31536346bbfe853cbaba990964d535b187008041b1db87c87835a11fe5644fec","signature":"771b5ebb297a856cacc5d04e9d7746c3d1dc3d21e22931dc6bc01375bbab49a3"},{"version":"dcddf087a7d961377633fb6e57ee48a53e81a817590bd192b8b66517f73d86e4","signature":"264fb54f1382a8566f0451e413fae8b7919eb8aef3717f62d24a31de07a61a4e"},{"version":"67bdd738108cec09fa4bc092e0b4af9386fa438030436b8da50f9640b684a4e9","signature":"2efcb185be86df956227b0d7571bc212081c84571c2a635314c8b00a3329cd47"},{"version":"1a5c85ca837fb53dfbf9afc003398f497aee12d2bd30a2acb435429147cb69aa","signature":"efb8d94cb63aa478219a57de29d534592d82716c0475eb85f97e9575a104071f"},{"version":"2aedc24ce50ed0aac66393dc0d1faf8b8fa17d3b2fb37f9f8e1c66c85954fc57","signature":"86578fc5db1f524c0a36be6052944fdf74f2e49e7c9670e2c4d920d6ccc2b7f5"},{"version":"350316a01b505d1cb0431c50817402a6a82c0d5fab6b27b76af27c259b021042","signature":"21c0cad3492f090864c27389e857d076c6ae7f142e446901ed25a1733bfbe76c"},{"version":"3fb64d2de7de1d85c1ef2143edae8f17de0e6fe62de014161dcdb194d7997c65","signature":"7e785b143a0d0c6bb023778f83d6d34e0d4976726135add21d1b3d6c25a521e3"},{"version":"f56191ec2f9da0206eaceb9579dd62f2d5aa9fea1499782c1883908eefe33201","signature":"a3b7a41492647474fd6ebd2a43f9ef48c1dde2237a1682b37880ebcff18366ad"},{"version":"b979f72b6f41e87df2372bc4993a2d4ffc203dc56670ea867869bbe1670f46ce","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"0c38761192759ded08995fbe45f9ba1a521169204690db5e067b0ad58bc14c42","signature":"0c59e87a0efb243e5b9462a45a72d5343a76895d37f7d1689cb4de9d154ce83c"},{"version":"37329c4dc9437527f615f961867b65e638a7d61db8554590029dc87aa2cea0dc","signature":"099dfd4d00412b54958be092a16a645cf1f05bba092878eba1b1f53a5a959660"},{"version":"002b5be581b9f660dcd8f1caed92e3798b0980dce3f3c92005b9f95f0610fae4","signature":"09537bc74d55f2cc2d9fd7954d977287bd7eeeaa9689eef1ef697c355feb053b"},{"version":"1fccc097235e47b0021a6365176b6c1e6028a7309a55e7d5decab91328f0acc1","signature":"bf135f969b9fbb7aa9133ad0ba9e55e6c6f3b7fc976eaa04f140ff895c536b62"},{"version":"ad0b264403db93942ed42db950397c46f8ceed9baad376c0baebbbac658f3fb7","signature":"2a3d13784afae69e5d3d6327bda126555b9dac27dd6808e25e3b39f1b163ef56"},{"version":"0a30389ea8dbfb42061721ef22f16e93b8c7413fc1451eef5a50a70dc3da50f3","signature":"beefb3fe588e5df85e53433a46468db6df18619ea973f782a8f3af3f906238b3"},{"version":"1d8b191083eeab243548897b93b1943f0f434aeb693351238fad315c69ce8c52","signature":"62e652f61742da5e791dd7c1dcd646e0e5e622fc5fc01ace7ad93df4ea4198b9"},{"version":"c462e9026a9ae5069d3754977523a440b5b45d4e1ca589d5bd62c1d24a1811a9","signature":"8b16906966e5a39ae872a27d3499d63a596c145478b6185abc698127c1943cb6"},{"version":"a0f1fe5716c9c7896068b3e1409dc659bdc003d41e2c3e688774d9fbc9c78e95","signature":"7d5a89b2cf1256da54d4f549f686f18e983069785d4d6930466160e350634cb9"},{"version":"6e66544c428f62a49d86b1d1f27ac16aae5f9175f150eefd891b10b9657a061a","signature":"88e37c714bb35035379b8bd3c106e04760caa815a09fd716636fb0eeeba0b33c"},{"version":"8b27322859387282d37adb4019620d0b928729e1f26d941147751d8e2ec7f824","signature":"59fbae6015c2b1e8d266c5daa8d4c270fb99e79f50c8b3f19acaeb50ef3e81d6"},{"version":"1464db80838c1a8a6bf2cf7c0472b08c5106052e08de977d952724b09cb874e7","signature":"ce3dd68db8ebef58a9bfef61ffc9366ab64eaac7d7c31c3fd4e87cc0088ec7c4"},{"version":"88a13699dd3a849f2077cb67abfffb7a254c77ab90844687e6017bf7e11f6438","signature":"98208a770c3c215a85f7f6521fbeb6e5dbf41853bb532ef6fdb2711c99445909"},{"version":"2b3bfab7606e22f305cbe85f084d14a659a173ae38c5c1cd77b621d3db570405","signature":"73fc3367fe2a8cc7b185cd9cc7937b4a33158cb821cc6ba50321ebb68523a47c"},{"version":"f4272be1c13f9fcec3147b88f423de92e2329268628242fcfc7576607da531aa","signature":"4d6e46097f7d85d47313ec2b26803b6953b5eaa41f8a04ec900a94f1a81a56b5"},{"version":"fd43685bc19eaf18c8fbd0a7439cdd0779766a4797dfc1a988fc9a698e10df44","signature":"db9a15a6d09242668afe9439df3d925651e9807463567e431b6defc6d748f139"},{"version":"7062ea6656ec0dbfe76abff8d9d3c6b65509fc3fd764b98b06bcdd97f3d1b047","signature":"a577a0eea217880f53f0be2b195ab7199156f07cb9d06d4c0eab58eb2209acb9"},{"version":"40813dcb69eb435756d545c61b30bd30dac45932585c0e1766f9b3a80e2b4b80","signature":"cee33bfbf9b7d865fae5994d17a926d998905e111bca63fbf83608452f633185"},{"version":"95376ab283602759c99a544fbae38ab89b3d2743e62dd5bac3c825c53ef4c8a9","signature":"af610c52bdfed5643127a3bc6bb2dec268ae6d21c1e6a0b86f6ce4779dd853f8"},{"version":"62d5e2db438a2bb718fa7ab1a7f225a0cbe85bc0bf2625f9f0a4b3183b49c3d4","signature":"c4922d26042234094c77be2e191d7e8965f67bd78e2f3f8e975eee74eecc9b91"},{"version":"116754030001b14d636c61a0755163a57fd932a63ea92910c7edcc5f24375c89","signature":"aee79945eba0f93f292eb0881d6261b0f89e9b13b65ed0b270f1a7b119a89997"},{"version":"a3f6ec7d2ac2933f611c24ec2e85ccb5c12ead0d6662fbdd9f3db38d4c7f410f","signature":"02b0b050f03d38951cb54b3486024deb8ef804db3c0f397ee8eccbc7a59f5479"},{"version":"3a355fb38d746de8f01cee4b4fbb9e9fcd1f2466161bc071a9c8ad7727f5edf2","signature":"e46d2c1820d4fa7ee985fe214651b627840f4c748664dc51fb8d10f10db876e4"},{"version":"b8d8a2ea561c97be39a42db5f9c4930c0279879445ebff01e8f9dbf66b33911b","signature":"51b0b8b336830b28f2e881935ae29fb78a0011eb5f069af26a74e0a2988fb761"},{"version":"45085643263bcc103870ebd0183676a0018aca515e9e69a475d34bc4e85b0830","signature":"86aa442c87657b91259879b1b9c2f5c1a95cdfc4cbcec086c43713cad8636577"},{"version":"0adf819530aa5d53600fc3fa2f4b8d205171c02c53cd7fd1ca9e4e3e9097d8dc","signature":"a9ff25870bdbdb30672858c6fe47ddb69891253d56e6dc235563c2e0c97af5a6"},{"version":"e7a66b173fe02de0edaf023e6910b1c69cb210940ae6c8994d565b109598dba0","signature":"aa68721735557b02766dcabb4e94f3f40217bec420b22ca2bdfdf7e5b2a607cc"},{"version":"a37f7a05cf74ab1b9762b78bea9cc8226437c836577362e3b283f582b288d48a","signature":"1c415ed5a42f3cc39f4317b7a9ec20e47c14febbc373b38ea16ac64f7da514b6"},{"version":"49f9472dde6e2e5db6aff9e7bf2ef161d1bf98cb62d7b530ca002b2c7bf35edc","signature":"b5c639556595473f15b5d6c7e99ae606d2dcdba7faa3e85433e0bf90b797c2b2"},{"version":"3986e13bca52fddc77a2710cb6f78b96aba628020b13f9fce581ad7742d3bff2","signature":"b9858477881ac33715a6429935e93c299b68a7533a7a7add6177b5e0e55bcbb8"},{"version":"4675eb65cc2e9edb59c85d9c9d9427aacb101b8c728751c55df601197a562fc7","signature":"f8decb4ec3a92ce7fb168ab21d09a06d19058f27729318e6cb5c7ff0ebcea9c7"},{"version":"3a193a4803d7c772398cde1def166242af3410c3c543726d70037d4cf43fa889","signature":"53c7a922b2395584f623c3c0c6ae0ec0cbca93b1562416061b31b91339bf427a"},{"version":"f536b2ec53d43fa82b72c6871a1f182c78609912b5b9fdedd8ec5ec3d31b52db","signature":"b4014d82dafbd70651d0249a0bbd9d80c57c6bd6ab26ad8a5beba22b550c77dc"},{"version":"d9f476970a025878ed76c53812a20d964e8907641e6edbaa0388897bcfb7eadb","signature":"3400ee3f71604d8970acefd1250b595b8a9d3a21a9d645fd7724583bd0f05415"},{"version":"b5db3cbf28caa68d9e35e56fbcd8b93e0fe15f6d128231f9b6cc57f58ad1a0d0","signature":"741800ccaa6bcb7a7daf495905a760aa220500d9a8633d67f0a78141e4b8ac2f"},{"version":"9ee44bd7c13df5ec8f17deb559a4cbac1803f9d54c94dba0571c8054fc354a87","signature":"ab8e155ab93ed8dbfb3a43bbc0c9b7102c79601fe3aa5d0d98b6831349e6088b"},{"version":"7f013a7a9e3534dd37b43071fa0cdefaf1f29e52ac8a94396a623d634deb7db6","signature":"0a52e5d8a514539ffd8156e60b0d32dce98f0076bf8e158b79b46e6efa91f62c"},{"version":"c90982186fda667918dab68e62312f1ea7effcc9b32b0494690f18aca8fa70d5","signature":"9208f72dc36272749c88077ab3b09059c0c458949dac7e4163004f39e95cdabc"},{"version":"c6640526c82d82742c142723fdc141313d7495b6ea7db83cf8c249eaf7700b4e","signature":"e36a6dc827fc0af1b66b354112f3cdaffad20639a7747153f0ade868810cc443"},{"version":"df4261834998525bc7bd5b3c124d38515f2f02f78775af112edf69774abc544a","signature":"adab5620caf5b6c670c6a154ed604ca08859e9e9a4275f7e8db292ba856ad911"},{"version":"1897984c35f745db144b86ca4cefd7836af5c580da8d146ae1405672359982b9","signature":"b228f1bc0b0c9530ee4f6fc782cec842713840ab67c9e98f7c7fe1b8e408fe3e"},{"version":"03a221ae30cffde1c1efbb63a1a698ee336b818dd75df606f1fac0255b145254","signature":"8d4bd4dae53d134cc822bd2805ae99a6126e630ab1ad0292f083ab8e156d6866"},{"version":"3f57a6bb2e181847b62722122d7e61b926f3480aa23259410904a6bad88302dd","signature":"e994bcc187fb3fa3acbc4015d2f7aa7c20a343908a8a33fd19429311d5432843"},{"version":"487a24e77f445ad876f616f09a959b02599817d2f7a6c6baa853a2e5f62f664e","signature":"95a710d485824861041c927da055477e4ba82ef9b6c65333550133def63d007e"},{"version":"5df25aa8b5cbf897175e5d0c22a8f58e848d37b2942a6d7bf3113bec26bffd53","signature":"434b10591392199e5f955b3c029d6612af5c08038c4e243b1f54cf4f7ec7309b"},{"version":"8b8f94228e22aa82d0726a9a7d33c6f36dcaa359e7097d49079f057329529155","signature":"da291e93961c84c03bc67842c9c59c160c48495c22c3df2af5ec17f4697e0b87"},{"version":"caf70a825e3ad9d00085fe8f78d32d2a630efa499fce692f81ad296dae4fd0e6","signature":"68e664d1c7208b594f3aa7d9673db7872ee2aa6a4bfed5fd1db11c86bb196f71"},{"version":"e2036fa1915b00d184491aa61d351f8dc4cc25e13c5dcb61275a6bbd96580041","signature":"e61f0cfe68d4117ff6e8c8a9ea195efaee16251134986a56700dc979c46619eb"},{"version":"b29a9d2d00977c14ffb83fc566906397109d9e4b5d051d6533a09b960646ee6e","signature":"f868face382a9fbb4827fa90b96fc83840c8df770ea2e28dc474003eea777170"},{"version":"051f69724c0bb225c78858b0850ab8d3859ff8bea4dc3995cc6c15c8dca9e840","signature":"d720e6c2795c495a7dd70ab38c49526b6ef44f022202e5ce13b848f59b6ebff7"},{"version":"b6425f96b8190443d723c7bba3a8e57da96935e7dc74e17b2903088b2d7ecbed","signature":"dfedd859ccede9d9e55b127b5569e31bd00d914b18c1d6bedaa2518c26044866"},{"version":"62220f1a63680b78115e853f912295c2896ebf8f2afc09ffa602cd475afdac82","signature":"b049c82118ce5cf715658009e5486340b6177766acf0fe3606c5403a09b6529e"},{"version":"e2a4976f8f423b6f664a261798a11cbf2839bc2de6576c0433250a5f9db76926","signature":"00103ae8cd80f3aab8de0ccbc0fd90f06a49749925d818d53da3da70c958911a"},{"version":"c3dcf8b2c991f7adb7344aa0159d4129b264fad1b79711272804ab7cda17d842","signature":"38ec9a5a9e2803d6e3c82957fa6ebb46859679344cc4c41183dd7eac3c49d510"},{"version":"834fabe6543e26e32407548963267f31e9c1c947e94326bb6ecbc61fb954bb0f","signature":"60a0d1effb60fe6bf2c1dc5fcedb04b3a1271f0c3cede1440067f4dd6ba773fd"},{"version":"5980d0b5bec8956947a2d9935b08385d3bd8728aef5cfa8379d7b36a322af16c","signature":"f5b66913fff0b28849ecd8669745817f07bb83553758708faa4637901ea79dc4"},{"version":"4853903533d328de3c6bf3e6728facb467b92677e790387a13476efdfabaebf6","signature":"0e3d66ade9aa7cfef6be2bbb17ca6a860024287b5a9c6c624a9651427c155196"},{"version":"4ffa4c413123ab9fce450e3037ccf6e1bbcdced482f12fbd8eac68709bb9953b","signature":"3ce08492497547e146ea94412095e3bbca86920fa83bfa6c0e8b8745a1f84665"},{"version":"69b3d3b23649412363602fcc21843cbc856d00583b452bf9b6e803bdc77a2b84","signature":"b3d7780d3a0e01d7f37fae1b1795c4e990b06c706309109ff329a983489deb30"},{"version":"9a89d3b28543307bd13ab56eba18d2a8292794c6e3ac090f98c670029bec7436","signature":"3a0d9ab24b5fe2813990d4a70586001aa727b729410d411f67207a6fa9163b17"},{"version":"e49d1215538f51bbce3b480dcf369d7c9527303d5d985059df3db9ae73aba633","signature":"4a922bd441076320344ef3a1d1b5afc502e53823bddb56002e7f24aedf738bbd"},{"version":"77be08b18a6466fae98e18acea30ab01efc76afaf53fe77d8a8a747ee779337c","signature":"0f0613189f304105137f8489a5912b46f0b97394f3302431744d5dc6577d366b"},{"version":"672d61a909ff896bade9595918927154955e3cbf50e676c4d4df30cb7e470f37","signature":"39b74dd8651a88249d0aa4f3fa4bb9ae32825728ace42a2c370c3299a2f717a5"},{"version":"6ee4b629b54461a336925f859d7bf1259f4ec86aa8baad2a5276efe69b36ecd2","signature":"6716576d95bb66268cd3481e0d06b8133a0d5acf3393c96ae9f8eb8a07aa86a6"},{"version":"465f969a9b1ab10676223c18dc7d506f6ef3be63bd7a4ba9b085aee530b6282c","signature":"3834159e9beb9d89d47724d5f27ea13dbeb9b63475e7a98df15d396b3e8ffda3"},{"version":"6ee4b629b54461a336925f859d7bf1259f4ec86aa8baad2a5276efe69b36ecd2","signature":"6716576d95bb66268cd3481e0d06b8133a0d5acf3393c96ae9f8eb8a07aa86a6"},{"version":"013d54dad4917622afd222ccf9530d63a5874a6385f482b5b4afe3607b0ae279","signature":"4a6bf65706143a327eebb9b778a07adf2626aa208852c6282d77ca063ec065cb"},"964558aa33ce14d4547e1a2714370b9838cc30d067cb5b9385caf4f5d9e7c5d1",{"version":"8aaac73bac1415dc2938d9744c7a2541e697e3c729e44344e89e668288a989b6","signature":"d6091771c5bb1704dff9e886204c311d99672d8401332b731bfa7ad8501d542d"},{"version":"32bf6c45b59557ed08eedb85bcbb9217acce007d1b88eb5a4c5f9d159984db65","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},"e42234af5867cac924e13459b3dc53937840e08f7e63764b1dbe7bed14f55814","c6c142e1a33065d2307d4a1d084011197dbf6c2898055255459d7daef0a6cb32","ea628a2736e081dc1a9a4528038f5ae402b147a490130d90d458d0783a5221be","285c96089ae4b6bf60f938bbd0f2f268199674df65698b0f815e785f8872bab3","d11dbad1c86581c6b7ada6500ce13a823b85aaf28802c86aaf9709ce46af37e4","a2c0ba66de4c7cca6f49996132a7d9ccd0436125ab445c8931da1e382848d71c","7d864d2d4021606ac0b424f67ff6ed1e24d5cfd0c0446a2b93b212a3bca93397","de3697b8e5255cd04449a376c6389450f949ccdf3133e78f3f2865e0e138ccf2","88eaffcbccaccfe5e0ca28e804eccf899e3167e55b4bd7d9610400c2ef9345cd","6701896deab6e4a552157fac599e28a32a39b2ffb1f37f87f421d44264589a80",{"version":"934da826699a6806b2a593a0cc16b4ce23620e909aa22c7a5cd9acaf94de3896","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"4f60e363c73ec021f84f6d88eab43047ec544cec39911e4c3a1b0f423676e482","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"9c9b6c65d5fc2d52f73e87c3046d1355e3f05e07659b75edc0992aa95e71fe71","signature":"4242a68e8b52051bd39c0117621f5a228b18db15ef1f84283815cb2f577dfa67"},"64e262b7b085152e898929aa7a803450cd16703660a9c5cd01a43c6ee042546e","4fabf42272e06465badb5f4ffa3d2067a8b2f7dc33b78fb0b3e7f42f4695988f","6cec859e5adf537ab411c26e21e5383a77a2379c024ef36ac14e7d2a6a32ea78","d22b63f3529238106eae787d97abd7e55f991722d60806cc5bdcc93b5749a217",{"version":"93bc02569e2ff6f236d7c82dc44672fbeb7c6d990983992ba72a5ff80a0f3099","signature":"4052355e1f53a8f1d81003ff4382f8e7a8c2b112644a68868a4d945d87d9c84e"},"8fcd40b95e20807e4c0750cf794c42d10dbad9638304361f8eb26812541dccca","f76ae8ce733c0b1ac6b4db3fc601eabf27d6a740f06542acb0975f5b645198c4",{"version":"9741a306db696db40ae0c6ad233162decef1a85d22ec343848755f63b241c48c","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},"0791aee4086e23064d1c75f88ecc99d90048794cacfcb6995ab4a8ffb03229f0",{"version":"e183fb51594836275e8209dbf3103f41d752c67c351cc648e8aeb31ffd52ced9","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"ad93099330dd539219c3b6aa2442722b84b8d1906a8b152de7fc9cd762f4b63d","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"9cd1fbeb0b5019e08cd7cfa1186d5c7aa387bb8eadb69e6edc6006964f8a23dd","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"58b6f534d52b5abab5a7dcb0c1897716d4dfdfc22b1b39e6921f29b3b7f38e03","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},"8c5ad1fa9d70b55df375c004574ba9177bd7dae9313a96641beb762ad4272f34",{"version":"52f01900b2a37d2416baca07ff10d7297b05cf753ecef22f9d4880a1646786cf","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"51c8784b2f23d52ab23d0a8400e9ec29f2daa9aa60e272fd0943c4144342f6c8","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},"cd583cd6119b73e6e55a02a0d3ad60d2ac9ecb477a6df9fd223dedb34a9e1c9e","07bb227570c6c0045b2685d9bfe9ba78f0cdef1a486c284b78f5be0deef8f677","e41f5c7900600af274a728032ea2c15202b29871bc18b9c666a367baa95bfd23",{"version":"6be19bccd03455ea619ebab3019c348b8330b61238821234dd22a5f4a9ecede7","signature":"852dffdac07851cfb5c0854108f7c1feee238ef171cd0960ae26faccb8cbda04"},{"version":"e1eb1c7d0de10bbaf38adf7102b8f974ab5fafed3e41bd371ac15f3e24f9bd9a","signature":"d043ed0f85a192384e54867e9be4bd73b4751f7481418d2c098d3d9063a227da"},{"version":"5a37a6c6a71c401aeeacea536d264220e4977d9cb8fbeb1123094320c9ac7ca7","signature":"1fa11e6b5bb71a46d5ced0d267425ed7a31eddcce86b9d02f26542b50c4953af"},{"version":"6953b8304d5ea18c2a5b6be8ffc02b77ae51610cc00922f33b843af7d9316559","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"5bf6e294c29ee115db7bd3e110d750548d547172a303124b41b55fc5d4cfdc1c","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"eab7235d3a19b5149972130b56feb9cc7b38713f364fc5487d1f36c55a079a58","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"ce50b9c053d8820e28ab8945064042a6c8a08b39bf34b684cbdc6177ca7193c1","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},"fbfc5271da0c7b350f386043c7f8533d4dac9a4d6bf3d033f4f2e26ec2b967ed",{"version":"e8b772201097b27600185987db45e1eed7c7c291bb902a6cae76c87e5ebf5b9e","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},{"version":"925113821404b5a347bef83e750f084518276edacc7ccd18ca26dbe166d21fd3","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},"49763cafa161100bed0f4c74e822517242979f52d50fbc05b7f1758a0ced0dd4",{"version":"b166ca5e6afe702a8b12b8ca853e3d89bfe5117394724f8c16511468ff7f694f","signature":"6b07eeaa1d9309d5156a9bde616b416db3624106e92856ac878b827e4dcb2e7b"},{"version":"ecba61d66cc848853b13af94a1304d5ad72b6b69994dd51ab7d27b77a631e321","signature":"f6b7ed6e72beeaee38d802539bc36942b285e75e62b4bff480c0df3fcb5936ba"},{"version":"89c419c1db7452834c7e23f48a50d72449c9863f9d201d425a9eb6db2f4875ec","signature":"efdc985497f0b6a99f9d69348cacb9fa36524801504f5b859d90d5569b35565d"},"a1e6f1bffdbd92e141063f827f4241d89ecce9238ad17a2f9a0f6d7afabf0175",{"version":"751764bb94219b4ce8f5475dc35d3de2e432fea01a0c9610cd7f69ad05e398c6","impliedFormat":1}],"root":[[436,438],487,582,[594,598],[600,687],[689,701],[703,708],[715,717],[722,864],[867,879]],"options":{"allowJs":true,"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"target":9},"referencedMap":[[731,1],[732,2],[734,3],[735,4],[736,5],[737,5],[738,5],[739,5],[740,5],[724,6],[744,7],[745,8],[746,9],[747,5],[751,10],[754,11],[755,8],[761,12],[762,5],[763,8],[764,2],[765,8],[782,13],[779,14],[784,15],[785,16],[788,17],[787,18],[789,19],[790,20],[792,21],[791,16],[794,21],[795,22],[793,23],[799,24],[798,25],[802,26],[803,16],[773,27],[606,28],[776,29],[809,30],[806,31],[810,16],[811,16],[816,32],[819,33],[823,34],[821,35],[824,36],[599,37],[595,37],[609,38],[610,38],[611,38],[612,38],[613,38],[608,38],[614,38],[615,38],[616,38],[617,39],[618,40],[620,41],[619,39],[622,42],[621,39],[623,38],[624,38],[626,43],[627,38],[628,38],[629,38],[630,38],[631,38],[632,38],[633,38],[635,38],[636,38],[634,38],[638,44],[637,38],[639,38],[640,38],[641,38],[643,38],[642,38],[644,38],[645,38],[647,45],[646,38],[648,38],[649,38],[651,38],[652,38],[650,38],[653,38],[654,38],[655,38],[656,38],[657,38],[658,38],[659,38],[660,38],[663,46],[664,47],[665,38],[666,38],[667,38],[661,38],[668,38],[670,48],[669,38],[671,48],[672,38],[826,49],[827,50],[828,49],[673,51],[825,52],[833,53],[834,53],[835,53],[836,53],[837,53],[838,53],[832,53],[839,53],[840,53],[841,53],[842,53],[843,53],[844,54],[845,53],[846,53],[847,53],[848,53],[849,53],[850,53],[851,53],[852,53],[853,53],[854,53],[855,53],[856,53],[857,53],[858,53],[859,53],[860,53],[861,53],[830,55],[862,53],[831,56],[863,53],[864,53],[868,57],[869,57],[870,53],[871,53],[872,53],[873,53],[874,53],[875,53],[708,58],[715,59],[598,60],[716,61],[600,62],[601,63],[717,64],[602,6],[722,65],[723,66],[728,67],[603,68],[605,69],[729,66],[685,70],[684,71],[867,72],[829,73],[683,74],[675,75],[676,76],[686,77],[687,77],[689,78],[690,77],[693,79],[691,77],[692,77],[876,6],[677,6],[733,80],[730,71],[877,58],[753,81],[878,82],[743,71],[757,6],[879,83],[727,84],[760,85],[680,86],[756,71],[679,71],[681,87],[741,71],[759,88],[725,58],[750,89],[742,71],[682,90],[726,6],[674,91],[758,71],[752,6],[767,64],[781,6],[780,64],[808,89],[769,92],[813,93],[812,71],[783,71],[775,94],[804,64],[797,95],[820,96],[778,97],[796,98],[800,71],[805,64],[766,6],[777,71],[770,6],[768,98],[774,71],[807,89],[786,6],[801,98],[817,89],[771,99],[814,100],[815,100],[818,101],[772,64],[822,64],[749,102],[748,71],[678,71],[604,6],[694,103],[436,6],[688,6],[865,6],[866,6],[702,6],[695,104],[596,6],[597,6],[697,105],[696,106],[437,107],[698,108],[700,109],[699,6],[701,110],[625,6],[703,111],[705,112],[704,61],[706,113],[607,44],[662,6],[707,6],[594,106],[438,114],[487,115],[582,116],[236,6],[504,6],[506,6],[507,117],[491,6],[498,118],[496,6],[880,6],[130,119],[131,119],[132,120],[91,121],[133,122],[134,123],[135,124],[86,6],[89,125],[87,6],[88,6],[136,126],[137,127],[138,128],[139,129],[140,130],[141,131],[142,131],[144,132],[143,133],[145,134],[146,135],[147,136],[129,137],[90,6],[148,138],[149,139],[150,140],[183,141],[151,142],[152,143],[153,144],[154,145],[155,146],[156,147],[157,148],[158,149],[159,150],[160,151],[161,151],[162,152],[163,6],[164,6],[165,153],[167,154],[166,155],[168,156],[169,157],[170,158],[171,159],[172,160],[173,161],[174,162],[175,163],[176,164],[177,165],[178,166],[179,167],[180,168],[181,169],[182,170],[187,171],[334,6],[188,172],[184,6],[186,173],[333,71],[253,71],[499,174],[492,6],[554,175],[553,176],[565,175],[556,177],[558,178],[577,178],[557,179],[489,180],[488,6],[494,181],[495,182],[574,183],[550,184],[552,185],[573,6],[571,184],[551,6],[493,182],[549,6],[497,6],[185,6],[590,186],[592,187],[591,188],[589,189],[588,6],[711,190],[712,190],[710,191],[541,6],[543,192],[542,6],[445,193],[447,194],[452,195],[454,196],[204,197],[240,198],[391,199],[235,200],[223,6],[219,6],[202,6],[381,201],[403,202],[203,6],[362,203],[244,204],[245,205],[332,206],[378,207],[347,208],[385,209],[386,210],[384,211],[383,6],[382,212],[242,213],[205,214],[280,6],[281,215],[222,6],[224,216],[206,217],[264,216],[351,216],[84,216],[238,218],[237,6],[390,219],[418,6],[214,6],[308,220],[309,221],[303,71],[471,6],[311,6],[312,222],[304,223],[477,224],[475,225],[470,6],[377,226],[376,6],[469,227],[305,71],[343,228],[341,229],[472,6],[476,6],[474,230],[473,6],[342,231],[464,232],[467,233],[271,234],[270,235],[269,236],[480,71],[268,237],[283,6],[423,6],[713,238],[709,6],[426,6],[718,239],[719,240],[425,71],[427,241],[80,6],[387,242],[388,243],[389,244],[226,6],[213,245],[189,6],[324,71],[82,246],[323,247],[322,248],[313,6],[314,6],[321,6],[316,6],[319,249],[315,6],[317,250],[320,251],[318,250],[201,6],[217,6],[218,216],[254,252],[255,253],[252,254],[250,255],[251,256],[247,6],[330,222],[349,222],[446,257],[455,258],[459,259],[394,260],[393,6],[79,6],[428,261],[191,262],[306,263],[307,264],[298,265],[288,6],[329,266],[289,267],[331,268],[326,269],[325,6],[327,6],[340,270],[395,271],[396,272],[291,273],[295,274],[286,275],[373,276],[190,277],[263,278],[363,279],[216,280],[419,281],[81,200],[248,6],[256,282],[413,283],[246,6],[412,284],[85,6],[410,285],[225,6],[282,286],[406,6],[207,6],[208,6],[259,287],[221,6],[400,288],[294,289],[392,290],[293,6],[258,6],[249,6],[364,291],[365,292],[220,6],[367,293],[369,294],[368,295],[228,6],[257,280],[371,296],[411,297],[414,298],[192,6],[195,6],[193,6],[197,6],[194,6],[196,6],[198,299],[200,6],[355,300],[354,6],[360,301],[356,302],[359,303],[358,303],[361,301],[357,302],[720,304],[215,305],[350,306],[399,307],[430,6],[432,308],[434,309],[290,6],[433,310],[397,271],[429,311],[310,271],[199,6],[292,312],[210,313],[211,314],[212,315],[279,316],[372,316],[265,316],[352,317],[266,317],[243,318],[209,6],[262,319],[261,320],[260,321],[353,322],[398,323],[302,324],[337,325],[301,326],[335,327],[336,327],[380,328],[379,329],[375,330],[346,331],[348,332],[345,333],[370,334],[339,6],[451,6],[338,335],[374,6],[401,336],[287,242],[285,337],[284,338],[421,339],[424,6],[420,340],[402,340],[449,6],[448,6],[450,6],[422,6],[404,341],[300,71],[444,6],[344,342],[241,6],[230,343],[296,6],[457,71],[463,344],[278,71],[461,222],[277,345],[416,346],[276,344],[83,6],[465,347],[274,71],[275,71],[267,6],[229,6],[273,348],[272,349],[227,350],[297,150],[405,150],[366,6],[408,351],[407,6],[453,6],[328,352],[299,71],[417,353],[439,71],[442,354],[443,355],[440,71],[441,6],[239,356],[234,357],[233,6],[232,358],[231,6],[415,359],[456,360],[458,361],[460,362],[714,363],[462,364],[435,365],[486,366],[466,366],[485,367],[468,368],[478,369],[721,370],[479,371],[481,372],[431,373],[484,245],[483,6],[482,374],[546,375],[509,376],[510,377],[513,378],[505,379],[512,380],[508,381],[503,6],[514,382],[515,383],[409,384],[521,6],[566,6],[490,6],[77,6],[78,6],[13,6],[14,6],[16,6],[15,6],[2,6],[17,6],[18,6],[19,6],[20,6],[21,6],[22,6],[23,6],[24,6],[3,6],[25,6],[26,6],[4,6],[27,6],[31,6],[28,6],[29,6],[30,6],[32,6],[33,6],[34,6],[5,6],[35,6],[36,6],[37,6],[38,6],[6,6],[42,6],[39,6],[40,6],[41,6],[43,6],[7,6],[44,6],[49,6],[50,6],[45,6],[46,6],[47,6],[48,6],[8,6],[54,6],[51,6],[52,6],[53,6],[55,6],[9,6],[56,6],[57,6],[58,6],[60,6],[59,6],[61,6],[62,6],[10,6],[63,6],[64,6],[65,6],[11,6],[66,6],[67,6],[68,6],[69,6],[70,6],[1,6],[71,6],[72,6],[12,6],[75,6],[74,6],[73,6],[76,6],[107,385],[117,386],[106,385],[127,387],[98,388],[97,389],[126,374],[120,390],[125,391],[100,392],[114,393],[99,394],[123,395],[95,396],[94,374],[124,397],[96,398],[101,399],[102,6],[105,399],[92,6],[128,400],[118,401],[109,402],[110,403],[112,404],[108,405],[111,406],[121,374],[103,407],[104,408],[113,409],[93,410],[116,401],[115,399],[119,6],[122,411],[576,412],[581,413],[575,414],[567,415],[563,416],[559,417],[572,6],[560,177],[586,418],[583,419],[579,420],[578,421],[561,422],[585,423],[555,6],[562,424],[580,425],[593,426],[587,427],[569,428],[570,429],[568,6],[537,430],[535,431],[536,432],[524,433],[525,431],[532,434],[523,435],[528,436],[538,6],[529,437],[534,438],[540,439],[539,440],[522,441],[530,442],[531,443],[526,444],[533,430],[527,445],[501,446],[548,447],[517,448],[502,446],[500,6],[516,449],[547,6],[545,6],[518,6],[544,450],[511,451],[520,6],[519,452],[584,6],[564,6]],"affectedFilesPendingEmit":[731,732,734,735,736,737,738,739,740,724,744,745,746,747,751,754,755,761,762,763,764,765,782,779,784,785,788,787,789,790,792,791,794,795,793,799,798,802,803,773,606,776,809,806,810,811,816,819,823,821,824,599,595,609,610,611,612,613,608,614,615,616,617,618,620,619,622,621,623,624,626,627,628,629,630,631,632,633,635,636,634,638,637,639,640,641,643,642,644,645,647,646,648,649,651,652,650,653,654,655,656,657,658,659,660,663,664,665,666,667,661,668,670,669,671,672,826,827,828,673,825,833,834,835,836,837,838,832,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,830,862,831,863,864,868,869,870,871,872,873,874,875,708,715,598,716,600,601,717,602,722,723,728,603,605,729,685,684,867,829,683,675,676,686,687,689,690,693,691,692,876,677,733,730,877,753,878,743,757,879,727,760,680,756,679,681,741,759,725,750,742,682,726,674,758,752,767,781,780,808,769,813,812,783,775,804,797,820,778,796,800,805,766,777,770,768,774,807,786,801,817,771,814,815,818,772,822,749,748,678,604,694,436,695,596,597,697,696,437,698,700,699,701,625,703,705,704,706,607,662,707,594,438,582],"version":"5.7.3"} \ No newline at end of file +{"fileNames":["../../../../dashboard/node_modules/typescript/lib/lib.es5.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2016.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2018.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2019.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2021.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2022.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2023.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.esnext.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.dom.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.esnext.array.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.decorators.d.ts","../../../../dashboard/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../dashboard/node_modules/next/dist/server/after/builtin-request-context.d.ts","../../../../dashboard/node_modules/next/dist/compiled/webpack/webpack.d.ts","../../../../dashboard/node_modules/next/dist/server/config.d.ts","../../../../dashboard/node_modules/next/dist/lib/load-custom-routes.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/image-config.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","../../../../dashboard/node_modules/next/dist/server/get-page-files.d.ts","../../../../dashboard/node_modules/@types/node/compatibility/disposable.d.ts","../../../../dashboard/node_modules/@types/node/compatibility/indexable.d.ts","../../../../dashboard/node_modules/@types/node/compatibility/iterators.d.ts","../../../../dashboard/node_modules/@types/node/compatibility/index.d.ts","../../../../dashboard/node_modules/@types/node/globals.typedarray.d.ts","../../../../dashboard/node_modules/@types/node/buffer.buffer.d.ts","../../../../dashboard/node_modules/undici-types/header.d.ts","../../../../dashboard/node_modules/undici-types/readable.d.ts","../../../../dashboard/node_modules/undici-types/file.d.ts","../../../../dashboard/node_modules/undici-types/fetch.d.ts","../../../../dashboard/node_modules/undici-types/formdata.d.ts","../../../../dashboard/node_modules/undici-types/connector.d.ts","../../../../dashboard/node_modules/undici-types/client.d.ts","../../../../dashboard/node_modules/undici-types/errors.d.ts","../../../../dashboard/node_modules/undici-types/dispatcher.d.ts","../../../../dashboard/node_modules/undici-types/global-dispatcher.d.ts","../../../../dashboard/node_modules/undici-types/global-origin.d.ts","../../../../dashboard/node_modules/undici-types/pool-stats.d.ts","../../../../dashboard/node_modules/undici-types/pool.d.ts","../../../../dashboard/node_modules/undici-types/handlers.d.ts","../../../../dashboard/node_modules/undici-types/balanced-pool.d.ts","../../../../dashboard/node_modules/undici-types/agent.d.ts","../../../../dashboard/node_modules/undici-types/mock-interceptor.d.ts","../../../../dashboard/node_modules/undici-types/mock-agent.d.ts","../../../../dashboard/node_modules/undici-types/mock-client.d.ts","../../../../dashboard/node_modules/undici-types/mock-pool.d.ts","../../../../dashboard/node_modules/undici-types/mock-errors.d.ts","../../../../dashboard/node_modules/undici-types/proxy-agent.d.ts","../../../../dashboard/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../dashboard/node_modules/undici-types/retry-handler.d.ts","../../../../dashboard/node_modules/undici-types/retry-agent.d.ts","../../../../dashboard/node_modules/undici-types/api.d.ts","../../../../dashboard/node_modules/undici-types/interceptors.d.ts","../../../../dashboard/node_modules/undici-types/util.d.ts","../../../../dashboard/node_modules/undici-types/cookies.d.ts","../../../../dashboard/node_modules/undici-types/patch.d.ts","../../../../dashboard/node_modules/undici-types/websocket.d.ts","../../../../dashboard/node_modules/undici-types/eventsource.d.ts","../../../../dashboard/node_modules/undici-types/filereader.d.ts","../../../../dashboard/node_modules/undici-types/diagnostics-channel.d.ts","../../../../dashboard/node_modules/undici-types/content-type.d.ts","../../../../dashboard/node_modules/undici-types/cache.d.ts","../../../../dashboard/node_modules/undici-types/index.d.ts","../../../../dashboard/node_modules/@types/node/globals.d.ts","../../../../dashboard/node_modules/@types/node/assert.d.ts","../../../../dashboard/node_modules/@types/node/assert/strict.d.ts","../../../../dashboard/node_modules/@types/node/async_hooks.d.ts","../../../../dashboard/node_modules/@types/node/buffer.d.ts","../../../../dashboard/node_modules/@types/node/child_process.d.ts","../../../../dashboard/node_modules/@types/node/cluster.d.ts","../../../../dashboard/node_modules/@types/node/console.d.ts","../../../../dashboard/node_modules/@types/node/constants.d.ts","../../../../dashboard/node_modules/@types/node/crypto.d.ts","../../../../dashboard/node_modules/@types/node/dgram.d.ts","../../../../dashboard/node_modules/@types/node/diagnostics_channel.d.ts","../../../../dashboard/node_modules/@types/node/dns.d.ts","../../../../dashboard/node_modules/@types/node/dns/promises.d.ts","../../../../dashboard/node_modules/@types/node/domain.d.ts","../../../../dashboard/node_modules/@types/node/dom-events.d.ts","../../../../dashboard/node_modules/@types/node/events.d.ts","../../../../dashboard/node_modules/@types/node/fs.d.ts","../../../../dashboard/node_modules/@types/node/fs/promises.d.ts","../../../../dashboard/node_modules/@types/node/http.d.ts","../../../../dashboard/node_modules/@types/node/http2.d.ts","../../../../dashboard/node_modules/@types/node/https.d.ts","../../../../dashboard/node_modules/@types/node/inspector.d.ts","../../../../dashboard/node_modules/@types/node/module.d.ts","../../../../dashboard/node_modules/@types/node/net.d.ts","../../../../dashboard/node_modules/@types/node/os.d.ts","../../../../dashboard/node_modules/@types/node/path.d.ts","../../../../dashboard/node_modules/@types/node/perf_hooks.d.ts","../../../../dashboard/node_modules/@types/node/process.d.ts","../../../../dashboard/node_modules/@types/node/punycode.d.ts","../../../../dashboard/node_modules/@types/node/querystring.d.ts","../../../../dashboard/node_modules/@types/node/readline.d.ts","../../../../dashboard/node_modules/@types/node/readline/promises.d.ts","../../../../dashboard/node_modules/@types/node/repl.d.ts","../../../../dashboard/node_modules/@types/node/sea.d.ts","../../../../dashboard/node_modules/@types/node/sqlite.d.ts","../../../../dashboard/node_modules/@types/node/stream.d.ts","../../../../dashboard/node_modules/@types/node/stream/promises.d.ts","../../../../dashboard/node_modules/@types/node/stream/consumers.d.ts","../../../../dashboard/node_modules/@types/node/stream/web.d.ts","../../../../dashboard/node_modules/@types/node/string_decoder.d.ts","../../../../dashboard/node_modules/@types/node/test.d.ts","../../../../dashboard/node_modules/@types/node/timers.d.ts","../../../../dashboard/node_modules/@types/node/timers/promises.d.ts","../../../../dashboard/node_modules/@types/node/tls.d.ts","../../../../dashboard/node_modules/@types/node/trace_events.d.ts","../../../../dashboard/node_modules/@types/node/tty.d.ts","../../../../dashboard/node_modules/@types/node/url.d.ts","../../../../dashboard/node_modules/@types/node/util.d.ts","../../../../dashboard/node_modules/@types/node/v8.d.ts","../../../../dashboard/node_modules/@types/node/vm.d.ts","../../../../dashboard/node_modules/@types/node/wasi.d.ts","../../../../dashboard/node_modules/@types/node/worker_threads.d.ts","../../../../dashboard/node_modules/@types/node/zlib.d.ts","../../../../dashboard/node_modules/@types/node/index.d.ts","../../../../dashboard/node_modules/@types/react/global.d.ts","../../../../dashboard/node_modules/csstype/index.d.ts","../../../../dashboard/node_modules/@types/react/index.d.ts","../../../../dashboard/node_modules/@types/react/canary.d.ts","../../../../dashboard/node_modules/@types/react/experimental.d.ts","../../../../dashboard/node_modules/next/dist/lib/fallback.d.ts","../../../../dashboard/node_modules/next/dist/server/base-http/index.d.ts","../../../../dashboard/node_modules/next/dist/server/api-utils/index.d.ts","../../../../dashboard/node_modules/next/dist/server/node-environment-baseline.d.ts","../../../../dashboard/node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","../../../../dashboard/node_modules/next/dist/server/node-environment-extensions/random.d.ts","../../../../dashboard/node_modules/next/dist/server/node-environment-extensions/date.d.ts","../../../../dashboard/node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","../../../../dashboard/node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","../../../../dashboard/node_modules/next/dist/server/node-environment.d.ts","../../../../dashboard/node_modules/next/dist/server/require-hook.d.ts","../../../../dashboard/node_modules/next/dist/server/node-polyfill-crypto.d.ts","../../../../dashboard/node_modules/next/dist/lib/page-types.d.ts","../../../../dashboard/node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","../../../../dashboard/node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","../../../../dashboard/node_modules/next/dist/build/analysis/get-page-static-info.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/cache-control.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/cache-handlers/types.d.ts","../../../../dashboard/node_modules/next/dist/server/route-kind.d.ts","../../../../dashboard/node_modules/next/dist/server/response-cache/types.d.ts","../../../../dashboard/node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","../../../../dashboard/node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","../../../../dashboard/node_modules/next/dist/lib/constants.d.ts","../../../../dashboard/node_modules/next/dist/client/components/app-router-headers.d.ts","../../../../dashboard/node_modules/next/dist/server/render-result.d.ts","../../../../dashboard/node_modules/next/dist/server/body-streams.d.ts","../../../../dashboard/node_modules/next/dist/lib/setup-exception-listeners.d.ts","../../../../dashboard/node_modules/next/dist/lib/worker.d.ts","../../../../dashboard/node_modules/next/dist/build/rendering-mode.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/experimental/ppr.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/app-build-manifest-plugin.d.ts","../../../../dashboard/node_modules/next/dist/build/page-extensions-type.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","../../../../dashboard/node_modules/next/dist/server/instrumentation/types.d.ts","../../../../dashboard/node_modules/next/dist/lib/coalesced-function.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/router-utils/types.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/constants.d.ts","../../../../dashboard/node_modules/next/dist/trace/types.d.ts","../../../../dashboard/node_modules/next/dist/trace/trace.d.ts","../../../../dashboard/node_modules/next/dist/trace/shared.d.ts","../../../../dashboard/node_modules/next/dist/trace/index.d.ts","../../../../dashboard/node_modules/next/dist/build/load-jsconfig.d.ts","../../../../dashboard/node_modules/@next/env/dist/index.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.d.ts","../../../../dashboard/node_modules/next/dist/telemetry/storage.d.ts","../../../../dashboard/node_modules/next/dist/build/build-context.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/bloom-filter.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack-config.d.ts","../../../../dashboard/node_modules/next/dist/server/route-definitions/route-definition.d.ts","../../../../dashboard/node_modules/next/dist/build/swc/generated-native.d.ts","../../../../dashboard/node_modules/next/dist/build/swc/types.d.ts","../../../../dashboard/node_modules/next/dist/server/dev/parse-version-info.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/shared/types.d.ts","../../../../dashboard/node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/parse-stack.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/server/shared.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/shared/stack-frame.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/dev-overlay/utils/get-error-by-type.d.ts","../../../../dashboard/node_modules/@types/react/jsx-runtime.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/dev-overlay/container/runtime-error/render-error.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/dev-overlay/shared.d.ts","../../../../dashboard/node_modules/next/dist/server/dev/hot-reloader-types.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/types.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/lru-cache.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/dev-bundler-service.d.ts","../../../../dashboard/node_modules/next/dist/server/route-matchers/route-matcher.d.ts","../../../../dashboard/node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","../../../../dashboard/node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","../../../../dashboard/node_modules/next/dist/server/base-http/node.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","../../../../dashboard/node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","../../../../dashboard/node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/mitt.d.ts","../../../../dashboard/node_modules/next/dist/client/with-router.d.ts","../../../../dashboard/node_modules/next/dist/client/router.d.ts","../../../../dashboard/node_modules/next/dist/client/route-loader.d.ts","../../../../dashboard/node_modules/next/dist/client/page-loader.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router/router.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/app-dir-module.d.ts","../../../../dashboard/node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/cookies.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","../../../../dashboard/node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/cache-signal.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","../../../../dashboard/node_modules/next/dist/server/request/fallback-params.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","../../../../dashboard/node_modules/next/dist/server/response-cache/index.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/lazy-result.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/implicit-tags.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/deep-readonly.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/app-render.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/amp-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","../../../../dashboard/node_modules/next/dist/client/components/error-boundary.d.ts","../../../../dashboard/node_modules/next/dist/client/components/layout-router.d.ts","../../../../dashboard/node_modules/next/dist/client/components/render-from-template-context.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","../../../../dashboard/node_modules/next/dist/client/components/client-page.d.ts","../../../../dashboard/node_modules/next/dist/client/components/client-segment.d.ts","../../../../dashboard/node_modules/next/dist/server/request/search-params.d.ts","../../../../dashboard/node_modules/next/dist/client/components/hooks-server-context.d.ts","../../../../dashboard/node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/extra-types.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/resolvers.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/types/icons.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","../../../../dashboard/node_modules/next/dist/lib/metadata/metadata.d.ts","../../../../dashboard/node_modules/next/dist/lib/framework/boundary-components.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/rsc/preloads.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/rsc/postpone.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/rsc/taint.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/collect-segment-data.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/entry-base.d.ts","../../../../dashboard/node_modules/next/dist/build/templates/app-page.d.ts","../../../../dashboard/node_modules/@types/react/jsx-dev-runtime.d.ts","../../../../dashboard/node_modules/@types/react/compiler-runtime.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-page/module.d.ts","../../../../dashboard/node_modules/next/dist/server/web/adapter.d.ts","../../../../dashboard/node_modules/next/dist/server/use-cache/cache-life.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/types.d.ts","../../../../dashboard/node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","../../../../dashboard/node_modules/next/dist/client/flight-data-helpers.d.ts","../../../../dashboard/node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","../../../../dashboard/node_modules/next/dist/build/templates/pages.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/pages/module.d.ts","../../../../dashboard/node_modules/next/dist/next-devtools/userspace/pages/pages-dev-overlay-setup.d.ts","../../../../dashboard/node_modules/next/dist/server/render.d.ts","../../../../dashboard/node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","../../../../dashboard/node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","../../../../dashboard/node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/normalizer.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/request/suffix.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/request/rsc.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/request/prefetch-rsc.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/request/next-data.d.ts","../../../../dashboard/node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","../../../../dashboard/node_modules/next/dist/build/static-paths/types.d.ts","../../../../dashboard/node_modules/next/dist/server/base-server.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/render-server.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/router-server.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/router-utils/router-server-context.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/route-module.d.ts","../../../../dashboard/node_modules/next/dist/server/load-components.d.ts","../../../../dashboard/node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","../../../../dashboard/node_modules/next/dist/server/async-storage/work-store.d.ts","../../../../dashboard/node_modules/next/dist/server/web/http.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","../../../../dashboard/node_modules/next/dist/client/components/redirect-status-code.d.ts","../../../../dashboard/node_modules/next/dist/client/components/redirect-error.d.ts","../../../../dashboard/node_modules/next/dist/build/templates/app-route.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-route/module.d.ts","../../../../dashboard/node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","../../../../dashboard/node_modules/next/dist/build/segment-config/app/app-segments.d.ts","../../../../dashboard/node_modules/next/dist/build/utils.d.ts","../../../../dashboard/node_modules/next/dist/build/turborepo-access-trace/types.d.ts","../../../../dashboard/node_modules/next/dist/build/turborepo-access-trace/result.d.ts","../../../../dashboard/node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","../../../../dashboard/node_modules/next/dist/build/turborepo-access-trace/index.d.ts","../../../../dashboard/node_modules/next/dist/export/routes/types.d.ts","../../../../dashboard/node_modules/next/dist/export/types.d.ts","../../../../dashboard/node_modules/next/dist/export/worker.d.ts","../../../../dashboard/node_modules/next/dist/build/worker.d.ts","../../../../dashboard/node_modules/next/dist/build/index.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/incremental-cache/index.d.ts","../../../../dashboard/node_modules/next/dist/server/after/after.d.ts","../../../../dashboard/node_modules/next/dist/server/after/after-context.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","../../../../dashboard/node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","../../../../dashboard/node_modules/next/dist/server/request/params.d.ts","../../../../dashboard/node_modules/next/dist/server/route-matches/route-match.d.ts","../../../../dashboard/node_modules/next/dist/server/request-meta.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/i18n-provider.d.ts","../../../../dashboard/node_modules/next/dist/server/web/next-url.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/response.d.ts","../../../../dashboard/node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","../../../../dashboard/node_modules/next/dist/server/web/types.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","../../../../dashboard/node_modules/next/dist/server/lib/async-callback-set.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","../../../../dashboard/node_modules/sharp/lib/index.d.ts","../../../../dashboard/node_modules/next/dist/server/image-optimizer.d.ts","../../../../dashboard/node_modules/next/dist/server/next-server.d.ts","../../../../dashboard/node_modules/next/dist/server/dev/static-paths-worker.d.ts","../../../../dashboard/node_modules/next/dist/server/dev/next-dev-server.d.ts","../../../../dashboard/node_modules/next/dist/server/next.d.ts","../../../../dashboard/node_modules/next/dist/types.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/utils.d.ts","../../../../dashboard/node_modules/next/dist/cli/next-test.d.ts","../../../../dashboard/node_modules/next/dist/server/config-shared.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/request.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","../../../../dashboard/node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/image-response.d.ts","../../../../dashboard/node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","../../../../dashboard/node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","../../../../dashboard/node_modules/next/dist/compiled/@vercel/og/types.d.ts","../../../../dashboard/node_modules/next/dist/server/after/index.d.ts","../../../../dashboard/node_modules/next/dist/server/request/root-params.d.ts","../../../../dashboard/node_modules/next/dist/server/request/connection.d.ts","../../../../dashboard/node_modules/next/server.d.ts","../../../../dashboard/node_modules/next/dist/server/request/cookies.d.ts","../../../../dashboard/node_modules/next/dist/server/request/headers.d.ts","../../../../dashboard/node_modules/next/dist/server/request/draft-mode.d.ts","../../../../dashboard/node_modules/next/headers.d.ts","./lib/env.ts","./lib/product/api.ts","./middleware.ts","../../../../dashboard/node_modules/next/dist/styled-jsx/types/css.d.ts","../../../../dashboard/node_modules/next/dist/styled-jsx/types/macro.d.ts","../../../../dashboard/node_modules/next/dist/styled-jsx/types/style.d.ts","../../../../dashboard/node_modules/next/dist/styled-jsx/types/global.d.ts","../../../../dashboard/node_modules/next/dist/styled-jsx/types/index.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/amp.d.ts","../../../../dashboard/node_modules/next/amp.d.ts","../../../../dashboard/node_modules/next/dist/pages/_app.d.ts","../../../../dashboard/node_modules/next/app.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","../../../../dashboard/node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","../../../../dashboard/node_modules/next/dist/server/use-cache/cache-tag.d.ts","../../../../dashboard/node_modules/next/cache.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/runtime-config.external.d.ts","../../../../dashboard/node_modules/next/config.d.ts","../../../../dashboard/node_modules/next/dist/pages/_document.d.ts","../../../../dashboard/node_modules/next/document.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/dynamic.d.ts","../../../../dashboard/node_modules/next/dynamic.d.ts","../../../../dashboard/node_modules/next/dist/pages/_error.d.ts","../../../../dashboard/node_modules/next/error.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/head.d.ts","../../../../dashboard/node_modules/next/head.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/get-img-props.d.ts","../../../../dashboard/node_modules/next/dist/client/image-component.d.ts","../../../../dashboard/node_modules/next/dist/shared/lib/image-external.d.ts","../../../../dashboard/node_modules/next/image.d.ts","../../../../dashboard/node_modules/next/dist/client/link.d.ts","../../../../dashboard/node_modules/next/link.d.ts","../../../../dashboard/node_modules/next/dist/client/components/redirect.d.ts","../../../../dashboard/node_modules/next/dist/client/components/not-found.d.ts","../../../../dashboard/node_modules/next/dist/client/components/forbidden.d.ts","../../../../dashboard/node_modules/next/dist/client/components/unauthorized.d.ts","../../../../dashboard/node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","../../../../dashboard/node_modules/next/dist/client/components/unstable-rethrow.d.ts","../../../../dashboard/node_modules/next/dist/client/components/navigation.react-server.d.ts","../../../../dashboard/node_modules/next/dist/client/components/unrecognized-action-error.d.ts","../../../../dashboard/node_modules/next/dist/client/components/navigation.d.ts","../../../../dashboard/node_modules/next/navigation.d.ts","../../../../dashboard/node_modules/next/router.d.ts","../../../../dashboard/node_modules/next/dist/client/script.d.ts","../../../../dashboard/node_modules/next/script.d.ts","../../../../dashboard/node_modules/next/types/global.d.ts","../../../../dashboard/node_modules/next/types/compiled.d.ts","../../../../dashboard/node_modules/next/types.d.ts","../../../../dashboard/node_modules/next/index.d.ts","../../../../dashboard/node_modules/next/image-types/global.d.ts","./next-env.d.ts","../../../../dashboard/node_modules/@vitest/spy/optional-types.d.ts","../../../../dashboard/node_modules/@vitest/spy/dist/index.d.ts","../../../../dashboard/node_modules/tinyrainbow/dist/index.d.ts","../../../../dashboard/node_modules/@standard-schema/spec/dist/index.d.ts","../../../../dashboard/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/types.d-bcelap-c.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/diff.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/display.d.ts","../../../../dashboard/node_modules/@types/deep-eql/index.d.ts","../../../../dashboard/node_modules/assertion-error/index.d.ts","../../../../dashboard/node_modules/@types/chai/index.d.ts","../../../../dashboard/node_modules/@vitest/expect/dist/index.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/hmrpayload.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/dist/node/chunks/modulerunnertransport.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/customevent.d.ts","../../../../dashboard/node_modules/rolldown/dist/shared/logging-xuho4may.d.mts","../../../../dashboard/node_modules/@oxc-project/types/types.d.ts","../../../../dashboard/node_modules/rolldown/dist/shared/binding-dzunhvw4.d.mts","../../../../dashboard/node_modules/@rolldown/pluginutils/dist/filter/index.d.mts","../../../../dashboard/node_modules/@rolldown/pluginutils/dist/index.d.mts","../../../../dashboard/node_modules/rolldown/dist/shared/define-config-dnx0wekp.d.mts","../../../../dashboard/node_modules/rolldown/dist/index.d.mts","../../../../dashboard/node_modules/rolldown/dist/parse-ast-index.d.mts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/internal/rolluptypecompat.d.ts","../../../../dashboard/node_modules/rolldown/dist/shared/constructors-bm20b11r.d.mts","../../../../dashboard/node_modules/rolldown/dist/plugins-index.d.mts","../../../../dashboard/node_modules/rolldown/dist/shared/transform-cvse9_mh.d.mts","../../../../dashboard/node_modules/rolldown/dist/utils-index.d.mts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/hot.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/dist/node/module-runner.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/internal/esbuildoptions.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/metadata.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/internal/terseroptions.d.ts","../../../../dashboard/node_modules/source-map-js/source-map.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/previous-map.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/input.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/css-syntax-error.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/declaration.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/root.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/warning.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/lazy-result.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/no-work-result.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/processor.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/result.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/document.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/rule.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/node.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/comment.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/container.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/at-rule.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/list.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/postcss.d.ts","../../../../dashboard/node_modules/vitest/node_modules/postcss/lib/postcss.d.mts","../../../../dashboard/node_modules/lightningcss/node/ast.d.ts","../../../../dashboard/node_modules/lightningcss/node/targets.d.ts","../../../../dashboard/node_modules/lightningcss/node/index.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/internal/lightningcssoptions.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/internal/csspreprocessoroptions.d.ts","../../../../dashboard/node_modules/rolldown/dist/filter-index.d.mts","../../../../dashboard/node_modules/vitest/node_modules/vite/types/importglob.d.ts","../../../../dashboard/node_modules/vitest/node_modules/vite/dist/node/index.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/types.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/helpers.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/timers.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/index.d.ts","../../../../dashboard/node_modules/@vitest/runner/dist/tasks.d-deyaimiu.d.ts","../../../../dashboard/node_modules/@vitest/runner/dist/index.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/traces.d.d2t_r8rx.d.ts","../../../../dashboard/node_modules/@vitest/snapshot/dist/environment.d-dojxxzv9.d.ts","../../../../dashboard/node_modules/@vitest/snapshot/dist/rawsnapshot.d-d_x3-62x.d.ts","../../../../dashboard/node_modules/@vitest/snapshot/dist/index.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/config.d.a1h_y6jt.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/environment.d.crsxczp1.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/rpc.d.b_8spu0w.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/worker.d.zphpo4yb.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/browser.d.bcoexmfg.d.ts","../../../../dashboard/node_modules/vitest/optional-types.d.ts","../../../../dashboard/node_modules/@vitest/runner/dist/utils.d.ts","../../../../dashboard/node_modules/tinybench/dist/index.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/benchmark.d.daahlpsq.d.ts","../../../../dashboard/node_modules/vitest/node_modules/@vitest/mocker/dist/types.d-bji5eawu.d.ts","../../../../dashboard/node_modules/vitest/node_modules/@vitest/mocker/dist/index.d-b41z0auw.d.ts","../../../../dashboard/node_modules/vitest/node_modules/@vitest/mocker/dist/index.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/source-map.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/coverage.d.bztk59wp.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/serialize.d.ts","../../../../dashboard/node_modules/@vitest/utils/dist/error.d.ts","../../../../dashboard/node_modules/vitest/dist/browser.d.ts","../../../../dashboard/node_modules/vitest/browser/context.d.ts","../../../../dashboard/node_modules/@vitest/snapshot/dist/manager.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/reporters.d.dtokvv2s.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/plugin.d.dwfiij7i.d.ts","../../../../dashboard/node_modules/vitest/dist/config.d.ts","../../../../dashboard/node_modules/vitest/config.d.ts","./vitest.config.ts","../../../../dashboard/node_modules/vitest/dist/chunks/global.d.dvssrdq5.d.ts","../../../../dashboard/node_modules/vitest/optional-runtime-types.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/suite.d.udjtyagw.d.ts","../../../../dashboard/node_modules/vitest/dist/chunks/evaluatedmodules.d.bxj5omdx.d.ts","../../../../dashboard/node_modules/vitest/dist/runners.d.ts","../../../../dashboard/node_modules/expect-type/dist/utils.d.ts","../../../../dashboard/node_modules/expect-type/dist/overloads.d.ts","../../../../dashboard/node_modules/expect-type/dist/branding.d.ts","../../../../dashboard/node_modules/expect-type/dist/messages.d.ts","../../../../dashboard/node_modules/expect-type/dist/index.d.ts","../../../../dashboard/node_modules/vitest/dist/index.d.ts","./lib/site.ts","./app/agents.md/route.ts","./lib/marketing/blog.ts","./lib/marketing/nav.ts","./app/llms.txt/route.ts","./app/.well-known/security.txt/route.ts","./app/machine-readable.test.ts","./app/nav-complete.test.ts","./app/og-mark.ts","./app/robots.ts","./lib/docs/pages.ts","./app/sitemap.ts","./app/(product)/app/links.test.ts","./lib/product/proxy.ts","./app/api/agents/route.ts","./app/api/agents/[slug]/approve/route.ts","./app/api/agents/[slug]/boundary/route.ts","./app/api/agents/[slug]/control/route.ts","./app/api/agents/[slug]/owner/route.ts","./app/api/agents/[slug]/reject/route.ts","./app/api/approvals/[id]/approve/route.ts","./app/api/approvals/[id]/deny/route.ts","./app/api/audit/verify/route.ts","./app/api/auth/github/callback/route.ts","./app/api/auth/github/login/route.ts","./app/api/auth/logout/route.ts","./app/api/auth/logout/route.test.ts","./app/api/auth/token/route.ts","./app/api/auth/token/route.test.ts","./app/api/compliance/compute/route.ts","./app/api/compliance/sync/route.ts","./lib/product/entitlement.ts","./app/api/entitlement/grants/route.ts","./app/api/entitlement/principals/route.ts","./app/api/escalation/handoffs/acknowledge/route.ts","./app/api/escalation/policy/route.ts","./app/api/eval/online/route.ts","./app/api/eval/results/[id]/annotate/route.ts","./app/api/eval/runs/route.ts","./app/api/eval/slos/route.ts","./app/api/eval/suites/route.ts","./app/api/eval/suites/[key]/cases/route.ts","./app/api/eval/suites/[key]/promote/route.ts","./app/api/evidence/route.ts","./app/api/evidence/[id]/download/route.ts","./app/api/findings/[id]/route.ts","./app/api/frameworks/review/route.ts","./app/api/guardrails/feedback/route.ts","./app/api/guardrails/suppressions/route.ts","./app/api/guardrails/suppressions/revoke/route.ts","./app/api/integrations/github/scan/route.ts","./app/api/integrations/hosted-api/scan/route.ts","./app/api/judgment/posture/route.ts","./app/api/judgment/posture/route.test.ts","./app/api/legal-holds/route.ts","./app/api/policies/[key]/approve/route.ts","./app/api/policies/[key]/canary/route.ts","./app/api/policies/[key]/canary/advance/route.ts","./app/api/policies/[key]/canary/rollback/route.ts","./app/api/policies/[key]/canary/start/route.ts","./app/api/policies/[key]/mode/route.ts","./app/api/policies/[key]/reject/route.ts","./app/api/policies/[key]/save/route.ts","./app/api/policies/simulate/route.ts","./app/api/policies/validate/route.ts","./app/api/redteam/campaigns/route.ts","./app/api/risk/assessments/[slug]/route.ts","./app/api/sources/route.ts","./lib/product/sourceconnection.ts","./app/api/sources/add/route.ts","./app/api/sources/connections/route.ts","./app/api/sources/context-check/route.ts","./app/api/sources/delete/route.ts","./app/api/sources/deprecate/route.ts","./app/api/sources/validate/route.ts","./app/api/tokens/route.ts","./app/api/tokens/[id]/revoke/route.ts","./app/api/traces/[id]/route.ts","./app/api/waitlist/route.ts","./app/blog/feed.xml/route.ts","./components/marketing/shot.tsx","./components/marketing/blog/blocks.tsx","./components/marketing/blog/card.tsx","./components/marketing/brand.tsx","./components/ui/themetoggle.tsx","./components/marketing/motion.tsx","./components/marketing/menu.tsx","./components/marketing/nav.tsx","./components/marketing/sections.tsx","./components/marketing/blog/article.tsx","./components/docs/copy.tsx","./components/docs/blocks.tsx","./components/marketing/blog/posts/ai-agent-audit-trail.tsx","./components/marketing/blog/posts/claude-code-hooks-security.tsx","./lib/generated/coverage.json","./components/marketing/blog/posts/continuous-red-teaming-ai-agents.tsx","./components/marketing/blog/posts/hidden-indirect-prompt-injection.tsx","./components/marketing/blog/posts/mcp-rug-pull-tool-poisoning.tsx","./components/marketing/blog/posts/prompt-injection-containment-not-detection.tsx","./components/marketing/blog/posts/index.ts","./lib/env.test.ts","./lib/marketing/blog.test.ts","./lib/marketing/showcase.ts","./lib/marketing/showcase.test.ts","./lib/product/controls.ts","./lib/product/coverage.ts","./lib/product/coverage.test.ts","./lib/product/entitlement.test.ts","./lib/generated/reference/finding-types.json","./lib/product/findingtypes.test.ts","./lib/product/legacyredirect.ts","./lib/product/legacyredirect.test.ts","./lib/product/proxy.test.ts","./lib/product/sourceoptions.ts","./app/error.tsx","../../../../dashboard/node_modules/next/dist/compiled/@next/font/dist/types.d.ts","../../../../dashboard/node_modules/geist/font.d.ts","../../../../dashboard/node_modules/geist/dist/mono.d.ts","../../../../dashboard/node_modules/geist/dist/sans.d.ts","../../../../dashboard/node_modules/next/dist/compiled/@next/font/dist/google/index.d.ts","../../../../dashboard/node_modules/next/font/google/index.d.ts","./app/layout.tsx","./app/loading.tsx","./app/not-found.tsx","../../../../dashboard/node_modules/next/dist/compiled/@vercel/og/index.edge.d.ts","../../../../dashboard/node_modules/next/dist/compiled/@vercel/og/index.node.d.ts","../../../../dashboard/node_modules/next/dist/server/og/image-response.d.ts","../../../../dashboard/node_modules/next/og.d.ts","./app/og.tsx","./app/opengraph-image.tsx","./app/(marketing)/how-it-works/_public.tsx","./components/marketing/platform.tsx","./components/marketing/sequence.tsx","./components/marketing/home.tsx","./app/page.tsx","./app/twitter-image.tsx","./components/marketing/charts.tsx","./app/(marketing)/benchmark/page.tsx","./app/(marketing)/compare/page.tsx","./components/marketing/capability.tsx","./app/(marketing)/control-points/page.tsx","./app/(marketing)/coverage/page.tsx","./app/(marketing)/discovery/page.tsx","./app/(marketing)/evidence/page.tsx","./app/(marketing)/frameworks/page.tsx","./app/(marketing)/grants/page.tsx","./app/(marketing)/hooks/page.tsx","./components/marketing/path.tsx","./components/marketing/product.tsx","./components/marketing/follow.tsx","./app/(marketing)/how-it-works/page.tsx","./app/(marketing)/legal/page.tsx","./app/(marketing)/live/page.tsx","./app/(marketing)/mcp/page.tsx","./components/ui/infotip.tsx","./components/ui/index.tsx","./components/marketing/playground.tsx","./app/(marketing)/playground/page.tsx","./components/marketing/waitlist.tsx","./components/marketing/editions.tsx","./app/(marketing)/pricing/page.tsx","./app/(marketing)/privacy/page.tsx","./components/marketing/mocks.tsx","./components/marketing/grant.tsx","./components/marketing/visuals.tsx","./components/marketing/pillars.tsx","./components/marketing/index-grid.tsx","./app/(marketing)/product/page.tsx","./app/(marketing)/runtime/page.tsx","./app/(marketing)/security/page.tsx","./app/(marketing)/support/page.tsx","./app/(marketing)/terms/page.tsx","./components/product/logo.tsx","./components/product/accountmenu.tsx","./components/product/notificationsbell.tsx","./components/product/commandsearch.tsx","./components/product/navicons.tsx","./components/product/sidenav.tsx","./components/product/topbarstats.tsx","./app/(product)/app/layout.tsx","./components/product/pageheader.tsx","./components/product/coverage.tsx","./app/(product)/app/page.tsx","./components/product/modal.tsx","./components/product/explainer.tsx","./app/(product)/app/agents/page.tsx","./components/product/breadcrumbs.tsx","./components/product/agentmap.tsx","./app/(product)/app/agents/[slug]/page.tsx","./components/product/countdown.tsx","./app/(product)/app/approvals/page.tsx","./app/(product)/app/board/page.tsx","./components/product/printbutton.tsx","./app/(product)/app/compliance/page.tsx","./app/(product)/app/compliance/frameworks/[key]/page.tsx","./app/(product)/app/coverage/page.tsx","./app/(product)/app/entitlement/page.tsx","./app/(product)/app/escalation/page.tsx","./app/(product)/app/escalation/conversations/[sessionid]/page.tsx","./app/(product)/app/evals/page.tsx","./app/(product)/app/evals/[key]/page.tsx","./app/(product)/app/evals/[key]/runs/[runid]/page.tsx","./components/product/findingevidence.tsx","./components/product/expandablefindingrow.tsx","./app/(product)/app/findings/page.tsx","./app/(product)/app/findings/[id]/page.tsx","./components/product/glossaryfilter.tsx","./components/product/productmap.tsx","./app/(product)/app/glossary/page.tsx","./app/(product)/app/guardrails/page.tsx","./components/product/detectorcatalogue.tsx","./components/product/judgmentposture.tsx","./app/(product)/app/policies/page.tsx","./components/product/policyeditor.tsx","./components/product/canarypanel.tsx","./app/(product)/app/policies/[key]/page.tsx","./app/(product)/app/settings/integrations/page.tsx","./app/(product)/app/settings/tokens/page.tsx","./components/product/contextcheck.tsx","./components/product/connectionfields.tsx","./components/product/sourceaddflow.tsx","./components/product/sourcerowactions.tsx","./app/(product)/app/sources/page.tsx","./components/product/repotable.tsx","./components/product/tokenmanager.tsx","./app/(product)/app/start/page.tsx","./components/product/expandabletracerow.tsx","./app/(product)/app/traces/page.tsx","./components/product/whyblocked.tsx","./app/(product)/app/traces/[id]/page.tsx","./app/(product)/login/page.tsx","./app/blog/page.tsx","./app/blog/[slug]/opengraph-image.tsx","./app/blog/[slug]/page.tsx","./app/blog/[slug]/twitter-image.tsx","./components/docs/sidebar.tsx","./app/docs/layout.tsx","./app/docs/page.tsx","./app/docs/app/page.tsx","./app/docs/app/access-and-sources/page.tsx","./app/docs/app/agents/page.tsx","./app/docs/app/approvals/page.tsx","./app/docs/app/compliance/page.tsx","./app/docs/app/evals/page.tsx","./app/docs/app/findings/page.tsx","./app/docs/app/playground/page.tsx","./app/docs/app/policies/page.tsx","./app/docs/app/start/page.tsx","./app/docs/app/traces/page.tsx","./app/docs/benchmarks/page.tsx","./app/docs/concepts/page.tsx","./app/docs/guides/approvals/page.tsx","./app/docs/guides/audit-evidence/page.tsx","./app/docs/guides/business-rules/page.tsx","./app/docs/guides/coding-agents/page.tsx","./app/docs/guides/contain-tool-calls/page.tsx","./app/docs/guides/gateway/page.tsx","./app/docs/guides/langgraph/page.tsx","./app/docs/guides/live-probes/page.tsx","./app/docs/guides/mcp/page.tsx","./app/docs/guides/monitoring/page.tsx","./app/docs/guides/observability/page.tsx","./app/docs/guides/python-auto/page.tsx","./app/docs/guides/rag/page.tsx","./app/docs/guides/red-team-and-evals/page.tsx","./app/docs/guides/scan-a-repo/page.tsx","./app/docs/guides/tuning/page.tsx","./app/docs/install/page.tsx","./app/docs/limits/page.tsx","./app/docs/plugin/page.tsx","./app/docs/quickstart/page.tsx","./lib/generated/reference/api.json","./lib/generated/reference/cli.json","./components/docs/reference.tsx","./app/docs/reference/api/page.tsx","./app/docs/reference/cli/page.tsx","./app/docs/reference/config/page.tsx","./app/docs/reference/detectors/page.tsx","./app/docs/reference/policies/page.tsx","./app/docs/reference/python/page.tsx","./app/docs/self-host/page.tsx","./app/docs/support/page.tsx","./components/marketing/boundary.tsx","./components/marketing/decisions.tsx","./components/marketing/explain.tsx","./components/marketing/hero.tsx","../../../../dashboard/node_modules/@types/estree/index.d.ts","./.next/types/routes.d.ts"],"fileIdsList":[[91,133,468,485,594,681,682,730],[91,133,186,468,485,594,681,682],[91,133,468,485,594,733],[91,133,485,594,681,682,688],[91,133,485,594,733],[91,133],[91,133,468,485,594,681,682,741,742,743],[91,133,468,485,594,681,682],[91,133,186,468,485,594,681,682,696],[91,133,436,485,594,681,682,750],[91,133,468,485,594,681,682,753],[91,133,468,485,594,681,682,759,760],[91,133,437,468,485,594,749,780,781],[91,133,437,468,485,594,749,774,777,778],[91,133,437,468,485,594,749,774,783],[91,133,485,594,704],[91,133,437,485,594,749,780],[91,133,437,468,485,594,749,774,786],[91,133,437,468,485,594,749,774],[91,133,437,468,485,594,749,774,777],[91,133,437,468,485,594,749,780],[91,133,437,468,485,594,749,777,780],[91,133,437,468,485,594,749,774,778],[91,133,437,485,594,698,749,780,796],[91,133,437,468,485,594,698,749,774,797],[91,133,485,594,774,800,801],[91,133,435,437,468,678,766,767,768,769,771,772],[91,133,146,155,593],[91,133,437,468,485,594,749,774,775],[91,133,437,485,594,749,780,807,808],[91,133,437,468,485,594,749,774,783,804,805],[91,133,437,468,485,594,707,749,774,777,812,814,815],[91,133,437,468,478,485,594,749,774,817,818],[91,133,437,468,485,594,698,749,780,822],[91,133,437,468,485,594,749,774,820],[91,133,435,437,468,478,485,594,766],[91,133,594],[91,133,431,607],[91,133,431,436,437],[91,133,431],[91,133,431,593,619],[91,133,431,593,621],[91,133,431,607,625],[91,133,431,435,436,437],[91,133,431,593,646],[91,133,431,435,436,437,662],[91,133,431,607,662],[91,133,607],[91,133,596,722],[91,133,478,485,594,596,683,693],[91,133,594,596],[91,133,468,485,594,596,676,681,682],[91,133,468,485,594,685],[91,133,186,468,485,594,685],[91,133,186,681,682,829],[91,133,468,485,594,604,685],[91,133,468,485,594,685,867],[91,133,186,468],[91,133,485,594,710,711,712,714],[91,133,594,596,597],[91,133,478],[91,133,593,594,595,596,597,598,599],[91,133,146,155,593,597],[91,133,468],[91,133,602,721],[91,133,722],[91,133,485,594,681,682,724,725,727],[91,133,485,594],[91,133,485,594,596,597,604],[91,133,186,468,684],[91,133,186],[91,133,865,866],[91,133,468,478,604],[91,133,186,466,468,594,596,675,676,681,682],[91,133,186,468,674],[91,133,466,468,596],[91,133,468,675,683,685],[91,133,468,675,683,685,688],[91,133,186,596,675,683,686,687,689,690,691,692],[91,133,186,468,597,681,682],[91,133,186,468,752],[91,133,186,756],[91,133,468,681,877],[91,133,186,468,674,681,726],[91,133,468,597],[91,133,186,468,597],[91,133,435,437,468,597,677,678,679,680],[91,133,186,468,756,757,758],[91,133,186,749],[91,133,468,597,677],[91,133,466],[91,133,186,478],[91,133,707],[91,133,468,699,749],[91,133,186,468,749,796],[91,133,186,468,749],[91,133,186,777],[91,133,468,749],[91,133,468,478,770],[91,133,186,707,813],[91,133,186,783],[91,133,436,468,702,748],[91,133,436,593],[91,133,146,155,593,596,597,604,605],[91,133,593,696],[91,133,436],[91,133,435,436],[91,133,437],[91,133,593,699],[91,133,593,625],[91,133,593,702],[91,133,593,704],[91,133,431,593,607],[91,133,431,437],[91,133,485,486,881],[91,133,155,581],[91,133,506],[91,133,496,497],[91,130,133],[91,132,133],[133],[91,133,138,168],[91,133,134,139,145,146,153,165,176],[91,133,134,135,145,153],[86,87,88,91,133],[91,133,136,177],[91,133,137,138,146,154],[91,133,138,165,173],[91,133,139,141,145,153],[91,132,133,140],[91,133,141,142],[91,133,145],[91,133,143,145],[91,132,133,145],[91,133,145,146,147,165,176],[91,133,145,146,147,160,165,168],[91,128,133,181],[91,128,133,141,145,148,153,165,176],[91,133,145,146,148,149,153,165,173,176],[91,133,148,150,165,173,176],[89,90,91,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182],[91,133,145,151],[91,133,152,176,181],[91,133,141,145,153,165],[91,133,154],[91,133,155],[91,132,133,156],[91,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182],[91,133,158],[91,133,159],[91,133,145,160,161],[91,133,160,162,177,179],[91,133,145,165,166,167,168],[91,133,165,167],[91,133,165,166],[91,133,168],[91,133,169],[91,130,133,165],[91,133,145,171,172],[91,133,171,172],[91,133,138,153,165,173],[91,133,174],[91,133,153,175],[91,133,148,159,176],[91,133,138,177],[91,133,165,178],[91,133,152,179],[91,133,180],[91,133,138,145,147,156,165,176,179,181],[91,133,165,182],[91,133,186,188,415,427,442],[91,133,186,187,415,427,442],[91,133,184,185],[91,133,489,490,491,494,495,498],[91,133,494,552,553],[91,133,494,552],[91,133,552],[91,133,492,552,556,557],[91,133,492,552,556],[91,133,488],[91,133,492,493],[91,133,492],[91,133,492,493,549,573],[91,133,549],[91,133,492,495,549,550,551],[91,133,588,589],[91,133,588,589,590,591],[91,133,588,590],[91,133,588],[91,133,710],[91,133,709,711,712],[91,133,541,542],[91,133,444],[91,133,446],[91,133,448,449,450,451],[91,133,453],[82,91,133,201,202,203,205,419],[82,91,133,191,234,236,238,239,242,419],[82,91,133,191,207,213,214,218,219,220,390,419],[91,133,419],[91,133,202,302,371,380,397],[82,91,133],[91,133,189,397],[91,133,245],[91,133,191,244,419],[91,133,148,282,302,331,483],[91,133,148,295,311,380,396],[91,133,148,346],[91,133,384],[91,133,383,384,385],[91,133,383],[82,85,91,133,148,189,198,199,202,206,207,213,221,222,223,339,362,381,415,419],[82,91,133,204,230,234,235,240,241,419,483],[91,133,204,483],[91,133,223,230,280,419,483],[91,133,483],[82,91,133,204,205,483],[91,133,237,483],[91,133,199,382,389],[91,133,159,253,397],[91,133,253,397],[91,133,186,253],[91,133,186,303],[91,133,299,344,397,475,476],[91,133,377,469,470,471,472,474],[91,133,376],[91,133,376,377],[91,133,214,340,341,342],[91,133,340,343,344],[91,133,473],[91,133,340,344],[83,91,133,186,463],[91,133,176,186],[91,133,186,204,270],[91,133,186,204],[91,133,268,272],[91,133,186,269,417],[91,133,709],[91,133,186,427],[91,133,165,183,186,427,718],[91,133,148,183,186,187,188,415,425,426,442],[91,133,148],[91,133,148,190,207,212,340,350,363,371,386,387,419,483],[91,133,198,388],[91,133,415],[81,91,133],[91,133,186,282,298,310,320,322,396],[91,133,159,282,298,319,320,321,396,482],[91,133,313,314,315,316,317,318],[91,133,315],[91,133,319],[91,133,251,252,253,255],[91,133,186,246,247,248,254],[91,133,251,254],[91,133,249],[91,133,250],[91,133,186,253,269,417],[91,133,186,253,416,417],[91,133,186,253,417],[91,133,363,393],[91,133,393],[91,133,148,190,417],[91,133,307],[91,132,133,306],[91,133,190,215,224,290,292,294,295,296,297,337,340,396,399],[91,133,224,328,340,344],[91,133,295,396],[91,133,186,295,304,305,307,308,309,310,311,312,323,324,325,326,327,329,330,396,397,483],[91,133,289],[91,133,148,159,190,191,212,224,225,264,296,337,338,339,344,363,371,392,415,419,483],[91,133,396],[91,132,133,190,202,293,296,339,392,394,395],[91,133,295],[91,132,133,212,284,285,286,287,288,289,290,291,292,294,396,397],[91,133,148,190,191,284,285,420],[91,133,190,202,339,340,363,392,396],[91,133,148,191,419],[91,133,148,165,190,191,399],[79,91,133,148,159,176,189,190,191,204,207,215,224,225,227,262,264,292,296,340,350,351,353,355,358,359,360,361,362,371,391,392,397,399,400,419],[91,133,148,165],[82,83,84,91,133,204,207,219,221,230,391,399,415,417,418,483],[91,133,148,165,176,242,243,245,246,247,248,255,483],[91,133,159,176,189,234,243,259,262,263,292,340,351,362,363,371,392,397,399,404,405,411,412],[91,133,198,199,221,339,362,392,419],[83,91,133,148,176,207,292,399,409,419],[91,133,281],[91,133,148,257,258,368],[91,133,399,419],[91,133,290,293],[91,133,292,296,391,417],[91,133,148,159,228,234,259,262,263,363,399,411,414],[91,133,148,198,199,234,364],[82,91,133,227,366,391,419],[91,133,148,176,419],[91,133,148,204,226,227,228,239,256,365,367,391,419],[85,91,133,224,296,370,415,417],[79,91,133,148,159,176,198,199,206,207,215,225,263,264,292,340,351,353,363,371,391,392,397,398,399,404,405,406,408,410,417],[91,133,148,165,199,368,399,411,413],[91,133,193,194,195,196,197],[91,133,354,400],[91,133,356],[91,133,354],[91,133,356,357],[91,133,719],[91,133,148,190,207,212,213,214],[81,83,91,133,148,159,191,215,224,264,296,348,349,371,399,415,417],[91,133,148,159,176,190,214,216,292,349,398],[91,133,285],[91,133,286],[91,133,287],[91,133,397],[91,133,209,210],[91,133,148,207,209,215],[91,133,208,210],[91,133,211],[91,133,209,243],[91,133,209,265],[91,133,209],[91,133,261,398,400],[91,133,260],[91,133,243,397,398],[91,133,352,398],[91,133,243,397],[91,133,337],[91,133,190,207,215,219,279,282,290,292,296,298,301,332,335,336,340,370,391,399],[91,133,273,276,277,278,299,300,344],[91,133,186,253,333,334],[91,133,379],[91,133,202,295,296,307,311,340,370,372,373,374,375,377,378,381,391,396,419,420],[91,133,344],[91,133,348],[91,133,148,215,266,345,347,350,370,399,415,417],[91,133,273,274,275,276,277,278,299,300,344,416],[85,91,133,148,159,176,190,209,225,243,264,292,296,368,369,371,391,392,415,419],[91,133,392,404,420,421],[91,133,148,400,419],[91,133,284,295],[91,133,283],[79,91,133,420],[91,133,284,401,419],[91,133,148,190,216,402,403,419,420,421],[91,133,186,340,341,343],[91,133,229],[83,91,133,186],[91,133,186,397],[85,91,133,186,264,296,415,417],[83,91,133,463,464],[91,133,186,272],[81,91,133,159,176,186,241,267,269,271,417],[91,133,190,204,397],[91,133,397,407],[91,133,340],[81,91,133,146,148,159,186,230,236,272,415,416],[91,133,186,187,188,415,427],[91,133,186,439,440,441,442],[91,133,138],[91,133,231,232,233],[91,133,231],[81,91,133,148,150,159,183,186,187,188,189,191,225,319,414,417,419,427,442],[91,133,455],[91,133,457],[91,133,459],[91,133,713],[91,133,461],[91,133,432,433,434],[91,133,465],[91,133,431,435,443,445,447,452,454,456,458,460,462,466,468,478,479,481,482,483,484],[91,133,467],[91,133,477],[91,133,720],[91,133,269],[91,133,480],[91,132,133,310,397,402,404,420,421,422,423,424,427,428,429,430],[91,133,183],[91,133,508],[91,133,503,505,508],[91,133,504,505],[91,133,505,508,512],[91,133,504],[91,133,505,508],[91,133,503,504,505,507],[91,133,503,505],[91,133,504,505,514],[91,133,165,183],[91,100,104,133,176],[91,100,133,165,176],[91,95,133],[91,97,100,133,173,176],[91,133,153,173],[91,95,133,183],[91,97,100,133,153,176],[91,92,93,96,99,133,145,165,176],[91,100,107,133],[91,92,98,133],[91,100,121,122,133],[91,96,100,133,168,176,183],[91,121,133,183],[91,94,95,133,183],[91,100,133],[91,94,95,96,97,98,99,100,101,102,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,122,123,124,125,126,127,133],[91,100,115,133],[91,100,107,108,133],[91,98,100,108,109,133],[91,99,133],[91,92,95,100,133],[91,100,104,108,109,133],[91,104,133],[91,98,100,103,133,176],[91,92,97,100,107,133],[91,133,165],[91,95,100,121,133,181,183],[91,133,575],[91,133,499,580,583],[91,133,489,492,494,495,550,551,552,554,555,558,559,571,572,574,583],[91,133,554,565,566,583],[91,133,554,555,562,583],[91,133,492,494,554,555,558,583],[91,133,517],[91,133,492,499,554,555,558,567,583],[91,133,548,578,580],[91,133,136,146,165,492,494,499,548,552,554,555,558,559,562,563,564,567,570,571,572,576,577,580,583],[91,133,517,554,555,558,583],[91,133,554,565,566,567,583],[91,133,517,554,559,560,561,583],[91,133,136,146,165,492,494,499,517,548,552,554,555,558,559,560,561,562,563,564,565,566,567,570,571,572,576,577,578,579,580,583],[91,133,489,492,494,499,517,552,554,555,558,559,560,561,562,563,565,566,567,570,583,584,585,586,587,592],[91,133,492,494,554,555,558,559,565,566,567,583,585],[91,133,568],[91,133,568,569],[91,133,536],[91,133,534,536],[91,133,525,533,534,535,537,539],[91,133,523],[91,133,526,531,536,539],[91,133,522,539],[91,133,526,527,530,531,532,539],[91,133,526,527,528,530,531,539],[91,133,523,524,525,526,527,531,532,533,535,536,537,539],[91,133,539],[91,133,521,523,524,525,526,527,528,530,531,532,533,534,535,536,537,538],[91,133,521,539],[91,133,526,528,529,531,532,539],[91,133,530,539],[91,133,531,532,536,539],[91,133,524,534],[91,133,500],[91,133,145,146,148,149,150,153,165,173,176,182,183,500,501,502,509,510,511,513,515,517,518,519,520,540,544,545,546,547,548],[91,133,500,501,502,516],[91,133,502],[91,133,543],[91,133,509,519,548],[91,133,509,548]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"e12a46ce14b817d4c9e6b2b478956452330bf00c9801b79de46f7a1815b5bd40","impliedFormat":1},{"version":"4fd3f3422b2d2a3dfd5cdd0f387b3a8ec45f006c6ea896a4cb41264c2100bb2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"69e65d976bf166ce4a9e6f6c18f94d2424bf116e90837ace179610dbccad9b42","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"bab26767638ab3557de12c900f0b91f710c7dc40ee9793d5a27d32c04f0bf646","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"61d6a2092f48af66dbfb220e31eea8b10bc02b6932d6e529005fd2d7b3281290","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","impliedFormat":1},{"version":"829b9e6028b29e6a8b1c01ddb713efe59da04d857089298fa79acbdb3cfcfdef","impliedFormat":1},{"version":"24f8562308dd8ba6013120557fa7b44950b619610b2c6cb8784c79f11e3c4f90","impliedFormat":1},{"version":"5f90b8c733a1bda63e42160b15a2301051e83a6f9d5332a59d16eb12f463270d","impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","impliedFormat":1},{"version":"631eff75b0e35d1b1b31081d55209abc43e16b49426546ab5a9b40bdd40b1f60","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fd06258805d26c72f5997e07a23155d322d5f05387adb3744a791fe6a0b042d","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"ba97261afafe85aafe76d988e65e531da8e8cf791c49caf0531f5dd1689bd91b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f52e8dacc97d71dcc96af29e49584353f9c54cb916d132e3e768d8b8129c928d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"53eac70430b30089a3a1959d8306b0f9cfaf0de75224b68ef25243e0b5ad1ca3","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"86956cc2eb9dd371d6fab493d326a574afedebf76eef3fa7833b8e0d9b52d6f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"24642567d3729bcc545bacb65ee7c0db423400c7f1ef757cab25d05650064f98","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"e9ad08a376ac84948fcca0013d6f1d4ae4f9522e26b91f87945b97c99d7cc30b","impliedFormat":1},{"version":"eaf9ee1d90a35d56264f0bf39842282c58b9219e112ac7d0c1bce98c6c5da672","impliedFormat":1},{"version":"c15c4427ae7fd1dcd7f312a8a447ac93581b0d4664ddf151ecd07de4bf2bb9d7","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"aeac7c51bde4658c192bc45819344eb20fc64743264b0465be6025201220a6b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4047ed87e765bd3bcc316a0c4c4c8b0061628460d8a5412d1c4b53a4658665a","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"3eb62baae4df08c9173e6903d3ca45942ccec8c3659b0565684a75f3292cffbb","affectsGlobalScope":true,"impliedFormat":1},{"version":"42aaa94addeed66a04b61e433c14e829c43d1efd653cf2fda480c5fb3d722ed8","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"15c5e91b5f08be34a78e3d976179bf5b7a9cc28dc0ef1ffebffeb3c7812a2dca","impliedFormat":1},{"version":"58832ded29e0094047596544ac391d68c799d7bd7d35936f47221857141628f1","impliedFormat":1},{"version":"553870e516f8c772b89f3820576152ebc70181d7994d96917bb943e37da7f8a7","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"745c4240220559bd340c8aeb6e3c5270a709d3565e934dc22a69c304703956bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"9212c6e9d80cb45441a3614e95afd7235a55a18584c2ed32d6c1aca5a0c53d93","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"6bd91a2a356600dee28eb0438082d0799a18a974a6537c4410a796bab749813c","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"ae25afbbf1ed5df63a177d67b9048bf7481067f1b8dc9c39212e59db94fc9fc6","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"da172a28c35d5f298bf5f0361725cc80f45e89e803a353c56e1aa347e10f572d","impliedFormat":1},{"version":"865a2612f5ec073dd48d454307ccabb04c48f8b96fda9940c5ebfe6b4b451f51","impliedFormat":1},{"version":"4558ac151f289d39f651a630cc358111ef72c1148e06627ef7edaeb01eb26c82","impliedFormat":1},{"version":"413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","impliedFormat":1},{"version":"35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","impliedFormat":1},{"version":"1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"acf5a2ac47b59ca07afa9abbd2b31d001bf7448b041927befae2ea5b1951d9f9","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"d71291eff1e19d8762a908ba947e891af44749f3a2cbc5bd2ec4b72f72ea795f","impliedFormat":1},{"version":"c0480e03db4b816dff2682b347c95f2177699525c54e7e6f6aa8ded890b76be7","impliedFormat":1},{"version":"27ab780875bcbb65e09da7496f2ca36288b0c541abaa75c311450a077d54ec15","impliedFormat":1},{"version":"ffa495b17a5ef1d0399586b590bd281056cee6ce3583e34f39926f8dcc6ecdb5","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","impliedFormat":1},{"version":"b6db56e4903e9c32e533b78ac85522de734b3d3a8541bf24d256058d464bf04b","impliedFormat":1},{"version":"24daa0366f837d22c94a5c0bad5bf1fd0f6b29e1fae92dc47c3072c3fdb2fbd5","impliedFormat":1},{"version":"570bb5a00836ffad3e4127f6adf581bfc4535737d8ff763a4d6f4cc877e60d98","impliedFormat":1},{"version":"889c00f3d32091841268f0b994beba4dceaa5df7573be12c2c829d7c5fbc232c","impliedFormat":1},{"version":"65f43099ded6073336e697512d9b80f2d4fec3182b7b2316abf712e84104db00","impliedFormat":1},{"version":"ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","impliedFormat":1},{"version":"d6e73f8010935b7b4c7487b6fb13ea197cc610f0965b759bec03a561ccf8423a","impliedFormat":1},{"version":"3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","impliedFormat":1},{"version":"174f3864e398f3f33f9a446a4f403d55a892aa55328cf6686135dfaf9e171657","impliedFormat":1},{"version":"824c76aec8d8c7e65769688cbee102238c0ef421ed6686f41b2a7d8e7e78a931","impliedFormat":1},{"version":"75b868be3463d5a8cfc0d9396f0a3d973b8c297401d00bfb008a42ab16643f13","impliedFormat":1},{"version":"5178eb4415a172c287c711dc60a619e110c3fd0b7de01ed0627e51a5336aa09c","impliedFormat":1},{"version":"ca6e5264278b53345bc1ce95f42fb0a8b733a09e3d6479c6ccfca55cdc45038c","impliedFormat":1},{"version":"15a234e5031b19c48a69ccc1607522d6e4b50f57d308ecb7fe863d44cd9f9eb3","impliedFormat":1},{"version":"ad0d1d75d129b1c80f911be438d6b61bfa8703930a8ff2be2f0e1f8a91841c64","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"496bbf339f3838c41f164238543e9fe5f1f10659cb30b68903851618464b98ba","impliedFormat":1},{"version":"9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","impliedFormat":1},{"version":"fb1d8e814a3eeb5101ca13515e0548e112bd1ff3fb358ece535b93e94adf5a3a","impliedFormat":1},{"version":"98b18458acb46072947aabeeeab1e410f047e0cacc972943059ca5500b0a5e95","impliedFormat":1},{"version":"361e2b13c6765d7f85bb7600b48fde782b90c7c41105b7dab1f6e7871071ba20","impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","impliedFormat":1},{"version":"380647d8f3b7f852cca6d154a376dbf8ac620a2f12b936594504a8a852e71d2f","impliedFormat":1},{"version":"208c9af9429dd3c76f5927b971263174aaa4bc7621ddec63f163640cbd3c473c","impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","impliedFormat":1},{"version":"a23185bc5ef590c287c28a91baf280367b50ae4ea40327366ad01f6f4a8edbc5","impliedFormat":1},{"version":"bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","impliedFormat":1},{"version":"002eae065e6960458bda3cf695e578b0d1e2785523476f8a9170b103c709cd4f","impliedFormat":1},{"version":"c83bb0c9c5645a46c68356c2f73fdc9de339ce77f7f45a954f560c7e0b8d5ebb","impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","impliedFormat":1},{"version":"72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","impliedFormat":1},{"version":"2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","impliedFormat":1},{"version":"c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","impliedFormat":1},{"version":"dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","impliedFormat":1},{"version":"b064c36f35de7387d71c599bfcf28875849a1dbc733e82bd26cae3d1cd060521","impliedFormat":1},{"version":"6a148329edecbda07c21098639ef4254ef7869fb25a69f58e5d6a8b7b69d4236","impliedFormat":1},{"version":"8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","impliedFormat":1},{"version":"f63ab283a1c8f5c79fabe7ca4ef85f9633339c4f0e822fce6a767f9d59282af2","impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","impliedFormat":1},{"version":"a54c996c8870ef1728a2c1fa9b8eaec0bf4a8001cd2583c02dd5869289465b10","impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","impliedFormat":1},{"version":"3754982006a3b32c502cff0867ca83584f7a43b1035989ca73603f400de13c96","impliedFormat":1},{"version":"a30ae9bb8a8fa7b90f24b8a0496702063ae4fe75deb27da731ed4a03b2eb6631","impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","impliedFormat":1},{"version":"50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","impliedFormat":1},{"version":"7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","impliedFormat":1},{"version":"413586add0cfe7369b64979d4ec2ed56c3f771c0667fbde1bf1f10063ede0b08","impliedFormat":1},{"version":"06472528e998d152375ad3bd8ebcb69ff4694fd8d2effaf60a9d9f25a37a097a","impliedFormat":1},{"version":"50b5bc34ce6b12eccb76214b51aadfa56572aa6cc79c2b9455cdbb3d6c76af1d","impliedFormat":1},{"version":"b7e16ef7f646a50991119b205794ebfd3a4d8f8e0f314981ebbe991639023d0e","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"a401617604fa1f6ce437b81689563dfdc377069e4c58465dbd8d16069aede0a5","impliedFormat":1},{"version":"e9dd71cf12123419c60dab867d44fbee5c358169f99529121eaef277f5c83531","impliedFormat":1},{"version":"5b6a189ba3a0befa1f5d9cb028eb9eec2af2089c32f04ff50e2411f63d70f25d","impliedFormat":1},{"version":"d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","impliedFormat":1},{"version":"e91f7b1344577a02f051b9b471f33044fef8334a76dc9e1de003d17595a5219b","impliedFormat":1},{"version":"3af3584f79c57853028ef9421ec172539e1fe01853296dc05a9d615ade4ffaf6","impliedFormat":1},{"version":"20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","impliedFormat":1},{"version":"461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","impliedFormat":1},{"version":"1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","impliedFormat":1},{"version":"0c7c947ff881c4274c0800deaa0086971e0bfe51f89a33bd3048eaa3792d4876","affectsGlobalScope":true,"impliedFormat":1},{"version":"db01d18853469bcb5601b9fc9826931cc84cc1a1944b33cad76fd6f1e3d8c544","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","impliedFormat":1},{"version":"15b36126e0089bfef173ab61329e8286ce74af5e809d8a72edcafd0cc049057f","impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","impliedFormat":1},{"version":"a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","impliedFormat":1},{"version":"ad10d4f0517599cdeca7755b930f148804e3e0e5b5a3847adce0f1f71bbccd74","impliedFormat":1},{"version":"1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","impliedFormat":1},{"version":"0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","impliedFormat":1},{"version":"c49469a5349b3cc1965710b5b0f98ed6c028686aa8450bcb3796728873eb923e","impliedFormat":1},{"version":"4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","impliedFormat":1},{"version":"7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","impliedFormat":1},{"version":"72d63643a657c02d3e51cd99a08b47c9b020a565c55f246907050d3c8a5e77fb","impliedFormat":1},{"version":"1d415445ea58f8033ba199703e55ff7483c52ac6742075b803bd3e7bbe9f5d61","impliedFormat":1},{"version":"d6406c629bb3efc31aedb2de809bef471e475c86c7e67f3ef9b676b5d7e0d6b2","impliedFormat":1},{"version":"27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","impliedFormat":1},{"version":"71d8ba39a9e024d9e4bb922464d18542ed8d2c25ee78efa7890c27213cc6e5d3","impliedFormat":1},{"version":"8c030e515014c10a2b98f9f48408e3ba18023dfd3f56e3312c6c2f3ae1f55a16","impliedFormat":1},{"version":"dafc31e9e8751f437122eb8582b93d477e002839864410ff782504a12f2a550c","impliedFormat":1},{"version":"754498c5208ce3c5134f6eabd49b25cf5e1a042373515718953581636491f3c3","impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","impliedFormat":1},{"version":"f56bdc6884648806d34bc66d31cdb787c4718d04105ce2cd88535db214631f82","impliedFormat":1},{"version":"633d58a237f4bb25ec7d565e4ffa32cecdcee8660ac12189c4351c52557cee9e","impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","impliedFormat":1},{"version":"13283350547389802aa35d9f2188effaeac805499169a06ef5cd77ce2a0bd63f","impliedFormat":1},{"version":"ce791f6ea807560f08065d1af6014581eeb54a05abd73294777a281b6dfd73c2","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"49f95e989b4632c6c2a578cc0078ee19a5831832d79cc59abecf5160ea71abad","impliedFormat":1},{"version":"9666533332f26e8995e4d6fe472bdeec9f15d405693723e6497bf94120c566c8","impliedFormat":1},{"version":"ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","impliedFormat":1},{"version":"796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","impliedFormat":1},{"version":"5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","impliedFormat":1},{"version":"e17cd049a1448de4944800399daa4a64c5db8657cc9be7ef46be66e2a2cd0e7c","impliedFormat":1},{"version":"43fa6ea8714e18adc312b30450b13562949ba2f205a1972a459180fa54471018","impliedFormat":1},{"version":"6e89c2c177347d90916bad67714d0fb473f7e37fb3ce912f4ed521fe2892cd0d","impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","impliedFormat":1},{"version":"4d4927cbee21750904af7acf940c5e3c491b4d5ebc676530211e389dd375607a","impliedFormat":1},{"version":"72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","impliedFormat":1},{"version":"8a97e578a9bc40eb4f1b0ca78f476f2e9154ecbbfd5567ee72943bab37fc156a","impliedFormat":1},{"version":"c857e0aae3f5f444abd791ec81206020fbcc1223e187316677e026d1c1d6fe08","impliedFormat":1},{"version":"ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","impliedFormat":1},{"version":"2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","impliedFormat":1},{"version":"2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","impliedFormat":1},{"version":"f22d05663d873ee7a600faf78abb67f3f719d32266803440cf11d5db7ac0cab2","impliedFormat":1},{"version":"d93c544ad20197b3976b0716c6d5cd5994e71165985d31dcab6e1f77feb4b8f2","impliedFormat":1},{"version":"35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","impliedFormat":1},{"version":"a8b1c79a833ee148251e88a2553d02ce1641d71d2921cce28e79678f3d8b96aa","impliedFormat":1},{"version":"126d4f950d2bba0bd45b3a86c76554d4126c16339e257e6d2fabf8b6bf1ce00c","impliedFormat":1},{"version":"7e0b7f91c5ab6e33f511efc640d36e6f933510b11be24f98836a20a2dc914c2d","impliedFormat":1},{"version":"045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","impliedFormat":1},{"version":"2d3cc2211f352f46ea6b7cf2c751c141ffcdf514d6e7ae7ee20b7b6742da313f","impliedFormat":1},{"version":"c75445151ff8b77d9923191efed7203985b1a9e09eccf4b054e7be864e27923d","impliedFormat":1},{"version":"0aedb02516baf3e66b2c1db9fef50666d6ed257edac0f866ea32f1aa05aa474f","impliedFormat":1},{"version":"fa8a8fbf91ee2a4779496225f0312aac6635b0f21aa09cdafa4283fe32d519c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e8aef93d79b000deb6ec336b5645c87de167168e184e84521886f9ecc69a4b5","impliedFormat":1},{"version":"56ccb49443bfb72e5952f7012f0de1a8679f9f75fc93a5c1ac0bafb28725fc5f","impliedFormat":1},{"version":"20fa37b636fdcc1746ea0738f733d0aed17890d1cd7cb1b2f37010222c23f13e","impliedFormat":1},{"version":"d90b9f1520366d713a73bd30c5a9eb0040d0fb6076aff370796bc776fd705943","impliedFormat":1},{"version":"bef86adb77316505c6b471da1d9b8c9e428867c2566270e8894d4d773a1c4dc2","impliedFormat":1},{"version":"de7052bfee2981443498239a90c04ea5cc07065d5b9bb61b12cb6c84313ad4ef","impliedFormat":1},{"version":"a3e7d932dc9c09daa99141a8e4800fc6c58c625af0d4bbb017773dc36da75426","impliedFormat":1},{"version":"43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","impliedFormat":1},{"version":"4a2edd238d9104eac35b60d727f1123de5062f452b70ed8e0366cb36387dfdfd","impliedFormat":1},{"version":"ca921bf56756cb6fe957f6af693a35251b134fb932dc13f3dfff0bb7106f80b4","impliedFormat":1},{"version":"fee92c97f1aa59eb7098a0cc34ff4df7e6b11bae71526aca84359a2575f313d8","impliedFormat":1},{"version":"0bd0297484aacea217d0b76e55452862da3c5d9e33b24430e0719d1161657225","impliedFormat":1},{"version":"2ab6d334bcbf2aff3acfc4fd8c73ecd82b981d3c3aa47b3f3b89281772286904","impliedFormat":1},{"version":"d07cbc787a997d83f7bde3877fec5fb5b12ce8c1b7047eb792996ed9726b4dde","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"4805f6161c2c8cefb8d3b8bd96a080c0fe8dbc9315f6ad2e53238f9a79e528a6","impliedFormat":1},{"version":"b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","impliedFormat":1},{"version":"f374cb24e93e7798c4d9e83ff872fa52d2cdb36306392b840a6ddf46cb925cb6","impliedFormat":1},{"version":"49179c6a23701c642bd99abe30d996919748014848b738d8e85181fc159685ff","impliedFormat":1},{"version":"7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","impliedFormat":1},{"version":"fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","impliedFormat":1},{"version":"45490817629431853543adcb91c0673c25af52a456479588b6486daba34f68bb","impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","impliedFormat":1},{"version":"8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","impliedFormat":1},{"version":"8514c62ce38e58457d967e9e73f128eedc1378115f712b9eef7127f7c88f82ae","impliedFormat":1},{"version":"f1289e05358c546a5b664fbb35a27738954ec2cc6eb4137350353099d154fc62","impliedFormat":1},{"version":"752513f35f6cff294ffe02d6027c41373adf7bfa35e593dbfd53d95c203635ee","impliedFormat":1},{"version":"6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","impliedFormat":1},{"version":"7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","impliedFormat":1},{"version":"1a7e2ea171726446850ec72f4d1525d547ff7e86724cc9e7eec509725752a758","impliedFormat":1},{"version":"8c901126d73f09ecdea4785e9a187d1ac4e793e07da308009db04a7283ec2f37","impliedFormat":1},{"version":"c1de754ab5f3b0f4036d6893c74a0fc984c7fcb07936086f19bbe2974406775b","impliedFormat":1},{"version":"aab290b8e4b7c399f2c09b957666fc95335eb4522b2dd9ead1bf0cb64da6d6ee","impliedFormat":1},{"version":"94fe3281392e1015b22f39535878610b4fa6f1388dc8d78746be3bc4e4bb8950","impliedFormat":1},{"version":"2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","impliedFormat":1},{"version":"06c25ddfc2242bd06c19f66c9eae4c46d937349a267810f89783680a1d7b5259","impliedFormat":1},{"version":"120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","impliedFormat":1},{"version":"5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","impliedFormat":1},{"version":"bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","impliedFormat":1},{"version":"c7f6485931085bf010fbaf46880a9b9ec1a285ad9dc8c695a9e936f5a48f34b4","impliedFormat":1},{"version":"14f6b927888a1112d662877a5966b05ac1bf7ed25d6c84386db4c23c95a5363b","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"0427df5c06fafc5fe126d14b9becd24160a288deff40e838bfbd92a35f8d0d00","impliedFormat":1},{"version":"90c54a02432d04e4246c87736e53a6a83084357acfeeba7a489c5422b22f5c7a","impliedFormat":1},{"version":"49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","impliedFormat":1},{"version":"bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","impliedFormat":1},{"version":"92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","impliedFormat":1},{"version":"f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","impliedFormat":1},{"version":"83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","impliedFormat":1},{"version":"0a372c2d12a259da78e21b25974d2878502f14d89c6d16b97bd9c5017ab1bc12","impliedFormat":1},{"version":"57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","impliedFormat":1},{"version":"6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","impliedFormat":1},{"version":"ec1ca97598eda26b7a5e6c8053623acbd88e43be7c4d29c77ccd57abc4c43999","impliedFormat":1},{"version":"efc0e6a64feef102d5edef7525de0c2ac5961821f12ae5038f0d3a8631457e10","impliedFormat":1},{"version":"a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","impliedFormat":1},{"version":"771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","impliedFormat":1},{"version":"232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","impliedFormat":1},{"version":"a47e6d954d22dd9ebb802e7e431b560ed7c581e79fb885e44dc92ed4f60d4c07","impliedFormat":1},{"version":"f019e57d2491c159d47a107fd90219a1734bdd2e25cd8d1db3c8fae5c6b414c4","impliedFormat":1},{"version":"8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","impliedFormat":1},{"version":"d1c9bf292a54312888a77bb19dba5e2503ad803f5393beafd45d78d2f4fe9b48","impliedFormat":1},{"version":"d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","impliedFormat":1},{"version":"6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","impliedFormat":1},{"version":"4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","impliedFormat":1},{"version":"6dcf60530c25194a9ee0962230e874ff29d34c59605d8e069a49928759a17e0a","impliedFormat":1},{"version":"1a42d2ec31a1fe62fdc51591768695ed4a2dc64c01be113e7ff22890bebb5e3f","impliedFormat":1},{"version":"4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","impliedFormat":1},{"version":"1d17ba45cfbe77a9c7e0df92f7d95f3eefd49ee23d1104d0548b215be56945ad","impliedFormat":1},{"version":"f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","impliedFormat":1},{"version":"1d879125d1ec570bf04bc1f362fdbe0cb538315c7ac4bcfcdf0c1e9670846aa6","impliedFormat":1},{"version":"a84d677a6172185d541b1b00ea8e4e04217b64351098f9e5c07403fdec305683","impliedFormat":1},{"version":"46273e8c29816125d0d0b56ce9a849cc77f60f9a5ba627447501d214466f0ff3","impliedFormat":1},{"version":"f82579d87701d639ff4e3930a9b24f4ee13ca74221a9a3a792feb47f01881a9c","impliedFormat":1},{"version":"d7e5d5245a8ba34a274717d085174b2c9827722778129b0081fefd341cca8f55","impliedFormat":1},{"version":"d9d32f94056181c31f553b32ce41d0ef75004912e27450738d57efcd2409c324","impliedFormat":1},{"version":"3be035da7bee86b4c3abf392e0edaa44fc6e45092995eefe36b39118c8a84068","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f828825d077c2fa0ea606649faeb122749273a353daab23924fe674e98ba44c","impliedFormat":1},{"version":"2896c2e673a5d3bd9b4246811f79486a073cbb03950c3d252fba10003c57411a","impliedFormat":1},{"version":"9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","impliedFormat":1},{"version":"d9c46395b3980848a6c4b2f44e986d27d07faee3b3b4b1f214793255b8c64f2a","impliedFormat":1},{"version":"4fbd3116e00ed3a6410499924b6403cc9367fdca303e34838129b328058ede40","impliedFormat":1},{"version":"0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","impliedFormat":1},{"version":"5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","impliedFormat":1},{"version":"a68d4b3182e8d776cdede7ac9630c209a7bfbb59191f99a52479151816ef9f9e","impliedFormat":99},{"version":"39644b343e4e3d748344af8182111e3bbc594930fff0170256567e13bbdbebb0","impliedFormat":99},{"version":"ed7fd5160b47b0de3b1571c5c5578e8e7e3314e33ae0b8ea85a895774ee64749","impliedFormat":99},{"version":"63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","impliedFormat":1},{"version":"ecbaf0da125974be39c0aac869e403f72f033a4e7fd0d8cd821a8349b4159628","impliedFormat":1},{"version":"4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6","impliedFormat":1},{"version":"ceec3c81b2d81f5e3b855d9367c1d4c664ab5046dff8fd56552df015b7ccbe8f","affectsGlobalScope":true,"impliedFormat":1},{"version":"fec01479923e169fb52bd4f668dbeef1d7a7ea6e6d491e15617b46f2cacfa37d","impliedFormat":1},{"version":"8a8fb3097ba52f0ae6530ec6ab34e43e316506eb1d9aa29420a4b1e92a81442d","impliedFormat":1},{"version":"44e09c831fefb6fe59b8e65ad8f68a7ecc0e708d152cfcbe7ba6d6080c31c61e","impliedFormat":1},{"version":"1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","impliedFormat":1},{"version":"0e619baf3b8fce9857731add3ed48095af35922b64c9e1af2bdc5354e56aff4b","signature":"a671bd207880b7da3d9354828b308aa795e15352be1894f4aa53f4b6b2ff2d9b"},"3c2427d2b1af5c390a352f9e38f0c64d486150c44572c57a59fc2196631927d4","ed947637acd101bfdc566f5e640c79c986f14de22987660aaf62b84247fe68ee",{"version":"acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","impliedFormat":1},{"version":"d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","impliedFormat":1},{"version":"f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","impliedFormat":1},{"version":"643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","impliedFormat":1},{"version":"0f6666b58e9276ac3a38fdc80993d19208442d6027ab885580d93aec76b4ef00","impliedFormat":1},{"version":"05fd364b8ef02fb1e174fbac8b825bdb1e5a36a016997c8e421f5fab0a6da0a0","impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","impliedFormat":1},{"version":"407a06ba04eede4074eec470ecba2784cbb3bf4e7de56833b097dd90a2aa0651","impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","impliedFormat":1},{"version":"98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","impliedFormat":1},{"version":"5c96bad5f78466785cdad664c056e9e2802d5482ca5f862ed19ba34ffbb7b3a4","impliedFormat":1},{"version":"81d8603ac527e75cfec72bb9391228b58f161c2b33514a9d814c7f3ebd3ef466","impliedFormat":1},{"version":"5f3dc10ae646f375776b4e028d2bed039a93eebbba105694d8b910feebbe8b9c","impliedFormat":1},{"version":"bb0cd7862b72f5eba39909c9889d566e198fcaddf7207c16737d0c2246112678","impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","impliedFormat":1},{"version":"320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","impliedFormat":1},{"version":"d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","impliedFormat":1},{"version":"bad68fd0401eb90fe7da408565c8aee9c7a7021c2577aec92fa1382e8876071a","impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","impliedFormat":1},{"version":"4655709c9cb3fd6db2b866cab7c418c40ed9533ce8ea4b66b5f17ec2feea46a9","impliedFormat":1},{"version":"87affad8e2243635d3a191fa72ef896842748d812e973b7510a55c6200b3c2a4","impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","impliedFormat":1},{"version":"3eecb25bb467a948c04874d70452b14ae7edb707660aac17dc053e42f2088b00","impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","impliedFormat":1},{"version":"330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","impliedFormat":1},{"version":"1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","impliedFormat":1},{"version":"84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","impliedFormat":1},{"version":"1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","impliedFormat":1},{"version":"30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","impliedFormat":1},{"version":"03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","impliedFormat":1},{"version":"5f0292a40df210ab94b9fb44c8b775c51e96777e14e073900e392b295ca1061b","impliedFormat":1},{"version":"bc9ee0192f056b3d5527bcd78dc3f9e527a9ba2bdc0a2c296fbc9027147df4b2","impliedFormat":1},{"version":"8627ad129bcf56e82adff0ab5951627c993937aa99f5949c33240d690088b803","impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","impliedFormat":1},{"version":"5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","impliedFormat":1},{"version":"8fac4a15690b27612d8474fb2fc7cc00388df52d169791b78d1a3645d60b4c8b","affectsGlobalScope":true,"impliedFormat":1},{"version":"064ac1c2ac4b2867c2ceaa74bbdce0cb6a4c16e7c31a6497097159c18f74aa7c","impliedFormat":1},{"version":"3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","impliedFormat":1},{"version":"1d63055b690a582006435ddd3aa9c03aac16a696fac77ce2ed808f3e5a06efab","impliedFormat":1},{"version":"b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","impliedFormat":1},"85ae5aee75f011967cf2d25cbc342f62d69314e9d925f7f4aa3456fc2cffcca6",{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"4ead13a482c539b77394b2a97e3b877b809eac596390371cea490286f53b996a","impliedFormat":99},{"version":"12405c748be62bbefb6df7515956b0921f84d7b444d1f6c3e00af1980cc3af17","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"3a582c6e8906f5b094ccf0de6cc6f4f8a54b05a34f52517aba5c9c7f704f6b28","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"49ab4f1d153a252779958fc87b700743d32b5ffa42addd70ae23ad3f429daa5c","impliedFormat":99},{"version":"0528f6d21f7a02d4092895090d2dd86104bd5a3e79eced96d5a1a7dd90943d17","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"5c935b7fc4ddc1410ea1cd7cd4e35ed106a6e4920dd27a9480a40fd224359dc3","affectsGlobalScope":true,"impliedFormat":99},{"version":"64ccfe7dcbcad9b8a661a042ecb2309e41b9ab957f7b8cd070b05583a7821a13","impliedFormat":99},{"version":"c911b3bd083dade8fdb7775261aa25feae695d562a3b11209650b47be90043fc","impliedFormat":99},{"version":"98580d6ed68c9cee7f956685abbb6502d70bd92f48175ac807ae6c5e254fadc6","impliedFormat":99},{"version":"fc5ad2ec8b130a59612c5cfcc2cdca9bcdd80851adb8acdb004aaeff00cc978d","impliedFormat":99},{"version":"f76d2226b20ec0d3e884114cfbbb933cb4d25d26cc306e8315e21a0e3afafc39","impliedFormat":99},{"version":"709b4ace1214759ca558d2b85c1ac20011c384077769ed8e08d6b2e6d68ef6d9","impliedFormat":99},{"version":"638a22f8e16b31c37297483fa38cfc760ed309b16d4c606a7b4532f4394c9c0c","impliedFormat":99},{"version":"9394183f4c37b8591156f32e41223c9e0dd211eefe7499155d4cdf15268eaea8","impliedFormat":99},{"version":"3ad031a1ffc57462a2c14b2f2e1e6eaa22787748fbcc32dd6a8a534a8e5e18b9","impliedFormat":99},{"version":"4273ef5d82e0f998bf38e777967753cde645668daf16dc8c3a72162c9cb4ff71","impliedFormat":99},{"version":"0824e917b53180b0b433f4fa85a1cc1d689a6c5f118bfdbe2086aa3b328c12db","impliedFormat":99},{"version":"7d3e062a778b8f5ea4f0cac7e925e31f88e6739812ebc5f827474324a4048f14","impliedFormat":99},{"version":"ca8bf149019241a83e9ace4f614d0410c00bff1246dbd1bbe63f88737823723d","impliedFormat":99},{"version":"33338bdcc31a340ca3a62ca2fac6086c5ac899b98cc50246d8fd4333c138e501","impliedFormat":99},{"version":"e27361b231a041b6c4da9fae61463d39d99f64926e1cd732513fd413b77bf869","impliedFormat":99},{"version":"ae1da3dbcdf34006350c132fd8795b1fc9a86d8fa398cd00de50463bd1eba9e2","impliedFormat":99},{"version":"4e003c868b0d8f8ad200b96cbc653e18e513fa23e1c19c4fe3cc25d4394efc47","impliedFormat":99},{"version":"046271de66ae07ca543f79eba0de19f342b78e759b597929159b2392e0a7ac87","impliedFormat":99},{"version":"e0864480ea083087d705f9405bd6bf59b795e8474c3447f0d6413b2bce535a09","impliedFormat":99},{"version":"e67cbea16f1994af89efd700542dbf3828a46a52b29e4d67e801bd7869dc103c","impliedFormat":99},{"version":"f582b0fcbf1eea9b318ab92fb89ea9ab2ebb84f9b60af89328a91155e1afce72","impliedFormat":99},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"52dcc257df5119fb66d864625112ce5033ac51a4c2afe376a0b299d2f7f76e4a","impliedFormat":1},{"version":"e5bab5f871ef708d52d47b3e5d0aa72a08ee7a152f33931d9a60809711a2a9a3","impliedFormat":1},{"version":"e16dc2a81595736024a206c7d5c8a39bfe2e6039208ef29981d0d95434ba8fcf","impliedFormat":1},{"version":"38cb107048cd8ba54a70014ef9a30cf57bee0d9f10a0ca4cefa974056e1ee460","impliedFormat":1},{"version":"19ee8416e6473ed6c7adb868fa796b5653cf0fa2a337658e677eaa0d134388c3","impliedFormat":1},{"version":"1328ab4e442614b28cdb3d4b414cf68325c0da0dca07287a338d0654b7a00261","impliedFormat":1},{"version":"a039dc21f045919f3cbee2ec13812cc6cc3eebc99dae4be00973230f468d19a6","impliedFormat":1},{"version":"3fbe57af01460e49dcd29df55d6931e1672bc6f1be0fb073d11410bc16f9037d","impliedFormat":1},{"version":"f760be449e8562ec5c09bb5187e8e1eabf3c113c0c58cddda53ef8c69f3e2131","impliedFormat":1},{"version":"44325ed13294fce6ab825b82947bbeed2611db7dad9d9135260192f375e5a189","impliedFormat":1},{"version":"e392e8fb5b514eafc585601c1d781485aa6dd6a320e75daf1064a4c6918a1b45","impliedFormat":1},{"version":"46e4a36e8ddbdfb4e7330e11c81c970dc8b218611df9183d39c41c5f8c653b55","impliedFormat":1},{"version":"3cc8a3d123b6b232d48d34b51b785f9da8d193f5b5817fa521fcd2f3b9315c55","impliedFormat":1},{"version":"6332f565867cf4a740a70e30f31cefba37ef7cebcf74f22eab8d744fde6d193e","impliedFormat":1},{"version":"9a195d8476f48523446ece812e5450b5b1ec8c3b6abf99efb8ee2479524f6f56","impliedFormat":1},{"version":"17f2922d41ddd032830a91371c948cd9ce903b35c95adca72271a54584f19b0b","impliedFormat":1},{"version":"3eed76ede2a1a14d7c9bb0a642041282dcc264811139d3dd275c9fe14efc9840","impliedFormat":1},{"version":"354a7f8e1287d9d6b7561bc97fdd8cbc2f7c1dd79e4cb37b942e8a5cfaff1085","impliedFormat":1},{"version":"8d369483f0c2b9ee388129cfdb6a43bc8112b377e86a41884bd06e19ce04f4c1","impliedFormat":99},{"version":"f3fe8197217cb6fd6e07c0eaa0966e4ece77cd779cbfc55767a93704cc692e04","impliedFormat":1},{"version":"a18642ddf216f162052a16cba0944892c4c4c977d3306a87cb673d46abbb0cbf","impliedFormat":1},{"version":"617112682fcb55805f0a0e16450397edc016881962eee4298f4f4e3ef795aee8","impliedFormat":1},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":99},{"version":"960bd764c62ac43edc24eaa2af958a4b4f1fa5d27df5237e176d0143b36a39c6","affectsGlobalScope":true,"impliedFormat":99},{"version":"4a2479741e1be22a0537a0a0b341ac0df26df60c62d3d0f1bcda536936066526","impliedFormat":99},{"version":"e50d04d261120f8f9d07e85698735d5b88f3a66bc395c08ce26c3d817d141a73","affectsGlobalScope":true,"impliedFormat":99},{"version":"b0d00966e18eb7d205f31e4766dba87631e14bc121c5bef41bc70dad3c39a902","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"72ce5b734c05da85c85a6f6dc05823b051d6aa41acaedeeb1d17c72f3b4efa72","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"53cf4076f42b29b8d411259d168d51b3a0274c42c8814e5b44dfa8803a35d4fc","impliedFormat":99},{"version":"a39461ee1f27cf3e6cfd63d21045713d26d521da55ea4d8efccb705f689e6dbb","impliedFormat":99},{"version":"61bb64660ee150f3ab618340e15cca0a81664801bede7c966ca0eca3a952fe63","impliedFormat":99},{"version":"42a12f2faa483c9b48195ed794d22698162274e755f6e07219c2351c4f08d732","impliedFormat":99},{"version":"ec0c42bb0f465e4993f2bc68a6ce9df9a2dcbc7b83e21748f82f1b69561938e3","impliedFormat":99},{"version":"f50ff37a9cbbe74475f426474d9827083c7c2c138a954d28f1690df338f69291","impliedFormat":99},{"version":"61fd6c17235d530c40f543dd7c40afab091d91c1ef890baeed30db6d82b04b28","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"091767bc841f937654ed597d49e023ed59850355e746ae1a6f20ab31076ee1fb","impliedFormat":99},{"version":"19c6d6135af59693698d384050b45a8a049493500add442f58e4bd7c8a255ab6","impliedFormat":99},{"version":"6a0dba12d55314638a8c51108b20fe2f68f1364a619d098918bda91c22dec154","impliedFormat":99},{"version":"8124828a11be7db984fcdab052fd4ff756b18edcfa8d71118b55388176210923","impliedFormat":99},{"version":"2b39c6cf59088713babbfc3e20ee85f1375d40e66953156fa658346b8346f24f","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"5e2ba3d18d78aebbde1f34bde356e41e9c76eeaeaeee56a37036596a9eff4211","impliedFormat":99},{"version":"8280ae8ccc0493b32d1742d585357ab9f0a508ea050af25a5a20d64010d0a5cf","impliedFormat":99},{"version":"7adfd9f9056ecd4ae6c65fde2a98654960c662714c73f048478959d04c09e144","impliedFormat":99},{"version":"437b7613a30a2fcde463f7b707c6d5567a8823fbc51de50b8641bf5b1d126fad","impliedFormat":99},{"version":"63ea959e28c110923f495576e614fb8b36c09b6828b467b2c7cd7f03b03ccf9f","impliedFormat":99},{"version":"1601a95dbb33059fc3d12638ed2a9aecff899e339c5c0f3a0b28768866d385b4","impliedFormat":99},{"version":"56fc978580577d30f4c2cdb5b1eb9217b66ed66537dd27141256f426e4b8dd68","impliedFormat":99},{"version":"2c5413050a2580becf9d82dd7e3006b95623e96f145356bf73230cd635352f70","impliedFormat":99},{"version":"860bedc71ead192ea4a0ea5ef4686e65724d14b391ebd1a6671a7044e6bd8e15","impliedFormat":99},{"version":"7c0a845bee4a084cbb8654709f48e5f13e2f6d45e5e2dde7c57cadf79fd9e3d5","impliedFormat":99},{"version":"7fa6fdc6eeeb3850e6b3166836f8c9199594c4f4bed3cee02cac0ca33d71894d","impliedFormat":99},{"version":"e53757f3e6688e8be16b36ccbeedc85637e607353fc67ff7b6665d6005aeaa12","impliedFormat":99},{"version":"88ba2660f5b024c7afd02ea700bc0c677687e17e34f0a94c3256ddb55e0f1c5d","impliedFormat":99},{"version":"7bbff6783e96c691a41a7cf12dd5486b8166a01b0c57d071dbcfca55c9525ec4","impliedFormat":99},{"version":"bd239b4c5e0a4de626d2bd30febe7d4596de481248e9e7436b1029363b45660e","signature":"ab48dcbb58c478548b4a6150e58104a481db9d7cb101c2b670e28522d00cefc5"},{"version":"4ffba3c5848b4fe62ee59b754fd5f256ad9656a0db6d37b9a2a8cb40dfc7ac21","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"32b35cf0dc3a1b1a7118b61c34ce2ad1a29695851679f9ec34e0776f2ece2a69","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"59e5e964b84fdb2378e9455e4e59405030e4ed2b4c6f891ce395f17796af3cbb","impliedFormat":99},{"version":"dd51e53752b310bd20c9b1a87bbf12b1fe2be7fe40f505b43199496481096275","impliedFormat":1},{"version":"a87be4662442b3feeffc331ecafe6b36cafd08727e2d7f2425a5099577e7fd18","impliedFormat":1},{"version":"cd4cd9220a1ba793bc935e76d8e5481c110a90d9868ae7866a182ee71cdb6abb","impliedFormat":1},{"version":"0a7fb8619b10bc05fd933ca9ac1c8b2ab2220be7a57b57565c3ac158595494ef","impliedFormat":1},{"version":"c4a5f91feb9c5a6b2a91089d959c38391b79a961db3b9cc73b8877d57ad7dcdc","impliedFormat":1},{"version":"90ba95a763101bb61b8a799731a2ed60b5016b8135c1a2d5186862d4b534d4a1","impliedFormat":99},"b272e3a799aeea8cdaee7ec9c4a808f8ad389517f8bd86dd0f06773701d4ae6b","e03ea500dcefe6b2cb49aaca7293a978e65714638b7051ba42dd3d3cad167d3c",{"version":"cf4b891366fc80b363cea636efcafecc5ba8899817f8d6a1ffc15b42f6a6a8ce","signature":"40229b3b5d4fe2c57887134e413593dd966eda5165bb8f07b5f12830305a3941"},{"version":"3294cd20c885b9037a59bbbd99f3191312cd3d5ec5526fc6a87128c6076ede0e","signature":"8cafbdb0da6961dac0675263cd2bff5e208379e46e6bab52a7a28ded48b6bcf2"},"812f9799d736a8a570ca380048e3862b815eab0e545ac2512b5366bdcd57380c","8c4055dfa42680fd733cd22ae5f42f3cd7ba07bf55ac8298b3d7fe474e7ee984","c25475eb4f6a445194bf8c869b3b19b88da31a8320de2e7ff5056fa06cfc903e",{"version":"458fd4c21d68557326a0425a048ffed886dede7c1c4ebf9e5f6da504d7f5aa88","signature":"1683d0ed29923c3af0e10b5e79a4ec57fe78f03e7dbab1fb69310934fbd59aee"},{"version":"e5e1f95b4a85239946bd42e36205c3f2361074816772ada23b5a2fbd53f36b3a","signature":"f3b8bb7015e732039323fda73fb19ce95e9c1912a80022fba04d8dc2aba7cf48"},"cb201b98c3065d198799f7aebfdd1780eb0dfda090b02814fee0f0e9c0b206a7",{"version":"332671962ca0a8a51584bce79785bff40d37b58d666c107f6c43ceee7ce584c2","signature":"775ee4c1901811383e799e0f39f4b2937267d39f171b019fc0f0ee8bef979517"},"1b70e8278d2e05b92031bd26962f513aeea07e0a7d63eabf1d511b4be076f07f",{"version":"d5776f63cec3a73e311ebf99c290eeed0572bad2301f1b977cdccb68cf52e46d","signature":"0135847364b4501d9d090e495007653aa9a112447565c83006b6f80a4a9109e2"},"ccdf20d78f853ef71cc2db6d6bfff29e71695d5925ff6bbd43a0ae3dd5b7cd51","804fc33126136a3fa07a8c63ea86b78b007c16f45468550301e2ce8de0f79484","6df011d36a7c5ec8985e2d25064543eac053ac750afc3d9f15830052610b943e","718834bb09520d71c2784165c2e8bf2d9144a996d6c4f2e4e42018102238ce58","c80b22219eba22d07a60fb9f591ac296ccbee02f8735f6c97bbf5195b7b3266a","f3754863fab84024ca0dac9a0e4b7e4064c2a2cf3c4d2c822c1b2c042cc102d0","d71e66be066702d69814e388f7a6bcdd375cc6484bac8cc844b10e784e88f304","15bb738b082a76b7d04a8365d9a6844b377cc0c5efc25f6e56717f41a8742b04","e615ce2e516ee9add50da36c23b052f17bc616ede79f85494dddd7ec0cd6805c","dc28000206b6b7be252e10f650845ce96294bd6e63632de575a1c0d960099359","c86ff00df3cef4cf4afcda8e75d779876c0a677ab6d2102140a590c94023162d",{"version":"2018384efa86247beedc65e0d3725e88a40182922789bc6107091252fa347332","signature":"75d858a79b0fee3d078876fc73598d94930516a6750eccd670cdda097cc9a903"},"ab26736130252fb0811b5dfce3bf99605726dad97671f625a7e0aeedabe14c6b","70113bfef357df90b0f2b41832126ab69703008d462d8a2b57cdf40fa75c7812","e3bda27f09a0acf14596b250db1e44408ed4d5b91b4563ffd31f82f94c029470","9070e0a1e012d84015374a4b58a29e1b21d8b66e90faa66e90b70d149160df45","df56f1a082f98d1866832821383deb4061e7bf09dc3c5a3e6061295a1906cf0f","25d9febbc258e7c26ae84862377ff23df7e8b8b6f2fa5b413c4be223af893a0a",{"version":"392c02f9a8617cd6c3346885d164b3732bebae9c0d933e190915b62f25d7af8c","signature":"9798fbd8cd02331b5c2812dbed806a71357ac7ce1dcd32af7ae1b01f6527d547"},"c0c6586ee01734ae247fe280b7ce9456a87d667c003faab3b23d62181afe8916","a469403c6604688edfda3fffb4c0144c0778b2b3abc09691b84b3dd2c3beabc2","23daea964a114a289a51a5b6cd4ff95792f5e74d8b01fbf49b06eed20049da0b","bbc4289fbbc080f0d640858ffb2066468561a64f1f49c8ad268135ef08c1d307","de3229fff02f5ea6543a756883edc353fdbfe33e7d6d0a2faa62afe55fb2a78e","419888a4953da818c7bae3c73b04ef7d6ac2e6efbaf73cb9e9faea2df213d29d","06fe1e12e8417d2e18f39cbe1191383b15d0603146c7be2b09e0004947de22f6","53433d5311c37192e6865b188b6d3337cccc045e6b6da7768826dfcf129d0a28","6660690e3107eacfc3c480d58574ab8a35c14089d2c325ef79da1c0106cde468","3d55ec80f5ec2d43c6bda6e26d50a03a28526e94c44812e650c8cfbc61db3bc2","2c768e18356d2c4be1c5cd5a54a1983badf752dfe7746c7c6161935a3d7fdd03","51d23372bdddb45499c4c5568e71ac4ce33af279edf15877c8aab03af7ffb40a","0466d87ccb5e10975ec359300da6d7d0c05732af752c09323cdb2521720e62c5","8049e0c1041eac5a8f6c39badbef82174074d2400cb384bf43b1224a638ca9dc","ebef7d378faa8a7715220fd906d88996794bd48a4ea258bccb0a21ea55b40d8f","180fe9b4e684870831cb141738d5f9388d90e804df8d5c06daa580e7b291da1f","26fdc4b60439fcf84005bf69331f84d8ae87fba82c9057baebcc1ac1307dd95a","f32bd7e0f6ed0a18b9a50e67b597692776ca5265e71f1ebb61bbdf54e0464e57","040119b2efd8308034b33871572b308e0beac06ffdd8b41c7d722819219cbf3d","0be24e498506cfeaf8463f719277c8f5d52b0d4afd2e22f5d45fc0de43bd6022","f3a2ac82af9d8a14375ddd4e3225f8578b3195ad33e85681bd18865328df5b43","3a15a4731a96d9dacb9cf735f12fcdca09d9c577823ec32b278c45fc48b08b05","72eb6665bcc46c277e2d5568d9f3b883058fc62e19a28e4a227200b721310b68","5df54120520aa61969b28350c3e13e018d73253963f07d3e5b8480f6e5ee21ee","2b1a2590469ea2d5f44c8909a08a449a269d01ca1a7c0fabb367c5bc28baa52a","c1b32a30289157cc33dbb9b66ccb96df89ab6d8a59bea1a8ce2a5981231571a2","369be937e86002ff2532a401e2a4984f1f91c42a1effe2b97b6506237b820b8e","56fb3fad4d94088134313449798ff3f92c5289e65bd8f87a18838b000ac94618","edbdb6e286f67c9151d6b65816d30603f134683851432c83f728979a50904742","d4a84657e7b960484e8fb28aa9eb3ddc3c27199a14b6d21e72ee6e82b317ebb6","22b4f46fd2e8a1d5c3d466c80a1e0eaba1100f072c4a5dc5cc232ffeaa7d9779","9a77b64a695927b45bb880f0ea155d0081e768d4d7322a8d78f0ca86ba9a0c2a","250f08b35fb145bea8fe00cde3d712b643e7fef2d06210b6d55628b092544104","72e42a0de9369b59bfe42e68cd19c9ad07b765f570c676d21610b75473d9eed6","490950319536b3ea28024df0c91e59ed2bf20cb0cc8029ae1a42df48874ab00f","385b814c0666e0f401a37735e60ff34c1a1019b7074b34421701a590375170da",{"version":"4d28868258b7208be3f4501d503a48863bf3203ee75aed2be4a73a205fe3dea6","signature":"be74e7487272d0772891b0ea2b337cac457c7009c984398965027398c293022a"},"86fb262322739f7304d8b5bbebdc002a937fa981356347d12dce01fa264eecee","4f0c190d4d71dc49ec4ef696f6012d328f1edba0215180f7e84b1193c381f383","7c70468076711abcee49afe4e6050546db72705b31891b88a280f8481d40ccf5","9a8dd2ae94882c056f8d3d238ff51f7990d29a0289a7063cb617820b48037dba","15b5783ba8e9edec259fdc2d63199f1b64cb9bae124e8dc6f5b283aa7d217783","8daaebd183a2fca2a80d5c1e1b284f628c7210930798559f174eb2178e5c2f47","fe64813e84d2c7a8a7b732dcf73d676b75c11ec055cc2bea0a6eb7e7c72eedb0","99bfa019855a100dcf3d356624654b8c6fe2fbf053b2d5ebc8158e08d0dc079d","1027a91ba0123b3119a8f6915bfd669f4813a2a33775b1a99a2a2171b7b35a12","d2f14ea53465caea54d4d584cd3ef68aa53534688839e3c0741205f9bae3075f","33074f64be05338c7fb1ae89639ab9407d504c94d0d04f8f74f2f70c6678a997",{"version":"15ae1ab5a3a467251aa3f58ee75f2cddbee32c98e3b597643577f538c2278769","signature":"96f99143319c234b768df03636e2674b787f4e4cdbf9e7c56947662f8144d12f"},{"version":"65e527e36a23a080d7ddc1636336b7d950112ac730360e18a5f7cc5f26977a7f","signature":"a4c5ca81dd6d42310a36e8ad5ed90ccd2288fcbac6f859917f5edec2b7de5d5b"},{"version":"5190600f2dd216333ef3aabad92da2185875315911ab5a19df9f23b809a13f31","signature":"a22b2a342ea7f18daec3d8f5f001deab95554b88930a7eafdd778c515847d82b"},{"version":"f8031790fb56b71ef1b501ddf066279f87769e741795fcdcd2c9d229ee0548b7","signature":"dc6cb8983fd0f072b86d5f6d451ed47523a3d7eca8fb08d64be6b6ab665c4cdb"},{"version":"731440639cff59b0c13fa28235b2836f378e2071b7443bb8b8361c299b699efb","signature":"50f1ae1749aa5aff6e8f83bb68b4b7cd57b36162bc3b17f09f78cfbd9b25ea40"},{"version":"d92adc7b952212d5d29b499602af59502823954f00c7e94ce2597d264c5c7c39","signature":"bd9462d89069f1a2dd735a3cc856120ecfa20c41bf1a019248d046a87fcbb560"},{"version":"db270b9c29fb25ef1c64fb9c71f050a8178f156ab69782a3dc92eb3820248145","signature":"19a01b4243aca91ffd0119b172bef715962cd440b32158544776cc8f2516d863"},"03a6589b2ca2a81c8513864bc8fc75eb10cc20ab91230cf9b62cdc8275dd589d",{"version":"d8ac524371b44eb53682626abcb3524693b74dc0009c8013971eadbb1bc7d8f6","signature":"b4e3a98b622e0df12acbe0c5c67c9985ef290ca9a5b3877437f1717c6cecd8ce"},"33dd8a66151aae844148c1e4d90b3a993c776594bc19ee9e772360e4affb48af",{"version":"cd13fcb9c9fca230e5391b20312cb60c56b3fef1ef264e95b574133987250586","signature":"adb11d6fb416e5e7c1931812ac6bd4baca455b110fd8841b4a6905f9e299d08c"},{"version":"609bd5324d58c6d8a903abae530e83fa8f64d0816ff82e8eb8b2471d6d1a7373","signature":"b71520965bb4a5223a60f774275465e046c9e8b74532e8b408dce576cfd4e22a"},"2961e56145cdb9dbba7f8ad63e57a426a3aecad9c71922f98eafe47c3f1d0b82","692bc7a0e0aefc4921352890a79aeadc4a68f45c5171794fd0a0cea24d535b34",{"version":"1b78ae8c38c922360d4c70325cf83e594f76e391e0d6bc39b0697c65a30a3a1b","signature":"666273a11838a8e9ba821630e1ce06fba622390cf7fbfc362ced4d28b5b449c4"},"f4c24f58866aeb2dafbb1233d5213c323b66fb731f8f018c0a3440a9f255e75f","0787f87c2026088ab2a84da42544e24df8c1fa965cf6dfa6bee1e836a3493919","77bfe2af58b9dda5ee7b11b8424b6cad7e7745ba1aaff7bf58657b7a31fdf87d","2a1ceb639417a528170aea1d8924e61d8b5bf8d95de37dc7e4b431011d2a49c2","71ff0a7cfba4209a055cf9b8abd8cb0ee468e5f512ad8163c07766213aac64d7",{"version":"f916dac7891a73594d3e8579d923fc433b9a65e026fba9e5b7dd39a7f01f3b83","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"954078297f1913ccec8bc3f35957e2a791dc4189f93bbe49d9df0c7e85d8f72f","3db978b42a198aeac30a981735a516c70d2ac7670bb666b7a0297b64e8ea4c38","9f69c6f9b97ac89f0eb75173e552d79367b11c9e4fd298d5085f4eef99379b95","35414df28dac03ed6e220af5a212f9aba38afeba214fae9802fec81a8399e5f9",{"version":"efbe6f29c56234634cddf69a318308620c714519fa65f153205ed2ba4386e2ba","signature":"4cc01d45183a43fa9402ec7c2d5e9fd4733cbca1fb778a5132b313b08bd43f64"},{"version":"71438a74370b6c0568ea3eee86caced05d220d748b8f336cb7be512e961674a4","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"b0f6e812446471de0e3fc28cdeb7ee1912a9be2018ac3db3a47d9eaad172e204","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1be62b0ae46d1fcc7bde98beb709e92ec69c64b824d3bc94589031b55eacbc0d","signature":"96223fdac3aaddd6718243f127330e50898d12240336e53725209a1f6160db67"},{"version":"16d3b90751bcff1bbd53309e05a696267e5da68539ae7c829fef13312e8ce858","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"6e813effc479e7c5da7f9f4fda2df90f44e091db140e912c24e865dc16e7f16a","signature":"48404e226478f761ac667cd55a81db0e53bb6c8ec85871965b9f953f99262193"},{"version":"6ac8190d670c15f82d051cace93a0c02ea2922c29ceea1e14105e29402a126ec","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"f7d6846e8af1042ffef67520fa719bc7a3c74fbaa6bdc29bd4cd624497a029dd",{"version":"a76f042d64f8dff3c5e1d557847dd12560cc8e7fee996878e52ec1c92389a3b3","signature":"03985eb6c5ad09ef5151cc758c2f1034edf94a92c5019f4ee37533abc36da13f"},{"version":"21ac4d7b2fe2a8fc098acd752db64bca82c5e86db9a0c6d77e95f09e0ee0c7fd","signature":"61e0696065b325ed71e05401bd01a88916690d1664db0fbbc576e6a6528d8822"},{"version":"fe93c474ab38ac02e30e3af073412b4f92b740152cf3a751fdaee8cbea982341","impliedFormat":1},{"version":"d377c38b3921c35350c9b50ba202d5452fc7a21a0ad734b9d3f886f021d9ce1b","impliedFormat":99},{"version":"54d9695325331b7549212c33c8cf84d040206fe7b58c8c849a798456cb45216d","impliedFormat":99},{"version":"54d9695325331b7549212c33c8cf84d040206fe7b58c8c849a798456cb45216d","impliedFormat":99},{"version":"476e83e2c9e398265eed2c38773ae9081932b08ea5597b579a7d2e0c690ead56","impliedFormat":1},{"version":"1e00b8bf9e3766c958218cd6144ffe08418286f89ff44ba5a2cc830c03dd22c7","impliedFormat":1},"e8cd54078749c737e2c39bbf5577d7bbcbed30cdf28e6f1cc24e550c0f7b92be",{"version":"1ac71842b15c610aed71e7376b1e8a19b65dbb7ffff51b646fe404ce1054673c","signature":"555a4eb7b23abcf5c4e7e06976191f275021081b8e95fbc361e0301138639a0f"},{"version":"2a30c38a4687c848f0fcb6ed9adc9bdf4d2103f3ea44047eceb1976c95cf0a8c","signature":"442fc65a2a0732a9c559e7689f2c25cfb6ce646a2b5f218cb9a45a26f398ed59"},{"version":"0c996be745af11ccf07b28eb3e007aa4277d01b16f53259cb355daafab167abf","impliedFormat":99},{"version":"27c1b57e01b13f914e9d3507202036d676222057d6fa1032332e2954296b9d45","impliedFormat":99},{"version":"7348c35ce10f8323a515ea6a6c237c0dc7c3fd5e491c4dacec2a7b93f0dfcd26","impliedFormat":1},{"version":"258e67b2638408b67fbf5fe6c953b8f2dd2a69f9171d31c9a976cd2329716e4c","impliedFormat":1},{"version":"74137333f57d632f001828cee60b2094ec332abcef1aeee18a0970037923dcd4","signature":"dcce64474115c89001de4c463109080539b325c44858306e722b15cd18d98219"},{"version":"802e7bb6cae1c72dada49e132b6b28eb3f7afbaa27b5ab266b92b662b5327e47","signature":"4a6858702ce17a29995b5e223489b3481cb9998754d7d409dd97d00963d76e05"},{"version":"e479cd25cfbd4bc91642f4b12f351d658c484d1a7b70d0ecfc4a52697906a045","signature":"ab02b9b1f41df13cd6eacd101dc4cccf32b677c5df88f9d6f9d58ec9fe648a67"},{"version":"34bc3cfeffd604398847bb96e61f637be37d999ca0c10d67368136dc1be463cc","signature":"2571a03d3ed5d860359c75c177e55747b7ccccb97e898a5a320fc05623beddd8"},{"version":"c3edac43c4a1d3e16edf15e258d82bf554250a017ef4e3576834c63457f4d6c3","signature":"0e5889f9a92cc3fe8fe1871bfba2f90c1e6848c6e407ce9562ef95c36231f002"},"347343db651932270ab093d5830ea54f419111eeae659b77a9e2cb13f328a9f7","3b5ec50e7b2d52f8cbc0070ed5556ef15c90833fcd899cc2ecc5d47c46c74973",{"version":"cf59492bcef122d8585008c4752000175c53abce051c882757b7f1bbd8a58961","signature":"870fe0dd8e82102dbadf0760b77925e9412c93d95da14cb998f138177d26f222"},{"version":"f6aefd3198da082563b438f5a5c1563480e772730c9c51366edb199ec937ea4b","signature":"659b8c23e1a6160444eae10dbc944dc8cf37b17c25b6a75b021660376ba49cb9"},"6f4dadc8756570c85f25fab29d5025a744d41f61ed1f617fb77db1eae40d9b79","19da3542472ab262424b57bec72fc4d400b67497ad03b42c6007a25f23f4993c","55c69554020aeee5a248a84206d957cdf889bd5c931b66986770edf909ae07cb","c0fbb82566e3c587cdef075991cdc0e83e544ff71ca6ad7fc0a8b4114210d401","345fab538a281744e1ae6a55feef5b467d5389e48eed730ec49c4f782e0cc496","64e6a475df2e8aa93aaf367c5df92364e0ec677411bd068405184f83e517c84e","77a094e4e0ab32fb00ddde5c78476d5fe0828c712c6c2efde60a17a226eed0ab","cb7f713163f0c90bc6db0370b8a87fb73c98b358f8bcf48aead28597f55b0f86","56f427e398577979ee99d890fef5d9dc53f3f2c557085104eb6890019787d916","56dd16a4d896aead6a4cd787098fc91eb1b3835dc4b015f6f17e770551e9fb18",{"version":"39532325082bde9873919451c6f1a8ad91f5bef582b3ea16547062bdb7143065","signature":"bf25c45519d3efd692b7bd7387b41720d23d5dbdcab032c9cb4891a4e10910a0"},{"version":"fdb783a322c675e4561918088c76fa4adf691afc7c1935300138e093c1285f83","signature":"0cbc40d93c13b47faa989bdbfca8eed5a48f277a850366c910af796afe035935"},{"version":"f247359cb12728389b7bb2d3225d2e2376aa5fa7b2d7f46572372e14b415c69f","signature":"91e9bcbb27abdc6de28aba65757ad7c0371120f96af6c16c62f339f1e3745b51"},"d65387fc3ba09cca1a3303e645d498b33bc70a59528ea21ec210b2e78b842974","43c417abe8e54d69d037f666583cba8bf222070cb005f5cbb5fcc1b02e0fc01a","5c8e29eb6fca80933c1fb4e7f4ddfaf1a14a3392e5277ba1d327258f8dc99783","495d68e9b25ae0c7407b6e8c8695cf3e7395eaacf7dfc2617c6ecfe6eba8dbf2",{"version":"d151733bcd9d22e12fe89b0a59bad214872b2d561afe7fc0a727901a79ccbdb1","signature":"5839809854919e435a02ab674580cfac5a4110e68d9012d333b6342a573e513c"},{"version":"e08475aaf2f22efbd09cd9de5d8ea576adb3be230aaa5e4e24f185609d70fa7e","signature":"214b97d6fc9a99cac29651af928b444edb053979a55a1da2d7cc4f63c6ca7ee0"},"52cf598a1b721f3329bfc2ae6103b23f76173e61adc77bfa64c01bbb6002504d","72992d605284c2a96ce10507cf3dab03536cb9bbec569ed3de7d07a55fd35c7c",{"version":"05b3581ba268fc0794a9299ce2fe953bdd7eceec017d53deb79228ac13555be5","signature":"a941cfd36c68ded25c50c689518976de4e6669d5a633eb0b3b31a43127e0b786"},{"version":"f1b3b1d73ecdc7df1e5968f4154fbeb1b24d975c13f696d049d96653141ddf98","signature":"bf2ff4f10ea73bd8971ecd08059845bdef23875e2a1e1d36ef5ece5c21c8b83b"},"31536346bbfe853cbaba990964d535b187008041b1db87c87835a11fe5644fec","dcddf087a7d961377633fb6e57ee48a53e81a817590bd192b8b66517f73d86e4",{"version":"67bdd738108cec09fa4bc092e0b4af9386fa438030436b8da50f9640b684a4e9","signature":"2efcb185be86df956227b0d7571bc212081c84571c2a635314c8b00a3329cd47"},{"version":"1a5c85ca837fb53dfbf9afc003398f497aee12d2bd30a2acb435429147cb69aa","signature":"efb8d94cb63aa478219a57de29d534592d82716c0475eb85f97e9575a104071f"},{"version":"2aedc24ce50ed0aac66393dc0d1faf8b8fa17d3b2fb37f9f8e1c66c85954fc57","signature":"86578fc5db1f524c0a36be6052944fdf74f2e49e7c9670e2c4d920d6ccc2b7f5"},{"version":"350316a01b505d1cb0431c50817402a6a82c0d5fab6b27b76af27c259b021042","signature":"21c0cad3492f090864c27389e857d076c6ae7f142e446901ed25a1733bfbe76c"},{"version":"3fb64d2de7de1d85c1ef2143edae8f17de0e6fe62de014161dcdb194d7997c65","signature":"7e785b143a0d0c6bb023778f83d6d34e0d4976726135add21d1b3d6c25a521e3"},"f56191ec2f9da0206eaceb9579dd62f2d5aa9fea1499782c1883908eefe33201","b979f72b6f41e87df2372bc4993a2d4ffc203dc56670ea867869bbe1670f46ce","0c38761192759ded08995fbe45f9ba1a521169204690db5e067b0ad58bc14c42","37329c4dc9437527f615f961867b65e638a7d61db8554590029dc87aa2cea0dc","002b5be581b9f660dcd8f1caed92e3798b0980dce3f3c92005b9f95f0610fae4",{"version":"1fccc097235e47b0021a6365176b6c1e6028a7309a55e7d5decab91328f0acc1","signature":"bf135f969b9fbb7aa9133ad0ba9e55e6c6f3b7fc976eaa04f140ff895c536b62"},{"version":"ad0b264403db93942ed42db950397c46f8ceed9baad376c0baebbbac658f3fb7","signature":"2a3d13784afae69e5d3d6327bda126555b9dac27dd6808e25e3b39f1b163ef56"},"0a30389ea8dbfb42061721ef22f16e93b8c7413fc1451eef5a50a70dc3da50f3",{"version":"1d8b191083eeab243548897b93b1943f0f434aeb693351238fad315c69ce8c52","signature":"62e652f61742da5e791dd7c1dcd646e0e5e622fc5fc01ace7ad93df4ea4198b9"},{"version":"c462e9026a9ae5069d3754977523a440b5b45d4e1ca589d5bd62c1d24a1811a9","signature":"8b16906966e5a39ae872a27d3499d63a596c145478b6185abc698127c1943cb6"},{"version":"a0f1fe5716c9c7896068b3e1409dc659bdc003d41e2c3e688774d9fbc9c78e95","signature":"7d5a89b2cf1256da54d4f549f686f18e983069785d4d6930466160e350634cb9"},{"version":"6e66544c428f62a49d86b1d1f27ac16aae5f9175f150eefd891b10b9657a061a","signature":"88e37c714bb35035379b8bd3c106e04760caa815a09fd716636fb0eeeba0b33c"},"8b27322859387282d37adb4019620d0b928729e1f26d941147751d8e2ec7f824",{"version":"1464db80838c1a8a6bf2cf7c0472b08c5106052e08de977d952724b09cb874e7","signature":"ce3dd68db8ebef58a9bfef61ffc9366ab64eaac7d7c31c3fd4e87cc0088ec7c4"},"88a13699dd3a849f2077cb67abfffb7a254c77ab90844687e6017bf7e11f6438","2b3bfab7606e22f305cbe85f084d14a659a173ae38c5c1cd77b621d3db570405",{"version":"f4272be1c13f9fcec3147b88f423de92e2329268628242fcfc7576607da531aa","signature":"4d6e46097f7d85d47313ec2b26803b6953b5eaa41f8a04ec900a94f1a81a56b5"},{"version":"fd43685bc19eaf18c8fbd0a7439cdd0779766a4797dfc1a988fc9a698e10df44","signature":"db9a15a6d09242668afe9439df3d925651e9807463567e431b6defc6d748f139"},"7062ea6656ec0dbfe76abff8d9d3c6b65509fc3fd764b98b06bcdd97f3d1b047",{"version":"40813dcb69eb435756d545c61b30bd30dac45932585c0e1766f9b3a80e2b4b80","signature":"cee33bfbf9b7d865fae5994d17a926d998905e111bca63fbf83608452f633185"},{"version":"95376ab283602759c99a544fbae38ab89b3d2743e62dd5bac3c825c53ef4c8a9","signature":"af610c52bdfed5643127a3bc6bb2dec268ae6d21c1e6a0b86f6ce4779dd853f8"},"62d5e2db438a2bb718fa7ab1a7f225a0cbe85bc0bf2625f9f0a4b3183b49c3d4",{"version":"116754030001b14d636c61a0755163a57fd932a63ea92910c7edcc5f24375c89","signature":"aee79945eba0f93f292eb0881d6261b0f89e9b13b65ed0b270f1a7b119a89997"},"a3f6ec7d2ac2933f611c24ec2e85ccb5c12ead0d6662fbdd9f3db38d4c7f410f","3a355fb38d746de8f01cee4b4fbb9e9fcd1f2466161bc071a9c8ad7727f5edf2",{"version":"b8d8a2ea561c97be39a42db5f9c4930c0279879445ebff01e8f9dbf66b33911b","signature":"51b0b8b336830b28f2e881935ae29fb78a0011eb5f069af26a74e0a2988fb761"},"45085643263bcc103870ebd0183676a0018aca515e9e69a475d34bc4e85b0830","0adf819530aa5d53600fc3fa2f4b8d205171c02c53cd7fd1ca9e4e3e9097d8dc","e7a66b173fe02de0edaf023e6910b1c69cb210940ae6c8994d565b109598dba0","a37f7a05cf74ab1b9762b78bea9cc8226437c836577362e3b283f582b288d48a","49f9472dde6e2e5db6aff9e7bf2ef161d1bf98cb62d7b530ca002b2c7bf35edc","3986e13bca52fddc77a2710cb6f78b96aba628020b13f9fce581ad7742d3bff2","4675eb65cc2e9edb59c85d9c9d9427aacb101b8c728751c55df601197a562fc7","3a193a4803d7c772398cde1def166242af3410c3c543726d70037d4cf43fa889","f536b2ec53d43fa82b72c6871a1f182c78609912b5b9fdedd8ec5ec3d31b52db","d9f476970a025878ed76c53812a20d964e8907641e6edbaa0388897bcfb7eadb","b5db3cbf28caa68d9e35e56fbcd8b93e0fe15f6d128231f9b6cc57f58ad1a0d0","9ee44bd7c13df5ec8f17deb559a4cbac1803f9d54c94dba0571c8054fc354a87","7f013a7a9e3534dd37b43071fa0cdefaf1f29e52ac8a94396a623d634deb7db6",{"version":"c90982186fda667918dab68e62312f1ea7effcc9b32b0494690f18aca8fa70d5","signature":"9208f72dc36272749c88077ab3b09059c0c458949dac7e4163004f39e95cdabc"},"c6640526c82d82742c142723fdc141313d7495b6ea7db83cf8c249eaf7700b4e","df4261834998525bc7bd5b3c124d38515f2f02f78775af112edf69774abc544a","1897984c35f745db144b86ca4cefd7836af5c580da8d146ae1405672359982b9",{"version":"03a221ae30cffde1c1efbb63a1a698ee336b818dd75df606f1fac0255b145254","signature":"8d4bd4dae53d134cc822bd2805ae99a6126e630ab1ad0292f083ab8e156d6866"},{"version":"3f57a6bb2e181847b62722122d7e61b926f3480aa23259410904a6bad88302dd","signature":"e994bcc187fb3fa3acbc4015d2f7aa7c20a343908a8a33fd19429311d5432843"},"487a24e77f445ad876f616f09a959b02599817d2f7a6c6baa853a2e5f62f664e","5df25aa8b5cbf897175e5d0c22a8f58e848d37b2942a6d7bf3113bec26bffd53","8b8f94228e22aa82d0726a9a7d33c6f36dcaa359e7097d49079f057329529155","caf70a825e3ad9d00085fe8f78d32d2a630efa499fce692f81ad296dae4fd0e6","e2036fa1915b00d184491aa61d351f8dc4cc25e13c5dcb61275a6bbd96580041","b29a9d2d00977c14ffb83fc566906397109d9e4b5d051d6533a09b960646ee6e",{"version":"051f69724c0bb225c78858b0850ab8d3859ff8bea4dc3995cc6c15c8dca9e840","signature":"d720e6c2795c495a7dd70ab38c49526b6ef44f022202e5ce13b848f59b6ebff7"},{"version":"b6425f96b8190443d723c7bba3a8e57da96935e7dc74e17b2903088b2d7ecbed","signature":"dfedd859ccede9d9e55b127b5569e31bd00d914b18c1d6bedaa2518c26044866"},{"version":"62220f1a63680b78115e853f912295c2896ebf8f2afc09ffa602cd475afdac82","signature":"b049c82118ce5cf715658009e5486340b6177766acf0fe3606c5403a09b6529e"},{"version":"e2a4976f8f423b6f664a261798a11cbf2839bc2de6576c0433250a5f9db76926","signature":"00103ae8cd80f3aab8de0ccbc0fd90f06a49749925d818d53da3da70c958911a"},"c3dcf8b2c991f7adb7344aa0159d4129b264fad1b79711272804ab7cda17d842","834fabe6543e26e32407548963267f31e9c1c947e94326bb6ecbc61fb954bb0f",{"version":"5980d0b5bec8956947a2d9935b08385d3bd8728aef5cfa8379d7b36a322af16c","signature":"f5b66913fff0b28849ecd8669745817f07bb83553758708faa4637901ea79dc4"},"4853903533d328de3c6bf3e6728facb467b92677e790387a13476efdfabaebf6","4ffa4c413123ab9fce450e3037ccf6e1bbcdced482f12fbd8eac68709bb9953b","69b3d3b23649412363602fcc21843cbc856d00583b452bf9b6e803bdc77a2b84",{"version":"9a89d3b28543307bd13ab56eba18d2a8292794c6e3ac090f98c670029bec7436","signature":"3a0d9ab24b5fe2813990d4a70586001aa727b729410d411f67207a6fa9163b17"},"e49d1215538f51bbce3b480dcf369d7c9527303d5d985059df3db9ae73aba633","77be08b18a6466fae98e18acea30ab01efc76afaf53fe77d8a8a747ee779337c","672d61a909ff896bade9595918927154955e3cbf50e676c4d4df30cb7e470f37",{"version":"6ee4b629b54461a336925f859d7bf1259f4ec86aa8baad2a5276efe69b36ecd2","signature":"6716576d95bb66268cd3481e0d06b8133a0d5acf3393c96ae9f8eb8a07aa86a6"},"465f969a9b1ab10676223c18dc7d506f6ef3be63bd7a4ba9b085aee530b6282c",{"version":"6ee4b629b54461a336925f859d7bf1259f4ec86aa8baad2a5276efe69b36ecd2","signature":"6716576d95bb66268cd3481e0d06b8133a0d5acf3393c96ae9f8eb8a07aa86a6"},{"version":"013d54dad4917622afd222ccf9530d63a5874a6385f482b5b4afe3607b0ae279","signature":"4a6bf65706143a327eebb9b778a07adf2626aa208852c6282d77ca063ec065cb"},"964558aa33ce14d4547e1a2714370b9838cc30d067cb5b9385caf4f5d9e7c5d1","8aaac73bac1415dc2938d9744c7a2541e697e3c729e44344e89e668288a989b6","32bf6c45b59557ed08eedb85bcbb9217acce007d1b88eb5a4c5f9d159984db65","e42234af5867cac924e13459b3dc53937840e08f7e63764b1dbe7bed14f55814","c6c142e1a33065d2307d4a1d084011197dbf6c2898055255459d7daef0a6cb32","ea628a2736e081dc1a9a4528038f5ae402b147a490130d90d458d0783a5221be","285c96089ae4b6bf60f938bbd0f2f268199674df65698b0f815e785f8872bab3","d11dbad1c86581c6b7ada6500ce13a823b85aaf28802c86aaf9709ce46af37e4","a2c0ba66de4c7cca6f49996132a7d9ccd0436125ab445c8931da1e382848d71c","7d864d2d4021606ac0b424f67ff6ed1e24d5cfd0c0446a2b93b212a3bca93397","de3697b8e5255cd04449a376c6389450f949ccdf3133e78f3f2865e0e138ccf2","88eaffcbccaccfe5e0ca28e804eccf899e3167e55b4bd7d9610400c2ef9345cd","6701896deab6e4a552157fac599e28a32a39b2ffb1f37f87f421d44264589a80","934da826699a6806b2a593a0cc16b4ce23620e909aa22c7a5cd9acaf94de3896","4f60e363c73ec021f84f6d88eab43047ec544cec39911e4c3a1b0f423676e482","9c9b6c65d5fc2d52f73e87c3046d1355e3f05e07659b75edc0992aa95e71fe71","64e262b7b085152e898929aa7a803450cd16703660a9c5cd01a43c6ee042546e","4fabf42272e06465badb5f4ffa3d2067a8b2f7dc33b78fb0b3e7f42f4695988f","6cec859e5adf537ab411c26e21e5383a77a2379c024ef36ac14e7d2a6a32ea78","d22b63f3529238106eae787d97abd7e55f991722d60806cc5bdcc93b5749a217","93bc02569e2ff6f236d7c82dc44672fbeb7c6d990983992ba72a5ff80a0f3099","8fcd40b95e20807e4c0750cf794c42d10dbad9638304361f8eb26812541dccca","f76ae8ce733c0b1ac6b4db3fc601eabf27d6a740f06542acb0975f5b645198c4","9741a306db696db40ae0c6ad233162decef1a85d22ec343848755f63b241c48c","0791aee4086e23064d1c75f88ecc99d90048794cacfcb6995ab4a8ffb03229f0","e183fb51594836275e8209dbf3103f41d752c67c351cc648e8aeb31ffd52ced9","ad93099330dd539219c3b6aa2442722b84b8d1906a8b152de7fc9cd762f4b63d","9cd1fbeb0b5019e08cd7cfa1186d5c7aa387bb8eadb69e6edc6006964f8a23dd","58b6f534d52b5abab5a7dcb0c1897716d4dfdfc22b1b39e6921f29b3b7f38e03","8c5ad1fa9d70b55df375c004574ba9177bd7dae9313a96641beb762ad4272f34","52f01900b2a37d2416baca07ff10d7297b05cf753ecef22f9d4880a1646786cf",{"version":"04178fc0cf6b49e486741a69d556dad59a150e35f821e660b896abdec1e38944","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},"cd583cd6119b73e6e55a02a0d3ad60d2ac9ecb477a6df9fd223dedb34a9e1c9e","07bb227570c6c0045b2685d9bfe9ba78f0cdef1a486c284b78f5be0deef8f677","e41f5c7900600af274a728032ea2c15202b29871bc18b9c666a367baa95bfd23",{"version":"6be19bccd03455ea619ebab3019c348b8330b61238821234dd22a5f4a9ecede7","signature":"852dffdac07851cfb5c0854108f7c1feee238ef171cd0960ae26faccb8cbda04"},{"version":"e1eb1c7d0de10bbaf38adf7102b8f974ab5fafed3e41bd371ac15f3e24f9bd9a","signature":"d043ed0f85a192384e54867e9be4bd73b4751f7481418d2c098d3d9063a227da"},{"version":"5a37a6c6a71c401aeeacea536d264220e4977d9cb8fbeb1123094320c9ac7ca7","signature":"1fa11e6b5bb71a46d5ced0d267425ed7a31eddcce86b9d02f26542b50c4953af"},{"version":"47686d106e68bc27ee0d3dc7e073a44fc8792eade22f31752b8db56c0ea4d55d","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},"5bf6e294c29ee115db7bd3e110d750548d547172a303124b41b55fc5d4cfdc1c",{"version":"715056447818abea4c683e48602c88afd2564c72de74f68356dad89d8ef39c0b","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},"ce50b9c053d8820e28ab8945064042a6c8a08b39bf34b684cbdc6177ca7193c1","fbfc5271da0c7b350f386043c7f8533d4dac9a4d6bf3d033f4f2e26ec2b967ed","e8b772201097b27600185987db45e1eed7c7c291bb902a6cae76c87e5ebf5b9e",{"version":"e68c4bc736e1bab235f253cf5f6ca304f5982fa839d1d768014c3d29c4f6db9e","signature":"a283527be6c5badef4c05b14b51ed2dd01fb6b1ca5e9711dddd1cf79f56727f6"},"49763cafa161100bed0f4c74e822517242979f52d50fbc05b7f1758a0ced0dd4",{"version":"b166ca5e6afe702a8b12b8ca853e3d89bfe5117394724f8c16511468ff7f694f","signature":"6b07eeaa1d9309d5156a9bde616b416db3624106e92856ac878b827e4dcb2e7b"},{"version":"ecba61d66cc848853b13af94a1304d5ad72b6b69994dd51ab7d27b77a631e321","signature":"f6b7ed6e72beeaee38d802539bc36942b285e75e62b4bff480c0df3fcb5936ba"},{"version":"89c419c1db7452834c7e23f48a50d72449c9863f9d201d425a9eb6db2f4875ec","signature":"efdc985497f0b6a99f9d69348cacb9fa36524801504f5b859d90d5569b35565d"},"a1e6f1bffdbd92e141063f827f4241d89ecce9238ad17a2f9a0f6d7afabf0175",{"version":"751764bb94219b4ce8f5475dc35d3de2e432fea01a0c9610cd7f69ad05e398c6","impliedFormat":1}],"root":[[436,438],487,582,[594,598],[600,687],[689,701],[703,708],[715,717],[722,864],[867,879]],"options":{"allowJs":true,"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"target":9},"referencedMap":[[731,1],[732,2],[734,3],[735,4],[736,5],[737,5],[738,5],[739,5],[740,5],[724,6],[744,7],[745,8],[746,9],[747,5],[751,10],[754,11],[755,8],[761,12],[762,5],[763,8],[764,2],[765,8],[782,13],[779,14],[784,15],[785,16],[788,17],[787,18],[789,19],[790,20],[792,21],[791,16],[794,21],[795,22],[793,23],[799,24],[798,25],[802,26],[803,16],[773,27],[606,28],[776,29],[809,30],[806,31],[810,16],[811,16],[816,32],[819,33],[823,34],[821,35],[824,36],[599,37],[595,37],[609,38],[610,38],[611,38],[612,38],[613,38],[608,38],[614,38],[615,38],[616,38],[617,39],[618,40],[620,41],[619,39],[622,42],[621,39],[623,38],[624,38],[626,43],[627,38],[628,38],[629,38],[630,38],[631,38],[632,38],[633,38],[635,38],[636,38],[634,38],[638,44],[637,38],[639,38],[640,38],[641,38],[643,38],[642,38],[644,38],[645,38],[647,45],[646,38],[648,38],[649,38],[651,38],[652,38],[650,38],[653,38],[654,38],[655,38],[656,38],[657,38],[658,38],[659,38],[660,38],[663,46],[664,47],[665,38],[666,38],[667,38],[661,38],[668,38],[670,48],[669,38],[671,48],[672,38],[826,49],[827,50],[828,49],[673,51],[825,52],[833,53],[834,53],[835,53],[836,53],[837,53],[838,53],[832,53],[839,53],[840,53],[841,53],[842,53],[843,53],[844,54],[845,53],[846,53],[847,53],[848,53],[849,53],[850,53],[851,53],[852,53],[853,53],[854,53],[855,53],[856,53],[857,53],[858,53],[859,53],[860,53],[861,53],[830,55],[862,53],[831,56],[863,53],[864,53],[868,57],[869,57],[870,53],[871,53],[872,53],[873,53],[874,53],[875,53],[708,58],[715,59],[598,60],[716,61],[600,62],[601,63],[717,64],[602,6],[722,65],[723,66],[728,67],[603,68],[605,69],[729,66],[685,70],[684,71],[867,72],[829,73],[683,74],[675,75],[676,76],[686,77],[687,77],[689,78],[690,77],[693,79],[691,77],[692,77],[876,6],[677,6],[733,80],[730,71],[877,58],[753,81],[878,82],[743,71],[757,6],[879,83],[727,84],[760,85],[680,86],[756,71],[679,71],[681,87],[741,71],[759,88],[725,58],[750,89],[742,71],[682,90],[726,6],[674,91],[758,71],[752,6],[767,64],[781,6],[780,64],[808,89],[769,92],[813,93],[812,71],[783,71],[775,94],[804,64],[797,95],[820,96],[778,97],[796,98],[800,71],[805,64],[766,6],[777,71],[770,6],[768,98],[774,71],[807,89],[786,6],[801,98],[817,89],[771,99],[814,100],[815,100],[818,101],[772,64],[822,64],[749,102],[748,71],[678,71],[604,6],[694,103],[436,6],[688,6],[865,6],[866,6],[702,6],[695,104],[596,6],[597,6],[697,105],[696,106],[437,107],[698,108],[700,109],[699,6],[701,110],[625,6],[703,111],[705,112],[704,61],[706,113],[607,44],[662,6],[707,6],[594,106],[438,114],[487,115],[582,116],[236,6],[504,6],[506,6],[507,117],[491,6],[498,118],[496,6],[880,6],[130,119],[131,119],[132,120],[91,121],[133,122],[134,123],[135,124],[86,6],[89,125],[87,6],[88,6],[136,126],[137,127],[138,128],[139,129],[140,130],[141,131],[142,131],[144,132],[143,133],[145,134],[146,135],[147,136],[129,137],[90,6],[148,138],[149,139],[150,140],[183,141],[151,142],[152,143],[153,144],[154,145],[155,146],[156,147],[157,148],[158,149],[159,150],[160,151],[161,151],[162,152],[163,6],[164,6],[165,153],[167,154],[166,155],[168,156],[169,157],[170,158],[171,159],[172,160],[173,161],[174,162],[175,163],[176,164],[177,165],[178,166],[179,167],[180,168],[181,169],[182,170],[187,171],[334,6],[188,172],[184,6],[186,173],[333,71],[253,71],[499,174],[492,6],[554,175],[553,176],[565,175],[556,177],[558,178],[577,178],[557,179],[489,180],[488,6],[494,181],[495,182],[574,183],[550,184],[552,185],[573,6],[571,184],[551,6],[493,182],[549,6],[497,6],[185,6],[590,186],[592,187],[591,188],[589,189],[588,6],[711,190],[712,190],[710,191],[541,6],[543,192],[542,6],[445,193],[447,194],[452,195],[454,196],[204,197],[240,198],[391,199],[235,200],[223,6],[219,6],[202,6],[381,201],[403,202],[203,6],[362,203],[244,204],[245,205],[332,206],[378,207],[347,208],[385,209],[386,210],[384,211],[383,6],[382,212],[242,213],[205,214],[280,6],[281,215],[222,6],[224,216],[206,217],[264,216],[351,216],[84,216],[238,218],[237,6],[390,219],[418,6],[214,6],[308,220],[309,221],[303,71],[471,6],[311,6],[312,222],[304,223],[477,224],[475,225],[470,6],[377,226],[376,6],[469,227],[305,71],[343,228],[341,229],[472,6],[476,6],[474,230],[473,6],[342,231],[464,232],[467,233],[271,234],[270,235],[269,236],[480,71],[268,237],[283,6],[423,6],[713,238],[709,6],[426,6],[718,239],[719,240],[425,71],[427,241],[80,6],[387,242],[388,243],[389,244],[226,6],[213,245],[189,6],[324,71],[82,246],[323,247],[322,248],[313,6],[314,6],[321,6],[316,6],[319,249],[315,6],[317,250],[320,251],[318,250],[201,6],[217,6],[218,216],[254,252],[255,253],[252,254],[250,255],[251,256],[247,6],[330,222],[349,222],[446,257],[455,258],[459,259],[394,260],[393,6],[79,6],[428,261],[191,262],[306,263],[307,264],[298,265],[288,6],[329,266],[289,267],[331,268],[326,269],[325,6],[327,6],[340,270],[395,271],[396,272],[291,273],[295,274],[286,275],[373,276],[190,277],[263,278],[363,279],[216,280],[419,281],[81,200],[248,6],[256,282],[413,283],[246,6],[412,284],[85,6],[410,285],[225,6],[282,286],[406,6],[207,6],[208,6],[259,287],[221,6],[400,288],[294,289],[392,290],[293,6],[258,6],[249,6],[364,291],[365,292],[220,6],[367,293],[369,294],[368,295],[228,6],[257,280],[371,296],[411,297],[414,298],[192,6],[195,6],[193,6],[197,6],[194,6],[196,6],[198,299],[200,6],[355,300],[354,6],[360,301],[356,302],[359,303],[358,303],[361,301],[357,302],[720,304],[215,305],[350,306],[399,307],[430,6],[432,308],[434,309],[290,6],[433,310],[397,271],[429,311],[310,271],[199,6],[292,312],[210,313],[211,314],[212,315],[279,316],[372,316],[265,316],[352,317],[266,317],[243,318],[209,6],[262,319],[261,320],[260,321],[353,322],[398,323],[302,324],[337,325],[301,326],[335,327],[336,327],[380,328],[379,329],[375,330],[346,331],[348,332],[345,333],[370,334],[339,6],[451,6],[338,335],[374,6],[401,336],[287,242],[285,337],[284,338],[421,339],[424,6],[420,340],[402,340],[449,6],[448,6],[450,6],[422,6],[404,341],[300,71],[444,6],[344,342],[241,6],[230,343],[296,6],[457,71],[463,344],[278,71],[461,222],[277,345],[416,346],[276,344],[83,6],[465,347],[274,71],[275,71],[267,6],[229,6],[273,348],[272,349],[227,350],[297,150],[405,150],[366,6],[408,351],[407,6],[453,6],[328,352],[299,71],[417,353],[439,71],[442,354],[443,355],[440,71],[441,6],[239,356],[234,357],[233,6],[232,358],[231,6],[415,359],[456,360],[458,361],[460,362],[714,363],[462,364],[435,365],[486,366],[466,366],[485,367],[468,368],[478,369],[721,370],[479,371],[481,372],[431,373],[484,245],[483,6],[482,374],[546,375],[509,376],[510,377],[513,378],[505,379],[512,380],[508,381],[503,6],[514,382],[515,383],[409,384],[521,6],[566,6],[490,6],[77,6],[78,6],[13,6],[14,6],[16,6],[15,6],[2,6],[17,6],[18,6],[19,6],[20,6],[21,6],[22,6],[23,6],[24,6],[3,6],[25,6],[26,6],[4,6],[27,6],[31,6],[28,6],[29,6],[30,6],[32,6],[33,6],[34,6],[5,6],[35,6],[36,6],[37,6],[38,6],[6,6],[42,6],[39,6],[40,6],[41,6],[43,6],[7,6],[44,6],[49,6],[50,6],[45,6],[46,6],[47,6],[48,6],[8,6],[54,6],[51,6],[52,6],[53,6],[55,6],[9,6],[56,6],[57,6],[58,6],[60,6],[59,6],[61,6],[62,6],[10,6],[63,6],[64,6],[65,6],[11,6],[66,6],[67,6],[68,6],[69,6],[70,6],[1,6],[71,6],[72,6],[12,6],[75,6],[74,6],[73,6],[76,6],[107,385],[117,386],[106,385],[127,387],[98,388],[97,389],[126,374],[120,390],[125,391],[100,392],[114,393],[99,394],[123,395],[95,396],[94,374],[124,397],[96,398],[101,399],[102,6],[105,399],[92,6],[128,400],[118,401],[109,402],[110,403],[112,404],[108,405],[111,406],[121,374],[103,407],[104,408],[113,409],[93,410],[116,401],[115,399],[119,6],[122,411],[576,412],[581,413],[575,414],[567,415],[563,416],[559,417],[572,6],[560,177],[586,418],[583,419],[579,420],[578,421],[561,422],[585,423],[555,6],[562,424],[580,425],[593,426],[587,427],[569,428],[570,429],[568,6],[537,430],[535,431],[536,432],[524,433],[525,431],[532,434],[523,435],[528,436],[538,6],[529,437],[534,438],[540,439],[539,440],[522,441],[530,442],[531,443],[526,444],[533,430],[527,445],[501,446],[548,447],[517,448],[502,446],[500,6],[516,449],[547,6],[545,6],[518,6],[544,450],[511,451],[520,6],[519,452],[584,6],[564,6]],"affectedFilesPendingEmit":[731,732,734,735,736,737,738,739,740,724,744,745,746,747,751,754,755,761,762,763,764,765,782,779,784,785,788,787,789,790,792,791,794,795,793,799,798,802,803,773,606,776,809,806,810,811,816,819,823,821,824,599,595,609,610,611,612,613,608,614,615,616,617,618,620,619,622,621,623,624,626,627,628,629,630,631,632,633,635,636,634,638,637,639,640,641,643,642,644,645,647,646,648,649,651,652,650,653,654,655,656,657,658,659,660,663,664,665,666,667,661,668,670,669,671,672,826,827,828,673,825,833,834,835,836,837,838,832,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,830,862,831,863,864,868,869,870,871,872,873,874,875,708,715,598,716,600,601,717,602,722,723,728,603,605,729,685,684,867,829,683,675,676,686,687,689,690,693,691,692,876,677,733,730,877,753,878,743,757,879,727,760,680,756,679,681,741,759,725,750,742,682,726,674,758,752,767,781,780,808,769,813,812,783,775,804,797,820,778,796,800,805,766,777,770,768,774,807,786,801,817,771,814,815,818,772,822,749,748,678,604,694,436,695,596,597,697,696,437,698,700,699,701,625,703,705,704,706,607,662,707,594,438,582],"version":"5.7.3"} \ No newline at end of file diff --git a/demo/kit/env.py b/demo/kit/env.py index cde149c2..299e9e07 100644 --- a/demo/kit/env.py +++ b/demo/kit/env.py @@ -8,12 +8,10 @@ Locally, it points agentfox at a dedicated SQLite file next to the calling demo (`/demo.db`), never at the repo's own `agentfox.db` (used by the dashboard and the rest of the dev environment), and never at the other demo's file. The path is -overridable: set `AGENTFOX_DATABASE_URL` yourself before running a script (the -deprecated `NOMETRIA_DATABASE_URL` is still honoured too). +overridable: set `AGENTFOX_DATABASE_URL` yourself before running a script. **Deployed (Vercel) case**: the project's Postgres comes from Vercel's native Neon -integration, connected with a custom env-var prefix (`AGENTFOX_DATABASE`, or -`NOMETRIA_DATABASE` before the rename). Neon's own base variable names are +integration, connected with the custom env-var prefix `AGENTFOX_DATABASE`. Neon's own base variable names are `POSTGRES_URL`/`DATABASE_URL`, so the integration produces `AGENTFOX_DATABASE_POSTGRES_URL` (prefix + Neon's name), not `AGENTFOX_DATABASE_URL` directly — only the doubled-up names exist. Rather than hand-copy the secret's raw @@ -24,8 +22,7 @@ `postgresql://` scheme (psycopg2's default dialect), but the deployed demo installs `psycopg` (v3) per its `requirements.txt` — SQLAlchemy needs `postgresql+psycopg://` to pick that driver. Neither Neon variable is ever set locally, so this branch is a -no-op there. The `NOMETRIA_DATABASE_*` names are read last, until the integration's -prefix is changed (docs/deployment/vercel-env-rename.md). +no-op there. """ from __future__ import annotations @@ -33,17 +30,11 @@ import os from pathlib import Path -#: Either name set by hand means "use this database", and nothing here touches it. -#: (`NOMETRIA_DATABASE_URL` is the deprecated pre-rename name.) -_EXPLICIT = ("AGENTFOX_DATABASE_URL", "NOMETRIA_DATABASE_URL") +#: Set by hand, it means "use this database", and nothing here touches it. +_EXPLICIT = ("AGENTFOX_DATABASE_URL",) -#: What a Neon integration generates, under the current prefix first. -_NEON = ( - "AGENTFOX_DATABASE_POSTGRES_URL", - "AGENTFOX_DATABASE_DATABASE_URL", - "NOMETRIA_DATABASE_POSTGRES_URL", - "NOMETRIA_DATABASE_DATABASE_URL", -) +#: What a Neon integration generates under the `AGENTFOX_DATABASE` prefix. +_NEON = ("AGENTFOX_DATABASE_POSTGRES_URL", "AGENTFOX_DATABASE_DATABASE_URL") def _neon_database_url() -> str | None: diff --git a/demo/redteam-live-lang/agent.py b/demo/redteam-live-lang/agent.py index dd80bbfd..1568b053 100644 --- a/demo/redteam-live-lang/agent.py +++ b/demo/redteam-live-lang/agent.py @@ -102,7 +102,7 @@ def _resolve_llm() -> Any: verified under) never even attempts an import of a provider package, let alone a network call — mirrors `crew.py`'s `_resolve_llm()` fail-fast contract exactly. """ - model_override = os.environ.get("AGENTFOX_DEMO_MODEL") or os.environ.get("NOMETRIA_DEMO_MODEL") + model_override = os.environ.get("AGENTFOX_DEMO_MODEL") if os.environ.get("ANTHROPIC_API_KEY"): from langchain_anthropic import ChatAnthropic diff --git a/demo/redteam-live-lang/kit/env.py b/demo/redteam-live-lang/kit/env.py index cde149c2..299e9e07 100644 --- a/demo/redteam-live-lang/kit/env.py +++ b/demo/redteam-live-lang/kit/env.py @@ -8,12 +8,10 @@ Locally, it points agentfox at a dedicated SQLite file next to the calling demo (`/demo.db`), never at the repo's own `agentfox.db` (used by the dashboard and the rest of the dev environment), and never at the other demo's file. The path is -overridable: set `AGENTFOX_DATABASE_URL` yourself before running a script (the -deprecated `NOMETRIA_DATABASE_URL` is still honoured too). +overridable: set `AGENTFOX_DATABASE_URL` yourself before running a script. **Deployed (Vercel) case**: the project's Postgres comes from Vercel's native Neon -integration, connected with a custom env-var prefix (`AGENTFOX_DATABASE`, or -`NOMETRIA_DATABASE` before the rename). Neon's own base variable names are +integration, connected with the custom env-var prefix `AGENTFOX_DATABASE`. Neon's own base variable names are `POSTGRES_URL`/`DATABASE_URL`, so the integration produces `AGENTFOX_DATABASE_POSTGRES_URL` (prefix + Neon's name), not `AGENTFOX_DATABASE_URL` directly — only the doubled-up names exist. Rather than hand-copy the secret's raw @@ -24,8 +22,7 @@ `postgresql://` scheme (psycopg2's default dialect), but the deployed demo installs `psycopg` (v3) per its `requirements.txt` — SQLAlchemy needs `postgresql+psycopg://` to pick that driver. Neither Neon variable is ever set locally, so this branch is a -no-op there. The `NOMETRIA_DATABASE_*` names are read last, until the integration's -prefix is changed (docs/deployment/vercel-env-rename.md). +no-op there. """ from __future__ import annotations @@ -33,17 +30,11 @@ import os from pathlib import Path -#: Either name set by hand means "use this database", and nothing here touches it. -#: (`NOMETRIA_DATABASE_URL` is the deprecated pre-rename name.) -_EXPLICIT = ("AGENTFOX_DATABASE_URL", "NOMETRIA_DATABASE_URL") +#: Set by hand, it means "use this database", and nothing here touches it. +_EXPLICIT = ("AGENTFOX_DATABASE_URL",) -#: What a Neon integration generates, under the current prefix first. -_NEON = ( - "AGENTFOX_DATABASE_POSTGRES_URL", - "AGENTFOX_DATABASE_DATABASE_URL", - "NOMETRIA_DATABASE_POSTGRES_URL", - "NOMETRIA_DATABASE_DATABASE_URL", -) +#: What a Neon integration generates under the `AGENTFOX_DATABASE` prefix. +_NEON = ("AGENTFOX_DATABASE_POSTGRES_URL", "AGENTFOX_DATABASE_DATABASE_URL") def _neon_database_url() -> str | None: diff --git a/demo/redteam-live-lang/vendor/agentfox-0.3.1-py3-none-any.whl b/demo/redteam-live-lang/vendor/agentfox-0.3.1-py3-none-any.whl index 2bf4c1ed..a0c5e866 100644 Binary files a/demo/redteam-live-lang/vendor/agentfox-0.3.1-py3-none-any.whl and b/demo/redteam-live-lang/vendor/agentfox-0.3.1-py3-none-any.whl differ diff --git a/demo/redteam-live/crew.py b/demo/redteam-live/crew.py index 4f594cae..79242e7f 100644 --- a/demo/redteam-live/crew.py +++ b/demo/redteam-live/crew.py @@ -67,7 +67,7 @@ def _resolve_llm() -> LLM: # (`autoguard._patch_litellm`), so pinning it here is what guarantees this # crew's model calls are actually governed, regardless of which provider you # point it at. - model_override = os.environ.get("AGENTFOX_DEMO_MODEL") or os.environ.get("NOMETRIA_DEMO_MODEL") + model_override = os.environ.get("AGENTFOX_DEMO_MODEL") if os.environ.get("ANTHROPIC_API_KEY"): return LLM(model=model_override or "anthropic/claude-haiku-4-5-20251001", is_litellm=True) if os.environ.get("OPENAI_API_KEY"): diff --git a/deploy/README-dashboard.md b/deploy/README-dashboard.md index 12e9c6de..0d44caf1 100644 --- a/deploy/README-dashboard.md +++ b/deploy/README-dashboard.md @@ -23,11 +23,8 @@ ungoverned agent code, and issues them an API token their agents authenticate wi Two values must be byte-identical on the API (Vercel) and the UI (Render or Fly), and one exists only on the API. -Every variable here is read as `AGENTFOX_*`. The pre-rename `NOMETRIA_*` names are -still accepted by both services as a deprecated fallback (each logs a warning naming -the old variables it used), so an existing deployment keeps working until it is -renamed; if both are set, the `AGENTFOX_*` value wins. Renaming the hosted -deployment: [`docs/deployment/vercel-env-rename.md`](../docs/deployment/vercel-env-rename.md). +Every variable here is read as `AGENTFOX_*`. Changing the encryption or audit signing +key: [`docs/deployment/key-rotation.md`](../docs/deployment/key-rotation.md). | Value | Where | What breaks without it | |---|---|---| diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index fed2dba3..bde66485 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -33,9 +33,7 @@ # then open http://localhost:3000/login → "Self-hosted? Sign in with an API token" and # paste the token. For demo data instead: `... exec gateway agentfox admin seed`. # -# Settings are read as AGENTFOX_*. The pre-rename NOMETRIA_* names are still read -# as a deprecated fallback, with a startup warning naming each one; rename them in -# your .env, since a later release stops reading them. +# Settings are read as AGENTFOX_*. # # control plane http://localhost:3000 # API + gateway http://localhost:8080 diff --git a/deploy/fly.dashboard.toml b/deploy/fly.dashboard.toml index 1dc27b0f..1da7aef6 100644 --- a/deploy/fly.dashboard.toml +++ b/deploy/fly.dashboard.toml @@ -9,8 +9,7 @@ # from the repo root with `--build-context` support, or from ./dashboard with the # Dockerfile path adjusted. Runbook: deploy/README-dashboard.md # -# Settings are AGENTFOX_*. The pre-rename NOMETRIA_* names are still read as a -# deprecated fallback, with a warning; rename any you set before the rename. +# Settings are AGENTFOX_*. app = "nometria-dashboard" primary_region = "iad" diff --git a/deploy/render.yaml b/deploy/render.yaml index 4a6a2c5e..a0e78e29 100644 --- a/deploy/render.yaml +++ b/deploy/render.yaml @@ -13,11 +13,8 @@ # https:///api/auth/github/callback, and ADD https:// # to the API's AGENTFOX_PLAYGROUND_CORS_ORIGIN, which is comma-separated. Replacing the # value instead of appending fixes this host's playground by breaking the other one's. -# Settings are AGENTFOX_*. A service created from an older copy of this file has -# NOMETRIA_* variables; the dashboard still reads those as a deprecated fallback -# (logging a warning per name). Copy each value to its AGENTFOX_* name in the Render -# dashboard and delete the old one: a blueprint sync does not do it for you, since -# secrets here are `sync: false`. docs/deployment/vercel-env-rename.md has the order. +# Settings are AGENTFOX_*. Secrets here are `sync: false`: set them in the Render +# dashboard, a blueprint sync does not. # Full runbook: deploy/README-dashboard.md services: - type: web diff --git a/docs/README.md b/docs/README.md index 34c1686a..edee91b7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -88,7 +88,6 @@ a quoted figure drifts from its source. |---|---|---| | [systemd.md](deployment/systemd.md) | Run the Python gateway as a reboot-persistent systemd user service, with separate database, evidence and signing-key storage. | Self-hosters on Linux. | | [key-rotation.md](deployment/key-rotation.md) | Rotate the token encryption key and the audit signing key: the `_PREVIOUS` settings, `agentfox admin keys rotate`, the automatic job and how to confirm nothing still needs the old key. | Anyone running a deployment. | -| [vercel-env-rename.md](deployment/vercel-env-rename.md) | The exact procedure for moving the hosted Vercel projects from `NOMETRIA_*` secrets to fresh `AGENTFOX_*` ones through key rotation, and when the legacy fallback can be removed. | The hosted deployment's owner. | | [../deploy/README-dashboard.md](../deploy/README-dashboard.md) | Deploying the hosted dashboard (Render, Fly, Vercel), its shared secrets and the database migration state. | Anyone running the dashboard. | ## Elsewhere in the repo diff --git a/docs/adr/0001-repository-structure.md b/docs/adr/0001-repository-structure.md index e16c236f..1d9021d9 100644 --- a/docs/adr/0001-repository-structure.md +++ b/docs/adr/0001-repository-structure.md @@ -44,9 +44,9 @@ how other projects solved the same problems. `deploy/` except where a platform reads a fixed path (`render.yaml` and `api/` at the root). 7. **Deferred until the restructure is done:** new harnesses (Codex first, then Cursor); building wheels at deploy time instead of committing them to `api/vendor/` and the demo's - `vendor/`; the rest of the Nometria → AgentFox rename (the `NOMETRIA_*` environment fallback, - the `nometria` console script and the `x-nometria-*` headers), because production - environments still set them. + `vendor/`; the rest of the product rename (the pre-rename environment-variable fallback, + console script and request headers), because production environments still set them. + The rename has since been finished: those fallbacks are gone. ## Consequences diff --git a/docs/architecture/api-spec.md b/docs/architecture/api-spec.md index 682c7699..ebaeacee 100644 --- a/docs/architecture/api-spec.md +++ b/docs/architecture/api-spec.md @@ -12,7 +12,7 @@ Base: `http://localhost:8080` (self-host default). All control-plane routes unde |---|---|---|---| | **Agent key** (`nom_agt_…`) | `Authorization: Bearer ` | Agents calling the inline gateway | Bound to one `Identity`; binds the tenant. Optional: unauthenticated inline traffic is served in the default org and recorded as shadow traffic | | **API token** (`nom_api_…`) | `Authorization: Bearer ` | CLI, CI, scripts, integrations | Bound to a `User` + role. Mint with `agentfox admin auth issue` or `POST /api/tokens`; shown once | -| **Session cookie** | `nometria_session` | Dashboard browser sessions | Holds an API token the dashboard forwards as `Bearer` | +| **Session cookie** | `agentfox_session` | Dashboard browser sessions | Holds an API token the dashboard forwards as `Bearer` | | **Development header** | `X-AgentFox-User: ` | Local development and tests | Accepted only when `AGENTFOX_AUTH_MODE=development`, or `auto` with a dev/test/local environment. `agentfox admin auth status` reports it | | **Service secret** | `X-AgentFox-Service-Secret` | Dashboard OAuth provisioning | `POST /api/auth/github/provision` only | | **Cron secret** | `Authorization: ` | Scheduler | `GET` or `POST /api/internal/jobs/run` only; `AGENTFOX_CRON_SECRET` or `CRON_SECRET`; 503 if neither is set | diff --git a/docs/architecture/low-level-design.md b/docs/architecture/low-level-design.md index e1684e0b..8d578449 100644 --- a/docs/architecture/low-level-design.md +++ b/docs/architecture/low-level-design.md @@ -255,7 +255,7 @@ raises on anything a policy would block. `off()` reverses every patch. ## 8. LangGraph integration — `src/agentfox/frameworks/langgraph.py` LangGraph is an optional import; trace identity lives **in graph state** -(`STATE_KEY = "__nometria__"`) so it survives checkpointing, resumption and time-travel; +(`STATE_KEY = "__agentfox__"`) so it survives checkpointing, resumption and time-travel; escalation maps to LangGraph's own `interrupt()`; enforcement failures always raise. `class AgentFoxGuard`, constructed with `agent`, `environment`, `intent`, an optional shared diff --git a/docs/deployment/systemd.md b/docs/deployment/systemd.md index eefa3f62..fea4d495 100644 --- a/docs/deployment/systemd.md +++ b/docs/deployment/systemd.md @@ -31,7 +31,7 @@ EOF `AGENTFOX_ENVIRONMENT=production` makes `/api` require an API token. Outside development the gateway refuses to start while `AGENTFOX_SERVICE_AUTH_SECRET` (which authenticates the dashboard's sign-in call; give a dashboard the same value) or `AGENTFOX_AUDIT_SIGNING_KEY` is unset or still a published default. Without the environment line the gateway runs in development, where an unauthenticated request acts as whichever user it names. -If you use PostgreSQL, add `AGENTFOX_DATABASE_URL=...` to that file. Settings are read as `AGENTFOX_*`; the pre-rename `NOMETRIA_*` names are still read as a deprecated fallback (with a startup warning naming each one, and listed by `agentfox doctor`), so an existing environment file keeps working until you rename it; when both are set the `AGENTFOX_*` value wins. +If you use PostgreSQL, add `AGENTFOX_DATABASE_URL=...` to that file. Settings are read as `AGENTFOX_*`. ## Add the user units diff --git a/docs/deployment/vercel-env-rename.md b/docs/deployment/vercel-env-rename.md deleted file mode 100644 index 60e5bdab..00000000 --- a/docs/deployment/vercel-env-rename.md +++ /dev/null @@ -1,300 +0,0 @@ -# Moving production from `NOMETRIA_*` to `AGENTFOX_*` - -The hosted deployment still holds its secrets only under the pre-rename `NOMETRIA_*` -names. They are Sensitive variables in Vercel, so nobody can read or rename them. This -procedure replaces them with **fresh** values under the `AGENTFOX_*` names. The data -the old keys protect moves to the new keys while both are set. Then the old names are -deleted, and rename stage B (`claude/agentfox-rename-final`) can merge. - -What makes this work: - -- The release on `claude/key-rotation` reads `AGENTFOX_*` first and `NOMETRIA_*` second. - It also contains a one-time bridge in `core/config.py`. When `AGENTFOX_TOKEN_ENCRYPTION_KEY` - and `NOMETRIA_TOKEN_ENCRYPTION_KEY` are both set and differ, the `NOMETRIA_` value - becomes the *previous* encryption key. `AUDIT_SIGNING_KEY` works the same way. Old - data stays readable, and new data uses the new key. -- The job runner then rotates by itself. It re-encrypts every stored secret and re-signs - the audit checkpoints with the new keys - ([key-rotation.md](key-rotation.md) explains how). -- `/api/version` reports `key_rotation` states (never keys), so you can confirm from - outside that nothing still needs an old key before you delete it. -- `SERVICE_AUTH_SECRET` and `CRON_SECRET` protect no stored data. The new values simply - take precedence. - -Projects involved: - -| Project | What | URL | -|---|---|---| -| `guardrails-api` (Vercel, Root Directory `api/`) | the gateway | `https://guardrails-api.vercel.app` | -| `guardrails-dashboard` (Vercel) | the dashboard | `https://guardrails-nometria.vercel.app` | -| `guardrails-redteam-lang` (Vercel, Root Directory `demo/redteam-live-lang/`) | the red-team demo, with its own database | | -| GitHub `architsharm/agentfox` | `.github/workflows/monitors.yml` calls the job runner every 30 minutes | | - -Do the steps in order. Nothing is deleted until step 8, and up to then a rollback means -removing the `AGENTFOX_*` variable you added and redeploying. - -## 1. Generate the values - -```bash -TOKEN_KEY=$(openssl rand -base64 32 | tr '+/' '-_') # AGENTFOX_TOKEN_ENCRYPTION_KEY -AUDIT_KEY=$(openssl rand -hex 32) # AGENTFOX_AUDIT_SIGNING_KEY -SERVICE_SECRET=$(openssl rand -hex 32) # AGENTFOX_SERVICE_AUTH_SECRET -CRON_KEY=$(openssl rand -hex 32) # AGENTFOX_CRON_SECRET -``` - -Three of these are `openssl rand -hex 32`. The encryption key is the exception: it must -be a Fernet key (32 bytes, url-safe base64, 44 characters ending in `=`). A 64-character -hex string is rejected by `cryptography`, and every encrypt and decrypt would fail. If -that happens, `/api/version` shows `"token_encryption": "misconfigured"` and -`agentfox doctor` names the variable. Keep all four values in your password manager: -the signing key in particular is needed to verify evidence packages later. - -Generate a **separate** set for the red-team demo in step 4. It has its own database and -must not share keys with the gateway. - -## 2. guardrails-api - -Vercel → `guardrails-api` → Settings → Environment Variables. Add each variable below -for **Production**, and also for **Preview** if the old `NOMETRIA_` twin is set for -Preview. Mark the secrets Sensitive. Leave every `NOMETRIA_*` variable in place. - -| Variable | Value | Sensitive | -|---|---|---| -| `AGENTFOX_TOKEN_ENCRYPTION_KEY` | `$TOKEN_KEY` | yes | -| `AGENTFOX_AUDIT_SIGNING_KEY` | `$AUDIT_KEY` | yes | -| `AGENTFOX_SERVICE_AUTH_SECRET` | `$SERVICE_SECRET` (the same value on `guardrails-dashboard`, step 4) | yes | -| `AGENTFOX_CRON_SECRET` | `$CRON_KEY` | yes | -| `AGENTFOX_DATABASE_URL` | Neon console → the `guardrails-api` database → Connect → connection string, with `postgresql://` replaced by `postgresql+psycopg://`. Keep the query string (`?sslmode=require…`). | yes | -| `AGENTFOX_ENVIRONMENT` | `production` | no | -| `AGENTFOX_AUTH_MODE` | `token` | no | -| `AGENTFOX_EVIDENCE_DIR` | `/tmp/agentfox-evidence` | no | - -Also check Vercel's own **`CRON_SECRET`** (no prefix). Vercel Cron sends it as -`Authorization: Bearer …`, and the gateway accepts it as well as `AGENTFOX_CRON_SECRET`. -If it exists, leave it. If it does not, add it with the value `$CRON_KEY`; without it, -Vercel's own cron, and its Run button in step 6, gets a 401. - -Copy any other `NOMETRIA_` the project has to `AGENTFOX_`, for example -`PLAYGROUND_CORS_ORIGIN`, `ALLOW_EGRESS`, `SHOWCASE_ENABLED`, `DEFAULT_PROVIDER`. Plain -values can be revealed in the UI. If one of them is Sensitive (for example -`GITHUB_WEBHOOK_SECRET` or a model API key), issue a new value at its source and set -that. For the GitHub webhook secret, the source is the repository's webhook settings. - -From the CLI instead (production only; it prompts or reads the value from stdin): - -```bash -mkdir -p ~/tmp/vercel-api && cd ~/tmp/vercel-api && vercel link --yes --project guardrails-api -printf '%s' "$TOKEN_KEY" | vercel env add AGENTFOX_TOKEN_ENCRYPTION_KEY production -printf '%s' "$AUDIT_KEY" | vercel env add AGENTFOX_AUDIT_SIGNING_KEY production -printf '%s' "$SERVICE_SECRET" | vercel env add AGENTFOX_SERVICE_AUTH_SECRET production -printf '%s' "$CRON_KEY" | vercel env add AGENTFOX_CRON_SECRET production -printf '%s' 'postgresql+psycopg://…?sslmode=require' | vercel env add AGENTFOX_DATABASE_URL production -printf '%s' production | vercel env add AGENTFOX_ENVIRONMENT production -printf '%s' token | vercel env add AGENTFOX_AUTH_MODE production -printf '%s' /tmp/agentfox-evidence | vercel env add AGENTFOX_EVIDENCE_DIR production -vercel env ls production # names only; nothing prints a value -``` - -### Why these plain values - -- **`AGENTFOX_ENVIRONMENT=production`.** Production refuses the published development - secrets (`assert_production_secrets` in `core/config.py` runs in `create_app`), and - that check only applies outside `development`/`dev`/`test`/`testing`/`local`. The live - gateway does not reveal the exact name. Its 401 comes from the explicit-`auth_mode` - branch, which prints the mode and not the environment. In the code, any non-development - name behaves identically: `is_development` and `header_identity_allowed` only test - membership in that set. So `production` is correct whatever the old value was. To see - the old value, open `NOMETRIA_ENVIRONMENT` in the same settings page; it is a plain - variable unless someone marked it Sensitive. -- **`AGENTFOX_AUTH_MODE=token`.** Observed directly. An unauthenticated - `curl https://guardrails-api.vercel.app/api/agents` returns 401 with *"this deployment - sets auth_mode='token', so API tokens are required and the X-AgentFox-User header is - not accepted"*. That sentence is only produced when `auth_mode` is set explicitly to - that value (`platform/identity/operators.py`, `_why_header_refused`). -- **`AGENTFOX_EVIDENCE_DIR=/tmp/agentfox-evidence`.** A Vercel function can only write - under `/tmp`. Without this setting, an installed wheel writes evidence under - `~/.agentfox/var/evidence` (`state_root()` in `core/config.py`), which is not writable - there. `/tmp` is per instance and temporary, which is acceptable: a package is built - and downloaded in the same flow. The live value cannot be seen from outside. To find - the directory production actually used, run this in the Neon SQL editor: - `select path from evidence_packages order by built_at desc limit 3;`. If it shows a - different `/tmp/…` directory, use that. - -## 3. GitHub Actions secret - -```bash -gh secret set AGENTFOX_CRON_SECRET --repo architsharm/agentfox --body "$CRON_KEY" -gh secret list --repo architsharm/agentfox # AGENTFOX_API_URL must be there too -``` - -If `AGENTFOX_API_URL` is missing: -`gh secret set AGENTFOX_API_URL --repo architsharm/agentfox --body https://guardrails-api.vercel.app`. -Delete any leftover `NOMETRIA_*` secret, which nothing reads: -`gh secret delete NOMETRIA_CRON_SECRET --repo architsharm/agentfox`. - -## 4. The dashboard and the red-team demo - -### guardrails-dashboard - -| Variable | Value | -|---|---| -| `AGENTFOX_API_URL` | `https://guardrails-api.vercel.app` | -| `AGENTFOX_SERVICE_AUTH_SECRET` | `$SERVICE_SECRET`, the same value as the API | -| `AGENTFOX_API_TOKEN` | a newly issued token (below) | -| any other `NOMETRIA_` (`PLAYGROUND_API_URL`, `SITE_URL`, `SELF_HOSTED`, `USER`) | the same value, as `AGENTFOX_` | - -`GITHUB_CLIENT_ID` / `GITHUB_CLIENT_SECRET` have no prefix and stay as they are. - -Issue the token from a checkout, against the production database. Export the **new** -signing key too. The command writes an audit entry, and if that entry lands on a -checkpoint, it must be signed with the production key and not the development default: - -```bash -export AGENTFOX_DATABASE_URL='postgresql+psycopg://…?sslmode=require' # as in step 2 -export AGENTFOX_AUDIT_SIGNING_KEY="$AUDIT_KEY" -uv run agentfox admin users list # pick an owner's email -uv run agentfox admin auth issue --name dashboard --days 365 -``` - -The token is printed once (`nom_api_…`). Paste it into `AGENTFOX_API_TOKEN` as a -Sensitive variable. You can revoke the old one later with -`uv run agentfox admin auth tokens` and `uv run agentfox admin auth revoke `. - -If the Render dashboard (`nometria-dashboard`) is ever brought back, it needs the same -three variables. - -### guardrails-redteam-lang - -Generate a separate set (step 1) and add: - -| Variable | Value | -|---|---| -| `AGENTFOX_TOKEN_ENCRYPTION_KEY` | a new Fernet key (`openssl rand -base64 32 \| tr '+/' '-_'`) | -| `AGENTFOX_AUDIT_SIGNING_KEY` | `openssl rand -hex 32` | -| `AGENTFOX_SERVICE_AUTH_SECRET` | `openssl rand -hex 32` | -| `AGENTFOX_ENVIRONMENT` | `production`, or the revealed value of `NOMETRIA_ENVIRONMENT` | -| `AGENTFOX_AUTH_MODE` | `token`, or the revealed value of `NOMETRIA_AUTH_MODE` | -| `AGENTFOX_EVIDENCE_DIR` | `/tmp/agentfox-evidence`, or the revealed value of `NOMETRIA_EVIDENCE_DIR` | -| `AGENTFOX_DEMO_MODEL` | the value of `NOMETRIA_DEMO_MODEL`, only if set | - -`AGENTFOX_ORG_ID` is already renamed. `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` have no -prefix and stay. - -Then reconnect the database under the new prefix: Vercel → Storage → the demo's Neon -database → Projects → `guardrails-redteam-lang` → Disconnect, then Connect Project with -custom prefix **`AGENTFOX_DATABASE`** and the same environments. This only renames the -generated variables (`AGENTFOX_DATABASE_POSTGRES_URL`, …). `demo/kit/env.py` reads that -name first. Do not create `AGENTFOX_DATABASE_URL` by hand here. - -The demo has no job runner. Its cold start (`web.py`, `_rotate_keys_if_configured`) -runs the rotation itself, while the bridge sees both names. - -## 5. Merge `claude/key-rotation` and let it deploy - -Merge the PR. Both vendored wheels (`api/vendor`, `demo/redteam-live-lang/vendor`) are -rebuilt on that branch, and all three projects redeploy from `main`. The redeploy is -also what applies the variables from steps 2 to 4: Vercel only reads environment -changes into new deployments. After it: - -```bash -curl -s https://guardrails-api.vercel.app/health | jq .status # "ok" -curl -s https://guardrails-api.vercel.app/api/version | jq .key_rotation -# {"token_encryption": "pending", "audit_signing": "pending"} data still on the old keys -# ("complete" already, if there was nothing encrypted or checkpointed) -``` - -If the gateway does not come up, the runtime log names the problem. It refuses to -start on a published secret. A `misconfigured` encryption key means it is not a -Fernet key; regenerate it as in step 1. - -## 6. Run the rotation - -Any job-runner call does it. Use whichever is quickest: - -```bash -gh workflow run monitors.yml --repo architsharm/agentfox -gh run watch --repo architsharm/agentfox # the log shows the runner's JSON response -``` - -or Vercel → `guardrails-api` → Settings → Cron Jobs → `/api/internal/jobs/run` → Run, or -directly: - -```bash -curl -s -X POST -H "Authorization: Bearer $CRON_KEY" \ - https://guardrails-api.vercel.app/api/internal/jobs/run | jq .key_rotation -``` - -`key_rotation` in that response is the job's outcome, in counts and states only, for -example `{"status": "done", "token_encryption": "complete", "audit_signing": -"complete", "reencrypted": 3, "undecryptable": 0, "resigned": 12, "chains_not_rotated": 0}`. -It is `null` when there was nothing to do, or when a rotation with the same keys -already ran in the last hour. A rotation that could not finish is retried hourly, or -on the next call after any key changes. - -For the red-team demo, open its URL once after the deploy so a cold start runs. - -## 7. Confirm - -```bash -curl -s https://guardrails-api.vercel.app/api/version | jq .key_rotation -# {"token_encryption": "complete", "audit_signing": "complete"} -``` - -The answer is cached for a minute. Do not continue while either value says `pending`. -In that case, look at `undecryptable` and `chains_not_rotated` in step 6's output: - -- `undecryptable > 0`: some value was not encrypted with `NOMETRIA_TOKEN_ENCRYPTION_KEY` - either. It is left untouched. Reconnect that integration after step 8; that - overwrites the value. -- `chains_not_rotated > 0`: a tenant's chain did not verify, so its checkpoints were not - re-signed. The most likely cause is a checkpoint signed with the development default - by a local CLI. Add `AGENTFOX_AUDIT_SIGNING_KEY_PREVIOUS=dev-insecure-checkpoint-key`, - redeploy, run step 6 again, and remove that variable once the state reads `complete`. - [key-rotation.md](key-rotation.md#when-rotation-cannot-finish) has the details. - -## 8. Delete every `NOMETRIA_*` variable - -On each project: - -```bash -cd ~/tmp/vercel-api # linked in step 2; `vercel link --yes --project ` for the others -vercel env ls production | grep NOMETRIA_ -vercel env rm NOMETRIA_TOKEN_ENCRYPTION_KEY production --yes # repeat for every name listed -vercel env ls preview | grep NOMETRIA_ # and remove those too -``` - -If `guardrails-api` still has the Neon integration on the `NOMETRIA_DATABASE` prefix, -reconnect it with prefix `AGENTFOX_DATABASE`, as for the demo. The gateway reads only -`AGENTFOX_DATABASE_URL` from step 2, so this only clears the names. - -Redeploy all three projects, then: - -```bash -curl -s https://guardrails-api.vercel.app/api/version | jq .key_rotation -# {"token_encryption": "not_configured", "audit_signing": "not_configured"} -``` - -`not_configured` here means no previous key is set any more: everything is on the -new keys. Sign in to the dashboard once to confirm the GitHub flow, which uses the new -service secret. Then open a connected repository, which decrypts its token with the -new key. - -## 9. Merge stage B - -`claude/agentfox-rename-final` removes every `NOMETRIA_*` fallback and this bridge. It -keeps the permanent `*_PREVIOUS` key rotation. Merge it once step 8 shows no -`NOMETRIA_` names on any project. - -## Checklist - -- [ ] Four values generated; the encryption key is a Fernet key. -- [ ] guardrails-api: the eight `AGENTFOX_*` variables set, `CRON_SECRET` present, other - `NOMETRIA_` copied. -- [ ] GitHub: `AGENTFOX_CRON_SECRET` updated, `AGENTFOX_API_URL` present. -- [ ] guardrails-dashboard: `AGENTFOX_API_URL`, `AGENTFOX_SERVICE_AUTH_SECRET` (same as the - API), new `AGENTFOX_API_TOKEN`. -- [ ] guardrails-redteam-lang: its own fresh values; Neon reconnected as `AGENTFOX_DATABASE`. -- [ ] `claude/key-rotation` merged and deployed; `/health` ok. -- [ ] Rotation run; `/api/version` → `complete`, `complete`. -- [ ] Every `NOMETRIA_*` deleted; redeployed; `/api/version` → `not_configured`, `not_configured`. -- [ ] Stage B merged. diff --git a/docs/design/PRD.md b/docs/design/PRD.md index 406a5daf..0dfa64c7 100644 --- a/docs/design/PRD.md +++ b/docs/design/PRD.md @@ -161,8 +161,7 @@ probing of deployed agents (§13). against; KMS/Vault needs a deployment; HA scale-out needs load. Each is a declared seam rather than an implementation, and a declared seam is not a feature. * **Deliberately deferred.** Model-based detectors ship but their weights are an opt-in - download. The code restructure, new coding-agent harnesses and the last of the - Nometria→AgentFox rename are deferred too (§13.4). + download. The code restructure and new coding-agent harnesses are deferred too (§13.4). * **Genuinely hard and openly uncovered.** Sycophancy, invalid logical inference, and answer quality in languages other than English. A deterministic checker cannot judge informal argument, and an LLM judge inherits the failure it is meant to catch. These @@ -1297,8 +1296,6 @@ small JSON contract the adapter sends. - The code restructure in [structure-proposal.md](structure-proposal.md), and with it new coding-agent harnesses (Codex first, then Cursor). -- The last of the Nometria→AgentFox rename: the `NOMETRIA_*` environment fallback, the - `nometria` console script and the `x-nometria-*` headers stay while production depends on them. - Building the vendored wheels at deploy time instead of committing them. --- diff --git a/docs/design/competitor-failproof-docs-and-product.md b/docs/design/competitor-failproof-docs-and-product.md index 965779a1..03152c7c 100644 --- a/docs/design/competitor-failproof-docs-and-product.md +++ b/docs/design/competitor-failproof-docs-and-product.md @@ -94,7 +94,7 @@ They use Mintlify, which gives most of this for free. - The Jev/policy-authority pages are dense, conditional legal-style prose (version-specific behaviours for 1.0.7 vs 1.0.7-beta.2 vs 1.0.8-beta.0). That's a product complexity smell. - Two CLIs (`failproofai` local, `fp` cloud) with overlapping verbs; many "this CLI can't do that yet" notes. -- Legacy naming still leaks: `AGENTEYE_ENVIRONMENT`, `X-AgentEye-Org`, `X-AgentEye-Signature`, `agenteye-orgctl`. Same disease as our `X-Nometria-*`. +- Legacy naming still leaks: `AGENTEYE_ENVIRONMENT`, `X-AgentEye-Org`, `X-AgentEye-Signature`, `agenteye-orgctl`. Same disease as our own pre-rename headers had. - SDK path gives tracing only — "it does not enforce policies on its own." --- @@ -165,7 +165,7 @@ They use Mintlify, which gives most of this for free. - Judgment tiers and egress (public version of `docs/architecture/judgment-tiers.md`). - Glossary or a concepts table. - Changelog page. - - Migration from `nometria`. + - Migration from the pre-rename package. - Recipes (policy and red-team starters). 6. **Per-endpoint API pages** grouped by tag, plus a published `openapi.json`. Add a hand-written API intro covering auth, status-code meanings and request IDs. 7. **Every page ends with "check it worked"** (the exact command) and a card to the next stage. @@ -175,9 +175,9 @@ They use Mintlify, which gives most of this for free. - `mcp_tool_added_under_wildcard` was missing from `reference/detectors` and `CHANGELOG.md`. Fixed. - `harness/README.md`, `harness/STRUCTURE.md` and the support page said "17 CLI groups"; there are 13. Fixed. - `harness/` told people to type `agentfox mcp serve`; they now see `agentfox serve mcp`. The old spelling stays in `.mcp.json` and the coding-agent hook configs (`hooks run`), because those are deliberate hidden aliases that installed configs call. - - `harness/reference/http-api.md` named `NOMETRIA_WEBHOOK_URL`; it now names `AGENTFOX_WEBHOOK_URL`. Fixed. + - `harness/reference/http-api.md` named the pre-rename webhook variable; it now names `AGENTFOX_WEBHOOK_URL`. Fixed. - Open: the harness plugin is at 0.1.0 while the package is 0.3.1. - - Open: `X-Nometria-*` headers (~68 mentions in the gateway guide) and `NOMETRIA_*` env vars in `render.yaml`, `alembic.ini` and `pyproject.toml`. This waits on the restructure, but it is user-visible. + - Pre-rename headers (~68 mentions in the gateway guide) and environment variables in `render.yaml`, `alembic.ini` and `pyproject.toml`. Fixed: the rename is finished. ### Positioning diff --git a/docs/design/gap-analysis.md b/docs/design/gap-analysis.md index 1a22605f..59f2aa1f 100644 --- a/docs/design/gap-analysis.md +++ b/docs/design/gap-analysis.md @@ -225,10 +225,10 @@ Status as of 2026-08-29: **five of seven closed, two stub-only** (real, tested, | 0.1 | **Streaming (SSE) unsupported and silently dropped** | 🔴 | M | verified: `stream:true` → non-streaming JSON | ✅ closed — real SSE streaming in `gateway/routes/inline.py` | | 0.2 | **No DB migrations** — `create_all()` only; a deployed instance cannot be upgraded | 🔴 | S | verified absent | ✅ closed — Alembic wired and applied against prod | | 0.3 | **No kill switch / quarantine** — cannot stop a misbehaving agent; every competitor has one | 🔴 | S | verified absent | ✅ closed — per-agent kill switch shipped and tested | -| 0.4 | **Agent tool-calling loop not governed** — proxy forwards `tools`/`tool_calls` but does not enforce across the multi-turn loop | 🔴 | M | 2 refs only | ✅ closed (2026-09-16) — `gateway/routes/inline.py::_govern_tool_loop` reconstructs the tool-calling run from the request body on both proxy routes (`/v1/chat/completions`, `/v1/messages`, streaming included) and scores it with `agent_loop.govern_loop` under the configured `AGENTFOX_LOOP_*` budgets. A stopped verdict returns the route's existing `agentfox_policy_violation` body under the shipped `loop.runaway` rule (NOM-RTG-08) and records a trace plus an `agent_loop_stopped` finding. Correlated by `X-Nometria-Session`; a request with no session header, or no tool calls, is unaffected. | +| 0.4 | **Agent tool-calling loop not governed** — proxy forwards `tools`/`tool_calls` but does not enforce across the multi-turn loop | 🔴 | M | 2 refs only | ✅ closed (2026-09-16) — `gateway/routes/inline.py::_govern_tool_loop` reconstructs the tool-calling run from the request body on both proxy routes (`/v1/chat/completions`, `/v1/messages`, streaming included) and scores it with `agent_loop.govern_loop` under the configured `AGENTFOX_LOOP_*` budgets. A stopped verdict returns the route's existing `agentfox_policy_violation` body under the shipped `loop.runaway` rule (NOM-RTG-08) and records a trace plus an `agent_loop_stopped` finding. Correlated by `X-AgentFox-Session`; a request with no session header, or no tool calls, is unaffected. | | 0.5 | **Everything synchronous** — evidence build, red-team, compliance compute run in-request | 🔴 | M | no queue/scheduler | ✅ closed (2026-09-16) — evidence and red-team requests run their own job and return 202 `queued_for_retry` when the first attempt fails. Recurring work runs through `scheduler.py` schedules drained by the cron. | | 0.6 | **No HA / scale validation**; SQLite default is single-writer; NFR-3 never tested | 🔴 | M | acknowledged in traceability | ✅ closed — `db.py::configure_pool` supports pooled/HA deployment, live on Neon | -| 0.7 | No graceful degradation path if the control plane is down (fail-open exists per-detector, not per-service) | 🟠 | S | — | ✅ closed (2026-09-16) — `gateway/app.py::degradation_gate` probes the four dependencies a `/v1/*` request needs (detector pipeline, policy engine including a remote OPA, database beyond the request's own session, configured model provider) and applies `service_fallback`/`DegradationLedger` under `AGENTFOX_FAIL_MODE`, constructed through `FailPolicy` so the `NEVER_OPEN` rule still binds. Fail-closed returns 503 `agentfox_service_degraded`; fail-open serves, records, stamps `X-Nometria-Degraded`, and converts to closed past its budget. Visible on `GET /api/health` and `GET /api/reliability`. | +| 0.7 | No graceful degradation path if the control plane is down (fail-open exists per-detector, not per-service) | 🟠 | S | — | ✅ closed (2026-09-16) — `gateway/app.py::degradation_gate` probes the four dependencies a `/v1/*` request needs (detector pipeline, policy engine including a remote OPA, database beyond the request's own session, configured model provider) and applies `service_fallback`/`DegradationLedger` under `AGENTFOX_FAIL_MODE`, constructed through `FailPolicy` so the `NEVER_OPEN` rule still binds. Fail-closed returns 503 `agentfox_service_degraded`; fail-open serves, records, stamps `X-AgentFox-Degraded`, and converts to closed past its budget. Visible on `GET /api/health` and `GET /api/reliability`. | **Net, updated 2026-09-16:** Tier 0 is closed. Streaming and migrations closed earlier; 0.5 closed with the deferred job queue (PL-5); **0.4 and 0.7 closed this cycle**, each wired onto the live request path with tests that drive the real FastAPI app rather than the library. The "built the library, didn't plug it in" pattern this row used to describe is now closed across Tier 0 and — for nine of eleven detectors — in [failure-modes.md](failure-modes.md)'s F6/F8 as well. Two things stay deliberately unwired with stated reasons (F6.5, F8.4); that judgement should be re-read rather than reversed by default. @@ -356,7 +356,6 @@ update is closed: the job queue is wired, and the F6 and F8 checks run on the re **Deferred, deliberately** (decided, not gaps to fix now): -- The last of the Nometria→AgentFox rename. The `NOMETRIA_*` environment fallback, the `nometria` console script and the `x-nometria-*` headers stay, because production environments set them. - Committing the vendored wheels. They stay until the restructure; the pre-commit hook and CI freshness check keep them current meanwhile. - New coding-agent harnesses: Codex, then Cursor, after the restructure in [structure-proposal.md](structure-proposal.md). diff --git a/docs/design/production-readiness-review.md b/docs/design/production-readiness-review.md index 25e33088..3c46e6fd 100644 --- a/docs/design/production-readiness-review.md +++ b/docs/design/production-readiness-review.md @@ -59,7 +59,7 @@ recur silently.** Effort: S. Gap-analysis.md and the LLD both note the wheel-drift *pattern* (three recent commits — `2cfe048`, `551c220`, `00a4d4f` — show a real production incident from exactly this). -Checked freshly on 2026-09-04: `api/vendor/nometria-0.1.0-py3-none-any.whl` is dated +Checked freshly on 2026-09-04: the committed `api/vendor/` wheel (still under the package's pre-rename name) is dated 2026-08-28. Files newer than the wheel under `src/agentfox/` include `enforcement.py`, `autoguard.py`, `context_integrity.py`, `models.py`, `answerability.py`, `entitlement.py`, `data_access.py`, `discovery.py`, `register.py`, `system_log.py`, `db.py`, `config.py`, @@ -288,7 +288,7 @@ deployment must know about the fixes and features merged since. ### 7.2 New production configuration -Settings are read as `AGENTFOX_` first and the deprecated `NOMETRIA_` second (with a startup warning). +Settings are read as `AGENTFOX_`. | Setting | Purpose | When unset | |---|---|---| @@ -306,6 +306,5 @@ channels and probe targets add tables: run `agentfox admin db upgrade` before se ### 7.3 Still open from this review §3's per-process admission and budget state is unchanged: it also applies to the circuit -breaker and to the fail-open budget. The code restructure, the last of the Nometria→AgentFox -rename and building the vendored wheels at deploy time are deferred by decision; see +breaker and to the fail-open budget. The code restructure, the last of the product rename and building the vendored wheels at deploy time are deferred by decision; see [gap-analysis.md](gap-analysis.md) Part 7. diff --git a/docs/design/structure-proposal.md b/docs/design/structure-proposal.md index 1cb0875c..d2abe8bc 100644 --- a/docs/design/structure-proposal.md +++ b/docs/design/structure-proposal.md @@ -255,7 +255,7 @@ earlier). | Phase | Work | Size | |---|---|---| -| 0. Hygiene | Delete stale `__pycache__` folders; `core/vocab.py`; one blocked/approval exception base used by all seven ingress paths (started as `agentfox/errors.py`); move `core/seed.py` to `fixtures/`. The Nometria → AgentFox rename is no longer in this phase (section 9) | small | +| 0. Hygiene | Delete stale `__pycache__` folders; `core/vocab.py`; one blocked/approval exception base used by all seven ingress paths (started as `agentfox/errors.py`); move `core/seed.py` to `fixtures/`. The rest of the product rename is no longer in this phase (section 9) | small | | 1. Layers | Create `platform/`, `capabilities/`, `frameworks/`, `exporters/`, `apps/`; break the cycles listed in section 3; add import-linter to CI | medium, mostly moves | | 2. Harness SPI | `harnesses/base.py`; move all Claude-specific constants from cli, policy and discovery into `harnesses/claude_code/`; conformance suite; rename `harness/` to `plugins/` | medium | | 3. Second harness | Codex CLI (contract closest to Claude's, so it proves the interface cheaply), then Cursor. Needs real payloads captured from each tool. Deferred until the restructure is done (section 9) | small each | @@ -275,9 +275,9 @@ proves the business-pack story. 4. **Deferred until the restructure is done:** - new harnesses (Codex first, then Cursor); - stopping the committed vendored wheels; - - the rest of the Nometria → AgentFox rename (the `NOMETRIA_*` environment fallback, the - `nometria` console script and the `x-nometria-*` headers), because production - environments still set them. + - the rest of the product rename (the pre-rename environment-variable fallback, console + script and request headers), because production environments still set them. Since + finished. ## 10. Progress diff --git a/docs/product-tour.md b/docs/product-tour.md index 35aea309..78261f73 100644 --- a/docs/product-tour.md +++ b/docs/product-tour.md @@ -399,9 +399,7 @@ Everything runs on your own infrastructure. There is no licence check, no phone- default egress: a fresh install ships with `AGENTFOX_ALLOW_EGRESS=false` and the `echo` provider, so it runs end to end with no model and no API key. Point it at a model when you want one. -Settings are `AGENTFOX_*` environment variables. The pre-rename `NOMETRIA_*` names are still read -as a deprecated fallback, with a startup warning naming each one; where both are set, -`AGENTFOX_*` wins. The full list is +Settings are `AGENTFOX_*` environment variables. The full list is [plugins/shared/reference/config.md](../plugins/shared/reference/config.md). **Two secrets are required outside development.** With `AGENTFOX_ENVIRONMENT` set to anything but diff --git a/plugins/claude-code/reference/config.md b/plugins/claude-code/reference/config.md index cbcaaa3f..be18ec1f 100644 --- a/plugins/claude-code/reference/config.md +++ b/plugins/claude-code/reference/config.md @@ -2,7 +2,7 @@ title: AgentFox configuration (environment variables) layer: reference audience: agents, operators -source_of_truth: src/agentfox/core/config.py (Settings, env_prefix AGENTFOX_, deprecated NOMETRIA_) +source_of_truth: src/agentfox/core/config.py (Settings, env_prefix AGENTFOX_) verified_against: commit 6863b8b, 2026-09-15 --- @@ -11,17 +11,12 @@ verified_against: commit 6863b8b, 2026-09-15 Sources, highest precedence first: 1. `AGENTFOX_*` environment variables -2. `NOMETRIA_*` environment variables, the pre-rename names: deprecated, still read so - existing deployments keep working, with one startup warning naming each one in use - (`agentfox doctor` lists every one still set); where both are set, `AGENTFOX_*` wins -3. the `[agentfox]` table of a TOML file (a pre-rename `nometria.toml` or `[nometria]` - table is still read, with the same warning) -4. built-in defaults +2. the `[agentfox]` table of a TOML file +3. built-in defaults Every variable below is listed under its `AGENTFOX_` name. The dashboard reads only `AGENTFOX_API_URL`, `AGENTFOX_API_TOKEN`, `AGENTFOX_USER`, `AGENTFOX_PLAYGROUND_API_URL`, -`AGENTFOX_SERVICE_AUTH_SECRET`, `AGENTFOX_SITE_URL` and `AGENTFOX_SELF_HOSTED` (and their -deprecated `NOMETRIA_*` twins, with a warning). +`AGENTFOX_SERVICE_AUTH_SECRET`, `AGENTFOX_SITE_URL` and `AGENTFOX_SELF_HOSTED`. The file is `$AGENTFOX_CONFIG` if set, which must exist. Otherwise it's `./agentfox.toml` in the working directory, if present. `AGENTFOX_CONFIG=none` turns file loading off, which is diff --git a/plugins/claude-code/reference/docs-map.md b/plugins/claude-code/reference/docs-map.md index c0b7b544..1700d034 100644 --- a/plugins/claude-code/reference/docs-map.md +++ b/plugins/claude-code/reference/docs-map.md @@ -44,7 +44,6 @@ commit; `scripts/check/plugins.py` fails if a repo `.md` file is unclassified. | `docs/getting-started.md` | a linear first hour for a new user, ending with their own agent governed | Written for a newcomer, not for an agent; each step says what it proves | | `docs/deployment/systemd.md` | running the Python gateway as a reboot-persistent systemd user service, with separate database, evidence and signing-key storage | Self-hosters on Linux | | `docs/deployment/key-rotation.md` | rotating the token encryption and audit signing keys: `*_PREVIOUS` settings, `agentfox admin keys rotate`/`status`, the automatic `keys.rotate` job, what to do when rotation cannot finish | Anyone running a deployment | -| `docs/deployment/vercel-env-rename.md` | the exact procedure for moving the hosted Vercel projects from `NOMETRIA_*` secrets to fresh `AGENTFOX_*` ones through key rotation, and the order before the legacy fallback is removed | The hosted deployment's owner; one-off | | `docs/evaluation/evidence-standards.md` | how to read any number in this repo, and the limits that apply before it | Read before quoting a benchmark | | `benchmarks/README.md` | which benchmark proves which claim | Index; quote numbers from the linked methodology only | | `THIRD_PARTY_NOTICES.md` | attribution obligations | Update when adding a dependency | diff --git a/plugins/claude-code/reference/sdk.md b/plugins/claude-code/reference/sdk.md index c641da10..bedbd5bb 100644 --- a/plugins/claude-code/reference/sdk.md +++ b/plugins/claude-code/reference/sdk.md @@ -76,7 +76,7 @@ builder.add_node("model", guard.model_node(call_model)) builder.add_node("pay", guard.tool_node(transfer, tool="payments.transfer")) ``` -Governance state lives under the `"__nometria__"` state key, so it survives checkpointing. +Governance state lives under the `"__agentfox__"` state key, so it survives checkpointing. `tool_node` authorises the model's latest call to that tool in `state["messages"]` (or `arguments=`), with taint from earlier retrieval nodes. Escalation calls LangGraph's `interrupt()`; blocks raise `agentfox.PolicyViolation` (all refusals are `agentfox.AgentFoxError`). diff --git a/plugins/shared/reference/config.md b/plugins/shared/reference/config.md index cbcaaa3f..be18ec1f 100644 --- a/plugins/shared/reference/config.md +++ b/plugins/shared/reference/config.md @@ -2,7 +2,7 @@ title: AgentFox configuration (environment variables) layer: reference audience: agents, operators -source_of_truth: src/agentfox/core/config.py (Settings, env_prefix AGENTFOX_, deprecated NOMETRIA_) +source_of_truth: src/agentfox/core/config.py (Settings, env_prefix AGENTFOX_) verified_against: commit 6863b8b, 2026-09-15 --- @@ -11,17 +11,12 @@ verified_against: commit 6863b8b, 2026-09-15 Sources, highest precedence first: 1. `AGENTFOX_*` environment variables -2. `NOMETRIA_*` environment variables, the pre-rename names: deprecated, still read so - existing deployments keep working, with one startup warning naming each one in use - (`agentfox doctor` lists every one still set); where both are set, `AGENTFOX_*` wins -3. the `[agentfox]` table of a TOML file (a pre-rename `nometria.toml` or `[nometria]` - table is still read, with the same warning) -4. built-in defaults +2. the `[agentfox]` table of a TOML file +3. built-in defaults Every variable below is listed under its `AGENTFOX_` name. The dashboard reads only `AGENTFOX_API_URL`, `AGENTFOX_API_TOKEN`, `AGENTFOX_USER`, `AGENTFOX_PLAYGROUND_API_URL`, -`AGENTFOX_SERVICE_AUTH_SECRET`, `AGENTFOX_SITE_URL` and `AGENTFOX_SELF_HOSTED` (and their -deprecated `NOMETRIA_*` twins, with a warning). +`AGENTFOX_SERVICE_AUTH_SECRET`, `AGENTFOX_SITE_URL` and `AGENTFOX_SELF_HOSTED`. The file is `$AGENTFOX_CONFIG` if set, which must exist. Otherwise it's `./agentfox.toml` in the working directory, if present. `AGENTFOX_CONFIG=none` turns file loading off, which is diff --git a/plugins/shared/reference/docs-map.md b/plugins/shared/reference/docs-map.md index c0b7b544..1700d034 100644 --- a/plugins/shared/reference/docs-map.md +++ b/plugins/shared/reference/docs-map.md @@ -44,7 +44,6 @@ commit; `scripts/check/plugins.py` fails if a repo `.md` file is unclassified. | `docs/getting-started.md` | a linear first hour for a new user, ending with their own agent governed | Written for a newcomer, not for an agent; each step says what it proves | | `docs/deployment/systemd.md` | running the Python gateway as a reboot-persistent systemd user service, with separate database, evidence and signing-key storage | Self-hosters on Linux | | `docs/deployment/key-rotation.md` | rotating the token encryption and audit signing keys: `*_PREVIOUS` settings, `agentfox admin keys rotate`/`status`, the automatic `keys.rotate` job, what to do when rotation cannot finish | Anyone running a deployment | -| `docs/deployment/vercel-env-rename.md` | the exact procedure for moving the hosted Vercel projects from `NOMETRIA_*` secrets to fresh `AGENTFOX_*` ones through key rotation, and the order before the legacy fallback is removed | The hosted deployment's owner; one-off | | `docs/evaluation/evidence-standards.md` | how to read any number in this repo, and the limits that apply before it | Read before quoting a benchmark | | `benchmarks/README.md` | which benchmark proves which claim | Index; quote numbers from the linked methodology only | | `THIRD_PARTY_NOTICES.md` | attribution obligations | Update when adding a dependency | diff --git a/plugins/shared/reference/sdk.md b/plugins/shared/reference/sdk.md index c641da10..bedbd5bb 100644 --- a/plugins/shared/reference/sdk.md +++ b/plugins/shared/reference/sdk.md @@ -76,7 +76,7 @@ builder.add_node("model", guard.model_node(call_model)) builder.add_node("pay", guard.tool_node(transfer, tool="payments.transfer")) ``` -Governance state lives under the `"__nometria__"` state key, so it survives checkpointing. +Governance state lives under the `"__agentfox__"` state key, so it survives checkpointing. `tool_node` authorises the model's latest call to that tool in `state["messages"]` (or `arguments=`), with taint from earlier retrieval nodes. Escalation calls LangGraph's `interrupt()`; blocks raise `agentfox.PolicyViolation` (all refusals are `agentfox.AgentFoxError`). diff --git a/render.yaml b/render.yaml index c3a1df01..1c3c2344 100644 --- a/render.yaml +++ b/render.yaml @@ -33,12 +33,8 @@ # gateway's shell (`agentfox admin users create you@example.com --role owner # --token`) and sign in on /login with that token. # -# Settings are AGENTFOX_*. A deployment created from an older copy of this blueprint -# has NOMETRIA_* variables instead; both services still read those as a deprecated -# fallback (the gateway logs a warning naming each one, and `agentfox doctor` lists -# them). Rename them in the Render dashboard by copying each value to its -# AGENTFOX_* name, then delete the old one — see the audit signing key below for -# the one that must never be regenerated. +# Settings are AGENTFOX_*. See the audit signing key below for the one that must never +# be regenerated without rotating (docs/deployment/key-rotation.md). # # Full runbook, including Fly, Docker Compose and bare metal: deploy/README-dashboard.md @@ -91,11 +87,10 @@ services: value: /var/agentfox/evidence # Never seen by us. Losing it does not lose the audit chain, but it does end # the ability to verify entries signed before the change — see Appendix - # E.2.2. `sync: false`, not `generateValue`: this name replaced the pre-rename - # NOMETRIA_AUDIT_SIGNING_KEY, and a generated value under the new name would - # win over the old one on an existing deployment's next blueprint sync, - # silently rotating its key. Prompted for once, on creation; an existing - # deployment copies its NOMETRIA_AUDIT_SIGNING_KEY value here by hand. + # E.2.2. `sync: false`, not `generateValue`: a generated value would change on a + # blueprint sync and silently rotate the key. Prompted for once, on creation. To + # change it, keep the old value in AGENTFOX_AUDIT_SIGNING_KEY_PREVIOUS and run + # `agentfox admin keys rotate` (docs/deployment/key-rotation.md). - key: AGENTFOX_AUDIT_SIGNING_KEY sync: false # Authenticates the dashboard's GitHub sign-in call (/api/auth/github/provision), @@ -103,11 +98,9 @@ services: # so the two can never differ. It used to be generated on the dashboard only, # which left this service on the published default: sign-in failed, and anyone # who read the source could mint owner tokens on the gateway directly. The - # gateway now refuses to start outside development on the default. Renamed - # from NOMETRIA_SERVICE_AUTH_SECRET: on an existing deployment a blueprint sync - # generates a fresh value under this name for the gateway and copies the same - # one to the dashboard, so the pair stays matched (it is a shared secret - # between the two services, not a key anything was signed with). + # gateway now refuses to start outside development on the default. A blueprint + # sync copies the same value to the dashboard, so the pair stays matched (it is a + # shared secret between the two services, not a key anything was signed with). - key: AGENTFOX_SERVICE_AUTH_SECRET generateValue: true # The five zero-dependency defaults. The classifier and safety models the diff --git a/scripts/quickscan.sh b/scripts/quickscan.sh index af820d5f..0d321433 100755 --- a/scripts/quickscan.sh +++ b/scripts/quickscan.sh @@ -16,7 +16,7 @@ TARGET_DIR="${1:-.}" info() { printf '%s\n' "$*" >&2; } -PYTHON_BIN="${AGENTFOX_PYTHON:-${NOMETRIA_PYTHON:-}}" +PYTHON_BIN="${AGENTFOX_PYTHON:-}" if [ -z "$PYTHON_BIN" ]; then for candidate in python3 python; do if command -v "$candidate" >/dev/null 2>&1; then diff --git a/src/agentfox/apps/cli/onboarding.py b/src/agentfox/apps/cli/onboarding.py index 499d25fb..552f9117 100644 --- a/src/agentfox/apps/cli/onboarding.py +++ b/src/agentfox/apps/cli/onboarding.py @@ -566,35 +566,6 @@ def add(state: str, what: str, detail: str) -> None: else: add("ok", "key rotation", "no previous key configured; nothing to rotate") - # The pre-rename names still work, which is exactly why nobody notices them. This - # line is the checklist item to clear before that fallback is removed: it names - # every NOMETRIA_* still set, including ones nothing reads (a Neon integration's - # NOMETRIA_DATABASE_* family) and ones an AGENTFOX_* twin already overrides. - from agentfox.core.config import legacy_env_vars_set, legacy_settings_in_use - - legacy_in_use = legacy_settings_in_use() - legacy_idle = [name for name in legacy_env_vars_set() if name not in legacy_in_use] - if legacy_in_use or legacy_idle: - parts = [] - if legacy_in_use: - parts.append("in use: " + ", ".join(legacy_in_use)) - if legacy_idle: - parts.append( - "set but not read (shadowed by an AGENTFOX_* twin, or not a setting): " - + ", ".join(legacy_idle) - ) - add( - "warn", - "legacy names", - "pre-rename settings still present — " - + "; ".join(parts) - + ". Rename each NOMETRIA_ to AGENTFOX_ (and nometria.toml / [nometria] " - "to agentfox.toml / [agentfox]), then remove the old ones; a later release " - "stops reading them.", - ) - else: - add("ok", "legacy names", "no pre-rename NOMETRIA_* variables or nometria.toml in use") - # Containment before detection, deliberately. Every published adversarial-robustness # result says a determined attacker eventually gets past content inspection; what is # left at that moment is what an agent is *allowed to do*. That is declared, not diff --git a/src/agentfox/apps/cli/submit.py b/src/agentfox/apps/cli/submit.py index 96607e6f..4c7a87b9 100644 --- a/src/agentfox/apps/cli/submit.py +++ b/src/agentfox/apps/cli/submit.py @@ -39,9 +39,7 @@ def submit_scan_report(report: ScanReport, *, source: str) -> dict[str, Any]: "(yours or your team's) to submit." ) - # Through config.env(): AGENTFOX_ first, the pre-rename NOMETRIA_ name as a - # deprecated fallback — the same precedence, and the same deprecation warning, - # as every other setting. + # Through config.env(), like every other switch read outside Settings. token = env("API_TOKEN") dev_user = env("USER") headers: dict[str, str] = {} diff --git a/src/agentfox/apps/gateway/app.py b/src/agentfox/apps/gateway/app.py index 7aef2b87..46964659 100644 --- a/src/agentfox/apps/gateway/app.py +++ b/src/agentfox/apps/gateway/app.py @@ -48,7 +48,6 @@ from agentfox.capabilities.detection import all_detectors, available_detectors from agentfox.core.config import assert_production_secrets, get_settings from agentfox.core.db import init_db -from agentfox.core.headers import normalize_asgi_headers from agentfox.platform.providers import all_providers, available_providers from agentfox.runtime.availability import ( check_services, @@ -60,25 +59,6 @@ log = logging.getLogger(__name__) -class LegacyHeaderMiddleware: - """Accept the pre-rename ``x-agentfox-*`` request headers as ``x-agentfox-*``. - - Pure ASGI rather than ``@app.middleware("http")``: the rewrite has to land in the - ``scope`` that routing and ``Header()`` parameters read, before any of them run. - The new spelling wins when a request carries both (`agentfox.core.headers`). - """ - - def __init__(self, app: Any) -> None: - self.app = app - - async def __call__(self, scope: Any, receive: Any, send: Any) -> None: - if scope.get("type") in ("http", "websocket"): - headers = normalize_asgi_headers(scope.get("headers") or []) - if headers is not scope.get("headers"): - scope = {**scope, "headers": headers} - await self.app(scope, receive, send) - - def _load_demo_fixtures() -> None: """Re-register the offline provider's scripted replies when a seeded DB is present. @@ -585,9 +565,6 @@ def providers(_u=Depends(current_user)) -> dict[str, Any]: ), } - # Added last, so it is the outermost layer: every middleware and route above sees - # only x-agentfox-* request headers, whichever spelling the client sent. - app.add_middleware(LegacyHeaderMiddleware) return app diff --git a/src/agentfox/apps/report/evidence.py b/src/agentfox/apps/report/evidence.py index 3f137c19..a3dc3452 100644 --- a/src/agentfox/apps/report/evidence.py +++ b/src/agentfox/apps/report/evidence.py @@ -57,8 +57,7 @@ python3 verify_chain.py Re-derives every entry digest and the chain linkage from audit_entries.json and -checks the signed checkpoints if a key is supplied via AGENTFOX_AUDIT_KEY -(NOMETRIA_AUDIT_KEY is still read, for packages verified with the old name). +checks the signed checkpoints if a key is supplied via AGENTFOX_AUDIT_KEY. Several keys may be given, comma-separated, for a chain that spans a key rotation. Exit code 0 = intact, 1 = tampered. """ @@ -107,16 +106,14 @@ def main(): breaks.append((seq, "prev_mismatch", "broken linkage - insertion or reordering")) prev = row["digest"] - # AGENTFOX_ first, the pre-rename NOMETRIA_ name second; and the operator's own - # signing-key variable as a last resort, since that is the one already set. + # AGENTFOX_AUDIT_KEY, else the operator's own signing-key variable, since that is + # the one already set. key = next( ( os.environ[name] for name in ( "AGENTFOX_AUDIT_KEY", - "NOMETRIA_AUDIT_KEY", "AGENTFOX_AUDIT_SIGNING_KEY", - "NOMETRIA_AUDIT_SIGNING_KEY", ) if os.environ.get(name) ), @@ -639,7 +636,7 @@ def _readme( It uses only the Python standard library and re-derives every digest from the exported rows. To verify the signed checkpoints as well, set AGENTFOX_AUDIT_KEY -(or the older NOMETRIA_AUDIT_KEY) to the checkpoint signing key -- held by the +to the checkpoint signing key -- held by the operator, outside the application database -- before running it. Our verification result: chain {status} diff --git a/src/agentfox/capabilities/detection/detectors/secrets.py b/src/agentfox/capabilities/detection/detectors/secrets.py index 38882249..9bf53d72 100644 --- a/src/agentfox/capabilities/detection/detectors/secrets.py +++ b/src/agentfox/capabilities/detection/detectors/secrets.py @@ -44,7 +44,7 @@ re.compile(r"\beyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b"), 0.9, ), - ("SECRET.NOMETRIA_KEY", re.compile(r"\bnom_(?:agt|api)_[A-Za-z0-9]{16,}\b"), 0.99), + ("SECRET.AGENTFOX_KEY", re.compile(r"\bnom_(?:agt|api)_[A-Za-z0-9]{16,}\b"), 0.99), ( "SECRET.CONNECTION_STRING", re.compile( diff --git a/src/agentfox/core/config.py b/src/agentfox/core/config.py index 8ea40f80..50064f52 100644 --- a/src/agentfox/core/config.py +++ b/src/agentfox/core/config.py @@ -15,10 +15,9 @@ from pathlib import Path from typing import Any -from pydantic import PrivateAttr, field_validator, model_validator +from pydantic import PrivateAttr, field_validator from pydantic_settings import ( BaseSettings, - EnvSettingsSource, PydanticBaseSettingsSource, SettingsConfigDict, TomlConfigSettingsSource, @@ -106,33 +105,6 @@ class InsecureConfigurationError(RuntimeError): #: Env var naming an explicit config file. Deliberately *not* a Settings field: it #: decides where settings come from, so it cannot itself come from that file. CONFIG_ENV_VAR = "AGENTFOX_CONFIG" -#: The pre-rename spelling of everything below. The product was called Nometria, and -#: its environment variables are set outside this repository: in Vercel, in Render, -#: in whatever a self-hoster already wrote down. Renaming the prefix without reading -#: the old one would take production down at the moment of deploy and give a -#: self-hoster a silent revert to defaults, which for a governance product means -#: quietly running on an empty policy set. So both are read, new wins, and the old -#: one keeps working until it is deliberately retired. -LEGACY_ENV_PREFIX = "NOMETRIA_" -LEGACY_CONFIG_ENV_VAR = "NOMETRIA_CONFIG" -LEGACY_CONFIG_FILENAME = "nometria.toml" -LEGACY_CONFIG_TABLE = "nometria" -#: Legacy names read outside `Settings` (through `env()` or directly by a caller), -#: without the prefix. Together with the `Settings` fields they are the legacy -#: variables that can actually change behaviour; any other ``NOMETRIA_*`` (for -#: example the ``NOMETRIA_DATABASE_*`` family a Neon integration generates) is set -#: but read by nothing. -LEGACY_DIRECT_NAMES = frozenset( - { - "CONFIG", - "API_URL", - "API_TOKEN", - "USER", - "AUDIT_KEY", - "AGENT", - "MCP_LOG_LEVEL", - } -) #: The file `agentfox init` writes, looked up in the current working directory. DEFAULT_CONFIG_FILENAME = "agentfox.toml" #: The only table read from the file. Other tables are left for other tools. @@ -154,11 +126,9 @@ def resolve_config_file() -> Path | None: ``AGENTFOX_CONFIG`` wins and must exist — the operator named it, so a typo is an error rather than a silent fall-back to defaults. ``AGENTFOX_CONFIG=none`` turns file loading off entirely. Otherwise ``./agentfox.toml`` in the current working - directory, only if present. The pre-rename ``NOMETRIA_CONFIG`` and - ``./nometria.toml`` are still read after those, with a deprecation warning - (see :func:`legacy_settings_in_use`). + directory, only if present. """ - explicit = os.environ.get(CONFIG_ENV_VAR) or os.environ.get(LEGACY_CONFIG_ENV_VAR) + explicit = os.environ.get(CONFIG_ENV_VAR) if explicit and explicit.strip().lower() in {"none", "off", "-"}: return None # explicit opt-out: env and defaults only (tests, CI, containers) if explicit: @@ -168,10 +138,9 @@ def resolve_config_file() -> Path | None: f"{CONFIG_ENV_VAR}={explicit!r} does not point at a readable file." ) return path.resolve() - for filename in (DEFAULT_CONFIG_FILENAME, LEGACY_CONFIG_FILENAME): - candidate = Path.cwd() / filename - if candidate.is_file(): - return candidate.resolve() + candidate = Path.cwd() / DEFAULT_CONFIG_FILENAME + if candidate.is_file(): + return candidate.resolve() return None @@ -183,8 +152,7 @@ def resolve_config_file() -> Path | None: class Settings(BaseSettings): """Source precedence, highest first: init kwargs > ``AGENTFOX_*`` environment - variables > the pre-rename ``NOMETRIA_*`` ones (deprecated, with a warning) > the - ``[agentfox]`` table of the config file (see :func:`resolve_config_file`) > the + variables > the ``[agentfox]`` table of the config file (see :func:`resolve_config_file`) > the defaults below. ``.env`` files are not read. """ @@ -203,17 +171,8 @@ def settings_customise_sources( ) -> tuple[PydanticBaseSettingsSource, ...]: path = resolve_config_file() _resolved.path = path - # AGENTFOX_* first, then the pre-rename NOMETRIA_* at lower precedence, so a - # deployment that still sets only the old names keeps working unchanged and - # one that sets both gets the new name. - legacy_env = EnvSettingsSource( - settings_cls, - env_prefix=LEGACY_ENV_PREFIX, - case_sensitive=False, - ) - sources: list[PydanticBaseSettingsSource] = [init_settings, env_settings, legacy_env] + sources: list[PydanticBaseSettingsSource] = [init_settings, env_settings] toml_source = _toml_source(settings_cls, path) - warn_legacy_settings() if toml_source is not None: sources.append(toml_source) sources.extend([dotenv_settings, file_secret_settings]) @@ -721,22 +680,6 @@ def audit_signing_previous_keys(self) -> list[str]: current key.""" return split_keys(self.audit_signing_key_previous, exclude=self.audit_signing_key) - # --- ONE-TIME NOMETRIA BRIDGE ---------------------------------------------- - # Exists only in the release that migrates production off the pre-rename names; - # the next release (rename stage B) deletes this method and LEGACY_* with it. - # When both AGENTFOX_ and NOMETRIA_ are set and differ, the operator has - # put a fresh key under the new name: the old value becomes a previous key, so - # the data it protects stays readable until key rotation has moved it over. - @model_validator(mode="after") - def _nometria_keys_become_previous(self) -> Settings: - for field in ("token_encryption_key", "audit_signing_key"): - new = os.environ.get(ENV_PREFIX + field.upper()) - old = os.environ.get(LEGACY_ENV_PREFIX + field.upper()) - if new and old and new != old: - previous = f"{field}_previous" - setattr(self, previous, ",".join(filter(None, [getattr(self, previous), old]))) - return self - def split_keys(raw: str | None, *, exclude: str | None = None) -> list[str]: """A comma-separated key list, trimmed, in order, without blanks, duplicates or @@ -767,18 +710,13 @@ def _toml_source( data = tomllib.load(fh) except tomllib.TOMLDecodeError as exc: raise ConfigFileError(f"{path} is not valid TOML: {exc}") from exc - # A file written before the rename says [nometria]. Reading only [agentfox] would - # find nothing there and fall through to defaults without an error, which is the - # worst outcome: a governance product quietly running unconfigured. - header = CONFIG_TABLE if CONFIG_TABLE in data else LEGACY_CONFIG_TABLE + header = CONFIG_TABLE table = data.get(header) if table is None: log.warning("%s has no [%s] table; nothing read from it", path, CONFIG_TABLE) return None if not isinstance(table, dict): raise ConfigFileError(f"{path}: `{header}` must be a table") - # A [nometria] table is reported by warn_legacy_settings(), with every other - # pre-rename name in use, rather than by a warning of its own here. unknown = sorted(set(table) - set(settings_cls.model_fields)) if unknown: log.warning("%s: ignoring unknown [%s] key(s): %s", path, header, ", ".join(unknown)) @@ -786,109 +724,13 @@ def _toml_source( def env(name: str, default: str | None = None) -> str | None: - """One environment variable read outside `Settings`, with the legacy fallback. + """One ``AGENTFOX_`` environment variable read outside `Settings`. For the handful of switches that are read straight from the environment (a log level, the agent name `auto()` guesses, the CLI's API URL) rather than - through `Settings`. ``AGENTFOX_`` wins; ``NOMETRIA_`` keeps working, - for the same reason `LEGACY_ENV_PREFIX` exists, and is reported by the same - one-time deprecation warning. An empty value counts as unset. Add a new - ``name`` to `LEGACY_DIRECT_NAMES` so the warning and `agentfox doctor` know it - is read. - """ - value = os.environ.get(ENV_PREFIX + name) - if value: - return value - legacy = os.environ.get(LEGACY_ENV_PREFIX + name) - if legacy: - warn_legacy_settings() - return legacy - return default - - -def legacy_env_vars_set() -> list[str]: - """Every ``NOMETRIA_*`` environment variable that is set (non-empty), sorted. - - Including the ones nothing reads (shadowed by an ``AGENTFOX_*`` twin, or never - read at all, like a Neon integration's ``NOMETRIA_DATABASE_POSTGRES_URL``): this - is the list to empty before the legacy fallback is removed. - """ - return sorted(k for k, v in os.environ.items() if k.startswith(LEGACY_ENV_PREFIX) and v) - - -def _legacy_name_is_read(name: str) -> bool: - bare = name[len(LEGACY_ENV_PREFIX) :] - return bare.lower() in Settings.model_fields or bare in LEGACY_DIRECT_NAMES - - -def legacy_settings_in_use() -> list[str]: - """The pre-rename names this process actually takes a value from, sorted. - - A ``NOMETRIA_`` variable counts when ```` is something agentfox reads and - ``AGENTFOX_`` is not set (so the legacy value is the one applied). A legacy - config file counts too: ``nometria.toml`` found in the working directory, or a - file whose settings sit under ``[nometria]`` rather than ``[agentfox]``. + through `Settings`. An empty value counts as unset. """ - in_use = [ - name - for name in legacy_env_vars_set() - if _legacy_name_is_read(name) - and not os.environ.get(ENV_PREFIX + name[len(LEGACY_ENV_PREFIX) :]) - ] - try: - path = resolve_config_file() - except ConfigFileError: - path = None - if path is not None: - if path.name == LEGACY_CONFIG_FILENAME: - in_use.append(str(path)) - if _uses_legacy_table(path): - in_use.append(f"[{LEGACY_CONFIG_TABLE}] in {path}") - return in_use - - -def _uses_legacy_table(path: Path) -> bool: - try: - with path.open("rb") as fh: - data = tomllib.load(fh) - except (OSError, tomllib.TOMLDecodeError): - return False - return CONFIG_TABLE not in data and LEGACY_CONFIG_TABLE in data - - -#: What the deprecation warning has already named in this process. It fires once at -#: startup; it fires again only if a legacy name appears that it has not named yet. -_legacy_warned: set[str] = set() -_legacy_lock = threading.Lock() - - -def warn_legacy_settings() -> None: - """Log ONE deprecation warning naming every pre-rename setting in use.""" - in_use = legacy_settings_in_use() - with _legacy_lock: - new = [name for name in in_use if name not in _legacy_warned] - if not new: - return - _legacy_warned.update(in_use) - renames = ", ".join( - f"{name} -> {ENV_PREFIX}{name[len(LEGACY_ENV_PREFIX) :]}" - if name.startswith(LEGACY_ENV_PREFIX) - else f"{name} -> {DEFAULT_CONFIG_FILENAME} / [{CONFIG_TABLE}]" - for name in in_use - ) - log.warning( - "Deprecated pre-rename (Nometria) settings in use: %s. They still work for now, " - "but support for them will be removed; rename them (%s). `agentfox doctor` " - "lists every legacy variable still set.", - ", ".join(in_use), - renames, - ) - - -def reset_legacy_warning() -> None: - """Test hook — forget which legacy names were already warned about.""" - with _legacy_lock: - _legacy_warned.clear() + return os.environ.get(ENV_PREFIX + name) or default def is_development(settings: Settings | None = None) -> bool: diff --git a/src/agentfox/core/headers.py b/src/agentfox/core/headers.py deleted file mode 100644 index 943b352e..00000000 --- a/src/agentfox/core/headers.py +++ /dev/null @@ -1,68 +0,0 @@ -"""The product's HTTP header names, and the pre-rename spelling still accepted. - -Every header agentfox emits is ``X-AgentFox-*``. Until the legacy spelling is -retired, every header it *reads* is accepted as either ``x-agentfox-`` or the -pre-rename ``x-nometria-``, with the new one winning when a request carries -both: a client that has not been updated yet keeps working, and one that has is -never overridden by a stale header it forgot to remove. - -Two ways in, depending on who holds the request: - -* the gateway rewrites the raw ASGI headers once, in `LegacyHeaderMiddleware` - (``agentfox.apps.gateway.app``), via :func:`normalize_asgi_headers`, so every - route below it declares and reads only the ``x-agentfox-*`` names; -* code reading a headers mapping it does not own (the FastAPI middleware in a - customer's app, the SDK reading a gateway response) calls :func:`get_header`. -""" - -from __future__ import annotations - -from collections.abc import Iterable, Mapping - -PREFIX = "x-agentfox-" -#: Accepted on input only, never emitted. Removed when the rename is finished. -LEGACY_PREFIX = "x-nometria-" - - -def name(suffix: str) -> str: - """``x-agentfox-``, lower-case (header names are case-insensitive).""" - return PREFIX + suffix.lower() - - -def get_header(headers: Mapping[str, str], suffix: str) -> str | None: - """The value of ``x-agentfox-``, else of ``x-nometria-``. - - ``headers`` must be case-insensitive (Starlette's and httpx's ``Headers`` are). - An empty value counts as absent. - """ - return headers.get(PREFIX + suffix) or headers.get(LEGACY_PREFIX + suffix) or None - - -def normalize_asgi_headers(raw: Iterable[tuple[bytes, bytes]]) -> list[tuple[bytes, bytes]]: - """Raw ASGI headers with every ``x-nometria-*`` renamed to ``x-agentfox-*``. - - A legacy header is dropped when the request also carries its ``x-agentfox-*`` - twin (the new name wins); otherwise it is renamed in place. Nothing else is - touched, and the order of the remaining headers is kept. With no legacy header - present the input list itself is returned. - """ - if not isinstance(raw, list): - raw = list(raw) - legacy = LEGACY_PREFIX.encode() - if not any(key.lower().startswith(legacy) for key, _ in raw): - return raw - present = {key.lower() for key, _ in raw} - out: list[tuple[bytes, bytes]] = [] - for key, value in raw: - lowered = key.lower() - if lowered.startswith(legacy): - renamed = PREFIX.encode() + lowered[len(legacy) :] - if renamed in present: - continue - out.append((renamed, value)) - else: - out.append((key, value)) - return out - - -__all__ = ["LEGACY_PREFIX", "PREFIX", "get_header", "name", "normalize_asgi_headers"] diff --git a/src/agentfox/exporters/correlation.py b/src/agentfox/exporters/correlation.py index d529d1d7..c84c5440 100644 --- a/src/agentfox/exporters/correlation.py +++ b/src/agentfox/exporters/correlation.py @@ -54,26 +54,9 @@ # Header names we accept, most specific first. Vendor SDKs and proxies disagree on # spelling, and a join key missed because of a hyphen is a join key we do not have. -# The pre-rename x-nometria-* spelling is still accepted, after x-agentfox-*. _HEADER_MAP: list[tuple[str, tuple[str, ...]]] = [ - ( - LANGSMITH, - ( - "x-agentfox-langsmith-trace", - "x-nometria-langsmith-trace", - "langsmith-trace-id", - "x-langsmith-trace-id", - ), - ), - ( - LANGFUSE, - ( - "x-agentfox-langfuse-trace", - "x-nometria-langfuse-trace", - "langfuse-trace-id", - "x-langfuse-trace-id", - ), - ), + (LANGSMITH, ("x-agentfox-langsmith-trace", "langsmith-trace-id", "x-langsmith-trace-id")), + (LANGFUSE, ("x-agentfox-langfuse-trace", "langfuse-trace-id", "x-langfuse-trace-id")), ] _RUN_HEADER_MAP: list[tuple[str, tuple[str, ...]]] = [ (LANGSMITH, ("langsmith-run-id", "x-langsmith-run-id")), diff --git a/src/agentfox/frameworks/autoguard/environment.py b/src/agentfox/frameworks/autoguard/environment.py index fa305c10..db1d9b6d 100644 --- a/src/agentfox/frameworks/autoguard/environment.py +++ b/src/agentfox/frameworks/autoguard/environment.py @@ -87,7 +87,7 @@ def default_agent_slug() -> str: than a required argument — the developer can rename the agent in the registry later, and until then their traffic is at least attributed to *something*. """ - explicit = env("AGENT") # AGENTFOX_AGENT, or the deprecated NOMETRIA_AGENT + explicit = env("AGENT") # AGENTFOX_AGENT if explicit: return explicit for var in ( diff --git a/src/agentfox/frameworks/fastapi.py b/src/agentfox/frameworks/fastapi.py index 53ab0d42..4537cd67 100644 --- a/src/agentfox/frameworks/fastapi.py +++ b/src/agentfox/frameworks/fastapi.py @@ -31,7 +31,6 @@ from typing import Any from agentfox.core.db import session_scope -from agentfox.core.headers import get_header from agentfox.exporters.correlation import link_trace, refs_from_headers from agentfox.platform.ledger.trace import end_trace, start_trace from agentfox.runtime.enforcement import EnforcementResult, Enforcer @@ -52,8 +51,7 @@ #: Headers the middleware reads, matching the gateway's so a team can move between -#: the proxy and in-process enforcement without changing their client. The -#: pre-rename ``x-nometria-*`` spelling of each is still accepted, after these. +#: the proxy and in-process enforcement without changing their client. AGENT_HEADER = "x-agentfox-agent" SESSION_HEADER = "x-agentfox-session" INTENT_HEADER = "x-agentfox-intent" @@ -95,10 +93,10 @@ async def dispatch( started = time.perf_counter() headers = dict(request.headers) request.state.agentfox = GovernanceContext( - agent=get_header(headers, "agent"), - session_id=get_header(headers, "session"), - intent=get_header(headers, "intent"), - user_principal=get_header(headers, "user-principal"), + agent=headers.get(AGENT_HEADER), + session_id=headers.get(SESSION_HEADER), + intent=headers.get(INTENT_HEADER), + user_principal=headers.get(USER_HEADER), correlation=headers, ) refs = refs_from_headers(headers) diff --git a/src/agentfox/frameworks/langgraph.py b/src/agentfox/frameworks/langgraph.py index 44a50061..63a85034 100644 --- a/src/agentfox/frameworks/langgraph.py +++ b/src/agentfox/frameworks/langgraph.py @@ -60,7 +60,7 @@ log = logging.getLogger(__name__) #: Key under which we stash governance state inside the graph's state dict. -STATE_KEY = "__nometria__" +STATE_KEY = "__agentfox__" #: How much of each retrieval the governance state keeps for taint inference, and how #: many retrievals. Graph state is checkpointed, so it is bounded. @@ -148,7 +148,7 @@ def _carry(self, state: Any, **changes: Any) -> dict[str, Any]: """The incoming governance state with ``changes`` applied, as a node update. Carried whole rather than written as a delta: a state schema without a - merging reducer on ``__nometria__`` replaces the value on every write, and a + merging reducer on ``__agentfox__`` replaces the value on every write, and a tool node writing only ``tools_called`` would erase the trace id and what was retrieved. """ diff --git a/src/agentfox/frameworks/sdk/__init__.py b/src/agentfox/frameworks/sdk/__init__.py index 9e8f0162..25a1bdd9 100644 --- a/src/agentfox/frameworks/sdk/__init__.py +++ b/src/agentfox/frameworks/sdk/__init__.py @@ -42,7 +42,6 @@ def transfer(amount, currency, to): ... from agentfox.capabilities.detection import TaintTracker from agentfox.core.db import session_scope -from agentfox.core.headers import get_header # One class each, shared with the LangGraph integration and under `AgentFoxError`: # see `agentfox.errors`. @@ -541,12 +540,11 @@ def _remote_complete(self, **kwargs: Any) -> tuple[EnforcementResult, Any]: timeout=self.timeout, ) result = EnforcementResult( - # get_header: x-agentfox-*, or x-nometria-* from a pre-rename gateway. - verdict=get_header(response.headers, "verdict") or "allow", - effective_verdict=get_header(response.headers, "effective-verdict") or "allow", - mode=get_header(response.headers, "mode") or "observe", - trace_id=get_header(response.headers, "trace"), - decision_id=get_header(response.headers, "decision"), + verdict=response.headers.get("X-AgentFox-Verdict", "allow"), + effective_verdict=response.headers.get("X-AgentFox-Effective-Verdict", "allow"), + mode=response.headers.get("X-AgentFox-Mode", "observe"), + trace_id=response.headers.get("X-AgentFox-Trace"), + decision_id=response.headers.get("X-AgentFox-Decision"), ) if response.status_code == 403: error = response.json().get("error", {}) diff --git a/src/agentfox/platform/policy/opa.py b/src/agentfox/platform/policy/opa.py index dd04bdd9..d122d77f 100644 --- a/src/agentfox/platform/policy/opa.py +++ b/src/agentfox/platform/policy/opa.py @@ -177,7 +177,7 @@ def available(self) -> bool: def put_policy(self, policy: PolicyDocument) -> None: module = policy.key.replace("-", "_") httpx.put( - f"{self.url}/v1/policies/nometria_{module}", + f"{self.url}/v1/policies/agentfox_{module}", content=compile_to_rego(policy), headers={"Content-Type": "text/plain"}, timeout=5.0, diff --git a/tests/apps/cli/test_first_operator.py b/tests/apps/cli/test_first_operator.py index 7cb3026d..44719dfe 100644 --- a/tests/apps/cli/test_first_operator.py +++ b/tests/apps/cli/test_first_operator.py @@ -3,7 +3,7 @@ Before: `admin auth issue` on a fresh database failed "unknown user", and the only ways to create one were GitHub sign-in or `admin seed`, which also loads demo agents and traffic into what is meant to be a production database. -Also #22: `admin auth status` advised the pre-rename NOMETRIA_* variables. +Also #22: `admin auth status` advises the AGENTFOX_* variables. """ from __future__ import annotations @@ -74,4 +74,3 @@ def test_auth_status_advises_agentfox_variables(): result = runner.invoke(app, ["admin", "auth", "status"]) assert result.exit_code == 0, result.output assert "AGENTFOX_ENVIRONMENT=production" in flat(result.output) - assert "NOMETRIA_" not in result.output diff --git a/tests/apps/cli/test_quickscan.py b/tests/apps/cli/test_quickscan.py index 24654e4e..69c976e0 100644 --- a/tests/apps/cli/test_quickscan.py +++ b/tests/apps/cli/test_quickscan.py @@ -97,11 +97,7 @@ def _boom(*a, **k): def test_submit_without_a_configured_control_plane_fails_gracefully(tmp_path: Path, monkeypatch): - # Both names, because submit.py accepts AGENTFOX_ with NOMETRIA_ as the - # legacy alias — unsetting only one leaves the other able to satisfy the - # check this test exists to exercise. monkeypatch.delenv("AGENTFOX_API_URL", raising=False) - monkeypatch.delenv("NOMETRIA_API_URL", raising=False) result = runner.invoke(app, ["scan", "sessions", str(tmp_path), "--skip-sessions", "--submit"]) assert result.exit_code == 0, result.output assert "Could not submit" in flat(result.output) diff --git a/tests/apps/report/test_report.py b/tests/apps/report/test_report.py index 9725bec0..df691236 100644 --- a/tests/apps/report/test_report.py +++ b/tests/apps/report/test_report.py @@ -175,7 +175,6 @@ def test_evidence_package_opens_on_the_summary(seeded, enforcer): assert summary_md.startswith("# AgentFox summary") assert "SUMMARY.md" in package.manifest_json["files"] assert readme.startswith("AGENTFOX EVIDENCE PACKAGE") - assert "NOMETRIA" not in readme.splitlines()[0] def test_board_computes_control_status_itself(seeded): diff --git a/tests/capabilities/grounding/test_entitlement.py b/tests/capabilities/grounding/test_entitlement.py index 4ad740fb..77c6ad56 100644 --- a/tests/capabilities/grounding/test_entitlement.py +++ b/tests/capabilities/grounding/test_entitlement.py @@ -215,7 +215,6 @@ def test_the_openfga_hint_names_the_current_variable(): source = inspect.getsource(OpenFgaEngine.visible) assert "AGENTFOX_ENTITLEMENT_ENGINE" in source - assert "NOMETRIA_" not in source def test_the_over_permission_report_works_with_no_entitlement_model(isolated_db): diff --git a/tests/conftest.py b/tests/conftest.py index b64ed11a..8c7fbeb4 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -54,17 +54,12 @@ def isolated_db(tmp_path, monkeypatch) -> Iterator[None]: # A developer's shell AGENTFOX_CONFIG, or a agentfox.toml left in the cwd by # `agentfox init`, must never leak into a test. Tests of file loading delenv this. monkeypatch.setenv("AGENTFOX_CONFIG", "none") - # Nor may a pre-rename NOMETRIA_* variable from that shell: it would be read as a - # fallback. Tests of the fallback set the ones they need. - for name in [n for n in os.environ if n.startswith("NOMETRIA_")]: - monkeypatch.delenv(name, raising=False) from agentfox.core import db - from agentfox.core.config import get_settings, reset_legacy_warning, reset_settings_cache + from agentfox.core.config import get_settings, reset_settings_cache from agentfox.runtime.availability import reset_admission_controller reset_settings_cache() - reset_legacy_warning() db.reset_engine() get_settings() db.init_db() diff --git a/tests/core/test_config_file.py b/tests/core/test_config_file.py index bd65deb0..2d7227eb 100644 --- a/tests/core/test_config_file.py +++ b/tests/core/test_config_file.py @@ -24,16 +24,11 @@ def workdir(tmp_path, monkeypatch): cwd = tmp_path / "project" cwd.mkdir() monkeypatch.chdir(cwd) - # Both spellings, because Settings reads both prefixes and the current one wins. for var in ( "AGENTFOX_CONFIG", - "NOMETRIA_CONFIG", "AGENTFOX_ENVIRONMENT", "AGENTFOX_DEFAULT_POLICY_MODE", "AGENTFOX_ENABLED_DETECTORS", - "NOMETRIA_ENVIRONMENT", - "NOMETRIA_DEFAULT_POLICY_MODE", - "NOMETRIA_ENABLED_DETECTORS", ): monkeypatch.delenv(var, raising=False) reset_settings_cache() diff --git a/tests/core/test_legacy_names.py b/tests/core/test_legacy_names.py deleted file mode 100644 index 5fdd4558..00000000 --- a/tests/core/test_legacy_names.py +++ /dev/null @@ -1,292 +0,0 @@ -"""The pre-rename (Nometria) names: still read, never written, and said out loud. - -Stage A of finishing the rename. Production still sets ``NOMETRIA_*`` variables, so -they keep working as a fallback below ``AGENTFOX_*``; but the process says so once at -startup, naming each one in use, and ``agentfox doctor`` lists every one still set, -so the deployment can be renamed before the fallback is removed. Same for a -``nometria.toml`` / ``[nometria]`` config file, and for ``x-nometria-*`` request -headers, which are accepted with ``x-agentfox-*`` winning and never emitted. -""" - -from __future__ import annotations - -import json -import logging - -import pytest -from typer.testing import CliRunner - -from agentfox.core.config import ( - env, - get_settings, - legacy_env_vars_set, - legacy_settings_in_use, - reset_settings_cache, -) -from agentfox.core.headers import get_header, normalize_asgi_headers -from tests.conftest import as_user - -LOGGER = "agentfox.core.config" - - -def fresh(): - reset_settings_cache() - return get_settings() - - -def legacy_warnings(caplog) -> list[logging.LogRecord]: - return [r for r in caplog.records if r.name == LOGGER and "Deprecated pre-rename" in r.message] - - -@pytest.fixture -def workdir(tmp_path, monkeypatch): - """A clean cwd with config-file loading on, and no config file yet.""" - cwd = tmp_path / "project" - cwd.mkdir() - monkeypatch.chdir(cwd) - monkeypatch.delenv("AGENTFOX_CONFIG", raising=False) - monkeypatch.delenv("AGENTFOX_ENVIRONMENT", raising=False) - reset_settings_cache() - yield cwd - reset_settings_cache() - - -# --- environment variables ---------------------------------------------------- - - -def test_legacy_env_var_still_reaches_settings(monkeypatch): - monkeypatch.delenv("AGENTFOX_ENFORCEMENT_BUDGET_MS", raising=False) - monkeypatch.setenv("NOMETRIA_ENFORCEMENT_BUDGET_MS", "123") - assert fresh().enforcement_budget_ms == 123 - - -def test_agentfox_wins_over_the_legacy_name(monkeypatch): - monkeypatch.setenv("NOMETRIA_ENFORCEMENT_BUDGET_MS", "123") - monkeypatch.setenv("AGENTFOX_ENFORCEMENT_BUDGET_MS", "456") - assert fresh().enforcement_budget_ms == 456 - - -def test_one_startup_warning_names_every_legacy_variable_in_use(monkeypatch, caplog): - monkeypatch.setenv("NOMETRIA_ENFORCEMENT_BUDGET_MS", "123") - monkeypatch.setenv("NOMETRIA_FAIL_MODE", "closed") - # Shadowed by its AGENTFOX_ twin: set, but not the value in use. - monkeypatch.setenv("NOMETRIA_ALLOW_EGRESS", "true") - # What a Neon integration with the old prefix generates: read by nothing. - monkeypatch.setenv("NOMETRIA_DATABASE_POSTGRES_URL", "postgres://example/neon") - with caplog.at_level(logging.WARNING, logger=LOGGER): - fresh() - fresh() # a second Settings() in the same process says nothing new - assert env("ENFORCEMENT_BUDGET_MS") == "123" - warnings = legacy_warnings(caplog) - assert len(warnings) == 1 - message = warnings[0].getMessage() - assert "NOMETRIA_ENFORCEMENT_BUDGET_MS" in message - assert "NOMETRIA_FAIL_MODE" in message - assert "AGENTFOX_FAIL_MODE" in message # says what to rename it to - assert "NOMETRIA_ALLOW_EGRESS" not in message - assert "NOMETRIA_DATABASE_POSTGRES_URL" not in message - - -def test_no_warning_without_legacy_names(caplog): - with caplog.at_level(logging.WARNING, logger=LOGGER): - fresh() - assert legacy_warnings(caplog) == [] - - -def test_set_vs_in_use(monkeypatch): - monkeypatch.setenv("NOMETRIA_FAIL_MODE", "closed") - monkeypatch.setenv("NOMETRIA_ALLOW_EGRESS", "true") # shadowed (conftest sets AGENTFOX_) - monkeypatch.setenv("NOMETRIA_DATABASE_POSTGRES_URL", "postgres://example/neon") - assert legacy_settings_in_use() == ["NOMETRIA_FAIL_MODE"] - assert legacy_env_vars_set() == [ - "NOMETRIA_ALLOW_EGRESS", - "NOMETRIA_DATABASE_POSTGRES_URL", - "NOMETRIA_FAIL_MODE", - ] - - -def test_direct_env_reads_prefer_agentfox_and_keep_the_legacy_name(monkeypatch, caplog): - """Switches read outside Settings follow Settings' own precedence and warning.""" - monkeypatch.delenv("AGENTFOX_MCP_LOG_LEVEL", raising=False) - assert env("MCP_LOG_LEVEL", "WARNING") == "WARNING" - monkeypatch.setenv("NOMETRIA_MCP_LOG_LEVEL", "INFO") - with caplog.at_level(logging.WARNING, logger=LOGGER): - assert env("MCP_LOG_LEVEL") == "INFO" - assert "NOMETRIA_MCP_LOG_LEVEL" in legacy_warnings(caplog)[0].getMessage() - monkeypatch.setenv("AGENTFOX_MCP_LOG_LEVEL", "DEBUG") - assert env("MCP_LOG_LEVEL") == "DEBUG" - - -def test_auto_agent_name_reads_agentfox_agent_first(monkeypatch): - from agentfox.frameworks.autoguard import default_agent_slug - - monkeypatch.delenv("AGENTFOX_AGENT", raising=False) - monkeypatch.setenv("NOMETRIA_AGENT", "old-name") - assert default_agent_slug() == "old-name" - monkeypatch.setenv("AGENTFOX_AGENT", "support-bot") - assert default_agent_slug() == "support-bot" - - -def test_submit_reads_the_legacy_api_url(monkeypatch): - from agentfox.apps.cli import submit - - monkeypatch.delenv("AGENTFOX_API_URL", raising=False) - monkeypatch.delenv("AGENTFOX_API_TOKEN", raising=False) - monkeypatch.delenv("AGENTFOX_USER", raising=False) - monkeypatch.setenv("NOMETRIA_API_URL", "https://plane.example.internal") - # No credential: it gets as far as asking for one, so the URL was found. - with pytest.raises(submit.SubmissionUnavailable, match="no credentials"): - submit.submit_scan_report(object(), source="check") # type: ignore[arg-type] - - -# --- config file -------------------------------------------------------------- - - -def test_nometria_toml_is_still_read_with_the_warning(workdir, caplog): - (workdir / "nometria.toml").write_text('[nometria]\nenvironment = "staging"\n') - with caplog.at_level(logging.WARNING, logger=LOGGER): - settings = fresh() - assert settings.environment == "staging" - assert settings.config_file == (workdir / "nometria.toml").resolve() - message = legacy_warnings(caplog)[0].getMessage() - assert "nometria.toml" in message - assert "[nometria]" in message - - -def test_agentfox_toml_wins_over_nometria_toml(workdir, caplog): - (workdir / "agentfox.toml").write_text('[agentfox]\nenvironment = "staging"\n') - (workdir / "nometria.toml").write_text('[nometria]\nenvironment = "old"\n') - with caplog.at_level(logging.WARNING, logger=LOGGER): - assert fresh().environment == "staging" - assert legacy_warnings(caplog) == [] - - -def test_legacy_table_in_agentfox_toml_is_read_with_the_warning(workdir, caplog): - (workdir / "agentfox.toml").write_text('[nometria]\nenvironment = "staging"\n') - with caplog.at_level(logging.WARNING, logger=LOGGER): - assert fresh().environment == "staging" - assert "[nometria]" in legacy_warnings(caplog)[0].getMessage() - - -def test_legacy_config_env_var_points_at_a_file(workdir, tmp_path, monkeypatch, caplog): - elsewhere = tmp_path / "custom.toml" - elsewhere.write_text('[agentfox]\nenvironment = "explicit"\n') - monkeypatch.setenv("NOMETRIA_CONFIG", str(elsewhere)) - with caplog.at_level(logging.WARNING, logger=LOGGER): - assert fresh().environment == "explicit" - assert "NOMETRIA_CONFIG" in legacy_warnings(caplog)[0].getMessage() - - -# --- agentfox doctor ---------------------------------------------------------- - - -def _doctor() -> dict[str, dict]: - from agentfox.apps.cli.main import app - - reset_settings_cache() - result = CliRunner().invoke(app, ["doctor", "--json"]) - start = result.output.index("[") - end = result.output.rindex("]") + 1 - return {row["check"]: row for row in json.loads(result.output[start:end])} - - -def test_doctor_lists_legacy_variables_still_set(monkeypatch): - monkeypatch.setenv("NOMETRIA_FAIL_MODE", "closed") - monkeypatch.setenv("NOMETRIA_DATABASE_POSTGRES_URL", "postgres://example/neon") - row = _doctor()["legacy names"] - assert row["state"] == "warn" - assert "in use: NOMETRIA_FAIL_MODE" in row["detail"] - assert "NOMETRIA_DATABASE_POSTGRES_URL" in row["detail"] - assert "AGENTFOX_" in row["detail"] - - -def test_doctor_is_clean_without_legacy_names(): - row = _doctor()["legacy names"] - assert row["state"] == "ok" - - -# --- headers ------------------------------------------------------------------ - - -def test_normalize_renames_legacy_headers_and_the_new_name_wins(): - raw = [ - (b"x-nometria-agent", b"old-agent"), - (b"X-Nometria-Session", b"s-1"), - (b"x-agentfox-agent", b"new-agent"), - (b"content-type", b"application/json"), - ] - assert normalize_asgi_headers(raw) == [ - (b"x-agentfox-session", b"s-1"), - (b"x-agentfox-agent", b"new-agent"), - (b"content-type", b"application/json"), - ] - untouched = [(b"x-agentfox-agent", b"a")] - assert normalize_asgi_headers(untouched) is untouched - - -def test_get_header_prefers_the_new_name(): - assert get_header({"x-nometria-agent": "old"}, "agent") == "old" - assert get_header({"x-nometria-agent": "old", "x-agentfox-agent": "new"}, "agent") == "new" - assert get_header({}, "agent") is None - - -def test_gateway_accepts_the_legacy_user_header_and_prefers_the_new_one(client): - legacy = client.get("/api/me", headers={"X-Nometria-User": "marcus@example.com"}) - assert legacy.status_code == 200, legacy.text - assert legacy.json()["email"] == "marcus@example.com" - both = client.get( - "/api/me", - headers={**as_user("admin@example.com"), "X-Nometria-User": "marcus@example.com"}, - ) - assert both.json()["email"] == "admin@example.com" - - -def _completion(client, headers): - response = client.post( - "/v1/chat/completions", - json={"model": "echo-1", "messages": [{"role": "user", "content": "hello"}]}, - headers=headers, - ) - assert response.status_code == 200, response.text - return response - - -def _agent_of(trace_id: str) -> str: - from agentfox.core.db import session_scope - from agentfox.core.models import Agent, Trace - - with session_scope() as session: - trace = session.get(Trace, trace_id) - return session.get(Agent, trace.agent_id).slug - - -def test_inline_route_accepts_legacy_headers_and_emits_only_new_ones(client): - response = _completion( - client, - {"X-Nometria-Agent": "support-triage", "x-nometria-langfuse-trace": "lf-legacy"}, - ) - emitted = {k.lower() for k in response.headers} - assert "x-agentfox-trace" in emitted - assert "x-agentfox-verdict" in emitted - assert not [k for k in emitted if k.startswith("x-nometria-")] - trace_id = response.headers["X-AgentFox-Trace"] - assert _agent_of(trace_id) == "support-triage" - body = client.get(f"/api/traces/{trace_id}", headers=as_user("admin@example.com")).json() - assert body["links"][0]["external_trace_id"] == "lf-legacy" - - -def test_inline_route_prefers_the_new_header_when_both_are_sent(client): - response = _completion( - client, - {"X-AgentFox-Agent": "support-triage", "X-Nometria-Agent": "someone-else"}, - ) - assert _agent_of(response.headers["X-AgentFox-Trace"]) == "support-triage" - - -def test_correlation_prefers_the_new_header(): - from agentfox.exporters.correlation import refs_from_headers - - refs = refs_from_headers( - {"x-nometria-langfuse-trace": "old", "x-agentfox-langfuse-trace": "new"} - ) - assert [r.external_trace_id for r in refs] == ["new"] diff --git a/tests/frameworks/test_langgraph_real_graph.py b/tests/frameworks/test_langgraph_real_graph.py index 33c045bf..a98c0893 100644 --- a/tests/frameworks/test_langgraph_real_graph.py +++ b/tests/frameworks/test_langgraph_real_graph.py @@ -44,7 +44,7 @@ def _keep_latest(old: dict, new: dict) -> dict: class State(TypedDict, total=False): messages: Annotated[list, add_messages] docs: str - __nometria__: Annotated[dict[str, Any], _keep_latest] + __agentfox__: Annotated[dict[str, Any], _keep_latest] class PlainState(TypedDict, total=False): @@ -52,7 +52,7 @@ class PlainState(TypedDict, total=False): messages: Annotated[list, add_messages] docs: str - __nometria__: dict[str, Any] + __agentfox__: dict[str, Any] @pytest.fixture diff --git a/tests/platform/test_key_rotation.py b/tests/platform/test_key_rotation.py index bee9df24..d86aa921 100644 --- a/tests/platform/test_key_rotation.py +++ b/tests/platform/test_key_rotation.py @@ -2,8 +2,8 @@ Covers `core.crypto` (decrypt with a previous key), `platform.keys.rotation` (re-encrypt, re-sign, the `audit.key_rotated` entry, idempotency, what it refuses to -touch), the scheduler hook, the CLI, `/api/version`, the one-time NOMETRIA_ bridge in -`core.config`, and that no key value ever leaves the process in any of them. +touch), the scheduler hook, the CLI, `/api/version`, and that no key value ever leaves +the process in any of them. """ from __future__ import annotations @@ -412,71 +412,6 @@ def test_no_key_value_reaches_logs_audit_entries_or_reports(monkeypatch, caplog) assert secret not in haystack -# --------------------------------------------------------------------------- -# the one-time NOMETRIA_ bridge -# --------------------------------------------------------------------------- - - -@pytest.mark.parametrize( - ("agentfox", "nometria", "expected"), - [ - (NEW_TOKEN_KEY, OLD_TOKEN_KEY, [OLD_TOKEN_KEY]), # both set, differ: bridged - (NEW_TOKEN_KEY, NEW_TOKEN_KEY, []), # same value: nothing to rotate - (NEW_TOKEN_KEY, None, []), # only the new name - (None, OLD_TOKEN_KEY, []), # only the old name: it is the current key - ], -) -def test_bridge_makes_the_nometria_key_previous_only_when_both_differ( - monkeypatch, agentfox, nometria, expected -): - _configure( - monkeypatch, - AGENTFOX_TOKEN_ENCRYPTION_KEY=agentfox, - NOMETRIA_TOKEN_ENCRYPTION_KEY=nometria, - AGENTFOX_AUDIT_SIGNING_KEY=NEW_AUDIT_KEY if agentfox else None, - NOMETRIA_AUDIT_SIGNING_KEY=(OLD_AUDIT_KEY if nometria != agentfox else NEW_AUDIT_KEY) - if nometria - else None, - ) - settings = get_settings() - assert settings.token_encryption_previous_keys == expected - assert settings.audit_signing_previous_keys == ([OLD_AUDIT_KEY] if expected else []) - assert settings.token_encryption_key == (agentfox or nometria) - - -def test_bridge_adds_to_an_explicit_previous_list(monkeypatch): - third = Fernet.generate_key().decode() - _configure( - monkeypatch, - AGENTFOX_TOKEN_ENCRYPTION_KEY=NEW_TOKEN_KEY, - AGENTFOX_TOKEN_ENCRYPTION_KEY_PREVIOUS=third, - NOMETRIA_TOKEN_ENCRYPTION_KEY=OLD_TOKEN_KEY, - ) - assert get_settings().token_encryption_previous_keys == [third, OLD_TOKEN_KEY] - - -def test_bridge_end_to_end(monkeypatch): - """Production's case: data under NOMETRIA_* keys, fresh AGENTFOX_* keys added.""" - _seed_under_old_keys(monkeypatch) - _configure( - monkeypatch, - AGENTFOX_TOKEN_ENCRYPTION_KEY=NEW_TOKEN_KEY, - AGENTFOX_AUDIT_SIGNING_KEY=NEW_AUDIT_KEY, - NOMETRIA_TOKEN_ENCRYPTION_KEY=OLD_TOKEN_KEY, - NOMETRIA_AUDIT_SIGNING_KEY=OLD_AUDIT_KEY, - ) - with session_scope() as s: - report = _report(s) - assert report["token_encryption"]["reencrypted"] == 2 - assert report["audit_signing"]["resigned"] == 1 - # The NOMETRIA_* variables are deleted afterwards: nothing breaks. - _configure(monkeypatch, NOMETRIA_TOKEN_ENCRYPTION_KEY=None, NOMETRIA_AUDIT_SIGNING_KEY=None) - with session_scope() as s: - assert chain.verify_range(s).valid - for row in s.scalars(select(AgentSigningKey)): - assert decrypt_secret(row.key_encrypted) == "hmac-secret" - - def test_rotation_is_atomic_per_column(monkeypatch): """A failure part-way through a column rolls that whole column back; the other columns still rotate.""" diff --git a/tests/repo/test_env_var_names.py b/tests/repo/test_env_var_names.py index 181fa3bb..bdfac706 100644 --- a/tests/repo/test_env_var_names.py +++ b/tests/repo/test_env_var_names.py @@ -1,80 +1,9 @@ -"""What the product tells people to set is the current name. - -Every setting is read as ``AGENTFOX_`` first and ``NOMETRIA_`` second -(core/config.py), so the old names keep working. What went wrong is the text: some -fifty error messages, hints and generated-file comments still told a new user to set -``NOMETRIA_ALLOW_EGRESS`` or ``NOMETRIA_TOKEN_ENCRYPTION_KEY`` — a name they have no -other reason to know, for a product that is not called that. - -So: no string in the package names a ``NOMETRIA_*`` variable, except in the few -modules whose job is reading the legacy name as a fallback, where saying it is the -point. -""" +"""What the product tells people to set is the current name: ``AGENTFOX_``.""" from __future__ import annotations -import ast -import re -from pathlib import Path - -REPO = Path(__file__).resolve().parents[2] -SRC = REPO / "src" / "agentfox" - -#: Modules that read the legacy names on purpose and say so. -LEGACY_READERS = { - "core/config.py", # the fallback itself - "apps/report/evidence.py", # old audit-key names, for packages signed under them - "capabilities/detection/detectors/secrets.py", # a detector label, not a variable -} - -#: Modules that accept the pre-rename x-nometria-* request headers on purpose. -LEGACY_HEADER_READERS = { - "core/headers.py", # the input-side fallback itself - "exporters/correlation.py", # x-nometria-langfuse-trace / -langsmith-trace -} -LEGACY_HEADER = re.compile(r"x[-_]nometria[-_]", re.I) - -LEGACY = re.compile(r"\bNOMETRIA_[A-Z*]") -#: A mention that explicitly calls the old name the old name is fine. -SAYS_LEGACY = re.compile(r"legacy|older|old name|pre-rename|still (read|accepted)", re.I) - - -def _strings(path: Path) -> list[tuple[int, str]]: - tree = ast.parse(path.read_text(encoding="utf-8")) - out = [] - for node in ast.walk(tree): - if isinstance(node, ast.Constant) and isinstance(node.value, str): - out.append((node.lineno, node.value)) - return out - - -def test_no_user_facing_string_names_a_nometria_variable(): - offenders = [] - for path in sorted(SRC.rglob("*.py")): - rel = path.relative_to(SRC).as_posix() - if rel in LEGACY_READERS: - continue - for lineno, text in _strings(path): - for line in text.splitlines(): - if LEGACY.search(line) and not SAYS_LEGACY.search(line): - offenders.append(f"{rel}:{lineno}: {line.strip()[:100]}") - assert offenders == [], "use AGENTFOX_* in text:\n" + "\n".join(offenders) - def test_generated_config_names_the_current_prefix(): from agentfox.apps.cli.onboarding import _CONFIG_TEMPLATE assert "AGENTFOX_*" in _CONFIG_TEMPLATE - - -def test_no_header_the_package_emits_or_documents_is_x_nometria(): - """Headers are X-AgentFox-*. The old spelling is accepted in exactly one place.""" - offenders = [] - for path in sorted(SRC.rglob("*.py")): - rel = path.relative_to(SRC).as_posix() - if rel in LEGACY_HEADER_READERS: - continue - for lineno, line in enumerate(path.read_text(encoding="utf-8").splitlines(), 1): - if LEGACY_HEADER.search(line) and not SAYS_LEGACY.search(line): - offenders.append(f"{rel}:{lineno}: {line.strip()[:100]}") - assert offenders == [], "use X-AgentFox-* headers:\n" + "\n".join(offenders)