{"version":3,"file":"instance.js","names":["devalue.uneval","e.load_promise_not_serializable","devalue.stringify","devalue.uneval","$.derived","$.escape","assets","paths.assets","paths.app_dir","devalue.uneval","env.rendered_env","env.explicit_public_env","paths.assets","respond","devalue.uneval","respond","e.fetch_response_decoded","handle","env"],"sources":["../../../.svelte-kit/generated/build/shared/error-template.js","../../../.svelte-kit/generated/build/server.js","../../../node_modules/@sveltejs/kit/src/runtime/server/endpoint.js","../../../node_modules/@sveltejs/kit/src/utils/array.js","../../../node_modules/@sveltejs/kit/src/runtime/pathname.js","../../../node_modules/@sveltejs/kit/src/runtime/error-chain.js","../../../node_modules/@sveltejs/kit/src/utils/streaming.js","../../../node_modules/@sveltejs/kit/src/runtime/server/page/data_serializer.js","../../../node_modules/@sveltejs/kit/src/runtime/server/constants.js","../../../node_modules/@sveltejs/kit/src/runtime/server/page/load_data.js","../../../node_modules/@sveltejs/kit/src/utils/hash.js","../../../node_modules/@sveltejs/kit/src/utils/misc.js","../../../node_modules/@sveltejs/kit/src/utils/escape.js","../../../node_modules/@sveltejs/kit/src/runtime/server/page/serialize_data.js","../../../node_modules/@sveltejs/kit/src/runtime/server/page/csp.js","../../../node_modules/@sveltejs/kit/src/runtime/server/page/server_routing.js","../../../node_modules/@sveltejs/kit/src/runtime/app/navigation/server.js","../../../node_modules/@sveltejs/kit/src/runtime/components/root.svelte","../../../node_modules/@sveltejs/kit/src/runtime/props.svelte.js","../../../node_modules/@sveltejs/kit/src/runtime/server/page/render.js","../../../node_modules/@sveltejs/kit/src/utils/format.js","../../../node_modules/@sveltejs/kit/src/utils/exports.js","../../../node_modules/@sveltejs/kit/src/utils/page_nodes.js","../../../node_modules/@sveltejs/kit/src/runtime/server/page/respond_with_error.js","../../../node_modules/@sveltejs/kit/src/runtime/server/page/index.js","../../../node_modules/@sveltejs/kit/src/runtime/server/csrf.js","../../../node_modules/@sveltejs/kit/src/runtime/server/data/index.js","../../../node_modules/cookie/dist/index.js","../../../node_modules/@sveltejs/kit/src/runtime/server/cookie.js","../../../node_modules/@sveltejs/kit/src/runtime/server/state.js","../../../node_modules/@sveltejs/kit/src/runtime/server/fetch.js","../../../node_modules/@sveltejs/kit/src/runtime/server/env_module.js","../../../node_modules/@sveltejs/kit/src/runtime/server/validate-headers.js","../../../node_modules/@sveltejs/kit/src/runtime/server/respond.js","../../../node_modules/@sveltejs/kit/src/runtime/server/instance.js"],"sourcesContent":["export default ({ status, message }) => \"<!doctype html>\\n<html lang=\\\"en\\\">\\n\\t<head>\\n\\t\\t<meta charset=\\\"utf-8\\\" />\\n\\t\\t<title>\" + message + \"</title>\\n\\n\\t\\t<style>\\n\\t\\t\\tbody {\\n\\t\\t\\t\\t--bg: white;\\n\\t\\t\\t\\t--fg: #222;\\n\\t\\t\\t\\t--divider: #ccc;\\n\\t\\t\\t\\tbackground: var(--bg);\\n\\t\\t\\t\\tcolor: var(--fg);\\n\\t\\t\\t\\tfont-family:\\n\\t\\t\\t\\t\\tsystem-ui,\\n\\t\\t\\t\\t\\t-apple-system,\\n\\t\\t\\t\\t\\tBlinkMacSystemFont,\\n\\t\\t\\t\\t\\t'Segoe UI',\\n\\t\\t\\t\\t\\tRoboto,\\n\\t\\t\\t\\t\\tOxygen,\\n\\t\\t\\t\\t\\tUbuntu,\\n\\t\\t\\t\\t\\tCantarell,\\n\\t\\t\\t\\t\\t'Open Sans',\\n\\t\\t\\t\\t\\t'Helvetica Neue',\\n\\t\\t\\t\\t\\tsans-serif;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tjustify-content: center;\\n\\t\\t\\t\\theight: 100vh;\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.error {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tmax-width: 32rem;\\n\\t\\t\\t\\tmargin: 0 1rem;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.status {\\n\\t\\t\\t\\tfont-weight: 200;\\n\\t\\t\\t\\tfont-size: 3rem;\\n\\t\\t\\t\\tline-height: 1;\\n\\t\\t\\t\\tposition: relative;\\n\\t\\t\\t\\ttop: -0.05rem;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.message {\\n\\t\\t\\t\\tborder-left: 1px solid var(--divider);\\n\\t\\t\\t\\tpadding: 0 0 0 1rem;\\n\\t\\t\\t\\tmargin: 0 0 0 1rem;\\n\\t\\t\\t\\tmin-height: 2.5rem;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.message h1 {\\n\\t\\t\\t\\tfont-weight: 400;\\n\\t\\t\\t\\tfont-size: 1em;\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t@media (prefers-color-scheme: dark) {\\n\\t\\t\\t\\tbody {\\n\\t\\t\\t\\t\\t--bg: #222;\\n\\t\\t\\t\\t\\t--fg: #ddd;\\n\\t\\t\\t\\t\\t--divider: #666;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t</style>\\n\\t</head>\\n\\t<body>\\n\\t\\t<div class=\\\"error\\\">\\n\\t\\t\\t<span class=\\\"status\\\">\" + status + \"</span>\\n\\t\\t\\t<div class=\\\"message\\\">\\n\\t\\t\\t\\t<h1>\" + message + \"</h1>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</body>\\n</html>\\n\";","\nimport error from './shared/error-template.js';\n\nexport const options = {\n\tapp_template_contains_nonce: false,\n\tcsp: {\"mode\":\"auto\",\"directives\":{\"upgrade-insecure-requests\":false,\"block-all-mixed-content\":false},\"reportOnly\":{\"upgrade-insecure-requests\":false,\"block-all-mixed-content\":false}},\n\tcsrf_trusted_origins: [],\n\tservice_worker_options: undefined,\n\ttemplates: {\n\t\tapp: ({ head, body, assets, nonce, env }) => \"<!doctype html>\\n<html lang=\\\"en\\\">\\n\\t<head>\\n\\t\\t<meta charset=\\\"utf-8\\\" />\\n\\t\\t<meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\" />\\n\\t\\t<meta name=\\\"text-scale\\\" content=\\\"scale\\\" />\\n\\t\\t\" + head + \"\\n\\t</head>\\n\\t<body data-sveltekit-preload-data=\\\"hover\\\">\\n\\t\\t<div style=\\\"display: contents\\\">\" + body + \"</div>\\n\\t</body>\\n</html>\\n\",\n\t\terror\n\t}\n};\n\nexport async function get_hooks() {\n\tlet handle;\n\tlet handleFetch;\n\tlet handleError;\n\tlet init;\n\t\n\n\tlet reroute;\n\tlet transport;\n\t\n\n\treturn {\n\t\thandle,\n\t\thandleFetch,\n\t\thandleError,\n\t\tinit,\n\t\treroute,\n\t\ttransport\n\t};\n}\n","import { Redirect } from '@sveltejs/kit/internal';\nimport { merge_tracing, record_span, with_request_store } from '@sveltejs/kit/internal/server';\nimport { BODY_DEPENDENT_METHODS, ENDPOINT_METHODS, PAGE_METHODS } from '../../constants.js';\nimport { negotiate } from '../../utils/http.js';\nimport { method_not_allowed } from './utils.js';\nimport * as e from '../../messages/server-errors.js';\n\n/**\n * @param {import('@sveltejs/kit').RequestEvent} event\n * @param {import('types').RequestState} state\n * @param {import('types').SSREndpoint} mod\n * @returns {Promise<Response>}\n */\nexport async function render_endpoint(event, state, mod) {\n\tconst method = /** @type {import('types').HttpMethod} */ (event.request.method);\n\n\tlet handler = mod[method] || mod.fallback;\n\n\tif (method === 'HEAD' && !mod.HEAD && mod.GET) {\n\t\thandler = mod.GET;\n\t}\n\n\tif (!handler) {\n\t\treturn method_not_allowed(mod, method);\n\t}\n\n\tconst prerender = mod.prerender ?? state.prerender_default;\n\n\tif (\n\t\tprerender &&\n\t\t(mod.fallback ||\n\t\t\t/** @type {import('types').HttpMethod[]} */ (BODY_DEPENDENT_METHODS).some(\n\t\t\t\t(method) => mod[method]\n\t\t\t))\n\t) {\n\t\te.prerender_endpoint_methods({\n\t\t\tmethods: BODY_DEPENDENT_METHODS.join(', '),\n\t\t\tid: /** @type {string} */ (event.route.id)\n\t\t});\n\t}\n\n\tif (state.prerendering && !state.prerendering.inside_reroute && !prerender) {\n\t\tif (state.depth > 0) {\n\t\t\t// if request came from a prerendered page, bail\n\t\t\te.prerender_endpoint_not_prerenderable({ id: /** @type {string} */ (event.route.id) });\n\t\t} else {\n\t\t\t// if request came direct from the crawler, signal that\n\t\t\t// this route cannot be prerendered, but don't bail\n\t\t\treturn new Response(undefined, { status: 204 });\n\t\t}\n\t}\n\n\ttry {\n\t\tconst response = await record_span({\n\t\t\tname: 'sveltekit.endpoint',\n\t\t\tattributes: {\n\t\t\t\t'http.route': event.route.id || 'unknown',\n\t\t\t\t'http.method': method\n\t\t\t},\n\t\t\tfn: async (current) => {\n\t\t\t\tconst traced_event = merge_tracing(event, current);\n\t\t\t\treturn with_request_store({ event: traced_event, state }, () =>\n\t\t\t\t\thandler(\n\t\t\t\t\t\t/** @type {import('@sveltejs/kit').RequestEvent<Record<string, any>>} */ (traced_event)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tif (!(response instanceof Response)) {\n\t\t\te.endpoint_invalid_response({ path: event.url.pathname });\n\t\t}\n\n\t\tif (state.prerendering && (!state.prerendering.inside_reroute || prerender)) {\n\t\t\t// The returned Response might have immutable Headers\n\t\t\t// so we should clone them before trying to mutate them.\n\t\t\t// We also need to clone the response body since it may be read twice during prerendering\n\t\t\tconst cloned = new Response(response.clone().body, {\n\t\t\t\tstatus: response.status,\n\t\t\t\tstatusText: response.statusText,\n\t\t\t\theaders: new Headers(response.headers)\n\t\t\t});\n\t\t\tcloned.headers.set('x-sveltekit-prerender', String(prerender));\n\n\t\t\tif (state.prerendering.inside_reroute && prerender) {\n\t\t\t\t// Without this, the route wouldn't be recorded as prerendered,\n\t\t\t\t// because there's nothing after reroute that would do that.\n\t\t\t\tcloned.headers.set(\n\t\t\t\t\t'x-sveltekit-routeid',\n\t\t\t\t\tencodeURI(/** @type {string} */ (event.route.id))\n\t\t\t\t);\n\t\t\t\tstate.prerendering.dependencies.set(event.url.pathname, { response: cloned, body: null });\n\t\t\t} else {\n\t\t\t\treturn cloned;\n\t\t\t}\n\t\t}\n\n\t\treturn response;\n\t} catch (e) {\n\t\tif (e instanceof Redirect) {\n\t\t\treturn new Response(undefined, {\n\t\t\t\tstatus: e.status,\n\t\t\t\theaders: { location: e.location }\n\t\t\t});\n\t\t}\n\n\t\tthrow e;\n\t}\n}\n\n/**\n * @param {import('@sveltejs/kit').RequestEvent} event\n */\nexport function is_endpoint_request(event) {\n\tconst { method, headers } = event.request;\n\n\t// These methods exist exclusively for endpoints\n\tif (ENDPOINT_METHODS.includes(method) && !PAGE_METHODS.includes(method)) {\n\t\treturn true;\n\t}\n\n\t// use:enhance uses a custom header to disambiguate\n\tif (method === 'POST' && headers.get('x-sveltekit-action') === 'true') return false;\n\n\t// GET/POST requests may be for endpoints or pages. We prefer endpoints if this isn't a text/html request\n\tconst accept = event.request.headers.get('accept') ?? '*/*';\n\treturn negotiate(accept, ['*', 'text/html']) !== 'text/html';\n}\n","/**\n * Removes nullish values from an array.\n *\n * @template T\n * @param {Array<T>} arr\n */\nexport function compact(arr) {\n\treturn arr.filter(/** @returns {val is NonNullable<T>} */ (val) => val != null);\n}\n","import { app_dir, base } from '#app/paths';\nimport { add_resolution_suffix } from '../pathname.js';\n\nexport * from '../pathname.js';\n\nconst ROUTES_PREFIX = '/routes';\n\n/**\n * The pathname of the route-ID-keyed resolution module for a given route ID,\n * e.g. `/_app/routes/blog/[slug]/__route.js` (before prefixing with `base`).\n * @param {string} route_id\n * @returns {string}\n */\nexport function route_id_resolution_pathname(route_id) {\n\treturn add_resolution_suffix(`/${app_dir}${ROUTES_PREFIX}${route_id === '/' ? '' : route_id}`);\n}\n\n/**\n * Whether a pathname (with the `/__route.js` suffix already stripped, and `base` NOT yet stripped)\n * is a route-ID resolution request rather than a pathname resolution request.\n * @param {string} pathname\n * @returns {boolean}\n */\nexport function is_route_id_resolution_path(pathname) {\n\tconst prefix = `${base}/${app_dir}${ROUTES_PREFIX}`;\n\treturn pathname === prefix || pathname.startsWith(prefix + '/');\n}\n\n/**\n * Extract the route ID from a decoded, base-stripped, suffix-stripped pathname,\n * e.g. `/_app/routes/blog/[slug]` -> `/blog/[slug]`, `/_app/routes` -> `/`.\n * @param {string} pathname\n * @returns {string}\n */\nexport function extract_route_id(pathname) {\n\treturn pathname.slice(`/${app_dir}${ROUTES_PREFIX}`.length) || '/';\n}\n","/** @import { Component } from 'svelte'; */\n\n/**\n * Resolves the `+error.svelte` component that guards each node of `branch`, aligned to the\n * branch with its empty slots removed. A node is guarded by the closest error page declared\n * at or above it, except the root layout, which wraps the root error component rather than\n * being wrapped by it.\n * @template T\n * @param {Array<unknown>} branch\n * @param {Array<T | undefined | null>} errors the error page declared at each depth, if any\n * @param {(error: T) => Promise<Component | undefined> | undefined} load\n * @returns {Promise<Array<Component | undefined>>}\n */\nexport function build_error_chain(branch, errors, load) {\n\t/** @type {Array<Promise<Component | undefined> | undefined>} */\n\tconst chain = [undefined];\n\tlet last_idx = -1;\n\n\tfor (let i = 1; i < branch.length; i += 1) {\n\t\tif (!branch[i]) continue;\n\n\t\tlet j = i - 1;\n\t\twhile (j > last_idx + 1 && errors[j] == null) j -= 1;\n\t\tlast_idx = j;\n\n\t\tconst error = errors[j];\n\t\tchain.push(error == null ? undefined : load(error)?.catch(() => undefined));\n\t}\n\n\t// depths with no error page contribute `undefined` rather than a promise\n\t// eslint-disable-next-line @typescript-eslint/await-thenable\n\treturn Promise.all(chain);\n}\n\n/**\n * Walks up from the node at index `i` through the `+error.svelte` pages declared strictly\n * above it, nearest first. Yields each candidate with the branch depth it attaches at,\n * rewound past empty branch slots, so callers can skip candidates that fail to load.\n * @template T\n * @param {number} i\n * @param {Array<unknown>} branch\n * @param {Array<T | undefined | null>} errors the error page declared at each depth, if any\n * @returns {Generator<{ error: T; idx: number }>}\n */\nexport function* nearest_error_pages(i, branch, errors) {\n\twhile (i--) {\n\t\tconst error = errors[i];\n\t\tif (error != null) {\n\t\t\tlet j = i;\n\t\t\twhile (!branch[j]) j -= 1;\n\t\t\tyield { error, idx: j + 1 };\n\t\t}\n\t}\n}\n","import { noop } from './functions.js';\n\n/**\n * Create an async iterator and a function to push values into it\n * @template T\n * @returns {{\n *   iterate: (transform?: (input: T) => T) => AsyncIterable<T>;\n *   add: (promise: Promise<T>) => void;\n * }}\n */\nexport function create_async_iterator() {\n\tlet resolved = -1;\n\n\t/** @type {PromiseWithResolvers<T>[]} */\n\tconst deferred = [];\n\n\treturn {\n\t\tasync *iterate(transform = (x) => x) {\n\t\t\t// `deferred` can grow while we iterate, as resolved values may add further promises\n\t\t\tfor (let i = 0; i < deferred.length; i += 1) {\n\t\t\t\tyield transform(await deferred[i].promise);\n\t\t\t}\n\t\t},\n\t\tadd: (promise) => {\n\t\t\tconst next = Promise.withResolvers();\n\t\t\tvoid next.promise.catch(noop); // prevent unhandled rejection potentially crashing the process\n\t\t\tdeferred.push(next);\n\n\t\t\tvoid promise.then(\n\t\t\t\t(value) => {\n\t\t\t\t\tdeferred[++resolved].resolve(value);\n\t\t\t\t},\n\t\t\t\t(error) => {\n\t\t\t\t\tdeferred[++resolved].reject(error);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n}\n","import * as devalue from 'devalue';\nimport { compact } from '../../../utils/array.js';\nimport { create_async_iterator } from '../../../utils/streaming.js';\nimport { serialize_uses, throw_devalue_error } from '../utils.js';\nimport { handle_error_and_jsonify } from '../errors.js';\nimport { encoders } from '#app/internal/transport';\nimport { capture_error } from '../../../messages/internal/server.js';\nimport * as e from '../../../messages/server-errors.js';\n\n/**\n * If the serialized data contains promises, `chunks` will be an\n * async iterable containing their resolutions\n * @param {import('@sveltejs/kit').RequestEvent} event\n * @param {import('types').RequestState} state\n * @returns {import('./types.js').ServerDataSerializer}\n */\nexport function server_data_serializer(event, state) {\n\tlet promise_id = 1;\n\tlet max_nodes = -1;\n\n\tconst iterator = create_async_iterator();\n\tconst global = __SVELTEKIT_GLOBAL_NAME__;\n\n\t/** @param {number} index */\n\tfunction get_replacer(index) {\n\t\t/** @param {any} thing */\n\t\treturn function replacer(thing) {\n\t\t\tif (typeof thing?.then === 'function') {\n\t\t\t\tconst id = promise_id++;\n\n\t\t\t\tconst promise = thing\n\t\t\t\t\t.then(/** @param {any} data */ (data) => ({ data }))\n\t\t\t\t\t.catch(\n\t\t\t\t\t\t/** @param {any} error */ async (error) => ({\n\t\t\t\t\t\t\terror: await handle_error_and_jsonify(event, state, error)\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.then(\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * @param {{data: any; error: any}} result\n\t\t\t\t\t\t */\n\t\t\t\t\t\tasync ({ data, error }) => {\n\t\t\t\t\t\t\tlet str;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tstr = devalue.uneval(error ? [, error] : [data], replacer);\n\t\t\t\t\t\t\t} catch (serialization_error) {\n\t\t\t\t\t\t\t\terror = await handle_error_and_jsonify(\n\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\tcapture_error(() =>\n\t\t\t\t\t\t\t\t\t\te.load_promise_not_serializable(\n\t\t\t\t\t\t\t\t\t\t\t{ id: /** @type {string} */ (event.route.id) },\n\t\t\t\t\t\t\t\t\t\t\t{ cause: serialization_error }\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tstr = devalue.uneval([, error], replacer);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\tstr: `${global}.resolve(${id}, ${str.includes('app.decode') ? `(app) => ${str}` : `() => ${str}`})`\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\titerator.add(promise);\n\n\t\t\t\treturn `${global}.defer(${id})`;\n\t\t\t} else {\n\t\t\t\tfor (const key in encoders) {\n\t\t\t\t\tconst encoded = encoders[key](thing);\n\t\t\t\t\tif (encoded) {\n\t\t\t\t\t\treturn `app.decode('${key}', ${devalue.uneval(encoded, replacer)})`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tconst strings = /** @type {string[]} */ ([]);\n\n\treturn {\n\t\tset_max_nodes(i) {\n\t\t\tmax_nodes = i;\n\t\t},\n\n\t\tadd_node(i, node) {\n\t\t\ttry {\n\t\t\t\tif (!node) {\n\t\t\t\t\tstrings[i] = 'null';\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/** @type {any} */\n\t\t\t\tconst payload = { type: 'data', data: node.data, uses: serialize_uses(node) };\n\t\t\t\tif (node.slash) payload.slash = node.slash;\n\n\t\t\t\tstrings[i] = devalue.uneval(payload, get_replacer(i));\n\t\t\t} catch (/** @type {any} */ error) {\n\t\t\t\terror.path = error.path.slice(1);\n\t\t\t\tthrow_devalue_error(event, error);\n\t\t\t}\n\t\t},\n\n\t\tget_data(csp) {\n\t\t\tconst open = `<script${csp.script_needs_nonce ? ` nonce=\"${csp.nonce}\"` : ''}>`;\n\t\t\tconst close = `</script>\\n`;\n\n\t\t\treturn {\n\t\t\t\tdata: `[${compact(max_nodes > -1 ? strings.slice(0, max_nodes) : strings).join(',')}]`,\n\t\t\t\tchunks:\n\t\t\t\t\tpromise_id > 1\n\t\t\t\t\t\t? iterator.iterate(({ index, str }) => {\n\t\t\t\t\t\t\t\tif (max_nodes > -1 && index >= max_nodes) {\n\t\t\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn open + str + close;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t: null\n\t\t\t};\n\t\t}\n\t};\n}\n\n/**\n * If the serialized data contains promises, `chunks` will be an\n * async iterable containing their resolutions\n * @param {import('@sveltejs/kit').RequestEvent} event\n * @param {import('types').RequestState} state\n * @returns {import('./types.js').ServerDataSerializerJson}\n */\nexport function server_data_serializer_json(event, state) {\n\tlet promise_id = 1;\n\n\tconst iterator = create_async_iterator();\n\n\tconst reducers = {\n\t\t...encoders,\n\t\t/** @param {any} thing */\n\t\tPromise: (thing) => {\n\t\t\tif (typeof thing?.then !== 'function') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst id = promise_id++;\n\n\t\t\t/** @type {'data' | 'error'} */\n\t\t\tlet key = 'data';\n\n\t\t\tconst promise = thing\n\t\t\t\t.catch(\n\t\t\t\t\t/** @param {any} error */ async (error) => {\n\t\t\t\t\t\tkey = 'error';\n\t\t\t\t\t\treturn handle_error_and_jsonify(event, state, error);\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t.then(\n\t\t\t\t\t/** @param {any} value */\n\t\t\t\t\tasync (value) => {\n\t\t\t\t\t\tlet str;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tstr = devalue.stringify(value, reducers);\n\t\t\t\t\t\t} catch (serialization_error) {\n\t\t\t\t\t\t\tconst error = await handle_error_and_jsonify(\n\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\tcapture_error(() =>\n\t\t\t\t\t\t\t\t\te.load_promise_not_serializable(\n\t\t\t\t\t\t\t\t\t\t{ id: /** @type {string} */ (event.route.id) },\n\t\t\t\t\t\t\t\t\t\t{ cause: serialization_error }\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tkey = 'error';\n\t\t\t\t\t\t\tstr = devalue.stringify(error, reducers);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn `{\"type\":\"chunk\",\"id\":${id},\"${key}\":${str}}\\n`;\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\titerator.add(promise);\n\n\t\t\treturn id;\n\t\t}\n\t};\n\n\tconst strings = /** @type {string[]} */ ([]);\n\n\treturn {\n\t\tadd_node(i, node) {\n\t\t\ttry {\n\t\t\t\tif (!node) {\n\t\t\t\t\tstrings[i] = 'null';\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (node.type === 'error' || node.type === 'skip') {\n\t\t\t\t\tstrings[i] = JSON.stringify(node);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstrings[i] =\n\t\t\t\t\t`{\"type\":\"data\",\"data\":${devalue.stringify(node.data, reducers)},\"uses\":${JSON.stringify(\n\t\t\t\t\t\tserialize_uses(node)\n\t\t\t\t\t)}${node.slash ? `,\"slash\":${JSON.stringify(node.slash)}` : ''}}`;\n\t\t\t} catch (/** @type {any} */ error) {\n\t\t\t\terror.path = 'data' + error.path;\n\t\t\t\tthrow_devalue_error(event, error);\n\t\t\t}\n\t\t},\n\n\t\tget_data() {\n\t\t\treturn {\n\t\t\t\tdata: `{\"type\":\"data\",\"nodes\":[${strings.join(',')}]}\\n`,\n\t\t\t\tchunks: promise_id > 1 ? iterator.iterate() : null\n\t\t\t};\n\t\t}\n\t};\n}\n","export const NULL_BODY_STATUS = [101, 103, 204, 205, 304];\n","import { DEV } from 'esm-env';\nimport { noop } from '../../../utils/functions.js';\nimport { disable_search, make_trackable } from '../../../utils/url.js';\nimport { fetch_cache_url, validate_depends, validate_load_response } from '../../shared.js';\nimport { with_request_store, merge_tracing, record_span } from '@sveltejs/kit/internal/server';\nimport { base64_encode } from '../../utils.js';\nimport { NULL_BODY_STATUS } from '../constants.js';\nimport { get_node_type } from '../utils.js';\nimport * as e from '../../../messages/server-errors.js';\nimport * as w from '../../../messages/server-warnings.js';\n\n/**\n * Calls the user's server `load` function.\n * @param {{\n *   event: import('@sveltejs/kit').RequestEvent;\n *   state: import('types').RequestState;\n *   node: import('types').SSRNode | undefined;\n *   parent: () => Promise<Record<string, any>>;\n * }} opts\n * @returns {Promise<import('types').ServerDataNode | null>}\n */\nexport async function load_server_data({ event, state, node, parent }) {\n\tif (!node?.server) return null;\n\n\tlet is_tracking = true;\n\n\tconst uses = {\n\t\tdependencies: new Set(),\n\t\tparams: new Set(),\n\t\tparent: false,\n\t\troute: false,\n\t\turl: false,\n\t\tsearch_params: new Set()\n\t};\n\n\tconst load = node.server.load;\n\t// TODO: shouldn't this be calculated using PageNodes? there could be a trailingSlash option on a layout\n\tconst slash = node.server.trailingSlash;\n\n\tif (!load) {\n\t\treturn { type: 'data', data: null, uses, slash };\n\t}\n\n\tconst url = make_trackable(\n\t\tevent.url,\n\t\t() => {\n\t\t\tif (DEV && done && !uses.url) {\n\t\t\t\tw.load_tracking_after_return({\n\t\t\t\t\tid: /** @type {string} */ (node.server_id),\n\t\t\t\t\tusage: 'Accessing URL properties',\n\t\t\t\t\tchange: 'the URL changes'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (is_tracking) {\n\t\t\t\tuses.url = true;\n\t\t\t}\n\t\t},\n\t\t(param) => {\n\t\t\tif (DEV && done && !uses.search_params.has(param)) {\n\t\t\t\tw.load_tracking_after_return({\n\t\t\t\t\tid: /** @type {string} */ (node.server_id),\n\t\t\t\t\tusage: 'Accessing URL properties',\n\t\t\t\t\tchange: 'the URL changes'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (is_tracking) {\n\t\t\t\tuses.search_params.add(param);\n\t\t\t}\n\t\t}\n\t);\n\n\tif (state.prerendering || state.prerender_default === true) {\n\t\tdisable_search(url);\n\t}\n\n\tlet done = false;\n\n\tconst result = await record_span({\n\t\tname: 'sveltekit.load',\n\t\tattributes: {\n\t\t\t'sveltekit.load.node_id': node.server_id || 'unknown',\n\t\t\t'sveltekit.load.node_type': get_node_type(node.server_id),\n\t\t\t'sveltekit.load.environment': 'server',\n\t\t\t'http.route': event.route.id || 'unknown'\n\t\t},\n\t\tfn: async (current) => {\n\t\t\tconst traced_event = merge_tracing(event, current);\n\t\t\tconst result = await with_request_store({ event: traced_event, state }, () =>\n\t\t\t\tload.call(null, {\n\t\t\t\t\t...traced_event,\n\t\t\t\t\tfetch: (info, init) => {\n\t\t\t\t\t\tconst url = new URL(info instanceof Request ? info.url : info, event.url);\n\n\t\t\t\t\t\tif (DEV && done && !uses.dependencies.has(url.href)) {\n\t\t\t\t\t\t\tw.load_tracking_after_return({\n\t\t\t\t\t\t\t\tid: /** @type {string} */ (node.server_id),\n\t\t\t\t\t\t\t\tusage: 'Calling `event.fetch(...)`',\n\t\t\t\t\t\t\t\tchange: 'the dependency is invalidated'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Note: server fetches are not added to uses.depends due to security concerns\n\t\t\t\t\t\treturn event.fetch(info, init);\n\t\t\t\t\t},\n\t\t\t\t\t/** @param {string[]} deps */\n\t\t\t\t\tdepends: (...deps) => {\n\t\t\t\t\t\tfor (const dep of deps) {\n\t\t\t\t\t\t\tconst { href } = new URL(dep, event.url);\n\n\t\t\t\t\t\t\tif (DEV) {\n\t\t\t\t\t\t\t\tvalidate_depends(node.server_id || 'missing route ID', dep);\n\n\t\t\t\t\t\t\t\tif (done && !uses.dependencies.has(href)) {\n\t\t\t\t\t\t\t\t\tw.load_tracking_after_return({\n\t\t\t\t\t\t\t\t\t\tid: /** @type {string} */ (node.server_id),\n\t\t\t\t\t\t\t\t\t\tusage: 'Calling `depends(...)`',\n\t\t\t\t\t\t\t\t\t\tchange: 'the dependency is invalidated'\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tuses.dependencies.add(href);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tparams: new Proxy(event.params, {\n\t\t\t\t\t\tget: (target, key) => {\n\t\t\t\t\t\t\tif (DEV && done && typeof key === 'string' && !uses.params.has(key)) {\n\t\t\t\t\t\t\t\tw.load_tracking_after_return({\n\t\t\t\t\t\t\t\t\tid: /** @type {string} */ (node.server_id),\n\t\t\t\t\t\t\t\t\tusage: `Accessing \\`params.${key}\\``,\n\t\t\t\t\t\t\t\t\tchange: 'the param changes'\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (is_tracking) {\n\t\t\t\t\t\t\t\tuses.params.add(key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn target[/** @type {string} */ (key)];\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tparent: async () => {\n\t\t\t\t\t\tif (DEV && done && !uses.parent) {\n\t\t\t\t\t\t\tw.load_tracking_after_return({\n\t\t\t\t\t\t\t\tid: /** @type {string} */ (node.server_id),\n\t\t\t\t\t\t\t\tusage: 'Calling `parent(...)`',\n\t\t\t\t\t\t\t\tchange: 'parent data changes'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (is_tracking) {\n\t\t\t\t\t\t\tuses.parent = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn parent();\n\t\t\t\t\t},\n\t\t\t\t\troute: new Proxy(event.route, {\n\t\t\t\t\t\tget: (target, key) => {\n\t\t\t\t\t\t\tif (DEV && done && typeof key === 'string' && !uses.route) {\n\t\t\t\t\t\t\t\tw.load_tracking_after_return({\n\t\t\t\t\t\t\t\t\tid: /** @type {string} */ (node.server_id),\n\t\t\t\t\t\t\t\t\tusage: `Accessing \\`route.${key}\\``,\n\t\t\t\t\t\t\t\t\tchange: 'the route changes'\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (is_tracking) {\n\t\t\t\t\t\t\t\tuses.route = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn target[/** @type {'id'} */ (key)];\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\turl,\n\t\t\t\t\tuntrack(fn) {\n\t\t\t\t\t\tis_tracking = false;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\treturn fn();\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tis_tracking = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\n\t\t\treturn result;\n\t\t}\n\t});\n\n\tif (DEV) {\n\t\tvalidate_load_response(result, `in ${node.server_id}`);\n\t}\n\n\tdone = true;\n\n\treturn {\n\t\ttype: 'data',\n\t\tdata: result ?? null,\n\t\tuses,\n\t\tslash\n\t};\n}\n\n/**\n * Calls the user's `load` function.\n * @param {{\n *   event: import('@sveltejs/kit').RequestEvent;\n *   state: import('types').RequestState;\n *   fetched: import('./types.js').Fetched[];\n *   node: import('types').SSRNode | undefined;\n *   parent: () => Promise<Record<string, any>>;\n *   resolve_opts: import('types').RequiredResolveOptions;\n *   server_data_promise: Promise<import('types').ServerDataNode | null>;\n *   csr: boolean;\n * }} opts\n * @returns {Promise<Record<string, any | Promise<any>> | null>}\n */\nexport async function load_data({\n\tevent,\n\tstate,\n\tfetched,\n\tnode,\n\tparent,\n\tserver_data_promise,\n\tresolve_opts,\n\tcsr\n}) {\n\tconst server_data_node = await server_data_promise;\n\n\tconst load = node?.universal?.load;\n\n\tif (!load) {\n\t\treturn server_data_node?.data ?? null;\n\t}\n\n\tconst result = await record_span({\n\t\tname: 'sveltekit.load',\n\t\tattributes: {\n\t\t\t'sveltekit.load.node_id': node.universal_id || 'unknown',\n\t\t\t'sveltekit.load.node_type': get_node_type(node.universal_id),\n\t\t\t'sveltekit.load.environment': 'server',\n\t\t\t'http.route': event.route.id || 'unknown'\n\t\t},\n\t\tfn: async (current) => {\n\t\t\tconst traced_event = merge_tracing(event, current);\n\n\t\t\treturn await with_request_store({ event: traced_event, state }, () =>\n\t\t\t\tload.call(null, {\n\t\t\t\t\turl: event.url,\n\t\t\t\t\tparams: event.params,\n\t\t\t\t\tdata: server_data_node?.data ?? null,\n\t\t\t\t\troute: event.route,\n\t\t\t\t\tfetch: create_universal_fetch(event, state.prerendering, fetched, csr, resolve_opts),\n\t\t\t\t\tsetHeaders: event.setHeaders,\n\t\t\t\t\tdepends: noop,\n\t\t\t\t\tparent,\n\t\t\t\t\tuntrack: (fn) => fn(),\n\t\t\t\t\ttracing: traced_event.tracing\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t});\n\n\tif (DEV) {\n\t\tvalidate_load_response(result, `in ${node.universal_id}`);\n\t}\n\n\treturn result ?? null;\n}\n\n/**\n * @param {Pick<import('@sveltejs/kit').RequestEvent, 'fetch' | 'url' | 'request' | 'route'>} event\n * @param {import('types').PrerenderOptions | undefined} prerendering\n * @param {import('./types.js').Fetched[]} fetched\n * @param {boolean} csr\n * @param {Pick<Required<import('@sveltejs/kit/hooks').ResolveOptions>, 'filterSerializedResponseHeaders'>} resolve_opts\n * @returns {typeof fetch}\n */\nexport function create_universal_fetch(event, prerendering, fetched, csr, resolve_opts) {\n\t/**\n\t * @param {URL | RequestInfo} input\n\t * @param {RequestInit} [init]\n\t */\n\tconst universal_fetch = async (input, init) => {\n\t\tconst cloned_body = input instanceof Request && input.body ? input.clone().body : null;\n\n\t\tconst cloned_headers =\n\t\t\tinput instanceof Request && [...input.headers].length\n\t\t\t\t? new Headers(input.headers)\n\t\t\t\t: init?.headers;\n\n\t\tlet response = await event.fetch(input, init);\n\n\t\tconst url = new URL(input instanceof Request ? input.url : input, event.url);\n\t\tconst same_origin = url.origin === event.url.origin;\n\n\t\t/** @type {import('types').PrerenderDependency} */\n\t\tlet dependency;\n\n\t\tif (same_origin) {\n\t\t\tif (prerendering) {\n\t\t\t\tdependency = { response, body: null };\n\t\t\t\tprerendering.dependencies.set(url.pathname, dependency);\n\t\t\t}\n\t\t} else if (url.protocol === 'https:' || url.protocol === 'http:') {\n\t\t\t// simulate CORS errors and \"no access to body in no-cors mode\" server-side for consistency with client-side behaviour\n\t\t\tconst mode = input instanceof Request ? input.mode : (init?.mode ?? 'cors');\n\t\t\tif (mode === 'no-cors') {\n\t\t\t\tresponse = new Response('', {\n\t\t\t\t\tstatus: response.status,\n\t\t\t\t\tstatusText: response.statusText,\n\t\t\t\t\theaders: response.headers\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst acao = response.headers.get('access-control-allow-origin');\n\t\t\t\tif (!acao || (acao !== event.url.origin && acao !== '*')) {\n\t\t\t\t\te.load_fetch_cors({ reason: acao ? 'Incorrect' : 'No' });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/** @type {ReadableStream<Uint8Array>} */\n\t\tlet teed_body;\n\n\t\tconst proxy = new Proxy(response, {\n\t\t\tget(response, key, receiver) {\n\t\t\t\t/**\n\t\t\t\t * @param {string | undefined} body\n\t\t\t\t * @param {boolean} is_b64\n\t\t\t\t */\n\t\t\t\tasync function push_fetched(body, is_b64) {\n\t\t\t\t\tconst status_number = Number(response.status);\n\t\t\t\t\tif (isNaN(status_number)) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`response.status is not a number. value: \"${\n\t\t\t\t\t\t\t\tresponse.status\n\t\t\t\t\t\t\t}\" type: ${typeof response.status}`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst request_body =\n\t\t\t\t\t\tinput instanceof Request && cloned_body\n\t\t\t\t\t\t\t? await new Response(cloned_body).text()\n\t\t\t\t\t\t\t: init?.body;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\trequest_body &&\n\t\t\t\t\t\ttypeof request_body !== 'string' &&\n\t\t\t\t\t\t!ArrayBuffer.isView(request_body)\n\t\t\t\t\t) {\n\t\t\t\t\t\t// requests whose body can't be hashed aren't serialized — the browser repeats the fetch\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tfetched.push({\n\t\t\t\t\t\turl: fetch_cache_url(url, event.url),\n\t\t\t\t\t\tmethod: event.request.method,\n\t\t\t\t\t\trequest_body: /** @type {string | ArrayBufferView | null | undefined} */ (request_body),\n\t\t\t\t\t\trequest_headers: cloned_headers,\n\t\t\t\t\t\tresponse_body: body,\n\t\t\t\t\t\tresponse,\n\t\t\t\t\t\tis_b64\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (key === 'body') {\n\t\t\t\t\tif (response.body === null) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (teed_body) {\n\t\t\t\t\t\treturn teed_body;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [a, b] = response.body.tee();\n\n\t\t\t\t\tvoid (async () => {\n\t\t\t\t\t\tconst result = new Uint8Array(await new Response(a).arrayBuffer());\n\n\t\t\t\t\t\tif (dependency) {\n\t\t\t\t\t\t\tdependency.body = new Uint8Array(result);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvoid push_fetched(base64_encode(result), true);\n\t\t\t\t\t})().catch(noop); // prevent unhandled rejection potentially crashing the process\n\n\t\t\t\t\treturn (teed_body = b);\n\t\t\t\t}\n\n\t\t\t\tif (key === 'arrayBuffer') {\n\t\t\t\t\treturn async () => {\n\t\t\t\t\t\tconst buffer = await response.arrayBuffer();\n\n\t\t\t\t\t\tconst bytes = new Uint8Array(buffer);\n\n\t\t\t\t\t\tif (dependency) {\n\t\t\t\t\t\t\tdependency.body = bytes;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (buffer instanceof ArrayBuffer) {\n\t\t\t\t\t\t\tawait push_fetched(base64_encode(bytes), true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn buffer;\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tasync function text() {\n\t\t\t\t\tconst body = await response.text();\n\n\t\t\t\t\tif (body === '' && NULL_BODY_STATUS.includes(response.status)) {\n\t\t\t\t\t\tawait push_fetched(undefined, false);\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!body || typeof body === 'string') {\n\t\t\t\t\t\tawait push_fetched(body, false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (dependency) {\n\t\t\t\t\t\tdependency.body = body;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn body;\n\t\t\t\t}\n\n\t\t\t\tif (key === 'text') {\n\t\t\t\t\treturn text;\n\t\t\t\t}\n\n\t\t\t\tif (key === 'json') {\n\t\t\t\t\treturn async () => {\n\t\t\t\t\t\tconst body = await text();\n\t\t\t\t\t\treturn body ? JSON.parse(body) : undefined;\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst value = Reflect.get(response, key, response);\n\n\t\t\t\tif (value instanceof Function) {\n\t\t\t\t\t// On Node v24+, the Response object has a private element #state – we\n\t\t\t\t\t// need to bind this function to the response in order to allow it to\n\t\t\t\t\t// access this private element. Defining the name and length ensure it\n\t\t\t\t\t// is identical to the original function when introspected.\n\t\t\t\t\treturn Object.defineProperties(\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * @this {any}\n\t\t\t\t\t\t */\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\treturn Reflect.apply(value, this === receiver ? response : this, arguments);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: { value: value.name },\n\t\t\t\t\t\t\tlength: { value: value.length }\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t}\n\t\t});\n\n\t\tif (csr) {\n\t\t\t// ensure that excluded headers can't be read\n\t\t\tconst get = response.headers.get;\n\t\t\tresponse.headers.get = (key) => {\n\t\t\t\tconst lower = key.toLowerCase();\n\t\t\t\tconst value = get.call(response.headers, lower);\n\t\t\t\tif (value && !lower.startsWith('x-sveltekit-')) {\n\t\t\t\t\tconst included = resolve_opts.filterSerializedResponseHeaders(lower, value);\n\t\t\t\t\tif (!included) {\n\t\t\t\t\t\te.load_response_header_not_serialized({\n\t\t\t\t\t\t\tname: lower,\n\t\t\t\t\t\t\tid: /** @type {string} */ (event.route.id)\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t};\n\n\t\t\tconst get_set_cookie = response.headers.getSetCookie;\n\t\t\tresponse.headers.getSetCookie = () => {\n\t\t\t\tconst values = get_set_cookie.call(response.headers);\n\t\t\t\tfor (const value of values) {\n\t\t\t\t\tconst included = resolve_opts.filterSerializedResponseHeaders('set-cookie', value);\n\t\t\t\t\tif (!included) {\n\t\t\t\t\t\te.load_response_header_not_serialized({\n\t\t\t\t\t\t\tname: 'set-cookie',\n\t\t\t\t\t\t\tid: /** @type {string} */ (event.route.id)\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t};\n\t\t}\n\n\t\treturn proxy;\n\t};\n\n\t// Don't make this function `async`! Otherwise, the user has to `catch` promises they use for streaming responses or else\n\t// it will be an unhandled rejection. Instead, we add a `.catch(noop)` ourselves below to this from happening.\n\treturn (input, init) => {\n\t\t// See docs in fetch.js for why we need to do this\n\t\tconst response = universal_fetch(input, init);\n\t\tresponse.catch(noop);\n\t\treturn response;\n\t};\n}\n","/**\n * Hash using djb2\n * @param {import('types').StrictBody[]} values\n */\nexport function hash(...values) {\n\tlet hash = 5381;\n\n\tfor (const value of values) {\n\t\tif (typeof value === 'string') {\n\t\t\tlet i = value.length;\n\t\t\twhile (i) hash = (hash * 33) ^ value.charCodeAt(--i);\n\t\t} else if (ArrayBuffer.isView(value)) {\n\t\t\tconst buffer = new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n\t\t\tlet i = buffer.length;\n\t\t\twhile (i) hash = (hash * 33) ^ buffer[--i];\n\t\t} else {\n\t\t\tthrow new TypeError('value must be a string or TypedArray');\n\t\t}\n\t}\n\n\treturn (hash >>> 0).toString(36);\n}\n\n/**\n * Hash of the headers and body a `fetch` was called with. The server-side serializer and the\n * client-side cache lookup must produce identical values for cached responses to be found.\n * @param {HeadersInit | undefined} headers\n * @param {import('types').StrictBody | null | undefined} body\n */\nexport function hash_request(headers, body) {\n\t/** @type {import('types').StrictBody[]} */\n\tconst values = [];\n\n\tif (headers) {\n\t\tvalues.push([...new Headers(headers)].join(','));\n\t}\n\n\tif (body) {\n\t\tvalues.push(body);\n\t}\n\n\treturn hash(...values);\n}\n","export const s = JSON.stringify;\n","import { s } from './misc.js';\n\n/**\n * When inside a double-quoted attribute value, only `&` and `\"` hold special meaning.\n * @see https://html.spec.whatwg.org/multipage/parsing.html#attribute-value-(double-quoted)-state\n * @type {Record<string, string>}\n */\nconst escape_html_attr_dict = {\n\t'&': '&amp;',\n\t'\"': '&quot;'\n\t// Svelte also escapes < because the escape function could be called inside a `noscript` there\n\t// https://github.com/sveltejs/svelte/security/advisories/GHSA-8266-84wp-wv5c\n\t// However, that doesn't apply in SvelteKit\n};\n\n/**\n * @type {Record<string, string>}\n */\nconst escape_html_dict = {\n\t'&': '&amp;',\n\t'<': '&lt;'\n};\n\n// `\\p{Surrogate}` only matches unpaired surrogates with the `u` flag (a pair is one code point)\n/** @param {Record<string, string>} dict */\nconst escape_regex = (dict) => new RegExp(`[${Object.keys(dict).join('')}]|\\\\p{Surrogate}`, 'gu');\n\nconst escape_html_attr_regex = escape_regex(escape_html_attr_dict);\nconst escape_html_regex = escape_regex(escape_html_dict);\n\n/**\n * Escapes unpaired surrogates (which are allowed in js strings but invalid in HTML) and\n * escapes characters that are special.\n *\n * @param {string} str\n * @param {boolean} [is_attr]\n * @returns {string} escaped string\n * @example const html = `<tag data-value=\"${escape_html('value', true)}\">...</tag>`;\n */\nexport function escape_html(str, is_attr) {\n\tconst dict = is_attr ? escape_html_attr_dict : escape_html_dict;\n\tconst escaped_str = str.replace(\n\t\tis_attr ? escape_html_attr_regex : escape_html_regex,\n\t\t(match) => dict[match] ?? `&#${match.charCodeAt(0)};`\n\t);\n\n\treturn escaped_str;\n}\n\n/** @typedef {{ placeholder: string, replacement: string }} Replacement */\n\n/**\n * Escapes backslashes, backticks, and dollar signs so that the string can be\n * safely used as part of a template literal.\n * @param {string} str\n * @param {Replacement[]} replacements Placeholders to replace after escaping.\n * \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t This is necessary when the string contains\n * \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t placeholders that we want to preserve, such as `${assets}`\n * @returns {string} escaped string\n */\nexport function escape_for_interpolation(str, replacements) {\n\tlet escaped = s(str).slice(1, -1).replaceAll('`', '\\\\`').replaceAll('$', '\\\\$');\n\tfor (const { placeholder, replacement } of replacements) {\n\t\tescaped = escaped.replaceAll(placeholder, replacement);\n\t}\n\treturn escaped;\n}\n","import { escape_html } from '../../../utils/escape.js';\nimport { hash_request } from '../../../utils/hash.js';\n\n/**\n * Inside a script element, only `</script` and `<!--` hold special meaning to the HTML parser.\n *\n * The first closes the script element, so everything after is treated as raw HTML.\n * The second disables further parsing until `-->`, so the script element might be unexpectedly\n * kept open up until an unrelated HTML comment in the page.\n *\n * U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR are escaped for the sake of pre-2018\n * browsers.\n *\n * @see tests for unsafe parsing examples.\n * @see https://html.spec.whatwg.org/multipage/scripting.html#restrictions-for-contents-of-script-elements\n * @see https://html.spec.whatwg.org/multipage/syntax.html#cdata-rcdata-restrictions\n * @see https://html.spec.whatwg.org/multipage/parsing.html#script-data-state\n * @see https://html.spec.whatwg.org/multipage/parsing.html#script-data-double-escaped-state\n * @see https://github.com/tc39/proposal-json-superset\n * @type {Record<string, string>}\n */\nconst replacements = {\n\t'<': '\\\\u003C',\n\t'\\u2028': '\\\\u2028',\n\t'\\u2029': '\\\\u2029'\n};\n\nconst pattern = new RegExp(`[${Object.keys(replacements).join('')}]`, 'g');\n\n/**\n * Generates a raw HTML string containing a safe script element carrying data and associated attributes.\n *\n * It escapes all the special characters needed to guarantee the element is unbroken, but care must\n * be taken to ensure it is inserted in the document at an acceptable position for a script element,\n * and that the resulting string isn't further modified.\n *\n * @param {import('./types.js').Fetched} fetched\n * @param {(name: string, value: string) => boolean} filter\n * @param {boolean} [prerendering]\n * @returns {string} The raw HTML of a script element carrying the JSON payload.\n * @example const html = serialize_data('/data.json', null, { foo: 'bar' });\n */\nexport function serialize_data(fetched, filter, prerendering = false) {\n\t/** @type {Record<string, string>} */\n\tconst headers = {};\n\n\tlet cache_control = null;\n\tlet age = null;\n\tlet varyAny = false;\n\n\tfor (const [key, value] of fetched.response.headers) {\n\t\tif (filter(key, value)) {\n\t\t\theaders[key] = value;\n\t\t}\n\n\t\tif (key === 'cache-control') cache_control = value;\n\t\telse if (key === 'age') age = value;\n\t\telse if (key === 'vary' && value.trim() === '*') varyAny = true;\n\t}\n\n\tconst payload = {\n\t\tstatus: fetched.response.status,\n\t\tstatusText: fetched.response.statusText,\n\t\theaders,\n\t\tbody: fetched.response_body\n\t};\n\n\tconst safe_payload = JSON.stringify(payload).replace(pattern, (match) => replacements[match]);\n\n\tconst attrs = [\n\t\t'type=\"application/json\"',\n\t\t'data-sveltekit-fetched',\n\t\t`data-url=\"${escape_html(fetched.url, true)}\"`\n\t];\n\n\tif (fetched.is_b64) {\n\t\tattrs.push('data-b64');\n\t}\n\n\tif (fetched.request_headers || fetched.request_body) {\n\t\tattrs.push(`data-hash=\"${hash_request(fetched.request_headers, fetched.request_body)}\"`);\n\t}\n\n\t// Compute the time the response should be cached, taking into account max-age and age.\n\t// Do not cache at all if a `Vary: *` header is present, as this indicates that the\n\t// cache is likely to get busted.\n\tif (!prerendering && fetched.method === 'GET' && cache_control && !varyAny) {\n\t\tconst match = /s-maxage=(\\d+)/g.exec(cache_control) ?? /max-age=(\\d+)/g.exec(cache_control);\n\t\tif (match) {\n\t\t\tconst ttl = +match[1] - +(age ?? '0');\n\t\t\tattrs.push(`data-ttl=\"${ttl}\"`);\n\t\t}\n\t}\n\n\treturn `<script ${attrs.join(' ')}>${safe_payload}</script>`;\n}\n","import { escape_html } from '../../../utils/escape.js';\nimport { base64_encode, text_encoder } from '../../utils.js';\nimport * as e from '../../../messages/server-errors.js';\n\nconst array = new Uint8Array(16);\n\nfunction generate_nonce() {\n\tcrypto.getRandomValues(array);\n\treturn base64_encode(array);\n}\n\n/** @param {string} content */\nasync function sha256(content) {\n\tconst digest = await crypto.subtle.digest('SHA-256', text_encoder.encode(content));\n\treturn base64_encode(new Uint8Array(digest));\n}\n\n/** @typedef {`nonce-${string}` | `sha256-${string}`} CspSource */\n\nconst quoted = new Set([\n\t'self',\n\t'unsafe-eval',\n\t'unsafe-hashes',\n\t'unsafe-inline',\n\t'none',\n\t'strict-dynamic',\n\t'report-sample',\n\t'report-sha256',\n\t'report-sha384',\n\t'report-sha512',\n\t'wasm-unsafe-eval',\n\t'script'\n]);\n\nconst crypto_pattern = /^(nonce|sha\\d\\d\\d)-/;\n\n// CSP and CSP Report Only are extremely similar with a few caveats\n// the easiest/DRYest way to express this is with some private encapsulation\nclass BaseProvider {\n\t/** @type {boolean} */\n\t#use_hashes;\n\n\t/** @type {boolean} */\n\tscript_needs_csp;\n\n\t/** @type {boolean} */\n\t#script_src_needs_csp;\n\n\t/** @type {boolean} */\n\t#script_src_elem_needs_csp;\n\n\t/** @type {boolean} */\n\tstyle_needs_csp;\n\n\t/** @type {boolean} */\n\t#style_src_needs_csp;\n\n\t/** @type {boolean} */\n\t#style_src_attr_needs_csp;\n\n\t/** @type {boolean} */\n\t#style_src_elem_needs_csp;\n\n\t/** @type {import('types').CspDirectives} */\n\t#directives;\n\n\t/** @type {Set<import('types').Csp.Source>} */\n\t#script_src = new Set();\n\n\t/** @type {Set<import('types').Csp.Source>} */\n\t#script_src_elem = new Set();\n\n\t/** @type {Set<import('types').Csp.Source>} */\n\t#style_src = new Set();\n\n\t/** @type {Set<import('types').Csp.Source>} */\n\t#style_src_attr = new Set();\n\n\t/** @type {Set<import('types').Csp.Source>} */\n\t#style_src_elem = new Set();\n\n\t/** @type {boolean} */\n\tscript_needs_nonce;\n\n\t/** @type {boolean} */\n\tstyle_needs_nonce;\n\n\t/** @type {boolean} */\n\tscript_needs_hash;\n\n\t/**\n\t * @param {boolean} use_hashes\n\t * @param {import('types').CspDirectives} directives\n\t */\n\tconstructor(use_hashes, directives) {\n\t\tthis.#use_hashes = use_hashes;\n\t\tthis.#directives = __SVELTEKIT_DEV__ ? { ...directives } : directives; // clone in dev so we can safely mutate\n\n\t\tconst d = this.#directives;\n\n\t\tconst effective_script_src = d['script-src'] || d['default-src'];\n\t\tconst script_src_elem = d['script-src-elem'];\n\t\tconst effective_style_src = d['style-src'] || d['default-src'];\n\t\tconst style_src_attr = d['style-src-attr'];\n\t\tconst style_src_elem = d['style-src-elem'];\n\n\t\tif (__SVELTEKIT_DEV__) {\n\t\t\t// remove strict-dynamic in dev...\n\t\t\t// TODO reinstate this if we can figure out how to make strict-dynamic work\n\t\t\t// if (d['default-src']) {\n\t\t\t// \td['default-src'] = d['default-src'].filter((name) => name !== 'strict-dynamic');\n\t\t\t// \tif (d['default-src'].length === 0) delete d['default-src'];\n\t\t\t// }\n\n\t\t\t// if (d['script-src']) {\n\t\t\t// \td['script-src'] = d['script-src'].filter((name) => name !== 'strict-dynamic');\n\t\t\t// \tif (d['script-src'].length === 0) delete d['script-src'];\n\t\t\t// }\n\n\t\t\t// ...and add unsafe-inline so we can inject <style> elements\n\t\t\t// Note that 'unsafe-inline' is ignored if either a hash or nonce value is present in the source list, so we remove those during dev when injecting unsafe-inline\n\t\t\t/**\n\t\t\t * @template {'style-src' | 'style-src-attr' | 'style-src-elem'} K\n\t\t\t * @param {K} key\n\t\t\t * @param {import('types').CspDirectives[K]} directive\n\t\t\t */\n\t\t\tconst add_unsafe_inline = (key, directive) => {\n\t\t\t\tif (directive && !directive.includes('unsafe-inline')) {\n\t\t\t\t\td[key] = /** @type {import('types').CspDirectives[K]} */ ([\n\t\t\t\t\t\t...directive.filter(\n\t\t\t\t\t\t\t(value) => !(value.startsWith('sha256-') || value.startsWith('nonce-'))\n\t\t\t\t\t\t),\n\t\t\t\t\t\t'unsafe-inline'\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tadd_unsafe_inline('style-src', effective_style_src);\n\t\t\tadd_unsafe_inline('style-src-attr', style_src_attr);\n\t\t\tadd_unsafe_inline('style-src-elem', style_src_elem);\n\t\t}\n\n\t\t/** @param {(import('types').Csp.Source | import('types').Csp.ActionSource)[] | undefined} directive */\n\t\tconst style_needs_csp = (directive) =>\n\t\t\t!!directive && !directive.some((value) => value === 'unsafe-inline');\n\n\t\t/** @param {(import('types').Csp.Source | import('types').Csp.ActionSource)[] | undefined} directive */\n\t\tconst script_needs_csp = (directive) =>\n\t\t\t!!directive &&\n\t\t\t(!directive.some((value) => value === 'unsafe-inline') ||\n\t\t\t\tdirective.some((value) => value === 'strict-dynamic'));\n\n\t\tthis.#script_src_needs_csp = script_needs_csp(effective_script_src);\n\t\tthis.#script_src_elem_needs_csp = script_needs_csp(script_src_elem);\n\t\tthis.#style_src_needs_csp = style_needs_csp(effective_style_src);\n\t\tthis.#style_src_attr_needs_csp = style_needs_csp(style_src_attr);\n\t\tthis.#style_src_elem_needs_csp = style_needs_csp(style_src_elem);\n\n\t\tthis.script_needs_csp = this.#script_src_needs_csp || this.#script_src_elem_needs_csp;\n\t\tthis.style_needs_csp =\n\t\t\t!__SVELTEKIT_DEV__ &&\n\t\t\t(this.#style_src_needs_csp ||\n\t\t\t\tthis.#style_src_attr_needs_csp ||\n\t\t\t\tthis.#style_src_elem_needs_csp);\n\n\t\tthis.script_needs_nonce = this.script_needs_csp && !this.#use_hashes;\n\t\tthis.style_needs_nonce = this.style_needs_csp && !this.#use_hashes;\n\t\tthis.script_needs_hash = this.script_needs_csp && this.#use_hashes;\n\t}\n\n\t/** @param {CspSource} source */\n\tadd_script(source) {\n\t\tif (this.#script_src_needs_csp) {\n\t\t\tthis.#script_src.add(source);\n\t\t}\n\n\t\tif (this.#script_src_elem_needs_csp) {\n\t\t\tthis.#script_src_elem.add(source);\n\t\t}\n\t}\n\n\t/** @param {CspSource} source */\n\tadd_style(source) {\n\t\tif (!this.style_needs_csp) return;\n\n\t\tif (this.#style_src_needs_csp) {\n\t\t\tthis.#style_src.add(source);\n\t\t}\n\n\t\tif (this.#style_src_attr_needs_csp) {\n\t\t\tthis.#style_src_attr.add(source);\n\t\t}\n\n\t\tif (this.#style_src_elem_needs_csp) {\n\t\t\t// this is the sha256 hash for the string \"/* empty */\"\n\t\t\t// adding it so that svelte does not break csp\n\t\t\t// see https://github.com/sveltejs/svelte/pull/7800\n\t\t\tconst sha256_empty_comment_hash = 'sha256-9OlNO0DNEeaVzHL4RZwCLsBHA8WBQ8toBp/4F5XV2nc=';\n\t\t\tconst d = this.#directives;\n\n\t\t\tif (\n\t\t\t\td['style-src-elem'] &&\n\t\t\t\t!d['style-src-elem'].includes(sha256_empty_comment_hash) &&\n\t\t\t\t!this.#style_src_elem.has(sha256_empty_comment_hash)\n\t\t\t) {\n\t\t\t\tthis.#style_src_elem.add(sha256_empty_comment_hash);\n\t\t\t}\n\n\t\t\tif (source !== sha256_empty_comment_hash) {\n\t\t\t\tthis.#style_src_elem.add(source);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param {boolean} [is_meta]\n\t */\n\tget_header(is_meta = false) {\n\t\tconst header = [];\n\n\t\t// due to browser inconsistencies, we can't append sources to default-src\n\t\t// (specifically, Firefox appears to not ignore nonce-{nonce} directives\n\t\t// on default-src), so we ensure that script-src and style-src exist\n\n\t\tconst directives = { ...this.#directives };\n\n\t\t/**\n\t\t * @template {'style-src' | 'style-src-attr' | 'style-src-elem' | 'script-src' | 'script-src-elem'} K\n\t\t * @param {K} key\n\t\t * @param {Set<import('types').Csp.Source>} sources\n\t\t * @param {import('types').CspDirectives[K]} [base]\n\t\t */\n\t\tconst merge_sources = (key, sources, base) => {\n\t\t\tif (sources.size > 0) {\n\t\t\t\tdirectives[key] = /** @type {import('types').CspDirectives[K]} */ ([\n\t\t\t\t\t...(base || []),\n\t\t\t\t\t...sources\n\t\t\t\t]);\n\t\t\t}\n\t\t};\n\n\t\tmerge_sources(\n\t\t\t'style-src',\n\t\t\tthis.#style_src,\n\t\t\tdirectives['style-src'] || directives['default-src']\n\t\t);\n\t\tmerge_sources('style-src-attr', this.#style_src_attr, directives['style-src-attr']);\n\t\tmerge_sources('style-src-elem', this.#style_src_elem, directives['style-src-elem']);\n\t\tmerge_sources(\n\t\t\t'script-src',\n\t\t\tthis.#script_src,\n\t\t\tdirectives['script-src'] || directives['default-src']\n\t\t);\n\t\tmerge_sources('script-src-elem', this.#script_src_elem, directives['script-src-elem']);\n\n\t\tfor (const key in directives) {\n\t\t\tif (is_meta && (key === 'frame-ancestors' || key === 'report-uri' || key === 'sandbox')) {\n\t\t\t\t// these values cannot be used with a <meta> tag\n\t\t\t\t// TODO warn?\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// @ts-expect-error gimme a break typescript, `key` is obviously a member of internal_directives\n\t\t\tconst value = /** @type {string[] | true} */ (directives[key]);\n\n\t\t\tif (!value) continue;\n\n\t\t\tconst directive = [key];\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tfor (const source of value) {\n\t\t\t\t\tdirective.push(\n\t\t\t\t\t\tquoted.has(source) || crypto_pattern.test(source) ? `'${source}'` : source\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\theader.push(directive.join(' '));\n\t\t}\n\n\t\treturn header.join('; ');\n\t}\n}\n\nclass CspProvider extends BaseProvider {\n\tget_meta() {\n\t\tconst content = this.get_header(true);\n\n\t\tif (!content) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn `<meta http-equiv=\"content-security-policy\" content=\"${escape_html(content, true)}\">`;\n\t}\n}\n\nclass CspReportOnlyProvider extends BaseProvider {\n\t/**\n\t * @param {boolean} use_hashes\n\t * @param {import('types').CspDirectives} directives\n\t */\n\tconstructor(use_hashes, directives) {\n\t\tsuper(use_hashes, directives);\n\n\t\t// If we're generating content-security-policy-report-only,\n\t\t// if there are any directives, we need a report-uri or report-to (or both)\n\t\t// else it's just an expensive noop.\n\t\tif (\n\t\t\tObject.values(directives).some((v) => !!v) &&\n\t\t\t!directives['report-to']?.length &&\n\t\t\t!directives['report-uri']?.length\n\t\t) {\n\t\t\te.csp_report_only_missing_report();\n\t\t}\n\t}\n}\n\nexport class Csp {\n\t/** @readonly */\n\tnonce = generate_nonce();\n\n\t/** @type {CspProvider} */\n\tcsp_provider;\n\n\t/** @type {CspReportOnlyProvider} */\n\treport_only_provider;\n\n\t/** @type {boolean} */\n\t#use_hashes;\n\n\t/**\n\t * @param {import('./types.js').CspConfig} config\n\t * @param {import('./types.js').CspOpts} opts\n\t */\n\tconstructor({ mode, directives, reportOnly }, { prerender }) {\n\t\tthis.#use_hashes = mode === 'hash' || (mode === 'auto' && prerender);\n\t\tthis.csp_provider = new CspProvider(this.#use_hashes, directives);\n\t\tthis.report_only_provider = new CspReportOnlyProvider(this.#use_hashes, reportOnly);\n\t}\n\n\t/**\n\t * @param {string} content\n\t * @returns {Promise<CspSource>}\n\t */\n\tasync #get_source(content) {\n\t\treturn this.#use_hashes ? `sha256-${await sha256(content)}` : `nonce-${this.nonce}`;\n\t}\n\n\tget script_needs_hash() {\n\t\treturn this.csp_provider.script_needs_hash || this.report_only_provider.script_needs_hash;\n\t}\n\n\tget script_needs_nonce() {\n\t\treturn this.csp_provider.script_needs_nonce || this.report_only_provider.script_needs_nonce;\n\t}\n\n\tget style_needs_nonce() {\n\t\treturn this.csp_provider.style_needs_nonce || this.report_only_provider.style_needs_nonce;\n\t}\n\n\t/** @param {string} content */\n\tasync add_script(content) {\n\t\tif (!this.csp_provider.script_needs_csp && !this.report_only_provider.script_needs_csp) return;\n\n\t\tconst source = await this.#get_source(content);\n\t\tif (this.csp_provider.script_needs_csp) this.csp_provider.add_script(source);\n\t\tif (this.report_only_provider.script_needs_csp) this.report_only_provider.add_script(source);\n\t}\n\n\t/** @param {`sha256-${string}`[]} hashes */\n\tadd_script_hashes(hashes) {\n\t\tfor (const hash of hashes) {\n\t\t\tthis.csp_provider.add_script(hash);\n\t\t\tthis.report_only_provider.add_script(hash);\n\t\t}\n\t}\n\n\t/** @param {string} content */\n\tasync add_style(content) {\n\t\tif (!this.csp_provider.style_needs_csp && !this.report_only_provider.style_needs_csp) return;\n\n\t\tconst source = await this.#get_source(content);\n\t\tthis.csp_provider.add_style(source);\n\t\tthis.report_only_provider.add_style(source);\n\t}\n}\n","/** @import { ParamValue } from '@sveltejs/kit/params' */\n/** @import { SSRManifest } from 'types' */\nimport { base, assets } from '#app/paths';\nimport { relative } from '$app/paths/internal/server';\nimport { text } from '@sveltejs/kit';\nimport * as devalue from 'devalue';\nimport { s } from '../../../utils/misc.js';\nimport { find_route } from '../../../utils/routing.js';\nimport { SVELTE_KIT_ASSETS } from '../../../constants.js';\nimport { manifest } from '../internal.js';\n\n/**\n * @param {import('types').SSRClientRoute} route\n * @param {URL} url\n * @param {NonNullable<SSRManifest['client']>} client\n * @returns {string}\n */\nexport function generate_route_object(route, url, client) {\n\tconst { errors, layouts, leaf } = route;\n\tconst paths = resolve_paths(url.pathname);\n\n\tconst nodes = [...errors, ...layouts.map((l) => l?.[1]), leaf[1]]\n\t\t.filter((n) => typeof n === 'number')\n\t\t.map((n) => `'${n}': () => ${create_client_import(client.nodes?.[n], paths)}`)\n\t\t.join(',\\n\\t\\t');\n\n\t// stringified version of\n\t/* @type {import('types').CSRRouteServer} */\n\treturn [\n\t\t`{\\n\\tid: ${s(route.id)}`,\n\t\t`errors: ${s(route.errors)}`,\n\t\t`layouts: ${s(route.layouts)}`,\n\t\t`leaf: ${s(route.leaf)}`,\n\t\t`nodes: {\\n\\t\\t${nodes}\\n\\t}\\n}`\n\t].join(',\\n\\t');\n}\n\n/**\n * The `base` and `assets` prefixes for client paths in a document at `pathname`. With\n * `paths.relative`, they're relative to that document so the app also works when served\n * from IPFS, the internet archive, or behind a proxy.\n * @param {string} pathname\n */\nexport function resolve_paths(pathname) {\n\tif (!relative) return { base, assets };\n\n\tconst segments = pathname.slice(base.length).split('/').slice(2);\n\tconst relative_base = segments.map(() => '..').join('/') || '.';\n\n\treturn {\n\t\tbase: relative_base,\n\t\t// same-origin assets are relative too, except for the placeholder used by `vite preview`\n\t\tassets: !assets || (assets[0] === '/' && assets !== SVELTE_KIT_ASSETS) ? relative_base : assets\n\t};\n}\n\n/**\n * @param {string} path a root-absolute dev path (e.g. `/@fs/...`) or a prod path relative to `assets`\n * @param {ReturnType<typeof resolve_paths>} paths\n */\nexport function client_path(path, { base, assets }) {\n\treturn path[0] === '/' ? base + path : `${assets}/${path}`;\n}\n\n/**\n * @param {string | undefined} import_path\n * @param {ReturnType<typeof resolve_paths>} paths\n */\nfunction create_client_import(import_path, paths) {\n\treturn import_path ? `import('${client_path(import_path, paths)}')` : 'Promise.resolve({})';\n}\n\n/**\n * @param {string} resolved_path\n * @param {URL} url\n * @returns {Promise<Response>}\n */\nexport async function resolve_route(resolved_path, url) {\n\tif (!manifest.client?.routes) {\n\t\treturn text('Server-side route resolution disabled', { status: 400 });\n\t}\n\n\ttry {\n\t\tconst matchers = await manifest.matchers();\n\t\tconst result = find_route(resolved_path, manifest.client.routes, matchers);\n\n\t\treturn create_server_routing_response(\n\t\t\tresult?.route ?? null,\n\t\t\tresult?.params ?? {},\n\t\t\turl,\n\t\t\tmanifest.client\n\t\t).response;\n\t} catch {\n\t\treturn text('Error resolving route', { status: 500 });\n\t}\n}\n\n/**\n * Resolve a route-ID resolution request (`/_app/routes/<id>/__route.js`) to a\n * JS module containing the route's node loaders. Params are always `{}` since\n * this endpoint exists to support `preloadCode(routeId)`, which doesn't need them.\n *\n * The module has one of three shapes, which the client uses to tell three cases apart:\n *\n * - `export const route = {...}` — a page route, with loaders to import\n * - `export const endpoint_only = true` — a real route with no `+page`, so there is\n *   nothing to preload, but the client can cache that fact and stop asking\n * - an empty module — no such route\n *\n * @param {string} route_id\n * @param {URL} url\n * @returns {Response}\n */\nexport function resolve_route_by_id(route_id, url) {\n\tif (!manifest.client?.routes) {\n\t\treturn text('Server-side route resolution disabled', { status: 400 });\n\t}\n\n\ttry {\n\t\tconst route = manifest.client.routes.find((r) => r.id === route_id);\n\n\t\tif (route) {\n\t\t\treturn create_server_routing_response(route, null, url, manifest.client).response;\n\t\t}\n\n\t\t// `client.routes` only contains routes with a `+page`, so a miss above doesn't mean the\n\t\t// route doesn't exist — it might be a `+server.js`-only route. `_.routes` includes those\n\t\t// (with `page: null`), so we can distinguish \"exists but has no code\" from \"unknown\".\n\t\tif (manifest.routes.some((r) => r.id === route_id && !r.page)) {\n\t\t\treturn text('export const endpoint_only = true;', { headers: js_headers() });\n\t\t}\n\n\t\treturn create_server_routing_response(null, null, url, manifest.client).response;\n\t} catch {\n\t\treturn text('Error resolving route', { status: 500 });\n\t}\n}\n\nfunction js_headers() {\n\treturn new Headers({\n\t\t'content-type': 'application/javascript; charset=utf-8'\n\t});\n}\n\n/**\n * @param {import('types').SSRClientRoute | null} route\n * @param {Partial<Record<string, ParamValue>> | null} params\n * @param {URL} url\n * @param {NonNullable<SSRManifest['client']>} client\n * @returns {{response: Response, body: string}}\n */\nexport function create_server_routing_response(route, params, url, client) {\n\tconst headers = js_headers();\n\tlet body = '';\n\n\tif (route) {\n\t\tconst csr_route = generate_route_object(route, url, client);\n\t\tbody = `${create_css_import(route, url, client)}export const route = ${csr_route};`;\n\n\t\tif (params !== null) {\n\t\t\tbody += `\\nexport const params = ${devalue.uneval(params)}`;\n\t\t}\n\t}\n\n\treturn { response: text(body, { headers }), body };\n}\n\n/**\n * This function generates the client-side import for the CSS files that are\n * associated with the current route. Vite takes care of that when using\n * client-side route resolution, but for server-side resolution it does\n * not know about the CSS files automatically.\n *\n * @param {import('types').SSRClientRoute} route\n * @param {URL} url\n * @param {NonNullable<SSRManifest['client']>} client\n * @returns {string}\n */\nfunction create_css_import(route, url, client) {\n\tconst { errors, layouts, leaf } = route;\n\tconst paths = resolve_paths(url.pathname);\n\n\tlet css = '';\n\n\tfor (const node of [...errors, ...layouts.map((l) => l?.[1]), leaf[1]]) {\n\t\tif (typeof node !== 'number') continue;\n\t\tconst node_css = client.css?.[node];\n\t\tfor (const css_path of node_css ?? []) {\n\t\t\tcss += `'${client_path(css_path, paths)}',`;\n\t\t}\n\t}\n\n\tif (!css) return '';\n\n\treturn `${create_client_import(client.start, paths)}.then(x => x.load_css([${css}]));\\n`;\n}\n","import { noop, disallow_on_server } from '../../../utils/functions.js';\n\nexport const afterNavigate = noop;\nexport const beforeNavigate = noop;\nexport const disableScrollHandling = disallow_on_server('disableScrollHandling', '()');\nexport const goto = disallow_on_server('goto');\nexport const invalidate = disallow_on_server('invalidate');\nexport const invalidateAll = disallow_on_server('invalidateAll', '()');\nexport const onNavigate = noop;\nexport const refreshAll = disallow_on_server('refreshAll', '()');\nexport const preloadCode = disallow_on_server('preloadCode');\nexport const preloadData = disallow_on_server('preloadData');\nexport const pushState = disallow_on_server('pushState');\nexport const replaceState = disallow_on_server('replaceState');\nexport const snapshot = noop;\n","<script lang=\"ts\">\n\timport { afterNavigate } from '$app/navigation';\n\timport type { Props, RenderNode } from '../props.svelte.js';\n\n\tconst { page, components, onerror, tree, form, error }: Props = $props();\n\n\tlet mounted = $state(false);\n\tlet navigated = $state(false);\n\tlet title = $state('');\n\n\tafterNavigate(() => {\n\t\tif (mounted) {\n\t\t\tnavigated = true;\n\t\t\ttitle = document.title || 'untitled page';\n\t\t} else {\n\t\t\tmounted = true;\n\t\t}\n\t});\n</script>\n\n{#snippet node(n: RenderNode, depth: number)}\n\t{const Component = $derived(n.component)}\n\t{const Error = $derived(n.error)}\n\t{const data = $derived(n.data)}\n\n\t{#snippet failed(error: unknown)}\n\t\t<Error {error} />\n\t{/snippet}\n\n\t<svelte:boundary failed={Error ? failed : undefined} onerror={Error ? onerror : undefined}>\n\t\t{#if n.child}\n\t\t\t<!-- svelte-ignore binding_property_non_reactive -->\n\t\t\t<Component bind:this={components[depth]} {data} {form} params={page.params}>\n\t\t\t\t{@render node(n.child, depth + 1)}\n\t\t\t</Component>\n\t\t{:else}\n\t\t\t<!-- svelte-ignore binding_property_non_reactive -->\n\t\t\t<Component bind:this={components[depth]} {data} {form} params={page.params} {error} />\n\t\t{/if}\n\t</svelte:boundary>\n{/snippet}\n\n{@render node(tree, 0)}\n\n{#if mounted}\n\t<div\n\t\tid=\"svelte-announcer\"\n\t\taria-live=\"assertive\"\n\t\taria-atomic=\"true\"\n\t\tstyle=\"position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px\"\n\t>\n\t\t{#if navigated}\n\t\t\t{title}\n\t\t{/if}\n\t</div>\n{/if}\n","/** @import { Component } from 'svelte'; */\n/** @import { Page } from '$app/state'; */\n\nimport { noop } from '../utils/functions.js';\n\nexport class Props {\n\t/** @type {Page} */\n\tpage;\n\n\t/**\n\t * An array of the `+layout.svelte` and `+page.svelte` component instances\n\t * that currently live on the page — used for capturing and restoring snapshots.\n\t * It's updated/manipulated through `bind:this` in `Root.svelte`.\n\t * @type {Array<Record<string, any>>}\n\t * @deprecated only used for `export const snapshot` — TODO 4.0 get rid\n\t */\n\tcomponents = [];\n\n\t/** @type {any} */\n\tform;\n\n\t/** @type {App.Error | undefined} */\n\terror;\n\n\t/** @type {RenderNode} */\n\ttree;\n\n\t/** @type {(error: unknown, reset: () => void) => void} */\n\tonerror;\n\n\t/**\n\t * @param {{\n\t *   page: Page;\n\t *   tree: RenderNode;\n\t *   form: any;\n\t *   error: App.Error | undefined;\n\t *   onerror?: (error: unknown, reset: () => void) => void;\n\t * }} props\n\t */\n\tconstructor({ page, tree, form, error, onerror = noop }) {\n\t\tthis.page = page;\n\t\tthis.tree = tree;\n\t\tthis.onerror = onerror;\n\n\t\tthis.form = $state.raw(form);\n\t\tthis.error = $state.raw(error);\n\t}\n}\n\nexport class RenderNode {\n\t/** @type {Component} */\n\tcomponent;\n\n\t/** @type {Component | undefined} */\n\terror;\n\n\t/** @type {Record<string, any>} */\n\tdata = $state.raw({});\n\n\t/** @type {RenderNode | undefined} */\n\tchild = $state.raw();\n\n\t/**\n\t *\n\t * @param {Component} component\n\t * @param {Component | undefined} error\n\t */\n\tconstructor(component, error) {\n\t\tthis.component = component;\n\t\tthis.error = error;\n\t}\n}\n","/** @import { Component } from 'svelte'; */\n/** @import { SyncRenderOutput } from 'svelte/server' */\nimport * as devalue from 'devalue';\nimport { DEV } from 'esm-env';\nimport { isRedirect, text } from '@sveltejs/kit';\nimport * as paths from '#app/paths';\nimport { relative } from '$app/paths/internal/server';\nimport { hash } from '../../../utils/hash.js';\nimport { escape_html } from '../../../utils/escape.js';\nimport { serialize_data } from './serialize_data.js';\nimport { s } from '../../../utils/misc.js';\nimport { Csp } from './csp.js';\nimport { uneval_action_response } from './actions.js';\nimport { SCHEME } from '../../../utils/url.js';\nimport {\n\tclient_path,\n\tcreate_server_routing_response,\n\tgenerate_route_object,\n\tresolve_paths\n} from './server_routing.js';\nimport {\n\tadd_data_suffix,\n\tadd_resolution_suffix,\n\troute_id_resolution_pathname\n} from '../../pathname.js';\nimport { try_get_request_store, with_request_store } from '@sveltejs/kit/internal/server';\nimport { stream_text } from '../../utils.js';\nimport { count_non_ssi_comments } from '../utils.js';\nimport { handle_error_and_jsonify } from '../errors.js';\nimport * as env from '<sveltekit:generated>/env/config.js';\nimport { collect_remote_data } from '../remote-functions.js';\nimport Root from '../../components/root.svelte';\nimport { render } from 'svelte/server';\nimport { Props, RenderNode } from '../../props.svelte.js';\nimport { has_custom_transporters, uneval } from '#app/internal/transport';\nimport { manifest } from '../internal.js';\nimport { options } from '<sveltekit:generated>/server.js';\nimport * as e from '../../../messages/server-errors.js';\nimport * as w from '../../../messages/server-warnings.js';\n\n// TODO rename this function/module\n\n/**\n * Creates the HTML response.\n * @param {{\n *   branch: Array<import('./types.js').Loaded>;\n *   fetched: Array<import('./types.js').Fetched>;\n *   page_config: { ssr: boolean; csr: boolean };\n *   status: number;\n *   error: App.Error | null;\n *   event: import('@sveltejs/kit').RequestEvent;\n *   state: import('types').RequestState;\n *   resolve_opts: import('types').RequiredResolveOptions;\n *   action_result?: import('types').ServerActionResult;\n *   data_serializer: import('./types.js').ServerDataSerializer;\n *   error_components?: Array<import('svelte').Component | undefined>\n * }} opts\n */\nexport async function render_response({\n\tbranch,\n\tfetched,\n\tpage_config,\n\tstatus,\n\terror = null,\n\tevent,\n\tstate,\n\tresolve_opts,\n\taction_result,\n\tdata_serializer,\n\terror_components\n}) {\n\tif (state.prerendering || state.prerender_default === true) {\n\t\tif (options.csp.mode === 'nonce') {\n\t\t\te.prerender_nonce();\n\t\t}\n\n\t\tif (options.app_template_contains_nonce) {\n\t\t\te.prerender_template_nonce({ tag: '%sveltekit.nonce%' });\n\t\t}\n\t}\n\n\tconst client = manifest.client;\n\n\tconst modulepreloads = new Set(client?.imports);\n\tconst stylesheets = new Set(client?.stylesheets);\n\n\t/** @type {Map<string, import('types').FontDependency>} */\n\tconst fonts = new Map(client?.fonts.map((font) => [font.file, font]));\n\n\t/**\n\t * The value of the Link header that is added to the response when not prerendering\n\t * @type {Set<string>}\n\t */\n\tconst link_headers = new Set();\n\n\t/** @type {Map<string, string>} */\n\t// TODO if we add a client entry point one day, we will need to include inline_styles with the entry, otherwise stylesheets will be linked even if they are below inlineStyleThreshold\n\tconst inline_styles = new Map();\n\n\t/** @type {Omit<SyncRenderOutput, 'html'>} */\n\tlet rendered;\n\n\tconst form_value =\n\t\taction_result?.type === 'success' || action_result?.type === 'failure'\n\t\t\t? (action_result.data ?? null)\n\t\t\t: null;\n\n\t/** @type {string} */\n\tlet base = paths.base;\n\n\t/** @type {string} */\n\tlet assets = paths.assets;\n\n\t/**\n\t * An expression that will evaluate in the client to determine the resolved base path.\n\t * We use a relative path when possible to support IPFS, the internet archive, etc.\n\t */\n\tlet base_expression = s(paths.base);\n\n\tconst csp = new Csp(options.csp, {\n\t\tprerender: !!(state.prerendering || state.prerender_default === true)\n\t});\n\n\t// if appropriate, use relative paths for greater portability\n\tif (relative) {\n\t\tif (!state.prerendering?.fallback) {\n\t\t\t// the relative path depth must reflect the URL the browser is actually at, which\n\t\t\t// for a data request includes the `__data.json` suffix that was stripped during routing\n\t\t\tconst pathname = event.isDataRequest\n\t\t\t\t? add_data_suffix(event.url.pathname)\n\t\t\t\t: event.url.pathname;\n\t\t\t({ base, assets } = resolve_paths(pathname));\n\n\t\t\t// resolve e.g. '../..' against current location, then remove trailing slash\n\t\t\tbase_expression = `new URL(${s(base)}, location).pathname.slice(0, -1)`;\n\t\t} else if (__SVELTEKIT_HASH_ROUTING__) {\n\t\t\t// we have to assume that we're in the right place\n\t\t\tbase_expression = \"new URL('.', location).pathname.slice(0, -1)\";\n\t\t}\n\t}\n\n\tif (page_config.ssr) {\n\t\tconst page = {\n\t\t\terror,\n\t\t\tparams: /** @type {Record<string, any>} */ (event.params),\n\t\t\troute: event.route,\n\t\t\tstatus,\n\t\t\turl: event.url,\n\t\t\tdata: {},\n\t\t\tform: form_value,\n\t\t\tshallow: null,\n\t\t\tstate: {}\n\t\t};\n\n\t\tconst props = new Props({\n\t\t\tpage,\n\t\t\ttree: new RenderNode(\n\t\t\t\t// TODO tidy up\n\t\t\t\t/** @type {Component} */ (await branch[0].node.component?.()),\n\t\t\t\tundefined\n\t\t\t),\n\t\t\tform: form_value,\n\t\t\terror: error ?? undefined\n\t\t});\n\n\t\tlet current_node = props.tree;\n\t\tlet data = props.page.data;\n\n\t\tfor (let i = 0; i < branch.length; i += 1) {\n\t\t\tconst node = branch[i];\n\n\t\t\tdata = { ...data, ...node.data };\n\n\t\t\tcurrent_node.data = data;\n\n\t\t\tif (i < branch.length - 1) {\n\t\t\t\tcurrent_node = current_node.child = new RenderNode(\n\t\t\t\t\t// TODO tidy up\n\t\t\t\t\t/** @type {Component} */ (await branch[i + 1].node.component?.()),\n\t\t\t\t\terror_components?.[i + 1]\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tprops.page.data = data;\n\n\t\tconst render_state = { ...state, is_in_render: true };\n\n\t\tconst render_opts = {\n\t\t\tcontext: new Map([\n\t\t\t\t[\n\t\t\t\t\t'__request__',\n\t\t\t\t\t{\n\t\t\t\t\t\tpage: props.page\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t]),\n\t\t\tcsp: csp.script_needs_nonce ? { nonce: csp.nonce } : { hash: csp.script_needs_hash },\n\t\t\ttransformError: error_components\n\t\t\t\t? /** @param {unknown} e */ (e) => {\n\t\t\t\t\t\tif (isRedirect(e)) {\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst handled = handle_error_and_jsonify(event, render_state, e);\n\n\t\t\t\t\t\t// TODO 4.0 make this an async function and await `handled`\n\t\t\t\t\t\tif (handled instanceof Promise) {\n\t\t\t\t\t\t\treturn handled.then((e) => {\n\t\t\t\t\t\t\t\terror = e;\n\t\t\t\t\t\t\t\tprops.page.error = error;\n\t\t\t\t\t\t\t\tprops.page.status = status = error.status;\n\t\t\t\t\t\t\t\treturn error;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\terror = handled;\n\t\t\t\t\t\tprops.page.error = error;\n\t\t\t\t\t\tprops.page.status = status = error.status;\n\n\t\t\t\t\t\treturn error;\n\t\t\t\t\t}\n\t\t\t\t: undefined\n\t\t};\n\n\t\tconst fetch = globalThis.fetch;\n\n\t\ttry {\n\t\t\tif (DEV) {\n\t\t\t\tlet warned = false;\n\t\t\t\tglobalThis.fetch = (info, init) => {\n\t\t\t\t\tif (typeof info === 'string' && !SCHEME.test(info)) {\n\t\t\t\t\t\te.ssr_fetch_relative_url({ url: info });\n\t\t\t\t\t} else if (!warned && !try_get_request_store()?.state.is_in_remote_function) {\n\t\t\t\t\t\tw.ssr_fetch_eager();\n\t\t\t\t\t\twarned = true;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fetch(info, init);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\trendered = await with_request_store({ event, state: render_state }, async () => {\n\t\t\t\treturn render(Root, { ...render_opts, props });\n\t\t\t});\n\n\t\t\tif (rendered.hashes) {\n\t\t\t\tcsp.add_script_hashes(rendered.hashes.script);\n\t\t\t}\n\t\t} finally {\n\t\t\tif (DEV) {\n\t\t\t\tglobalThis.fetch = fetch;\n\t\t\t}\n\t\t}\n\t} else {\n\t\trendered = { head: '', body: '', hashes: { script: [] } };\n\t}\n\n\tfor (const { node } of branch) {\n\t\tfor (const url of node.imports) modulepreloads.add(url);\n\t\tfor (const url of node.stylesheets) stylesheets.add(url);\n\t\tfor (const font of node.fonts) fonts.set(font.file, font);\n\n\t\tif (node.inline_styles && !client?.inline) {\n\t\t\tObject.entries(await node.inline_styles()).forEach(([filename, css]) => {\n\t\t\t\tif (typeof css === 'string') {\n\t\t\t\t\tinline_styles.set(filename, css);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tinline_styles.set(filename, css(`${assets}/${paths.app_dir}/immutable/assets`, assets));\n\t\t\t});\n\t\t}\n\t}\n\n\tconst head = new Head(rendered.head);\n\tlet body = rendered.body;\n\n\t/** @param {string} path */\n\tconst prefixed = (path) => client_path(path, { base, assets });\n\n\tconst style = client?.inline\n\t\t? client.inline?.style\n\t\t: Array.from(inline_styles.values()).join('\\n');\n\n\tif (style) {\n\t\t// We always inline all styles to avoid FOUC during development.\n\t\t// Once that's accomplished, we find and remove the style node using the\n\t\t// `data-sveltekit` attribute once CSR kicks in\n\t\tconst attributes = __SVELTEKIT_DEV__ ? ['data-sveltekit'] : [];\n\t\tif (csp.style_needs_nonce) attributes.push(`nonce=\"${csp.nonce}\"`);\n\t\tawait csp.add_style(style);\n\t\thead.add_style(style, attributes);\n\t}\n\n\t/**\n\t * see the `output.linkHeaderPreload` option for details on why we have multiple options here\n\t * @param {string} path\n\t * @param {string[]} attributes\n\t */\n\tconst add_preload = (path, attributes) => {\n\t\tif (\n\t\t\t__SVELTEKIT_LINK_HEADER_PRELOAD__ &&\n\t\t\t!(state.prerendering || state.prerender_default === true)\n\t\t) {\n\t\t\tlink_headers.add(`<${encodeURI(path)}>; ${attributes.join('; ')}; nopush`);\n\t\t} else {\n\t\t\thead.add_link_tag(path, attributes);\n\t\t}\n\t};\n\n\tfor (const dep of stylesheets) {\n\t\tconst path = prefixed(dep);\n\n\t\tconst attributes = ['rel=\"stylesheet\"'];\n\n\t\tif (inline_styles.has(dep)) {\n\t\t\t// don't load stylesheets that are already inlined\n\t\t\t// include them in disabled state so that Vite can detect them and doesn't try to add them\n\t\t\tattributes.push('disabled', 'media=\"(max-width: 0)\"');\n\t\t} else {\n\t\t\tif (__SVELTEKIT_LINK_HEADER_PRELOAD__ && resolve_opts.preload({ type: 'css', path })) {\n\t\t\t\tlink_headers.add(`<${encodeURI(path)}>; rel=\"preload\"; as=\"style\"; nopush`);\n\t\t\t}\n\t\t}\n\n\t\thead.add_stylesheet(path, attributes);\n\t}\n\n\tfor (const { file, filename } of fonts.values()) {\n\t\tconst path = prefixed(file);\n\n\t\tif (resolve_opts.preload({ type: 'font', path, filename })) {\n\t\t\tconst ext = file.slice(file.lastIndexOf('.') + 1);\n\n\t\t\tadd_preload(path, ['rel=\"preload\"', 'as=\"font\"', `type=\"font/${ext}\"`, 'crossorigin']);\n\t\t}\n\t}\n\n\tconst global = __SVELTEKIT_GLOBAL_NAME__;\n\tconst { data, chunks } = data_serializer.get_data(csp);\n\n\tif (page_config.ssr && page_config.csr) {\n\t\tbody += `\\n\\t\\t\\t${fetched\n\t\t\t.map((item) =>\n\t\t\t\tserialize_data(\n\t\t\t\t\titem,\n\t\t\t\t\tresolve_opts.filterSerializedResponseHeaders,\n\t\t\t\t\t!!(state.prerendering || state.prerender_default === true)\n\t\t\t\t)\n\t\t\t)\n\t\t\t.join('\\n\\t\\t\\t')}`;\n\t}\n\n\tif (page_config.csr && client) {\n\t\tconst route = client.routes?.find((r) => r.id === event.route.id) ?? null;\n\n\t\t// when serving a prerendered page in an app that uses runtime public env vars, we must\n\t\t// import the env.js module so that it evaluates before any user code can evaluate.\n\t\t// TODO revert to using top-level await once https://bugs.webkit.org/show_bug.cgi?id=242740 is fixed\n\t\t// https://github.com/sveltejs/kit/pull/11601\n\t\tconst load_env_eagerly =\n\t\t\tclient.uses_env_dynamic_public && (state.prerendering || state.prerender_default === true);\n\n\t\tif (load_env_eagerly) {\n\t\t\tmodulepreloads.add(`${paths.app_dir}/env.js`);\n\t\t}\n\n\t\tif (!client.inline) {\n\t\t\tfor (const dep of modulepreloads) {\n\t\t\t\tconst path = prefixed(dep);\n\n\t\t\t\tif (resolve_opts.preload({ type: 'js', path })) {\n\t\t\t\t\tadd_preload(path, ['rel=\"modulepreload\"']);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// prerender a `/path/to/page/__route.js` module\n\t\tif (client.routes && state.prerendering && !state.prerendering.fallback) {\n\t\t\tconst pathname = add_resolution_suffix(event.url.pathname);\n\n\t\t\tstate.prerendering.dependencies.set(\n\t\t\t\tpathname,\n\t\t\t\tcreate_server_routing_response(route, event.params, new URL(pathname, event.url), client)\n\t\t\t);\n\n\t\t\t// Prerender a route-ID-keyed `/_app/routes/<id>/__route.js` module alongside the\n\t\t\t// pathname-keyed one above, so that `preloadCode(id)` can resolve a route ID without\n\t\t\t// hitting the server.\n\t\t\tif (route && !state.prerendering.resolved_route_ids.has(route.id)) {\n\t\t\t\tstate.prerendering.resolved_route_ids.add(route.id);\n\n\t\t\t\tconst id_pathname = paths.base + route_id_resolution_pathname(route.id);\n\n\t\t\t\tstate.prerendering.dependencies.set(\n\t\t\t\t\tid_pathname,\n\t\t\t\t\tcreate_server_routing_response(route, null, new URL(id_pathname, event.url), client)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst blocks = [];\n\n\t\tconst properties = [`base: ${base_expression}`, `version: ${s(__SVELTEKIT_APP_VERSION__)}`];\n\n\t\tif (paths.assets) {\n\t\t\tproperties.push(`assets: ${s(paths.assets)}`);\n\t\t}\n\n\t\tif (client.uses_env_dynamic_public) {\n\t\t\tproperties.push(`env: ${load_env_eagerly ? 'null' : devalue.uneval(env.rendered_env)}`);\n\t\t}\n\n\t\tif (chunks) {\n\t\t\tblocks.push('const deferred = new Map();');\n\n\t\t\tproperties.push(`defer: (id) => new Promise((fulfil, reject) => {\n\t\t\t\t\t\t\tdeferred.set(id, { fulfil, reject });\n\t\t\t\t\t\t})`);\n\n\t\t\tlet app_declaration = '';\n\n\t\t\tif (has_custom_transporters) {\n\t\t\t\tif (client.inline) {\n\t\t\t\t\tapp_declaration = `const app = ${global}.app.app;`;\n\t\t\t\t} else if (client.app) {\n\t\t\t\t\tapp_declaration = `const kit = await import(${s(prefixed(client.start))});\n\t\t\t\t\t\t\tkit.init(${global});\n\t\t\t\t\t\t\tconst app = await import(${s(prefixed(client.app))});`;\n\t\t\t\t} else {\n\t\t\t\t\tapp_declaration = `const { app } = await import(${s(prefixed(client.start))});`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst prelude = app_declaration\n\t\t\t\t? `${app_declaration}\n\t\t\t\t\t\t\tconst [data, error] = fn(app);`\n\t\t\t\t: `const [data, error] = fn();`;\n\n\t\t\t// When resolving, the id might not yet be available due to the data\n\t\t\t// be evaluated upon init of kit, so we use a timeout to retry\n\t\t\tproperties.push(`resolve: async (id, fn) => {\n\t\t\t\t\t\t\t${prelude}\n\n\t\t\t\t\t\t\tconst try_to_resolve = () => {\n\t\t\t\t\t\t\t\tif (!deferred.has(id)) {\n\t\t\t\t\t\t\t\t\tsetTimeout(try_to_resolve, 0);\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst { fulfil, reject } = deferred.get(id);\n\t\t\t\t\t\t\t\tdeferred.delete(id);\n\t\t\t\t\t\t\t\tif (error) reject(error);\n\t\t\t\t\t\t\t\telse fulfil(data);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttry_to_resolve();\n\t\t\t\t\t\t}`);\n\t\t}\n\n\t\t// create this before declaring `data`, which may contain references to `${global}`\n\t\tblocks.push(`${global} = {\n\t\t\t\t\t\t${properties.join(',\\n\\t\\t\\t\\t\\t\\t')}\n\t\t\t\t\t};`);\n\n\t\tconst args = ['element'];\n\n\t\tblocks.push('const element = document.currentScript.parentElement;');\n\n\t\tif (page_config.ssr) {\n\t\t\tconst serialized = { form: 'null', error: 'null' };\n\n\t\t\tif (form_value) {\n\t\t\t\tserialized.form = uneval_action_response(\n\t\t\t\t\tform_value,\n\t\t\t\t\t/** @type {string} */ (event.route.id)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (error) {\n\t\t\t\tserialized.error = devalue.uneval(error);\n\t\t\t}\n\n\t\t\tconst hydrate = [\n\t\t\t\t`node_ids: [${branch.map(({ node }) => node.index).join(', ')}]`,\n\t\t\t\t`data: ${data}`,\n\t\t\t\t`form: ${serialized.form}`,\n\t\t\t\t`error: ${serialized.error}`\n\t\t\t];\n\n\t\t\tif (status !== 200 && !error) {\n\t\t\t\thydrate.push(`status: ${status}`);\n\t\t\t}\n\n\t\t\tif (client.routes) {\n\t\t\t\tif (route) {\n\t\t\t\t\tconst stringified = generate_route_object(route, event.url, client).replaceAll(\n\t\t\t\t\t\t'\\n',\n\t\t\t\t\t\t'\\n\\t\\t\\t\\t\\t\\t\\t'\n\t\t\t\t\t); // make output after it's put together with the rest more readable\n\t\t\t\t\thydrate.push(`params: ${devalue.uneval(event.params)}`, `server_route: ${stringified}`);\n\t\t\t\t}\n\t\t\t} else if (__SVELTEKIT_EMBEDDED__) {\n\t\t\t\thydrate.push(`params: ${devalue.uneval(event.params)}`, `route: ${s(event.route)}`);\n\t\t\t}\n\n\t\t\tconst indent = '\\t'.repeat(load_env_eagerly ? 7 : 6);\n\t\t\targs.push(`{\\n${indent}\\t${hydrate.join(`,\\n${indent}\\t`)}\\n${indent}}`);\n\t\t}\n\n\t\tconst remote_data = await collect_remote_data({}, event, state);\n\n\t\tconst serialized_data =\n\t\t\tObject.keys(remote_data).length > 0\n\t\t\t\t? `${global}.data = ${uneval(remote_data)};\\n\\n\\t\\t\\t\\t\\t\\t`\n\t\t\t\t: '';\n\n\t\t// `client.app` is a proxy for `bundleStrategy === 'split'`\n\t\tconst boot = client.inline\n\t\t\t? `${client.inline.script}\n\n\t\t\t\t\t${serialized_data}${global}.app.start(${args.join(', ')});`\n\t\t\t: client.app\n\t\t\t\t? `import(${s(prefixed(client.start))}).then(async (kit) => {\n\t\t\t\t\t\tkit.init(${global});\n\t\t\t\t\t\tconst app = await import(${s(prefixed(client.app))});\n\t\t\t\t\t\t${serialized_data}kit.start(app, ${args.join(', ')});\n\t\t\t\t\t});`\n\t\t\t\t: `import(${s(prefixed(client.start))}).then((app) => {\n\t\t\t\t\t\t${serialized_data}app.start(${args.join(', ')})\n\t\t\t\t\t});`;\n\n\t\tif (load_env_eagerly) {\n\t\t\tblocks.push(`import(${s(`${base}/${paths.app_dir}/env.js`)}).then(({ env }) => {\n\t\t\t\t\t\t${global}.env = env;\n\n\t\t\t\t\t\t${boot.replace(/\\n/g, '\\n\\t')}\n\t\t\t\t\t});`);\n\t\t} else {\n\t\t\tblocks.push(boot);\n\t\t}\n\n\t\tif (__SVELTEKIT_SERVICE_WORKER__) {\n\t\t\tlet opts = \", { type: 'module' }\";\n\t\t\tif (options.service_worker_options != null) {\n\t\t\t\tconst service_worker_options = { ...options.service_worker_options, type: 'module' };\n\t\t\t\topts = `, ${s(service_worker_options)}`;\n\t\t\t}\n\n\t\t\t// we use an anonymous function instead of an arrow function to support\n\t\t\t// older browsers (https://github.com/sveltejs/kit/pull/5417)\n\t\t\tblocks.push(`if ('serviceWorker' in navigator) {\n\t\t\t\t\t\tconst script_url = '${prefixed('service-worker.js')}';\n\t\t\t\t\t\tconst policy = globalThis?.window?.trustedTypes?.createPolicy(\n\t\t\t\t\t\t\t'sveltekit-trusted-url',\n\t\t\t\t\t\t\t{ createScriptURL(url) { return url; } }\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst sanitised = policy?.createScriptURL(script_url) ?? script_url;\n\t\t\t\t\t\taddEventListener('load', function () {\n\t\t\t\t\t\t\tnavigator.serviceWorker.register(sanitised${opts});\n\t\t\t\t\t\t});\n\t\t\t\t\t}`);\n\t\t}\n\n\t\tconst init_app = `\n\t\t\t\t{\n\t\t\t\t\t${blocks.join('\\n\\n\\t\\t\\t\\t\\t')}\n\t\t\t\t}\n\t\t\t`;\n\t\tawait csp.add_script(init_app);\n\n\t\tbody += `\\n\\t\\t\\t<script${\n\t\t\tcsp.script_needs_nonce ? ` nonce=\"${csp.nonce}\"` : ''\n\t\t}>${init_app}</script>\\n\\t\\t`;\n\t}\n\n\tconst headers = new Headers({\n\t\t'x-sveltekit-page': 'true',\n\t\t'content-type': 'text/html'\n\t});\n\n\tif (state.prerendering || state.prerender_default === true) {\n\t\t// TODO read headers set with setHeaders and convert into http-equiv where possible\n\t\tconst csp_headers = csp.csp_provider.get_meta();\n\t\tif (csp_headers) {\n\t\t\thead.add_http_equiv(csp_headers);\n\t\t}\n\n\t\tif (state.prerendering?.cache) {\n\t\t\thead.add_http_equiv(\n\t\t\t\t`<meta http-equiv=\"cache-control\" content=\"${escape_html(state.prerendering.cache, true)}\">`\n\t\t\t);\n\t\t}\n\t} else {\n\t\tconst csp_header = csp.csp_provider.get_header();\n\t\tif (csp_header) {\n\t\t\theaders.set('content-security-policy', csp_header);\n\t\t}\n\t\tconst report_only_header = csp.report_only_provider.get_header();\n\t\tif (report_only_header) {\n\t\t\theaders.set('content-security-policy-report-only', report_only_header);\n\t\t}\n\n\t\tif (__SVELTEKIT_LINK_HEADER_PRELOAD__ && link_headers.size) {\n\t\t\theaders.set('link', Array.from(link_headers).join(', '));\n\t\t}\n\t}\n\n\tconst html = options.templates.app({\n\t\thead: head.build(),\n\t\tbody,\n\t\tassets,\n\t\tnonce: /** @type {string} */ (csp.nonce),\n\t\tenv: env.explicit_public_env\n\t});\n\n\t// TODO flush chunks as early as we can\n\tconst transformed =\n\t\t(await resolve_opts.transformPageChunk({\n\t\t\thtml,\n\t\t\tdone: true\n\t\t})) || '';\n\n\tif (!chunks) {\n\t\theaders.set('etag', `\"${hash(transformed)}\"`);\n\t}\n\n\tif (DEV) {\n\t\tif (page_config.csr) {\n\t\t\tif (count_non_ssi_comments(transformed) < count_non_ssi_comments(html)) {\n\t\t\t\tw.transform_page_chunk_comments();\n\t\t\t}\n\t\t} else {\n\t\t\tif (chunks) {\n\t\t\t\tw.streaming_without_csr();\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chunks\n\t\t? new Response(stream_text(transformed + '\\n', chunks), { status, headers })\n\t\t: text(transformed, { status, headers });\n}\n\nclass Head {\n\t#rendered;\n\t/** @type {string[]} */\n\t#http_equiv = [];\n\t/** @type {string[]} */\n\t#link_tags = [];\n\t/** @type {string[]} */\n\t#style_tags = [];\n\t/** @type {string[]} */\n\t#stylesheet_links = [];\n\n\t/**\n\t * @param {string} rendered\n\t */\n\tconstructor(rendered) {\n\t\tthis.#rendered = rendered;\n\t}\n\n\tbuild() {\n\t\treturn [\n\t\t\t...this.#http_equiv,\n\t\t\t...this.#link_tags,\n\t\t\tthis.#rendered,\n\t\t\t...this.#style_tags,\n\t\t\t...this.#stylesheet_links\n\t\t].join('\\n\\t\\t');\n\t}\n\n\t/**\n\t * @param {string} style\n\t * @param {string[]} attributes\n\t */\n\tadd_style(style, attributes) {\n\t\tthis.#style_tags.push(\n\t\t\t`<style${attributes.length ? ' ' + attributes.join(' ') : ''}>${style}</style>`\n\t\t);\n\t}\n\n\t/**\n\t * @param {string} href\n\t * @param {string[]} attributes\n\t */\n\tadd_stylesheet(href, attributes) {\n\t\tthis.#stylesheet_links.push(`<link href=\"${href}\" ${attributes.join(' ')}>`);\n\t}\n\n\t/**\n\t * @param {string} href\n\t * @param {string[]} attributes\n\t */\n\tadd_link_tag(href, attributes) {\n\t\tthis.#link_tags.push(`<link href=\"${href}\" ${attributes.join(' ')}>`);\n\t}\n\n\t/** @param {string} tag */\n\tadd_http_equiv(tag) {\n\t\tthis.#http_equiv.push(tag);\n\t}\n}\n","/**\n * Joins a list as `a`, `a or b` or `a, b or c`, for use in diagnostics\n * @param {string[]} items\n */\nexport function join_or(items) {\n\treturn items.length > 1 ? `${items.slice(0, -1).join(', ')} or ${items.at(-1)}` : items[0];\n}\n\n/**\n * Formats a list with one indented `- item` per line, for use in diagnostics\n * @param {string[]} items\n */\nexport function bullet_list(items) {\n\treturn items.map((item) => `  - ${item}`).join('\\n');\n}\n","import * as e from '../messages/shared-errors.js';\nimport { join_or } from './format.js';\n\n/**\n * @param {Set<string>} expected\n */\nfunction validator(expected) {\n\t/**\n\t * @param {any} module\n\t * @param {string} [file]\n\t */\n\tfunction validate(module, file) {\n\t\tif (!module) return;\n\n\t\tfor (const key in module) {\n\t\t\tif (key[0] === '_' || expected.has(key)) continue; // key is valid in this module\n\n\t\t\tconst locations = valid_locations(key, file?.slice(file.lastIndexOf('.')));\n\n\t\t\tif (locations.length > 0) {\n\t\t\t\te.invalid_export_location({ key, locations: join_or(locations), file: file || undefined });\n\t\t\t}\n\n\t\t\te.invalid_export({\n\t\t\t\tkey,\n\t\t\t\texports: [...expected.values()].join(', '),\n\t\t\t\tfile: file || undefined\n\t\t\t});\n\t\t}\n\t}\n\n\treturn validate;\n}\n\n/**\n * Returns the route files in which `key` is a valid export\n * @param {string} key\n * @param {string} ext\n * @returns {string[]}\n */\nfunction valid_locations(key, ext = '.js') {\n\tconst locations = [];\n\n\tif (valid_layout_exports.has(key)) {\n\t\tlocations.push(`+layout${ext}`);\n\t}\n\n\tif (valid_page_exports.has(key)) {\n\t\tlocations.push(`+page${ext}`);\n\t}\n\n\tif (valid_layout_server_exports.has(key)) {\n\t\tlocations.push(`+layout.server${ext}`);\n\t}\n\n\tif (valid_page_server_exports.has(key)) {\n\t\tlocations.push(`+page.server${ext}`);\n\t}\n\n\tif (valid_server_exports.has(key)) {\n\t\tlocations.push(`+server${ext}`);\n\t}\n\n\treturn locations;\n}\n\nconst valid_layout_exports = new Set([\n\t'load',\n\t'prerender',\n\t'csr',\n\t'ssr',\n\t'trailingSlash',\n\t'config'\n]);\nconst valid_page_exports = new Set([...valid_layout_exports, 'entries']);\nconst valid_layout_server_exports = new Set([...valid_layout_exports]);\nconst valid_page_server_exports = new Set([...valid_layout_server_exports, 'actions', 'entries']);\nconst valid_server_exports = new Set([\n\t'GET',\n\t'POST',\n\t'PATCH',\n\t'PUT',\n\t'DELETE',\n\t'OPTIONS',\n\t'HEAD',\n\t'QUERY',\n\t'fallback',\n\t'prerender',\n\t'trailingSlash',\n\t'config',\n\t'entries'\n]);\n\nexport const validate_layout_exports = validator(valid_layout_exports);\nexport const validate_page_exports = validator(valid_page_exports);\nexport const validate_layout_server_exports = validator(valid_layout_server_exports);\nexport const validate_page_server_exports = validator(valid_page_server_exports);\nexport const validate_server_exports = validator(valid_server_exports);\n","/** @import { UniversalNode, ServerNode } from 'types' */\nimport {\n\tvalidate_layout_exports,\n\tvalidate_layout_server_exports,\n\tvalidate_page_exports,\n\tvalidate_page_server_exports\n} from './exports.js';\n\nexport class PageNodes {\n\t/** All layout nodes and the page node, if any */\n\tdata;\n\n\t/**\n\t * @param {Array<import('types').SSRNode | undefined>} nodes\n\t */\n\tconstructor(nodes) {\n\t\tthis.data = nodes;\n\t}\n\n\tlayouts() {\n\t\treturn this.data.slice(0, -1);\n\t}\n\n\tpage() {\n\t\treturn this.data.at(-1);\n\t}\n\n\tvalidate() {\n\t\tfor (const layout of this.layouts()) {\n\t\t\tif (layout) {\n\t\t\t\tvalidate_layout_server_exports(layout.server, /** @type {string} */ (layout.server_id));\n\t\t\t\tvalidate_layout_exports(layout.universal, /** @type {string} */ (layout.universal_id));\n\t\t\t}\n\t\t}\n\n\t\tconst page = this.page();\n\t\tif (page) {\n\t\t\tvalidate_page_server_exports(page.server, /** @type {string} */ (page.server_id));\n\t\t\tvalidate_page_exports(page.universal, /** @type {string} */ (page.universal_id));\n\t\t}\n\t}\n\n\t/**\n\t * @template {'prerender' | 'ssr' | 'csr' | 'trailingSlash'} Option\n\t * @param {Option} option\n\t * @returns {(UniversalNode | ServerNode)[Option] | undefined}\n\t */\n\t#get_option(option) {\n\t\t/** @typedef {(UniversalNode | ServerNode)[Option]} Value */\n\n\t\treturn this.data.reduce((value, node) => {\n\t\t\treturn node?.universal?.[option] ?? node?.server?.[option] ?? value;\n\t\t}, /** @type {Value | undefined} */ (undefined));\n\t}\n\n\tcsr() {\n\t\treturn this.#get_option('csr') ?? true;\n\t}\n\n\tssr() {\n\t\treturn this.#get_option('ssr') ?? true;\n\t}\n\n\tprerender() {\n\t\treturn this.#get_option('prerender') ?? false;\n\t}\n\n\ttrailing_slash() {\n\t\treturn this.#get_option('trailingSlash') ?? 'never';\n\t}\n\n\tget_config() {\n\t\t/** @type {Record<string, any>} */\n\t\tlet current = {};\n\n\t\tfor (const node of this.data) {\n\t\t\tif (!node?.universal?.config && !node?.server?.config) continue;\n\n\t\t\tcurrent = {\n\t\t\t\t...current,\n\t\t\t\t...node?.server?.config,\n\t\t\t\t...node?.universal?.config\n\t\t\t};\n\t\t}\n\n\t\treturn Object.keys(current).length ? current : undefined;\n\t}\n\n\tshould_prerender_data() {\n\t\treturn this.data.some(\n\t\t\t// prerender in case of trailingSlash because the client retrieves that value from the server\n\t\t\t(node) => node?.server?.load || node?.server?.trailingSlash !== undefined\n\t\t);\n\t}\n}\n","import { text } from '@sveltejs/kit';\nimport { Redirect } from '@sveltejs/kit/internal';\nimport { render_response } from './render.js';\nimport { load_data, load_server_data } from './load_data.js';\nimport { redirect_response } from '../utils.js';\nimport { negotiate } from '../../../utils/http.js';\nimport { handle_error_and_jsonify } from '../errors.js';\nimport { PageNodes } from '../../../utils/page_nodes.js';\nimport { server_data_serializer } from './data_serializer.js';\nimport { manifest } from '../internal.js';\nimport { options } from '<sveltekit:generated>/server.js';\nimport { escape_html } from '../../../utils/escape.js';\n\n/**\n * @typedef {import('./types.js').Loaded} Loaded\n */\n\n/**\n * @param {{\n *   event: import('@sveltejs/kit').RequestEvent;\n *   state: import('types').RequestState;\n *   error: unknown;\n *   resolve_opts: import('types').RequiredResolveOptions;\n * }} opts\n */\nexport async function respond_with_error({ event, state, error, resolve_opts }) {\n\t// reroute to the fallback page to prevent an infinite chain of requests.\n\tif (event.request.headers.get('x-sveltekit-error')) {\n\t\tconst transformed = await handle_error_and_jsonify(event, state, error);\n\t\treturn static_error_page(transformed.status, transformed.message);\n\t}\n\n\t/** @type {import('./types.js').Fetched[]} */\n\tconst fetched = [];\n\ttry {\n\t\tconst branch = [];\n\t\tconst default_layout = await manifest.nodes[0](); // 0 is always the root layout\n\t\tconst nodes = new PageNodes([default_layout]);\n\t\tconst ssr = nodes.ssr();\n\t\tconst csr = nodes.csr();\n\t\tconst data_serializer = server_data_serializer(event, state);\n\t\t// Do this here first in case the awaits below before rendering themselves error\n\t\tconst transformed = await handle_error_and_jsonify(event, state, error);\n\n\t\tif (ssr) {\n\t\t\tstate.error = true;\n\n\t\t\tconst server_data_promise = load_server_data({\n\t\t\t\tevent,\n\t\t\t\tstate,\n\t\t\t\tnode: default_layout,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/require-await\n\t\t\t\tparent: async () => ({})\n\t\t\t});\n\n\t\t\tconst server_data = await server_data_promise;\n\t\t\tdata_serializer.add_node(0, server_data);\n\n\t\t\tconst data = await load_data({\n\t\t\t\tevent,\n\t\t\t\tstate,\n\t\t\t\tfetched,\n\t\t\t\tnode: default_layout,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/require-await\n\t\t\t\tparent: async () => ({}),\n\t\t\t\tresolve_opts,\n\t\t\t\tserver_data_promise,\n\t\t\t\tcsr\n\t\t\t});\n\n\t\t\tbranch.push(\n\t\t\t\t{\n\t\t\t\t\tnode: default_layout,\n\t\t\t\t\tserver_data,\n\t\t\t\t\tdata\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tnode: await manifest.nodes[1](), // 1 is always the root error\n\t\t\t\t\tdata: null,\n\t\t\t\t\tserver_data: null\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\treturn await render_response({\n\t\t\tpage_config: {\n\t\t\t\tssr,\n\t\t\t\tcsr\n\t\t\t},\n\t\t\tstatus: transformed.status,\n\t\t\terror: transformed,\n\t\t\tbranch,\n\t\t\terror_components: [],\n\t\t\tfetched,\n\t\t\tevent,\n\t\t\tstate,\n\t\t\tresolve_opts,\n\t\t\tdata_serializer\n\t\t});\n\t} catch (e) {\n\t\t// Edge case: If route is a 404 and the user redirects to somewhere from the root layout,\n\t\t// we end up here.\n\t\tif (e instanceof Redirect) {\n\t\t\treturn redirect_response(e.status, e.location);\n\t\t}\n\n\t\tconst transformed = await handle_error_and_jsonify(event, state, e);\n\n\t\treturn static_error_page(transformed.status, transformed.message);\n\t}\n}\n\n/**\n * Return as a response that renders the error.html\n *\n * @param {number} status\n * @param {string} message\n */\nexport function static_error_page(status, message) {\n\tlet page = options.templates.error({ status, message: escape_html(message) });\n\n\tif (__SVELTEKIT_DEV__) {\n\t\t// inject Vite HMR client, for easier debugging\n\t\tpage = page.replace('</head>', '<script type=\"module\" src=\"/@vite/client\"></script></head>');\n\t}\n\n\treturn text(page, {\n\t\theaders: { 'content-type': 'text/html; charset=utf-8' },\n\t\tstatus\n\t});\n}\n\n/**\n * @param {import('@sveltejs/kit').RequestEvent} event\n * @param {import('types').RequestState} state\n * @param {unknown} error\n */\nexport async function handle_fatal_error(event, state, error) {\n\tconst body = await handle_error_and_jsonify(event, state, error);\n\tconst status = body.status;\n\n\t// sec-fetch-dest would be nicer, but non-browser clients and plain HTTP hosts don't send it\n\tconst type = negotiate(event.request.headers.get('accept') || 'text/html', [\n\t\t'application/json',\n\t\t'text/html'\n\t]);\n\n\tif (event.isDataRequest || type === 'application/json') {\n\t\treturn Response.json(body, {\n\t\t\tstatus\n\t\t});\n\t}\n\n\treturn static_error_page(status, body.message);\n}\n","/** @import { RequestEvent } from '@sveltejs/kit' */\n/** @import { PageNodeIndexes, RequestState, RequiredResolveOptions, ServerDataNode, SSRNode } from 'types' */\nimport { text } from '@sveltejs/kit';\nimport { Redirect } from '@sveltejs/kit/internal';\nimport { compact } from '../../../utils/array.js';\nimport { get_status, normalize_error } from '../../../utils/error.js';\nimport { noop } from '../../../utils/functions.js';\nimport { add_data_suffix } from '../../pathname.js';\nimport { build_error_chain, nearest_error_pages } from '../../error-chain.js';\nimport { redirect_response } from '../utils.js';\nimport { manifest } from '../internal.js';\nimport { handle_error_and_jsonify } from '../errors.js';\nimport {\n\thandle_action_json_request,\n\thandle_action_request,\n\tis_action_json_request,\n\tis_action_request\n} from './actions.js';\nimport { server_data_serializer, server_data_serializer_json } from './data_serializer.js';\nimport { load_data, load_server_data } from './load_data.js';\nimport { render_response } from './render.js';\nimport { DEV } from 'esm-env';\nimport { get_remote_action, handle_remote_form_post } from '../remote-functions.js';\nimport { PageNodes } from '../../../utils/page_nodes.js';\nimport { static_error_page, respond_with_error } from './respond_with_error.js';\nimport * as e from '../../../messages/server-errors.js';\nimport * as w from '../../../messages/server-warnings.js';\n\n/**\n * The maximum request depth permitted before assuming we're stuck in an infinite loop\n */\nconst MAX_DEPTH = 10;\n\n/**\n * @param {RequestEvent} event\n * @param {RequestState} state\n * @param {PageNodeIndexes} page\n * @param {import('../../../utils/page_nodes.js').PageNodes} nodes\n * @param {RequiredResolveOptions} resolve_opts\n * @returns {Promise<Response>}\n */\nexport async function render_page(event, state, page, nodes, resolve_opts) {\n\tif (state.depth > MAX_DEPTH) {\n\t\t// infinite request cycle detected\n\t\treturn text(`Not found: ${event.url.pathname}`, {\n\t\t\tstatus: 404 // TODO in some cases this should be 500. not sure how to differentiate\n\t\t});\n\t}\n\n\tif (is_action_json_request(event)) {\n\t\tconst node = await manifest.nodes[page.leaf]();\n\t\treturn handle_action_json_request(event, state, node?.server);\n\t}\n\n\ttry {\n\t\tconst leaf_node = /** @type {SSRNode} */ (nodes.page());\n\n\t\tlet status = 200;\n\n\t\t/** @type {import('types').ServerActionResult | undefined} */\n\t\tlet action_result = undefined;\n\n\t\tif (is_action_request(event)) {\n\t\t\tconst remote_id = get_remote_action(event.url);\n\t\t\tif (remote_id) {\n\t\t\t\taction_result = await handle_remote_form_post(event, state, remote_id);\n\t\t\t} else {\n\t\t\t\t// for action requests, first call handler in +page.server.js\n\t\t\t\t// (this also determines status code)\n\t\t\t\taction_result = await handle_action_request(event, state, leaf_node.server);\n\t\t\t}\n\n\t\t\tif (action_result?.type === 'redirect') {\n\t\t\t\treturn redirect_response(action_result.status, action_result.location);\n\t\t\t}\n\t\t\tif (action_result?.type === 'error') {\n\t\t\t\tstatus = get_status(action_result.error);\n\t\t\t}\n\t\t\tif (action_result?.type === 'failure') {\n\t\t\t\tstatus = action_result.status;\n\t\t\t}\n\t\t}\n\n\t\t// it's crucial that we do this before returning the non-SSR response, otherwise\n\t\t// SvelteKit will erroneously believe that the path has been prerendered,\n\t\t// causing functions to be omitted from the manifest generated later\n\t\tconst should_prerender = nodes.prerender();\n\t\tif (should_prerender) {\n\t\t\tconst mod = leaf_node.server;\n\t\t\tif (mod?.actions) {\n\t\t\t\te.prerender_actions();\n\t\t\t}\n\t\t} else if (state.prerendering) {\n\t\t\t// if the page isn't marked as prerenderable, then bail out at this point\n\t\t\treturn new Response(undefined, {\n\t\t\t\tstatus: 204\n\t\t\t});\n\t\t}\n\n\t\t// if we fetch any endpoints while loading data for this page, they should\n\t\t// inherit the prerender option of the page\n\t\tstate.prerender_default = should_prerender;\n\n\t\tconst should_prerender_data = nodes.should_prerender_data();\n\t\tconst data_pathname = add_data_suffix(event.url.pathname);\n\n\t\t/** @type {import('./types.js').Fetched[]} */\n\t\tconst fetched = [];\n\n\t\tconst ssr = nodes.ssr();\n\t\tconst csr = nodes.csr();\n\n\t\t// renders an empty 'shell' page if SSR is turned off and if there is\n\t\t// no server data to prerender. As a result, the load functions and rendering\n\t\t// only occur client-side.\n\t\tif (\n\t\t\tssr === false &&\n\t\t\t!((state.prerendering || state.prerender_default === true) && should_prerender_data)\n\t\t) {\n\t\t\t// if the user makes a request through a non-enhanced form, the returned value is lost\n\t\t\t// because there is no SSR or client-side handling of the response\n\t\t\tif (DEV && action_result && !event.request.headers.has('x-sveltekit-action')) {\n\t\t\t\tif (action_result.type === 'error') {\n\t\t\t\t\tw.form_action_error_without_ssr();\n\t\t\t\t} else if (action_result.data) {\n\t\t\t\t\t/// case: lost data\n\t\t\t\t\tw.form_action_data_without_ssr();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn await render_response({\n\t\t\t\t// provide nodes without running load functions so that the styles and\n\t\t\t\t// fonts are linked in the head before CSR takes over\n\t\t\t\tbranch: compact(nodes.data).map((node) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\tserver_data: null\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\tfetched,\n\t\t\t\tpage_config: {\n\t\t\t\t\tssr: false,\n\t\t\t\t\tcsr\n\t\t\t\t},\n\t\t\t\tstatus,\n\t\t\t\terror: null,\n\t\t\t\tevent,\n\t\t\t\tstate,\n\t\t\t\tresolve_opts,\n\t\t\t\tdata_serializer: server_data_serializer(event, state)\n\t\t\t});\n\t\t}\n\n\t\t/** @type {Array<import('./types.js').Loaded | null>} */\n\t\tconst branch = [];\n\n\t\t/** @type {Error | null} */\n\t\tlet load_error = null;\n\n\t\tconst data_serializer = server_data_serializer(event, state);\n\t\tconst data_serializer_json =\n\t\t\t(state.prerendering || state.prerender_default === true) && should_prerender_data\n\t\t\t\t? server_data_serializer_json(event, state)\n\t\t\t\t: null;\n\n\t\t/** @type {Array<Promise<ServerDataNode | null>>} */\n\t\tconst server_promises = nodes.data.map((node, i) => {\n\t\t\tif (load_error) {\n\t\t\t\t// if an error happens immediately, don't bother with the rest of the nodes\n\t\t\t\tthrow load_error;\n\t\t\t}\n\n\t\t\treturn Promise.resolve().then(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tif (node === leaf_node && action_result?.type === 'error') {\n\t\t\t\t\t\t// we wait until here to throw the error so that we can use\n\t\t\t\t\t\t// any nested +error.svelte components that were defined\n\t\t\t\t\t\tthrow action_result.error;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst server_data = await load_server_data({\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tparent: async () => {\n\t\t\t\t\t\t\t/** @type {Record<string, any>} */\n\t\t\t\t\t\t\tconst data = {};\n\t\t\t\t\t\t\tfor (let j = 0; j < i; j += 1) {\n\t\t\t\t\t\t\t\tconst parent = await server_promises[j];\n\t\t\t\t\t\t\t\tif (parent) Object.assign(data, parent.data);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (node) {\n\t\t\t\t\t\tdata_serializer.add_node(i, server_data);\n\t\t\t\t\t}\n\n\t\t\t\t\tdata_serializer_json?.add_node(i, server_data);\n\n\t\t\t\t\treturn server_data;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tload_error = /** @type {Error} */ (e);\n\t\t\t\t\tthrow load_error;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t/** @type {Array<Promise<Record<string, any> | null>>} */\n\t\tconst load_promises = nodes.data.map((node, i) => {\n\t\t\tif (load_error) throw load_error;\n\t\t\treturn Promise.resolve().then(async () => {\n\t\t\t\ttry {\n\t\t\t\t\treturn await load_data({\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tfetched,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tparent: async () => {\n\t\t\t\t\t\t\tconst data = {};\n\t\t\t\t\t\t\tfor (let j = 0; j < i; j += 1) {\n\t\t\t\t\t\t\t\tObject.assign(data, await load_promises[j]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tresolve_opts,\n\t\t\t\t\t\tserver_data_promise: server_promises[i],\n\t\t\t\t\t\tcsr\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tload_error = /** @type {Error} */ (e);\n\t\t\t\t\tthrow load_error;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t// if we don't do this, rejections will be unhandled\n\t\tfor (const p of server_promises) p.catch(noop);\n\t\tfor (const p of load_promises) p.catch(noop);\n\n\t\tfor (let i = 0; i < nodes.data.length; i += 1) {\n\t\t\tconst node = nodes.data[i];\n\n\t\t\tif (node) {\n\t\t\t\ttry {\n\t\t\t\t\tconst server_data = await server_promises[i];\n\t\t\t\t\tconst data = await load_promises[i];\n\n\t\t\t\t\tbranch.push({ node, server_data, data });\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconst err = normalize_error(e);\n\n\t\t\t\t\tif (err instanceof Redirect) {\n\t\t\t\t\t\tif (state.prerendering && should_prerender_data) {\n\t\t\t\t\t\t\tconst body = JSON.stringify({\n\t\t\t\t\t\t\t\ttype: 'redirect',\n\t\t\t\t\t\t\t\tstatus: err.status,\n\t\t\t\t\t\t\t\tlocation: err.location\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tstate.prerendering.dependencies.set(data_pathname, {\n\t\t\t\t\t\t\t\tresponse: text(body),\n\t\t\t\t\t\t\t\tbody\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn redirect_response(err.status, err.location);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst error = await handle_error_and_jsonify(event, state, err);\n\t\t\t\t\tconst status = error.status;\n\n\t\t\t\t\tfor (const { error: index, idx } of nearest_error_pages(i, branch, page.errors)) {\n\t\t\t\t\t\tconst node = await manifest.nodes[index]();\n\n\t\t\t\t\t\tdata_serializer.set_max_nodes(idx);\n\n\t\t\t\t\t\tconst layouts = compact(branch.slice(0, idx));\n\t\t\t\t\t\tconst nodes = new PageNodes(layouts.map((layout) => layout.node));\n\t\t\t\t\t\tconst error_branch = layouts.concat({\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t\tserver_data: null\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn await render_response({\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tresolve_opts,\n\t\t\t\t\t\t\tpage_config: {\n\t\t\t\t\t\t\t\tssr: nodes.ssr(),\n\t\t\t\t\t\t\t\tcsr: nodes.csr()\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\terror_components: await load_error_components(ssr, error_branch, page),\n\t\t\t\t\t\t\tbranch: error_branch,\n\t\t\t\t\t\t\tfetched,\n\t\t\t\t\t\t\tdata_serializer\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// if we're still here, it means the error happened in the root layout,\n\t\t\t\t\t// which means we have to fall back to error.html\n\t\t\t\t\treturn static_error_page(status, error.message);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// push an empty slot so we can rewind past gaps to the\n\t\t\t\t// layout that corresponds with an +error.svelte page\n\t\t\t\tbranch.push(null);\n\t\t\t}\n\t\t}\n\n\t\tif (state.prerendering && data_serializer_json) {\n\t\t\t// ndjson format\n\t\t\tlet { data, chunks } = data_serializer_json.get_data();\n\n\t\t\tif (chunks) {\n\t\t\t\tfor await (const chunk of chunks) {\n\t\t\t\t\tdata += chunk;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstate.prerendering.dependencies.set(data_pathname, {\n\t\t\t\tresponse: text(data),\n\t\t\t\tbody: data\n\t\t\t});\n\t\t}\n\n\t\treturn await render_response({\n\t\t\tevent,\n\t\t\tstate,\n\t\t\tresolve_opts,\n\t\t\tpage_config: {\n\t\t\t\tcsr,\n\t\t\t\tssr\n\t\t\t},\n\t\t\tstatus,\n\t\t\terror: null,\n\t\t\tbranch: compact(branch),\n\t\t\taction_result,\n\t\t\tfetched,\n\t\t\tdata_serializer: !ssr ? server_data_serializer(event, state) : data_serializer,\n\t\t\terror_components: await load_error_components(ssr, branch, page)\n\t\t});\n\t} catch (e) {\n\t\t// a remote function could have thrown a redirect during render\n\t\tif (e instanceof Redirect) {\n\t\t\treturn redirect_response(e.status, e.location);\n\t\t}\n\n\t\t// if we end up here, it means the data loaded successfully\n\t\t// but the page failed to render, or that a prerendering error occurred\n\t\treturn await respond_with_error({\n\t\t\tevent,\n\t\t\tstate,\n\t\t\terror: e,\n\t\t\tresolve_opts\n\t\t});\n\t}\n}\n\n/**\n * @param {boolean} ssr\n * @param {Array<import('./types.js').Loaded | null>} branch\n * @param {PageNodeIndexes} page\n */\nfunction load_error_components(ssr, branch, page) {\n\tif (!ssr) return undefined;\n\n\treturn build_error_chain(branch, page.errors, (idx) =>\n\t\tmanifest.nodes[idx]?.().then((e) => e.component?.())\n\t);\n}\n","import { is_form_content_type } from '../../utils/http.js';\n\nconst mutating_form_methods = new Set(['POST', 'PUT', 'PATCH', 'DELETE']);\n\n/**\n * The origin SvelteKit treats as \"self\" when validating the `Origin` header on\n * cross-site requests.\n *\n * By default (`paths.origin` is `undefined`), SvelteKit derives the origin\n * from `request.url` (which is set by the adapter, and ultimately by the\n * platform). When `paths.origin` is configured — for example so that a preview\n * deployment whose URL isn't known at build time, or an app behind a reverse\n * proxy, can declare a canonical origin — that value takes precedence.\n *\n * @param {string | undefined} paths_origin the configured `kit.paths.origin`\n * @param {string} url_origin the origin derived from `request.url`\n * @returns {string}\n */\nexport function get_self_origin(paths_origin, url_origin) {\n\treturn paths_origin || url_origin;\n}\n\n/**\n * Determines whether a non-remote request should be rejected as a cross-site\n * request forgery (CSRF). Used by `respond.js` to gate form `POST`/`PUT`/\n * `PATCH`/`DELETE` requests whose `Origin` header doesn't match the app's\n * self-origin (and isn't in `trusted_origins`).\n *\n * @param {{\n *   request: Request;\n *   request_origin: string | null;\n *   self_origin: string;\n *   trusted_origins: string[];\n * }} input\n * @returns {boolean}\n */\nexport function is_csrf_forbidden({ request, request_origin, self_origin, trusted_origins }) {\n\treturn (\n\t\t(!request.headers.get('content-type') || is_form_content_type(request)) &&\n\t\tmutating_form_methods.has(request.method) &&\n\t\trequest_origin !== self_origin &&\n\t\t(!request_origin || !trusted_origins.includes(request_origin))\n\t);\n}\n\n/**\n * Determines whether a remote-function request should be rejected as cross-site.\n *\n * Unlike form submissions, remote functions accept any content type (e.g.\n * `application/json`), so the check is solely on the request method and origin:\n * a non-`GET` request is forbidden when its `Origin` header doesn't match the\n * app's self-origin. Unlike `is_csrf_forbidden`, entries in `trusted_origins`\n * are *not* honoured — remote function endpoints are an implementation detail,\n * not a public API, so cross-origin calls are forbidden regardless.\n *\n * @param {{\n *   request: Request;\n *   request_origin: string | null;\n *   self_origin: string;\n * }} input\n * @returns {boolean}\n */\nexport function is_remote_forbidden({ request, request_origin, self_origin }) {\n\treturn request.method !== 'GET' && request_origin !== self_origin;\n}\n","import { text } from '@sveltejs/kit';\nimport { Redirect } from '@sveltejs/kit/internal';\nimport { normalize_error } from '../../../utils/error.js';\nimport { once } from '../../../utils/functions.js';\nimport { server_data_serializer_json } from '../page/data_serializer.js';\nimport { load_server_data } from '../page/load_data.js';\nimport { handle_error_and_jsonify } from '../errors.js';\nimport { normalize_path } from '../../../utils/url.js';\nimport { stream_text } from '../../utils.js';\nimport { with_version_header } from '../utils.js';\nimport { manifest } from '../internal.js';\n\n/**\n * @param {import('@sveltejs/kit').RequestEvent} event\n * @param {import('types').RequestState} state\n * @param {{ page: Pick<import('types').PageNodeIndexes, 'layouts' | 'leaf'> | null }} route\n * @param {boolean[] | undefined} invalidated_data_nodes\n * @param {import('types').TrailingSlash} trailing_slash\n * @returns {Promise<Response>}\n */\nexport async function render_data(event, state, route, invalidated_data_nodes, trailing_slash) {\n\tif (!route.page) {\n\t\t// requesting /__data.json should fail for a +server.js\n\t\treturn with_version_header(new Response(undefined, { status: 404 }));\n\t}\n\n\ttry {\n\t\tconst node_ids = [...route.page.layouts, route.page.leaf];\n\t\tconst invalidated = invalidated_data_nodes ?? node_ids.map(() => true);\n\n\t\tlet aborted = false;\n\n\t\tconst url = new URL(event.url);\n\t\turl.pathname = normalize_path(url.pathname, trailing_slash);\n\n\t\tconst new_event = { ...event, url };\n\n\t\tconst functions = node_ids.map((n, i) => {\n\t\t\treturn once(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tif (aborted) {\n\t\t\t\t\t\treturn /** @type {import('types').ServerDataSkippedNode} */ ({\n\t\t\t\t\t\t\ttype: 'skip'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// == because it could be undefined (in dev) or null (in build, because of JSON.stringify)\n\t\t\t\t\tconst node = n == undefined ? n : await manifest.nodes[n]();\n\t\t\t\t\t// load this. for the child, return as is. for the final result, stream things\n\t\t\t\t\treturn load_server_data({\n\t\t\t\t\t\tevent: new_event,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tparent: async () => {\n\t\t\t\t\t\t\t/** @type {Record<string, any>} */\n\t\t\t\t\t\t\tconst data = {};\n\t\t\t\t\t\t\tfor (let j = 0; j < i; j += 1) {\n\t\t\t\t\t\t\t\tconst parent = /** @type {import('types').ServerDataNode | null} */ (\n\t\t\t\t\t\t\t\t\tawait functions[j]()\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tif (parent) {\n\t\t\t\t\t\t\t\t\tObject.assign(data, parent.data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\taborted = true;\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tconst promises = functions.map(async (fn, i) => {\n\t\t\tif (!invalidated[i]) {\n\t\t\t\treturn /** @type {import('types').ServerDataSkippedNode} */ ({\n\t\t\t\t\ttype: 'skip'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn fn();\n\t\t});\n\n\t\tconst data_serializer = server_data_serializer_json(event, state);\n\t\tawait Promise.all(\n\t\t\tpromises.map(async (p, i) => {\n\t\t\t\tconst node = await p.catch(async (error) => {\n\t\t\t\t\tif (error instanceof Redirect) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst transformed = await handle_error_and_jsonify(event, state, error);\n\n\t\t\t\t\treturn /** @type {import('types').ServerErrorNode} */ ({\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\terror: transformed\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tdata_serializer.add_node(i, node);\n\t\t\t})\n\t\t);\n\t\tconst { data, chunks } = data_serializer.get_data();\n\n\t\tif (!chunks) {\n\t\t\t// use a normal JSON response where possible, so we get `content-length`\n\t\t\t// and can use browser JSON devtools for easier inspecting\n\t\t\treturn json_response(data);\n\t\t}\n\n\t\treturn with_version_header(\n\t\t\tnew Response(stream_text(data, chunks), {\n\t\t\t\theaders: {\n\t\t\t\t\t// we use a proprietary content type to prevent buffering.\n\t\t\t\t\t// the `text` prefix makes it inspectable\n\t\t\t\t\t'content-type': 'text/sveltekit-data',\n\t\t\t\t\t'cache-control': 'private, no-store'\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t} catch (e) {\n\t\tconst error = normalize_error(e);\n\n\t\tif (error instanceof Redirect) {\n\t\t\treturn redirect_json_response(error);\n\t\t} else {\n\t\t\tconst transformed = await handle_error_and_jsonify(event, state, error);\n\t\t\treturn json_response(transformed, transformed.status);\n\t\t}\n\t}\n}\n\n/**\n * @param {Record<string, any> | string} json\n * @param {number} [status]\n */\nfunction json_response(json, status = 200) {\n\treturn with_version_header(\n\t\ttext(typeof json === 'string' ? json : JSON.stringify(json), {\n\t\t\tstatus,\n\t\t\theaders: {\n\t\t\t\t'content-type': 'application/json',\n\t\t\t\t'cache-control': 'private, no-store'\n\t\t\t}\n\t\t})\n\t);\n}\n\n/**\n * @param {Redirect} redirect\n */\nexport function redirect_json_response(redirect) {\n\treturn json_response(\n\t\t/** @type {import('types').ServerRedirectNode} */ ({\n\t\t\ttype: 'redirect',\n\t\t\tstatus: redirect.status,\n\t\t\tlocation: redirect.location\n\t\t})\n\t);\n}\n","/**\n * RegExp to match cookie-name in RFC 6265 sec 4.1.1\n * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2\n * which has been replaced by the token definition in RFC 7230 appendix B.\n *\n * cookie-name       = token\n * token             = 1*tchar\n * tchar             = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" /\n *                     \"*\" / \"+\" / \"-\" / \".\" / \"^\" / \"_\" /\n *                     \"`\" / \"|\" / \"~\" / DIGIT / ALPHA\n *\n * Note: Allowing more characters - https://github.com/jshttp/cookie/issues/191\n * Allow same range as cookie value, except `=`, which delimits end of name.\n */\nconst cookieNameRegExp = /^[\\u0021-\\u003A\\u003C\\u003E-\\u007E]+$/;\n/**\n * RegExp to match cookie-value in RFC 6265 sec 4.1.1\n *\n * cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n * cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n *                     ; US-ASCII characters excluding CTLs,\n *                     ; whitespace DQUOTE, comma, semicolon,\n *                     ; and backslash\n *\n * Allowing more characters: https://github.com/jshttp/cookie/issues/191\n * Comma, backslash, and DQUOTE are not part of the parsing algorithm.\n */\nconst cookieValueRegExp = /^[\\u0021-\\u003A\\u003C-\\u007E]*$/;\n/**\n * RegExp to match domain-value in RFC 6265 sec 4.1.1\n *\n * domain-value      = <subdomain>\n *                     ; defined in [RFC1034], Section 3.5, as\n *                     ; enhanced by [RFC1123], Section 2.1\n * <subdomain>       = <label> | <subdomain> \".\" <label>\n * <label>           = <let-dig> [ [ <ldh-str> ] <let-dig> ]\n *                     Labels must be 63 characters or less.\n *                     'let-dig' not 'letter' in the first char, per RFC1123\n * <ldh-str>         = <let-dig-hyp> | <let-dig-hyp> <ldh-str>\n * <let-dig-hyp>     = <let-dig> | \"-\"\n * <let-dig>         = <letter> | <digit>\n * <letter>          = any one of the 52 alphabetic characters A through Z in\n *                     upper case and a through z in lower case\n * <digit>           = any one of the ten digits 0 through 9\n *\n * Keep support for leading dot: https://github.com/jshttp/cookie/issues/173\n *\n * > (Note that a leading %x2E (\".\"), if present, is ignored even though that\n * character is not permitted, but a trailing %x2E (\".\"), if present, will\n * cause the user agent to ignore the attribute.)\n */\nconst domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;\n/**\n * RegExp to match path-value in RFC 6265 sec 4.1.1\n *\n * path-value        = <any CHAR except CTLs or \";\">\n * CHAR              = %x01-7F\n *                     ; defined in RFC 5234 appendix B.1\n */\nconst pathValueRegExp = /^[\\u0020-\\u003A\\u003D-\\u007E]*$/;\n/**\n * RegExp to match max-age-value in RFC 6265 sec 5.6.2\n */\nconst maxAgeRegExp = /^-?\\d+$/;\n/**\n * RegExp to match RFC 6265 cookie-octet values (without % to preserve roundtrip) that need no URL encoding.\n */\nconst cookieOctetRegExp = /^[!#$&'()*+\\-.\\/0-9:<=>?@A-Z[\\]\\^_`a-z{|}~]*$/;\nconst NullObject = /* @__PURE__ */ (() => {\n    const C = function () { };\n    C.prototype = Object.create(null);\n    return C;\n})();\n/**\n * Parse a `Cookie` header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n */\nexport function parseCookie(str, options) {\n    const obj = new NullObject();\n    const len = str.length;\n    // RFC 6265 sec 4.1.1, RFC 2616 2.2 defines a cookie name consists of one char minimum, plus '='.\n    if (len < 2)\n        return obj;\n    const dec = options?.decode || decode;\n    let index = 0;\n    do {\n        const eqIdx = eqIndex(str, index, len);\n        if (eqIdx === len)\n            break; // No more cookie pairs.\n        const endIdx = endIndex(str, index, len);\n        if (eqIdx > endIdx) {\n            // backtrack on prior semicolon\n            index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n            continue;\n        }\n        const key = valueSlice(str, index, eqIdx);\n        // only assign once\n        if (obj[key] === undefined) {\n            obj[key] = dec(valueSlice(str, eqIdx + 1, endIdx));\n        }\n        index = endIdx + 1;\n    } while (index < len);\n    return obj;\n}\n/**\n * Stringifies an object into an HTTP `Cookie` header.\n */\nexport function stringifyCookie(cookie, options) {\n    const enc = options?.encode || defaultEncode;\n    const keys = Object.keys(cookie);\n    let str = \"\";\n    for (let i = 0; i < keys.length; i++) {\n        const name = keys[i];\n        const val = cookie[name];\n        if (val === undefined)\n            continue;\n        if (!cookieNameRegExp.test(name)) {\n            throw new TypeError(`cookie name is invalid: ${name}`);\n        }\n        const value = enc(val);\n        if (!cookieValueRegExp.test(value)) {\n            throw new TypeError(`cookie val is invalid: ${val}`);\n        }\n        if (str)\n            str += \"; \";\n        str += name + \"=\" + value;\n    }\n    return str;\n}\n/**\n * Serialize data into a cookie header.\n *\n * Serialize a name value pair into a cookie string suitable for\n * http headers. An optional options object specifies cookie parameters.\n *\n * stringifySetCookie({ name: 'foo', value: 'bar', httpOnly: true })\n *   => \"foo=bar; HttpOnly\"\n */\nexport function stringifySetCookie(cookie, options) {\n    const enc = options?.encode || defaultEncode;\n    if (!cookieNameRegExp.test(cookie.name)) {\n        throw new TypeError(`argument name is invalid: ${cookie.name}`);\n    }\n    const value = cookie.value == null ? \"\" : enc(cookie.value);\n    if (!cookieValueRegExp.test(value)) {\n        throw new TypeError(`argument val is invalid: ${cookie.value}`);\n    }\n    let str = cookie.name + \"=\" + value;\n    if (cookie.maxAge !== undefined) {\n        if (!Number.isInteger(cookie.maxAge)) {\n            throw new TypeError(`option maxAge is invalid: ${cookie.maxAge}`);\n        }\n        str += \"; Max-Age=\" + cookie.maxAge;\n    }\n    if (cookie.domain) {\n        if (!domainValueRegExp.test(cookie.domain)) {\n            throw new TypeError(`option domain is invalid: ${cookie.domain}`);\n        }\n        str += \"; Domain=\" + cookie.domain;\n    }\n    if (cookie.path) {\n        if (!pathValueRegExp.test(cookie.path)) {\n            throw new TypeError(`option path is invalid: ${cookie.path}`);\n        }\n        str += \"; Path=\" + cookie.path;\n    }\n    if (cookie.expires) {\n        if (!Number.isFinite(cookie.expires.valueOf())) {\n            throw new TypeError(`option expires is invalid: ${cookie.expires}`);\n        }\n        str += \"; Expires=\" + cookie.expires.toUTCString();\n    }\n    if (cookie.httpOnly) {\n        str += \"; HttpOnly\";\n    }\n    if (cookie.secure) {\n        str += \"; Secure\";\n    }\n    if (cookie.partitioned) {\n        str += \"; Partitioned\";\n    }\n    if (cookie.priority) {\n        const priority = typeof cookie.priority === \"string\"\n            ? cookie.priority.toLowerCase()\n            : undefined;\n        switch (priority) {\n            case \"low\":\n                str += \"; Priority=Low\";\n                break;\n            case \"medium\":\n                str += \"; Priority=Medium\";\n                break;\n            case \"high\":\n                str += \"; Priority=High\";\n                break;\n            default:\n                throw new TypeError(`option priority is invalid: ${cookie.priority}`);\n        }\n    }\n    if (cookie.sameSite) {\n        const sameSite = typeof cookie.sameSite === \"string\"\n            ? cookie.sameSite.toLowerCase()\n            : cookie.sameSite;\n        switch (sameSite) {\n            case true:\n            case \"strict\":\n                str += \"; SameSite=Strict\";\n                break;\n            case \"lax\":\n                str += \"; SameSite=Lax\";\n                break;\n            case \"none\":\n                str += \"; SameSite=None\";\n                break;\n            default:\n                throw new TypeError(`option sameSite is invalid: ${cookie.sameSite}`);\n        }\n    }\n    return str;\n}\n/**\n * Deserialize a `Set-Cookie` header into an object.\n *\n * parseSetCookie('foo=bar; HttpOnly')\n *   => { name: 'foo', value: 'bar', httpOnly: true }\n */\nexport function parseSetCookie(str, options) {\n    const dec = options?.decode || decode;\n    const len = str.length;\n    const endIdx = endIndex(str, 0, len);\n    let eqIdx = eqIndex(str, 0, len);\n    const setCookie = eqIdx < endIdx\n        ? {\n            name: valueSlice(str, 0, eqIdx),\n            value: dec(valueSlice(str, eqIdx + 1, endIdx)),\n        }\n        : { name: \"\", value: dec(valueSlice(str, 0, endIdx)) };\n    let index = endIdx + 1;\n    while (index < len) {\n        const endIdx = endIndex(str, index, len);\n        if (eqIdx < index)\n            eqIdx = eqIndex(str, index, len);\n        const attr = eqIdx < endIdx\n            ? valueSlice(str, index, eqIdx)\n            : valueSlice(str, index, endIdx);\n        const val = eqIdx < endIdx ? valueSlice(str, eqIdx + 1, endIdx) : undefined;\n        switch (attr.toLowerCase()) {\n            case \"httponly\":\n                setCookie.httpOnly = true;\n                break;\n            case \"secure\":\n                setCookie.secure = true;\n                break;\n            case \"partitioned\":\n                setCookie.partitioned = true;\n                break;\n            case \"domain\":\n                setCookie.domain = val;\n                break;\n            case \"path\":\n                setCookie.path = val;\n                break;\n            case \"max-age\":\n                if (val && maxAgeRegExp.test(val))\n                    setCookie.maxAge = Number(val);\n                break;\n            case \"expires\":\n                if (!val)\n                    break;\n                const date = new Date(val);\n                if (Number.isFinite(date.valueOf()))\n                    setCookie.expires = date;\n                break;\n            case \"priority\":\n                if (!val)\n                    break;\n                const priority = val.toLowerCase();\n                if (priority === \"low\" ||\n                    priority === \"medium\" ||\n                    priority === \"high\") {\n                    setCookie.priority = priority;\n                }\n                break;\n            case \"samesite\":\n                if (!val)\n                    break;\n                const sameSite = val.toLowerCase();\n                if (sameSite === \"lax\" ||\n                    sameSite === \"strict\" ||\n                    sameSite === \"none\") {\n                    setCookie.sameSite = sameSite;\n                }\n                break;\n        }\n        index = endIdx + 1;\n    }\n    return setCookie;\n}\n/**\n * Find the next `;` character, or return `len`.\n */\nfunction endIndex(str, min, len) {\n    const index = str.indexOf(\";\", min);\n    return index === -1 ? len : index;\n}\n/**\n * Find the next `=` character, or return `len`.\n */\nfunction eqIndex(str, min, len) {\n    const index = str.indexOf(\"=\", min);\n    return index === -1 ? len : index;\n}\n/**\n * Slice out a value between startPod to max.\n */\nfunction valueSlice(str, min, max) {\n    if (min === max)\n        return \"\";\n    let start = min;\n    let end = max;\n    do {\n        const code = str.charCodeAt(start);\n        if (code !== 32 /*   */ && code !== 9 /* \\t */)\n            break;\n    } while (++start < end);\n    while (end > start) {\n        const code = str.charCodeAt(end - 1);\n        if (code !== 32 /*   */ && code !== 9 /* \\t */)\n            break;\n        end--;\n    }\n    return str.slice(start, end);\n}\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n */\nfunction decode(str) {\n    if (str.indexOf(\"%\") === -1)\n        return str;\n    try {\n        return decodeURIComponent(str);\n    }\n    catch (e) {\n        return str;\n    }\n}\n/**\n * URL-encode string value. Optimized to skip native call for roundtrip-safe cookie-octet values.\n */\nfunction defaultEncode(str) {\n    return cookieOctetRegExp.test(str) ? str : encodeURIComponent(str);\n}\n//# sourceMappingURL=index.js.map","import { parseCookie, parseSetCookie, stringifySetCookie } from 'cookie';\nimport { DEV } from 'esm-env';\nimport { normalize_path, resolve } from '../../utils/url.js';\nimport { add_data_suffix } from '../pathname.js';\nimport { text_encoder } from '../utils.js';\nimport * as e from '../../messages/server-errors.js';\nimport * as w from '../../messages/server-warnings.js';\n\n/**\n * Tracks all cookies set during dev mode so we can emit warnings\n * when we detect that there's likely cookie misusage due to wrong paths\n *\n * @type {Record<string, Set<string>>} */\nconst cookie_paths = {};\n\n/**\n * Cookies whose name and value combined are larger than this size are\n * discarded by browsers. This is the limit codified for the name/value pair\n * in RFC 6265bis: https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-20#section-5.6-7.5.1\n */\nconst MAX_COOKIE_SIZE = 4096;\n\n/**\n * Generates a unique key for a cookie based on its domain, path, and name in\n * the format: `<domain>/<path>?<name>`.\n * If domain is undefined, it will be omitted.\n * For example: `/?name`, `example.com/foo?name`.\n *\n * @param {string | undefined} domain\n * @param {string} path\n * @param {string} name\n * @returns {string}\n */\nfunction generate_cookie_key(domain, path, name) {\n\treturn `${domain || ''}${path}?${encodeURIComponent(name)}`;\n}\n\n/**\n * @param {Request} request\n * @param {URL} url\n */\nexport function get_cookies(request, url) {\n\tconst header = request.headers.get('cookie') ?? '';\n\tconst initial_cookies = /** @type {Record<string, string>} */ (\n\t\tparseCookie(header, { decode: (value) => value })\n\t);\n\n\t/** @type {ReturnType<typeof parseCookie> | undefined} */\n\tlet default_cookies;\n\n\t/**\n\t * The header never changes during the request, so the default-decode parse is cached\n\t * @param {import('cookie').ParseOptions} [opts]\n\t */\n\tfunction parse_header(opts) {\n\t\treturn opts?.decode ? parseCookie(header, opts) : (default_cookies ??= parseCookie(header));\n\t}\n\n\t/** @param {import('./page/types.js').Cookie} cookie */\n\tfunction matches_url(cookie) {\n\t\treturn (\n\t\t\tdomain_matches(url.hostname, cookie.options.domain) &&\n\t\t\tpath_matches(url.pathname, cookie.options.path)\n\t\t);\n\t}\n\n\t/** @type {string | undefined} */\n\tlet normalized_url;\n\n\t/** @type {Map<string, import('./page/types.js').Cookie>} */\n\tconst new_cookies = new Map();\n\n\t/** @type {Omit<import('cookie').SetCookie, 'name' | 'value'>} */\n\tconst defaults = {\n\t\thttpOnly: true,\n\t\tpath: '/',\n\t\tsameSite: 'lax',\n\t\tsecure: !__SVELTEKIT_DEV__ && !(url.hostname === 'localhost' && url.protocol === 'http:')\n\t};\n\n\t/** @type {import('@sveltejs/kit').Cookies} */\n\tconst cookies = {\n\t\t// The JSDoc param annotations appearing below for get, set and delete\n\t\t// are necessary to expose the `cookie` library types to\n\t\t// typescript users. `@type {import('@sveltejs/kit').Cookies}` above is not\n\t\t// sufficient to do so.\n\n\t\tget(name, opts) {\n\t\t\t// Look for the most specific matching cookie from new_cookies\n\t\t\t/** @type {import('./page/types.js').Cookie | undefined} */\n\t\t\tlet best_match;\n\t\t\tfor (const c of new_cookies.values()) {\n\t\t\t\tif (\n\t\t\t\t\tc.name === name &&\n\t\t\t\t\tmatches_url(c) &&\n\t\t\t\t\t(!best_match || c.options.path.length > best_match.options.path.length)\n\t\t\t\t) {\n\t\t\t\t\tbest_match = c;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (best_match) {\n\t\t\t\treturn best_match.options.maxAge === 0 ? undefined : best_match.value;\n\t\t\t}\n\n\t\t\tconst cookie = parse_header(opts)[name]; // the decoded string or undefined\n\n\t\t\t// in development, if the cookie was set during this session with `cookies.set`,\n\t\t\t// but at a different path, warn the user. (ignore cookies from request headers,\n\t\t\t// since we don't know which path they were set at)\n\t\t\tif (DEV && !cookie) {\n\t\t\t\tconst paths = Array.from(cookie_paths[name] ?? []).filter((path) => {\n\t\t\t\t\t// we only care about paths that are _more_ specific than the current path\n\t\t\t\t\treturn path_matches(path, url.pathname) && path !== url.pathname;\n\t\t\t\t});\n\n\t\t\t\tif (paths.length > 0) {\n\t\t\t\t\tw.cookie_path_mismatch({ name, pathname: url.pathname, paths: conjoin([...paths]) });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn cookie;\n\t\t},\n\n\t\tgetAll(opts) {\n\t\t\t// copy, so the cached parse isn't mutated below\n\t\t\tconst cookies = { ...parse_header(opts) };\n\n\t\t\t// Group cookies by name and find the most specific one for each name\n\t\t\tconst lookup = new Map();\n\n\t\t\tfor (const c of new_cookies.values()) {\n\t\t\t\tif (matches_url(c)) {\n\t\t\t\t\tconst existing = lookup.get(c.name);\n\n\t\t\t\t\t// If no existing cookie or this one has a more specific (longer) path, use this one\n\t\t\t\t\tif (!existing || c.options.path.length > existing.options.path.length) {\n\t\t\t\t\t\tlookup.set(c.name, c);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the most specific cookies to the result\n\t\t\tfor (const c of lookup.values()) {\n\t\t\t\t// tombstones (deleted cookies) shadow request-header cookies,\n\t\t\t\t// mirroring the behavior of `get()`\n\t\t\t\tif (c.options.maxAge === 0) {\n\t\t\t\t\tdelete cookies[c.name];\n\t\t\t\t} else {\n\t\t\t\t\tcookies[c.name] = c.value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn /** @type {Array<{ name: string; value: string }>} */ (\n\t\t\t\tObject.entries(cookies)\n\t\t\t\t\t.filter(([, value]) => value != null)\n\t\t\t\t\t.map(([name, value]) => ({ name, value }))\n\t\t\t);\n\t\t},\n\n\t\tset(name, value, options) {\n\t\t\tset_internal(name, value, { ...defaults, ...options });\n\t\t},\n\n\t\tdelete(name, options) {\n\t\t\tcookies.set(name, '', { ...options, maxAge: 0 });\n\t\t},\n\n\t\tparse: parseSetCookie,\n\n\t\tserialize(name, value, { encode, ...options } = {}) {\n\t\t\tlet path = options.path ?? '/';\n\n\t\t\tif (!options.domain || options.domain === url.hostname) {\n\t\t\t\tif (!normalized_url) {\n\t\t\t\t\te.cookies_serialize_before_route();\n\t\t\t\t}\n\t\t\t\tpath = resolve(normalized_url, path);\n\t\t\t}\n\n\t\t\treturn stringifySetCookie({ name, value, ...defaults, ...options, path }, { encode });\n\t\t}\n\t};\n\n\t/**\n\t * @param {URL} destination\n\t * @param {string | null} header\n\t */\n\tfunction get_cookie_header(destination, header) {\n\t\t/** @type {Record<string, string>} */\n\t\tconst combined_cookies = {\n\t\t\t// cookies sent by the user agent have lowest precedence\n\t\t\t...initial_cookies\n\t\t};\n\n\t\t// cookies previous set during this event with cookies.set have higher precedence\n\t\tfor (const cookie of new_cookies.values()) {\n\t\t\tif (!domain_matches(destination.hostname, cookie.options.domain)) continue;\n\t\t\tif (!path_matches(destination.pathname, cookie.options.path)) continue;\n\n\t\t\tconst encoder = cookie.options.encode || encodeURIComponent;\n\t\t\tcombined_cookies[cookie.name] = encoder(cookie.value);\n\t\t}\n\n\t\t// explicit header has highest precedence\n\t\tif (header) {\n\t\t\tconst parsed = /** @type {Record<string, string>} */ (\n\t\t\t\tparseCookie(header, { decode: (value) => value })\n\t\t\t);\n\t\t\tfor (const name in parsed) {\n\t\t\t\tcombined_cookies[name] = parsed[name];\n\t\t\t}\n\t\t}\n\n\t\treturn Object.entries(combined_cookies)\n\t\t\t.map(([name, value]) => `${name}=${value}`)\n\t\t\t.join('; ');\n\t}\n\n\t/** @type {Array<() => void>} */\n\tconst internal_queue = [];\n\n\t/**\n\t * @param {string} name\n\t * @param {string} value\n\t * @param {import('cookie').SerializeOptions} options\n\t */\n\tfunction set_internal(name, value, options) {\n\t\tif (!normalized_url) {\n\t\t\tinternal_queue.push(() => set_internal(name, value, options));\n\t\t\treturn;\n\t\t}\n\n\t\tlet path = options.path ?? '/';\n\n\t\tif (!options.domain || options.domain === url.hostname) {\n\t\t\tpath = resolve(normalized_url, path);\n\t\t}\n\n\t\t// Generate unique key for cookie storage\n\t\tconst cookie_key = generate_cookie_key(options.domain, path, name);\n\t\tconst cookie = { name, value, options: { ...options, path } };\n\t\tnew_cookies.set(cookie_key, cookie);\n\n\t\tif (DEV) {\n\t\t\tconst size =\n\t\t\t\t// only the name/value pair counts towards MAX_COOKIE_SIZE, not the other attributes\n\t\t\t\ttext_encoder.encode(name).byteLength +\n\t\t\t\ttext_encoder.encode((options.encode ?? encodeURIComponent)(value)).byteLength;\n\n\t\t\tif (size > MAX_COOKIE_SIZE) {\n\t\t\t\te.cookie_too_large({ name });\n\t\t\t}\n\n\t\t\tcookie_paths[name] ??= new Set();\n\n\t\t\tif (!value) {\n\t\t\t\tcookie_paths[name].delete(path);\n\t\t\t} else {\n\t\t\t\tcookie_paths[name].add(path);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param {import('types').TrailingSlash} trailing_slash\n\t */\n\tfunction set_trailing_slash(trailing_slash) {\n\t\tnormalized_url = normalize_path(url.pathname, trailing_slash);\n\t\tinternal_queue.forEach((fn) => fn());\n\t}\n\n\treturn { cookies, new_cookies, get_cookie_header, set_internal, set_trailing_slash };\n}\n\n/**\n * @param {string} hostname\n * @param {string} [constraint]\n */\nexport function domain_matches(hostname, constraint) {\n\tif (!constraint) return true;\n\n\tconst normalized = constraint[0] === '.' ? constraint.slice(1) : constraint;\n\n\tif (hostname === normalized) return true;\n\treturn hostname.endsWith('.' + normalized);\n}\n\n/**\n * @param {string} path\n * @param {string} [constraint]\n */\nexport function path_matches(path, constraint) {\n\tif (!constraint) return true;\n\n\tconst normalized = constraint.endsWith('/') ? constraint.slice(0, -1) : constraint;\n\n\tif (path === normalized) return true;\n\treturn path.startsWith(normalized + '/');\n}\n\n/**\n * @param {Headers} headers\n * @param {MapIterator<import('./page/types.js').Cookie>} cookies\n */\nexport function add_cookies_to_headers(headers, cookies) {\n\tfor (const new_cookie of cookies) {\n\t\tconst {\n\t\t\tname,\n\t\t\tvalue,\n\t\t\toptions: { encode, ...options }\n\t\t} = new_cookie;\n\t\theaders.append('set-cookie', stringifySetCookie({ name, value, ...options }, { encode }));\n\n\t\t// special case — for routes ending with .html, the route data lives in a sibling\n\t\t// `.html__data.json` file rather than a child `/__data.json` file, which means\n\t\t// we need to duplicate the cookie\n\t\tif (options.path.endsWith('.html')) {\n\t\t\tconst path = add_data_suffix(options.path);\n\t\t\theaders.append(\n\t\t\t\t'set-cookie',\n\t\t\t\tstringifySetCookie({ name, value, ...options, path }, { encode })\n\t\t\t);\n\t\t}\n\t}\n}\n\n/**\n * @param {string[]} array\n */\nfunction conjoin(array) {\n\tif (array.length <= 2) return array.join(' and ');\n\treturn `${array.slice(0, -1).join(', ')} and ${array.at(-1)}`;\n}\n","/** @import { InternalRequestOptions, RequestState } from 'types' */\n\n/** Per-request caches and context flags — never carried into a fork. */\nfunction transient_fields() {\n\treturn {\n\t\tremote: {\n\t\t\tdata: null,\n\t\t\texplicit: null,\n\t\t\timplicit: null,\n\t\t\tforms: null,\n\t\t\trequested: null,\n\t\t\tignored: null,\n\t\t\tbatches: null,\n\t\t\tlive_iterators: null\n\t\t},\n\t\tis_in_remote_function: false,\n\t\tis_in_remote_form_or_command: false,\n\t\tis_in_remote_query: false,\n\t\tis_in_remote_prerender: false,\n\t\tis_in_render: false\n\t};\n}\n\n/**\n * @param {InternalRequestOptions} options\n * @returns {RequestState}\n */\nexport function create_request_state(options) {\n\t// every field is initialized up front so the object shape stays stable\n\treturn {\n\t\tgetClientAddress: options.getClientAddress,\n\t\tplatform: options.platform,\n\t\tread: options.read,\n\t\tbefore_handle: options.before_handle,\n\t\temulator: options.emulator,\n\t\tprerendering: options.prerendering,\n\t\tprerender_default: undefined,\n\t\terror: false,\n\t\tdepth: 0,\n\t\trerouted_url: null,\n\t\t...transient_fields()\n\t};\n}\n\n/**\n * @param {RequestState} state\n * @returns {RequestState}\n */\nexport function fork_state_for_subrequest(state) {\n\treturn {\n\t\t...state,\n\t\t...transient_fields(),\n\t\tdepth: state.depth + 1\n\t};\n}\n","import { parseSetCookie } from 'cookie';\nimport { noop } from '../../utils/functions.js';\nimport { respond } from './respond.js';\nimport * as paths from '#app/paths';\nimport { hooks, manifest, read_implementation } from './internal.js';\nimport { has_prerendered_path } from './utils.js';\nimport { fork_state_for_subrequest } from './state.js';\n\n/**\n * @param {{\n *   event: import('@sveltejs/kit').RequestEvent;\n *   state: import('types').RequestState;\n *   get_cookie_header: (url: URL, header: string | null) => string;\n *   set_internal: (name: string, value: string, opts: import('./page/types.js').Cookie['options']) => void;\n * }} opts\n * @returns {typeof fetch}\n */\nexport function create_fetch({ event, state, get_cookie_header, set_internal }) {\n\t/**\n\t * @type {typeof fetch}\n\t */\n\tconst server_fetch = async (info, init) => {\n\t\tconst original_request = normalize_fetch_input(info, init, event.url);\n\n\t\t// some runtimes (e.g. Cloudflare) error if you access `request.mode`,\n\t\t// annoyingly, so we need to read the value from the `init` object instead\n\t\tlet mode = (info instanceof Request ? info.mode : init?.mode) ?? 'cors';\n\t\tlet credentials =\n\t\t\t(info instanceof Request ? info.credentials : init?.credentials) ?? 'same-origin';\n\n\t\treturn hooks.handleFetch({\n\t\t\tevent,\n\t\t\trequest: original_request,\n\t\t\tfetch: async (info, init) => {\n\t\t\t\tconst request = normalize_fetch_input(info, init, event.url);\n\n\t\t\t\tconst url = new URL(request.url);\n\n\t\t\t\tif (!request.headers.has('origin')) {\n\t\t\t\t\trequest.headers.set('origin', event.url.origin);\n\t\t\t\t}\n\n\t\t\t\tif (info !== original_request) {\n\t\t\t\t\tmode = (info instanceof Request ? info.mode : init?.mode) ?? 'cors';\n\t\t\t\t\tcredentials =\n\t\t\t\t\t\t(info instanceof Request ? info.credentials : init?.credentials) ?? 'same-origin';\n\t\t\t\t}\n\n\t\t\t\t// Remove Origin, according to https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin#description\n\t\t\t\tif (\n\t\t\t\t\t(request.method === 'GET' || request.method === 'HEAD') &&\n\t\t\t\t\t((mode === 'no-cors' && url.origin !== event.url.origin) ||\n\t\t\t\t\t\turl.origin === event.url.origin)\n\t\t\t\t) {\n\t\t\t\t\trequest.headers.delete('origin');\n\t\t\t\t}\n\n\t\t\t\tconst decoded = decodeURIComponent(url.pathname);\n\n\t\t\t\tif (\n\t\t\t\t\turl.origin !== event.url.origin ||\n\t\t\t\t\t(paths.base && decoded !== paths.base && !decoded.startsWith(`${paths.base}/`))\n\t\t\t\t) {\n\t\t\t\t\t// Allow cookie passthrough for \"credentials: same-origin\" and \"credentials: include\"\n\t\t\t\t\t// if SvelteKit is serving my.domain.com:\n\t\t\t\t\t// -        domain.com WILL NOT receive cookies\n\t\t\t\t\t// -     my.domain.com WILL receive cookies\n\t\t\t\t\t// -    api.domain.dom WILL NOT receive cookies\n\t\t\t\t\t// - sub.my.domain.com WILL receive cookies\n\t\t\t\t\t// ports do not affect the resolution\n\t\t\t\t\t// leading dot prevents mydomain.com matching domain.com\n\t\t\t\t\t// Do not forward other cookies for \"credentials: include\" because we don't know\n\t\t\t\t\t// which cookie belongs to which domain (browser does not pass this info)\n\t\t\t\t\tif (`.${url.hostname}`.endsWith(`.${event.url.hostname}`) && credentials !== 'omit') {\n\t\t\t\t\t\tconst cookie = get_cookie_header(url, request.headers.get('cookie'));\n\t\t\t\t\t\tif (cookie) request.headers.set('cookie', cookie);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fetch(request);\n\t\t\t\t}\n\n\t\t\t\t// handle fetch requests for static assets. e.g. prebaked data, etc.\n\t\t\t\t// we need to support everything the browser's fetch supports\n\t\t\t\tconst filename = (\n\t\t\t\t\tdecoded.startsWith(paths.assets) ? decoded.slice(paths.assets.length) : decoded\n\t\t\t\t).slice(1);\n\t\t\t\tconst filename_html = `${filename}/index.html`; // path may also match path/index.html\n\n\t\t\t\tconst is_asset = manifest.assets.has(filename) || filename in manifest.server_assets;\n\t\t\t\tconst is_asset_html =\n\t\t\t\t\tmanifest.assets.has(filename_html) || filename_html in manifest.server_assets;\n\n\t\t\t\tif (is_asset || is_asset_html) {\n\t\t\t\t\tconst file = is_asset ? filename : filename_html;\n\n\t\t\t\t\tif (state.read) {\n\t\t\t\t\t\tconst type = is_asset\n\t\t\t\t\t\t\t? manifest.mime_types[filename.slice(filename.lastIndexOf('.'))]\n\t\t\t\t\t\t\t: 'text/html';\n\n\t\t\t\t\t\treturn new Response(state.read(file), {\n\t\t\t\t\t\t\theaders: type ? { 'content-type': type } : {}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (read_implementation && file in manifest.server_assets) {\n\t\t\t\t\t\tconst length = manifest.server_assets[file];\n\t\t\t\t\t\tconst type = manifest.mime_types[file.slice(file.lastIndexOf('.'))];\n\n\t\t\t\t\t\treturn new Response(read_implementation(file), {\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t'Content-Length': '' + length,\n\t\t\t\t\t\t\t\t'Content-Type': type\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// A spoofed request origin must not be able to redirect us to an internal resource.\n\t\t\t\t\treturn await fetch(request, { redirect: 'manual' });\n\t\t\t\t}\n\n\t\t\t\tif (has_prerendered_path(decoded)) {\n\t\t\t\t\t// The path of something prerendered could match a different route\n\t\t\t\t\t// that is still in the manifest, leading to the wrong route being loaded.\n\t\t\t\t\t// We therefore bail early here. The prerendered logic is different for\n\t\t\t\t\t// each adapter, (except maybe for prerendered redirects)\n\t\t\t\t\t// so we need to make an actual HTTP request.\n\t\t\t\t\treturn await fetch(request, { redirect: 'manual' });\n\t\t\t\t}\n\n\t\t\t\tif (credentials !== 'omit') {\n\t\t\t\t\tconst cookie = get_cookie_header(url, request.headers.get('cookie'));\n\t\t\t\t\tif (cookie) {\n\t\t\t\t\t\trequest.headers.set('cookie', cookie);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst authorization = event.request.headers.get('authorization');\n\t\t\t\t\tif (authorization && !request.headers.has('authorization')) {\n\t\t\t\t\t\trequest.headers.set('authorization', authorization);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!request.headers.has('accept')) {\n\t\t\t\t\trequest.headers.set('accept', '*/*');\n\t\t\t\t}\n\n\t\t\t\tconst accept_language = event.request.headers.get('accept-language');\n\t\t\t\tif (accept_language && !request.headers.has('accept-language')) {\n\t\t\t\t\trequest.headers.set('accept-language', accept_language);\n\t\t\t\t}\n\n\t\t\t\tconst response = await internal_fetch(request, state);\n\n\t\t\t\tfor (const str of response.headers.getSetCookie()) {\n\t\t\t\t\tconst { name, value, ...cookie_options } = parseSetCookie(str, { decode: (v) => v });\n\n\t\t\t\t\tconst path =\n\t\t\t\t\t\tcookie_options.path ?? (url.pathname.split('/').slice(0, -1).join('/') || '/');\n\n\t\t\t\t\t// sameSite is string, something more specific is required - type cast is safe\n\t\t\t\t\tset_internal(name, /** @type {string} */ (value), {\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tencode: (value) => value,\n\t\t\t\t\t\t.../** @type {import('cookie').SerializeOptions} */ (cookie_options)\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn response;\n\t\t\t}\n\t\t});\n\t};\n\n\t// Don't make this function `async`! Otherwise, the user has to `catch` promises they use for streaming responses or else\n\t// it will be an unhandled rejection. Instead, we add a `.catch(noop)` ourselves below to prevent this from happening.\n\treturn (input, init) => {\n\t\t// See docs in fetch.js for why we need to do this\n\t\tconst response = server_fetch(input, init);\n\t\tresponse.catch(noop);\n\t\treturn response;\n\t};\n}\n\n/**\n * @param {RequestInfo | URL} info\n * @param {RequestInit | undefined} init\n * @param {URL} url\n */\nfunction normalize_fetch_input(info, init, url) {\n\tif (info instanceof Request) {\n\t\treturn info;\n\t}\n\n\treturn new Request(typeof info === 'string' ? new URL(info, url) : info, init);\n}\n\n/**\n * @param {Request} request\n * @param {import('types').RequestState} state\n * @returns {Promise<Response>}\n */\nasync function internal_fetch(request, state) {\n\tif (request.signal?.aborted) {\n\t\tthrow new DOMException('The operation was aborted.', 'AbortError');\n\t}\n\n\tconst subrequest_state = fork_state_for_subrequest(state);\n\n\tif (!request.signal) {\n\t\treturn await respond(request, subrequest_state);\n\t}\n\n\tlet remove_abort_listener = noop;\n\t/** @type {Promise<never>} */\n\tconst abort_promise = new Promise((_, reject) => {\n\t\tconst on_abort = () => {\n\t\t\treject(new DOMException('The operation was aborted.', 'AbortError'));\n\t\t};\n\t\trequest.signal.addEventListener('abort', on_abort, { once: true });\n\t\tremove_abort_listener = () => request.signal.removeEventListener('abort', on_abort);\n\t});\n\n\treturn Promise.race([respond(request, subrequest_state), abort_promise]).finally(\n\t\tremove_abort_listener\n\t);\n}\n","import * as devalue from 'devalue';\nimport { rendered_env } from '<sveltekit:generated>/env/config.js';\n\n/** @type {string} */\nlet payload;\n\n/** @type {string} */\nlet etag;\n\n/** @type {Headers} */\nlet headers;\n\n/**\n * @param {Request} request\n * @returns {Response}\n */\nexport function get_public_env(request) {\n\tconst env = rendered_env;\n\n\tpayload ??= devalue.uneval(env);\n\tetag ??= `W/${Date.now()}`;\n\theaders ??= new Headers({\n\t\t'content-type': 'application/javascript; charset=utf-8',\n\t\tetag\n\t});\n\n\tif (request.headers.get('if-none-match') === etag) {\n\t\treturn new Response(undefined, { status: 304, headers });\n\t}\n\n\treturn new Response(`export const env=${payload}`, { headers });\n}\n","import * as w from '../../messages/server-warnings.js';\n\n/** @type {Set<string>} */\nconst VALID_CACHE_CONTROL_DIRECTIVES = new Set([\n\t'max-age',\n\t'public',\n\t'private',\n\t'no-cache',\n\t'no-store',\n\t'must-revalidate',\n\t'proxy-revalidate',\n\t's-maxage',\n\t'immutable',\n\t'stale-while-revalidate',\n\t'stale-if-error',\n\t'no-transform',\n\t'only-if-cached',\n\t'max-stale',\n\t'min-fresh'\n]);\n\nconst CONTENT_TYPE_PATTERN =\n\t/^(application|audio|example|font|haptics|image|message|model|multipart|text|video|x-[a-z]+)\\/[-+.\\w]+$/i;\n\n/** @type {Record<string, (value: string) => void>} */\nconst HEADER_VALIDATORS = {\n\t'cache-control': (value) => {\n\t\tconst parts = value.split(',').map((part) => part.trim());\n\t\tif (parts.some((part) => !part)) {\n\t\t\tw.cache_control_empty_directive({ value });\n\t\t\treturn;\n\t\t}\n\n\t\tconst directives = parts.map((part) => part.split('=')[0].toLowerCase());\n\t\tconst invalid = directives.find((directive) => !VALID_CACHE_CONTROL_DIRECTIVES.has(directive));\n\t\tif (invalid) {\n\t\t\tw.cache_control_invalid_directive({\n\t\t\t\tdirective: invalid,\n\t\t\t\tdirectives: [...VALID_CACHE_CONTROL_DIRECTIVES].join(', '),\n\t\t\t\tvalue\n\t\t\t});\n\t\t}\n\t},\n\n\t'content-type': (value) => {\n\t\tconst type = value.split(';')[0].trim();\n\t\tif (!CONTENT_TYPE_PATTERN.test(type)) {\n\t\t\tw.content_type_invalid({ type, value });\n\t\t}\n\t}\n};\n\n/**\n * Warns about header values that browsers and CDNs are likely to ignore or misinterpret\n * @param {Record<string, string>} headers\n */\nexport function validateHeaders(headers) {\n\tfor (const [key, value] of Object.entries(headers)) {\n\t\tHEADER_VALIDATORS[key.toLowerCase()]?.(value);\n\t}\n}\n","/** @import { SSRNode } from 'types' */\nimport { DEV } from 'esm-env';\nimport { text } from '@sveltejs/kit';\nimport { Redirect, SvelteKitError } from '@sveltejs/kit/internal';\nimport {\n\tmerge_tracing,\n\totel,\n\trecord_span,\n\twith_request_store\n} from '@sveltejs/kit/internal/server';\nimport { base, app_dir } from '#app/paths';\nimport { is_endpoint_request, render_endpoint } from './endpoint.js';\nimport { render_page } from './page/index.js';\nimport { render_response } from './page/render.js';\nimport { get_self_origin, is_csrf_forbidden, is_remote_forbidden } from './csrf.js';\nimport { has_prerendered_path, method_not_allowed, redirect_response } from './utils.js';\nimport {\n\tdecode_pathname,\n\tdisable_search,\n\tnormalize_path,\n\trelative_pathname\n} from '../../utils/url.js';\nimport { find_route } from '../../utils/routing.js';\nimport { redirect_json_response, render_data } from './data/index.js';\nimport { add_cookies_to_headers, get_cookies } from './cookie.js';\nimport { create_fetch } from './fetch.js';\nimport { PageNodes } from '../../utils/page_nodes.js';\nimport { validate_server_exports } from '../../utils/exports.js';\nimport { action_json_redirect, is_action_json_request } from './page/actions.js';\nimport { INVALIDATED_PARAM, TRAILING_SLASH_PARAM } from '../shared.js';\nimport { get_public_env } from './env_module.js';\nimport { resolve_route, resolve_route_by_id } from './page/server_routing.js';\nimport { validateHeaders } from './validate-headers.js';\nimport {\n\tadd_data_suffix,\n\tadd_resolution_suffix,\n\textract_route_id,\n\thas_data_suffix,\n\thas_resolution_suffix,\n\tis_route_id_resolution_path,\n\tstrip_data_suffix,\n\tstrip_resolution_suffix\n} from '../pathname.js';\nimport { server_data_serializer } from './page/data_serializer.js';\nimport { get_remote_id, handle_remote_call } from './remote-functions.js';\nimport { hooks, manifest } from './internal.js';\nimport { options } from '<sveltekit:generated>/server.js';\nimport { respond_with_error, handle_fatal_error } from './page/respond_with_error.js';\nimport * as e from '../../messages/server-errors.js';\n\n/** @type {import('types').RequiredResolveOptions['transformPageChunk']} */\nconst default_transform = ({ html }) => html;\n\n/** @type {import('types').RequiredResolveOptions['filterSerializedResponseHeaders']} */\nconst default_filter = () => false;\n\n/** @type {import('types').RequiredResolveOptions['preload']} */\nconst default_preload = ({ type }) => type === 'js' || type === 'css';\n\n// `Sec-Fetch-Dest` values for subresource requests that can never render an HTML error page\n// https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Sec-Fetch-Dest\nconst non_html_fetch_destinations = new Set([\n\t'audio',\n\t'audioworklet',\n\t'font',\n\t'image',\n\t'json',\n\t'manifest',\n\t'paintworklet',\n\t'report',\n\t'script',\n\t'serviceworker',\n\t'sharedworker',\n\t'style',\n\t'track',\n\t'video',\n\t'webidentity',\n\t'worker',\n\t'xslt'\n]);\n\nconst page_methods = new Set(['GET', 'HEAD', 'POST']);\n\nconst allowed_page_methods = new Set(['GET', 'HEAD', 'OPTIONS']);\n\nexport const respond = propagate_context(internal_respond);\n\n/**\n * @param {Request} request\n * @param {import('types').RequestState} state\n * @returns {Promise<Response>}\n */\nexport async function internal_respond(request, state) {\n\t/** URL but stripped from the potential `/__data.json` suffix and its search param  */\n\tconst url = new URL(request.url);\n\n\tconst is_route_resolution_request = has_resolution_suffix(url.pathname);\n\tconst is_data_request = has_data_suffix(url.pathname);\n\tconst remote_id = get_remote_id(url);\n\n\tif (!__SVELTEKIT_DEV__) {\n\t\tconst request_origin = request.headers.get('origin');\n\t\tconst self_origin = get_self_origin(__SVELTEKIT_PATHS_ORIGIN__, url.origin);\n\n\t\tif (remote_id) {\n\t\t\tif (\n\t\t\t\tis_remote_forbidden({\n\t\t\t\t\trequest,\n\t\t\t\t\trequest_origin,\n\t\t\t\t\tself_origin\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\tconst message = 'Cross-site remote requests are forbidden';\n\t\t\t\treturn Response.json({ message }, { status: 403 });\n\t\t\t}\n\t\t} else if (__SVELTEKIT_CSRF_CHECK_ORIGIN__) {\n\t\t\tconst forbidden = is_csrf_forbidden({\n\t\t\t\trequest,\n\t\t\t\trequest_origin,\n\t\t\t\tself_origin,\n\t\t\t\ttrusted_origins: options.csrf_trusted_origins\n\t\t\t});\n\n\t\t\tif (forbidden) {\n\t\t\t\tconst message = `Cross-site ${request.method} form submissions are forbidden`;\n\t\t\t\tconst opts = { status: 403 };\n\n\t\t\t\tif (request.headers.get('accept') === 'application/json') {\n\t\t\t\t\treturn Response.json({ message }, opts);\n\t\t\t\t}\n\n\t\t\t\treturn text(message, opts);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (__SVELTEKIT_HASH_ROUTING__ && url.pathname !== base + '/' && url.pathname !== '/[fallback]') {\n\t\treturn text('Not found', { status: 404 });\n\t}\n\n\t/** @type {boolean[] | undefined} */\n\tlet invalidated_data_nodes;\n\n\tlet skip_route_resolution = false;\n\n\t/** Whether this is a `/${app_dir}/routes/<route_id>/__route.js` request, used by `preloadCode` */\n\tlet is_route_id_resolution_request = false;\n\n\tif (is_route_resolution_request) {\n\t\t/**\n\t\t * If the request is for a route resolution, first modify the URL, then continue as normal\n\t\t * for path resolution, then return the route object as a JS file.\n\t\t */\n\t\turl.pathname = strip_resolution_suffix(url.pathname);\n\t\tis_route_id_resolution_request = is_route_id_resolution_path(url.pathname);\n\t} else if (is_data_request) {\n\t\turl.pathname =\n\t\t\tstrip_data_suffix(url.pathname) +\n\t\t\t\t(url.searchParams.get(TRAILING_SLASH_PARAM) === '1' ? '/' : '') || '/';\n\t\turl.searchParams.delete(TRAILING_SLASH_PARAM);\n\t\tinvalidated_data_nodes = url.searchParams\n\t\t\t.get(INVALIDATED_PARAM)\n\t\t\t?.split('')\n\t\t\t.map((node) => node === '1');\n\t\turl.searchParams.delete(INVALIDATED_PARAM);\n\t} else if (remote_id) {\n\t\t// query clients don't send these headers, leaving `event.url` as the endpoint URL\n\t\tconst pathname = request.headers.get('x-sveltekit-pathname');\n\n\t\tif (pathname === null) {\n\t\t\tskip_route_resolution = true;\n\t\t} else {\n\t\t\turl.pathname = pathname;\n\t\t\turl.search = request.headers.get('x-sveltekit-search') ?? '';\n\t\t}\n\t}\n\n\tfor (const key of url.searchParams.keys()) {\n\t\tif (key.startsWith('x-sveltekit-')) {\n\t\t\treturn text(`Cannot use reserved query parameter \"${key}\"`, { status: 400 });\n\t\t}\n\t}\n\n\t/** @type {Record<string, string>} */\n\tconst headers = {};\n\n\tconst { cookies, new_cookies, get_cookie_header, set_internal, set_trailing_slash } = get_cookies(\n\t\trequest,\n\t\turl\n\t);\n\n\t/** @type {import('@sveltejs/kit').RequestEvent} */\n\tconst event = {\n\t\tcookies,\n\t\t// @ts-expect-error `fetch` needs to be created after the `event` itself\n\t\tfetch: null,\n\t\tgetClientAddress:\n\t\t\tstate.getClientAddress ||\n\t\t\t(() => {\n\t\t\t\te.client_address_unsupported({ adapter: __SVELTEKIT_ADAPTER_NAME__ });\n\t\t\t}),\n\t\tlocals: {},\n\t\tparams: {},\n\t\tplatform: state.emulator?.platform\n\t\t\t? await state.emulator.platform({\n\t\t\t\t\tconfig: {},\n\t\t\t\t\tprerender: !!state.prerendering?.fallback\n\t\t\t\t})\n\t\t\t: state.platform,\n\t\trequest,\n\t\troute: { id: null },\n\t\tsetHeaders: (new_headers) => {\n\t\t\tif (DEV) {\n\t\t\t\tvalidateHeaders(new_headers);\n\t\t\t}\n\n\t\t\tfor (const key in new_headers) {\n\t\t\t\tconst lower = key.toLowerCase();\n\t\t\t\tconst value = new_headers[key];\n\n\t\t\t\tif (lower === 'set-cookie') {\n\t\t\t\t\te.set_headers_cookie();\n\t\t\t\t} else if (lower in headers) {\n\t\t\t\t\t// appendHeaders-style for Server-Timing https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Server-Timing\n\t\t\t\t\tif (lower === 'server-timing') {\n\t\t\t\t\t\theaders[lower] += ', ' + value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.header_already_set({ name: key });\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\theaders[lower] = value;\n\n\t\t\t\t\tif (state.prerendering && lower === 'cache-control') {\n\t\t\t\t\t\tstate.prerendering.cache = /** @type {string} */ (value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\turl,\n\t\tisDataRequest: is_data_request,\n\t\tisSubRequest: state.depth > 0,\n\t\tisRemoteRequest: !!remote_id\n\t};\n\n\t// @ts-expect-error this has to be assigned lazily\n\tevent.fetch = create_fetch({\n\t\tevent,\n\t\tstate,\n\t\tget_cookie_header,\n\t\tset_internal\n\t});\n\n\t/** @type {string | null} */\n\tlet resolved_path = url.pathname;\n\n\t// `reroute` hooks receive pathnames, so they must not run for route-ID resolution requests\n\tif (!remote_id && !is_route_id_resolution_request) {\n\t\tconst prerendering_reroute_state = state.prerendering?.inside_reroute;\n\t\ttry {\n\t\t\t// For the duration or a reroute, disable the prerendering state as reroute could call API endpoints\n\t\t\t// which would end up in the wrong logic path if not disabled.\n\t\t\tif (state.prerendering) state.prerendering.inside_reroute = true;\n\n\t\t\t// reroute could alter the given URL, so we pass a copy\n\t\t\tresolved_path =\n\t\t\t\t(await hooks.reroute({ url: new URL(url), fetch: event.fetch })) ?? url.pathname;\n\n\t\t\tif (!manifest.routes.length && resolved_path !== url.pathname) {\n\t\t\t\tstate.rerouted_url = denormalise_url({\n\t\t\t\t\trequest_url: request.url,\n\t\t\t\t\tresolved_path,\n\t\t\t\t\tis_data_request,\n\t\t\t\t\tis_route_resolution_request\n\t\t\t\t}).toString();\n\t\t\t}\n\t\t} catch {\n\t\t\treturn text('Internal Server Error', {\n\t\t\t\tstatus: 500\n\t\t\t});\n\t\t} finally {\n\t\t\tif (state.prerendering) state.prerendering.inside_reroute = prerendering_reroute_state;\n\t\t}\n\t}\n\n\t/** @type {import('types').RequiredResolveOptions} */\n\tlet resolve_opts = {\n\t\ttransformPageChunk: default_transform,\n\t\tfilterSerializedResponseHeaders: default_filter,\n\t\tpreload: default_preload\n\t};\n\n\t/** @type {import('types').TrailingSlash} */\n\tlet trailing_slash = 'never';\n\n\t/** @type {PageNodes | undefined} */\n\tlet page_nodes;\n\n\ttry {\n\t\tresolved_path = decode_pathname(resolved_path);\n\t} catch {\n\t\tresolved_path = null;\n\t\treturn await handle();\n\t}\n\n\t// try to serve the rerouted prerendered resource if it exists\n\tif (\n\t\t// the resolved path has been decoded so it should be compared to the decoded url pathname\n\t\tresolved_path !== decode_pathname(url.pathname) &&\n\t\t!state.prerendering?.fallback &&\n\t\thas_prerendered_path(resolved_path)\n\t) {\n\t\tconst url = denormalise_url({\n\t\t\trequest_url: request.url,\n\t\t\tresolved_path,\n\t\t\tis_data_request,\n\t\t\tis_route_resolution_request\n\t\t});\n\n\t\ttry {\n\t\t\t// A spoofed request origin must not be able to redirect us to an internal resource.\n\t\t\tconst response = await fetch(new Request(url, request), { redirect: 'manual' });\n\n\t\t\t// `fetch` automatically decodes the body, so we need to delete the related headers to not break the response\n\t\t\t// Also see https://github.com/sveltejs/kit/issues/12197 for more info (we should fix this more generally at some point)\n\t\t\tconst headers = new Headers(response.headers);\n\t\t\tif (headers.has('content-encoding')) {\n\t\t\t\theaders.delete('content-encoding');\n\t\t\t\theaders.delete('content-length');\n\t\t\t}\n\n\t\t\treturn new Response(response.body, {\n\t\t\t\theaders,\n\t\t\t\tstatus: response.status,\n\t\t\t\tstatusText: response.statusText\n\t\t\t});\n\t\t} catch (error) {\n\t\t\treturn await handle_fatal_error(event, state, error);\n\t\t}\n\t}\n\n\t/** @type {import('types').SSRRoute | null} */\n\tlet route = null;\n\n\tif (base && !state.prerendering?.fallback) {\n\t\tif (!resolved_path.startsWith(base)) {\n\t\t\treturn text('Not found', { status: 404 });\n\t\t}\n\t\tresolved_path = resolved_path.slice(base.length) || '/';\n\t}\n\n\tif (is_route_resolution_request) {\n\t\tif (is_route_id_resolution_request) {\n\t\t\treturn resolve_route_by_id(extract_route_id(resolved_path), new URL(request.url));\n\t\t}\n\n\t\treturn resolve_route(resolved_path, new URL(request.url));\n\t}\n\n\tif (resolved_path === `/${app_dir}/env.js`) {\n\t\treturn get_public_env(request);\n\t}\n\n\tif (!remote_id && resolved_path.startsWith(`/${app_dir}`)) {\n\t\t// Ensure that 404'd static assets are not cached - some adapters might apply caching by default\n\t\tconst headers = new Headers();\n\t\theaders.set('cache-control', 'public, max-age=0, must-revalidate');\n\t\treturn text('Not found', { status: 404, headers });\n\t}\n\n\tif (!state.prerendering?.fallback && !skip_route_resolution) {\n\t\ttry {\n\t\t\tconst matchers = await manifest.matchers();\n\t\t\tconst result = find_route(resolved_path, manifest.routes, matchers);\n\n\t\t\tif (result) {\n\t\t\t\troute = result.route;\n\t\t\t\t// @ts-expect-error this has to be assigned lazily\n\t\t\t\tevent.route = { id: route.id };\n\t\t\t\t// @ts-expect-error this has to be assigned lazily\n\t\t\t\tevent.params = result.params;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn await handle_fatal_error(event, state, e);\n\t\t}\n\t}\n\n\ttry {\n\t\tpage_nodes = route?.page ? new PageNodes(await load_page_nodes(route.page)) : undefined;\n\n\t\t// determine whether we need to redirect to add/remove a trailing slash\n\t\tif (route && !remote_id) {\n\t\t\t// if `paths.base === '/a/b/c`, then the root route is `/a/b/c/`,\n\t\t\t// regardless of the `trailingSlash` route option\n\t\t\tif (url.pathname === base || url.pathname === base + '/') {\n\t\t\t\ttrailing_slash = 'always';\n\t\t\t} else if (page_nodes) {\n\t\t\t\tif (DEV) {\n\t\t\t\t\tpage_nodes.validate();\n\t\t\t\t}\n\t\t\t\ttrailing_slash = page_nodes.trailing_slash();\n\t\t\t} else if (route.endpoint) {\n\t\t\t\tconst node = await route.endpoint();\n\t\t\t\ttrailing_slash = node.trailingSlash ?? 'never';\n\t\t\t\tif (DEV) {\n\t\t\t\t\tvalidate_server_exports(node, /** @type {string} */ (route.endpoint_id));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!is_data_request) {\n\t\t\t\tconst normalized = normalize_path(url.pathname, trailing_slash);\n\n\t\t\t\tif (normalized !== url.pathname && !state.prerendering?.fallback) {\n\t\t\t\t\treturn new Response(undefined, {\n\t\t\t\t\t\tstatus: 308,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'x-sveltekit-normalize': '1',\n\t\t\t\t\t\t\t// relative so (possibly invisible) path prefixes are preserved\n\t\t\t\t\t\t\tlocation:\n\t\t\t\t\t\t\t\trelative_pathname(url.pathname, normalized) + (url.search === '?' ? '' : url.search)\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (state.before_handle || state.emulator?.platform) {\n\t\t\t\tlet config = {};\n\n\t\t\t\t/** @type {import('types').PrerenderOption} */\n\t\t\t\tlet prerender = false;\n\n\t\t\t\tif (route.endpoint) {\n\t\t\t\t\tconst node = await route.endpoint();\n\t\t\t\t\tconfig = node.config ?? config;\n\t\t\t\t\tprerender = node.prerender ?? prerender;\n\t\t\t\t} else if (page_nodes) {\n\t\t\t\t\tconfig = page_nodes.get_config() ?? config;\n\t\t\t\t\tprerender = state.prerender_default = page_nodes.prerender();\n\t\t\t\t}\n\n\t\t\t\tif (state.emulator?.platform) {\n\t\t\t\t\t// @ts-expect-error this has to be assigned lazily\n\t\t\t\t\tevent.platform = await state.emulator.platform({ config, prerender });\n\t\t\t\t}\n\n\t\t\t\tif (state.before_handle) {\n\t\t\t\t\treturn await state.before_handle(event, config, prerender, handle);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn await handle();\n\t} catch (e) {\n\t\tif (e instanceof Redirect) {\n\t\t\ttry {\n\t\t\t\tconst response =\n\t\t\t\t\tis_data_request || remote_id\n\t\t\t\t\t\t? redirect_json_response(e)\n\t\t\t\t\t\t: route?.page && is_action_json_request(event)\n\t\t\t\t\t\t\t? action_json_redirect(e)\n\t\t\t\t\t\t\t: redirect_response(e.status, e.location);\n\t\t\t\tadd_cookies_to_headers(response.headers, new_cookies.values());\n\t\t\t\treturn response;\n\t\t\t} catch (err) {\n\t\t\t\treturn await handle_fatal_error(event, state, err);\n\t\t\t}\n\t\t}\n\t\treturn await handle_fatal_error(event, state, e);\n\t}\n\n\tasync function handle() {\n\t\tset_trailing_slash(trailing_slash);\n\n\t\tif (state.prerendering && !state.prerendering.fallback && !state.prerendering.inside_reroute) {\n\t\t\tdisable_search(url);\n\t\t}\n\n\t\tconst response = await record_span({\n\t\t\tname: 'sveltekit.handle.root',\n\t\t\tattributes: {\n\t\t\t\t'http.route': event.route.id || 'unknown',\n\t\t\t\t'http.method': event.request.method,\n\t\t\t\t'http.url': event.url.href,\n\t\t\t\t'sveltekit.is_data_request': is_data_request,\n\t\t\t\t'sveltekit.is_sub_request': event.isSubRequest\n\t\t\t},\n\t\t\tfn: async (root_span) => {\n\t\t\t\tconst traced_event = {\n\t\t\t\t\t...event,\n\t\t\t\t\ttracing: {\n\t\t\t\t\t\tenabled: __SVELTEKIT_SERVER_TRACING_ENABLED__,\n\t\t\t\t\t\troot: root_span,\n\t\t\t\t\t\tcurrent: root_span\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn await with_request_store({ event: traced_event, state }, () =>\n\t\t\t\t\thooks.handle({\n\t\t\t\t\t\tevent: traced_event,\n\t\t\t\t\t\tresolve: (event, opts) => {\n\t\t\t\t\t\t\treturn record_span({\n\t\t\t\t\t\t\t\tname: 'sveltekit.resolve',\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t'http.route': event.route.id || 'unknown'\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tfn: (resolve_span) => {\n\t\t\t\t\t\t\t\t\t// counter-intuitively, we need to clear the event, so that it's not\n\t\t\t\t\t\t\t\t\t// e.g. accessible when loading modules needed to handle the request\n\t\t\t\t\t\t\t\t\treturn with_request_store(null, () =>\n\t\t\t\t\t\t\t\t\t\tresolve(merge_tracing(event, resolve_span), page_nodes, opts).then(\n\t\t\t\t\t\t\t\t\t\t\t(response) => {\n\t\t\t\t\t\t\t\t\t\t\t\t// add headers/cookies here, rather than inside `resolve`, so that we\n\t\t\t\t\t\t\t\t\t\t\t\t// can do it once for all responses instead of once per `return`\n\t\t\t\t\t\t\t\t\t\t\t\tfor (const key in headers) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst value = headers[key];\n\t\t\t\t\t\t\t\t\t\t\t\t\tresponse.headers.set(key, /** @type {string} */ (value));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tadd_cookies_to_headers(response.headers, new_cookies.values());\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (state.prerendering && event.route.id !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresponse.headers.set('x-sveltekit-routeid', encodeURI(event.route.id));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tresolve_span.setAttributes({\n\t\t\t\t\t\t\t\t\t\t\t\t\t'http.response.status_code': response.status,\n\t\t\t\t\t\t\t\t\t\t\t\t\t'http.response.body.size':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresponse.headers.get('content-length') || 'unknown'\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\t\treturn response;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\t// respond with 304 if etag matches\n\t\tif (response.status === 200 && response.headers.has('etag')) {\n\t\t\tlet if_none_match_value = request.headers.get('if-none-match');\n\n\t\t\t// ignore W/ prefix https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match#directives\n\t\t\tif (if_none_match_value?.startsWith('W/\"')) {\n\t\t\t\tif_none_match_value = if_none_match_value.substring(2);\n\t\t\t}\n\n\t\t\tconst etag = /** @type {string} */ (response.headers.get('etag'));\n\n\t\t\tif (if_none_match_value === etag) {\n\t\t\t\tconst headers = new Headers({ etag });\n\n\t\t\t\t// https://datatracker.ietf.org/doc/html/rfc7232#section-4.1\n\t\t\t\tfor (const key of ['cache-control', 'content-location', 'date', 'expires', 'vary']) {\n\t\t\t\t\tconst value = response.headers.get(key);\n\t\t\t\t\tif (value) headers.set(key, value);\n\t\t\t\t}\n\n\t\t\t\tfor (const cookie of response.headers.getSetCookie()) {\n\t\t\t\t\theaders.append('set-cookie', cookie);\n\t\t\t\t}\n\n\t\t\t\treturn new Response(undefined, {\n\t\t\t\t\tstatus: 304,\n\t\t\t\t\theaders\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Edge case: If user does `return Response(30x)` in handle hook while processing a data request,\n\t\t// we need to transform the redirect response to a corresponding JSON response.\n\t\tif (is_data_request && response.status >= 300 && response.status <= 308) {\n\t\t\tconst location = response.headers.get('location');\n\t\t\tif (location) {\n\t\t\t\treturn redirect_json_response(new Redirect(/** @type {any} */ (response.status), location));\n\t\t\t}\n\t\t}\n\n\t\treturn response;\n\t}\n\n\t/**\n\t * @param {import('@sveltejs/kit').RequestEvent} event\n\t * @param {PageNodes | undefined} page_nodes\n\t * @param {import('@sveltejs/kit/hooks').ResolveOptions} [opts]\n\t */\n\tasync function resolve(event, page_nodes, opts) {\n\t\ttry {\n\t\t\tif (opts) {\n\t\t\t\tresolve_opts = {\n\t\t\t\t\ttransformPageChunk: opts.transformPageChunk || default_transform,\n\t\t\t\t\tfilterSerializedResponseHeaders: opts.filterSerializedResponseHeaders || default_filter,\n\t\t\t\t\tpreload: opts.preload || default_preload\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (resolved_path === null) {\n\t\t\t\treturn await respond_with_error({\n\t\t\t\t\tevent,\n\t\t\t\t\tstate,\n\t\t\t\t\terror: new SvelteKitError(\n\t\t\t\t\t\t400,\n\t\t\t\t\t\t'Malformed URI',\n\t\t\t\t\t\t`Failed to decode URI: ${event.url.pathname}`\n\t\t\t\t\t),\n\t\t\t\t\tresolve_opts\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (__SVELTEKIT_HASH_ROUTING__ || state.prerendering?.fallback) {\n\t\t\t\treturn await render_response({\n\t\t\t\t\tevent,\n\t\t\t\t\tstate,\n\t\t\t\t\tpage_config: { ssr: false, csr: true },\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\terror: null,\n\t\t\t\t\tbranch: [\n\t\t\t\t\t\t// include the root layout because it applies to every page\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnode: /** @type {SSRNode} */ (await manifest.nodes[0]()),\n\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t\tserver_data: null\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\tfetched: [],\n\t\t\t\t\tresolve_opts,\n\t\t\t\t\tdata_serializer: server_data_serializer(event, state)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (remote_id) {\n\t\t\t\treturn await handle_remote_call(event, state, remote_id);\n\t\t\t}\n\n\t\t\tif (route) {\n\t\t\t\tconst method = /** @type {import('types').HttpMethod} */ (event.request.method);\n\n\t\t\t\t/** @type {Response} */\n\t\t\t\tlet response;\n\n\t\t\t\tif (is_data_request) {\n\t\t\t\t\tresponse = await render_data(event, state, route, invalidated_data_nodes, trailing_slash);\n\t\t\t\t} else {\n\t\t\t\t\tlet endpoint;\n\t\t\t\t\tif (\n\t\t\t\t\t\troute.endpoint &&\n\t\t\t\t\t\t(!route.page || (!state.prerendering && is_endpoint_request(event)))\n\t\t\t\t\t) {\n\t\t\t\t\t\tendpoint = await route.endpoint();\n\n\t\t\t\t\t\t// Prefer rendering the page if the endpoint can't handle this GET, HEAD, or POST request\n\t\t\t\t\t\tif (route.page && (method === 'GET' || method === 'HEAD' || method === 'POST')) {\n\t\t\t\t\t\t\tconst endpoint_can_handle =\n\t\t\t\t\t\t\t\tmethod === 'POST'\n\t\t\t\t\t\t\t\t\t? !!(endpoint.POST || endpoint.fallback)\n\t\t\t\t\t\t\t\t\t: !!(endpoint.GET || endpoint.fallback || (method === 'HEAD' && endpoint.HEAD));\n\t\t\t\t\t\t\tif (!endpoint_can_handle) {\n\t\t\t\t\t\t\t\tendpoint = undefined;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (endpoint) {\n\t\t\t\t\t\tresponse = await render_endpoint(event, state, endpoint);\n\t\t\t\t\t} else if (route.page) {\n\t\t\t\t\t\tif (!page_nodes) {\n\t\t\t\t\t\t\tthrow new Error('page_nodes not found. This should never happen');\n\t\t\t\t\t\t} else if (page_methods.has(method)) {\n\t\t\t\t\t\t\tresponse = await render_page(event, state, route.page, page_nodes, resolve_opts);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst allowed_methods = new Set(allowed_page_methods);\n\t\t\t\t\t\t\tconst node = await manifest.nodes[route.page.leaf]();\n\t\t\t\t\t\t\tif (node?.server?.actions) {\n\t\t\t\t\t\t\t\tallowed_methods.add('POST');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (method === 'OPTIONS') {\n\t\t\t\t\t\t\t\t// This will deny CORS preflight requests implicitly because we don't\n\t\t\t\t\t\t\t\t// add the required CORS headers to the response.\n\t\t\t\t\t\t\t\tresponse = new Response(null, {\n\t\t\t\t\t\t\t\t\tstatus: 204,\n\t\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t\tallow: Array.from(allowed_methods.values()).join(', ')\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst mod = [...allowed_methods].reduce((acc, curr) => {\n\t\t\t\t\t\t\t\t\tacc[curr] = true;\n\t\t\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t\t\t}, /** @type {Record<string, any>} */ ({}));\n\t\t\t\t\t\t\t\tresponse = method_not_allowed(mod, method);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// a route will always have a page or an endpoint, but TypeScript doesn't know that\n\t\t\t\t\t\tthrow new Error('Route is neither page nor endpoint. This should never happen');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If the route contains a page and an endpoint, we need to add a\n\t\t\t\t// `Vary: Accept` header to the response because of browser caching\n\t\t\t\tif (\n\t\t\t\t\t(request.method === 'GET' || request.method === 'HEAD') &&\n\t\t\t\t\troute.page &&\n\t\t\t\t\troute.endpoint\n\t\t\t\t) {\n\t\t\t\t\tconst vary = response.headers\n\t\t\t\t\t\t.get('vary')\n\t\t\t\t\t\t?.split(',')\n\t\t\t\t\t\t?.map((v) => v.trim().toLowerCase());\n\t\t\t\t\tif (!(vary?.includes('accept') || vary?.includes('*'))) {\n\t\t\t\t\t\t// the returned response might have immutable headers,\n\t\t\t\t\t\t// so we have to clone them before trying to mutate them\n\t\t\t\t\t\tresponse = new Response(response.body, {\n\t\t\t\t\t\t\tstatus: response.status,\n\t\t\t\t\t\t\tstatusText: response.statusText,\n\t\t\t\t\t\t\theaders: new Headers(response.headers)\n\t\t\t\t\t\t});\n\t\t\t\t\t\tresponse.headers.append('Vary', 'Accept');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn response;\n\t\t\t}\n\n\t\t\tif (state.error && event.isSubRequest) {\n\t\t\t\t// avoid overwriting the headers. This could be a same origin fetch request\n\t\t\t\t// to an external service from the root layout while rendering an error page\n\t\t\t\tconst headers = new Headers(request.headers);\n\t\t\t\theaders.set('x-sveltekit-error', 'true');\n\t\t\t\treturn await fetch(request, { headers, redirect: 'manual' });\n\t\t\t}\n\n\t\t\tif (state.error) {\n\t\t\t\treturn text('Internal Server Error', {\n\t\t\t\t\tstatus: 500\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// if this request came direct from the user, rather than\n\t\t\t// via our own `fetch`, render a 404 page\n\t\t\tif (state.depth === 0) {\n\t\t\t\t// Error-page data requests only invalidate the root layout.\n\t\t\t\tif (\n\t\t\t\t\t!state.prerendering &&\n\t\t\t\t\tis_data_request &&\n\t\t\t\t\tinvalidated_data_nodes?.length === 1 &&\n\t\t\t\t\tinvalidated_data_nodes[0]\n\t\t\t\t) {\n\t\t\t\t\treturn await render_data(\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t{ page: { layouts: [], leaf: 0 } },\n\t\t\t\t\t\tinvalidated_data_nodes,\n\t\t\t\t\t\t// there is no route to take a trailing slash option from, and the\n\t\t\t\t\t\t// SSR'd error page sees the pathname as-is\n\t\t\t\t\t\t'ignore'\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (non_html_fetch_destinations.has(event.request.headers.get('sec-fetch-dest') ?? '')) {\n\t\t\t\t\treturn text('Not Found', {\n\t\t\t\t\t\tstatus: 404,\n\t\t\t\t\t\theaders: { vary: 'Sec-Fetch-Dest' }\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn await respond_with_error({\n\t\t\t\t\tevent,\n\t\t\t\t\tstate,\n\t\t\t\t\terror: new SvelteKitError(404, 'Not Found', `Not found: ${event.url.pathname}`),\n\t\t\t\t\tresolve_opts\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (state.prerendering) {\n\t\t\t\treturn text('not found', { status: 404 });\n\t\t\t}\n\n\t\t\t// we can't load the endpoint from our own manifest,\n\t\t\t// so we need to make an actual HTTP request\n\t\t\tconst response = await fetch(request, { redirect: 'manual' });\n\n\t\t\t// clone the response so that headers are mutable (https://github.com/sveltejs/kit/issues/13857)\n\t\t\treturn new Response(response.body, response);\n\t\t} catch (e) {\n\t\t\t// TODO if `e` is instead named `error`, some fucked up Vite transformation happens\n\t\t\t// and I don't even know how to describe it. need to investigate at some point\n\n\t\t\t// HttpError from endpoint can end up here - TODO should it be handled there instead?\n\t\t\treturn await handle_fatal_error(event, state, e);\n\t\t} finally {\n\t\t\tevent.cookies.set = () => {\n\t\t\t\te.cookies_set_after_response();\n\t\t\t};\n\n\t\t\t// @ts-expect-error this has to be assigned lazily\n\t\t\tevent.setHeaders = () => {\n\t\t\t\te.set_headers_after_response();\n\t\t\t};\n\t\t}\n\t}\n}\n\n/**\n * @param {import('types').PageNodeIndexes} page\n */\nexport function load_page_nodes(page) {\n\treturn Promise.all([\n\t\t// we use == here rather than === because [undefined] serializes as \"[null]\"\n\t\t...page.layouts.map((n) => (n == undefined ? n : manifest.nodes[n]())),\n\t\tmanifest.nodes[page.leaf]()\n\t]);\n}\n\n/**\n * It's likely that, in a distributed system, there are spans starting outside the SvelteKit server -- eg.\n * started on the frontend client, or in a service that calls the SvelteKit server. There are standardized\n * ways to represent this context in HTTP headers, so we can extract that context and run our tracing inside of it\n * so that when our traces are exported, they are associated with the correct parent context.\n * @param {typeof internal_respond} fn\n * @returns {typeof internal_respond}\n */\nfunction propagate_context(fn) {\n\treturn async (req, ...rest) => {\n\t\tif (otel === null) {\n\t\t\treturn fn(req, ...rest);\n\t\t}\n\n\t\tconst { propagation, context } = await otel;\n\t\tconst c = propagation.extract(context.active(), Object.fromEntries(req.headers));\n\t\treturn context.with(c, async () => {\n\t\t\treturn await fn(req, ...rest);\n\t\t});\n\t};\n}\n\n/**\n * @param {object} opts\n * @param {string} opts.request_url - The original request URL\n * @param {string} opts.resolved_path - The resolved pathname\n * @param {boolean} opts.is_data_request - Whether the request is a data request\n * @param {boolean} opts.is_route_resolution_request -\n * @returns {URL}\n */\nfunction denormalise_url({\n\trequest_url,\n\tresolved_path,\n\tis_data_request,\n\tis_route_resolution_request\n}) {\n\tconst url = new URL(request_url);\n\turl.pathname = is_data_request\n\t\t? add_data_suffix(resolved_path)\n\t\t: is_route_resolution_request\n\t\t\t? add_resolution_suffix(resolved_path)\n\t\t\t: resolved_path;\n\treturn url;\n}\n","import { noop } from '../../utils/functions.js';\nimport { IN_WEBCONTAINER, REROUTED_URL_HEADER } from '../../constants.js';\nimport { respond as handle } from './respond.js';\nimport { create_request_state } from './state.js';\nimport { get_hooks } from '<sveltekit:generated>/server.js';\nimport { set_hooks, fix_stack_trace } from './internal.js';\nimport { init_tracing } from '@sveltejs/kit/internal/server';\nimport { DEV } from 'esm-env';\nimport { init_transport } from '#app/internal/transport';\nimport { capture_error } from '../../messages/internal/server.js';\nimport * as e from '../../messages/server-errors.js';\n\n/** @type {Promise<any>} */\nlet init_promise;\n\n/**\n * Responses that were created with our monkey-patched `fetch`, which may need\n * to have their `content-encoding` and `content-length` headers removed\n * if returned directly (i.e. `fetch` is being used to proxy a request)\n * @type {WeakMap<Response, Error>}\n */\nconst decoded_responses = new WeakMap();\n\nif (DEV) {\n\tconst fetch = globalThis.fetch;\n\n\t/**\n\t * @param {RequestInfo | URL} info\n\t * @param {RequestInit} [init]\n\t */\n\tglobalThis.fetch = async (info, init) => {\n\t\tconst response = await fetch(info, init);\n\t\tconst encoding = response.headers.get('content-encoding');\n\n\t\tif (encoding) {\n\t\t\tdecoded_responses.set(\n\t\t\t\tresponse,\n\t\t\t\tcapture_error(() => e.fetch_response_decoded({ encoding }))\n\t\t\t);\n\t\t}\n\n\t\treturn response;\n\t};\n}\n\n/**\n * Loads the user's hooks, once, however many times an adapter calls it\n */\nexport async function init() {\n\tif (__SVELTEKIT_SERVER_TRACING_ENABLED__) init_tracing(import('@opentelemetry/api'));\n\n\tawait (init_promise ??= (async () => {\n\t\ttry {\n\t\t\tconst module = await get_hooks();\n\n\t\t\tset_hooks({\n\t\t\t\thandle: module.handle || (({ event, resolve }) => resolve(event)),\n\t\t\t\thandleError:\n\t\t\t\t\tmodule.handleError ||\n\t\t\t\t\t(({ kind, error, issues }) => {\n\t\t\t\t\t\tif (kind === 'validation') {\n\t\t\t\t\t\t\tconsole.error('Remote function schema validation failed:', issues);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (kind !== 'unknown') {\n\t\t\t\t\t\t\t// don't log stack traces for 404s etc, it's all internal gubbins\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet e = error;\n\t\t\t\t\t\twhile (e instanceof Error) {\n\t\t\t\t\t\t\tif (e.stack) {\n\t\t\t\t\t\t\t\tconsole.error(e.stack);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\te = e.cause;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (e) {\n\t\t\t\t\t\t\tconsole.error(String(e));\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\thandleFetch: module.handleFetch || (({ request, fetch }) => fetch(request)),\n\t\t\t\treroute: module.reroute || noop\n\t\t\t});\n\n\t\t\tinit_transport(module.transport ?? {});\n\n\t\t\tif (module.init) {\n\t\t\t\tawait module.init();\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tif (__SVELTEKIT_DEV__) {\n\t\t\t\tset_hooks({\n\t\t\t\t\thandle: () => {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t},\n\t\t\t\t\thandleError: ({ error }) => console.error(error),\n\t\t\t\t\thandleFetch: ({ request, fetch }) => fetch(request),\n\t\t\t\t\treroute: noop\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\t})());\n}\n\n/**\n * @param {Request} request\n * @param {import('types').InternalRequestOptions} options\n */\nasync function respond_to(request, options) {\n\tconst request_state = create_request_state(options);\n\n\tconst response = await handle(request, request_state);\n\n\tif (DEV) {\n\t\tconst error = decoded_responses.get(response);\n\t\tif (error) console.error(fix_stack_trace(error));\n\t}\n\n\tif (request_state.rerouted_url) {\n\t\tresponse.headers.set(REROUTED_URL_HEADER, request_state.rerouted_url);\n\t}\n\n\t// the HTTP layer discards HEAD response bodies, but nothing does when the server is called directly\n\tif (request.method === 'HEAD' && response.body !== null) {\n\t\tresponse.body.cancel().catch(noop);\n\t\treturn new Response(null, response);\n\t}\n\n\treturn response;\n}\n\n/**\n * AsyncLocalStorage does not work in webcontainers, so there `sync_store` is never reset\n * (see `src/exports/internal/server/event.js`) and requests are handled one at a time\n * @param {typeof respond_to} fn\n */\nfunction serialise(fn) {\n\t/** @type {Promise<void> | null} */\n\tlet current = null;\n\n\t/** @type {typeof respond_to} */\n\treturn async (...args) => {\n\t\tconst { promise, resolve } = /** @type {PromiseWithResolvers<void>} */ (\n\t\t\tPromise.withResolvers()\n\t\t);\n\n\t\tconst previous = current;\n\t\tcurrent = promise;\n\n\t\tawait previous;\n\t\treturn fn(...args).finally(resolve);\n\t};\n}\n\nexport const respond = IN_WEBCONTAINER ? serialise(respond_to) : respond_to;\n\nexport { set_env } from '<sveltekit:generated>/env/config.js';\n"],"ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"mappings":"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"}