diff --git a/e2e/local/codex-plugins.test.ts b/e2e/local/codex-plugins.test.ts new file mode 100644 index 000000000..db573e8d9 --- /dev/null +++ b/e2e/local/codex-plugins.test.ts @@ -0,0 +1,222 @@ +// Codex plugins as one-click stdio presets. +// +// The server-side scanner reads `$CODEX_HOME` and reports locally installed +// OpenAI Codex plugins with stdio MCP servers: the three curated ones the +// shared "Codex Computer Use" client binary implements (Apple Messages, +// Computer Use, Computer History) plus anything in the plugin cache with a +// local-command `.mcp.json`. This scenario boots the real local server with +// `CODEX_HOME` pointed at a fixture layout whose "client binary" is a wrapper +// around the e2e stdio MCP fixture, and drives the same API the add-form's +// Codex-plugins section uses: +// +// 1. `mcp.listCodexPlugins` reports the curated entries and the scanned +// cache entry, all available. +// 2. Adding an entry with its reported recipe (the one-click card path) +// registers the integration, auto-connects, and detects its tools — +// including `saw_codex_home`, which the fixture advertises only when +// CODEX_HOME actually reached the spawned subprocess. +import { mkdirSync, mkdtempSync, writeFileSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; + +import { expect } from "@effect/vitest"; +import { Effect } from "effect"; +import { HttpApiClient } from "effect/unstable/httpapi"; +import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/unstable/http"; +import { composePluginApi } from "@executor-js/api/server"; +import { mcpHttpPlugin } from "@executor-js/plugin-mcp/api"; + +import { scenario } from "../src/scenario"; +import { Cli, RunDir } from "../src/services"; +import { withLocalServer } from "./local-server"; + +const api = composePluginApi([mcpHttpPlugin()] as const); + +const FIXTURE = fileURLToPath(new URL("./fixtures/stdio-mcp-server.mjs", import.meta.url)); +const CHROME_CLIENT_RELATIVE = join( + "plugins", + "cache", + "openai-bundled", + "chrome", + "latest", + "scripts", + "browser-client.mjs", +); +const APP_SERVER_FIXTURE = fileURLToPath( + new URL("./fixtures/codex-app-server.mjs", import.meta.url), +); + +/** A fixture CODEX_HOME: the curated install markers (the Computer Use app + * and a `codex` CLI whose `app-server` is the fake app-server fixture) and + * one cached plugin wrapping the self-contained stdio MCP fixture. */ +const makeCodexHome = (): string => { + const home = mkdtempSync(join(tmpdir(), "codex-home-e2e-")); + const wrapper = `#!/bin/sh\nexec node "${FIXTURE}" "$@"\n`; + + // The Computer Use app is the plugin-installed marker; the bridge never + // spawns it, so an empty executable is enough. + const clientDir = join( + home, + "computer-use", + "Codex Computer Use.app", + "Contents", + "SharedSupport", + "SkyComputerUseClient.app", + "Contents", + "MacOS", + ); + mkdirSync(clientDir, { recursive: true }); + writeFileSync(join(clientDir, "SkyComputerUseClient"), wrapper, { mode: 0o755 }); + + // The `codex` CLI the curated recipes spawn — resolved through PATH, so + // the scenario prepends this bin dir to the server's PATH. + mkdirSync(join(home, "bin"), { recursive: true }); + writeFileSync(join(home, "bin", "codex"), `#!/bin/sh\nexec node "${APP_SERVER_FIXTURE}" "$@"\n`, { + mode: 0o755, + }); + + // Chrome's bundled browser client, behind the `latest` symlink Codex keeps. + const chromeClient = join(home, CHROME_CLIENT_RELATIVE); + mkdirSync(join(chromeClient, ".."), { recursive: true }); + writeFileSync(chromeClient, "export const setupBrowserRuntime = async () => ({});\n"); + + const versionDir = join(home, "plugins", "cache", "personal", "echo-suite", "1.0.2"); + mkdirSync(join(versionDir, ".codex-plugin"), { recursive: true }); + mkdirSync(join(versionDir, "bin"), { recursive: true }); + writeFileSync( + join(versionDir, ".codex-plugin", "plugin.json"), + JSON.stringify({ + name: "echo-suite", + mcpServers: "./.mcp.json", + interface: { displayName: "Echo Suite", shortDescription: "Echo tools for e2e" }, + }), + ); + writeFileSync( + join(versionDir, ".mcp.json"), + JSON.stringify({ mcpServers: { "echo-suite": { command: "./bin/run", cwd: "." } } }), + ); + writeFileSync(join(versionDir, "bin", "run"), wrapper, { mode: 0o755 }); + + return home; +}; + +scenario( + "Local · Codex plugins are discovered from CODEX_HOME and add as one-click stdio presets", + // Above the 240s boot-URL wait in `withLocalServer` for the same reason as + // stdio-mcp.test.ts: a cold vite boot must fail with the harness's + // diagnostic, not vitest's generic timeout. + { timeout: 300_000 }, + Effect.gen(function* () { + const cli = yield* Cli; + const runDir = yield* RunDir; + const codexHome = makeCodexHome(); + + yield* withLocalServer( + cli, + runDir, + (server) => + Effect.gen(function* () { + const client = yield* HttpApiClient.make(api, { + baseUrl: new URL("/api", server.origin).toString(), + transformClient: HttpClient.mapRequest((request) => + HttpClientRequest.setHeader(request, "authorization", `Bearer ${server.token}`), + ), + }).pipe(Effect.provide(FetchHttpClient.layer)); + + // The scanner reports the curated plugins and the cached one, all + // available (the fixture home has every binary in place). + const { plugins } = yield* client.mcp.listCodexPlugins(); + const byId = new Map(plugins.map((plugin) => [plugin.id, plugin])); + expect([...byId.keys()].sort(), "curated + scanned entries are reported").toEqual([ + "codex-chrome", + "codex-computer-history", + "codex-computer-use", + "codex-echo-suite", + "codex-messages", + "codex-openai-docs", + ]); + for (const plugin of plugins) { + expect(plugin.available, `${plugin.id} is available`).toBe(true); + expect(plugin.env, `${plugin.id} declares CODEX_HOME`).toEqual({ + CODEX_HOME: codexHome, + }); + } + // Curated entries carry the app-server bridge recipe: `codex + // app-server` plus the server name the bridge calls tools on. + const messages = byId.get("codex-messages"); + expect(messages?.command.endsWith("codex"), "curated entries spawn the codex CLI").toBe( + true, + ); + expect(messages?.args, "curated entries run the app-server").toEqual(["app-server"]); + expect(messages?.appServer, "curated entries name their Codex server").toEqual({ + server: "messages", + }); + // Computer Use and Chrome have no server of their own: both are + // projected onto `node_repl`, and Chrome carries the client module + // its surface imports, resolved through the `latest` symlink. + expect(byId.get("codex-computer-use")?.appServer).toEqual({ + server: "node_repl", + surface: "sky", + }); + expect(byId.get("codex-chrome")?.appServer).toEqual({ + server: "node_repl", + surface: "browser", + modulePath: join(codexHome, CHROME_CLIENT_RELATIVE), + }); + + // Add two entries exactly as the add-form's Codex-plugins card does: + // the reported recipe, verbatim. + for (const id of ["codex-messages", "codex-echo-suite"] as const) { + const plugin = byId.get(id)!; + yield* client.mcp.addServer({ + payload: { + transport: "stdio", + name: plugin.name, + slug: plugin.slug, + description: plugin.summary, + command: plugin.command, + args: [...plugin.args], + ...(plugin.cwd === undefined ? {} : { cwd: plugin.cwd }), + ...(plugin.env === undefined ? {} : { env: { ...plugin.env } }), + ...(plugin.appServer === undefined + ? {} + : { appServer: { server: plugin.appServer.server } }), + }, + }); + } + + const integrations = yield* client.integrations.list(); + const slugs = integrations.map((integration) => String(integration.slug)); + expect(slugs, "both plugins registered").toEqual( + expect.arrayContaining(["codex_messages", "codex_echo_suite"]), + ); + + // One-click means connected: the env values auto-create the default + // connection, so tools are discovered with no further step. + for (const slug of ["codex_messages", "codex_echo_suite"]) { + const connections = yield* client.connections.list({ query: { integration: slug } }); + expect( + connections.map((connection) => String(connection.name)), + `${slug} auto-connected`, + ).toContain("default"); + + const tools = yield* client.tools.list({ query: { integration: slug } }); + const names = tools.map((tool) => tool.name); + expect(names, `${slug} tools are detected`).toContain("echo_tool"); + expect( + names, + `CODEX_HOME reached ${slug}'s spawned subprocess (saw_codex_home is gated on it)`, + ).toContain("saw_codex_home"); + } + }), + { + env: { + CODEX_HOME: codexHome, + // The scanner resolves the `codex` CLI through the server's PATH. + PATH: `${join(codexHome, "bin")}:${process.env["PATH"] ?? ""}`, + }, + }, + ); + }), +); diff --git a/e2e/local/fixtures/codex-app-server.mjs b/e2e/local/fixtures/codex-app-server.mjs new file mode 100644 index 000000000..8ed82528c --- /dev/null +++ b/e2e/local/fixtures/codex-app-server.mjs @@ -0,0 +1,117 @@ +// A zero-dependency fake `codex app-server`, for the `local` e2e project. +// +// The curated Codex plugin presets no longer spawn a plugin's MCP client +// directly — their service refuses tool calls from non-Codex hosts — so the +// scanner emits `codex app-server` recipes and the connector bridges MCP to +// the app-server protocol in process. This fixture stands in for the real +// binary with the same wire shapes (newline-delimited JSON-RPC, v2 protocol): +// `initialize`, the `initialized` notification, `thread/start`, +// `mcpServerStatus/list`, and `mcpServer/tool/call` against one MCP server +// named `messages`. +// +// Like stdio-mcp-server.mjs it gates a `saw_codex_home` tool on CODEX_HOME +// being present in this process's env, so a scenario can prove the declared +// env reached the spawned child through the bridge. + +import { createInterface } from "node:readline"; + +const send = (message) => { + process.stdout.write(`${JSON.stringify(message)}\n`); +}; + +const THREAD_ID = "thread-e2e-1"; + +const TOOLS = { + echo_tool: { + name: "echo_tool", + description: "Echoes the provided text back", + inputSchema: { + type: "object", + properties: { text: { type: "string" } }, + required: ["text"], + }, + }, +}; + +if (process.env.CODEX_HOME !== undefined) { + TOOLS.saw_codex_home = { + name: "saw_codex_home", + description: "Present only because CODEX_HOME is set in this server's environment", + inputSchema: { type: "object", properties: {} }, + }; +} + +const handle = (msg) => { + // Notifications (`initialized`) carry no id and expect no response. + if (msg.id === undefined || msg.id === null) return; + + if (msg.method === "initialize") { + send({ jsonrpc: "2.0", id: msg.id, result: { userAgent: "codex-e2e-fixture/0.0.0" } }); + return; + } + + if (msg.method === "thread/start") { + send({ jsonrpc: "2.0", id: msg.id, result: { thread: { id: THREAD_ID } } }); + return; + } + + if (msg.method === "mcpServerStatus/list") { + send({ + jsonrpc: "2.0", + id: msg.id, + result: { + data: [ + { + name: "messages", + runtimeStatus: "connected", + pluginId: "messages", + serverInfo: null, + tools: TOOLS, + resources: [], + resourceTemplates: [], + authStatus: "unsupported", + }, + ], + nextCursor: null, + }, + }); + return; + } + + if (msg.method === "mcpServer/tool/call") { + const { server, tool } = msg.params ?? {}; + if (server !== "messages" || TOOLS[tool] === undefined) { + send({ + jsonrpc: "2.0", + id: msg.id, + error: { code: -32602, message: `unknown server or tool: ${server}/${tool}` }, + }); + return; + } + const text = + tool === "echo_tool" ? String(msg.params?.arguments?.text ?? "") : "codex-home-present"; + send({ jsonrpc: "2.0", id: msg.id, result: { content: [{ type: "text", text }] } }); + return; + } + + send({ + jsonrpc: "2.0", + id: msg.id, + error: { code: -32601, message: `Method not found: ${msg.method}` }, + }); +}; + +const rl = createInterface({ input: process.stdin }); +rl.on("line", (line) => { + const trimmed = line.trim(); + if (!trimmed) return; + let msg; + // oxlint-disable-next-line executor/no-try-catch-or-throw -- standalone zero-dep fixture: hand-rolled JSON-RPC framing, not product code + try { + // oxlint-disable-next-line executor/no-json-parse -- standalone zero-dep fixture: hand-rolled JSON-RPC framing, not product code + msg = JSON.parse(trimmed); + } catch { + return; + } + handle(msg); +}); diff --git a/e2e/local/fixtures/stdio-mcp-server.mjs b/e2e/local/fixtures/stdio-mcp-server.mjs index cef83abc5..cf3f88573 100644 --- a/e2e/local/fixtures/stdio-mcp-server.mjs +++ b/e2e/local/fixtures/stdio-mcp-server.mjs @@ -45,13 +45,16 @@ if (process.env.EXECUTOR_E2E_SECRET) { } // Each entry advertises `saw_` when its variable reached this process. -// The three cover the three ways a variable can be handed to a stdio server: -// declared on the source, allowlisted infrastructure inherited from the host, -// and — the leak — an unrelated host variable that must never travel. +// The first three cover the three ways a variable can be handed to a stdio +// server: declared on the source, allowlisted infrastructure inherited from +// the host, and — the leak — an unrelated host variable that must never +// travel. CODEX_HOME is the variable the Codex-plugin presets declare, so the +// codex-plugins scenario can prove it reached the spawn. const ENV_PROBES = [ { tool: "saw_declared_env", key: "EXECUTOR_E2E_SECRET" }, { tool: "saw_proxy_env", key: "NO_PROXY" }, { tool: "saw_host_secret", key: "EXECUTOR_E2E_HOST_ONLY_SECRET" }, + { tool: "saw_codex_home", key: "CODEX_HOME" }, ]; for (const probe of ENV_PROBES) { diff --git a/packages/app/public/plugin-icons/messages.webp b/packages/app/public/plugin-icons/messages.webp new file mode 100644 index 000000000..ac09aac6d Binary files /dev/null and b/packages/app/public/plugin-icons/messages.webp differ diff --git a/packages/core/execution/src/engine.test.ts b/packages/core/execution/src/engine.test.ts index ec6a31a2d..da0efab1f 100644 --- a/packages/core/execution/src/engine.test.ts +++ b/packages/core/execution/src/engine.test.ts @@ -5,7 +5,8 @@ import { createExecutor, definePlugin } from "@executor-js/sdk"; import { makeTestConfig } from "@executor-js/sdk/testing"; import type { CodeExecutor, ExecuteResult } from "@executor-js/codemode-core"; -import { createExecutionEngine } from "./engine"; +import { createExecutionEngine, formatPausedExecution } from "./engine"; +import { FormElicitation } from "@executor-js/sdk/core"; // Regression for the hang reported as the executor-MCP "180s timeout" against // Cowork (Claude web). Cowork goes down the `executeWithPause` branch because @@ -100,3 +101,42 @@ describe("pausedExecutionCount", () => { }), ); }); + +describe("formatPausedExecution approval terms", () => { + const paused = (request: FormElicitation) => + ({ + id: "exec_1", + elicitationContext: { address: "tools.x.org.default.y", args: {}, request }, + }) as Parameters[0]; + + it("states the terms an upstream attached to the approval", () => { + // An empty schema makes this look like a plain yes/no, but the metadata + // says accepting persists for the origin — so the answer differs, and the + // caller has to be able to see it. + const result = formatPausedExecution( + paused( + FormElicitation.make({ + message: "Allow Browser use to access https://example.com?", + requestedSchema: {}, + meta: { persist: "always", origin: "https://example.com" }, + }), + ), + ); + + expect(result.text).toContain("Approval terms:"); + expect(result.text).toContain('"persist": "always"'); + expect((result.structured["interaction"] as { readonly meta?: unknown }).meta).toEqual({ + persist: "always", + origin: "https://example.com", + }); + }); + + it("says nothing about terms when the upstream attached none", () => { + const result = formatPausedExecution( + paused(FormElicitation.make({ message: "Proceed?", requestedSchema: {} })), + ); + + expect(result.text).not.toContain("Approval terms:"); + expect((result.structured["interaction"] as Record)["meta"]).toBeUndefined(); + }); +}); diff --git a/packages/core/execution/src/engine.ts b/packages/core/execution/src/engine.ts index 36a5c8cbf..81098864f 100644 --- a/packages/core/execution/src/engine.ts +++ b/packages/core/execution/src/engine.ts @@ -210,6 +210,14 @@ export const formatPausedExecution = ( ); } + // Terms the upstream attached to the approval. Stated plainly, because a + // prompt whose schema is empty ("Allow X to access Y?") can still be + // asking for a PERSISTENT grant, and the answer differs. + const meta = req.meta; + if (meta !== undefined && Object.keys(meta).length > 0) { + lines.push(`\nApproval terms:\n${JSON.stringify(meta, null, 2)}`); + } + lines.push(`\nexecutionId: ${paused.id}`); if (deadline) { lines.push( @@ -232,6 +240,7 @@ export const formatPausedExecution = ( args: paused.elicitationContext.args, ...(isUrlElicitation ? { url: req.url } : {}), ...(isFormElicitation ? { requestedSchema: req.requestedSchema } : {}), + ...(meta === undefined ? {} : { meta }), }, }, }; diff --git a/packages/core/sdk/src/client.ts b/packages/core/sdk/src/client.ts index 42bdd462f..6c82015e6 100644 --- a/packages/core/sdk/src/client.ts +++ b/packages/core/sdk/src/client.ts @@ -111,6 +111,10 @@ export interface IntegrationPreset { readonly endpoint?: string; /** Optional icon URL (favicon, logo). */ readonly icon?: string; + /** Image to show when `icon` cannot be resolved on this machine — a preset + * whose icon is read from a local install has none until that install + * exists, which is exactly when the card most needs to identify itself. */ + readonly fallbackIcon?: string; /** Shown in the top-level grid on the integrations page when true. */ readonly featured?: boolean; readonly family?: string; diff --git a/packages/core/sdk/src/elicitation.ts b/packages/core/sdk/src/elicitation.ts index 213c9c623..290349e3c 100644 --- a/packages/core/sdk/src/elicitation.ts +++ b/packages/core/sdk/src/elicitation.ts @@ -6,11 +6,23 @@ import { ElicitationId, ToolAddress } from "./ids"; * handler (executor-level, overridable per `execute`) answers. Tools that never * elicit never trigger it. Schema-tagged so requests/responses cross the wire. */ +/** Implementation-defined context an upstream attached to the request. + * + * Opaque and never interpreted here — it is carried so a host can SHOW the + * terms of an approval it would otherwise hide. The case that forced it: a + * Codex plugin's per-site browser approval sends an empty `requestedSchema` + * and puts `persist: "always"` and the `origin` in its metadata, so + * accepting grants a permanent allow for that site. Without this the user is + * asked to consent to strictly more than the prompt tells them. */ +export const ElicitationMeta = Schema.Record(Schema.String, Schema.Unknown); +export type ElicitationMeta = typeof ElicitationMeta.Type; + /** Tool needs structured input from the user (render a form). */ export const FormElicitation = Schema.TaggedStruct("FormElicitation", { message: Schema.String, /** JSON Schema describing the fields to collect. */ requestedSchema: Schema.Record(Schema.String, Schema.Unknown), + meta: Schema.optional(ElicitationMeta), }); export type FormElicitation = typeof FormElicitation.Type; @@ -20,6 +32,7 @@ export const UrlElicitation = Schema.TaggedStruct("UrlElicitation", { url: Schema.String, /** Unique id so the host can correlate the callback. */ elicitationId: ElicitationId, + meta: Schema.optional(ElicitationMeta), }); export type UrlElicitation = typeof UrlElicitation.Type; diff --git a/packages/core/sdk/src/index.ts b/packages/core/sdk/src/index.ts index 8bb8efaa1..d7196fb26 100644 --- a/packages/core/sdk/src/index.ts +++ b/packages/core/sdk/src/index.ts @@ -221,6 +221,7 @@ export { sanitizeArtifactPreviewMarkup, ARTIFACT_PREVIEW_MARKUP_LIMIT } from "./ // Elicitation. export { + ElicitationMeta, FormElicitation, UrlElicitation, ElicitationAction, diff --git a/packages/core/sdk/src/plugin.ts b/packages/core/sdk/src/plugin.ts index cdc8fcfc5..d7497bc42 100644 --- a/packages/core/sdk/src/plugin.ts +++ b/packages/core/sdk/src/plugin.ts @@ -600,6 +600,10 @@ export interface IntegrationPreset { readonly url?: string; readonly endpoint?: string; readonly icon?: string; + /** Image to show when `icon` cannot be resolved on this machine — a preset + * whose icon is read from a local install has none until that install + * exists, which is exactly when the card most needs to identify itself. */ + readonly fallbackIcon?: string; readonly featured?: boolean; readonly family?: string; readonly specFormat?: string; diff --git a/packages/core/sdk/src/shared.ts b/packages/core/sdk/src/shared.ts index 84e0bdbfe..6df06b328 100644 --- a/packages/core/sdk/src/shared.ts +++ b/packages/core/sdk/src/shared.ts @@ -73,6 +73,7 @@ export { // Elicitation wire schemas. export { + ElicitationMeta, FormElicitation, UrlElicitation, ElicitationAction, diff --git a/packages/hosts/mcp-apps-shell/src/shell/smoke-harness-bundle.gen.ts b/packages/hosts/mcp-apps-shell/src/shell/smoke-harness-bundle.gen.ts index f2ade0ab3..c03f86439 100644 --- a/packages/hosts/mcp-apps-shell/src/shell/smoke-harness-bundle.gen.ts +++ b/packages/hosts/mcp-apps-shell/src/shell/smoke-harness-bundle.gen.ts @@ -12,6 +12,6 @@ * as it does when the sandbox itself is unavailable, so a partial checkout * never blocks a create. */ -const bundle: string | null = "\"use strict\";\n(() => {\n var __create = Object.create;\n var __defProp = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __getProtoOf = Object.getPrototypeOf;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n };\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to2, from2, except, desc) => {\n if (from2 && typeof from2 === \"object\" || typeof from2 === \"function\") {\n for (let key of __getOwnPropNames(from2))\n if (!__hasOwnProp.call(to2, key) && key !== except)\n __defProp(to2, key, { get: () => from2[key], enumerable: !(desc = __getOwnPropDesc(from2, key)) || desc.enumerable });\n }\n return to2;\n };\n var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n ));\n\n // ../../../node_modules/.bun/react@19.2.5/node_modules/react/cjs/react.production.js\n var require_react_production = __commonJS({\n \"../../../node_modules/.bun/react@19.2.5/node_modules/react/cjs/react.production.js\"(exports) {\n \"use strict\";\n var REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for(\"react.transitional.element\");\n var REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for(\"react.portal\");\n var REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for(\"react.fragment\");\n var REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for(\"react.strict_mode\");\n var REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for(\"react.profiler\");\n var REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for(\"react.consumer\");\n var REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for(\"react.context\");\n var REACT_FORWARD_REF_TYPE2 = /* @__PURE__ */ Symbol.for(\"react.forward_ref\");\n var REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for(\"react.suspense\");\n var REACT_MEMO_TYPE2 = /* @__PURE__ */ Symbol.for(\"react.memo\");\n var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for(\"react.lazy\");\n var REACT_ACTIVITY_TYPE = /* @__PURE__ */ Symbol.for(\"react.activity\");\n var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n var ReactNoopUpdateQueue = {\n isMounted: function() {\n return false;\n },\n enqueueForceUpdate: function() {\n },\n enqueueReplaceState: function() {\n },\n enqueueSetState: function() {\n }\n };\n var assign2 = Object.assign;\n var emptyObject = {};\n function Component2(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n Component2.prototype.isReactComponent = {};\n Component2.prototype.setState = function(partialState, callback) {\n if (\"object\" !== typeof partialState && \"function\" !== typeof partialState && null != partialState)\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n };\n Component2.prototype.forceUpdate = function(callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n };\n function ComponentDummy() {\n }\n ComponentDummy.prototype = Component2.prototype;\n function PureComponent6(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n var pureComponentPrototype = PureComponent6.prototype = new ComponentDummy();\n pureComponentPrototype.constructor = PureComponent6;\n assign2(pureComponentPrototype, Component2.prototype);\n pureComponentPrototype.isPureReactComponent = true;\n var isArrayImpl = Array.isArray;\n function noop7() {\n }\n var ReactSharedInternals = { H: null, A: null, T: null, S: null };\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n function ReactElement(type, key, props) {\n var refProp = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type,\n key,\n ref: void 0 !== refProp ? refProp : null,\n props\n };\n }\n function cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(oldElement.type, newKey, oldElement.props);\n }\n function isValidElement27(object) {\n return \"object\" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return \"$\" + key.replace(/[=:]/g, function(match2) {\n return escaperLookup[match2];\n });\n }\n var userProvidedKeyEscapeRegex = /\\/+/g;\n function getElementKey(element, index2) {\n return \"object\" === typeof element && null !== element && null != element.key ? escape(\"\" + element.key) : index2.toString(36);\n }\n function resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\"string\" === typeof thenable.status ? thenable.then(noop7, noop7) : (thenable.status = \"pending\", thenable.then(\n function(fulfilledValue) {\n \"pending\" === thenable.status && (thenable.status = \"fulfilled\", thenable.value = fulfilledValue);\n },\n function(error) {\n \"pending\" === thenable.status && (thenable.status = \"rejected\", thenable.reason = error);\n }\n )), thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n }\n function mapIntoArray(children, array2, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = false;\n if (null === children) invokeCallback = true;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = true;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n break;\n case REACT_LAZY_TYPE:\n return invokeCallback = children._init, mapIntoArray(\n invokeCallback(children._payload),\n array2,\n escapedPrefix,\n nameSoFar,\n callback\n );\n }\n }\n if (invokeCallback)\n return callback = callback(children), invokeCallback = \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar, isArrayImpl(callback) ? (escapedPrefix = \"\", null != invokeCallback && (escapedPrefix = invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"), mapIntoArray(callback, array2, escapedPrefix, \"\", function(c2) {\n return c2;\n })) : null != callback && (isValidElement27(callback) && (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix + (null == callback.key || children && children.key === callback.key ? \"\" : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") + invokeCallback\n )), array2.push(callback)), 1;\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n nameSoFar = children[i], type = nextNamePrefix + getElementKey(nameSoFar, i), invokeCallback += mapIntoArray(\n nameSoFar,\n array2,\n escapedPrefix,\n type,\n callback\n );\n else if (i = getIteratorFn(children), \"function\" === typeof i)\n for (children = i.call(children), i = 0; !(nameSoFar = children.next()).done; )\n nameSoFar = nameSoFar.value, type = nextNamePrefix + getElementKey(nameSoFar, i++), invokeCallback += mapIntoArray(\n nameSoFar,\n array2,\n escapedPrefix,\n type,\n callback\n );\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array2,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array2 = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" + (\"[object Object]\" === array2 ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\" : array2) + \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n }\n function mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [], count3 = 0;\n mapIntoArray(children, result, \"\", \"\", function(child) {\n return func.call(context, child, count3++);\n });\n return result;\n }\n function lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function(moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n payload._status = 1, payload._result = moduleObject;\n },\n function(error) {\n if (0 === payload._status || -1 === payload._status)\n payload._status = 2, payload._result = error;\n }\n );\n -1 === payload._status && (payload._status = 0, payload._result = ctor);\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n }\n var reportGlobalError = \"function\" === typeof reportError ? reportError : function(error) {\n if (\"object\" === typeof window && \"function\" === typeof window.ErrorEvent) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: true,\n cancelable: true,\n message: \"object\" === typeof error && null !== error && \"string\" === typeof error.message ? String(error.message) : String(error),\n error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\"object\" === typeof process && \"function\" === typeof process.emit) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\n var Children8 = {\n map: mapChildren,\n forEach: function(children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function() {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function(children) {\n var n = 0;\n mapChildren(children, function() {\n n++;\n });\n return n;\n },\n toArray: function(children) {\n return mapChildren(children, function(child) {\n return child;\n }) || [];\n },\n only: function(children) {\n if (!isValidElement27(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\n exports.Activity = REACT_ACTIVITY_TYPE;\n exports.Children = Children8;\n exports.Component = Component2;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.PureComponent = PureComponent6;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = ReactSharedInternals;\n exports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function(size4) {\n return ReactSharedInternals.H.useMemoCache(size4);\n }\n };\n exports.cache = function(fn) {\n return function() {\n return fn.apply(null, arguments);\n };\n };\n exports.cacheSignal = function() {\n return null;\n };\n exports.cloneElement = function(element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign2({}, element.props), key = element.key;\n if (null != config)\n for (propName in void 0 !== config.key && (key = \"\" + config.key), config)\n !hasOwnProperty.call(config, propName) || \"key\" === propName || \"__self\" === propName || \"__source\" === propName || \"ref\" === propName && void 0 === config.ref || (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, props);\n };\n exports.createContext = function(defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n };\n exports.createElement = function(type, config, children) {\n var propName, props = {}, key = null;\n if (null != config)\n for (propName in void 0 !== config.key && (key = \"\" + config.key), config)\n hasOwnProperty.call(config, propName) && \"key\" !== propName && \"__self\" !== propName && \"__source\" !== propName && (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in childrenLength = type.defaultProps, childrenLength)\n void 0 === props[propName] && (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, props);\n };\n exports.createRef = function() {\n return { current: null };\n };\n exports.forwardRef = function(render2) {\n return { $$typeof: REACT_FORWARD_REF_TYPE2, render: render2 };\n };\n exports.isValidElement = isValidElement27;\n exports.lazy = function(ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n };\n exports.memo = function(type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE2,\n type,\n compare: void 0 === compare ? null : compare\n };\n };\n exports.startTransition = function(scope) {\n var prevTransition = ReactSharedInternals.T, currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(), onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue && null !== returnValue && \"function\" === typeof returnValue.then && returnValue.then(noop7, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null !== prevTransition && null !== currentTransition.types && (prevTransition.types = currentTransition.types), ReactSharedInternals.T = prevTransition;\n }\n };\n exports.unstable_useCacheRefresh = function() {\n return ReactSharedInternals.H.useCacheRefresh();\n };\n exports.use = function(usable) {\n return ReactSharedInternals.H.use(usable);\n };\n exports.useActionState = function(action, initialState15, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState15, permalink);\n };\n exports.useCallback = function(callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n };\n exports.useContext = function(Context) {\n return ReactSharedInternals.H.useContext(Context);\n };\n exports.useDebugValue = function() {\n };\n exports.useDeferredValue = function(value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n };\n exports.useEffect = function(create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n };\n exports.useEffectEvent = function(callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\n };\n exports.useId = function() {\n return ReactSharedInternals.H.useId();\n };\n exports.useImperativeHandle = function(ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n };\n exports.useInsertionEffect = function(create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n };\n exports.useLayoutEffect = function(create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n };\n exports.useMemo = function(create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n };\n exports.useOptimistic = function(passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n };\n exports.useReducer = function(reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n };\n exports.useRef = function(initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n };\n exports.useState = function(initialState15) {\n return ReactSharedInternals.H.useState(initialState15);\n };\n exports.useSyncExternalStore = function(subscribe2, getSnapshot, getServerSnapshot) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe2,\n getSnapshot,\n getServerSnapshot\n );\n };\n exports.useTransition = function() {\n return ReactSharedInternals.H.useTransition();\n };\n exports.version = \"19.2.5\";\n }\n });\n\n // ../../../node_modules/.bun/react@19.2.5/node_modules/react/index.js\n var require_react = __commonJS({\n \"../../../node_modules/.bun/react@19.2.5/node_modules/react/index.js\"(exports, module) {\n \"use strict\";\n if (true) {\n module.exports = require_react_production();\n } else {\n module.exports = null;\n }\n }\n });\n\n // ../../../node_modules/.bun/react-dom@19.2.5+3f10a4be4e334a9b/node_modules/react-dom/cjs/react-dom.production.js\n var require_react_dom_production = __commonJS({\n \"../../../node_modules/.bun/react-dom@19.2.5+3f10a4be4e334a9b/node_modules/react-dom/cjs/react-dom.production.js\"(exports) {\n \"use strict\";\n var React134 = require_react();\n function formatProdErrorMessage3(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return \"Minified React error #\" + code + \"; visit \" + url + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n }\n function noop7() {\n }\n var Internals = {\n d: {\n f: noop7,\n r: function() {\n throw Error(formatProdErrorMessage3(522));\n },\n D: noop7,\n C: noop7,\n L: noop7,\n m: noop7,\n X: noop7,\n S: noop7,\n M: noop7\n },\n p: 0,\n findDOMNode: null\n };\n var REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for(\"react.portal\");\n function createPortal$1(children, containerInfo, implementation) {\n var key = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children,\n containerInfo,\n implementation\n };\n }\n var ReactSharedInternals = React134.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n function getCrossOriginStringAs(as, input2) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input2)\n return \"use-credentials\" === input2 ? input2 : \"\";\n }\n exports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = Internals;\n exports.createPortal = function(children, container) {\n var key = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (!container || 1 !== container.nodeType && 9 !== container.nodeType && 11 !== container.nodeType)\n throw Error(formatProdErrorMessage3(299));\n return createPortal$1(children, container, null, key);\n };\n exports.flushSync = function(fn) {\n var previousTransition = ReactSharedInternals.T, previousUpdatePriority = Internals.p;\n try {\n if (ReactSharedInternals.T = null, Internals.p = 2, fn) return fn();\n } finally {\n ReactSharedInternals.T = previousTransition, Internals.p = previousUpdatePriority, Internals.d.f();\n }\n };\n exports.preconnect = function(href, options2) {\n \"string\" === typeof href && (options2 ? (options2 = options2.crossOrigin, options2 = \"string\" === typeof options2 ? \"use-credentials\" === options2 ? options2 : \"\" : void 0) : options2 = null, Internals.d.C(href, options2));\n };\n exports.prefetchDNS = function(href) {\n \"string\" === typeof href && Internals.d.D(href);\n };\n exports.preinit = function(href, options2) {\n if (\"string\" === typeof href && options2 && \"string\" === typeof options2.as) {\n var as = options2.as, crossOrigin = getCrossOriginStringAs(as, options2.crossOrigin), integrity = \"string\" === typeof options2.integrity ? options2.integrity : void 0, fetchPriority = \"string\" === typeof options2.fetchPriority ? options2.fetchPriority : void 0;\n \"style\" === as ? Internals.d.S(\n href,\n \"string\" === typeof options2.precedence ? options2.precedence : void 0,\n {\n crossOrigin,\n integrity,\n fetchPriority\n }\n ) : \"script\" === as && Internals.d.X(href, {\n crossOrigin,\n integrity,\n fetchPriority,\n nonce: \"string\" === typeof options2.nonce ? options2.nonce : void 0\n });\n }\n };\n exports.preinitModule = function(href, options2) {\n if (\"string\" === typeof href)\n if (\"object\" === typeof options2 && null !== options2) {\n if (null == options2.as || \"script\" === options2.as) {\n var crossOrigin = getCrossOriginStringAs(\n options2.as,\n options2.crossOrigin\n );\n Internals.d.M(href, {\n crossOrigin,\n integrity: \"string\" === typeof options2.integrity ? options2.integrity : void 0,\n nonce: \"string\" === typeof options2.nonce ? options2.nonce : void 0\n });\n }\n } else null == options2 && Internals.d.M(href);\n };\n exports.preload = function(href, options2) {\n if (\"string\" === typeof href && \"object\" === typeof options2 && null !== options2 && \"string\" === typeof options2.as) {\n var as = options2.as, crossOrigin = getCrossOriginStringAs(as, options2.crossOrigin);\n Internals.d.L(href, as, {\n crossOrigin,\n integrity: \"string\" === typeof options2.integrity ? options2.integrity : void 0,\n nonce: \"string\" === typeof options2.nonce ? options2.nonce : void 0,\n type: \"string\" === typeof options2.type ? options2.type : void 0,\n fetchPriority: \"string\" === typeof options2.fetchPriority ? options2.fetchPriority : void 0,\n referrerPolicy: \"string\" === typeof options2.referrerPolicy ? options2.referrerPolicy : void 0,\n imageSrcSet: \"string\" === typeof options2.imageSrcSet ? options2.imageSrcSet : void 0,\n imageSizes: \"string\" === typeof options2.imageSizes ? options2.imageSizes : void 0,\n media: \"string\" === typeof options2.media ? options2.media : void 0\n });\n }\n };\n exports.preloadModule = function(href, options2) {\n if (\"string\" === typeof href)\n if (options2) {\n var crossOrigin = getCrossOriginStringAs(options2.as, options2.crossOrigin);\n Internals.d.m(href, {\n as: \"string\" === typeof options2.as && \"script\" !== options2.as ? options2.as : void 0,\n crossOrigin,\n integrity: \"string\" === typeof options2.integrity ? options2.integrity : void 0\n });\n } else Internals.d.m(href);\n };\n exports.requestFormReset = function(form) {\n Internals.d.r(form);\n };\n exports.unstable_batchedUpdates = function(fn, a2) {\n return fn(a2);\n };\n exports.useFormState = function(action, initialState15, permalink) {\n return ReactSharedInternals.H.useFormState(action, initialState15, permalink);\n };\n exports.useFormStatus = function() {\n return ReactSharedInternals.H.useHostTransitionStatus();\n };\n exports.version = \"19.2.5\";\n }\n });\n\n // ../../../node_modules/.bun/react-dom@19.2.5+3f10a4be4e334a9b/node_modules/react-dom/index.js\n var require_react_dom = __commonJS({\n \"../../../node_modules/.bun/react-dom@19.2.5+3f10a4be4e334a9b/node_modules/react-dom/index.js\"(exports, module) {\n \"use strict\";\n function checkDCE() {\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === \"undefined\" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== \"function\") {\n return;\n }\n if (false) {\n throw new Error(\"^_^\");\n }\n try {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n console.error(err);\n }\n }\n if (true) {\n checkDCE();\n module.exports = require_react_dom_production();\n } else {\n module.exports = null;\n }\n }\n });\n\n // ../../../node_modules/.bun/react-dom@19.2.5+3f10a4be4e334a9b/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js\n var require_react_dom_server_legacy_browser_production = __commonJS({\n \"../../../node_modules/.bun/react-dom@19.2.5+3f10a4be4e334a9b/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js\"(exports) {\n \"use strict\";\n var React134 = require_react();\n var ReactDOM5 = require_react_dom();\n function formatProdErrorMessage3(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return \"Minified React error #\" + code + \"; visit \" + url + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n }\n var REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for(\"react.transitional.element\");\n var REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for(\"react.portal\");\n var REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for(\"react.fragment\");\n var REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for(\"react.strict_mode\");\n var REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for(\"react.profiler\");\n var REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for(\"react.consumer\");\n var REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for(\"react.context\");\n var REACT_FORWARD_REF_TYPE2 = /* @__PURE__ */ Symbol.for(\"react.forward_ref\");\n var REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for(\"react.suspense\");\n var REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for(\"react.suspense_list\");\n var REACT_MEMO_TYPE2 = /* @__PURE__ */ Symbol.for(\"react.memo\");\n var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for(\"react.lazy\");\n var REACT_SCOPE_TYPE = /* @__PURE__ */ Symbol.for(\"react.scope\");\n var REACT_ACTIVITY_TYPE = /* @__PURE__ */ Symbol.for(\"react.activity\");\n var REACT_LEGACY_HIDDEN_TYPE = /* @__PURE__ */ Symbol.for(\"react.legacy_hidden\");\n var REACT_MEMO_CACHE_SENTINEL = /* @__PURE__ */ Symbol.for(\"react.memo_cache_sentinel\");\n var REACT_VIEW_TRANSITION_TYPE = /* @__PURE__ */ Symbol.for(\"react.view_transition\");\n var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n var isArrayImpl = Array.isArray;\n function murmurhash3_32_gc(key, seed2) {\n var remainder = key.length & 3;\n var bytes = key.length - remainder;\n var h1 = seed2;\n for (seed2 = 0; seed2 < bytes; ) {\n var k1 = key.charCodeAt(seed2) & 255 | (key.charCodeAt(++seed2) & 255) << 8 | (key.charCodeAt(++seed2) & 255) << 16 | (key.charCodeAt(++seed2) & 255) << 24;\n ++seed2;\n k1 = 3432918353 * (k1 & 65535) + ((3432918353 * (k1 >>> 16) & 65535) << 16) & 4294967295;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = 461845907 * (k1 & 65535) + ((461845907 * (k1 >>> 16) & 65535) << 16) & 4294967295;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = 5 * (h1 & 65535) + ((5 * (h1 >>> 16) & 65535) << 16) & 4294967295;\n h1 = (h1 & 65535) + 27492 + (((h1 >>> 16) + 58964 & 65535) << 16);\n }\n k1 = 0;\n switch (remainder) {\n case 3:\n k1 ^= (key.charCodeAt(seed2 + 2) & 255) << 16;\n case 2:\n k1 ^= (key.charCodeAt(seed2 + 1) & 255) << 8;\n case 1:\n k1 ^= key.charCodeAt(seed2) & 255, k1 = 3432918353 * (k1 & 65535) + ((3432918353 * (k1 >>> 16) & 65535) << 16) & 4294967295, k1 = k1 << 15 | k1 >>> 17, h1 ^= 461845907 * (k1 & 65535) + ((461845907 * (k1 >>> 16) & 65535) << 16) & 4294967295;\n }\n h1 ^= key.length;\n h1 ^= h1 >>> 16;\n h1 = 2246822507 * (h1 & 65535) + ((2246822507 * (h1 >>> 16) & 65535) << 16) & 4294967295;\n h1 ^= h1 >>> 13;\n h1 = 3266489909 * (h1 & 65535) + ((3266489909 * (h1 >>> 16) & 65535) << 16) & 4294967295;\n return (h1 ^ h1 >>> 16) >>> 0;\n }\n var assign2 = Object.assign;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n );\n var illegalAttributeNameCache = {};\n var validatedAttributeNameCache = {};\n function isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return true;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return false;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return validatedAttributeNameCache[attributeName] = true;\n illegalAttributeNameCache[attributeName] = true;\n return false;\n }\n var unitlessNumbers = new Set(\n \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n \" \"\n )\n );\n var aliases = /* @__PURE__ */ new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]);\n var matchHtmlRegExp = /[\"'&<>]/;\n function escapeTextForBrowser(text) {\n if (\"boolean\" === typeof text || \"number\" === typeof text || \"bigint\" === typeof text)\n return \"\" + text;\n text = \"\" + text;\n var match2 = matchHtmlRegExp.exec(text);\n if (match2) {\n var html = \"\", index2, lastIndex = 0;\n for (index2 = match2.index; index2 < text.length; index2++) {\n switch (text.charCodeAt(index2)) {\n case 34:\n match2 = \""\";\n break;\n case 38:\n match2 = \"&\";\n break;\n case 39:\n match2 = \"'\";\n break;\n case 60:\n match2 = \"<\";\n break;\n case 62:\n match2 = \">\";\n break;\n default:\n continue;\n }\n lastIndex !== index2 && (html += text.slice(lastIndex, index2));\n lastIndex = index2 + 1;\n html += match2;\n }\n text = lastIndex !== index2 ? html + text.slice(lastIndex, index2) : html;\n }\n return text;\n }\n var uppercasePattern = /([A-Z])/g;\n var msPattern = /^ms-/;\n var isJavaScriptProtocol = /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\n function sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url) ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\" : url;\n }\n var ReactSharedInternals = React134.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n var ReactDOMSharedInternals = ReactDOM5.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n var sharedNotPendingObject = {\n pending: false,\n data: null,\n method: null,\n action: null\n };\n var previousDispatcher = ReactDOMSharedInternals.d;\n ReactDOMSharedInternals.d = {\n f: previousDispatcher.f,\n r: previousDispatcher.r,\n D: prefetchDNS,\n C: preconnect,\n L: preload,\n m: preloadModule,\n X: preinitScript,\n S: preinitStyle,\n M: preinitModuleScript\n };\n var PRELOAD_NO_CREDS = [];\n var currentlyFlushingRenderState = null;\n var scriptRegex = /(<\\/|<)(s)(cript)/gi;\n function scriptReplacer(match2, prefix3, s2, suffix3) {\n return \"\" + prefix3 + (\"s\" === s2 ? \"\\\\u0073\" : \"\\\\u0053\") + suffix3;\n }\n function createResumableState(identifierPrefix, externalRuntimeConfig, bootstrapScriptContent, bootstrapScripts, bootstrapModules) {\n return {\n idPrefix: void 0 === identifierPrefix ? \"\" : identifierPrefix,\n nextFormID: 0,\n streamingFormat: 0,\n bootstrapScriptContent,\n bootstrapScripts,\n bootstrapModules,\n instructions: 0,\n hasBody: false,\n hasHtml: false,\n unknownResources: {},\n dnsResources: {},\n connectResources: { default: {}, anonymous: {}, credentials: {} },\n imageResources: {},\n styleResources: {},\n scriptResources: {},\n moduleUnknownResources: {},\n moduleScriptResources: {}\n };\n }\n function createFormatContext(insertionMode, selectedValue, tagScope, viewTransition) {\n return {\n insertionMode,\n selectedValue,\n tagScope,\n viewTransition\n };\n }\n function getChildFormatContext(parentContext, type, props) {\n var subtreeScope = parentContext.tagScope & -25;\n switch (type) {\n case \"noscript\":\n return createFormatContext(2, null, subtreeScope | 1, null);\n case \"select\":\n return createFormatContext(\n 2,\n null != props.value ? props.value : props.defaultValue,\n subtreeScope,\n null\n );\n case \"svg\":\n return createFormatContext(4, null, subtreeScope, null);\n case \"picture\":\n return createFormatContext(2, null, subtreeScope | 2, null);\n case \"math\":\n return createFormatContext(5, null, subtreeScope, null);\n case \"foreignObject\":\n return createFormatContext(2, null, subtreeScope, null);\n case \"table\":\n return createFormatContext(6, null, subtreeScope, null);\n case \"thead\":\n case \"tbody\":\n case \"tfoot\":\n return createFormatContext(7, null, subtreeScope, null);\n case \"colgroup\":\n return createFormatContext(9, null, subtreeScope, null);\n case \"tr\":\n return createFormatContext(8, null, subtreeScope, null);\n case \"head\":\n if (2 > parentContext.insertionMode)\n return createFormatContext(3, null, subtreeScope, null);\n break;\n case \"html\":\n if (0 === parentContext.insertionMode)\n return createFormatContext(1, null, subtreeScope, null);\n }\n return 6 <= parentContext.insertionMode || 2 > parentContext.insertionMode ? createFormatContext(2, null, subtreeScope, null) : parentContext.tagScope !== subtreeScope ? createFormatContext(\n parentContext.insertionMode,\n parentContext.selectedValue,\n subtreeScope,\n null\n ) : parentContext;\n }\n function getSuspenseViewTransition(parentViewTransition) {\n return null === parentViewTransition ? null : {\n update: parentViewTransition.update,\n enter: \"none\",\n exit: \"none\",\n share: parentViewTransition.update,\n name: parentViewTransition.autoName,\n autoName: parentViewTransition.autoName,\n nameIdx: 0\n };\n }\n function getSuspenseFallbackFormatContext(resumableState, parentContext) {\n parentContext.tagScope & 32 && (resumableState.instructions |= 128);\n return createFormatContext(\n parentContext.insertionMode,\n parentContext.selectedValue,\n parentContext.tagScope | 12,\n getSuspenseViewTransition(parentContext.viewTransition)\n );\n }\n function getSuspenseContentFormatContext(resumableState, parentContext) {\n resumableState = getSuspenseViewTransition(parentContext.viewTransition);\n var subtreeScope = parentContext.tagScope | 16;\n null !== resumableState && \"none\" !== resumableState.share && (subtreeScope |= 64);\n return createFormatContext(\n parentContext.insertionMode,\n parentContext.selectedValue,\n subtreeScope,\n resumableState\n );\n }\n var styleNameCache = /* @__PURE__ */ new Map();\n function pushStyleAttribute(target, style) {\n if (\"object\" !== typeof style) throw Error(formatProdErrorMessage3(62));\n var isFirst = true, styleName;\n for (styleName in style)\n if (hasOwnProperty.call(style, styleName)) {\n var styleValue = style[styleName];\n if (null != styleValue && \"boolean\" !== typeof styleValue && \"\" !== styleValue) {\n if (0 === styleName.indexOf(\"--\")) {\n var nameChunk = escapeTextForBrowser(styleName);\n styleValue = escapeTextForBrowser((\"\" + styleValue).trim());\n } else\n nameChunk = styleNameCache.get(styleName), void 0 === nameChunk && (nameChunk = escapeTextForBrowser(\n styleName.replace(uppercasePattern, \"-$1\").toLowerCase().replace(msPattern, \"-ms-\")\n ), styleNameCache.set(styleName, nameChunk)), styleValue = \"number\" === typeof styleValue ? 0 === styleValue || unitlessNumbers.has(styleName) ? \"\" + styleValue : styleValue + \"px\" : escapeTextForBrowser((\"\" + styleValue).trim());\n isFirst ? (isFirst = false, target.push(' style=\"', nameChunk, \":\", styleValue)) : target.push(\";\", nameChunk, \":\", styleValue);\n }\n }\n isFirst || target.push('\"');\n }\n function pushBooleanAttribute(target, name, value) {\n value && \"function\" !== typeof value && \"symbol\" !== typeof value && target.push(\" \", name, '=\"\"');\n }\n function pushStringAttribute(target, name, value) {\n \"function\" !== typeof value && \"symbol\" !== typeof value && \"boolean\" !== typeof value && target.push(\" \", name, '=\"', escapeTextForBrowser(value), '\"');\n }\n var actionJavaScriptURL = escapeTextForBrowser(\n \"javascript:throw new Error('React form unexpectedly submitted.')\"\n );\n function pushAdditionalFormField(value, key) {\n this.push('\");\n }\n function validateAdditionalFormField(value) {\n if (\"string\" !== typeof value) throw Error(formatProdErrorMessage3(480));\n }\n function getCustomFormFields(resumableState, formAction) {\n if (\"function\" === typeof formAction.$$FORM_ACTION) {\n var id = resumableState.nextFormID++;\n resumableState = resumableState.idPrefix + id;\n try {\n var customFields = formAction.$$FORM_ACTION(resumableState);\n if (customFields) {\n var formData = customFields.data;\n null != formData && formData.forEach(validateAdditionalFormField);\n }\n return customFields;\n } catch (x2) {\n if (\"object\" === typeof x2 && null !== x2 && \"function\" === typeof x2.then)\n throw x2;\n }\n }\n return null;\n }\n function pushFormActionAttribute(target, resumableState, renderState, formAction, formEncType, formMethod, formTarget, name) {\n var formData = null;\n if (\"function\" === typeof formAction) {\n var customFields = getCustomFormFields(resumableState, formAction);\n null !== customFields ? (name = customFields.name, formAction = customFields.action || \"\", formEncType = customFields.encType, formMethod = customFields.method, formTarget = customFields.target, formData = customFields.data) : (target.push(\" \", \"formAction\", '=\"', actionJavaScriptURL, '\"'), formTarget = formMethod = formEncType = formAction = name = null, injectFormReplayingRuntime(resumableState, renderState));\n }\n null != name && pushAttribute(target, \"name\", name);\n null != formAction && pushAttribute(target, \"formAction\", formAction);\n null != formEncType && pushAttribute(target, \"formEncType\", formEncType);\n null != formMethod && pushAttribute(target, \"formMethod\", formMethod);\n null != formTarget && pushAttribute(target, \"formTarget\", formTarget);\n return formData;\n }\n function pushAttribute(target, name, value) {\n switch (name) {\n case \"className\":\n pushStringAttribute(target, \"class\", value);\n break;\n case \"tabIndex\":\n pushStringAttribute(target, \"tabindex\", value);\n break;\n case \"dir\":\n case \"role\":\n case \"viewBox\":\n case \"width\":\n case \"height\":\n pushStringAttribute(target, name, value);\n break;\n case \"style\":\n pushStyleAttribute(target, value);\n break;\n case \"src\":\n case \"href\":\n if (\"\" === value) break;\n case \"action\":\n case \"formAction\":\n if (null == value || \"function\" === typeof value || \"symbol\" === typeof value || \"boolean\" === typeof value)\n break;\n value = sanitizeURL(\"\" + value);\n target.push(\" \", name, '=\"', escapeTextForBrowser(value), '\"');\n break;\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"ref\":\n break;\n case \"autoFocus\":\n case \"multiple\":\n case \"muted\":\n pushBooleanAttribute(target, name.toLowerCase(), value);\n break;\n case \"xlinkHref\":\n if (\"function\" === typeof value || \"symbol\" === typeof value || \"boolean\" === typeof value)\n break;\n value = sanitizeURL(\"\" + value);\n target.push(\" \", \"xlink:href\", '=\"', escapeTextForBrowser(value), '\"');\n break;\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n \"function\" !== typeof value && \"symbol\" !== typeof value && target.push(\" \", name, '=\"', escapeTextForBrowser(value), '\"');\n break;\n case \"inert\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n value && \"function\" !== typeof value && \"symbol\" !== typeof value && target.push(\" \", name, '=\"\"');\n break;\n case \"capture\":\n case \"download\":\n true === value ? target.push(\" \", name, '=\"\"') : false !== value && \"function\" !== typeof value && \"symbol\" !== typeof value && target.push(\" \", name, '=\"', escapeTextForBrowser(value), '\"');\n break;\n case \"cols\":\n case \"rows\":\n case \"size\":\n case \"span\":\n \"function\" !== typeof value && \"symbol\" !== typeof value && !isNaN(value) && 1 <= value && target.push(\" \", name, '=\"', escapeTextForBrowser(value), '\"');\n break;\n case \"rowSpan\":\n case \"start\":\n \"function\" === typeof value || \"symbol\" === typeof value || isNaN(value) || target.push(\" \", name, '=\"', escapeTextForBrowser(value), '\"');\n break;\n case \"xlinkActuate\":\n pushStringAttribute(target, \"xlink:actuate\", value);\n break;\n case \"xlinkArcrole\":\n pushStringAttribute(target, \"xlink:arcrole\", value);\n break;\n case \"xlinkRole\":\n pushStringAttribute(target, \"xlink:role\", value);\n break;\n case \"xlinkShow\":\n pushStringAttribute(target, \"xlink:show\", value);\n break;\n case \"xlinkTitle\":\n pushStringAttribute(target, \"xlink:title\", value);\n break;\n case \"xlinkType\":\n pushStringAttribute(target, \"xlink:type\", value);\n break;\n case \"xmlBase\":\n pushStringAttribute(target, \"xml:base\", value);\n break;\n case \"xmlLang\":\n pushStringAttribute(target, \"xml:lang\", value);\n break;\n case \"xmlSpace\":\n pushStringAttribute(target, \"xml:space\", value);\n break;\n default:\n if (!(2 < name.length) || \"o\" !== name[0] && \"O\" !== name[0] || \"n\" !== name[1] && \"N\" !== name[1]) {\n if (name = aliases.get(name) || name, isAttributeNameSafe(name)) {\n switch (typeof value) {\n case \"function\":\n case \"symbol\":\n return;\n case \"boolean\":\n var prefix$8 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$8 && \"aria-\" !== prefix$8) return;\n }\n target.push(\" \", name, '=\"', escapeTextForBrowser(value), '\"');\n }\n }\n }\n }\n function pushInnerHTML(target, innerHTML, children) {\n if (null != innerHTML) {\n if (null != children) throw Error(formatProdErrorMessage3(60));\n if (\"object\" !== typeof innerHTML || !(\"__html\" in innerHTML))\n throw Error(formatProdErrorMessage3(61));\n innerHTML = innerHTML.__html;\n null !== innerHTML && void 0 !== innerHTML && target.push(\"\" + innerHTML);\n }\n }\n function flattenOptionChildren(children) {\n var content = \"\";\n React134.Children.forEach(children, function(child) {\n null != child && (content += child);\n });\n return content;\n }\n function injectFormReplayingRuntime(resumableState, renderState) {\n if (0 === (resumableState.instructions & 16)) {\n resumableState.instructions |= 16;\n var preamble = renderState.preamble, bootstrapChunks = renderState.bootstrapChunks;\n (preamble.htmlChunks || preamble.headChunks) && 0 === bootstrapChunks.length ? (bootstrapChunks.push(renderState.startInlineScript), pushCompletedShellIdAttribute(bootstrapChunks, resumableState), bootstrapChunks.push(\n \">\",\n `addEventListener(\"submit\",function(a){if(!a.defaultPrevented){var c=a.target,d=a.submitter,e=c.action,b=d;if(d){var f=d.getAttribute(\"formAction\");null!=f&&(e=f,b=null)}\"javascript:throw new Error('React form unexpectedly submitted.')\"===e&&(a.preventDefault(),b?(a=document.createElement(\"input\"),a.name=b.name,a.value=b.value,b.parentNode.insertBefore(a,b),b=new FormData(c),a.parentNode.removeChild(a)):b=new FormData(c),a=c.ownerDocument||c,(a.$$reactFormReplay=a.$$reactFormReplay||[]).push(c,d,b))}});`,\n \"<\\/script>\"\n )) : bootstrapChunks.unshift(\n renderState.startInlineScript,\n \">\",\n `addEventListener(\"submit\",function(a){if(!a.defaultPrevented){var c=a.target,d=a.submitter,e=c.action,b=d;if(d){var f=d.getAttribute(\"formAction\");null!=f&&(e=f,b=null)}\"javascript:throw new Error('React form unexpectedly submitted.')\"===e&&(a.preventDefault(),b?(a=document.createElement(\"input\"),a.name=b.name,a.value=b.value,b.parentNode.insertBefore(a,b),b=new FormData(c),a.parentNode.removeChild(a)):b=new FormData(c),a=c.ownerDocument||c,(a.$$reactFormReplay=a.$$reactFormReplay||[]).push(c,d,b))}});`,\n \"<\\/script>\"\n );\n }\n }\n function pushLinkImpl(target, props) {\n target.push(startChunkForTag(\"link\"));\n for (var propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage3(399, \"link\"));\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(\"/>\");\n return null;\n }\n var styleRegex = /(<\\/|<)(s)(tyle)/gi;\n function styleReplacer(match2, prefix3, s2, suffix3) {\n return \"\" + prefix3 + (\"s\" === s2 ? \"\\\\73 \" : \"\\\\53 \") + suffix3;\n }\n function pushSelfClosing(target, props, tag) {\n target.push(startChunkForTag(tag));\n for (var propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage3(399, tag));\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(\"/>\");\n return null;\n }\n function pushTitleImpl(target, props) {\n target.push(startChunkForTag(\"title\"));\n var children = null, innerHTML = null, propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n children = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(\">\");\n props = Array.isArray(children) ? 2 > children.length ? children[0] : null : children;\n \"function\" !== typeof props && \"symbol\" !== typeof props && null !== props && void 0 !== props && target.push(escapeTextForBrowser(\"\" + props));\n pushInnerHTML(target, innerHTML, children);\n target.push(endChunkForTag(\"title\"));\n return null;\n }\n function pushScriptImpl(target, props) {\n target.push(startChunkForTag(\"script\"));\n var children = null, innerHTML = null, propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n children = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(\">\");\n pushInnerHTML(target, innerHTML, children);\n \"string\" === typeof children && target.push((\"\" + children).replace(scriptRegex, scriptReplacer));\n target.push(endChunkForTag(\"script\"));\n return null;\n }\n function pushStartSingletonElement(target, props, tag) {\n target.push(startChunkForTag(tag));\n var innerHTML = tag = null, propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n tag = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(\">\");\n pushInnerHTML(target, innerHTML, tag);\n return tag;\n }\n function pushStartGenericElement(target, props, tag) {\n target.push(startChunkForTag(tag));\n var innerHTML = tag = null, propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n tag = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(\">\");\n pushInnerHTML(target, innerHTML, tag);\n return \"string\" === typeof tag ? (target.push(escapeTextForBrowser(tag)), null) : tag;\n }\n var VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/;\n var validatedTagCache = /* @__PURE__ */ new Map();\n function startChunkForTag(tag) {\n var tagStartChunk = validatedTagCache.get(tag);\n if (void 0 === tagStartChunk) {\n if (!VALID_TAG_REGEX.test(tag))\n throw Error(formatProdErrorMessage3(65, tag));\n tagStartChunk = \"<\" + tag;\n validatedTagCache.set(tag, tagStartChunk);\n }\n return tagStartChunk;\n }\n function pushStartInstance(target$jscomp$0, type, props, resumableState, renderState, preambleState, hoistableState, formatContext, textEmbedded) {\n switch (type) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n break;\n case \"a\":\n target$jscomp$0.push(startChunkForTag(\"a\"));\n var children = null, innerHTML = null, propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n children = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n case \"href\":\n \"\" === propValue ? pushStringAttribute(target$jscomp$0, \"href\", \"\") : pushAttribute(target$jscomp$0, propKey, propValue);\n break;\n default:\n pushAttribute(target$jscomp$0, propKey, propValue);\n }\n }\n target$jscomp$0.push(\">\");\n pushInnerHTML(target$jscomp$0, innerHTML, children);\n if (\"string\" === typeof children) {\n target$jscomp$0.push(escapeTextForBrowser(children));\n var JSCompiler_inline_result = null;\n } else JSCompiler_inline_result = children;\n return JSCompiler_inline_result;\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"select\":\n target$jscomp$0.push(startChunkForTag(\"select\"));\n var children$jscomp$0 = null, innerHTML$jscomp$0 = null, propKey$jscomp$0;\n for (propKey$jscomp$0 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$0)) {\n var propValue$jscomp$0 = props[propKey$jscomp$0];\n if (null != propValue$jscomp$0)\n switch (propKey$jscomp$0) {\n case \"children\":\n children$jscomp$0 = propValue$jscomp$0;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$0 = propValue$jscomp$0;\n break;\n case \"defaultValue\":\n case \"value\":\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$0,\n propValue$jscomp$0\n );\n }\n }\n target$jscomp$0.push(\">\");\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$0, children$jscomp$0);\n return children$jscomp$0;\n case \"option\":\n var selectedValue = formatContext.selectedValue;\n target$jscomp$0.push(startChunkForTag(\"option\"));\n var children$jscomp$1 = null, value = null, selected = null, innerHTML$jscomp$1 = null, propKey$jscomp$1;\n for (propKey$jscomp$1 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$1)) {\n var propValue$jscomp$1 = props[propKey$jscomp$1];\n if (null != propValue$jscomp$1)\n switch (propKey$jscomp$1) {\n case \"children\":\n children$jscomp$1 = propValue$jscomp$1;\n break;\n case \"selected\":\n selected = propValue$jscomp$1;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$1 = propValue$jscomp$1;\n break;\n case \"value\":\n value = propValue$jscomp$1;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$1,\n propValue$jscomp$1\n );\n }\n }\n if (null != selectedValue) {\n var stringValue = null !== value ? \"\" + value : flattenOptionChildren(children$jscomp$1);\n if (isArrayImpl(selectedValue))\n for (var i = 0; i < selectedValue.length; i++) {\n if (\"\" + selectedValue[i] === stringValue) {\n target$jscomp$0.push(' selected=\"\"');\n break;\n }\n }\n else\n \"\" + selectedValue === stringValue && target$jscomp$0.push(' selected=\"\"');\n } else selected && target$jscomp$0.push(' selected=\"\"');\n target$jscomp$0.push(\">\");\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$1, children$jscomp$1);\n return children$jscomp$1;\n case \"textarea\":\n target$jscomp$0.push(startChunkForTag(\"textarea\"));\n var value$jscomp$0 = null, defaultValue = null, children$jscomp$2 = null, propKey$jscomp$2;\n for (propKey$jscomp$2 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$2)) {\n var propValue$jscomp$2 = props[propKey$jscomp$2];\n if (null != propValue$jscomp$2)\n switch (propKey$jscomp$2) {\n case \"children\":\n children$jscomp$2 = propValue$jscomp$2;\n break;\n case \"value\":\n value$jscomp$0 = propValue$jscomp$2;\n break;\n case \"defaultValue\":\n defaultValue = propValue$jscomp$2;\n break;\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage3(91));\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$2,\n propValue$jscomp$2\n );\n }\n }\n null === value$jscomp$0 && null !== defaultValue && (value$jscomp$0 = defaultValue);\n target$jscomp$0.push(\">\");\n if (null != children$jscomp$2) {\n if (null != value$jscomp$0) throw Error(formatProdErrorMessage3(92));\n if (isArrayImpl(children$jscomp$2)) {\n if (1 < children$jscomp$2.length)\n throw Error(formatProdErrorMessage3(93));\n value$jscomp$0 = \"\" + children$jscomp$2[0];\n }\n value$jscomp$0 = \"\" + children$jscomp$2;\n }\n \"string\" === typeof value$jscomp$0 && \"\\n\" === value$jscomp$0[0] && target$jscomp$0.push(\"\\n\");\n null !== value$jscomp$0 && target$jscomp$0.push(escapeTextForBrowser(\"\" + value$jscomp$0));\n return null;\n case \"input\":\n target$jscomp$0.push(startChunkForTag(\"input\"));\n var name = null, formAction = null, formEncType = null, formMethod = null, formTarget = null, value$jscomp$1 = null, defaultValue$jscomp$0 = null, checked = null, defaultChecked = null, propKey$jscomp$3;\n for (propKey$jscomp$3 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$3)) {\n var propValue$jscomp$3 = props[propKey$jscomp$3];\n if (null != propValue$jscomp$3)\n switch (propKey$jscomp$3) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage3(399, \"input\"));\n case \"name\":\n name = propValue$jscomp$3;\n break;\n case \"formAction\":\n formAction = propValue$jscomp$3;\n break;\n case \"formEncType\":\n formEncType = propValue$jscomp$3;\n break;\n case \"formMethod\":\n formMethod = propValue$jscomp$3;\n break;\n case \"formTarget\":\n formTarget = propValue$jscomp$3;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$jscomp$3;\n break;\n case \"defaultValue\":\n defaultValue$jscomp$0 = propValue$jscomp$3;\n break;\n case \"checked\":\n checked = propValue$jscomp$3;\n break;\n case \"value\":\n value$jscomp$1 = propValue$jscomp$3;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$3,\n propValue$jscomp$3\n );\n }\n }\n var formData = pushFormActionAttribute(\n target$jscomp$0,\n resumableState,\n renderState,\n formAction,\n formEncType,\n formMethod,\n formTarget,\n name\n );\n null !== checked ? pushBooleanAttribute(target$jscomp$0, \"checked\", checked) : null !== defaultChecked && pushBooleanAttribute(target$jscomp$0, \"checked\", defaultChecked);\n null !== value$jscomp$1 ? pushAttribute(target$jscomp$0, \"value\", value$jscomp$1) : null !== defaultValue$jscomp$0 && pushAttribute(target$jscomp$0, \"value\", defaultValue$jscomp$0);\n target$jscomp$0.push(\"/>\");\n null != formData && formData.forEach(pushAdditionalFormField, target$jscomp$0);\n return null;\n case \"button\":\n target$jscomp$0.push(startChunkForTag(\"button\"));\n var children$jscomp$3 = null, innerHTML$jscomp$2 = null, name$jscomp$0 = null, formAction$jscomp$0 = null, formEncType$jscomp$0 = null, formMethod$jscomp$0 = null, formTarget$jscomp$0 = null, propKey$jscomp$4;\n for (propKey$jscomp$4 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$4)) {\n var propValue$jscomp$4 = props[propKey$jscomp$4];\n if (null != propValue$jscomp$4)\n switch (propKey$jscomp$4) {\n case \"children\":\n children$jscomp$3 = propValue$jscomp$4;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$2 = propValue$jscomp$4;\n break;\n case \"name\":\n name$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formAction\":\n formAction$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formEncType\":\n formEncType$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formMethod\":\n formMethod$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formTarget\":\n formTarget$jscomp$0 = propValue$jscomp$4;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$4,\n propValue$jscomp$4\n );\n }\n }\n var formData$jscomp$0 = pushFormActionAttribute(\n target$jscomp$0,\n resumableState,\n renderState,\n formAction$jscomp$0,\n formEncType$jscomp$0,\n formMethod$jscomp$0,\n formTarget$jscomp$0,\n name$jscomp$0\n );\n target$jscomp$0.push(\">\");\n null != formData$jscomp$0 && formData$jscomp$0.forEach(pushAdditionalFormField, target$jscomp$0);\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$2, children$jscomp$3);\n if (\"string\" === typeof children$jscomp$3) {\n target$jscomp$0.push(escapeTextForBrowser(children$jscomp$3));\n var JSCompiler_inline_result$jscomp$0 = null;\n } else JSCompiler_inline_result$jscomp$0 = children$jscomp$3;\n return JSCompiler_inline_result$jscomp$0;\n case \"form\":\n target$jscomp$0.push(startChunkForTag(\"form\"));\n var children$jscomp$4 = null, innerHTML$jscomp$3 = null, formAction$jscomp$1 = null, formEncType$jscomp$1 = null, formMethod$jscomp$1 = null, formTarget$jscomp$1 = null, propKey$jscomp$5;\n for (propKey$jscomp$5 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$5)) {\n var propValue$jscomp$5 = props[propKey$jscomp$5];\n if (null != propValue$jscomp$5)\n switch (propKey$jscomp$5) {\n case \"children\":\n children$jscomp$4 = propValue$jscomp$5;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$3 = propValue$jscomp$5;\n break;\n case \"action\":\n formAction$jscomp$1 = propValue$jscomp$5;\n break;\n case \"encType\":\n formEncType$jscomp$1 = propValue$jscomp$5;\n break;\n case \"method\":\n formMethod$jscomp$1 = propValue$jscomp$5;\n break;\n case \"target\":\n formTarget$jscomp$1 = propValue$jscomp$5;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$5,\n propValue$jscomp$5\n );\n }\n }\n var formData$jscomp$1 = null, formActionName = null;\n if (\"function\" === typeof formAction$jscomp$1) {\n var customFields = getCustomFormFields(\n resumableState,\n formAction$jscomp$1\n );\n null !== customFields ? (formAction$jscomp$1 = customFields.action || \"\", formEncType$jscomp$1 = customFields.encType, formMethod$jscomp$1 = customFields.method, formTarget$jscomp$1 = customFields.target, formData$jscomp$1 = customFields.data, formActionName = customFields.name) : (target$jscomp$0.push(\n \" \",\n \"action\",\n '=\"',\n actionJavaScriptURL,\n '\"'\n ), formTarget$jscomp$1 = formMethod$jscomp$1 = formEncType$jscomp$1 = formAction$jscomp$1 = null, injectFormReplayingRuntime(resumableState, renderState));\n }\n null != formAction$jscomp$1 && pushAttribute(target$jscomp$0, \"action\", formAction$jscomp$1);\n null != formEncType$jscomp$1 && pushAttribute(target$jscomp$0, \"encType\", formEncType$jscomp$1);\n null != formMethod$jscomp$1 && pushAttribute(target$jscomp$0, \"method\", formMethod$jscomp$1);\n null != formTarget$jscomp$1 && pushAttribute(target$jscomp$0, \"target\", formTarget$jscomp$1);\n target$jscomp$0.push(\">\");\n null !== formActionName && (target$jscomp$0.push('\"), null != formData$jscomp$1 && formData$jscomp$1.forEach(pushAdditionalFormField, target$jscomp$0));\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$3, children$jscomp$4);\n if (\"string\" === typeof children$jscomp$4) {\n target$jscomp$0.push(escapeTextForBrowser(children$jscomp$4));\n var JSCompiler_inline_result$jscomp$1 = null;\n } else JSCompiler_inline_result$jscomp$1 = children$jscomp$4;\n return JSCompiler_inline_result$jscomp$1;\n case \"menuitem\":\n target$jscomp$0.push(startChunkForTag(\"menuitem\"));\n for (var propKey$jscomp$6 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$6)) {\n var propValue$jscomp$6 = props[propKey$jscomp$6];\n if (null != propValue$jscomp$6)\n switch (propKey$jscomp$6) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage3(400));\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$6,\n propValue$jscomp$6\n );\n }\n }\n target$jscomp$0.push(\">\");\n return null;\n case \"object\":\n target$jscomp$0.push(startChunkForTag(\"object\"));\n var children$jscomp$5 = null, innerHTML$jscomp$4 = null, propKey$jscomp$7;\n for (propKey$jscomp$7 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$7)) {\n var propValue$jscomp$7 = props[propKey$jscomp$7];\n if (null != propValue$jscomp$7)\n switch (propKey$jscomp$7) {\n case \"children\":\n children$jscomp$5 = propValue$jscomp$7;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$4 = propValue$jscomp$7;\n break;\n case \"data\":\n var sanitizedValue = sanitizeURL(\"\" + propValue$jscomp$7);\n if (\"\" === sanitizedValue) break;\n target$jscomp$0.push(\n \" \",\n \"data\",\n '=\"',\n escapeTextForBrowser(sanitizedValue),\n '\"'\n );\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$7,\n propValue$jscomp$7\n );\n }\n }\n target$jscomp$0.push(\">\");\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$4, children$jscomp$5);\n if (\"string\" === typeof children$jscomp$5) {\n target$jscomp$0.push(escapeTextForBrowser(children$jscomp$5));\n var JSCompiler_inline_result$jscomp$2 = null;\n } else JSCompiler_inline_result$jscomp$2 = children$jscomp$5;\n return JSCompiler_inline_result$jscomp$2;\n case \"title\":\n var noscriptTagInScope = formatContext.tagScope & 1, isFallback = formatContext.tagScope & 4;\n if (4 === formatContext.insertionMode || noscriptTagInScope || null != props.itemProp)\n var JSCompiler_inline_result$jscomp$3 = pushTitleImpl(\n target$jscomp$0,\n props\n );\n else\n isFallback ? JSCompiler_inline_result$jscomp$3 = null : (pushTitleImpl(renderState.hoistableChunks, props), JSCompiler_inline_result$jscomp$3 = void 0);\n return JSCompiler_inline_result$jscomp$3;\n case \"link\":\n var noscriptTagInScope$jscomp$0 = formatContext.tagScope & 1, isFallback$jscomp$0 = formatContext.tagScope & 4, rel = props.rel, href = props.href, precedence = props.precedence;\n if (4 === formatContext.insertionMode || noscriptTagInScope$jscomp$0 || null != props.itemProp || \"string\" !== typeof rel || \"string\" !== typeof href || \"\" === href) {\n pushLinkImpl(target$jscomp$0, props);\n var JSCompiler_inline_result$jscomp$4 = null;\n } else if (\"stylesheet\" === props.rel)\n if (\"string\" !== typeof precedence || null != props.disabled || props.onLoad || props.onError)\n JSCompiler_inline_result$jscomp$4 = pushLinkImpl(\n target$jscomp$0,\n props\n );\n else {\n var styleQueue = renderState.styles.get(precedence), resourceState = resumableState.styleResources.hasOwnProperty(href) ? resumableState.styleResources[href] : void 0;\n if (null !== resourceState) {\n resumableState.styleResources[href] = null;\n styleQueue || (styleQueue = {\n precedence: escapeTextForBrowser(precedence),\n rules: [],\n hrefs: [],\n sheets: /* @__PURE__ */ new Map()\n }, renderState.styles.set(precedence, styleQueue));\n var resource = {\n state: 0,\n props: assign2({}, props, {\n \"data-precedence\": props.precedence,\n precedence: null\n })\n };\n if (resourceState) {\n 2 === resourceState.length && adoptPreloadCredentials(resource.props, resourceState);\n var preloadResource = renderState.preloads.stylesheets.get(href);\n preloadResource && 0 < preloadResource.length ? preloadResource.length = 0 : resource.state = 1;\n }\n styleQueue.sheets.set(href, resource);\n hoistableState && hoistableState.stylesheets.add(resource);\n } else if (styleQueue) {\n var resource$9 = styleQueue.sheets.get(href);\n resource$9 && hoistableState && hoistableState.stylesheets.add(resource$9);\n }\n textEmbedded && target$jscomp$0.push(\"\");\n JSCompiler_inline_result$jscomp$4 = null;\n }\n else\n props.onLoad || props.onError ? JSCompiler_inline_result$jscomp$4 = pushLinkImpl(\n target$jscomp$0,\n props\n ) : (textEmbedded && target$jscomp$0.push(\"\"), JSCompiler_inline_result$jscomp$4 = isFallback$jscomp$0 ? null : pushLinkImpl(renderState.hoistableChunks, props));\n return JSCompiler_inline_result$jscomp$4;\n case \"script\":\n var noscriptTagInScope$jscomp$1 = formatContext.tagScope & 1, asyncProp = props.async;\n if (\"string\" !== typeof props.src || !props.src || !asyncProp || \"function\" === typeof asyncProp || \"symbol\" === typeof asyncProp || props.onLoad || props.onError || 4 === formatContext.insertionMode || noscriptTagInScope$jscomp$1 || null != props.itemProp)\n var JSCompiler_inline_result$jscomp$5 = pushScriptImpl(\n target$jscomp$0,\n props\n );\n else {\n var key = props.src;\n if (\"module\" === props.type) {\n var resources = resumableState.moduleScriptResources;\n var preloads = renderState.preloads.moduleScripts;\n } else\n resources = resumableState.scriptResources, preloads = renderState.preloads.scripts;\n var resourceState$jscomp$0 = resources.hasOwnProperty(key) ? resources[key] : void 0;\n if (null !== resourceState$jscomp$0) {\n resources[key] = null;\n var scriptProps = props;\n if (resourceState$jscomp$0) {\n 2 === resourceState$jscomp$0.length && (scriptProps = assign2({}, props), adoptPreloadCredentials(scriptProps, resourceState$jscomp$0));\n var preloadResource$jscomp$0 = preloads.get(key);\n preloadResource$jscomp$0 && (preloadResource$jscomp$0.length = 0);\n }\n var resource$jscomp$0 = [];\n renderState.scripts.add(resource$jscomp$0);\n pushScriptImpl(resource$jscomp$0, scriptProps);\n }\n textEmbedded && target$jscomp$0.push(\"\");\n JSCompiler_inline_result$jscomp$5 = null;\n }\n return JSCompiler_inline_result$jscomp$5;\n case \"style\":\n var noscriptTagInScope$jscomp$2 = formatContext.tagScope & 1, precedence$jscomp$0 = props.precedence, href$jscomp$0 = props.href, nonce = props.nonce;\n if (4 === formatContext.insertionMode || noscriptTagInScope$jscomp$2 || null != props.itemProp || \"string\" !== typeof precedence$jscomp$0 || \"string\" !== typeof href$jscomp$0 || \"\" === href$jscomp$0) {\n target$jscomp$0.push(startChunkForTag(\"style\"));\n var children$jscomp$6 = null, innerHTML$jscomp$5 = null, propKey$jscomp$8;\n for (propKey$jscomp$8 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$8)) {\n var propValue$jscomp$8 = props[propKey$jscomp$8];\n if (null != propValue$jscomp$8)\n switch (propKey$jscomp$8) {\n case \"children\":\n children$jscomp$6 = propValue$jscomp$8;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$5 = propValue$jscomp$8;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$8,\n propValue$jscomp$8\n );\n }\n }\n target$jscomp$0.push(\">\");\n var child = Array.isArray(children$jscomp$6) ? 2 > children$jscomp$6.length ? children$jscomp$6[0] : null : children$jscomp$6;\n \"function\" !== typeof child && \"symbol\" !== typeof child && null !== child && void 0 !== child && target$jscomp$0.push((\"\" + child).replace(styleRegex, styleReplacer));\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$5, children$jscomp$6);\n target$jscomp$0.push(endChunkForTag(\"style\"));\n var JSCompiler_inline_result$jscomp$6 = null;\n } else {\n var styleQueue$jscomp$0 = renderState.styles.get(precedence$jscomp$0);\n if (null !== (resumableState.styleResources.hasOwnProperty(href$jscomp$0) ? resumableState.styleResources[href$jscomp$0] : void 0)) {\n resumableState.styleResources[href$jscomp$0] = null;\n styleQueue$jscomp$0 || (styleQueue$jscomp$0 = {\n precedence: escapeTextForBrowser(precedence$jscomp$0),\n rules: [],\n hrefs: [],\n sheets: /* @__PURE__ */ new Map()\n }, renderState.styles.set(precedence$jscomp$0, styleQueue$jscomp$0));\n var nonceStyle = renderState.nonce.style;\n if (!nonceStyle || nonceStyle === nonce) {\n styleQueue$jscomp$0.hrefs.push(escapeTextForBrowser(href$jscomp$0));\n var target = styleQueue$jscomp$0.rules, children$jscomp$7 = null, innerHTML$jscomp$6 = null, propKey$jscomp$9;\n for (propKey$jscomp$9 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$9)) {\n var propValue$jscomp$9 = props[propKey$jscomp$9];\n if (null != propValue$jscomp$9)\n switch (propKey$jscomp$9) {\n case \"children\":\n children$jscomp$7 = propValue$jscomp$9;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$6 = propValue$jscomp$9;\n }\n }\n var child$jscomp$0 = Array.isArray(children$jscomp$7) ? 2 > children$jscomp$7.length ? children$jscomp$7[0] : null : children$jscomp$7;\n \"function\" !== typeof child$jscomp$0 && \"symbol\" !== typeof child$jscomp$0 && null !== child$jscomp$0 && void 0 !== child$jscomp$0 && target.push(\n (\"\" + child$jscomp$0).replace(styleRegex, styleReplacer)\n );\n pushInnerHTML(target, innerHTML$jscomp$6, children$jscomp$7);\n }\n }\n styleQueue$jscomp$0 && hoistableState && hoistableState.styles.add(styleQueue$jscomp$0);\n textEmbedded && target$jscomp$0.push(\"\");\n JSCompiler_inline_result$jscomp$6 = void 0;\n }\n return JSCompiler_inline_result$jscomp$6;\n case \"meta\":\n var noscriptTagInScope$jscomp$3 = formatContext.tagScope & 1, isFallback$jscomp$1 = formatContext.tagScope & 4;\n if (4 === formatContext.insertionMode || noscriptTagInScope$jscomp$3 || null != props.itemProp)\n var JSCompiler_inline_result$jscomp$7 = pushSelfClosing(\n target$jscomp$0,\n props,\n \"meta\"\n );\n else\n textEmbedded && target$jscomp$0.push(\"\"), JSCompiler_inline_result$jscomp$7 = isFallback$jscomp$1 ? null : \"string\" === typeof props.charSet ? pushSelfClosing(renderState.charsetChunks, props, \"meta\") : \"viewport\" === props.name ? pushSelfClosing(renderState.viewportChunks, props, \"meta\") : pushSelfClosing(renderState.hoistableChunks, props, \"meta\");\n return JSCompiler_inline_result$jscomp$7;\n case \"listing\":\n case \"pre\":\n target$jscomp$0.push(startChunkForTag(type));\n var children$jscomp$8 = null, innerHTML$jscomp$7 = null, propKey$jscomp$10;\n for (propKey$jscomp$10 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$10)) {\n var propValue$jscomp$10 = props[propKey$jscomp$10];\n if (null != propValue$jscomp$10)\n switch (propKey$jscomp$10) {\n case \"children\":\n children$jscomp$8 = propValue$jscomp$10;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$7 = propValue$jscomp$10;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$10,\n propValue$jscomp$10\n );\n }\n }\n target$jscomp$0.push(\">\");\n if (null != innerHTML$jscomp$7) {\n if (null != children$jscomp$8) throw Error(formatProdErrorMessage3(60));\n if (\"object\" !== typeof innerHTML$jscomp$7 || !(\"__html\" in innerHTML$jscomp$7))\n throw Error(formatProdErrorMessage3(61));\n var html = innerHTML$jscomp$7.__html;\n null !== html && void 0 !== html && (\"string\" === typeof html && 0 < html.length && \"\\n\" === html[0] ? target$jscomp$0.push(\"\\n\", html) : target$jscomp$0.push(\"\" + html));\n }\n \"string\" === typeof children$jscomp$8 && \"\\n\" === children$jscomp$8[0] && target$jscomp$0.push(\"\\n\");\n return children$jscomp$8;\n case \"img\":\n var pictureOrNoScriptTagInScope = formatContext.tagScope & 3, src = props.src, srcSet = props.srcSet;\n if (!(\"lazy\" === props.loading || !src && !srcSet || \"string\" !== typeof src && null != src || \"string\" !== typeof srcSet && null != srcSet || \"low\" === props.fetchPriority || pictureOrNoScriptTagInScope) && (\"string\" !== typeof src || \":\" !== src[4] || \"d\" !== src[0] && \"D\" !== src[0] || \"a\" !== src[1] && \"A\" !== src[1] || \"t\" !== src[2] && \"T\" !== src[2] || \"a\" !== src[3] && \"A\" !== src[3]) && (\"string\" !== typeof srcSet || \":\" !== srcSet[4] || \"d\" !== srcSet[0] && \"D\" !== srcSet[0] || \"a\" !== srcSet[1] && \"A\" !== srcSet[1] || \"t\" !== srcSet[2] && \"T\" !== srcSet[2] || \"a\" !== srcSet[3] && \"A\" !== srcSet[3])) {\n null !== hoistableState && formatContext.tagScope & 64 && (hoistableState.suspenseyImages = true);\n var sizes = \"string\" === typeof props.sizes ? props.sizes : void 0, key$jscomp$0 = srcSet ? srcSet + \"\\n\" + (sizes || \"\") : src, promotablePreloads = renderState.preloads.images, resource$jscomp$1 = promotablePreloads.get(key$jscomp$0);\n if (resource$jscomp$1) {\n if (\"high\" === props.fetchPriority || 10 > renderState.highImagePreloads.size)\n promotablePreloads.delete(key$jscomp$0), renderState.highImagePreloads.add(resource$jscomp$1);\n } else if (!resumableState.imageResources.hasOwnProperty(key$jscomp$0)) {\n resumableState.imageResources[key$jscomp$0] = PRELOAD_NO_CREDS;\n var input2 = props.crossOrigin;\n var JSCompiler_inline_result$jscomp$8 = \"string\" === typeof input2 ? \"use-credentials\" === input2 ? input2 : \"\" : void 0;\n var headers = renderState.headers, header;\n headers && 0 < headers.remainingCapacity && \"string\" !== typeof props.srcSet && (\"high\" === props.fetchPriority || 500 > headers.highImagePreloads.length) && (header = getPreloadAsHeader(src, \"image\", {\n imageSrcSet: props.srcSet,\n imageSizes: props.sizes,\n crossOrigin: JSCompiler_inline_result$jscomp$8,\n integrity: props.integrity,\n nonce: props.nonce,\n type: props.type,\n fetchPriority: props.fetchPriority,\n referrerPolicy: props.refererPolicy\n }), 0 <= (headers.remainingCapacity -= header.length + 2)) ? (renderState.resets.image[key$jscomp$0] = PRELOAD_NO_CREDS, headers.highImagePreloads && (headers.highImagePreloads += \", \"), headers.highImagePreloads += header) : (resource$jscomp$1 = [], pushLinkImpl(resource$jscomp$1, {\n rel: \"preload\",\n as: \"image\",\n href: srcSet ? void 0 : src,\n imageSrcSet: srcSet,\n imageSizes: sizes,\n crossOrigin: JSCompiler_inline_result$jscomp$8,\n integrity: props.integrity,\n type: props.type,\n fetchPriority: props.fetchPriority,\n referrerPolicy: props.referrerPolicy\n }), \"high\" === props.fetchPriority || 10 > renderState.highImagePreloads.size ? renderState.highImagePreloads.add(resource$jscomp$1) : (renderState.bulkPreloads.add(resource$jscomp$1), promotablePreloads.set(key$jscomp$0, resource$jscomp$1)));\n }\n }\n return pushSelfClosing(target$jscomp$0, props, \"img\");\n case \"base\":\n case \"area\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"keygen\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n return pushSelfClosing(target$jscomp$0, props, type);\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n break;\n case \"head\":\n if (2 > formatContext.insertionMode) {\n var preamble = preambleState || renderState.preamble;\n if (preamble.headChunks)\n throw Error(formatProdErrorMessage3(545, \"``\"));\n null !== preambleState && target$jscomp$0.push(\"\");\n preamble.headChunks = [];\n var JSCompiler_inline_result$jscomp$9 = pushStartSingletonElement(\n preamble.headChunks,\n props,\n \"head\"\n );\n } else\n JSCompiler_inline_result$jscomp$9 = pushStartGenericElement(\n target$jscomp$0,\n props,\n \"head\"\n );\n return JSCompiler_inline_result$jscomp$9;\n case \"body\":\n if (2 > formatContext.insertionMode) {\n var preamble$jscomp$0 = preambleState || renderState.preamble;\n if (preamble$jscomp$0.bodyChunks)\n throw Error(formatProdErrorMessage3(545, \"``\"));\n null !== preambleState && target$jscomp$0.push(\"\");\n preamble$jscomp$0.bodyChunks = [];\n var JSCompiler_inline_result$jscomp$10 = pushStartSingletonElement(\n preamble$jscomp$0.bodyChunks,\n props,\n \"body\"\n );\n } else\n JSCompiler_inline_result$jscomp$10 = pushStartGenericElement(\n target$jscomp$0,\n props,\n \"body\"\n );\n return JSCompiler_inline_result$jscomp$10;\n case \"html\":\n if (0 === formatContext.insertionMode) {\n var preamble$jscomp$1 = preambleState || renderState.preamble;\n if (preamble$jscomp$1.htmlChunks)\n throw Error(formatProdErrorMessage3(545, \"``\"));\n null !== preambleState && target$jscomp$0.push(\"\");\n preamble$jscomp$1.htmlChunks = [\"\"];\n var JSCompiler_inline_result$jscomp$11 = pushStartSingletonElement(\n preamble$jscomp$1.htmlChunks,\n props,\n \"html\"\n );\n } else\n JSCompiler_inline_result$jscomp$11 = pushStartGenericElement(\n target$jscomp$0,\n props,\n \"html\"\n );\n return JSCompiler_inline_result$jscomp$11;\n default:\n if (-1 !== type.indexOf(\"-\")) {\n target$jscomp$0.push(startChunkForTag(type));\n var children$jscomp$9 = null, innerHTML$jscomp$8 = null, propKey$jscomp$11;\n for (propKey$jscomp$11 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$11)) {\n var propValue$jscomp$11 = props[propKey$jscomp$11];\n if (null != propValue$jscomp$11) {\n var attributeName = propKey$jscomp$11;\n switch (propKey$jscomp$11) {\n case \"children\":\n children$jscomp$9 = propValue$jscomp$11;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$8 = propValue$jscomp$11;\n break;\n case \"style\":\n pushStyleAttribute(target$jscomp$0, propValue$jscomp$11);\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"ref\":\n break;\n case \"className\":\n attributeName = \"class\";\n default:\n if (isAttributeNameSafe(propKey$jscomp$11) && \"function\" !== typeof propValue$jscomp$11 && \"symbol\" !== typeof propValue$jscomp$11 && false !== propValue$jscomp$11) {\n if (true === propValue$jscomp$11) propValue$jscomp$11 = \"\";\n else if (\"object\" === typeof propValue$jscomp$11) continue;\n target$jscomp$0.push(\n \" \",\n attributeName,\n '=\"',\n escapeTextForBrowser(propValue$jscomp$11),\n '\"'\n );\n }\n }\n }\n }\n target$jscomp$0.push(\">\");\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$8, children$jscomp$9);\n return children$jscomp$9;\n }\n }\n return pushStartGenericElement(target$jscomp$0, props, type);\n }\n var endTagCache = /* @__PURE__ */ new Map();\n function endChunkForTag(tag) {\n var chunk = endTagCache.get(tag);\n void 0 === chunk && (chunk = \"\", endTagCache.set(tag, chunk));\n return chunk;\n }\n function hoistPreambleState(renderState, preambleState) {\n renderState = renderState.preamble;\n null === renderState.htmlChunks && preambleState.htmlChunks && (renderState.htmlChunks = preambleState.htmlChunks);\n null === renderState.headChunks && preambleState.headChunks && (renderState.headChunks = preambleState.headChunks);\n null === renderState.bodyChunks && preambleState.bodyChunks && (renderState.bodyChunks = preambleState.bodyChunks);\n }\n function writeBootstrap(destination, renderState) {\n renderState = renderState.bootstrapChunks;\n for (var i = 0; i < renderState.length - 1; i++)\n destination.push(renderState[i]);\n return i < renderState.length ? (i = renderState[i], renderState.length = 0, destination.push(i)) : true;\n }\n function writeStartPendingSuspenseBoundary(destination, renderState, id) {\n destination.push('');\n }\n function writeStartSegment(destination, renderState, formatContext, id) {\n switch (formatContext.insertionMode) {\n case 0:\n case 1:\n case 3:\n case 2:\n return destination.push('