@absolutejs/absolute 0.20.0-beta.43 → 0.20.0-beta.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/angular/browser.js +378 -361
  2. package/dist/angular/browser.js.map +2 -2
  3. package/dist/angular/components/core/streamingSlotRegistrar.js +7 -7
  4. package/dist/angular/components/core/streamingSlotRegistry.js +4 -4
  5. package/dist/angular/index.js +300 -294
  6. package/dist/angular/index.js.map +2 -2
  7. package/dist/angular/server.js +54 -50
  8. package/dist/angular/server.js.map +2 -2
  9. package/dist/build.js +201 -204
  10. package/dist/build.js.map +3 -3
  11. package/dist/cli/config/client.js +12 -12
  12. package/dist/cli/config/server.js +1096 -1090
  13. package/dist/cli/index.js +1573 -1297
  14. package/dist/client/index.js +29 -25
  15. package/dist/client/index.js.map +2 -2
  16. package/dist/core/streamingSlotRegistrar.js +15 -13
  17. package/dist/core/streamingSlotRegistrar.js.map +2 -2
  18. package/dist/core/streamingSlotRegistry.js +11 -9
  19. package/dist/core/streamingSlotRegistry.js.map +2 -2
  20. package/dist/image-client/imageClient.js +7 -7
  21. package/dist/index.js +810 -733
  22. package/dist/index.js.map +7 -6
  23. package/dist/islands/browser.js +11 -9
  24. package/dist/islands/browser.js.map +2 -2
  25. package/dist/islands/index.js +39 -35
  26. package/dist/islands/index.js.map +2 -2
  27. package/dist/mobile/browser.js +23 -22
  28. package/dist/mobile/browser.js.map +3 -3
  29. package/dist/mobile/index.js +739 -426
  30. package/dist/mobile/index.js.map +11 -11
  31. package/dist/mobile/remoteMacAgentEntry.js +227 -37
  32. package/dist/mobile/shellBootstrap.js +0 -1
  33. package/dist/mobile/shellExpoAuth.js +184 -0
  34. package/dist/mobile/shellExpoDevices.js +4 -5
  35. package/dist/mobile/shellExpoSync.js +104 -0
  36. package/dist/mobile/shellSync.js +4 -4
  37. package/dist/react/browser.js +17 -15
  38. package/dist/react/browser.js.map +2 -2
  39. package/dist/react/components/browser/index.js +107 -107
  40. package/dist/react/components/index.js +118 -116
  41. package/dist/react/components/index.js.map +2 -2
  42. package/dist/react/hooks/index.js +11 -9
  43. package/dist/react/hooks/index.js.map +2 -2
  44. package/dist/react/index.js +53 -49
  45. package/dist/react/index.js.map +2 -2
  46. package/dist/react/jsxDevRuntimeCompat.js +11 -9
  47. package/dist/react/jsxDevRuntimeCompat.js.map +2 -2
  48. package/dist/react/jsxRuntimeCompat.js +11 -9
  49. package/dist/react/jsxRuntimeCompat.js.map +2 -2
  50. package/dist/react/router/browser.js +9 -7
  51. package/dist/react/router/browser.js.map +2 -2
  52. package/dist/react/router/index.js +9 -7
  53. package/dist/react/router/index.js.map +2 -2
  54. package/dist/react/server.js +12 -10
  55. package/dist/react/server.js.map +2 -2
  56. package/dist/src/mobile/devDeviceAdapter.d.ts +1 -1
  57. package/dist/src/mobile/expoBridge.d.ts +12 -12
  58. package/dist/src/mobile/nativeAuth.d.ts +6 -0
  59. package/dist/src/mobile/shellExpoAuth.d.ts +12 -0
  60. package/dist/src/mobile/shellExpoSync.d.ts +18 -0
  61. package/dist/svelte/browser.js +12 -10
  62. package/dist/svelte/browser.js.map +2 -2
  63. package/dist/svelte/index.js +47 -43
  64. package/dist/svelte/index.js.map +2 -2
  65. package/dist/svelte/server.js +29 -27
  66. package/dist/svelte/server.js.map +2 -2
  67. package/dist/vue/browser.js +14 -12
  68. package/dist/vue/browser.js.map +2 -2
  69. package/dist/vue/components/Image.js +9 -7
  70. package/dist/vue/components/Image.js.map +2 -2
  71. package/dist/vue/components/index.js +11 -9
  72. package/dist/vue/components/index.js.map +2 -2
  73. package/dist/vue/index.js +52 -48
  74. package/dist/vue/index.js.map +2 -2
  75. package/dist/vue/server.js +14 -12
  76. package/dist/vue/server.js.map +2 -2
  77. package/package.json +3 -2
@@ -1,12 +1,14 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/constants.ts", "../src/utils/getDurationString.ts", "../src/utils/startupBanner.ts", "../src/utils/stringModifiers.ts", "../node_modules/@absolutejs/sync/dist/client/index.js", "../src/mobile/syncSchema.ts", "../src/mobile/deviceCapabilities.ts", "../src/cli/scripts/telemetry.ts", "../src/cli/telemetryEvent.ts", "../src/mobile/artifactStore.ts", "../src/mobile/releaseArtifact.ts", "../src/mobile/androidRelease.ts", "../src/mobile/emulatorDoctor.ts", "../src/cli/utils.ts", "../src/mobile/androidEmulatorController.ts", "../src/mobile/capacitorProject.ts", "../src/mobile/androidUpgradeConformance.ts", "../src/mobile/iosRelease.ts", "../src/mobile/iosConformance.ts", "../src/mobile/iosSimulatorController.ts", "../src/mobile/iosPhysicalDeviceTransport.ts", "../src/mobile/iosNativeWatcher.ts", "../src/mobile/remoteMacProtocol.ts", "../src/mobile/remoteMacWire.ts", "../src/mobile/iosDeviceAcceptance.ts", "../src/mobile/associationFiles.ts", "../src/mobile/config.ts", "../src/mobile/buildMetadata.ts", "../src/mobile/buildPipeline.ts", "../src/mobile/buildRelease.ts", "../src/mobile/capacitorBundle.ts", "../src/mobile/routeMatcher.ts", "../src/mobile/producerContextState.ts", "../src/mobile/pageProtocol.ts", "../src/mobile/client.ts", "../src/mobile/transport.ts", "../src/mobile/materializedBundle.ts", "../src/mobile/nativeAuth.ts", "../src/mobile/expoProject.ts", "../src/mobile/index.ts", "../node_modules/@absolutejs/sync/dist/client/runtimeTransport.js", "../src/mobile/syncRemediation.ts", "../src/mobile/expoBridge.ts", "../src/mobile/expoDevController.ts", "../src/mobile/ciWorkflow.ts", "../src/mobile/compatibilityDispatcher.ts", "../src/mobile/producerContext.ts", "../src/mobile/mobilePreview.ts", "../src/mobile/nativeDeepLinks.ts", "../src/mobile/nativeDeviceCapabilities.ts", "../src/mobile/releasePublisher.ts", "../src/mobile/routeMetadataTransform.ts", "../node_modules/@absolutejs/http/dist/index.js", "../src/mobile/shellHttp.ts"],
3
+ "sources": ["../src/constants.ts", "../src/utils/getDurationString.ts", "../src/utils/startupBanner.ts", "../src/mobile/config.ts", "../src/utils/stringModifiers.ts", "../src/mobile/nativeAuth.ts", "../node_modules/@absolutejs/sync/dist/client/index.js", "../src/mobile/syncSchema.ts", "../src/mobile/deviceCapabilities.ts", "../src/cli/scripts/telemetry.ts", "../src/cli/telemetryEvent.ts", "../src/mobile/artifactStore.ts", "../src/mobile/releaseArtifact.ts", "../src/mobile/androidRelease.ts", "../src/mobile/emulatorDoctor.ts", "../src/cli/utils.ts", "../src/mobile/androidEmulatorController.ts", "../src/mobile/capacitorProject.ts", "../src/mobile/androidUpgradeConformance.ts", "../src/mobile/iosRelease.ts", "../src/mobile/iosConformance.ts", "../src/mobile/iosSimulatorController.ts", "../src/mobile/iosPhysicalDeviceTransport.ts", "../src/mobile/iosNativeWatcher.ts", "../src/mobile/remoteMacProtocol.ts", "../src/mobile/remoteMacWire.ts", "../src/mobile/iosDeviceAcceptance.ts", "../src/mobile/associationFiles.ts", "../src/mobile/buildMetadata.ts", "../src/mobile/buildPipeline.ts", "../src/mobile/buildRelease.ts", "../src/mobile/capacitorBundle.ts", "../src/mobile/routeMatcher.ts", "../src/mobile/producerContextState.ts", "../src/mobile/pageProtocol.ts", "../src/mobile/client.ts", "../src/mobile/transport.ts", "../src/mobile/materializedBundle.ts", "../src/mobile/expoProject.ts", "../src/mobile/index.ts", "../node_modules/@absolutejs/sync/dist/client/runtimeTransport.js", "../src/mobile/syncRemediation.ts", "../src/mobile/expoBridge.ts", "../src/mobile/expoDevController.ts", "../src/mobile/ciWorkflow.ts", "../src/mobile/compatibilityDispatcher.ts", "../src/mobile/producerContext.ts", "../src/mobile/mobilePreview.ts", "../src/mobile/nativeDeepLinks.ts", "../src/mobile/nativeDeviceCapabilities.ts", "../src/mobile/releasePublisher.ts", "../src/mobile/routeMetadataTransform.ts", "../node_modules/@absolutejs/http/dist/index.js", "../src/mobile/shellHttp.ts"],
4
4
  "sourcesContent": [
5
5
  "export const ANGULAR_INIT_TIMEOUT_MS = 500;\nexport const ANSI_ESCAPE_CODE = 27;\nexport const ANSI_ESCAPE_LENGTH = 3;\nexport const ASCII_SPACE = 32;\nexport const BASE_36_RADIX = 36;\nexport const BUN_BUILD_WARNING_SUPPRESSION =\n\t'wildcard sideEffects are not supported yet';\n/* Tailwind v4 at-rules that Bun's native CSS parser doesn't recognize.\n When a user imports their Tailwind entry CSS from a TS/TSX file, Bun's\n bundler walks it and warns about each unknown at-rule even though the\n actual Tailwind output is produced via the separate tailwindcss compile()\n pipeline (see compileTailwind.ts). The warnings are noise — suppress them. */\nexport const TAILWIND_BUN_CSS_WARNING_PATTERN =\n\t/invalid @ rule encountered: '@(theme|tailwind|source|utility|variant|custom-variant|apply|reference|plugin|config)'/;\nexport const BODY_SLICE_LENGTH = 2000;\nexport const BYTES_PER_KILOBYTE = 1024;\nexport const CLI_ARGS_OFFSET = 3;\nexport const CSS_ERROR_RESOLVE_DELAY_MS = 50;\nexport const CSS_MAX_CHECK_ATTEMPTS = 10;\nexport const CSS_MAX_PARSE_TIMEOUT_MS = 500;\nexport const CSS_SHEET_READY_TIMEOUT_MS = 100;\nexport const DEFAULT_CHUNK_SIZE = 16_384;\nexport const DEFAULT_DEBOUNCE_MS = 15;\nexport const DEFAULT_PORT = 3000;\nexport const DEV_SERVER_RESTART_DEBOUNCE_MS = 100;\nexport const DOM_UPDATE_DELAY_MS = 50;\nexport const FILE_PROTOCOL_PREFIX_LENGTH = 7;\nexport const FOCUS_ID_PREFIX_LENGTH = 3;\nexport const FOCUS_IDX_PREFIX_LENGTH = 4;\nexport const FOCUS_NAME_PREFIX_LENGTH = 5;\nexport const ESLINT_STUDIO_DEFAULT_HOST = 'eslint.absolute.localhost';\nexport const ESLINT_STUDIO_DEFAULT_PORT = 4099;\nexport const CONFIG_DEFAULT_HOST = 'config.absolute.localhost';\nexport const CONFIG_DEFAULT_PORT = 4099;\nexport const HMR_UPDATE_TIMEOUT_MS = 2000;\nexport const HOOK_SIGNATURE_LENGTH = 12;\nexport const EXCLUDE_LAST_OFFSET = -1;\nexport const HTTP_STATUS_OK = 200;\nexport const HTTP_STATUS_BAD_REQUEST = 400;\nexport const HTTP_STATUS_NOT_FOUND = 404;\nexport const HOURS_IN_DAY = 24;\nexport const HOURS_IN_HALF_DAY = 12;\nexport const IMAGE_DEFAULT_DEVICE_SIZES = [\n\t640, 750, 828, 1080, 1200, 1920, 2048, 3840\n];\nexport const IMAGE_DEFAULT_IMAGE_SIZES = [16, 32, 48, 64, 96, 128, 256, 384];\nexport const IMAGE_DEFAULT_QUALITY = 75;\nexport const IMAGE_GLOB_SUFFIX_LENGTH = 2;\nexport const INSTANCE_PROBE_TIMEOUT_MS = 250;\nexport const MAX_ERROR_LENGTH = 200;\nexport const MAX_RECONNECT_ATTEMPTS = 60;\nexport const MILLISECONDS_IN_A_SECOND = 1000;\nexport const MINUTES_IN_AN_HOUR = 60;\nexport const SECONDS_IN_A_MINUTE = 60;\nexport const MILLISECONDS_IN_A_MINUTE =\n\tMILLISECONDS_IN_A_SECOND * SECONDS_IN_A_MINUTE;\nexport const MILLISECONDS_IN_A_DAY =\n\tMILLISECONDS_IN_A_SECOND *\n\tSECONDS_IN_A_MINUTE *\n\tMINUTES_IN_AN_HOUR *\n\tHOURS_IN_DAY;\nexport const OVERLAY_FADE_DURATION_MS = 150;\nexport const PING_INTERVAL_MS = 30_000;\nexport const LIST_LOG_TAIL_MAX_BYTES = 65_536;\nexport const LIST_TUI_COLUMN_GAP = 2;\nexport const LIST_TUI_DEFAULT_HEIGHT = 28;\nexport const LIST_TUI_DEFAULT_WIDTH = 100;\nexport const LIST_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30;\nexport const LIST_TUI_FOOTER_LINE_COUNT = 2;\nexport const LIST_TUI_MARKER_WIDTH = 2;\nexport const LIST_TUI_MIN_LOG_HEIGHT = 3;\nexport const LIST_TUI_MIN_URL_WIDTH = 16;\nexport const LIST_TUI_RENDER_DEBOUNCE_MS = 16;\nexport const LIST_TUI_STATUS_MESSAGE_TIMEOUT_MS = 4000;\nexport const LIST_WATCH_REFRESH_MS = 1000;\nexport const RAF_BATCH_COUNT = 3;\nexport const RANDOM_ID_END_INDEX = 11;\nexport const REBUILD_BATCH_DELAY_MS = 10;\nexport const REBUILD_RELOAD_DELAY_MS = 200;\nexport const RECONNECT_INITIAL_DELAY_MS = 500;\nexport const RECONNECT_POLL_INTERVAL_MS = 300;\nexport const REACT_STREAM_SLOT_FAST_DELAY_MS = 5;\nexport const REACT_STREAM_SLOT_SLOW_DELAY_MS = 20;\nexport const SIGINT_EXIT_CODE = 130;\nexport const SIGTERM_EXIT_CODE = 143;\nexport const SVELTE_CSS_LOAD_TIMEOUT_MS = 500;\nexport const TIME_PRECISION = 2;\nexport const TWO_THIRDS = 2 / 3;\nexport const UNFOUND_INDEX = -1;\nexport const WEBSOCKET_NORMAL_CLOSURE = 1000;\n// Default Bun WebSocket idleTimeout (seconds) applied to every absolute server.\n// Long-lived sockets (voice intake, referee, realtime sync) sit idle during\n// greeting playback or while a user listens silently — no client→server frames.\n// Without an explicit value the WS idleTimeout falls back to Elysia's small\n// top-level serve default (~30s, closing at ~60s), which kills these sessions\n// mid-call with INACTIVE_CLIENT. 240s outlasts any greeting or think-pause and\n// gives a briefly-suspended tab time to wake and reconnect. Paired with Bun's\n// `sendPings` (protocol-level keepalive the browser answers without JS, so a\n// throttled background tab still responds). Bun's hard ceiling is 960s.\nexport const DEFAULT_WEBSOCKET_IDLE_TIMEOUT_SECONDS = 240;\n// HTTP idleTimeout for Bun.serve. Bun's DEFAULT is a hostile 10s for a\n// framework meant to host streaming/AI workloads: a long-lived SSE response\n// (or any long poll) that stays silent past 10s — e.g. an agentic AI turn\n// waiting on the model's first token after a large tool result inflates the\n// prompt — gets its socket reaped with no error, and the client hangs. 240s\n// mirrors the WS default and outlasts realistic model think-pauses; Bun's\n// hard ceiling for HTTP idleTimeout is 255s. Override per-app with the\n// ABSOLUTE_IDLE_TIMEOUT env var (seconds; 0 disables the timeout entirely).\nexport const DEFAULT_HTTP_IDLE_TIMEOUT_SECONDS = 240;\nexport const MAX_HTTP_IDLE_TIMEOUT_SECONDS = 255;\nexport const WORKSPACE_COMMAND_ARGS_OFFSET = 3;\nexport const WORKSPACE_FAILURE_LOG_PRINT_LIMIT = 30;\nexport const WORKSPACE_FAILURE_RECENT_LOG_LIMIT = 60;\nexport const WORKSPACE_READY_ATTEMPT_TIMEOUT_MS = 5_000;\nexport const WORKSPACE_READY_PROBE_INTERVAL_MS = 250;\nexport const WORKSPACE_READY_TIMEOUT_MS = 30_000;\nexport const WORKSPACE_SHUTDOWN_TIMEOUT_MS = 10_000;\nexport const WORKSPACE_TUI_DEFAULT_HEIGHT = 28;\nexport const WORKSPACE_TUI_DEFAULT_WIDTH = 100;\nexport const WORKSPACE_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30;\nexport const WORKSPACE_TUI_FOOTER_LINE_COUNT = 3;\nexport const WORKSPACE_TUI_MIN_LOG_HEIGHT = 3;\nexport const WORKSPACE_TUI_MIN_SERVICE_NAME_WIDTH = 7;\nexport const WORKSPACE_TUI_MIN_TARGET_WIDTH = 8;\nexport const WORKSPACE_TUI_MIN_WRAP_WIDTH = 12;\nexport const WORKSPACE_TUI_PROMPT_CURSOR_OFFSET = 3;\nexport const WORKSPACE_TUI_RECENT_LOG_LIMIT = 40;\nexport const WORKSPACE_TUI_RENDER_DEBOUNCE_MS = 16;\nexport const WORKSPACE_TUI_STATUS_WIDTH = 10;\nexport const WORKSPACE_TUI_TARGET_PADDING_WIDTH = 6;\nexport const WORKSPACE_TUI_VISIBILITY_WIDTH = 8;\n",
6
6
  "import {\n\tMILLISECONDS_IN_A_SECOND,\n\tTIME_PRECISION,\n\tMILLISECONDS_IN_A_MINUTE\n} from '../constants';\n\nexport const getDurationString = (duration: number) => {\n\tlet durationString;\n\n\tif (duration < MILLISECONDS_IN_A_SECOND) {\n\t\tdurationString = `${duration.toFixed(TIME_PRECISION)}ms`;\n\t} else if (duration < MILLISECONDS_IN_A_MINUTE) {\n\t\tdurationString = `${(duration / MILLISECONDS_IN_A_SECOND).toFixed(TIME_PRECISION)}s`;\n\t} else {\n\t\tconst totalSeconds = Math.round(duration / MILLISECONDS_IN_A_SECOND);\n\t\tconst minutes = Math.floor(totalSeconds / 60);\n\t\tconst seconds = totalSeconds % 60;\n\t\tdurationString =\n\t\t\tseconds === 0 ? `${minutes}m` : `${minutes}m ${seconds}s`;\n\t}\n\n\treturn durationString;\n};\n",
7
7
  "import { HOURS_IN_HALF_DAY } from '../constants';\nimport { getDurationString } from './getDurationString';\n\nconst colors = {\n\tbold: '\\x1b[1m',\n\tcyan: '\\x1b[36m',\n\tdim: '\\x1b[2m',\n\tgreen: '\\x1b[32m',\n\treset: '\\x1b[0m'\n} as const;\n\nconst MONTHS = [\n\t'Jan',\n\t'Feb',\n\t'Mar',\n\t'Apr',\n\t'May',\n\t'Jun',\n\t'Jul',\n\t'Aug',\n\t'Sep',\n\t'Oct',\n\t'Nov',\n\t'Dec'\n] as const;\n\nexport const formatTimestamp = () => {\n\tconst now = new Date();\n\tconst month = MONTHS[now.getMonth()];\n\tconst day = now.getDate().toString().padStart(2, '0');\n\tlet hours = now.getHours();\n\tconst minutes = now.getMinutes().toString().padStart(2, '0');\n\tconst seconds = now.getSeconds().toString().padStart(2, '0');\n\tconst ampm = hours >= HOURS_IN_HALF_DAY ? 'PM' : 'AM';\n\thours = hours % HOURS_IN_HALF_DAY || HOURS_IN_HALF_DAY;\n\n\treturn `${month} ${day} ${hours}:${minutes}:${seconds} ${ampm}`;\n};\n\nexport const startupBanner = (options: {\n\tversion: string;\n\treadyDuration: number;\n\tbuildDuration?: number;\n\tport: string | number;\n\thost: string;\n\tnetworkUrl?: string;\n\tmobilePreviewUrl?: string;\n\tprotocol?: string;\n}) => {\n\tconst {\n\t\tversion,\n\t\treadyDuration,\n\t\tbuildDuration,\n\t\tport,\n\t\thost,\n\t\tnetworkUrl,\n\t\tmobilePreviewUrl,\n\t\tprotocol = 'http'\n\t} = options;\n\tconst name = `${colors.cyan}${colors.bold}ABSOLUTEJS${colors.reset}`;\n\tconst ver = `${colors.dim}v${version}${colors.reset}`;\n\tconst time = `${colors.dim}ready in${colors.reset} ${colors.bold}${getDurationString(readyDuration)}${colors.reset}`;\n\tconst build =\n\t\ttypeof buildDuration === 'number' && Number.isFinite(buildDuration)\n\t\t\t? ` ${colors.dim}(build ${getDurationString(buildDuration)})${colors.reset}`\n\t\t\t: '';\n\tconsole.log('');\n\tconsole.log(` ${name} ${ver} ${time}${build}`);\n\tconsole.log('');\n\tconsole.log(\n\t\t` ${colors.green}➜${colors.reset} ${colors.bold}Local:${colors.reset} ${protocol}://${host === '0.0.0.0' ? 'localhost' : host}:${port}/`\n\t);\n\tif (networkUrl) {\n\t\tconsole.log(\n\t\t\t` ${colors.green}➜${colors.reset} ${colors.bold}Network:${colors.reset} ${networkUrl}`\n\t\t);\n\t}\n\tif (mobilePreviewUrl) {\n\t\tconsole.log(\n\t\t\t` ${colors.green}➜${colors.reset} ${colors.bold}Mobile:${colors.reset} ${mobilePreviewUrl}`\n\t\t);\n\t}\n\tconsole.log('');\n};\n",
8
+ "import { resolve } from 'node:path';\nimport type { MobileConfig, MobilePlatform } from '../../types/build';\n\nexport type NormalizedAbsoluteMobileConfig = {\n\tappId: string;\n\tappName: string;\n\tandroidCertificateFingerprints: string[];\n\tappleAppIdPrefix?: string;\n\tbundleDirectory: string;\n\tdeepLinkHosts: string[];\n\tdeepLinkScheme?: string;\n\tengine: 'capacitor' | 'expo';\n\tentry: string;\n\texpoNativeRoutes: Record<string, string>;\n\texpoSdkVersion?: 57;\n\tiosVersion?: string;\n\tnativeProjectDirectory: string;\n\tplatforms: MobilePlatform[];\n\tproductionOrigin: string;\n\tpushAndroidGoogleServicesFile: string;\n};\n\nconst APP_ID_PATTERN = /^[A-Za-z][\\w]*(?:\\.[A-Za-z][\\w]*)+$/;\nconst SCHEME_PATTERN = /^[a-z][a-z0-9+.-]*$/;\nconst APPLE_APP_ID_PREFIX_PATTERN = /^[A-Z0-9]{10}$/;\nconst CERTIFICATE_FINGERPRINT_PATTERN = /^[0-9A-F]{64}$/;\nconst HOSTNAME_PATTERN =\n\t/^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)(?:\\.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?))*$/;\n\nconst resolveProjectPath = (\n\tprojectRoot: string,\n\tvalue: string,\n\tfield: string\n) => {\n\tconst root = resolve(projectRoot);\n\tconst path = resolve(root, value);\n\tif (path !== root && !path.startsWith(`${root}/`)) {\n\t\tthrow new TypeError(`${field} must remain inside the project root.`);\n\t}\n\n\treturn path;\n};\n\nconst requireText = (value: string, field: string) => {\n\tconst normalized = value.trim();\n\tif (!normalized) throw new TypeError(`${field} must not be empty.`);\n\n\treturn normalized;\n};\n\nconst normalizeEntry = (entry: string | undefined) => {\n\tconst normalized = requireText(entry ?? '/', 'mobile.entry');\n\tif (!normalized.startsWith('/') || normalized.startsWith('//')) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.entry must be an absolute application path.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeProductionOrigin = (value: string) => {\n\tconst parsed = new URL(\n\t\trequireText(value, 'mobile.server.productionOrigin')\n\t);\n\tconst isLoopbackHttp =\n\t\tparsed.protocol === 'http:' &&\n\t\t(parsed.hostname === 'localhost' ||\n\t\t\tparsed.hostname === '127.0.0.1' ||\n\t\t\tparsed.hostname === '[::1]');\n\tif (parsed.protocol !== 'https:' && !isLoopbackHttp) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.server.productionOrigin must use HTTPS, except for a loopback development origin.'\n\t\t);\n\t}\n\tif (\n\t\tparsed.username ||\n\t\tparsed.password ||\n\t\tparsed.pathname !== '/' ||\n\t\tparsed.search ||\n\t\tparsed.hash\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.server.productionOrigin must be an origin without credentials, path, query, or hash.'\n\t\t);\n\t}\n\n\treturn parsed.origin;\n};\n\nconst normalizePlatforms = (\n\tplatforms: readonly MobilePlatform[] | undefined\n) => {\n\tconst normalized: MobilePlatform[] = [\n\t\t...new Set<MobilePlatform>(platforms ?? ['ios', 'android'])\n\t];\n\tif (normalized.length === 0) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.platforms must contain at least one platform.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeHosts = (\n\thosts: readonly string[] | undefined,\n\tproductionOrigin: string\n) => {\n\tconst normalizeHostname = (host: string) => {\n\t\tconst value = requireText(host, 'mobile.deepLinks.hosts').toLowerCase();\n\t\tif (!HOSTNAME_PATTERN.test(value)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'mobile.deepLinks.hosts entries must be valid hostnames without ports, wildcards, or paths.'\n\t\t\t);\n\t\t}\n\n\t\treturn value;\n\t};\n\tconst productionHostname = new URL(productionOrigin).hostname;\n\t// IPv6 loopback is valid for a local backend preview but cannot be an\n\t// Android App Link or Apple Universal Link hostname.\n\tconst normalized = new Set<string>(\n\t\tproductionHostname === '[::1]'\n\t\t\t? []\n\t\t\t: [normalizeHostname(productionHostname)]\n\t);\n\tfor (const host of hosts ?? []) {\n\t\tnormalized.add(normalizeHostname(host));\n\t}\n\n\treturn [...normalized].sort();\n};\n\nconst normalizeAppleAppIdPrefix = (value: string | undefined) => {\n\tif (value === undefined) return undefined;\n\tconst normalized = requireText(\n\t\tvalue,\n\t\t'mobile.deepLinks.apple.appIdPrefix'\n\t).toUpperCase();\n\tif (!APPLE_APP_ID_PREFIX_PATTERN.test(normalized)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.deepLinks.apple.appIdPrefix must contain ten letters or digits.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeIosVersion = (value: string | undefined) => {\n\tif (value === undefined) return undefined;\n\tconst normalized = requireText(value, 'mobile.ios.version');\n\tif (!/^\\d+(?:\\.\\d+){0,2}$/u.test(normalized)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.ios.version must contain one to three dot-separated integer components, for example 1.4.0.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeCertificateFingerprints = (\n\tvalues: readonly string[] | undefined\n) =>\n\t[\n\t\t...new Set(\n\t\t\t(values ?? [])\n\t\t\t\t.map((value) =>\n\t\t\t\t\trequireText(\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t'mobile.deepLinks.android.sha256CertificateFingerprints'\n\t\t\t\t\t)\n\t\t\t\t\t\t.replaceAll(':', '')\n\t\t\t\t\t\t.toUpperCase()\n\t\t\t\t)\n\t\t\t\t.map((value) => {\n\t\t\t\t\tif (!CERTIFICATE_FINGERPRINT_PATTERN.test(value)) {\n\t\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t\t'mobile.deepLinks.android.sha256CertificateFingerprints entries must be SHA-256 certificate fingerprints.'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn value.match(/.{2}/g)?.join(':') ?? value;\n\t\t\t\t})\n\t\t)\n\t].sort();\n\nconst normalizeExpoNativeRoutes = (\n\tconfig: MobileConfig,\n\tprojectRoot: string\n) => {\n\tif (config.engine !== 'expo') return {};\n\tconst routes = config.routes?.native ?? {};\n\tconst normalized: Record<string, string> = {};\n\tfor (const [route, module] of Object.entries(routes)) {\n\t\tconst path = normalizeEntry(route);\n\t\tif (\n\t\t\tpath.includes('?') ||\n\t\t\tpath.includes('#') ||\n\t\t\t(path !== '/' && path.endsWith('/'))\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`mobile.routes.native route ${path} must be a canonical path without a query, fragment, or trailing slash.`\n\t\t\t);\n\t\t}\n\t\tif (path === '/__absolute/native') {\n\t\t\tthrow new TypeError(\n\t\t\t\t'mobile.routes.native reserves /__absolute/native for the Expo diagnostic screen.'\n\t\t\t);\n\t\t}\n\t\tif (path.includes('*') || path.includes(':')) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`mobile.routes.native route ${path} must be static during the Expo experiment; parameters and wildcards are not supported yet.`\n\t\t\t);\n\t\t}\n\t\tnormalized[path] = resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\trequireText(module, `mobile.routes.native[${path}]`),\n\t\t\t`mobile.routes.native[${path}]`\n\t\t);\n\t}\n\n\treturn Object.fromEntries(\n\t\tObject.entries(normalized).sort(([left], [right]) =>\n\t\t\tleft.localeCompare(right)\n\t\t)\n\t);\n};\n\nexport const normalizeAbsoluteMobileConfig = (\n\tconfig: MobileConfig,\n\tprojectRoot: string\n): NormalizedAbsoluteMobileConfig => {\n\tconst appId = requireText(config.appId, 'mobile.appId');\n\tif (!APP_ID_PATTERN.test(appId)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.appId must use reverse-domain notation, for example com.example.app.'\n\t\t);\n\t}\n\tconst productionOrigin = normalizeProductionOrigin(\n\t\tconfig.server.productionOrigin\n\t);\n\tconst deepLinkScheme = (config.deepLinks?.scheme ?? appId)\n\t\t.trim()\n\t\t.toLowerCase();\n\tif (deepLinkScheme && !SCHEME_PATTERN.test(deepLinkScheme)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.deepLinks.scheme is not a valid URL scheme.'\n\t\t);\n\t}\n\n\treturn {\n\t\tandroidCertificateFingerprints: normalizeCertificateFingerprints(\n\t\t\tconfig.deepLinks?.android?.sha256CertificateFingerprints\n\t\t),\n\t\tappId,\n\t\tappleAppIdPrefix: normalizeAppleAppIdPrefix(\n\t\t\tconfig.deepLinks?.apple?.appIdPrefix\n\t\t),\n\t\tappName: requireText(config.appName, 'mobile.appName'),\n\t\tbundleDirectory: resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\tconfig.bundleDirectory ?? '.absolutejs/mobile/web',\n\t\t\t'mobile.bundleDirectory'\n\t\t),\n\t\tdeepLinkHosts: normalizeHosts(\n\t\t\tconfig.deepLinks?.hosts,\n\t\t\tproductionOrigin\n\t\t),\n\t\tdeepLinkScheme,\n\t\tengine: config.engine ?? 'capacitor',\n\t\tentry: normalizeEntry(config.entry),\n\t\texpoNativeRoutes: normalizeExpoNativeRoutes(config, projectRoot),\n\t\t...(config.engine === 'expo'\n\t\t\t? { expoSdkVersion: config.expo?.sdkVersion ?? 57 }\n\t\t\t: {}),\n\t\tiosVersion: normalizeIosVersion(config.ios?.version),\n\t\tnativeProjectDirectory: resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\tconfig.nativeProject?.directory ??\n\t\t\t\t(config.engine === 'expo'\n\t\t\t\t\t? '.absolutejs/mobile/expo'\n\t\t\t\t\t: 'mobile'),\n\t\t\t'mobile.nativeProject.directory'\n\t\t),\n\t\tplatforms: normalizePlatforms(config.platforms),\n\t\tproductionOrigin,\n\t\tpushAndroidGoogleServicesFile: resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\tconfig.pushNotifications?.android?.googleServicesFile ??\n\t\t\t\t'google-services.json',\n\t\t\t'mobile.pushNotifications.android.googleServicesFile'\n\t\t)\n\t};\n};\n",
8
9
  "const normalizeSlug = (str: string) =>\n\tstr\n\t\t.trim()\n\t\t.replace(/\\s+/g, '-')\n\t\t.replace(/[^A-Za-z0-9\\-_]+/g, '')\n\t\t.replace(/[-_]{2,}/g, '-');\n\nexport const toKebab = (str: string) =>\n\tnormalizeSlug(str)\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n\t\t.toLowerCase();\nexport const toPascal = (str: string) => {\n\tif (!str.includes('-') && !str.includes('_')) {\n\t\treturn str.charAt(0).toUpperCase() + str.slice(1);\n\t}\n\n\treturn normalizeSlug(str)\n\t\t.split(/[-_]/)\n\t\t.filter(Boolean)\n\t\t.map(\n\t\t\t(segment) =>\n\t\t\t\tsegment.charAt(0).toUpperCase() + segment.slice(1).toLowerCase()\n\t\t)\n\t\t.join('');\n};\nexport const toScreamingSnake = (str: string) =>\n\tstr.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toUpperCase();\n",
9
- "var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __name = (target, name) => {\n Object.defineProperty(target, \"name\", {\n value: name,\n enumerable: false,\n configurable: true\n });\n return target;\n};\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => (key in obj) ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\nvar __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol(\"metadata\")] ?? null)];\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== undefined && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({\n kind: __decoratorStrings[kind],\n name,\n metadata,\n addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null))\n});\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length;i < n; i++)\n flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : {\n get [name]() {\n return __privateGet(this, extra);\n },\n set [name](x) {\n __privateSet(this, extra, x);\n }\n }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1;i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => (name in x) };\n if (k ^ 3)\n access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2)\n access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? undefined : { get: desc.get, set: desc.set } : target, ctx);\n done._ = 1;\n if (k ^ 4 || it === undefined)\n __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null)\n __typeError(\"Object expected\");\n else\n __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\n\n// src/crdt/orSet.ts\nvar newTag = () => globalThis.crypto.randomUUID();\nvar defaultEquals = (a, b) => Object.is(a, b);\nvar orSet = {\n create: () => ({ adds: [], removed: [] }),\n add: (state, value, tag = newTag()) => ({\n adds: [...state.adds, { value, tag }],\n removed: state.removed\n }),\n remove: (state, value, equals = defaultEquals) => {\n const tags = state.adds.filter((entry) => equals(entry.value, value)).map((entry) => entry.tag);\n return {\n adds: state.adds,\n removed: [...new Set([...state.removed, ...tags])]\n };\n },\n has: (state, value, equals = defaultEquals) => {\n const removed = new Set(state.removed);\n return state.adds.some((entry) => equals(entry.value, value) && !removed.has(entry.tag));\n },\n values: (state, equals = defaultEquals) => {\n const removed = new Set(state.removed);\n const out = [];\n for (const entry of state.adds) {\n if (!removed.has(entry.tag) && !out.some((value) => equals(value, entry.value))) {\n out.push(entry.value);\n }\n }\n return out;\n },\n merge: (a, b) => {\n const byTag = new Map;\n for (const entry of [...a.adds, ...b.adds]) {\n byTag.set(entry.tag, entry);\n }\n return {\n adds: [...byTag.values()],\n removed: [...new Set([...a.removed, ...b.removed])]\n };\n }\n};\n// src/crdt/lwwMap.ts\nvar pick = (a, b) => {\n if (b.timestamp > a.timestamp) {\n return b;\n }\n if (b.timestamp < a.timestamp) {\n return a;\n }\n return b.replica > a.replica ? b : a;\n};\nvar lwwMap = {\n create: () => ({}),\n set: (state, key, value, replica, timestamp = Date.now()) => ({\n ...state,\n [key]: { value, deleted: false, timestamp, replica }\n }),\n delete: (state, key, replica, timestamp = Date.now()) => ({\n ...state,\n [key]: { value: state[key]?.value, deleted: true, timestamp, replica }\n }),\n get: (state, key) => {\n const entry = state[key];\n return entry !== undefined && !entry.deleted ? entry.value : undefined;\n },\n has: (state, key) => {\n const entry = state[key];\n return entry !== undefined && !entry.deleted;\n },\n keys: (state) => Object.keys(state).filter((key) => !state[key]?.deleted),\n entries: (state) => {\n const out = [];\n for (const [key, entry] of Object.entries(state)) {\n if (!entry.deleted && entry.value !== undefined) {\n out.push([key, entry.value]);\n }\n }\n return out;\n },\n merge: (a, b) => {\n const out = { ...a };\n for (const [key, entry] of Object.entries(b)) {\n const existing = out[key];\n out[key] = existing === undefined ? entry : pick(existing, entry);\n }\n return out;\n }\n};\n// src/crdt/list.ts\nvar order = (a, b) => {\n if (a.clock !== b.clock) {\n return b.clock - a.clock;\n }\n if (a.replica === b.replica) {\n return 0;\n }\n return a.replica > b.replica ? -1 : 1;\n};\nvar linearize = (elements) => {\n const present = new Set(elements.map((element) => element.id));\n const children = new Map;\n for (const element of elements) {\n const anchor = element.after !== null && !present.has(element.after) ? null : element.after;\n const list = children.get(anchor);\n if (list === undefined) {\n children.set(anchor, [element]);\n } else {\n list.push(element);\n }\n }\n for (const list of children.values()) {\n list.sort(order);\n }\n const ordered = [];\n const stack = [...children.get(null) ?? []].reverse();\n while (stack.length > 0) {\n const element = stack.pop();\n ordered.push(element);\n const kids = children.get(element.id);\n if (kids !== undefined) {\n for (let index = kids.length - 1;index >= 0; index -= 1) {\n stack.push(kids[index]);\n }\n }\n }\n return ordered;\n};\nvar listOf = (state) => linearize(state.elements).filter((element) => !element.deleted).map((element) => element.value);\nvar mergeListState = (a, b) => {\n const byId = new Map;\n for (const element of [...a.elements, ...b.elements]) {\n const existing = byId.get(element.id);\n byId.set(element.id, existing === undefined ? element : { ...existing, deleted: existing.deleted || element.deleted });\n }\n return { elements: [...byId.values()] };\n};\nvar createList = (replica, initial) => {\n const elements = new Map;\n const pending = new Map;\n let clock = 0;\n if (initial !== undefined) {\n for (const element of initial.elements) {\n elements.set(element.id, element);\n clock = Math.max(clock, element.clock);\n }\n }\n const visible = () => linearize([...elements.values()]).filter((element) => !element.deleted);\n return {\n list: () => listOf({ elements: [...elements.values()] }),\n insert: (index, items) => {\n const seen = visible();\n let after = index <= 0 ? null : seen[index - 1]?.id ?? null;\n for (const value of items) {\n clock += 1;\n const element = {\n id: `${replica}:${clock}`,\n replica,\n clock,\n after,\n value,\n deleted: false\n };\n elements.set(element.id, element);\n pending.set(element.id, element);\n after = element.id;\n }\n },\n delete: (index, count) => {\n const seen = visible();\n for (let offset = 0;offset < count; offset += 1) {\n const target = seen[index + offset];\n if (target !== undefined) {\n const tombstoned = { ...target, deleted: true };\n elements.set(target.id, tombstoned);\n pending.set(target.id, tombstoned);\n }\n }\n },\n merge: (state) => {\n for (const element of state.elements) {\n const existing = elements.get(element.id);\n elements.set(element.id, existing === undefined ? element : {\n ...existing,\n deleted: existing.deleted || element.deleted\n });\n clock = Math.max(clock, element.clock);\n }\n },\n state: () => ({ elements: [...elements.values()] }),\n takeDelta: () => {\n const delta = { elements: [...pending.values()] };\n pending.clear();\n return delta;\n }\n };\n};\n\n// src/crdt/index.ts\nvar sumValues = (counts) => Object.values(counts).reduce((total, value) => total + value, 0);\nvar mergeMax = (a, b) => {\n const merged = { ...a };\n for (const [replica, value] of Object.entries(b)) {\n merged[replica] = Math.max(merged[replica] ?? 0, value);\n }\n return merged;\n};\nvar counter = {\n create: () => ({ increments: {}, decrements: {} }),\n value: (state) => sumValues(state.increments) - sumValues(state.decrements),\n increment: (state, replica, by = 1) => ({\n increments: {\n ...state.increments,\n [replica]: (state.increments[replica] ?? 0) + by\n },\n decrements: state.decrements\n }),\n decrement: (state, replica, by = 1) => ({\n increments: state.increments,\n decrements: {\n ...state.decrements,\n [replica]: (state.decrements[replica] ?? 0) + by\n }\n }),\n merge: (a, b) => ({\n increments: mergeMax(a.increments, b.increments),\n decrements: mergeMax(a.decrements, b.decrements)\n })\n};\nvar lww = {\n create: (value, replica, timestamp = Date.now()) => ({ value, timestamp, replica }),\n set: (value, replica, timestamp = Date.now()) => ({\n value,\n timestamp,\n replica\n }),\n merge: (a, b) => {\n if (b.timestamp > a.timestamp) {\n return b;\n }\n if (b.timestamp < a.timestamp) {\n return a;\n }\n return b.replica > a.replica ? b : a;\n }\n};\nvar compare = (a, b) => {\n if (a.clock !== b.clock) {\n return b.clock - a.clock;\n }\n if (a.replica === b.replica) {\n return 0;\n }\n return a.replica > b.replica ? -1 : 1;\n};\nvar linearize2 = (elements) => {\n const present = new Set(elements.map((element) => element.id));\n const children = new Map;\n for (const element of elements) {\n const anchor = element.after !== null && !present.has(element.after) ? null : element.after;\n const list = children.get(anchor);\n if (list === undefined) {\n children.set(anchor, [element]);\n } else {\n list.push(element);\n }\n }\n for (const list of children.values()) {\n list.sort(compare);\n }\n const ordered = [];\n const stack = [...children.get(null) ?? []].reverse();\n while (stack.length > 0) {\n const element = stack.pop();\n ordered.push(element);\n const kids = children.get(element.id);\n if (kids !== undefined) {\n for (let index = kids.length - 1;index >= 0; index -= 1) {\n stack.push(kids[index]);\n }\n }\n }\n return ordered;\n};\nvar textOf = (state) => linearize2(state.elements).filter((element) => !element.deleted).map((element) => element.value).join(\"\");\nvar mergeTextState = (a, b) => {\n const byId = new Map;\n for (const element of [...a.elements, ...b.elements]) {\n const existing = byId.get(element.id);\n byId.set(element.id, existing === undefined ? element : { ...existing, deleted: existing.deleted || element.deleted });\n }\n return { elements: [...byId.values()] };\n};\nvar tombstoneCount = (state) => state.elements.reduce((total, element) => element.deleted ? total + 1 : total, 0);\nvar compact = (state) => {\n const byId = new Map(state.elements.map((element) => [element.id, element]));\n const keep = new Set;\n for (const element of state.elements) {\n if (element.deleted) {\n continue;\n }\n let anchor = element.after;\n while (anchor !== null && !keep.has(anchor)) {\n const target = byId.get(anchor);\n if (target === undefined || !target.deleted) {\n break;\n }\n keep.add(anchor);\n anchor = target.after;\n }\n }\n return {\n elements: state.elements.filter((element) => !element.deleted || keep.has(element.id))\n };\n};\nvar createTextCrdt = (replica, initial) => {\n const elements = new Map;\n const pending = new Map;\n let clock = 0;\n if (initial !== undefined) {\n for (const element of initial.elements) {\n elements.set(element.id, element);\n clock = Math.max(clock, element.clock);\n }\n }\n const visible = () => linearize2([...elements.values()]).filter((element) => !element.deleted);\n const insert = (index, value) => {\n const seen = visible();\n let after = index <= 0 ? null : seen[index - 1]?.id ?? null;\n for (const char of [...value]) {\n clock += 1;\n const element = {\n id: `${replica}:${clock}`,\n replica,\n clock,\n after,\n value: char,\n deleted: false\n };\n elements.set(element.id, element);\n pending.set(element.id, element);\n after = element.id;\n }\n };\n const remove = (index, count) => {\n const seen = visible();\n for (let offset = 0;offset < count; offset += 1) {\n const target = seen[index + offset];\n if (target !== undefined) {\n const tombstoned = { ...target, deleted: true };\n elements.set(target.id, tombstoned);\n pending.set(target.id, tombstoned);\n }\n }\n };\n return {\n text: () => textOf({ elements: [...elements.values()] }),\n insert,\n delete: remove,\n merge: (state) => {\n for (const element of state.elements) {\n const existing = elements.get(element.id);\n elements.set(element.id, existing === undefined ? element : {\n ...existing,\n deleted: existing.deleted || element.deleted\n });\n clock = Math.max(clock, element.clock);\n }\n },\n setText: (next) => {\n const current = textOf({ elements: [...elements.values()] });\n if (current === next) {\n return;\n }\n let prefix = 0;\n const maxPrefix = Math.min(current.length, next.length);\n while (prefix < maxPrefix && current[prefix] === next[prefix]) {\n prefix += 1;\n }\n let suffix = 0;\n while (suffix < maxPrefix - prefix && current[current.length - 1 - suffix] === next[next.length - 1 - suffix]) {\n suffix += 1;\n }\n const removed = current.length - prefix - suffix;\n if (removed > 0) {\n remove(prefix, removed);\n }\n const inserted = next.slice(prefix, next.length - suffix);\n if (inserted.length > 0) {\n insert(prefix, inserted);\n }\n },\n state: () => ({ elements: [...elements.values()] }),\n takeDelta: () => {\n const delta = { elements: [...pending.values()] };\n pending.clear();\n return delta;\n },\n anchorAt: (index) => {\n if (index <= 0) {\n return null;\n }\n const seen = visible();\n return seen[Math.min(index, seen.length) - 1]?.id ?? null;\n },\n indexOfAnchor: (anchor) => {\n if (anchor === null) {\n return 0;\n }\n let visibleCount = 0;\n for (const element of linearize2([...elements.values()])) {\n if (!element.deleted) {\n visibleCount += 1;\n }\n if (element.id === anchor) {\n return visibleCount;\n }\n }\n return visibleCount;\n }\n };\n};\nvar rgaText = {\n compact,\n create: createTextCrdt,\n empty: () => ({ elements: [] }),\n merge: mergeTextState,\n textOf\n};\n\n// src/client/runtimeTransport.ts\nvar RUNTIME_TRANSPORT = Symbol.for(\"@absolutejs/sync/client-runtime-transport\");\nvar host = globalThis;\nvar isRegistry = (value) => typeof value === \"object\" && value !== null && Array.isArray(Reflect.get(value, \"installations\")) && Array.isArray(Reflect.get(value, \"clients\"));\nvar registry = (() => {\n const existing = host[RUNTIME_TRANSPORT];\n if (isRegistry(existing))\n return existing;\n if (typeof existing === \"object\" && existing !== null && Array.isArray(Reflect.get(existing, \"installations\"))) {\n Reflect.set(existing, \"clients\", []);\n return existing;\n }\n const created = { clients: [], installations: [] };\n Object.defineProperty(host, RUNTIME_TRANSPORT, {\n configurable: false,\n enumerable: false,\n value: created,\n writable: false\n });\n return created;\n})();\nvar getSyncClientRuntimeTransport = () => registry.installations.at(-1)?.transport;\nvar installSyncClientRuntimeTransport = (transport) => {\n const installation = { transport };\n registry.installations.push(installation);\n return () => {\n const index = registry.installations.indexOf(installation);\n if (index >= 0)\n registry.installations.splice(index, 1);\n };\n};\nvar registerSyncRuntimeClient = (client) => {\n registry.clients.push(client);\n return () => {\n const index = registry.clients.indexOf(client);\n if (index >= 0)\n registry.clients.splice(index, 1);\n };\n};\nvar maximum = (values) => {\n const present = values.filter((value) => value !== undefined);\n return present.length === 0 ? undefined : Math.max(...present);\n};\nvar minimum = (values) => {\n const present = values.filter((value) => value !== undefined);\n return present.length === 0 ? undefined : Math.min(...present);\n};\nvar inspectSyncRuntime = async () => {\n const clients = [...registry.clients];\n const statuses = clients.map((client) => client.status());\n const deadLetters = (await Promise.all(clients.map((client) => client.listDeadLetters()))).flat().map((record) => ({\n attempts: record.attempts,\n ...record.rejection?.code ? { code: record.rejection.code } : {},\n createdAt: record.createdAt,\n ...record.deadLetteredAt === undefined ? {} : { deadLetteredAt: record.deadLetteredAt },\n ...record.rejection?.kind ? { kind: record.rejection.kind } : {},\n ...record.rejection?.message ? { message: record.rejection.message } : {},\n name: record.name,\n operationId: record.operationId\n })).sort((left, right) => (left.deadLetteredAt ?? left.createdAt) - (right.deadLetteredAt ?? right.createdAt) || left.operationId.localeCompare(right.operationId));\n const lastError = statuses.findLast((status) => status.lastError)?.lastError;\n return {\n automaticResolutions: statuses.reduce((total, status) => total + status.automaticResolutions, 0),\n clients: clients.length,\n conflicts: deadLetters.filter((record) => record.kind === \"conflict\").length,\n deadLetters,\n ...lastError ? { lastError } : {},\n ...maximum(statuses.map((status) => status.lastSuccessfulPullAt)) === undefined ? {} : {\n lastSuccessfulPullAt: maximum(statuses.map((status) => status.lastSuccessfulPullAt))\n },\n ...maximum(statuses.map((status) => status.lastSuccessfulPushAt)) === undefined ? {} : {\n lastSuccessfulPushAt: maximum(statuses.map((status) => status.lastSuccessfulPushAt))\n },\n ...minimum(statuses.map((status) => status.oldestDeadLetterAt)) === undefined ? {} : {\n oldestDeadLetterAt: minimum(statuses.map((status) => status.oldestDeadLetterAt))\n },\n ...minimum(statuses.map((status) => status.oldestPendingAt)) === undefined ? {} : {\n oldestPendingAt: minimum(statuses.map((status) => status.oldestPendingAt))\n },\n pending: statuses.reduce((total, status) => total + status.pending, 0)\n };\n};\nvar clientWithDeadLetter = async (operationId) => {\n for (const client of registry.clients)\n if ((await client.listDeadLetters()).some((record) => record.operationId === operationId))\n return client;\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n};\nvar retrySyncRuntimeDeadLetter = async (operationId) => (await clientWithDeadLetter(operationId)).retryDeadLetter(operationId);\nvar discardSyncRuntimeDeadLetter = async (operationId) => (await clientWithDeadLetter(operationId)).discardDeadLetter(operationId);\nvar rebaseSyncRuntimeDeadLetter = async (operationId, args) => (await clientWithDeadLetter(operationId)).rebaseDeadLetter(operationId, args);\n\n// src/client/headlessSync.ts\nvar defaultKey = (row) => {\n if (typeof row !== \"object\" || row === null)\n throw new TypeError(\"Headless Sync rows require an object key.\");\n const key = Reflect.get(row, \"id\");\n if (typeof key !== \"string\" && typeof key !== \"number\")\n throw new TypeError(\"Headless Sync rows require an id key or an explicit key function.\");\n return key;\n};\nvar requireInteger = (value, fallback) => {\n const result = value ?? fallback;\n if (!Number.isSafeInteger(result) || result < 0)\n throw new TypeError(\"Headless Sync limits must be non-negative integers.\");\n return result;\n};\nvar retryDelay = (attempt) => Math.min(30000, 500 * 2 ** Math.max(0, attempt - 1));\nvar parseResponse = (value) => {\n if (typeof value !== \"object\" || value === null || Reflect.get(value, \"version\") !== 1 || !Array.isArray(Reflect.get(value, \"mutations\")) || !Array.isArray(Reflect.get(value, \"pulls\")))\n throw new Error(\"The Headless Sync response is malformed.\");\n return value;\n};\nvar sameBaseline = (current, baseline) => current?.cursor === baseline?.cursor && (current?.version ?? 0) === (baseline?.version ?? 0);\nvar applyPull = (current, pull, collection, key) => {\n const descriptor = {\n ...current,\n collection: collection.collection,\n params: collection.params\n };\n if (collection.key === undefined)\n descriptor.headlessKey = \"id\";\n else\n delete descriptor.headlessKey;\n if (pull.type === \"snapshot\")\n return {\n ...descriptor,\n rows: pull.rows,\n version: pull.version,\n cursor: pull.cursor\n };\n const rows = new Map;\n for (const row of current?.rows ?? [])\n rows.set(key(row), row);\n for (const row of pull.removed)\n rows.delete(key(row));\n for (const row of pull.changed)\n rows.set(key(row), row);\n for (const row of pull.added)\n rows.set(key(row), row);\n return {\n ...descriptor,\n rows: [...rows.values()],\n version: pull.version,\n cursor: pull.cursor\n };\n};\nvar runHeadlessSync = async ({\n endpoint,\n store,\n namespace,\n collections,\n maxMutations: configuredMaxMutations,\n maxPulls: configuredMaxPulls,\n maxAttempts: configuredMaxAttempts,\n retryBackoff = retryDelay,\n headers,\n fetch: fetchOverride,\n now = Date.now\n}) => {\n if (endpoint.length === 0 || namespace.length === 0)\n throw new TypeError(\"Headless Sync endpoint and namespace are required.\");\n const maxMutations = requireInteger(configuredMaxMutations, 50);\n const maxPulls = requireInteger(configuredMaxPulls, 50);\n const maxAttempts = requireInteger(configuredMaxAttempts, 5);\n const startedAt = now();\n const snapshot = await store.transaction(namespace, \"readwrite\", async (tx) => {\n const due = (await tx.listMutations()).filter((record) => record.state !== \"dead-letter\" && (record.nextAttemptAt ?? 0) <= startedAt).slice(0, maxMutations);\n const mutations = [];\n for (const record of due) {\n const next = { ...record, attempts: record.attempts + 1 };\n delete next.nextAttemptAt;\n await tx.putMutation(next);\n mutations.push(next);\n }\n const discoveredCollections = collections ?? (await tx.listCollections()).filter(({ record }) => record.headlessKey === \"id\" && typeof record.collection === \"string\" && record.collection.length > 0).map(({ key, record }) => ({\n collection: record.collection,\n localKey: key,\n params: record.params\n }));\n const pulls = await Promise.all(discoveredCollections.slice(0, maxPulls).map(async (collection) => ({\n collection,\n record: await tx.getCollection(collection.localKey)\n })));\n return { mutations, pulls };\n });\n const request = {\n version: 1,\n mutations: snapshot.mutations.map(({ operationId, name, args }) => ({\n operationId,\n name,\n args\n })),\n pulls: snapshot.pulls.map(({ collection, record }, index) => ({\n id: String(index),\n collection: collection.collection,\n params: collection.params,\n ...record?.cursor !== undefined ? { since: record.cursor } : (record?.version ?? 0) > 0 ? { since: record.version } : {}\n }))\n };\n const fetchImpl = fetchOverride ?? ((url, init) => globalThis.fetch(url, init));\n let response;\n try {\n const fetched = await fetchImpl(endpoint, {\n body: JSON.stringify(request),\n credentials: \"include\",\n headers: {\n accept: \"application/json\",\n \"content-type\": \"application/json\",\n ...await headers?.()\n },\n method: \"POST\",\n redirect: \"error\"\n });\n if (!fetched.ok)\n throw new Error(`Headless Sync failed with HTTP ${fetched.status}.`);\n response = parseResponse(await fetched.json());\n } catch (error) {\n await store.transaction(namespace, \"readwrite\", async (tx) => {\n for (const sent of snapshot.mutations) {\n const current = await tx.getMutation(sent.operationId);\n if (current?.attempts !== sent.attempts)\n continue;\n await tx.putMutation({\n ...current,\n lastError: error instanceof Error ? error.message : String(error),\n nextAttemptAt: now() + Math.max(0, retryBackoff(current.attempts))\n });\n }\n });\n throw error;\n }\n const mutationResults = new Map(response.mutations.map((result2) => [result2.operationId, result2]));\n const pullResults = new Map(response.pulls.map((result2) => [result2.id, result2]));\n const result = {\n acknowledged: 0,\n conflictsDiscarded: 0,\n conflictsRetried: 0,\n deadLettered: 0,\n pulled: 0,\n retryScheduled: 0\n };\n await store.transaction(namespace, \"readwrite\", async (tx) => {\n for (const sent of snapshot.mutations) {\n const current = await tx.getMutation(sent.operationId);\n if (current?.attempts !== sent.attempts)\n continue;\n const outcome = mutationResults.get(sent.operationId);\n if (outcome?.status === \"ack\") {\n await tx.deleteMutation(sent.operationId);\n result.acknowledged += 1;\n continue;\n }\n const rejection = outcome?.status === \"reject\" ? outcome.rejection : {\n kind: \"retryable\",\n message: \"Missing mutation response.\"\n };\n if (rejection.kind === \"conflict\" && current.conflictPolicy?.strategy === \"server-wins\") {\n await tx.deleteMutation(sent.operationId);\n result.conflictsDiscarded += 1;\n continue;\n }\n if (rejection.kind === \"conflict\" && current.conflictPolicy?.strategy === \"client-wins\" && (current.conflictAttempts ?? 0) < (current.conflictPolicy.maxAttempts ?? 1)) {\n const retry = {\n ...current,\n conflictAttempts: (current.conflictAttempts ?? 0) + 1,\n lastError: rejection.message,\n rejection,\n state: \"pending\"\n };\n delete retry.nextAttemptAt;\n await tx.putMutation(retry);\n result.conflictsRetried += 1;\n continue;\n }\n if (rejection.kind !== \"retryable\" || current.attempts >= maxAttempts) {\n const deadLetter = {\n ...current,\n deadLetteredAt: now(),\n lastError: rejection.message,\n rejection,\n state: \"dead-letter\"\n };\n delete deadLetter.nextAttemptAt;\n await tx.putMutation(deadLetter);\n result.deadLettered += 1;\n } else {\n await tx.putMutation({\n ...current,\n lastError: rejection.message,\n nextAttemptAt: now() + Math.max(0, rejection.retryAfterMs ?? retryBackoff(current.attempts)),\n rejection,\n state: \"pending\"\n });\n result.retryScheduled += 1;\n }\n }\n for (let index = 0;index < snapshot.pulls.length; index += 1) {\n const baseline = snapshot.pulls[index];\n const pull = pullResults.get(String(index));\n if (pull === undefined || pull.type === \"error\")\n continue;\n const current = await tx.getCollection(baseline.collection.localKey);\n if (!sameBaseline(current, baseline.record))\n continue;\n await tx.putCollection(baseline.collection.localKey, applyPull(current, pull, baseline.collection, baseline.collection.key ?? defaultKey));\n result.pulled += 1;\n }\n });\n return result;\n};\n\n// src/client/subscriber.ts\nvar createSyncSubscriber = ({\n topics,\n onEvent,\n url = \"/sync\",\n onOpen,\n onError,\n withCredentials,\n eventSourceImpl\n}) => {\n const Impl = eventSourceImpl ?? globalThis.EventSource;\n if (!Impl) {\n throw new Error(\"createSyncSubscriber requires EventSource. Run in a browser or pass eventSourceImpl.\");\n }\n const params = new URLSearchParams({ topics: topics.join(\",\") });\n const separator = url.includes(\"?\") ? \"&\" : \"?\";\n const source = new Impl(`${url}${separator}${params.toString()}`, {\n withCredentials: withCredentials ?? false\n });\n source.onmessage = (event) => {\n try {\n onEvent(JSON.parse(event.data));\n } catch {}\n };\n if (onOpen) {\n source.onopen = () => onOpen();\n }\n if (onError) {\n source.onerror = (event) => onError(event);\n }\n return {\n close: () => source.close(),\n source\n };\n};\n// src/reactiveHub.ts\nvar SYNC_OPEN_TOPIC = \"@absolutejs/sync:open\";\n\n// src/client/liveQuery.ts\nvar createLiveQuery = (options) => {\n const hasSeed = options.initialData !== undefined;\n let state = {\n data: options.initialData,\n error: undefined,\n loading: !options.manual && !hasSeed,\n fetching: false\n };\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n let requestSeq = 0;\n let inFlight;\n let closed = false;\n const refetch = async () => {\n if (closed) {\n return;\n }\n const seq = requestSeq += 1;\n inFlight?.abort();\n const controller = new AbortController;\n inFlight = controller;\n setState({ fetching: true });\n try {\n const data = await options.fetcher(controller.signal);\n if (seq !== requestSeq) {\n return;\n }\n setState({\n data,\n error: undefined,\n loading: false,\n fetching: false\n });\n } catch (error) {\n if (controller.signal.aborted || seq !== requestSeq) {\n return;\n }\n setState({ error, loading: false, fetching: false });\n options.onError?.(error);\n } finally {\n if (inFlight === controller) {\n inFlight = undefined;\n }\n }\n };\n let debounceTimer;\n const scheduleRefetch = () => {\n if (closed) {\n return;\n }\n if (!options.debounceMs) {\n refetch();\n return;\n }\n if (debounceTimer !== undefined) {\n return;\n }\n debounceTimer = setTimeout(() => {\n debounceTimer = undefined;\n refetch();\n }, options.debounceMs);\n };\n let opened = false;\n const onEvent = (event) => {\n if (event.topic === SYNC_OPEN_TOPIC) {\n if (opened) {\n scheduleRefetch();\n }\n opened = true;\n return;\n }\n scheduleRefetch();\n };\n const subscriber = createSyncSubscriber({\n topics: options.topics,\n onEvent,\n url: options.url,\n withCredentials: options.withCredentials,\n eventSourceImpl: options.eventSourceImpl\n });\n if (!options.manual && !hasSeed) {\n refetch();\n }\n const close = () => {\n if (closed) {\n return;\n }\n closed = true;\n subscriber.close();\n inFlight?.abort();\n if (debounceTimer !== undefined) {\n clearTimeout(debounceTimer);\n debounceTimer = undefined;\n }\n listeners.clear();\n };\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n refetch,\n close\n };\n};\nvar jsonFetcher = (url, init) => async (signal) => {\n const response = await fetch(url, { ...init, signal });\n if (!response.ok) {\n throw new Error(`${response.status} ${response.statusText}`);\n }\n return await response.json();\n};\n// src/serializer.ts\nvar jsonSerializer = {\n decode: (raw) => {\n if (typeof raw === \"string\") {\n try {\n return JSON.parse(raw);\n } catch {\n return null;\n }\n }\n if (raw instanceof Uint8Array) {\n try {\n return JSON.parse(new TextDecoder().decode(raw));\n } catch {\n return null;\n }\n }\n if (raw instanceof ArrayBuffer) {\n try {\n return JSON.parse(new TextDecoder().decode(new Uint8Array(raw)));\n } catch {\n return null;\n }\n }\n return raw;\n },\n encodeClient: (frame) => JSON.stringify(frame),\n encodeServer: (frame) => JSON.stringify(frame)\n};\n\n// src/client/reconnectBackoff.ts\nvar createReconnectBackoff = (initialMs, maximumMs) => {\n let attempt = 0;\n return {\n markHealthy() {\n attempt = 0;\n },\n nextDelay() {\n const delay = Math.min(initialMs * 2 ** attempt, maximumMs);\n attempt += 1;\n return delay;\n }\n };\n};\nvar hasReconnectHealthyFrameType = (frame, types) => typeof frame === \"object\" && frame !== null && (\"type\" in frame) && typeof frame.type === \"string\" && types.includes(frame.type);\n\n// src/client/syncCollection.ts\nvar serverFrameTypes = [\n \"snapshot\",\n \"diff\",\n \"error\",\n \"ack\",\n \"reject\"\n];\nvar localStorageMutationStorage = (key) => ({\n load: () => {\n const raw = globalThis.localStorage?.getItem(key);\n return raw ? JSON.parse(raw) : [];\n },\n save: (records) => {\n globalThis.localStorage?.setItem(key, JSON.stringify(records));\n }\n});\nvar localStorageCollectionCache = (key) => ({\n load: () => {\n const raw = globalThis.localStorage?.getItem(key);\n return raw ? JSON.parse(raw) : undefined;\n },\n save: (snapshot) => {\n globalThis.localStorage?.setItem(key, JSON.stringify(snapshot));\n },\n clear: () => {\n globalThis.localStorage?.removeItem(key);\n }\n});\nvar openIndexedDb = (databaseName, storeName) => new Promise((resolve, reject) => {\n const request = globalThis.indexedDB.open(databaseName, 1);\n request.onupgradeneeded = () => {\n request.result.createObjectStore(storeName);\n };\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n});\nvar indexedDbCollectionCache = ({\n key,\n databaseName = \"absolutejs-sync\",\n storeName = \"collections\"\n}) => {\n let handle;\n const database = () => {\n handle ??= openIndexedDb(databaseName, storeName);\n return handle;\n };\n const withStore = async (mode, run) => {\n if (globalThis.indexedDB === undefined) {\n return;\n }\n const db = await database();\n return new Promise((resolve, reject) => {\n const request = run(db.transaction(storeName, mode).objectStore(storeName));\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n };\n return {\n load: () => withStore(\"readonly\", (store) => store.get(key)),\n save: async (snapshot) => {\n await withStore(\"readwrite\", (store) => store.put(snapshot, key));\n },\n clear: async () => {\n await withStore(\"readwrite\", (store) => store.delete(key));\n }\n };\n};\nvar SUBSCRIPTION_ID = \"s\";\nvar createSyncCollection = (options) => {\n const key = options.key ?? ((row) => row.id);\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createSyncCollection requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const confirmed = new Map;\n const pending = [];\n let mutationSeq = 0;\n let state = {\n data: [],\n status: \"connecting\",\n error: undefined\n };\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n const recompute = (patch = {}) => {\n const working = new Map(confirmed);\n const draft = {\n set: (row) => working.set(key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n mutation.optimistic?.(draft);\n }\n setState({ ...patch, data: [...working.values()] });\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let appliedVersion = 0;\n let appliedCursor;\n const persist = () => {\n options.storage?.save(pending.map((mutation) => ({\n mutationId: mutation.mutationId,\n name: mutation.name,\n args: mutation.args\n })));\n };\n let cacheScheduled = false;\n const persistCache = () => {\n if (options.cache === undefined || cacheScheduled) {\n return;\n }\n cacheScheduled = true;\n queueMicrotask(() => {\n cacheScheduled = false;\n options.cache?.save({\n rows: [...confirmed.values()],\n version: appliedVersion\n });\n });\n };\n const settlePending = (mutationId) => {\n const index = pending.findIndex((mutation2) => mutation2.mutationId === mutationId);\n if (index === -1) {\n return;\n }\n const [mutation] = pending.splice(index, 1);\n persist();\n return mutation;\n };\n const applyFrame = (frame) => {\n if (frame.type === \"snapshot\") {\n confirmed.clear();\n for (const row of frame.rows) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n persistCache();\n recompute({ status: \"ready\", error: undefined });\n } else if (frame.type === \"diff\") {\n for (const row of frame.removed) {\n confirmed.delete(key(row));\n }\n for (const row of frame.added) {\n confirmed.set(key(row), row);\n }\n for (const row of frame.changed) {\n confirmed.set(key(row), row);\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n if (frame.version !== undefined) {\n appliedVersion = Math.max(appliedVersion, frame.version);\n }\n persistCache();\n recompute({ status: \"ready\", error: undefined });\n } else if (frame.type === \"error\") {\n setState({ error: frame.message });\n options.onError?.(frame.message);\n } else if (frame.type === \"ack\") {\n const mutation = settlePending(frame.mutationId);\n if (mutation !== undefined) {\n recompute();\n mutation.resolve(frame.result);\n }\n } else if (frame.type === \"reject\") {\n const mutation = settlePending(frame.mutationId);\n if (mutation !== undefined) {\n recompute();\n mutation.reject(new Error(String(frame.message)));\n }\n }\n };\n const wsSend = (payload) => {\n socket?.send(payload);\n };\n const sendMutate = (mutation) => {\n if (connected) {\n wsSend(serializer.encodeClient({\n type: \"mutate\",\n mutationId: mutation.mutationId,\n name: mutation.name,\n args: mutation.args\n }));\n }\n };\n const connect = () => {\n if (closed) {\n return;\n }\n setState({ status: \"connecting\" });\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"subscribe\",\n id: SUBSCRIPTION_ID,\n collection: options.collection,\n params: options.params,\n since: appliedCursor ?? (appliedVersion > 0 ? appliedVersion : undefined)\n }));\n for (const mutation of pending) {\n sendMutate(mutation);\n }\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect, delay);\n };\n };\n const hydratePersisted = async () => {\n if (options.storage === undefined) {\n return;\n }\n const records = await options.storage.load();\n for (const record of records) {\n if (pending.some((m) => m.mutationId === record.mutationId)) {\n continue;\n }\n pending.push({\n mutationId: record.mutationId,\n name: record.name,\n args: record.args,\n resolve: () => {},\n reject: () => {}\n });\n mutationSeq = Math.max(mutationSeq, record.mutationId);\n }\n if (connected) {\n for (const mutation of pending) {\n sendMutate(mutation);\n }\n }\n };\n const hydrateCache = async () => {\n if (options.cache === undefined) {\n return;\n }\n let snapshot;\n try {\n snapshot = await options.cache.load();\n } catch {\n return;\n }\n if (snapshot === undefined || appliedVersion > 0) {\n return;\n }\n for (const row of snapshot.rows) {\n confirmed.set(key(row), row);\n }\n appliedVersion = snapshot.version;\n recompute();\n };\n if (options.cache === undefined) {\n connect();\n hydratePersisted();\n } else {\n (async () => {\n await hydrateCache();\n await hydratePersisted();\n connect();\n })();\n }\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n mutate: (mutateOptions) => new Promise((resolve, reject) => {\n const mutation = {\n mutationId: mutationSeq += 1,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: mutateOptions.optimistic,\n resolve: (result) => resolve(result),\n reject\n };\n pending.push(mutation);\n persist();\n recompute();\n sendMutate(mutation);\n }),\n disconnect: () => {\n if (closed || socket === undefined) {\n return;\n }\n try {\n socket.close();\n } catch {}\n },\n close: () => {\n if (closed) {\n return;\n }\n closed = true;\n connected = false;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n try {\n wsSend(serializer.encodeClient({\n type: \"unsubscribe\",\n id: SUBSCRIPTION_ID\n }));\n socket?.close();\n } catch {}\n for (const mutation of pending.splice(0)) {\n mutation.reject(new Error(\"sync collection closed\"));\n }\n persist();\n setState({ status: \"closed\" });\n listeners.clear();\n }\n };\n};\n// src/client/collaborativeText.ts\nvar createCollaborativeText = (options) => {\n const keyField = options.keyField ?? \"id\";\n const mutation = options.mutation ?? `${options.collection}:merge`;\n const replica = options.replica ?? globalThis.crypto.randomUUID();\n const make = options.create ?? ((id) => createTextCrdt(id));\n const crdt = make(replica);\n let current = {\n ready: false,\n status: \"connecting\",\n text: \"\"\n };\n let pendingText = null;\n const subscribers = new Set;\n const emit = () => {\n for (const run of subscribers) {\n run(current);\n }\n };\n const collection = createSyncCollection({\n collection: options.collection,\n key: (row) => row[keyField],\n params: options.params,\n url: options.url\n });\n const broadcast = (next) => {\n crdt.setText(next);\n current = { ...current, text: next };\n emit();\n const payload = crdt.takeDelta ? crdt.takeDelta() : crdt.state();\n collection.mutate({\n args: { [keyField]: options.id, [options.field]: payload },\n name: mutation\n });\n };\n const apply = (state) => {\n let { text } = current;\n const row = state.data.find((candidate) => candidate[keyField] === options.id);\n const fieldState = row?.[options.field];\n if (fieldState !== undefined) {\n crdt.merge(fieldState);\n text = crdt.text();\n }\n const ready = current.ready || fieldState !== undefined;\n current = { ready, status: state.status, text };\n emit();\n if (ready && pendingText !== null) {\n const buffered = pendingText;\n pendingText = null;\n broadcast(buffered);\n }\n };\n apply(collection.get());\n const unsubscribe = collection.subscribe(apply);\n return {\n get: () => current,\n subscribe(run) {\n subscribers.add(run);\n run(current);\n return () => {\n subscribers.delete(run);\n };\n },\n setText(next) {\n if (!current.ready) {\n pendingText = next;\n current = { ...current, text: next };\n emit();\n return;\n }\n broadcast(next);\n },\n anchorAt: (index) => crdt.anchorAt?.(index) ?? null,\n indexOfAnchor: (anchor) => crdt.indexOfAnchor?.(anchor) ?? 0,\n close() {\n unsubscribe();\n collection.close();\n subscribers.clear();\n }\n };\n};\n// src/client/presence.ts\nvar createPresence = (options) => {\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createPresence requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const id = options.memberId ?? globalThis.crypto?.randomUUID?.() ?? `m${Math.random()}`;\n const members = new Map;\n let state = options.state;\n let snapshot = [];\n const listeners = new Set;\n const emit = () => {\n snapshot = [...members].map(([memberId, memberState]) => ({\n id: memberId,\n state: memberState\n }));\n for (const listener of listeners) {\n listener(snapshot);\n }\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n const send = (frame) => {\n if (connected) {\n socket?.send(serializer.encodeClient(frame));\n }\n };\n const connect = () => {\n if (closed) {\n return;\n }\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"presence-join\",\n room: options.room,\n memberId: id,\n state\n }));\n };\n ws.onmessage = (event) => {\n let frame;\n const decoded = serializer.decode(event.data);\n if (decoded === null || typeof decoded !== \"object\") {\n return;\n }\n frame = decoded;\n if (frame.type !== \"presence\" || frame.room !== options.room) {\n return;\n }\n reconnectBackoff.markHealthy();\n for (const member of frame.joined ?? []) {\n members.set(member.id, member.state);\n }\n for (const member of frame.updated ?? []) {\n members.set(member.id, member.state);\n }\n for (const memberId of frame.left ?? []) {\n members.delete(memberId);\n }\n emit();\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect, delay);\n };\n };\n connect();\n return {\n id,\n get: () => snapshot,\n subscribe: (listener) => {\n listeners.add(listener);\n listener(snapshot);\n return () => {\n listeners.delete(listener);\n };\n },\n set: (next) => {\n state = next;\n send({ type: \"presence-set\", room: options.room, state: next });\n },\n close: () => {\n closed = true;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n send({ type: \"presence-leave\", room: options.room });\n socket?.close();\n members.clear();\n }\n };\n};\n// src/client/localStore.ts\nclass SyncLocalDataPolicyError extends Error {\n code;\n constructor(code, message) {\n super(message);\n this.name = \"SyncLocalDataPolicyError\";\n this.code = code;\n }\n}\n\nclass SyncLocalStoreSchemaError extends Error {\n code;\n storedVersion;\n targetVersion;\n constructor(code, message, versions = {}) {\n super(message);\n this.name = \"SyncLocalStoreSchemaError\";\n this.code = code;\n this.storedVersion = versions.storedVersion;\n this.targetVersion = versions.targetVersion;\n }\n}\nvar positiveVersion = (value, label) => {\n if (!Number.isSafeInteger(value) || value < 1)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `${label} must be a positive safe integer`);\n return value;\n};\nvar isSchemaBundle = (schema) => (\"components\" in schema);\nvar validatePolicyMatch = (match, label) => {\n if (match.length === 0 || match.trim() !== match || /^\\*+$/.test(match) || match.includes(\"**\"))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.match must be an exact name or a non-empty glob without adjacent wildcards.`);\n};\nvar validateSyncLocalDataPolicy = (policy, label = \"localData\") => {\n if (policy.maxBytesPerNamespace !== undefined && (!Number.isSafeInteger(policy.maxBytesPerNamespace) || policy.maxBytesPerNamespace < 1))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.maxBytesPerNamespace must be a positive safe integer.`);\n for (const [index, rule] of (policy.collections ?? []).entries()) {\n validatePolicyMatch(rule.match, `${label}.collections[${index}]`);\n if (rule.maxAgeMs !== undefined && (!Number.isSafeInteger(rule.maxAgeMs) || rule.maxAgeMs < 1))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}].maxAgeMs must be a positive safe integer.`);\n if (rule.persistence === \"memory-only\" && rule.protection === \"required\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}] cannot require at-rest protection when it is memory-only.`);\n if (rule.sensitivity !== undefined && rule.sensitivity !== \"public\" && rule.protection !== \"required\" && rule.persistence !== \"memory-only\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}] declares ${rule.sensitivity} data without required protection or memory-only persistence.`);\n }\n for (const [index, rule] of (policy.mutations ?? []).entries()) {\n validatePolicyMatch(rule.match, `${label}.mutations[${index}]`);\n if (rule.conflict !== undefined && rule.conflict.strategy !== \"client-wins\" && rule.conflict.strategy !== \"manual\" && rule.conflict.strategy !== \"server-wins\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}].conflict.strategy is invalid.`);\n if (rule.conflict?.maxAttempts !== undefined && (!Number.isSafeInteger(rule.conflict.maxAttempts) || rule.conflict.maxAttempts < 1))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}].conflict.maxAttempts must be a positive safe integer.`);\n if (rule.conflict?.maxAttempts !== undefined && rule.conflict.strategy !== \"client-wins\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}].conflict.maxAttempts is only valid for client-wins.`);\n if (rule.persistence === \"memory-only\" && rule.protection === \"required\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}] cannot require at-rest protection when it is memory-only.`);\n if (rule.sensitivity !== undefined && rule.sensitivity !== \"public\" && rule.protection !== \"required\" && rule.persistence !== \"memory-only\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}] declares ${rule.sensitivity} arguments without required protection.`);\n }\n return policy;\n};\nvar resolveSyncLocalDataPolicy = (schema = { version: 1 }) => {\n const policies = normalizeSyncLocalSchemaComponents(schema).map((component) => component.localData ? validateSyncLocalDataPolicy(component.localData, `${component.id}.localData`) : undefined).filter((policy) => policy !== undefined);\n const quotas = policies.map((policy) => policy.maxBytesPerNamespace).filter((value) => value !== undefined);\n return {\n ...quotas.length > 0 ? { maxBytesPerNamespace: Math.min(...quotas) } : {},\n collections: policies.flatMap((policy) => policy.collections ?? []),\n mutations: policies.flatMap((policy) => policy.mutations ?? [])\n };\n};\nvar policyMatches = (pattern, name) => pattern === name || (() => {\n const pieces = pattern.split(\"*\");\n if (pieces.length === 1)\n return false;\n let offset = 0;\n for (const [index, piece] of pieces.entries()) {\n if (piece.length === 0)\n continue;\n const found = name.indexOf(piece, offset);\n if (found < 0 || index === 0 && found !== 0)\n return false;\n offset = found + piece.length;\n }\n const last = pieces.at(-1);\n return last.length === 0 || name.endsWith(last);\n})();\nvar matchingPolicy = (rules, name) => {\n const matches = rules.filter((rule) => policyMatches(rule.match, name));\n if (matches.length === 0)\n return;\n const specificity = (rule) => rule.match.replaceAll(\"*\", \"\").length;\n matches.sort((left, right) => specificity(right) - specificity(left));\n if (matches[1] !== undefined && specificity(matches[0]) === specificity(matches[1]))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `Local-data policy has equally specific rules for \"${name}\".`);\n return matches[0];\n};\nvar resolveSyncLocalCollectionPolicy = (policy, name) => matchingPolicy(policy.collections, name) ?? { match: name };\nvar resolveSyncLocalMutationPolicy = (policy, name) => matchingPolicy(policy.mutations, name) ?? { match: name };\nvar normalizeSyncLocalSchemaComponents = (schema = { version: 1 }) => {\n const components = isSchemaBundle(schema) ? [...schema.components] : [{ ...schema, id: \"@absolutejs/app\" }];\n const ids = new Set;\n for (const component of components) {\n if (typeof component.id !== \"string\" || component.id.trim() !== component.id || component.id.length === 0)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Sync schema component id must be non-empty and trimmed\");\n if (ids.has(component.id))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync schema component \"${component.id}\" is declared more than once`);\n ids.add(component.id);\n if (component.localData)\n validateSyncLocalDataPolicy(component.localData, `${component.id}.localData`);\n }\n return components.sort((a, b) => a.id.localeCompare(b.id));\n};\nvar createSyncLocalSchemaStatus = (components, orphanedComponents = [], includeComponents = true) => {\n const app = components.find((component) => component.id === \"@absolutejs/app\");\n return {\n ...includeComponents ? {\n components: components.map((component) => ({\n id: component.id,\n minimumCompatibleVersion: component.minimumCompatibleVersion,\n storedVersion: component.targetVersion,\n targetVersion: component.targetVersion\n }))\n } : {},\n minimumCompatibleVersion: app?.minimumCompatibleVersion ?? 1,\n ...orphanedComponents.length > 0 ? { orphanedComponents: [...orphanedComponents] } : {},\n state: \"ready\",\n storedVersion: app?.targetVersion ?? 1,\n targetVersion: app?.targetVersion ?? 1\n };\n};\nvar resolveSyncLocalSchemaComponents = (storedVersions, schema = { version: 1 }) => {\n const components = normalizeSyncLocalSchemaComponents(schema).map((component) => {\n const current = resolveSyncLocalMigrations(component.version, component);\n return {\n id: component.id,\n ...resolveSyncLocalMigrations(storedVersions[component.id] ?? current.minimumCompatibleVersion, component)\n };\n });\n const active = new Set(components.map((component) => component.id));\n const orphanedComponents = Object.keys(storedVersions).filter((id) => !active.has(id)).sort();\n return { components, orphanedComponents };\n};\nvar migrationCollectionName = (record, context) => record.collection ?? context.key;\nvar migrateRow = (row, operation) => {\n if (typeof row !== \"object\" || row === null || Array.isArray(row))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync ${operation.type} requires object rows`);\n const next = { ...row };\n if (operation.type === \"set-default\") {\n if (!Object.hasOwn(next, operation.field))\n next[operation.field] = structuredClone(operation.value);\n } else if (operation.type === \"remove-field\") {\n delete next[operation.field];\n } else if (Object.hasOwn(next, operation.from)) {\n if (Object.hasOwn(next, operation.to))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync rename-field cannot overwrite existing field \"${operation.to}\"`);\n next[operation.to] = next[operation.from];\n delete next[operation.from];\n }\n return next;\n};\nvar applyDeclarativeCollectionOperations = (record, context, operations) => {\n let current = structuredClone(record);\n for (const operation of operations) {\n if (operation.collection !== migrationCollectionName(current, context))\n continue;\n if (operation.type === \"delete-collection\")\n return null;\n current = {\n ...current,\n rows: current.rows.map((row) => migrateRow(row, operation))\n };\n }\n return current;\n};\nvar resolveSyncLocalMigrations = (storedVersion, schema = { version: 1 }) => {\n positiveVersion(storedVersion, \"Stored Sync schema version\");\n const targetVersion = positiveVersion(schema.version, \"Target Sync schema version\");\n const migrations = [...schema.migrations ?? []].sort((a, b) => a.toVersion - b.toVersion);\n const versions = new Set;\n for (const migration of migrations) {\n positiveVersion(migration.toVersion, \"Sync migration toVersion\");\n if (versions.has(migration.toVersion))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync migration ${migration.toVersion} is declared more than once`);\n versions.add(migration.toVersion);\n }\n const inferredMinimum = migrations[0] ? migrations[0].toVersion - 1 : targetVersion;\n const minimumCompatibleVersion = positiveVersion(schema.minimumCompatibleVersion ?? inferredMinimum, \"Minimum compatible Sync schema version\");\n if (minimumCompatibleVersion > targetVersion)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Minimum compatible Sync schema version cannot exceed its target\");\n if (storedVersion > targetVersion)\n throw new SyncLocalStoreSchemaError(\"SCHEMA_TOO_NEW\", `Stored Sync schema ${storedVersion} is newer than this runtime's schema ${targetVersion}`, { storedVersion, targetVersion });\n if (storedVersion < minimumCompatibleVersion)\n throw new SyncLocalStoreSchemaError(\"SCHEMA_TOO_OLD\", `Stored Sync schema ${storedVersion} is older than the minimum compatible schema ${minimumCompatibleVersion}`, { storedVersion, targetVersion });\n const steps = [];\n for (let version = storedVersion + 1;version <= targetVersion; version++) {\n const migration = migrations.find((candidate) => candidate.toVersion === version);\n if (migration === undefined)\n throw new SyncLocalStoreSchemaError(\"MIGRATION_MISSING\", `Sync migration ${version - 1} -> ${version} is missing`, { storedVersion, targetVersion });\n steps.push(migration);\n }\n return { minimumCompatibleVersion, steps, targetVersion };\n};\nvar migrateSyncLocalCollectionRecord = (record, context, steps) => {\n let current = structuredClone(record);\n for (const step of steps) {\n if (current === null)\n break;\n current = applyDeclarativeCollectionOperations(current, context, step.operations ?? []);\n if (current === null)\n break;\n const next = step.migrateCollection?.(structuredClone(current), context);\n if (next === null)\n current = null;\n else if (next !== undefined)\n current = structuredClone(next);\n }\n return current;\n};\nvar migrateSyncLocalMutationRecord = (record, context, steps) => {\n let current = structuredClone(record);\n for (const step of steps) {\n if (current === null)\n break;\n const next = step.migrateMutation?.(structuredClone(current), context);\n if (next === null)\n current = null;\n else if (next !== undefined) {\n if (next.operationId !== context.key)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Sync migrations cannot change a mutation operationId\");\n current = structuredClone(next);\n }\n }\n return current;\n};\nvar jsonBytes = (value) => new TextEncoder().encode(JSON.stringify(value)).byteLength;\nvar evictionRank = {\n disposable: 0,\n normal: 1,\n critical: 2\n};\nvar runSyncLocalPolicyTransaction = async (options) => {\n const { mode, now, policy, raw } = options;\n const requireProtection = (kind, name) => {\n if (!options.protected)\n throw new SyncLocalDataPolicyError(\"PROTECTION_REQUIRED\", `Sync ${kind} \"${name}\" requires encrypted persistence, but this runtime has no audited protection provider.`);\n };\n const collectionPolicy = (record, key) => resolveSyncLocalCollectionPolicy(policy, record.collection ?? key);\n const unavailableMemoryOnly = (rule) => rule.protection === \"required\" && !options.protected && rule.onProtectionUnavailable === \"memory-only\";\n const expired = (record, key) => {\n const rule = collectionPolicy(record, key);\n return rule.maxAgeMs !== undefined && record.storedAt !== undefined && now - record.storedAt >= rule.maxAgeMs;\n };\n const tx = {\n ...raw,\n resolveMutationPolicy: (name) => resolveSyncLocalMutationPolicy(policy, name),\n getCollection: async (key) => {\n const record = await raw.getCollection(key);\n if (record === undefined)\n return;\n const rule = collectionPolicy(record, key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule) || expired(record, key)) {\n if (mode === \"readwrite\")\n await raw.deleteCollection(key);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", record.collection ?? key);\n return record;\n },\n listCollections: async () => {\n const kept = [];\n for (const entry of await raw.listCollections()) {\n const rule = collectionPolicy(entry.record, entry.key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule) || expired(entry.record, entry.key)) {\n if (mode === \"readwrite\")\n await raw.deleteCollection(entry.key);\n continue;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", entry.record.collection ?? entry.key);\n kept.push(entry);\n }\n return kept;\n },\n putCollection: async (key, record) => {\n const rule = collectionPolicy(record, key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n await raw.deleteCollection(key);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", record.collection ?? key);\n await raw.putCollection(key, rule.maxAgeMs !== undefined || policy.maxBytesPerNamespace !== undefined ? { ...record, storedAt: now } : record);\n },\n getMutation: async (operationId) => {\n const record = await raw.getMutation(operationId);\n if (!record)\n return;\n const rule = resolveSyncLocalMutationPolicy(policy, record.name);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n if (mode === \"readwrite\")\n await raw.deleteMutation(operationId);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"mutation\", record.name);\n return rule.conflict && record.conflictPolicy === undefined ? { ...record, conflictPolicy: structuredClone(rule.conflict) } : record;\n },\n listMutations: async () => {\n const records = [];\n for (const record of await raw.listMutations()) {\n const rule = resolveSyncLocalMutationPolicy(policy, record.name);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n if (mode === \"readwrite\")\n await raw.deleteMutation(record.operationId);\n continue;\n }\n if (rule.protection === \"required\")\n requireProtection(\"mutation\", record.name);\n records.push(rule.conflict && record.conflictPolicy === undefined ? {\n ...record,\n conflictPolicy: structuredClone(rule.conflict)\n } : record);\n }\n return records;\n },\n putMutation: async (record) => {\n const rule = resolveSyncLocalMutationPolicy(policy, record.name);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n await raw.deleteMutation(record.operationId);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"mutation\", record.name);\n await raw.putMutation(rule.conflict && record.conflictPolicy === undefined ? {\n ...record,\n conflictPolicy: structuredClone(rule.conflict)\n } : record);\n }\n };\n const result = await options.run(tx);\n if (mode === \"readwrite\" && policy.maxBytesPerNamespace !== undefined) {\n const mutations = await raw.listMutations();\n let collections = await raw.listCollections();\n let bytes = mutations.reduce((total, value) => total + jsonBytes(value), 0) + collections.reduce((total, entry) => total + jsonBytes(entry.record), 0);\n const candidates = [...collections].sort((left, right) => {\n const leftRule = collectionPolicy(left.record, left.key);\n const rightRule = collectionPolicy(right.record, right.key);\n return evictionRank[leftRule.evictionPriority ?? \"normal\"] - evictionRank[rightRule.evictionPriority ?? \"normal\"] || (left.record.storedAt ?? 0) - (right.record.storedAt ?? 0) || left.key.localeCompare(right.key);\n });\n for (const candidate of candidates) {\n if (bytes <= policy.maxBytesPerNamespace)\n break;\n await raw.deleteCollection(candidate.key);\n bytes -= jsonBytes(candidate.record);\n }\n if (bytes > policy.maxBytesPerNamespace)\n throw new SyncLocalDataPolicyError(\"QUOTA_EXCEEDED\", `Sync pending operations require ${bytes} logical bytes, exceeding the protected ${policy.maxBytesPerNamespace}-byte namespace quota; pending mutations were retained.`);\n }\n return result;\n};\nvar clone = (value) => structuredClone(value);\nvar emptyNamespace = () => ({\n collections: new Map,\n mutations: new Map\n});\nvar cloneNamespace = (source) => ({\n installationId: source.installationId,\n collections: new Map([...source.collections].map(([key, value]) => [key, clone(value)])),\n mutations: new Map([...source.mutations].map(([key, value]) => [key, clone(value)]))\n});\nvar createMemorySyncLocalStore = ({\n storageSchema = { version: 1 },\n protection,\n now = Date.now\n} = {}) => {\n const localData = resolveSyncLocalDataPolicy(storageSchema);\n let protectorPromise;\n const prepareProtector = () => protectorPromise ??= protection?.prepare();\n const targetComponents = normalizeSyncLocalSchemaComponents(storageSchema);\n const resolvedSchema = resolveSyncLocalSchemaComponents(Object.fromEntries(targetComponents.map((component) => [\n component.id,\n component.version\n ])), storageSchema);\n const schemaStatus = createSyncLocalSchemaStatus(resolvedSchema.components, [], isSchemaBundle(storageSchema));\n const namespaces = new Map;\n let tail = Promise.resolve();\n const withLock = async (run) => {\n let release;\n const previous = tail;\n tail = new Promise((resolve) => {\n release = resolve;\n });\n await previous;\n try {\n return await run();\n } finally {\n release();\n }\n };\n const transaction = async (namespace, mode, run) => {\n if (namespace.length === 0) {\n throw new Error(\"Sync local-store namespace must not be empty\");\n }\n const protector = await prepareProtector();\n return withLock(async () => {\n const current = namespaces.get(namespace) ?? emptyNamespace();\n const working = cloneNamespace(current);\n const writable = () => {\n if (mode !== \"readwrite\") {\n throw new Error(\"Cannot write in a readonly Sync local transaction\");\n }\n };\n const tx = {\n getInstallationId: async () => working.installationId,\n setInstallationId: async (installationId) => {\n writable();\n if (installationId.length === 0) {\n throw new Error(\"Sync installation id must not be empty\");\n }\n working.installationId = installationId;\n },\n getCollection: async (key) => {\n const record = working.collections.get(key);\n return record === undefined ? undefined : clone(record);\n },\n listCollections: async () => [...working.collections.entries()].map(([key, record]) => ({\n key,\n record: clone(record)\n })),\n putCollection: async (key, record) => {\n writable();\n working.collections.set(key, clone(record));\n },\n deleteCollection: async (key) => {\n writable();\n working.collections.delete(key);\n },\n listMutations: async () => [...working.mutations.values()].sort((a, b) => a.createdAt - b.createdAt).map(clone),\n getMutation: async (operationId) => {\n const record = working.mutations.get(operationId);\n return record === undefined ? undefined : clone(record);\n },\n putMutation: async (record) => {\n writable();\n working.mutations.set(record.operationId, clone(record));\n },\n deleteMutation: async (operationId) => {\n writable();\n working.mutations.delete(operationId);\n }\n };\n const result = await runSyncLocalPolicyTransaction({\n mode,\n now: now(),\n policy: localData,\n protected: protector !== undefined,\n raw: tx,\n run\n });\n if (mode === \"readwrite\")\n namespaces.set(namespace, working);\n return result;\n });\n };\n return {\n transaction,\n getSchemaStatus: async () => ({ ...schemaStatus }),\n deleteNamespace: async (namespace) => {\n await withLock(async () => {\n namespaces.delete(namespace);\n return;\n });\n }\n };\n};\nvar openProtectedRecord = (value, protector, context) => {\n if (protector === undefined || protector.id !== value.protector)\n throw new SyncLocalDataPolicyError(\"PROTECTION_REQUIRED\", `Sync data is protected by \"${value.protector}\", which is unavailable in this runtime.`);\n return JSON.parse(protector.open(value.value, { ...context, name: value.name }));\n};\nvar requestResult = (request) => new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n});\nvar transactionComplete = (transaction) => new Promise((resolve, reject) => {\n transaction.oncomplete = () => resolve();\n transaction.onabort = () => reject(transaction.error ?? new Error(\"IndexedDB transaction aborted\"));\n transaction.onerror = () => reject(transaction.error ?? new Error(\"IndexedDB transaction failed\"));\n});\nvar deleteIndexRows = (index, namespace) => new Promise((resolve, reject) => {\n const request = index.openCursor(namespace);\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor === null) {\n resolve();\n return;\n }\n cursor.delete();\n cursor.continue();\n };\n});\nvar migrateIndexedRows = (request, migrate) => new Promise((resolve, reject) => {\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor === null) {\n resolve();\n return;\n }\n let next;\n try {\n next = migrate(cursor.value);\n } catch (error) {\n reject(error);\n return;\n }\n const write = next === null ? cursor.delete() : cursor.update(next);\n write.onerror = () => reject(write.error);\n write.onsuccess = () => cursor.continue();\n };\n});\nvar createIndexedDbSyncLocalStore = ({\n databaseName = \"absolutejs-sync-local-v1\",\n indexedDB: factory = globalThis.indexedDB,\n storageSchema = { version: 1 },\n protection,\n now = Date.now\n} = {}) => {\n const localData = resolveSyncLocalDataPolicy(storageSchema);\n let protectorPromise;\n const prepareProtector = () => protectorPromise ??= protection?.prepare();\n if (factory === undefined) {\n throw new Error(\"createIndexedDbSyncLocalStore requires IndexedDB in this runtime\");\n }\n let databasePromise;\n const database = () => {\n databasePromise ??= new Promise((resolve, reject) => {\n const request = factory.open(databaseName, 2);\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(\"metadata\"))\n db.createObjectStore(\"metadata\");\n if (!db.objectStoreNames.contains(\"collections\")) {\n const collections = db.createObjectStore(\"collections\", {\n keyPath: [\"namespace\", \"key\"]\n });\n collections.createIndex(\"namespace\", \"namespace\");\n }\n if (!db.objectStoreNames.contains(\"mutations\")) {\n const mutations = db.createObjectStore(\"mutations\", {\n keyPath: [\"namespace\", \"operationId\"]\n });\n mutations.createIndex(\"namespace\", \"namespace\");\n }\n if (!db.objectStoreNames.contains(\"schema\"))\n db.createObjectStore(\"schema\");\n };\n request.onsuccess = () => {\n request.result.onversionchange = () => request.result.close();\n resolve(request.result);\n };\n request.onerror = () => reject(request.error);\n request.onblocked = () => reject(new Error(`IndexedDB upgrade blocked for \"${databaseName}\"`));\n });\n return databasePromise;\n };\n let schemaPromise;\n const prepareSchema = () => {\n schemaPromise ??= Promise.all([database(), prepareProtector()]).then(async ([db, preparedProtector]) => {\n const native = db.transaction([\"schema\", \"collections\", \"mutations\"], \"readwrite\");\n const completed = transactionComplete(native);\n try {\n const schemaStore = native.objectStore(\"schema\");\n const savedVersion = await requestResult(schemaStore.get(\"logicalVersion\"));\n const savedComponents = await requestResult(schemaStore.get(\"componentVersions\"));\n const storedVersions = {};\n if (typeof savedComponents === \"object\" && savedComponents !== null && !Array.isArray(savedComponents))\n for (const [id, version] of Object.entries(savedComponents)) {\n if (!Number.isSafeInteger(version) || version < 1)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Stored Sync component \"${id}\" has an invalid version`);\n storedVersions[id] = version;\n }\n if (storedVersions[\"@absolutejs/app\"] === undefined && typeof savedVersion === \"number\")\n storedVersions[\"@absolutejs/app\"] = savedVersion;\n const resolved = resolveSyncLocalSchemaComponents(storedVersions, storageSchema);\n const steps = resolved.components.flatMap((component) => component.steps);\n if (steps.length > 0) {\n await migrateIndexedRows(native.objectStore(\"collections\").openCursor(), (row) => {\n const {\n namespace,\n key,\n protectedRecord,\n ...plain\n } = row;\n const record = protectedRecord ? openProtectedRecord(protectedRecord, preparedProtector, { kind: \"collection\", namespace }) : plain;\n const migrated = migrateSyncLocalCollectionRecord(record, { key, namespace }, steps);\n if (migrated === null)\n return null;\n return protectedRecord && preparedProtector ? {\n key,\n namespace,\n protectedRecord: {\n ...protectedRecord,\n value: preparedProtector.seal(JSON.stringify(migrated), {\n kind: \"collection\",\n name: migrated.collection ?? key,\n namespace\n })\n }\n } : { ...migrated, key, namespace };\n });\n await migrateIndexedRows(native.objectStore(\"mutations\").openCursor(), (row) => {\n const { namespace, protectedRecord, ...plain } = row;\n const record = protectedRecord ? openProtectedRecord(protectedRecord, preparedProtector, { kind: \"mutation\", namespace }) : plain;\n const migrated = migrateSyncLocalMutationRecord(record, { key: record.operationId, namespace }, steps);\n if (migrated === null)\n return null;\n return protectedRecord && preparedProtector ? {\n createdAt: migrated.createdAt,\n namespace,\n operationId: migrated.operationId,\n protectedRecord: {\n ...protectedRecord,\n value: preparedProtector.seal(JSON.stringify(migrated), {\n kind: \"mutation\",\n name: migrated.name,\n namespace\n })\n }\n } : { ...migrated, namespace };\n });\n }\n const nextVersions = { ...storedVersions };\n for (const component of resolved.components)\n nextVersions[component.id] = component.targetVersion;\n await requestResult(schemaStore.put(nextVersions, \"componentVersions\"));\n const app = resolved.components.find((component) => component.id === \"@absolutejs/app\");\n if (app)\n await requestResult(schemaStore.put(app.targetVersion, \"logicalVersion\"));\n await completed;\n return createSyncLocalSchemaStatus(resolved.components, resolved.orphanedComponents, isSchemaBundle(storageSchema));\n } catch (error) {\n try {\n native.abort();\n } catch {}\n await completed.catch(() => {});\n throw error;\n }\n });\n return schemaPromise;\n };\n const transaction = async (namespace, mode, run) => {\n if (namespace.length === 0) {\n throw new Error(\"Sync local-store namespace must not be empty\");\n }\n await prepareSchema();\n const protector = await prepareProtector();\n const db = await database();\n const native = db.transaction([\"metadata\", \"collections\", \"mutations\"], mode);\n const completed = transactionComplete(native);\n const writable = () => {\n if (mode !== \"readwrite\") {\n throw new Error(\"Cannot write in a readonly Sync local transaction\");\n }\n };\n const metadata = native.objectStore(\"metadata\");\n const collections = native.objectStore(\"collections\");\n const mutations = native.objectStore(\"mutations\");\n const tx = {\n getInstallationId: () => requestResult(metadata.get(namespace)),\n setInstallationId: async (installationId) => {\n writable();\n if (installationId.length === 0) {\n throw new Error(\"Sync installation id must not be empty\");\n }\n await requestResult(metadata.put(installationId, namespace));\n },\n getCollection: async (key) => {\n const row = await requestResult(collections.get([namespace, key]));\n if (row === undefined)\n return;\n if (row.protectedRecord)\n return openProtectedRecord(row.protectedRecord, protector, { kind: \"collection\", namespace });\n const {\n namespace: _namespace,\n key: _key,\n protectedRecord: _protected,\n ...record\n } = row;\n return record;\n },\n listCollections: async () => {\n const rows = await requestResult(collections.index(\"namespace\").getAll(namespace));\n return rows.map((row) => ({\n key: row.key,\n record: row.protectedRecord ? openProtectedRecord(row.protectedRecord, protector, { kind: \"collection\", namespace }) : (({\n namespace: _namespace,\n key: _key,\n protectedRecord: _protected,\n ...record\n }) => record)(row)\n }));\n },\n putCollection: async (key, record) => {\n writable();\n await requestResult(collections.put(protector ? {\n key,\n namespace,\n protectedRecord: {\n name: record.collection ?? key,\n protector: protector.id,\n value: protector.seal(JSON.stringify(record), {\n kind: \"collection\",\n name: record.collection ?? key,\n namespace\n })\n }\n } : { ...record, key, namespace }));\n },\n deleteCollection: async (key) => {\n writable();\n await requestResult(collections.delete([namespace, key]));\n },\n listMutations: async () => {\n const rows = await requestResult(mutations.index(\"namespace\").getAll(namespace));\n return rows.map((row) => row.protectedRecord ? openProtectedRecord(row.protectedRecord, protector, { kind: \"mutation\", namespace }) : (({\n namespace: _namespace,\n protectedRecord: _protected,\n ...record\n }) => record)(row)).sort((a, b) => a.createdAt - b.createdAt);\n },\n getMutation: async (operationId) => {\n const row = await requestResult(mutations.get([namespace, operationId]));\n if (row === undefined)\n return;\n if (row.protectedRecord)\n return openProtectedRecord(row.protectedRecord, protector, { kind: \"mutation\", namespace });\n const {\n namespace: _namespace,\n protectedRecord: _protected,\n ...record\n } = row;\n return record;\n },\n putMutation: async (record) => {\n writable();\n await requestResult(mutations.put(protector ? {\n createdAt: record.createdAt,\n namespace,\n operationId: record.operationId,\n protectedRecord: {\n name: record.name,\n protector: protector.id,\n value: protector.seal(JSON.stringify(record), {\n kind: \"mutation\",\n name: record.name,\n namespace\n })\n }\n } : { ...record, namespace }));\n },\n deleteMutation: async (operationId) => {\n writable();\n await requestResult(mutations.delete([namespace, operationId]));\n }\n };\n try {\n const result = await runSyncLocalPolicyTransaction({\n mode,\n now: now(),\n policy: localData,\n protected: protector !== undefined,\n raw: tx,\n run\n });\n await completed;\n return result;\n } catch (error) {\n try {\n native.abort();\n } catch {}\n await completed.catch(() => {});\n throw error;\n }\n };\n return {\n transaction,\n getSchemaStatus: async () => ({ ...await prepareSchema() }),\n deleteNamespace: async (namespace) => {\n await prepareSchema();\n const db = await database();\n const native = db.transaction([\"metadata\", \"collections\", \"mutations\"], \"readwrite\");\n const completed = transactionComplete(native);\n await requestResult(native.objectStore(\"metadata\").delete(namespace));\n await deleteIndexRows(native.objectStore(\"collections\").index(\"namespace\"), namespace);\n await deleteIndexRows(native.objectStore(\"mutations\").index(\"namespace\"), namespace);\n await completed;\n }\n };\n};\nvar randomId = () => {\n const id = globalThis.crypto?.randomUUID?.();\n if (id === undefined) {\n throw new Error(\"Sync operation ids require crypto.randomUUID or a createId callback\");\n }\n return id;\n};\nvar ensureSyncInstallationId = (store, namespace, createId = randomId) => store.transaction(namespace, \"readwrite\", async (tx) => {\n const existing = await tx.getInstallationId();\n if (existing !== undefined)\n return existing;\n const installationId = createId();\n await tx.setInstallationId(installationId);\n return installationId;\n});\nvar createSyncOperationId = (installationId, createId = randomId) => `${installationId}:${createId()}`;\n\n// src/reconciliation.ts\nclass SyncMutationRejectedError extends Error {\n operationId;\n rejection;\n constructor(rejection, operationId) {\n super(rejection.message);\n this.name = \"SyncMutationRejectedError\";\n this.operationId = operationId;\n this.rejection = rejection;\n }\n}\n\n// src/client/syncClient.ts\nvar serverFrameTypes2 = [\n \"snapshot\",\n \"diff\",\n \"frame\",\n \"error\",\n \"ack\",\n \"reject\"\n];\nvar canonicalJson = (value) => {\n const seen = new Set;\n const normalize = (input) => {\n if (input === undefined)\n return null;\n if (input === null || typeof input === \"string\" || typeof input === \"boolean\") {\n return input;\n }\n if (typeof input === \"number\") {\n if (!Number.isFinite(input)) {\n throw new Error(\"Sync collection params must contain finite numbers; provide an explicit localKey\");\n }\n return input;\n }\n if (typeof input !== \"object\") {\n throw new Error(\"Sync collection params must be JSON-serializable; provide an explicit localKey\");\n }\n if (seen.has(input)) {\n throw new Error(\"Sync collection params contain a cycle; provide an explicit localKey\");\n }\n seen.add(input);\n try {\n if (Array.isArray(input))\n return input.map(normalize);\n const prototype = Object.getPrototypeOf(input);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new Error(\"Sync collection params must use plain objects; provide an explicit localKey\");\n }\n return Object.fromEntries(Object.entries(input).sort(([a], [b]) => a.localeCompare(b)).map(([key, item]) => [key, normalize(item)]));\n } finally {\n seen.delete(input);\n }\n };\n return JSON.stringify(normalize(value));\n};\nvar defaultLocalKey = (collection, params) => params === undefined ? collection : `${collection}:${canonicalJson(params)}`;\nvar ticketAuthenticatedSocketUrl = (url) => {\n if (/(?:\\?|&)__absolute_auth=/u.test(url))\n return url;\n const hashAt = url.indexOf(\"#\");\n const beforeHash = hashAt === -1 ? url : url.slice(0, hashAt);\n const hash = hashAt === -1 ? \"\" : url.slice(hashAt);\n const separator = beforeHash.includes(\"?\") ? \"&\" : \"?\";\n return `${beforeHash}${separator}__absolute_auth=ticket${hash}`;\n};\nvar createSyncClient = (options) => {\n const runtime = getSyncClientRuntimeTransport();\n const socketTicket = options.socketTicket ?? runtime?.socketTicket;\n const durable = options.durable ?? runtime?.durable;\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const maxAttempts = durable?.maxAttempts ?? 5;\n if (!Number.isInteger(maxAttempts) || maxAttempts < 1) {\n throw new TypeError(\"durable.maxAttempts must be a positive integer\");\n }\n const retryBackoff = durable?.retryBackoff ?? ((attempt) => Math.min(30000, 500 * 2 ** (attempt - 1)));\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createSyncClient requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const entries = new Map;\n const pending = [];\n const mutationOwner = new Map;\n const deadLetters = new Map;\n const retryTimers = new Map;\n const statusListeners = new Set;\n let nextEntryId = 0;\n let mutationSeq = 0;\n let installationId;\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let immediateReconnect = false;\n let clientStatus = {\n automaticResolutions: 0,\n connection: \"connecting\",\n conflicts: 0,\n deadLetters: 0,\n pending: 0\n };\n const snapshotStatus = () => ({ ...clientStatus });\n const updateStatus = (patch = {}) => {\n const oldestPendingAt = pending.reduce((oldest, mutation) => oldest === undefined ? mutation.createdAt : Math.min(oldest, mutation.createdAt), undefined);\n const retained = [...deadLetters.values()];\n const oldestDeadLetterAt = retained.reduce((oldest, record) => {\n const at = record.deadLetteredAt ?? record.createdAt;\n return oldest === undefined ? at : Math.min(oldest, at);\n }, undefined);\n clientStatus = {\n ...clientStatus,\n ...patch,\n pending: pending.length,\n deadLetters: deadLetters.size,\n conflicts: retained.filter((record) => record.rejection?.kind === \"conflict\").length,\n ...oldestDeadLetterAt === undefined ? {} : { oldestDeadLetterAt },\n ...oldestPendingAt === undefined ? {} : { oldestPendingAt }\n };\n if (oldestPendingAt === undefined)\n delete clientStatus.oldestPendingAt;\n if (oldestDeadLetterAt === undefined)\n delete clientStatus.oldestDeadLetterAt;\n for (const listener of statusListeners)\n listener(snapshotStatus());\n };\n const notify = (entry) => {\n for (const listener of entry.listeners) {\n listener(entry.state);\n }\n };\n const rebuild = (entry, patch = {}) => {\n const working = new Map(entry.confirmed);\n const draft = {\n set: (row) => working.set(entry.key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n if (mutation.ownerKey === entry.localKey) {\n mutation.optimistic?.(draft);\n }\n for (const operation of mutation.optimisticOperations) {\n if (operation.collection !== entry.localKey)\n continue;\n if (operation.type === \"delete\")\n draft.delete(operation.key);\n else\n draft.set(operation.row);\n }\n }\n entry.state = {\n ...entry.state,\n ...patch,\n data: [...working.values()]\n };\n };\n const recompute = (entry, patch = {}) => {\n rebuild(entry, patch);\n notify(entry);\n };\n const applyDiffToConfirmed = (entry, diff) => {\n for (const row of diff.removed) {\n entry.confirmed.delete(entry.key(row));\n }\n for (const row of diff.added) {\n entry.confirmed.set(entry.key(row), row);\n }\n for (const row of diff.changed) {\n entry.confirmed.set(entry.key(row), row);\n }\n };\n const settlePending = (mutationId) => {\n const mutation = mutationOwner.get(mutationId);\n mutationOwner.delete(mutationId);\n if (mutation === undefined) {\n return;\n }\n const index = pending.findIndex((item) => item === mutation);\n if (index === -1) {\n return;\n }\n pending.splice(index, 1);\n if (mutation.operationId !== undefined) {\n const timer = retryTimers.get(mutation.operationId);\n if (timer !== undefined)\n clearTimeout(timer);\n retryTimers.delete(mutation.operationId);\n }\n updateStatus();\n return mutation;\n };\n const reportStorageError = (error) => {\n durable?.onError?.(error);\n options.onError?.(error);\n };\n let localWriteTail = Promise.resolve();\n const queueLocalWrite = (run) => {\n const next = localWriteTail.then(run);\n localWriteTail = next.then(() => {\n return;\n }, (error) => reportStorageError(error));\n return next;\n };\n const persistEntries = (affected) => {\n if (durable === undefined)\n return;\n const snapshots = new Map;\n for (const entry of affected) {\n snapshots.set(entry.localKey, {\n rows: [...entry.confirmed.values()],\n version: entry.appliedVersion,\n cursor: entry.cursor,\n collection: entry.collection,\n params: entry.params,\n ...entry.headlessKey ? { headlessKey: entry.headlessKey } : {}\n });\n }\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n for (const [key, record] of snapshots) {\n await tx.putCollection(key, record);\n }\n })).catch(() => {});\n };\n const recomputeMutationEntries = (mutation) => {\n const keys = new Set([\n mutation.ownerKey,\n ...mutation.optimisticOperations.map((operation) => operation.collection)\n ]);\n for (const entry of entries.values()) {\n if (keys.has(entry.localKey))\n recompute(entry);\n }\n };\n let sendMutate;\n const finishPending = (mutationId, result, error) => {\n const mutation = settlePending(mutationId);\n if (mutation === undefined)\n return;\n recomputeMutationEntries(mutation);\n if (error === undefined)\n mutation.resolve?.(result);\n else\n mutation.reject?.(error);\n };\n const finishDurablePending = (mutationId, echoedOperationId, result, error) => {\n const mutation = mutationOwner.get(mutationId);\n if (mutation?.operationId === undefined || durable === undefined) {\n finishPending(mutationId, result, error);\n return;\n }\n if (echoedOperationId !== mutation.operationId) {\n reportStorageError(new Error(`Durable mutation acknowledgment identity mismatch for ${mutation.operationId}`));\n return;\n }\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.deleteMutation(mutation.operationId))).then(() => finishPending(mutationId, result, error)).catch(() => {});\n };\n const deadLetterPending = (mutationId, rejection) => {\n const mutation = mutationOwner.get(mutationId);\n if (mutation?.operationId === undefined || durable === undefined) {\n finishPending(mutationId, undefined, new SyncMutationRejectedError(rejection, mutation?.operationId));\n return;\n }\n const deadLetteredAt = Date.now();\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const current = await tx.getMutation(mutation.operationId);\n if (current === undefined)\n return;\n const record = {\n ...current,\n attempts: mutation.attempts,\n deadLetteredAt,\n lastError: rejection.message,\n rejection,\n state: \"dead-letter\"\n };\n delete record.nextAttemptAt;\n await tx.putMutation(record);\n deadLetters.set(record.operationId, record);\n })).then(() => {\n updateStatus({ lastError: rejection.message });\n finishPending(mutationId, undefined, new SyncMutationRejectedError(rejection, mutation.operationId));\n }).catch(() => {});\n };\n const retryRejectedPending = (mutation, rejection) => {\n if (mutation.operationId === undefined || durable === undefined) {\n deadLetterPending(mutation.mutationId, rejection);\n return;\n }\n if (mutation.attempts >= maxAttempts) {\n deadLetterPending(mutation.mutationId, rejection);\n return;\n }\n const delay = Math.max(0, rejection.retryAfterMs ?? retryBackoff(mutation.attempts));\n mutation.nextAttemptAt = Date.now() + delay;\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const record = await tx.getMutation(mutation.operationId);\n if (record === undefined)\n return;\n await tx.putMutation({\n ...record,\n attempts: mutation.attempts,\n lastError: rejection.message,\n nextAttemptAt: mutation.nextAttemptAt,\n rejection,\n state: \"pending\"\n });\n })).then(() => {\n updateStatus({ lastError: rejection.message });\n sendMutate(mutation);\n }).catch(() => {});\n };\n const resolveConflictedPending = (mutation, rejection) => {\n const policy = mutation.conflictPolicy;\n if (!policy || policy.strategy === \"manual\")\n return false;\n const lastConflictAt = Date.now();\n if (policy.strategy === \"server-wins\") {\n queueLocalWrite(() => durable === undefined || mutation.operationId === undefined ? Promise.resolve() : durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.deleteMutation(mutation.operationId))).then(() => {\n updateStatus({\n automaticResolutions: clientStatus.automaticResolutions + 1,\n lastConflictAt,\n lastError: rejection.message\n });\n finishPending(mutation.mutationId, undefined, new SyncMutationRejectedError(rejection, mutation.operationId));\n }).catch(() => {});\n return true;\n }\n const conflictAttempts = mutation.conflictAttempts ?? 0;\n if (conflictAttempts >= (policy.maxAttempts ?? 1))\n return false;\n mutation.conflictAttempts = conflictAttempts + 1;\n mutation.nextAttemptAt = undefined;\n queueLocalWrite(() => durable === undefined || mutation.operationId === undefined ? Promise.resolve() : durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const record = await tx.getMutation(mutation.operationId);\n if (record === undefined)\n return;\n await tx.putMutation({\n ...record,\n attempts: mutation.attempts,\n conflictAttempts: mutation.conflictAttempts,\n lastError: rejection.message,\n rejection,\n state: \"pending\"\n });\n })).then(() => {\n updateStatus({\n automaticResolutions: clientStatus.automaticResolutions + 1,\n lastConflictAt,\n lastError: rejection.message\n });\n sendMutate(mutation);\n }).catch(() => {});\n return true;\n };\n const applyFrame = (frame) => {\n updateStatus({ connection: \"online\" });\n if (frame.type === \"snapshot\") {\n const entry = entries.get(frame.id);\n if (entry === undefined) {\n return;\n }\n entry.confirmed.clear();\n for (const row of frame.rows) {\n entry.confirmed.set(entry.key(row), row);\n }\n if (frame.version !== undefined) {\n entry.appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n persistEntries([entry]);\n recompute(entry, { status: \"ready\", error: undefined });\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"diff\") {\n const entry = entries.get(frame.id);\n if (entry === undefined) {\n return;\n }\n applyDiffToConfirmed(entry, frame);\n if (frame.version !== undefined) {\n entry.appliedVersion = Math.max(entry.appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n persistEntries([entry]);\n recompute(entry);\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"frame\") {\n const affected = new Set;\n for (const diff of frame.diffs) {\n const entry = entries.get(diff.id);\n if (entry === undefined) {\n continue;\n }\n applyDiffToConfirmed(entry, diff);\n if (frame.version !== undefined) {\n entry.appliedVersion = Math.max(entry.appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n rebuild(entry);\n affected.add(entry);\n }\n persistEntries(affected);\n for (const entry of affected) {\n notify(entry);\n }\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"error\") {\n if (frame.id !== undefined) {\n const entry = entries.get(frame.id);\n if (entry !== undefined) {\n recompute(entry, { error: frame.message });\n }\n }\n options.onError?.(frame.message);\n updateStatus({ lastError: String(frame.message) });\n } else if (frame.type === \"ack\") {\n updateStatus({ lastSuccessfulPushAt: Date.now() });\n finishDurablePending(frame.mutationId, frame.operationId, frame.result);\n } else if (frame.type === \"reject\") {\n const mutation = mutationOwner.get(frame.mutationId);\n if (mutation?.operationId !== undefined && frame.operationId !== mutation.operationId) {\n reportStorageError(new Error(`Durable mutation rejection identity mismatch for ${mutation.operationId}`));\n return;\n }\n const rejection = frame.rejection ?? {\n kind: \"permanent\",\n message: String(frame.message)\n };\n if (rejection.kind === \"conflict\" && mutation !== undefined && resolveConflictedPending(mutation, rejection)) {\n return;\n }\n if (rejection.kind === \"retryable\" && mutation !== undefined) {\n retryRejectedPending(mutation, rejection);\n } else {\n deadLetterPending(frame.mutationId, rejection);\n }\n }\n };\n const wsSend = (payload) => {\n socket?.send(payload);\n };\n const sendSubscribe = (entry) => {\n const since = entry.cursor ?? (entry.appliedVersion > 0 ? entry.appliedVersion : undefined);\n wsSend(serializer.encodeClient({\n type: \"subscribe\",\n id: entry.id,\n collection: entry.collection,\n params: entry.params,\n since\n }));\n };\n sendMutate = (mutation) => {\n if (mutation.nextAttemptAt !== undefined) {\n const delay = mutation.nextAttemptAt - Date.now();\n if (delay > 0 && mutation.operationId !== undefined) {\n if (!retryTimers.has(mutation.operationId)) {\n const timer = setTimeout(() => {\n retryTimers.delete(mutation.operationId);\n mutation.nextAttemptAt = undefined;\n sendMutate(mutation);\n }, delay);\n retryTimers.set(mutation.operationId, timer);\n }\n return;\n }\n mutation.nextAttemptAt = undefined;\n }\n if (!connected)\n return;\n const payload = serializer.encodeClient({\n type: \"mutate\",\n mutationId: mutation.mutationId,\n operationId: mutation.operationId,\n name: mutation.name,\n args: mutation.args\n });\n if (durable === undefined || mutation.operationId === undefined) {\n wsSend(payload);\n return;\n }\n if (mutation.sending)\n return;\n mutation.sending = true;\n mutation.attempts += 1;\n const targetSocket = socket;\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const record = await tx.getMutation(mutation.operationId);\n if (record !== undefined) {\n await tx.putMutation({\n ...record,\n attempts: mutation.attempts,\n state: \"pending\",\n nextAttemptAt: undefined\n });\n }\n })).catch(() => {}).finally(() => {\n mutation.sending = false;\n if (connected && socket === targetSocket && pending.includes(mutation)) {\n targetSocket?.send(payload);\n }\n });\n };\n const initializeDurable = async () => {\n if (durable === undefined)\n return;\n installationId = await ensureSyncInstallationId(durable.store, durable.namespace, durable.createId);\n const records = await durable.store.transaction(durable.namespace, \"readonly\", (tx) => tx.listMutations());\n for (const record of records) {\n if (record.state === \"dead-letter\") {\n deadLetters.set(record.operationId, record);\n continue;\n }\n mutationSeq += 1;\n const mutation = {\n mutationId: mutationSeq,\n operationId: record.operationId,\n ownerKey: record.owner ?? record.optimistic[0]?.collection ?? \"\",\n name: record.name,\n args: record.args,\n optimisticOperations: record.optimistic,\n inverse: record.inverse,\n attempts: record.attempts,\n createdAt: record.createdAt,\n conflictAttempts: record.conflictAttempts,\n conflictPolicy: record.conflictPolicy,\n nextAttemptAt: record.nextAttemptAt,\n supersedesOperationId: record.supersedesOperationId\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n }\n updateStatus();\n };\n const durableReady = durable === undefined ? Promise.resolve() : initializeDurable().catch((error) => {\n reportStorageError(error);\n throw error;\n });\n const hydrateEntry = async (entry) => {\n if (durable === undefined)\n return;\n await durableReady;\n const record = await durable.store.transaction(durable.namespace, \"readonly\", (tx) => tx.getCollection(entry.localKey));\n if (entry.closed || record === undefined) {\n if (!entry.closed)\n recompute(entry);\n return;\n }\n entry.confirmed.clear();\n for (const row of record.rows) {\n entry.confirmed.set(entry.key(row), row);\n }\n entry.appliedVersion = record.version;\n entry.cursor = record.cursor;\n recompute(entry);\n };\n const connect = () => {\n if (closed) {\n return;\n }\n reconnectTimer = undefined;\n updateStatus({ connection: \"connecting\" });\n const ws = new Impl(socketTicket ? ticketAuthenticatedSocketUrl(options.url) : options.url);\n socket = ws;\n const sendInitialFrames = () => {\n if (socket !== ws || closed)\n return;\n if (socketTicket) {\n socketTicket().then((ticket) => {\n if (socket !== ws || closed)\n return;\n wsSend(serializer.encodeClient({\n type: \"authenticate\",\n ticket\n }));\n connected = true;\n for (const entry of entries.values())\n sendSubscribe(entry);\n for (const mutation of pending)\n sendMutate(mutation);\n }).catch((error) => {\n options.onError?.(error);\n updateStatus({ lastError: String(error) });\n ws.close();\n });\n return;\n }\n connected = true;\n for (const entry of entries.values()) {\n sendSubscribe(entry);\n }\n for (const mutation of pending)\n sendMutate(mutation);\n };\n ws.onopen = () => {\n if (durable === undefined) {\n sendInitialFrames();\n return;\n }\n Promise.all([...entries.values()].map((entry) => entry.hydrated)).then(sendInitialFrames).catch((error) => {\n reportStorageError(error);\n ws.close();\n });\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes2)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n if (socket === ws)\n socket = undefined;\n connected = false;\n if (closed) {\n return;\n }\n updateStatus({ connection: \"offline\" });\n if (immediateReconnect) {\n immediateReconnect = false;\n connect();\n return;\n }\n if (reconnectMs <= 0)\n return;\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect, delay);\n };\n };\n if (durable === undefined)\n connect();\n else\n durableReady.then(connect).catch(() => {});\n const normalizeOptimisticOperations = (ownerKey, operations) => (operations ?? []).map((operation) => operation.type === \"delete\" ? {\n type: \"delete\",\n collection: operation.collection ?? ownerKey,\n key: operation.key\n } : {\n type: operation.type,\n collection: operation.collection ?? ownerKey,\n row: operation.row\n });\n const captureInverse = (operations) => {\n const working = new Map;\n const entryFor = (localKey) => {\n const entry = [...entries.values()].find((item) => item.localKey === localKey);\n if (entry === undefined) {\n throw new Error(`Durable optimistic operation targets unopened collection \"${localKey}\"`);\n }\n let rows = working.get(localKey);\n if (rows === undefined) {\n rows = new Map(entry.state.data.map((row) => [entry.key(row), row]));\n working.set(localKey, rows);\n }\n return { entry, rows };\n };\n const inverse = [];\n for (const operation of operations) {\n const { entry, rows } = entryFor(operation.collection);\n if (operation.type === \"delete\") {\n const existing2 = rows.get(operation.key);\n if (existing2 !== undefined) {\n inverse.unshift({\n type: \"insert\",\n collection: operation.collection,\n row: existing2\n });\n }\n rows.delete(operation.key);\n continue;\n }\n const rowKey = entry.key(operation.row);\n const existing = rows.get(rowKey);\n inverse.unshift(existing === undefined ? {\n type: \"delete\",\n collection: operation.collection,\n key: rowKey\n } : {\n type: \"update\",\n collection: operation.collection,\n row: existing\n });\n rows.set(rowKey, operation.row);\n }\n return inverse;\n };\n const collection = (handleOptions) => {\n const entryId = `c${nextEntryId}`;\n nextEntryId += 1;\n const localKey = handleOptions.localKey ?? defaultLocalKey(handleOptions.collection, handleOptions.params);\n if (localKey.length === 0) {\n throw new Error(\"Sync collection localKey must not be empty\");\n }\n const entry = {\n id: entryId,\n localKey,\n collection: handleOptions.collection,\n params: handleOptions.params,\n key: handleOptions.key ?? ((row) => row.id),\n headlessKey: handleOptions.key === undefined ? \"id\" : undefined,\n confirmed: new Map,\n state: { data: [], status: \"connecting\", error: undefined },\n listeners: new Set,\n appliedVersion: 0,\n cursor: undefined,\n closed: false,\n hydrated: Promise.resolve()\n };\n entries.set(entryId, entry);\n entry.hydrated = hydrateEntry(entry);\n if (connected)\n entry.hydrated.then(() => sendSubscribe(entry)).catch(reportStorageError);\n return {\n get: () => entry.state,\n subscribe: (listener) => {\n const typed = listener;\n entry.listeners.add(typed);\n listener(entry.state);\n return () => {\n entry.listeners.delete(typed);\n };\n },\n mutate: (mutateOptions) => new Promise((resolve, reject) => {\n const addPending = (operationId, optimisticOperations, inverse, createdAt = Date.now(), conflictPolicy) => {\n mutationSeq += 1;\n const mutation = {\n mutationId: mutationSeq,\n operationId,\n ownerKey: entry.localKey,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: mutateOptions.optimistic,\n optimisticOperations,\n inverse,\n attempts: 0,\n createdAt,\n conflictPolicy,\n resolve: (result) => resolve(result),\n reject\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n updateStatus();\n recomputeMutationEntries(mutation);\n sendMutate(mutation);\n };\n if (durable === undefined) {\n const optimisticOperations = normalizeOptimisticOperations(entry.localKey, mutateOptions.optimisticOperations);\n const inverse = captureInverse(optimisticOperations);\n addPending(undefined, optimisticOperations, inverse);\n return;\n }\n (async () => {\n await entry.hydrated;\n const optimisticOperations = normalizeOptimisticOperations(entry.localKey, mutateOptions.optimisticOperations);\n const inverse = captureInverse(optimisticOperations);\n await durableReady;\n const operationId = createSyncOperationId(installationId, durable.createId);\n const createdAt = Date.now();\n const stored = await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const conflictPolicy = tx.resolveMutationPolicy?.(mutateOptions.name)?.conflict;\n const record = {\n operationId,\n owner: entry.localKey,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: optimisticOperations,\n inverse,\n createdAt,\n attempts: 0,\n state: \"pending\",\n ...conflictPolicy ? { conflictPolicy } : {}\n };\n await tx.putMutation(record);\n return record;\n }));\n addPending(operationId, optimisticOperations, inverse, createdAt, stored.conflictPolicy);\n })().catch(reject);\n }),\n close: () => {\n if (entry.closed) {\n return;\n }\n entry.closed = true;\n entries.delete(entryId);\n if (connected) {\n wsSend(serializer.encodeClient({\n type: \"unsubscribe\",\n id: entryId\n }));\n }\n }\n };\n };\n const listDeadLetters = async () => {\n if (durable === undefined)\n return [];\n await durableReady;\n return [...deadLetters.values()].sort((a, b) => a.createdAt - b.createdAt).map((record) => structuredClone(record));\n };\n const retryDeadLetter = async (operationId) => {\n if (durable === undefined) {\n throw new Error(\"Dead-letter retry requires a durable Sync client\");\n }\n await durableReady;\n if (closed)\n throw new Error(\"Cannot retry a dead letter on a closed client\");\n const record = await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const current = await tx.getMutation(operationId);\n if (current?.state !== \"dead-letter\") {\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n }\n const next = {\n ...current,\n attempts: 0,\n state: \"pending\"\n };\n delete next.deadLetteredAt;\n delete next.lastError;\n delete next.nextAttemptAt;\n delete next.rejection;\n await tx.putMutation(next);\n return next;\n }));\n deadLetters.delete(operationId);\n mutationSeq += 1;\n const mutation = {\n args: record.args,\n attempts: 0,\n createdAt: record.createdAt,\n conflictAttempts: record.conflictAttempts,\n conflictPolicy: record.conflictPolicy,\n inverse: record.inverse,\n mutationId: mutationSeq,\n name: record.name,\n operationId: record.operationId,\n optimisticOperations: record.optimistic,\n ownerKey: record.owner ?? record.optimistic[0]?.collection ?? \"\"\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n recomputeMutationEntries(mutation);\n updateStatus();\n sendMutate(mutation);\n };\n const rebaseDeadLetter = async (operationId, args) => {\n if (durable === undefined)\n throw new Error(\"Dead-letter rebase requires a durable Sync client\");\n await durableReady;\n if (closed)\n throw new Error(\"Cannot rebase a dead letter on a closed client\");\n const nextOperationId = createSyncOperationId(installationId, durable.createId);\n const record = await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const current = await tx.getMutation(operationId);\n if (current?.state !== \"dead-letter\")\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n const next = {\n ...current,\n args,\n attempts: 0,\n conflictAttempts: 0,\n createdAt: Date.now(),\n operationId: nextOperationId,\n state: \"pending\",\n supersedesOperationId: operationId\n };\n delete next.deadLetteredAt;\n delete next.lastError;\n delete next.nextAttemptAt;\n delete next.rejection;\n await tx.deleteMutation(operationId);\n await tx.putMutation(next);\n return next;\n }));\n deadLetters.delete(operationId);\n mutationSeq += 1;\n const mutation = {\n args: record.args,\n attempts: 0,\n conflictAttempts: 0,\n conflictPolicy: record.conflictPolicy,\n createdAt: record.createdAt,\n inverse: record.inverse,\n mutationId: mutationSeq,\n name: record.name,\n operationId: record.operationId,\n optimisticOperations: record.optimistic,\n ownerKey: record.owner ?? record.optimistic[0]?.collection ?? \"\",\n supersedesOperationId: operationId\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n recomputeMutationEntries(mutation);\n updateStatus();\n sendMutate(mutation);\n return nextOperationId;\n };\n const discardDeadLetter = async (operationId) => {\n if (durable === undefined) {\n throw new Error(\"Dead-letter discard requires a durable Sync client\");\n }\n await durableReady;\n if (!deadLetters.has(operationId)) {\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n }\n await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.deleteMutation(operationId)));\n deadLetters.delete(operationId);\n updateStatus();\n };\n const subscribeStatus = (listener) => {\n statusListeners.add(listener);\n listener(snapshotStatus());\n return () => {\n statusListeners.delete(listener);\n };\n };\n const flush = async ({ timeoutMs = 1e4 } = {}) => {\n if (!Number.isFinite(timeoutMs) || timeoutMs < 0) {\n throw new TypeError(\"Sync flush timeoutMs must be a non-negative number\");\n }\n await durableReady;\n if (pending.length === 0) {\n return {\n deadLetters: deadLetters.size,\n pending: 0,\n timedOut: false\n };\n }\n if (!connected)\n reconnect();\n const timedOut = await new Promise((resolve) => {\n let settled = false;\n let remove = () => {\n return;\n };\n const timer = setTimeout(() => {\n if (settled)\n return;\n settled = true;\n remove();\n resolve(true);\n }, timeoutMs);\n remove = subscribeStatus((current) => {\n if (settled || current.pending > 0)\n return;\n settled = true;\n clearTimeout(timer);\n remove();\n resolve(false);\n });\n });\n return {\n deadLetters: deadLetters.size,\n pending: pending.length,\n timedOut\n };\n };\n let removeRuntimeClient;\n let removeInspectionClient;\n const close = () => {\n if (closed)\n return;\n closed = true;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n socket?.close();\n for (const timer of retryTimers.values())\n clearTimeout(timer);\n retryTimers.clear();\n entries.clear();\n mutationOwner.clear();\n pending.length = 0;\n updateStatus({ connection: \"closed\" });\n statusListeners.clear();\n removeRuntimeClient?.();\n removeRuntimeClient = undefined;\n removeInspectionClient?.();\n removeInspectionClient = undefined;\n };\n const disconnect = () => {\n if (closed || socket === undefined) {\n return;\n }\n socket.close();\n };\n const reconnect = () => {\n if (closed)\n return;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n reconnectTimer = undefined;\n }\n const current = socket;\n if (current && current.readyState !== current.CLOSED) {\n immediateReconnect = true;\n current.close();\n return;\n }\n socket = undefined;\n connect();\n };\n const client = {\n close,\n collection,\n discardDeadLetter,\n disconnect,\n flush,\n listDeadLetters,\n rebaseDeadLetter,\n reconnect,\n retryDeadLetter,\n status: snapshotStatus,\n subscribeStatus\n };\n removeRuntimeClient = runtime?.registerClient?.(client) ?? undefined;\n removeInspectionClient = registerSyncRuntimeClient(client);\n return client;\n};\n// src/client/syncStore.ts\nvar serverFrameTypes3 = [\"snapshot\", \"diff\", \"error\"];\nvar SUBSCRIPTION_ID2 = \"s\";\nvar syncStore = (options) => {\n const key = options.key ?? ((row) => row.id);\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const reconcileGraceMs = options.reconcileGraceMs ?? 3000;\n const mutations = options.mutations ?? {};\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"syncStore requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const confirmed = new Map;\n const pending = [];\n let mutationSeq = 0;\n let state = {\n data: options.initialData ? [...options.initialData] : [],\n status: \"connecting\",\n error: undefined\n };\n if (options.initialData) {\n for (const row of options.initialData) {\n confirmed.set(key(row), row);\n }\n }\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n const recompute = (patch = {}) => {\n const working = new Map(confirmed);\n const draft = {\n set: (row) => working.set(key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n mutation.optimistic?.(draft);\n }\n setState({ ...patch, data: [...working.values()] });\n };\n const persist = () => {\n options.storage?.save(pending.map((mutation) => ({\n mutationId: mutation.id,\n name: mutation.name,\n args: mutation.args\n })));\n };\n const dropPending = (mutation) => {\n const index = pending.indexOf(mutation);\n if (index !== -1) {\n pending.splice(index, 1);\n }\n if (mutation.graceTimer !== undefined) {\n clearTimeout(mutation.graceTimer);\n }\n };\n const reconcileSettled = () => {\n let changed = false;\n for (const mutation of [...pending]) {\n if (!mutation.settled) {\n continue;\n }\n let reflected = true;\n for (const [rowKey, kind] of mutation.touched) {\n const present = confirmed.has(rowKey);\n if (kind === \"set\" ? !present : present) {\n reflected = false;\n break;\n }\n }\n if (reflected) {\n dropPending(mutation);\n changed = true;\n }\n }\n if (changed) {\n recompute();\n }\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let appliedVersion = 0;\n let appliedCursor;\n const applyFrame = (frame) => {\n if (frame.type === \"snapshot\") {\n confirmed.clear();\n for (const row of frame.rows) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n recompute({ status: \"ready\", error: undefined });\n reconcileSettled();\n } else if (frame.type === \"diff\") {\n for (const row of frame.removed) {\n confirmed.delete(key(row));\n }\n for (const row of frame.added) {\n confirmed.set(key(row), row);\n }\n for (const row of frame.changed) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = Math.max(appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n recompute();\n reconcileSettled();\n } else if (frame.type === \"error\") {\n setState({ error: frame.message });\n options.onError?.(frame.message);\n }\n };\n const runMutation = async (mutation) => {\n if (mutation.inFlight || mutation.settled) {\n return;\n }\n const run = mutations[mutation.name];\n if (run === undefined) {\n dropPending(mutation);\n recompute();\n mutation.reject(new Error(`Unknown mutation \"${mutation.name}\"`));\n return;\n }\n mutation.inFlight = true;\n try {\n const result = await run(mutation.args);\n mutation.inFlight = false;\n mutation.settled = true;\n mutation.resolve(result);\n persist();\n reconcileSettled();\n if (pending.includes(mutation)) {\n mutation.graceTimer = setTimeout(() => {\n dropPending(mutation);\n recompute();\n }, reconcileGraceMs);\n }\n } catch (error) {\n mutation.inFlight = false;\n if (connected) {\n dropPending(mutation);\n recompute();\n persist();\n mutation.reject(error);\n } else {\n options.onError?.(error);\n }\n }\n };\n const connect = () => {\n if (closed) {\n return;\n }\n setState({ status: \"connecting\" });\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"subscribe\",\n id: SUBSCRIPTION_ID2,\n collection: options.collection,\n params: options.params,\n since: appliedCursor ?? (appliedVersion > 0 ? appliedVersion : undefined)\n }));\n for (const mutation of pending) {\n if (!mutation.settled && !mutation.inFlight) {\n runMutation(mutation);\n }\n }\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes3)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect, delay);\n };\n };\n const eagerHydrate = async () => {\n if (options.hydrate === undefined || options.initialData !== undefined) {\n return;\n }\n try {\n const rows = await options.hydrate();\n if (state.status !== \"ready\") {\n confirmed.clear();\n for (const row of rows) {\n confirmed.set(key(row), row);\n }\n recompute({ status: \"ready\" });\n }\n } catch (error) {\n options.onError?.(error);\n }\n };\n const hydratePersisted = async () => {\n if (options.storage === undefined) {\n return;\n }\n const records = await options.storage.load();\n for (const record of records) {\n if (pending.some((m) => m.id === record.mutationId)) {\n continue;\n }\n pending.push({\n id: record.mutationId,\n name: record.name,\n args: record.args,\n touched: new Map,\n settled: false,\n inFlight: false,\n resolve: () => {},\n reject: () => {}\n });\n mutationSeq = Math.max(mutationSeq, record.mutationId);\n }\n if (connected) {\n for (const mutation of pending) {\n runMutation(mutation);\n }\n }\n };\n connect();\n eagerHydrate();\n hydratePersisted();\n const collectTouched = (optimistic) => {\n const touched = new Map;\n optimistic?.({\n set: (row) => touched.set(key(row), \"set\"),\n delete: (rowKey) => touched.set(rowKey, \"delete\")\n });\n return touched;\n };\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n mutate: (name, args, mutateOptions) => new Promise((resolve, reject) => {\n const mutation = {\n id: mutationSeq += 1,\n name,\n args,\n touched: collectTouched(mutateOptions?.optimistic),\n optimistic: mutateOptions?.optimistic,\n settled: false,\n inFlight: false,\n resolve,\n reject\n };\n pending.push(mutation);\n persist();\n recompute();\n runMutation(mutation);\n }),\n refetch: async () => {\n if (options.hydrate === undefined) {\n return;\n }\n const rows = await options.hydrate();\n confirmed.clear();\n for (const row of rows) {\n confirmed.set(key(row), row);\n }\n recompute({ status: \"ready\" });\n },\n close: () => {\n if (closed) {\n return;\n }\n closed = true;\n connected = false;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n try {\n socket?.send(serializer.encodeClient({\n type: \"unsubscribe\",\n id: SUBSCRIPTION_ID2\n }));\n socket?.close();\n } catch {}\n for (const mutation of pending.splice(0)) {\n if (mutation.graceTimer !== undefined) {\n clearTimeout(mutation.graceTimer);\n }\n mutation.reject(new Error(\"sync store closed\"));\n }\n persist();\n setState({ status: \"closed\" });\n listeners.clear();\n }\n };\n};\nvar unwrapEden = async (response) => {\n const { data, error } = await response;\n if (error !== null && error !== undefined) {\n throw error;\n }\n return data;\n};\nexport {\n validateSyncLocalDataPolicy,\n unwrapEden,\n syncStore,\n runSyncLocalPolicyTransaction,\n runHeadlessSync,\n retrySyncRuntimeDeadLetter,\n resolveSyncLocalSchemaComponents,\n resolveSyncLocalMutationPolicy,\n resolveSyncLocalMigrations,\n resolveSyncLocalDataPolicy,\n resolveSyncLocalCollectionPolicy,\n registerSyncRuntimeClient,\n rebaseSyncRuntimeDeadLetter,\n normalizeSyncLocalSchemaComponents,\n migrateSyncLocalMutationRecord,\n migrateSyncLocalCollectionRecord,\n localStorageMutationStorage,\n localStorageCollectionCache,\n jsonFetcher,\n installSyncClientRuntimeTransport,\n inspectSyncRuntime,\n indexedDbCollectionCache,\n getSyncClientRuntimeTransport,\n ensureSyncInstallationId,\n discardSyncRuntimeDeadLetter,\n createSyncSubscriber,\n createSyncOperationId,\n createSyncLocalSchemaStatus,\n createSyncCollection,\n createSyncClient,\n createPresence,\n createMemorySyncLocalStore,\n createLiveQuery,\n createIndexedDbSyncLocalStore,\n createCollaborativeText,\n SyncMutationRejectedError,\n SyncLocalStoreSchemaError,\n SyncLocalDataPolicyError\n};\n\n//# debugId=532477185BA0F4BF64756E2164756E21\n//# sourceMappingURL=index.js.map\n",
10
+ "import { readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\n\nexport const ABSOLUTE_AUTH_PACKAGE = '@absolutejs/auth' as const;\nexport const ABSOLUTE_EXPO_AUTH_CORE_VERSION = '0.75.6' as const;\nexport const ABSOLUTE_EXPO_AUTH_PACKAGE = '@absolutejs/auth-expo' as const;\nexport const ABSOLUTE_EXPO_AUTH_VERSION = '0.0.2' as const;\nexport const ABSOLUTE_EXPO_SYNC_CORE_VERSION = '2.31.0' as const;\nexport const ABSOLUTE_EXPO_SYNC_PACKAGE = '@absolutejs/sync-expo' as const;\nexport const ABSOLUTE_EXPO_SYNC_VERSION = '0.0.2' as const;\nexport const ABSOLUTE_NATIVE_AUTH_CLIENTS_ENV =\n\t'ABSOLUTE_AUTH_NATIVE_CLIENTS' as const;\nexport const ABSOLUTE_NATIVE_AUTH_SCOPES = ['openid', 'profile'] as const;\nexport const ABSOLUTE_SYNC_PACKAGE = '@absolutejs/sync' as const;\n\nexport type AbsoluteMobileAuthManifest = {\n\tclientId: string;\n\tissuer: string;\n\tredirectUri: string;\n\tscopes: string[];\n};\n\nconst readPackageManifest = (projectRoot: string) => {\n\ttry {\n\t\treturn JSON.parse(\n\t\t\treadFileSync(join(projectRoot, 'package.json'), 'utf8')\n\t\t);\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nconst packageManifestHas = (manifest: unknown, packageName: string) => {\n\tif (typeof manifest !== 'object' || manifest === null) return false;\n\n\treturn [\n\t\tReflect.get(manifest, 'dependencies'),\n\t\tReflect.get(manifest, 'devDependencies'),\n\t\tReflect.get(manifest, 'optionalDependencies'),\n\t\tReflect.get(manifest, 'peerDependencies')\n\t].some(\n\t\t(dependencies) =>\n\t\t\ttypeof dependencies === 'object' &&\n\t\t\tdependencies !== null &&\n\t\t\tObject.hasOwn(dependencies, packageName)\n\t);\n};\n\nexport const createAbsoluteMobileAuthManifest = (\n\tconfig: NormalizedAbsoluteMobileConfig\n): AbsoluteMobileAuthManifest => {\n\tconst scheme = config.deepLinkScheme ?? config.appId.toLowerCase();\n\n\treturn {\n\t\tclientId: `absolutejs-native:${config.appId}`,\n\t\tissuer: config.productionOrigin,\n\t\tredirectUri: `${scheme}://auth/callback`,\n\t\tscopes: [...ABSOLUTE_NATIVE_AUTH_SCOPES]\n\t};\n};\n\nexport const installAbsoluteMobileAuthEnvironment = (\n\tprojectRoot: string,\n\tconfig: NormalizedAbsoluteMobileConfig\n) => {\n\tconst auth = resolveAbsoluteMobileAuthManifest(projectRoot, config);\n\tconst serialized = serializeAbsoluteMobileAuthEnvironment(config, auth);\n\tif (serialized === undefined)\n\t\tdelete process.env[ABSOLUTE_NATIVE_AUTH_CLIENTS_ENV];\n\telse process.env[ABSOLUTE_NATIVE_AUTH_CLIENTS_ENV] = serialized;\n\n\treturn auth;\n};\n\nexport const projectUsesAbsoluteAuth = (projectRoot: string) =>\n\tpackageManifestHas(readPackageManifest(projectRoot), ABSOLUTE_AUTH_PACKAGE);\n\nexport const projectUsesAbsoluteSync = (projectRoot: string) =>\n\tpackageManifestHas(readPackageManifest(projectRoot), ABSOLUTE_SYNC_PACKAGE);\n\nexport const resolveAbsoluteMobileAuthManifest = (\n\tprojectRoot: string,\n\tconfig: NormalizedAbsoluteMobileConfig\n) =>\n\tprojectUsesAbsoluteAuth(projectRoot)\n\t\t? createAbsoluteMobileAuthManifest(config)\n\t\t: undefined;\n\nexport const serializeAbsoluteMobileAuthEnvironment = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tauth: AbsoluteMobileAuthManifest | undefined\n) =>\n\tauth === undefined\n\t\t? undefined\n\t\t: JSON.stringify([\n\t\t\t\t{\n\t\t\t\t\t...auth,\n\t\t\t\t\tname: `${config.appName} native app`\n\t\t\t\t}\n\t\t\t]);\n",
11
+ "var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __name = (target, name) => {\n Object.defineProperty(target, \"name\", {\n value: name,\n enumerable: false,\n configurable: true\n });\n return target;\n};\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => (key in obj) ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\nvar __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol(\"metadata\")] ?? null)];\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== undefined && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({\n kind: __decoratorStrings[kind],\n name,\n metadata,\n addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null))\n});\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length;i < n; i++)\n flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : {\n get [name]() {\n return __privateGet(this, extra);\n },\n set [name](x) {\n __privateSet(this, extra, x);\n }\n }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1;i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => (name in x) };\n if (k ^ 3)\n access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2)\n access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? undefined : { get: desc.get, set: desc.set } : target, ctx);\n done._ = 1;\n if (k ^ 4 || it === undefined)\n __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null)\n __typeError(\"Object expected\");\n else\n __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\n\n// src/crdt/orSet.ts\nvar newTag = () => globalThis.crypto.randomUUID();\nvar defaultEquals = (a, b) => Object.is(a, b);\nvar orSet = {\n create: () => ({ adds: [], removed: [] }),\n add: (state, value, tag = newTag()) => ({\n adds: [...state.adds, { value, tag }],\n removed: state.removed\n }),\n remove: (state, value, equals = defaultEquals) => {\n const tags = state.adds.filter((entry) => equals(entry.value, value)).map((entry) => entry.tag);\n return {\n adds: state.adds,\n removed: [...new Set([...state.removed, ...tags])]\n };\n },\n has: (state, value, equals = defaultEquals) => {\n const removed = new Set(state.removed);\n return state.adds.some((entry) => equals(entry.value, value) && !removed.has(entry.tag));\n },\n values: (state, equals = defaultEquals) => {\n const removed = new Set(state.removed);\n const out = [];\n for (const entry of state.adds) {\n if (!removed.has(entry.tag) && !out.some((value) => equals(value, entry.value))) {\n out.push(entry.value);\n }\n }\n return out;\n },\n merge: (a, b) => {\n const byTag = new Map;\n for (const entry of [...a.adds, ...b.adds]) {\n byTag.set(entry.tag, entry);\n }\n return {\n adds: [...byTag.values()],\n removed: [...new Set([...a.removed, ...b.removed])]\n };\n }\n};\n// src/crdt/lwwMap.ts\nvar pick = (a, b) => {\n if (b.timestamp > a.timestamp) {\n return b;\n }\n if (b.timestamp < a.timestamp) {\n return a;\n }\n return b.replica > a.replica ? b : a;\n};\nvar lwwMap = {\n create: () => ({}),\n set: (state, key, value, replica, timestamp = Date.now()) => ({\n ...state,\n [key]: { value, deleted: false, timestamp, replica }\n }),\n delete: (state, key, replica, timestamp = Date.now()) => ({\n ...state,\n [key]: { value: state[key]?.value, deleted: true, timestamp, replica }\n }),\n get: (state, key) => {\n const entry = state[key];\n return entry !== undefined && !entry.deleted ? entry.value : undefined;\n },\n has: (state, key) => {\n const entry = state[key];\n return entry !== undefined && !entry.deleted;\n },\n keys: (state) => Object.keys(state).filter((key) => !state[key]?.deleted),\n entries: (state) => {\n const out = [];\n for (const [key, entry] of Object.entries(state)) {\n if (!entry.deleted && entry.value !== undefined) {\n out.push([key, entry.value]);\n }\n }\n return out;\n },\n merge: (a, b) => {\n const out = { ...a };\n for (const [key, entry] of Object.entries(b)) {\n const existing = out[key];\n out[key] = existing === undefined ? entry : pick(existing, entry);\n }\n return out;\n }\n};\n// src/crdt/list.ts\nvar order = (a, b) => {\n if (a.clock !== b.clock) {\n return b.clock - a.clock;\n }\n if (a.replica === b.replica) {\n return 0;\n }\n return a.replica > b.replica ? -1 : 1;\n};\nvar linearize = (elements) => {\n const present = new Set(elements.map((element) => element.id));\n const children = new Map;\n for (const element of elements) {\n const anchor = element.after !== null && !present.has(element.after) ? null : element.after;\n const list = children.get(anchor);\n if (list === undefined) {\n children.set(anchor, [element]);\n } else {\n list.push(element);\n }\n }\n for (const list of children.values()) {\n list.sort(order);\n }\n const ordered = [];\n const stack = [...children.get(null) ?? []].reverse();\n while (stack.length > 0) {\n const element = stack.pop();\n ordered.push(element);\n const kids = children.get(element.id);\n if (kids !== undefined) {\n for (let index = kids.length - 1;index >= 0; index -= 1) {\n stack.push(kids[index]);\n }\n }\n }\n return ordered;\n};\nvar listOf = (state) => linearize(state.elements).filter((element) => !element.deleted).map((element) => element.value);\nvar mergeListState = (a, b) => {\n const byId = new Map;\n for (const element of [...a.elements, ...b.elements]) {\n const existing = byId.get(element.id);\n byId.set(element.id, existing === undefined ? element : { ...existing, deleted: existing.deleted || element.deleted });\n }\n return { elements: [...byId.values()] };\n};\nvar createList = (replica, initial) => {\n const elements = new Map;\n const pending = new Map;\n let clock = 0;\n if (initial !== undefined) {\n for (const element of initial.elements) {\n elements.set(element.id, element);\n clock = Math.max(clock, element.clock);\n }\n }\n const visible = () => linearize([...elements.values()]).filter((element) => !element.deleted);\n return {\n list: () => listOf({ elements: [...elements.values()] }),\n insert: (index, items) => {\n const seen = visible();\n let after = index <= 0 ? null : seen[index - 1]?.id ?? null;\n for (const value of items) {\n clock += 1;\n const element = {\n id: `${replica}:${clock}`,\n replica,\n clock,\n after,\n value,\n deleted: false\n };\n elements.set(element.id, element);\n pending.set(element.id, element);\n after = element.id;\n }\n },\n delete: (index, count) => {\n const seen = visible();\n for (let offset = 0;offset < count; offset += 1) {\n const target = seen[index + offset];\n if (target !== undefined) {\n const tombstoned = { ...target, deleted: true };\n elements.set(target.id, tombstoned);\n pending.set(target.id, tombstoned);\n }\n }\n },\n merge: (state) => {\n for (const element of state.elements) {\n const existing = elements.get(element.id);\n elements.set(element.id, existing === undefined ? element : {\n ...existing,\n deleted: existing.deleted || element.deleted\n });\n clock = Math.max(clock, element.clock);\n }\n },\n state: () => ({ elements: [...elements.values()] }),\n takeDelta: () => {\n const delta = { elements: [...pending.values()] };\n pending.clear();\n return delta;\n }\n };\n};\n\n// src/crdt/index.ts\nvar sumValues = (counts) => Object.values(counts).reduce((total, value) => total + value, 0);\nvar mergeMax = (a, b) => {\n const merged = { ...a };\n for (const [replica, value] of Object.entries(b)) {\n merged[replica] = Math.max(merged[replica] ?? 0, value);\n }\n return merged;\n};\nvar counter = {\n create: () => ({ increments: {}, decrements: {} }),\n value: (state) => sumValues(state.increments) - sumValues(state.decrements),\n increment: (state, replica, by = 1) => ({\n increments: {\n ...state.increments,\n [replica]: (state.increments[replica] ?? 0) + by\n },\n decrements: state.decrements\n }),\n decrement: (state, replica, by = 1) => ({\n increments: state.increments,\n decrements: {\n ...state.decrements,\n [replica]: (state.decrements[replica] ?? 0) + by\n }\n }),\n merge: (a, b) => ({\n increments: mergeMax(a.increments, b.increments),\n decrements: mergeMax(a.decrements, b.decrements)\n })\n};\nvar lww = {\n create: (value, replica, timestamp = Date.now()) => ({ value, timestamp, replica }),\n set: (value, replica, timestamp = Date.now()) => ({\n value,\n timestamp,\n replica\n }),\n merge: (a, b) => {\n if (b.timestamp > a.timestamp) {\n return b;\n }\n if (b.timestamp < a.timestamp) {\n return a;\n }\n return b.replica > a.replica ? b : a;\n }\n};\nvar compare = (a, b) => {\n if (a.clock !== b.clock) {\n return b.clock - a.clock;\n }\n if (a.replica === b.replica) {\n return 0;\n }\n return a.replica > b.replica ? -1 : 1;\n};\nvar linearize2 = (elements) => {\n const present = new Set(elements.map((element) => element.id));\n const children = new Map;\n for (const element of elements) {\n const anchor = element.after !== null && !present.has(element.after) ? null : element.after;\n const list = children.get(anchor);\n if (list === undefined) {\n children.set(anchor, [element]);\n } else {\n list.push(element);\n }\n }\n for (const list of children.values()) {\n list.sort(compare);\n }\n const ordered = [];\n const stack = [...children.get(null) ?? []].reverse();\n while (stack.length > 0) {\n const element = stack.pop();\n ordered.push(element);\n const kids = children.get(element.id);\n if (kids !== undefined) {\n for (let index = kids.length - 1;index >= 0; index -= 1) {\n stack.push(kids[index]);\n }\n }\n }\n return ordered;\n};\nvar textOf = (state) => linearize2(state.elements).filter((element) => !element.deleted).map((element) => element.value).join(\"\");\nvar mergeTextState = (a, b) => {\n const byId = new Map;\n for (const element of [...a.elements, ...b.elements]) {\n const existing = byId.get(element.id);\n byId.set(element.id, existing === undefined ? element : { ...existing, deleted: existing.deleted || element.deleted });\n }\n return { elements: [...byId.values()] };\n};\nvar tombstoneCount = (state) => state.elements.reduce((total, element) => element.deleted ? total + 1 : total, 0);\nvar compact = (state) => {\n const byId = new Map(state.elements.map((element) => [element.id, element]));\n const keep = new Set;\n for (const element of state.elements) {\n if (element.deleted) {\n continue;\n }\n let anchor = element.after;\n while (anchor !== null && !keep.has(anchor)) {\n const target = byId.get(anchor);\n if (target === undefined || !target.deleted) {\n break;\n }\n keep.add(anchor);\n anchor = target.after;\n }\n }\n return {\n elements: state.elements.filter((element) => !element.deleted || keep.has(element.id))\n };\n};\nvar createTextCrdt = (replica, initial) => {\n const elements = new Map;\n const pending = new Map;\n let clock = 0;\n if (initial !== undefined) {\n for (const element of initial.elements) {\n elements.set(element.id, element);\n clock = Math.max(clock, element.clock);\n }\n }\n const visible = () => linearize2([...elements.values()]).filter((element) => !element.deleted);\n const insert = (index, value) => {\n const seen = visible();\n let after = index <= 0 ? null : seen[index - 1]?.id ?? null;\n for (const char of [...value]) {\n clock += 1;\n const element = {\n id: `${replica}:${clock}`,\n replica,\n clock,\n after,\n value: char,\n deleted: false\n };\n elements.set(element.id, element);\n pending.set(element.id, element);\n after = element.id;\n }\n };\n const remove = (index, count) => {\n const seen = visible();\n for (let offset = 0;offset < count; offset += 1) {\n const target = seen[index + offset];\n if (target !== undefined) {\n const tombstoned = { ...target, deleted: true };\n elements.set(target.id, tombstoned);\n pending.set(target.id, tombstoned);\n }\n }\n };\n return {\n text: () => textOf({ elements: [...elements.values()] }),\n insert,\n delete: remove,\n merge: (state) => {\n for (const element of state.elements) {\n const existing = elements.get(element.id);\n elements.set(element.id, existing === undefined ? element : {\n ...existing,\n deleted: existing.deleted || element.deleted\n });\n clock = Math.max(clock, element.clock);\n }\n },\n setText: (next) => {\n const current = textOf({ elements: [...elements.values()] });\n if (current === next) {\n return;\n }\n let prefix = 0;\n const maxPrefix = Math.min(current.length, next.length);\n while (prefix < maxPrefix && current[prefix] === next[prefix]) {\n prefix += 1;\n }\n let suffix = 0;\n while (suffix < maxPrefix - prefix && current[current.length - 1 - suffix] === next[next.length - 1 - suffix]) {\n suffix += 1;\n }\n const removed = current.length - prefix - suffix;\n if (removed > 0) {\n remove(prefix, removed);\n }\n const inserted = next.slice(prefix, next.length - suffix);\n if (inserted.length > 0) {\n insert(prefix, inserted);\n }\n },\n state: () => ({ elements: [...elements.values()] }),\n takeDelta: () => {\n const delta = { elements: [...pending.values()] };\n pending.clear();\n return delta;\n },\n anchorAt: (index) => {\n if (index <= 0) {\n return null;\n }\n const seen = visible();\n return seen[Math.min(index, seen.length) - 1]?.id ?? null;\n },\n indexOfAnchor: (anchor) => {\n if (anchor === null) {\n return 0;\n }\n let visibleCount = 0;\n for (const element of linearize2([...elements.values()])) {\n if (!element.deleted) {\n visibleCount += 1;\n }\n if (element.id === anchor) {\n return visibleCount;\n }\n }\n return visibleCount;\n }\n };\n};\nvar rgaText = {\n compact,\n create: createTextCrdt,\n empty: () => ({ elements: [] }),\n merge: mergeTextState,\n textOf\n};\n\n// src/client/runtimeTransport.ts\nvar RUNTIME_TRANSPORT = Symbol.for(\"@absolutejs/sync/client-runtime-transport\");\nvar host = globalThis;\nvar isRegistry = (value) => typeof value === \"object\" && value !== null && Array.isArray(Reflect.get(value, \"installations\")) && Array.isArray(Reflect.get(value, \"clients\"));\nvar registry = (() => {\n const existing = host[RUNTIME_TRANSPORT];\n if (isRegistry(existing))\n return existing;\n if (typeof existing === \"object\" && existing !== null && Array.isArray(Reflect.get(existing, \"installations\"))) {\n Reflect.set(existing, \"clients\", []);\n return existing;\n }\n const created = { clients: [], installations: [] };\n Object.defineProperty(host, RUNTIME_TRANSPORT, {\n configurable: false,\n enumerable: false,\n value: created,\n writable: false\n });\n return created;\n})();\nvar getSyncClientRuntimeTransport = () => registry.installations.at(-1)?.transport;\nvar installSyncClientRuntimeTransport = (transport) => {\n const installation = { transport };\n registry.installations.push(installation);\n return () => {\n const index = registry.installations.indexOf(installation);\n if (index >= 0)\n registry.installations.splice(index, 1);\n };\n};\nvar registerSyncRuntimeClient = (client) => {\n registry.clients.push(client);\n return () => {\n const index = registry.clients.indexOf(client);\n if (index >= 0)\n registry.clients.splice(index, 1);\n };\n};\nvar maximum = (values) => {\n const present = values.filter((value) => value !== undefined);\n return present.length === 0 ? undefined : Math.max(...present);\n};\nvar minimum = (values) => {\n const present = values.filter((value) => value !== undefined);\n return present.length === 0 ? undefined : Math.min(...present);\n};\nvar inspectSyncRuntime = async () => {\n const clients = [...registry.clients];\n const statuses = clients.map((client) => client.status());\n const deadLetters = (await Promise.all(clients.map((client) => client.listDeadLetters()))).flat().map((record) => ({\n attempts: record.attempts,\n ...record.rejection?.code ? { code: record.rejection.code } : {},\n createdAt: record.createdAt,\n ...record.deadLetteredAt === undefined ? {} : { deadLetteredAt: record.deadLetteredAt },\n ...record.rejection?.kind ? { kind: record.rejection.kind } : {},\n ...record.rejection?.message ? { message: record.rejection.message } : {},\n name: record.name,\n operationId: record.operationId\n })).sort((left, right) => (left.deadLetteredAt ?? left.createdAt) - (right.deadLetteredAt ?? right.createdAt) || left.operationId.localeCompare(right.operationId));\n const lastError = statuses.findLast((status) => status.lastError)?.lastError;\n return {\n automaticResolutions: statuses.reduce((total, status) => total + status.automaticResolutions, 0),\n clients: clients.length,\n conflicts: deadLetters.filter((record) => record.kind === \"conflict\").length,\n deadLetters,\n ...lastError ? { lastError } : {},\n ...maximum(statuses.map((status) => status.lastSuccessfulPullAt)) === undefined ? {} : {\n lastSuccessfulPullAt: maximum(statuses.map((status) => status.lastSuccessfulPullAt))\n },\n ...maximum(statuses.map((status) => status.lastSuccessfulPushAt)) === undefined ? {} : {\n lastSuccessfulPushAt: maximum(statuses.map((status) => status.lastSuccessfulPushAt))\n },\n ...minimum(statuses.map((status) => status.oldestDeadLetterAt)) === undefined ? {} : {\n oldestDeadLetterAt: minimum(statuses.map((status) => status.oldestDeadLetterAt))\n },\n ...minimum(statuses.map((status) => status.oldestPendingAt)) === undefined ? {} : {\n oldestPendingAt: minimum(statuses.map((status) => status.oldestPendingAt))\n },\n pending: statuses.reduce((total, status) => total + status.pending, 0)\n };\n};\nvar clientWithDeadLetter = async (operationId) => {\n for (const client of registry.clients)\n if ((await client.listDeadLetters()).some((record) => record.operationId === operationId))\n return client;\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n};\nvar retrySyncRuntimeDeadLetter = async (operationId) => (await clientWithDeadLetter(operationId)).retryDeadLetter(operationId);\nvar discardSyncRuntimeDeadLetter = async (operationId) => (await clientWithDeadLetter(operationId)).discardDeadLetter(operationId);\nvar rebaseSyncRuntimeDeadLetter = async (operationId, args) => (await clientWithDeadLetter(operationId)).rebaseDeadLetter(operationId, args);\n\n// src/client/headlessSync.ts\nvar defaultKey = (row) => {\n if (typeof row !== \"object\" || row === null)\n throw new TypeError(\"Headless Sync rows require an object key.\");\n const key = Reflect.get(row, \"id\");\n if (typeof key !== \"string\" && typeof key !== \"number\")\n throw new TypeError(\"Headless Sync rows require an id key or an explicit key function.\");\n return key;\n};\nvar requireInteger = (value, fallback) => {\n const result = value ?? fallback;\n if (!Number.isSafeInteger(result) || result < 0)\n throw new TypeError(\"Headless Sync limits must be non-negative integers.\");\n return result;\n};\nvar retryDelay = (attempt) => Math.min(30000, 500 * 2 ** Math.max(0, attempt - 1));\nvar parseResponse = (value) => {\n if (typeof value !== \"object\" || value === null || Reflect.get(value, \"version\") !== 1 || !Array.isArray(Reflect.get(value, \"mutations\")) || !Array.isArray(Reflect.get(value, \"pulls\")))\n throw new Error(\"The Headless Sync response is malformed.\");\n return value;\n};\nvar sameBaseline = (current, baseline) => current?.cursor === baseline?.cursor && (current?.version ?? 0) === (baseline?.version ?? 0);\nvar applyPull = (current, pull, collection, key) => {\n const descriptor = {\n ...current,\n collection: collection.collection,\n params: collection.params\n };\n if (collection.key === undefined)\n descriptor.headlessKey = \"id\";\n else\n delete descriptor.headlessKey;\n if (pull.type === \"snapshot\")\n return {\n ...descriptor,\n rows: pull.rows,\n version: pull.version,\n cursor: pull.cursor\n };\n const rows = new Map;\n for (const row of current?.rows ?? [])\n rows.set(key(row), row);\n for (const row of pull.removed)\n rows.delete(key(row));\n for (const row of pull.changed)\n rows.set(key(row), row);\n for (const row of pull.added)\n rows.set(key(row), row);\n return {\n ...descriptor,\n rows: [...rows.values()],\n version: pull.version,\n cursor: pull.cursor\n };\n};\nvar runHeadlessSync = async ({\n endpoint,\n store,\n namespace,\n collections,\n maxMutations: configuredMaxMutations,\n maxPulls: configuredMaxPulls,\n maxAttempts: configuredMaxAttempts,\n retryBackoff = retryDelay,\n headers,\n fetch: fetchOverride,\n now = Date.now\n}) => {\n if (endpoint.length === 0 || namespace.length === 0)\n throw new TypeError(\"Headless Sync endpoint and namespace are required.\");\n const maxMutations = requireInteger(configuredMaxMutations, 50);\n const maxPulls = requireInteger(configuredMaxPulls, 50);\n const maxAttempts = requireInteger(configuredMaxAttempts, 5);\n const startedAt = now();\n const snapshot = await store.transaction(namespace, \"readwrite\", async (tx) => {\n const due = (await tx.listMutations()).filter((record) => record.state !== \"dead-letter\" && (record.nextAttemptAt ?? 0) <= startedAt).slice(0, maxMutations);\n const mutations = [];\n for (const record of due) {\n const next = { ...record, attempts: record.attempts + 1 };\n delete next.nextAttemptAt;\n await tx.putMutation(next);\n mutations.push(next);\n }\n const discoveredCollections = collections ?? (await tx.listCollections()).filter(({ record }) => record.headlessKey === \"id\" && typeof record.collection === \"string\" && record.collection.length > 0).map(({ key, record }) => ({\n collection: record.collection,\n localKey: key,\n params: record.params\n }));\n const pulls = await Promise.all(discoveredCollections.slice(0, maxPulls).map(async (collection) => ({\n collection,\n record: await tx.getCollection(collection.localKey)\n })));\n return { mutations, pulls };\n });\n const request = {\n version: 1,\n mutations: snapshot.mutations.map(({ operationId, name, args }) => ({\n operationId,\n name,\n args\n })),\n pulls: snapshot.pulls.map(({ collection, record }, index) => ({\n id: String(index),\n collection: collection.collection,\n params: collection.params,\n ...record?.cursor !== undefined ? { since: record.cursor } : (record?.version ?? 0) > 0 ? { since: record.version } : {}\n }))\n };\n const fetchImpl = fetchOverride ?? ((url, init) => globalThis.fetch(url, init));\n let response;\n try {\n const fetched = await fetchImpl(endpoint, {\n body: JSON.stringify(request),\n credentials: \"include\",\n headers: {\n accept: \"application/json\",\n \"content-type\": \"application/json\",\n ...await headers?.()\n },\n method: \"POST\",\n redirect: \"error\"\n });\n if (!fetched.ok)\n throw new Error(`Headless Sync failed with HTTP ${fetched.status}.`);\n response = parseResponse(await fetched.json());\n } catch (error) {\n await store.transaction(namespace, \"readwrite\", async (tx) => {\n for (const sent of snapshot.mutations) {\n const current = await tx.getMutation(sent.operationId);\n if (current?.attempts !== sent.attempts)\n continue;\n await tx.putMutation({\n ...current,\n lastError: error instanceof Error ? error.message : String(error),\n nextAttemptAt: now() + Math.max(0, retryBackoff(current.attempts))\n });\n }\n });\n throw error;\n }\n const mutationResults = new Map(response.mutations.map((result2) => [result2.operationId, result2]));\n const pullResults = new Map(response.pulls.map((result2) => [result2.id, result2]));\n const result = {\n acknowledged: 0,\n conflictsDiscarded: 0,\n conflictsRetried: 0,\n deadLettered: 0,\n pulled: 0,\n retryScheduled: 0\n };\n await store.transaction(namespace, \"readwrite\", async (tx) => {\n for (const sent of snapshot.mutations) {\n const current = await tx.getMutation(sent.operationId);\n if (current?.attempts !== sent.attempts)\n continue;\n const outcome = mutationResults.get(sent.operationId);\n if (outcome?.status === \"ack\") {\n await tx.deleteMutation(sent.operationId);\n result.acknowledged += 1;\n continue;\n }\n const rejection = outcome?.status === \"reject\" ? outcome.rejection : {\n kind: \"retryable\",\n message: \"Missing mutation response.\"\n };\n if (rejection.kind === \"conflict\" && current.conflictPolicy?.strategy === \"server-wins\") {\n await tx.deleteMutation(sent.operationId);\n result.conflictsDiscarded += 1;\n continue;\n }\n if (rejection.kind === \"conflict\" && current.conflictPolicy?.strategy === \"client-wins\" && (current.conflictAttempts ?? 0) < (current.conflictPolicy.maxAttempts ?? 1)) {\n const retry = {\n ...current,\n conflictAttempts: (current.conflictAttempts ?? 0) + 1,\n lastError: rejection.message,\n rejection,\n state: \"pending\"\n };\n delete retry.nextAttemptAt;\n await tx.putMutation(retry);\n result.conflictsRetried += 1;\n continue;\n }\n if (rejection.kind !== \"retryable\" || current.attempts >= maxAttempts) {\n const deadLetter = {\n ...current,\n deadLetteredAt: now(),\n lastError: rejection.message,\n rejection,\n state: \"dead-letter\"\n };\n delete deadLetter.nextAttemptAt;\n await tx.putMutation(deadLetter);\n result.deadLettered += 1;\n } else {\n await tx.putMutation({\n ...current,\n lastError: rejection.message,\n nextAttemptAt: now() + Math.max(0, rejection.retryAfterMs ?? retryBackoff(current.attempts)),\n rejection,\n state: \"pending\"\n });\n result.retryScheduled += 1;\n }\n }\n for (let index = 0;index < snapshot.pulls.length; index += 1) {\n const baseline = snapshot.pulls[index];\n const pull = pullResults.get(String(index));\n if (pull === undefined || pull.type === \"error\")\n continue;\n const current = await tx.getCollection(baseline.collection.localKey);\n if (!sameBaseline(current, baseline.record))\n continue;\n await tx.putCollection(baseline.collection.localKey, applyPull(current, pull, baseline.collection, baseline.collection.key ?? defaultKey));\n result.pulled += 1;\n }\n });\n return result;\n};\n\n// src/reactiveHub.ts\nvar SYNC_OPEN_TOPIC = \"@absolutejs/sync:open\";\n\n// src/client/sharedSubscriber.ts\nvar pools = new Map;\nvar topicMatches = (pattern, topic) => pattern.endsWith(\"*\") ? topic.startsWith(pattern.slice(0, -1)) : topic === pattern;\nvar unionTopics = (pool) => {\n const topics = new Set;\n for (const member of pool.members) {\n for (const topic of member.topics) {\n topics.add(topic);\n }\n }\n return [...topics].sort();\n};\nvar deliverOpen = (pool, event, toAll) => {\n for (const member of pool.members) {\n if (!toAll && member.opened) {\n continue;\n }\n member.opened = true;\n member.onOpen?.();\n member.onEvent(event);\n }\n};\nvar connect = (pool, topics) => {\n pool.source?.close();\n const params = new URLSearchParams({ topics: topics.join(\",\") });\n const separator = pool.url.includes(\"?\") ? \"&\" : \"?\";\n const source = new pool.Impl(`${pool.url}${separator}${params.toString()}`, {\n withCredentials: pool.withCredentials\n });\n pool.source = source;\n pool.connectedTopics = topics.join(\",\");\n pool.sourceOpened = false;\n source.onmessage = (message) => {\n let event;\n try {\n event = JSON.parse(message.data);\n } catch {\n return;\n }\n if (pool.source !== source) {\n return;\n }\n if (event.topic === SYNC_OPEN_TOPIC) {\n deliverOpen(pool, event, pool.sourceOpened);\n pool.sourceOpened = true;\n return;\n }\n for (const member of pool.members) {\n if (member.topics.some((pattern) => topicMatches(pattern, event.topic))) {\n member.onEvent(event);\n }\n }\n };\n source.onerror = (event) => {\n if (pool.source !== source) {\n return;\n }\n for (const member of pool.members) {\n member.onError?.(event);\n }\n };\n};\nvar reconcile = (pool) => {\n pool.reconcileTimer = undefined;\n if (pool.members.size === 0) {\n pool.source?.close();\n pool.source = null;\n pool.connectedTopics = \"\";\n pools.delete(poolKey(pool.url, pool.withCredentials));\n return;\n }\n const topics = unionTopics(pool);\n if (pool.source && topics.join(\",\") === pool.connectedTopics) {\n return;\n }\n connect(pool, topics);\n};\nvar scheduleReconcile = (pool) => {\n if (pool.reconcileTimer !== undefined) {\n return;\n }\n pool.reconcileTimer = setTimeout(() => reconcile(pool), 0);\n};\nvar poolKey = (url, withCredentials) => `${url}|${withCredentials ? 1 : 0}`;\nvar createSharedSyncSubscriber = ({\n topics,\n onEvent,\n url = \"/sync\",\n onOpen,\n onError,\n withCredentials,\n eventSourceImpl\n}) => {\n const Impl = eventSourceImpl ?? globalThis.EventSource;\n if (!Impl) {\n throw new Error(\"createSharedSyncSubscriber requires EventSource. Run in a browser or pass eventSourceImpl.\");\n }\n const key = poolKey(url, withCredentials ?? false);\n let pool = pools.get(key);\n if (!pool || pool.Impl !== Impl) {\n pool = {\n Impl,\n url,\n withCredentials: withCredentials ?? false,\n members: new Set,\n source: null,\n connectedTopics: \"\",\n sourceOpened: false,\n reconcileTimer: undefined\n };\n pools.set(key, pool);\n }\n const member = {\n topics: [...topics],\n onEvent,\n onOpen,\n onError,\n opened: false\n };\n pool.members.add(member);\n scheduleReconcile(pool);\n const owner = pool;\n return {\n close: () => {\n owner.members.delete(member);\n scheduleReconcile(owner);\n },\n get source() {\n return owner.source;\n }\n };\n};\n\n// src/client/subscriber.ts\nvar createSyncSubscriber = (options) => {\n if (options.shared) {\n return createSharedSyncSubscriber(options);\n }\n const {\n topics,\n onEvent,\n url = \"/sync\",\n onOpen,\n onError,\n withCredentials,\n eventSourceImpl\n } = options;\n const Impl = eventSourceImpl ?? globalThis.EventSource;\n if (!Impl) {\n throw new Error(\"createSyncSubscriber requires EventSource. Run in a browser or pass eventSourceImpl.\");\n }\n const params = new URLSearchParams({ topics: topics.join(\",\") });\n const separator = url.includes(\"?\") ? \"&\" : \"?\";\n const source = new Impl(`${url}${separator}${params.toString()}`, {\n withCredentials: withCredentials ?? false\n });\n source.onmessage = (event) => {\n try {\n onEvent(JSON.parse(event.data));\n } catch {}\n };\n if (onOpen) {\n source.onopen = () => onOpen();\n }\n if (onError) {\n source.onerror = (event) => onError(event);\n }\n return {\n close: () => source.close(),\n source\n };\n};\n// src/client/liveQuery.ts\nvar createLiveQuery = (options) => {\n const hasSeed = options.initialData !== undefined;\n let state = {\n data: options.initialData,\n error: undefined,\n loading: !options.manual && !hasSeed,\n fetching: false\n };\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n let requestSeq = 0;\n let inFlight;\n let closed = false;\n const refetch = async () => {\n if (closed) {\n return;\n }\n const seq = requestSeq += 1;\n inFlight?.abort();\n const controller = new AbortController;\n inFlight = controller;\n setState({ fetching: true });\n try {\n const data = await options.fetcher(controller.signal);\n if (seq !== requestSeq) {\n return;\n }\n setState({\n data,\n error: undefined,\n loading: false,\n fetching: false\n });\n } catch (error) {\n if (controller.signal.aborted || seq !== requestSeq) {\n return;\n }\n setState({ error, loading: false, fetching: false });\n options.onError?.(error);\n } finally {\n if (inFlight === controller) {\n inFlight = undefined;\n }\n }\n };\n let debounceTimer;\n const scheduleRefetch = () => {\n if (closed) {\n return;\n }\n if (!options.debounceMs) {\n refetch();\n return;\n }\n if (debounceTimer !== undefined) {\n return;\n }\n debounceTimer = setTimeout(() => {\n debounceTimer = undefined;\n refetch();\n }, options.debounceMs);\n };\n let opened = false;\n const onEvent = (event) => {\n if (event.topic === SYNC_OPEN_TOPIC) {\n if (opened) {\n scheduleRefetch();\n }\n opened = true;\n return;\n }\n scheduleRefetch();\n };\n const subscriber = createSyncSubscriber({\n topics: options.topics,\n onEvent,\n url: options.url,\n withCredentials: options.withCredentials,\n eventSourceImpl: options.eventSourceImpl,\n shared: options.shared\n });\n if (!options.manual && !hasSeed) {\n refetch();\n }\n const close = () => {\n if (closed) {\n return;\n }\n closed = true;\n subscriber.close();\n inFlight?.abort();\n if (debounceTimer !== undefined) {\n clearTimeout(debounceTimer);\n debounceTimer = undefined;\n }\n listeners.clear();\n };\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n refetch,\n close\n };\n};\nvar jsonFetcher = (url, init) => async (signal) => {\n const response = await fetch(url, { ...init, signal });\n if (!response.ok) {\n throw new Error(`${response.status} ${response.statusText}`);\n }\n return await response.json();\n};\n// src/serializer.ts\nvar jsonSerializer = {\n decode: (raw) => {\n if (typeof raw === \"string\") {\n try {\n return JSON.parse(raw);\n } catch {\n return null;\n }\n }\n if (raw instanceof Uint8Array) {\n try {\n return JSON.parse(new TextDecoder().decode(raw));\n } catch {\n return null;\n }\n }\n if (raw instanceof ArrayBuffer) {\n try {\n return JSON.parse(new TextDecoder().decode(new Uint8Array(raw)));\n } catch {\n return null;\n }\n }\n return raw;\n },\n encodeClient: (frame) => JSON.stringify(frame),\n encodeServer: (frame) => JSON.stringify(frame)\n};\n\n// src/client/reconnectBackoff.ts\nvar createReconnectBackoff = (initialMs, maximumMs) => {\n let attempt = 0;\n return {\n markHealthy() {\n attempt = 0;\n },\n nextDelay() {\n const delay = Math.min(initialMs * 2 ** attempt, maximumMs);\n attempt += 1;\n return delay;\n }\n };\n};\nvar hasReconnectHealthyFrameType = (frame, types) => typeof frame === \"object\" && frame !== null && (\"type\" in frame) && typeof frame.type === \"string\" && types.includes(frame.type);\n\n// src/client/syncCollection.ts\nvar serverFrameTypes = [\n \"snapshot\",\n \"diff\",\n \"error\",\n \"ack\",\n \"reject\"\n];\nvar localStorageMutationStorage = (key) => ({\n load: () => {\n const raw = globalThis.localStorage?.getItem(key);\n return raw ? JSON.parse(raw) : [];\n },\n save: (records) => {\n globalThis.localStorage?.setItem(key, JSON.stringify(records));\n }\n});\nvar localStorageCollectionCache = (key) => ({\n load: () => {\n const raw = globalThis.localStorage?.getItem(key);\n return raw ? JSON.parse(raw) : undefined;\n },\n save: (snapshot) => {\n globalThis.localStorage?.setItem(key, JSON.stringify(snapshot));\n },\n clear: () => {\n globalThis.localStorage?.removeItem(key);\n }\n});\nvar openIndexedDb = (databaseName, storeName) => new Promise((resolve, reject) => {\n const request = globalThis.indexedDB.open(databaseName, 1);\n request.onupgradeneeded = () => {\n request.result.createObjectStore(storeName);\n };\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n});\nvar indexedDbCollectionCache = ({\n key,\n databaseName = \"absolutejs-sync\",\n storeName = \"collections\"\n}) => {\n let handle;\n const database = () => {\n handle ??= openIndexedDb(databaseName, storeName);\n return handle;\n };\n const withStore = async (mode, run) => {\n if (globalThis.indexedDB === undefined) {\n return;\n }\n const db = await database();\n return new Promise((resolve, reject) => {\n const request = run(db.transaction(storeName, mode).objectStore(storeName));\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n };\n return {\n load: () => withStore(\"readonly\", (store) => store.get(key)),\n save: async (snapshot) => {\n await withStore(\"readwrite\", (store) => store.put(snapshot, key));\n },\n clear: async () => {\n await withStore(\"readwrite\", (store) => store.delete(key));\n }\n };\n};\nvar SUBSCRIPTION_ID = \"s\";\nvar createSyncCollection = (options) => {\n const key = options.key ?? ((row) => row.id);\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createSyncCollection requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const confirmed = new Map;\n const pending = [];\n let mutationSeq = 0;\n let state = {\n data: [],\n status: \"connecting\",\n error: undefined\n };\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n const recompute = (patch = {}) => {\n const working = new Map(confirmed);\n const draft = {\n set: (row) => working.set(key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n mutation.optimistic?.(draft);\n }\n setState({ ...patch, data: [...working.values()] });\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let appliedVersion = 0;\n let appliedCursor;\n const persist = () => {\n options.storage?.save(pending.map((mutation) => ({\n mutationId: mutation.mutationId,\n name: mutation.name,\n args: mutation.args\n })));\n };\n let cacheScheduled = false;\n const persistCache = () => {\n if (options.cache === undefined || cacheScheduled) {\n return;\n }\n cacheScheduled = true;\n queueMicrotask(() => {\n cacheScheduled = false;\n options.cache?.save({\n rows: [...confirmed.values()],\n version: appliedVersion\n });\n });\n };\n const settlePending = (mutationId) => {\n const index = pending.findIndex((mutation2) => mutation2.mutationId === mutationId);\n if (index === -1) {\n return;\n }\n const [mutation] = pending.splice(index, 1);\n persist();\n return mutation;\n };\n const applyFrame = (frame) => {\n if (frame.type === \"snapshot\") {\n confirmed.clear();\n for (const row of frame.rows) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n persistCache();\n recompute({ status: \"ready\", error: undefined });\n } else if (frame.type === \"diff\") {\n for (const row of frame.removed) {\n confirmed.delete(key(row));\n }\n for (const row of frame.added) {\n confirmed.set(key(row), row);\n }\n for (const row of frame.changed) {\n confirmed.set(key(row), row);\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n if (frame.version !== undefined) {\n appliedVersion = Math.max(appliedVersion, frame.version);\n }\n persistCache();\n recompute({ status: \"ready\", error: undefined });\n } else if (frame.type === \"error\") {\n setState({ error: frame.message });\n options.onError?.(frame.message);\n } else if (frame.type === \"ack\") {\n const mutation = settlePending(frame.mutationId);\n if (mutation !== undefined) {\n recompute();\n mutation.resolve(frame.result);\n }\n } else if (frame.type === \"reject\") {\n const mutation = settlePending(frame.mutationId);\n if (mutation !== undefined) {\n recompute();\n mutation.reject(new Error(String(frame.message)));\n }\n }\n };\n const wsSend = (payload) => {\n socket?.send(payload);\n };\n const sendMutate = (mutation) => {\n if (connected) {\n wsSend(serializer.encodeClient({\n type: \"mutate\",\n mutationId: mutation.mutationId,\n name: mutation.name,\n args: mutation.args\n }));\n }\n };\n const connect2 = () => {\n if (closed) {\n return;\n }\n setState({ status: \"connecting\" });\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"subscribe\",\n id: SUBSCRIPTION_ID,\n collection: options.collection,\n params: options.params,\n since: appliedCursor ?? (appliedVersion > 0 ? appliedVersion : undefined)\n }));\n for (const mutation of pending) {\n sendMutate(mutation);\n }\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect2, delay);\n };\n };\n const hydratePersisted = async () => {\n if (options.storage === undefined) {\n return;\n }\n const records = await options.storage.load();\n for (const record of records) {\n if (pending.some((m) => m.mutationId === record.mutationId)) {\n continue;\n }\n pending.push({\n mutationId: record.mutationId,\n name: record.name,\n args: record.args,\n resolve: () => {},\n reject: () => {}\n });\n mutationSeq = Math.max(mutationSeq, record.mutationId);\n }\n if (connected) {\n for (const mutation of pending) {\n sendMutate(mutation);\n }\n }\n };\n const hydrateCache = async () => {\n if (options.cache === undefined) {\n return;\n }\n let snapshot;\n try {\n snapshot = await options.cache.load();\n } catch {\n return;\n }\n if (snapshot === undefined || appliedVersion > 0) {\n return;\n }\n for (const row of snapshot.rows) {\n confirmed.set(key(row), row);\n }\n appliedVersion = snapshot.version;\n recompute();\n };\n if (options.cache === undefined) {\n connect2();\n hydratePersisted();\n } else {\n (async () => {\n await hydrateCache();\n await hydratePersisted();\n connect2();\n })();\n }\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n mutate: (mutateOptions) => new Promise((resolve, reject) => {\n const mutation = {\n mutationId: mutationSeq += 1,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: mutateOptions.optimistic,\n resolve: (result) => resolve(result),\n reject\n };\n pending.push(mutation);\n persist();\n recompute();\n sendMutate(mutation);\n }),\n disconnect: () => {\n if (closed || socket === undefined) {\n return;\n }\n try {\n socket.close();\n } catch {}\n },\n close: () => {\n if (closed) {\n return;\n }\n closed = true;\n connected = false;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n try {\n wsSend(serializer.encodeClient({\n type: \"unsubscribe\",\n id: SUBSCRIPTION_ID\n }));\n socket?.close();\n } catch {}\n for (const mutation of pending.splice(0)) {\n mutation.reject(new Error(\"sync collection closed\"));\n }\n persist();\n setState({ status: \"closed\" });\n listeners.clear();\n }\n };\n};\n// src/client/collaborativeText.ts\nvar createCollaborativeText = (options) => {\n const keyField = options.keyField ?? \"id\";\n const mutation = options.mutation ?? `${options.collection}:merge`;\n const replica = options.replica ?? globalThis.crypto.randomUUID();\n const make = options.create ?? ((id) => createTextCrdt(id));\n const crdt = make(replica);\n let current = {\n ready: false,\n status: \"connecting\",\n text: \"\"\n };\n let pendingText = null;\n const subscribers = new Set;\n const emit = () => {\n for (const run of subscribers) {\n run(current);\n }\n };\n const collection = createSyncCollection({\n collection: options.collection,\n key: (row) => row[keyField],\n params: options.params,\n url: options.url\n });\n const broadcast = (next) => {\n crdt.setText(next);\n current = { ...current, text: next };\n emit();\n const payload = crdt.takeDelta ? crdt.takeDelta() : crdt.state();\n collection.mutate({\n args: { [keyField]: options.id, [options.field]: payload },\n name: mutation\n });\n };\n const apply = (state) => {\n let { text } = current;\n const row = state.data.find((candidate) => candidate[keyField] === options.id);\n const fieldState = row?.[options.field];\n if (fieldState !== undefined) {\n crdt.merge(fieldState);\n text = crdt.text();\n }\n const ready = current.ready || fieldState !== undefined;\n current = { ready, status: state.status, text };\n emit();\n if (ready && pendingText !== null) {\n const buffered = pendingText;\n pendingText = null;\n broadcast(buffered);\n }\n };\n apply(collection.get());\n const unsubscribe = collection.subscribe(apply);\n return {\n get: () => current,\n subscribe(run) {\n subscribers.add(run);\n run(current);\n return () => {\n subscribers.delete(run);\n };\n },\n setText(next) {\n if (!current.ready) {\n pendingText = next;\n current = { ...current, text: next };\n emit();\n return;\n }\n broadcast(next);\n },\n anchorAt: (index) => crdt.anchorAt?.(index) ?? null,\n indexOfAnchor: (anchor) => crdt.indexOfAnchor?.(anchor) ?? 0,\n close() {\n unsubscribe();\n collection.close();\n subscribers.clear();\n }\n };\n};\n// src/client/presence.ts\nvar createPresence = (options) => {\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createPresence requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const id = options.memberId ?? globalThis.crypto?.randomUUID?.() ?? `m${Math.random()}`;\n const members = new Map;\n let state = options.state;\n let snapshot = [];\n const listeners = new Set;\n const emit = () => {\n snapshot = [...members].map(([memberId, memberState]) => ({\n id: memberId,\n state: memberState\n }));\n for (const listener of listeners) {\n listener(snapshot);\n }\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n const send = (frame) => {\n if (connected) {\n socket?.send(serializer.encodeClient(frame));\n }\n };\n const connect2 = () => {\n if (closed) {\n return;\n }\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"presence-join\",\n room: options.room,\n memberId: id,\n state\n }));\n };\n ws.onmessage = (event) => {\n let frame;\n const decoded = serializer.decode(event.data);\n if (decoded === null || typeof decoded !== \"object\") {\n return;\n }\n frame = decoded;\n if (frame.type !== \"presence\" || frame.room !== options.room) {\n return;\n }\n reconnectBackoff.markHealthy();\n for (const member of frame.joined ?? []) {\n members.set(member.id, member.state);\n }\n for (const member of frame.updated ?? []) {\n members.set(member.id, member.state);\n }\n for (const memberId of frame.left ?? []) {\n members.delete(memberId);\n }\n emit();\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect2, delay);\n };\n };\n connect2();\n return {\n id,\n get: () => snapshot,\n subscribe: (listener) => {\n listeners.add(listener);\n listener(snapshot);\n return () => {\n listeners.delete(listener);\n };\n },\n set: (next) => {\n state = next;\n send({ type: \"presence-set\", room: options.room, state: next });\n },\n close: () => {\n closed = true;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n send({ type: \"presence-leave\", room: options.room });\n socket?.close();\n members.clear();\n }\n };\n};\n// src/client/localStore.ts\nclass SyncLocalDataPolicyError extends Error {\n code;\n constructor(code, message) {\n super(message);\n this.name = \"SyncLocalDataPolicyError\";\n this.code = code;\n }\n}\n\nclass SyncLocalStoreSchemaError extends Error {\n code;\n storedVersion;\n targetVersion;\n constructor(code, message, versions = {}) {\n super(message);\n this.name = \"SyncLocalStoreSchemaError\";\n this.code = code;\n this.storedVersion = versions.storedVersion;\n this.targetVersion = versions.targetVersion;\n }\n}\nvar positiveVersion = (value, label) => {\n if (!Number.isSafeInteger(value) || value < 1)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `${label} must be a positive safe integer`);\n return value;\n};\nvar isSchemaBundle = (schema) => (\"components\" in schema);\nvar validatePolicyMatch = (match, label) => {\n if (match.length === 0 || match.trim() !== match || /^\\*+$/.test(match) || match.includes(\"**\"))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.match must be an exact name or a non-empty glob without adjacent wildcards.`);\n};\nvar validateSyncLocalDataPolicy = (policy, label = \"localData\") => {\n if (policy.maxBytesPerNamespace !== undefined && (!Number.isSafeInteger(policy.maxBytesPerNamespace) || policy.maxBytesPerNamespace < 1))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.maxBytesPerNamespace must be a positive safe integer.`);\n for (const [index, rule] of (policy.collections ?? []).entries()) {\n validatePolicyMatch(rule.match, `${label}.collections[${index}]`);\n if (rule.maxAgeMs !== undefined && (!Number.isSafeInteger(rule.maxAgeMs) || rule.maxAgeMs < 1))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}].maxAgeMs must be a positive safe integer.`);\n if (rule.persistence === \"memory-only\" && rule.protection === \"required\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}] cannot require at-rest protection when it is memory-only.`);\n if (rule.sensitivity !== undefined && rule.sensitivity !== \"public\" && rule.protection !== \"required\" && rule.persistence !== \"memory-only\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}] declares ${rule.sensitivity} data without required protection or memory-only persistence.`);\n }\n for (const [index, rule] of (policy.mutations ?? []).entries()) {\n validatePolicyMatch(rule.match, `${label}.mutations[${index}]`);\n if (rule.conflict !== undefined && rule.conflict.strategy !== \"client-wins\" && rule.conflict.strategy !== \"manual\" && rule.conflict.strategy !== \"server-wins\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}].conflict.strategy is invalid.`);\n if (rule.conflict?.maxAttempts !== undefined && (!Number.isSafeInteger(rule.conflict.maxAttempts) || rule.conflict.maxAttempts < 1))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}].conflict.maxAttempts must be a positive safe integer.`);\n if (rule.conflict?.maxAttempts !== undefined && rule.conflict.strategy !== \"client-wins\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}].conflict.maxAttempts is only valid for client-wins.`);\n if (rule.persistence === \"memory-only\" && rule.protection === \"required\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}] cannot require at-rest protection when it is memory-only.`);\n if (rule.sensitivity !== undefined && rule.sensitivity !== \"public\" && rule.protection !== \"required\" && rule.persistence !== \"memory-only\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}] declares ${rule.sensitivity} arguments without required protection.`);\n }\n return policy;\n};\nvar resolveSyncLocalDataPolicy = (schema = { version: 1 }) => {\n const policies = normalizeSyncLocalSchemaComponents(schema).map((component) => component.localData ? validateSyncLocalDataPolicy(component.localData, `${component.id}.localData`) : undefined).filter((policy) => policy !== undefined);\n const quotas = policies.map((policy) => policy.maxBytesPerNamespace).filter((value) => value !== undefined);\n return {\n ...quotas.length > 0 ? { maxBytesPerNamespace: Math.min(...quotas) } : {},\n collections: policies.flatMap((policy) => policy.collections ?? []),\n mutations: policies.flatMap((policy) => policy.mutations ?? [])\n };\n};\nvar policyMatches = (pattern, name) => pattern === name || (() => {\n const pieces = pattern.split(\"*\");\n if (pieces.length === 1)\n return false;\n let offset = 0;\n for (const [index, piece] of pieces.entries()) {\n if (piece.length === 0)\n continue;\n const found = name.indexOf(piece, offset);\n if (found < 0 || index === 0 && found !== 0)\n return false;\n offset = found + piece.length;\n }\n const last = pieces.at(-1);\n return last.length === 0 || name.endsWith(last);\n})();\nvar matchingPolicy = (rules, name) => {\n const matches = rules.filter((rule) => policyMatches(rule.match, name));\n if (matches.length === 0)\n return;\n const specificity = (rule) => rule.match.replaceAll(\"*\", \"\").length;\n matches.sort((left, right) => specificity(right) - specificity(left));\n if (matches[1] !== undefined && specificity(matches[0]) === specificity(matches[1]))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `Local-data policy has equally specific rules for \"${name}\".`);\n return matches[0];\n};\nvar resolveSyncLocalCollectionPolicy = (policy, name) => matchingPolicy(policy.collections, name) ?? { match: name };\nvar resolveSyncLocalMutationPolicy = (policy, name) => matchingPolicy(policy.mutations, name) ?? { match: name };\nvar normalizeSyncLocalSchemaComponents = (schema = { version: 1 }) => {\n const components = isSchemaBundle(schema) ? [...schema.components] : [{ ...schema, id: \"@absolutejs/app\" }];\n const ids = new Set;\n for (const component of components) {\n if (typeof component.id !== \"string\" || component.id.trim() !== component.id || component.id.length === 0)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Sync schema component id must be non-empty and trimmed\");\n if (ids.has(component.id))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync schema component \"${component.id}\" is declared more than once`);\n ids.add(component.id);\n if (component.localData)\n validateSyncLocalDataPolicy(component.localData, `${component.id}.localData`);\n }\n return components.sort((a, b) => a.id.localeCompare(b.id));\n};\nvar createSyncLocalSchemaStatus = (components, orphanedComponents = [], includeComponents = true) => {\n const app = components.find((component) => component.id === \"@absolutejs/app\");\n return {\n ...includeComponents ? {\n components: components.map((component) => ({\n id: component.id,\n minimumCompatibleVersion: component.minimumCompatibleVersion,\n storedVersion: component.targetVersion,\n targetVersion: component.targetVersion\n }))\n } : {},\n minimumCompatibleVersion: app?.minimumCompatibleVersion ?? 1,\n ...orphanedComponents.length > 0 ? { orphanedComponents: [...orphanedComponents] } : {},\n state: \"ready\",\n storedVersion: app?.targetVersion ?? 1,\n targetVersion: app?.targetVersion ?? 1\n };\n};\nvar resolveSyncLocalSchemaComponents = (storedVersions, schema = { version: 1 }) => {\n const components = normalizeSyncLocalSchemaComponents(schema).map((component) => {\n const current = resolveSyncLocalMigrations(component.version, component);\n return {\n id: component.id,\n ...resolveSyncLocalMigrations(storedVersions[component.id] ?? current.minimumCompatibleVersion, component)\n };\n });\n const active = new Set(components.map((component) => component.id));\n const orphanedComponents = Object.keys(storedVersions).filter((id) => !active.has(id)).sort();\n return { components, orphanedComponents };\n};\nvar migrationCollectionName = (record, context) => record.collection ?? context.key;\nvar migrateRow = (row, operation) => {\n if (typeof row !== \"object\" || row === null || Array.isArray(row))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync ${operation.type} requires object rows`);\n const next = { ...row };\n if (operation.type === \"set-default\") {\n if (!Object.hasOwn(next, operation.field))\n next[operation.field] = structuredClone(operation.value);\n } else if (operation.type === \"remove-field\") {\n delete next[operation.field];\n } else if (Object.hasOwn(next, operation.from)) {\n if (Object.hasOwn(next, operation.to))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync rename-field cannot overwrite existing field \"${operation.to}\"`);\n next[operation.to] = next[operation.from];\n delete next[operation.from];\n }\n return next;\n};\nvar applyDeclarativeCollectionOperations = (record, context, operations) => {\n let current = structuredClone(record);\n for (const operation of operations) {\n if (operation.collection !== migrationCollectionName(current, context))\n continue;\n if (operation.type === \"delete-collection\")\n return null;\n current = {\n ...current,\n rows: current.rows.map((row) => migrateRow(row, operation))\n };\n }\n return current;\n};\nvar resolveSyncLocalMigrations = (storedVersion, schema = { version: 1 }) => {\n positiveVersion(storedVersion, \"Stored Sync schema version\");\n const targetVersion = positiveVersion(schema.version, \"Target Sync schema version\");\n const migrations = [...schema.migrations ?? []].sort((a, b) => a.toVersion - b.toVersion);\n const versions = new Set;\n for (const migration of migrations) {\n positiveVersion(migration.toVersion, \"Sync migration toVersion\");\n if (versions.has(migration.toVersion))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync migration ${migration.toVersion} is declared more than once`);\n versions.add(migration.toVersion);\n }\n const inferredMinimum = migrations[0] ? migrations[0].toVersion - 1 : targetVersion;\n const minimumCompatibleVersion = positiveVersion(schema.minimumCompatibleVersion ?? inferredMinimum, \"Minimum compatible Sync schema version\");\n if (minimumCompatibleVersion > targetVersion)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Minimum compatible Sync schema version cannot exceed its target\");\n if (storedVersion > targetVersion)\n throw new SyncLocalStoreSchemaError(\"SCHEMA_TOO_NEW\", `Stored Sync schema ${storedVersion} is newer than this runtime's schema ${targetVersion}`, { storedVersion, targetVersion });\n if (storedVersion < minimumCompatibleVersion)\n throw new SyncLocalStoreSchemaError(\"SCHEMA_TOO_OLD\", `Stored Sync schema ${storedVersion} is older than the minimum compatible schema ${minimumCompatibleVersion}`, { storedVersion, targetVersion });\n const steps = [];\n for (let version = storedVersion + 1;version <= targetVersion; version++) {\n const migration = migrations.find((candidate) => candidate.toVersion === version);\n if (migration === undefined)\n throw new SyncLocalStoreSchemaError(\"MIGRATION_MISSING\", `Sync migration ${version - 1} -> ${version} is missing`, { storedVersion, targetVersion });\n steps.push(migration);\n }\n return { minimumCompatibleVersion, steps, targetVersion };\n};\nvar migrateSyncLocalCollectionRecord = (record, context, steps) => {\n let current = structuredClone(record);\n for (const step of steps) {\n if (current === null)\n break;\n current = applyDeclarativeCollectionOperations(current, context, step.operations ?? []);\n if (current === null)\n break;\n const next = step.migrateCollection?.(structuredClone(current), context);\n if (next === null)\n current = null;\n else if (next !== undefined)\n current = structuredClone(next);\n }\n return current;\n};\nvar migrateSyncLocalMutationRecord = (record, context, steps) => {\n let current = structuredClone(record);\n for (const step of steps) {\n if (current === null)\n break;\n const next = step.migrateMutation?.(structuredClone(current), context);\n if (next === null)\n current = null;\n else if (next !== undefined) {\n if (next.operationId !== context.key)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Sync migrations cannot change a mutation operationId\");\n current = structuredClone(next);\n }\n }\n return current;\n};\nvar jsonBytes = (value) => new TextEncoder().encode(JSON.stringify(value)).byteLength;\nvar evictionRank = {\n disposable: 0,\n normal: 1,\n critical: 2\n};\nvar runSyncLocalPolicyTransaction = async (options) => {\n const { mode, now, policy, raw } = options;\n const requireProtection = (kind, name) => {\n if (!options.protected)\n throw new SyncLocalDataPolicyError(\"PROTECTION_REQUIRED\", `Sync ${kind} \"${name}\" requires encrypted persistence, but this runtime has no audited protection provider.`);\n };\n const collectionPolicy = (record, key) => resolveSyncLocalCollectionPolicy(policy, record.collection ?? key);\n const unavailableMemoryOnly = (rule) => rule.protection === \"required\" && !options.protected && rule.onProtectionUnavailable === \"memory-only\";\n const expired = (record, key) => {\n const rule = collectionPolicy(record, key);\n return rule.maxAgeMs !== undefined && record.storedAt !== undefined && now - record.storedAt >= rule.maxAgeMs;\n };\n const tx = {\n ...raw,\n resolveMutationPolicy: (name) => resolveSyncLocalMutationPolicy(policy, name),\n getCollection: async (key) => {\n const record = await raw.getCollection(key);\n if (record === undefined)\n return;\n const rule = collectionPolicy(record, key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule) || expired(record, key)) {\n if (mode === \"readwrite\")\n await raw.deleteCollection(key);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", record.collection ?? key);\n return record;\n },\n listCollections: async () => {\n const kept = [];\n for (const entry of await raw.listCollections()) {\n const rule = collectionPolicy(entry.record, entry.key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule) || expired(entry.record, entry.key)) {\n if (mode === \"readwrite\")\n await raw.deleteCollection(entry.key);\n continue;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", entry.record.collection ?? entry.key);\n kept.push(entry);\n }\n return kept;\n },\n putCollection: async (key, record) => {\n const rule = collectionPolicy(record, key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n await raw.deleteCollection(key);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", record.collection ?? key);\n await raw.putCollection(key, rule.maxAgeMs !== undefined || policy.maxBytesPerNamespace !== undefined ? { ...record, storedAt: now } : record);\n },\n getMutation: async (operationId) => {\n const record = await raw.getMutation(operationId);\n if (!record)\n return;\n const rule = resolveSyncLocalMutationPolicy(policy, record.name);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n if (mode === \"readwrite\")\n await raw.deleteMutation(operationId);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"mutation\", record.name);\n return rule.conflict && record.conflictPolicy === undefined ? { ...record, conflictPolicy: structuredClone(rule.conflict) } : record;\n },\n listMutations: async () => {\n const records = [];\n for (const record of await raw.listMutations()) {\n const rule = resolveSyncLocalMutationPolicy(policy, record.name);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n if (mode === \"readwrite\")\n await raw.deleteMutation(record.operationId);\n continue;\n }\n if (rule.protection === \"required\")\n requireProtection(\"mutation\", record.name);\n records.push(rule.conflict && record.conflictPolicy === undefined ? {\n ...record,\n conflictPolicy: structuredClone(rule.conflict)\n } : record);\n }\n return records;\n },\n putMutation: async (record) => {\n const rule = resolveSyncLocalMutationPolicy(policy, record.name);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n await raw.deleteMutation(record.operationId);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"mutation\", record.name);\n await raw.putMutation(rule.conflict && record.conflictPolicy === undefined ? {\n ...record,\n conflictPolicy: structuredClone(rule.conflict)\n } : record);\n }\n };\n const result = await options.run(tx);\n if (mode === \"readwrite\" && policy.maxBytesPerNamespace !== undefined) {\n const mutations = await raw.listMutations();\n let collections = await raw.listCollections();\n let bytes = mutations.reduce((total, value) => total + jsonBytes(value), 0) + collections.reduce((total, entry) => total + jsonBytes(entry.record), 0);\n const candidates = [...collections].sort((left, right) => {\n const leftRule = collectionPolicy(left.record, left.key);\n const rightRule = collectionPolicy(right.record, right.key);\n return evictionRank[leftRule.evictionPriority ?? \"normal\"] - evictionRank[rightRule.evictionPriority ?? \"normal\"] || (left.record.storedAt ?? 0) - (right.record.storedAt ?? 0) || left.key.localeCompare(right.key);\n });\n for (const candidate of candidates) {\n if (bytes <= policy.maxBytesPerNamespace)\n break;\n await raw.deleteCollection(candidate.key);\n bytes -= jsonBytes(candidate.record);\n }\n if (bytes > policy.maxBytesPerNamespace)\n throw new SyncLocalDataPolicyError(\"QUOTA_EXCEEDED\", `Sync pending operations require ${bytes} logical bytes, exceeding the protected ${policy.maxBytesPerNamespace}-byte namespace quota; pending mutations were retained.`);\n }\n return result;\n};\nvar clone = (value) => structuredClone(value);\nvar emptyNamespace = () => ({\n collections: new Map,\n mutations: new Map\n});\nvar cloneNamespace = (source) => ({\n installationId: source.installationId,\n collections: new Map([...source.collections].map(([key, value]) => [key, clone(value)])),\n mutations: new Map([...source.mutations].map(([key, value]) => [key, clone(value)]))\n});\nvar createMemorySyncLocalStore = ({\n storageSchema = { version: 1 },\n protection,\n now = Date.now\n} = {}) => {\n const localData = resolveSyncLocalDataPolicy(storageSchema);\n let protectorPromise;\n const prepareProtector = () => protectorPromise ??= protection?.prepare();\n const targetComponents = normalizeSyncLocalSchemaComponents(storageSchema);\n const resolvedSchema = resolveSyncLocalSchemaComponents(Object.fromEntries(targetComponents.map((component) => [\n component.id,\n component.version\n ])), storageSchema);\n const schemaStatus = createSyncLocalSchemaStatus(resolvedSchema.components, [], isSchemaBundle(storageSchema));\n const namespaces = new Map;\n let tail = Promise.resolve();\n const withLock = async (run) => {\n let release;\n const previous = tail;\n tail = new Promise((resolve) => {\n release = resolve;\n });\n await previous;\n try {\n return await run();\n } finally {\n release();\n }\n };\n const transaction = async (namespace, mode, run) => {\n if (namespace.length === 0) {\n throw new Error(\"Sync local-store namespace must not be empty\");\n }\n const protector = await prepareProtector();\n return withLock(async () => {\n const current = namespaces.get(namespace) ?? emptyNamespace();\n const working = cloneNamespace(current);\n const writable = () => {\n if (mode !== \"readwrite\") {\n throw new Error(\"Cannot write in a readonly Sync local transaction\");\n }\n };\n const tx = {\n getInstallationId: async () => working.installationId,\n setInstallationId: async (installationId) => {\n writable();\n if (installationId.length === 0) {\n throw new Error(\"Sync installation id must not be empty\");\n }\n working.installationId = installationId;\n },\n getCollection: async (key) => {\n const record = working.collections.get(key);\n return record === undefined ? undefined : clone(record);\n },\n listCollections: async () => [...working.collections.entries()].map(([key, record]) => ({\n key,\n record: clone(record)\n })),\n putCollection: async (key, record) => {\n writable();\n working.collections.set(key, clone(record));\n },\n deleteCollection: async (key) => {\n writable();\n working.collections.delete(key);\n },\n listMutations: async () => [...working.mutations.values()].sort((a, b) => a.createdAt - b.createdAt).map(clone),\n getMutation: async (operationId) => {\n const record = working.mutations.get(operationId);\n return record === undefined ? undefined : clone(record);\n },\n putMutation: async (record) => {\n writable();\n working.mutations.set(record.operationId, clone(record));\n },\n deleteMutation: async (operationId) => {\n writable();\n working.mutations.delete(operationId);\n }\n };\n const result = await runSyncLocalPolicyTransaction({\n mode,\n now: now(),\n policy: localData,\n protected: protector !== undefined,\n raw: tx,\n run\n });\n if (mode === \"readwrite\")\n namespaces.set(namespace, working);\n return result;\n });\n };\n return {\n transaction,\n getSchemaStatus: async () => ({ ...schemaStatus }),\n deleteNamespace: async (namespace) => {\n await withLock(async () => {\n namespaces.delete(namespace);\n return;\n });\n }\n };\n};\nvar openProtectedRecord = (value, protector, context) => {\n if (protector === undefined || protector.id !== value.protector)\n throw new SyncLocalDataPolicyError(\"PROTECTION_REQUIRED\", `Sync data is protected by \"${value.protector}\", which is unavailable in this runtime.`);\n return JSON.parse(protector.open(value.value, { ...context, name: value.name }));\n};\nvar requestResult = (request) => new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n});\nvar transactionComplete = (transaction) => new Promise((resolve, reject) => {\n transaction.oncomplete = () => resolve();\n transaction.onabort = () => reject(transaction.error ?? new Error(\"IndexedDB transaction aborted\"));\n transaction.onerror = () => reject(transaction.error ?? new Error(\"IndexedDB transaction failed\"));\n});\nvar deleteIndexRows = (index, namespace) => new Promise((resolve, reject) => {\n const request = index.openCursor(namespace);\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor === null) {\n resolve();\n return;\n }\n cursor.delete();\n cursor.continue();\n };\n});\nvar migrateIndexedRows = (request, migrate) => new Promise((resolve, reject) => {\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor === null) {\n resolve();\n return;\n }\n let next;\n try {\n next = migrate(cursor.value);\n } catch (error) {\n reject(error);\n return;\n }\n const write = next === null ? cursor.delete() : cursor.update(next);\n write.onerror = () => reject(write.error);\n write.onsuccess = () => cursor.continue();\n };\n});\nvar createIndexedDbSyncLocalStore = ({\n databaseName = \"absolutejs-sync-local-v1\",\n indexedDB: factory = globalThis.indexedDB,\n storageSchema = { version: 1 },\n protection,\n now = Date.now\n} = {}) => {\n const localData = resolveSyncLocalDataPolicy(storageSchema);\n let protectorPromise;\n const prepareProtector = () => protectorPromise ??= protection?.prepare();\n if (factory === undefined) {\n throw new Error(\"createIndexedDbSyncLocalStore requires IndexedDB in this runtime\");\n }\n let databasePromise;\n const database = () => {\n databasePromise ??= new Promise((resolve, reject) => {\n const request = factory.open(databaseName, 2);\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(\"metadata\"))\n db.createObjectStore(\"metadata\");\n if (!db.objectStoreNames.contains(\"collections\")) {\n const collections = db.createObjectStore(\"collections\", {\n keyPath: [\"namespace\", \"key\"]\n });\n collections.createIndex(\"namespace\", \"namespace\");\n }\n if (!db.objectStoreNames.contains(\"mutations\")) {\n const mutations = db.createObjectStore(\"mutations\", {\n keyPath: [\"namespace\", \"operationId\"]\n });\n mutations.createIndex(\"namespace\", \"namespace\");\n }\n if (!db.objectStoreNames.contains(\"schema\"))\n db.createObjectStore(\"schema\");\n };\n request.onsuccess = () => {\n request.result.onversionchange = () => request.result.close();\n resolve(request.result);\n };\n request.onerror = () => reject(request.error);\n request.onblocked = () => reject(new Error(`IndexedDB upgrade blocked for \"${databaseName}\"`));\n });\n return databasePromise;\n };\n let schemaPromise;\n const prepareSchema = () => {\n schemaPromise ??= Promise.all([database(), prepareProtector()]).then(async ([db, preparedProtector]) => {\n const native = db.transaction([\"schema\", \"collections\", \"mutations\"], \"readwrite\");\n const completed = transactionComplete(native);\n try {\n const schemaStore = native.objectStore(\"schema\");\n const savedVersion = await requestResult(schemaStore.get(\"logicalVersion\"));\n const savedComponents = await requestResult(schemaStore.get(\"componentVersions\"));\n const storedVersions = {};\n if (typeof savedComponents === \"object\" && savedComponents !== null && !Array.isArray(savedComponents))\n for (const [id, version] of Object.entries(savedComponents)) {\n if (!Number.isSafeInteger(version) || version < 1)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Stored Sync component \"${id}\" has an invalid version`);\n storedVersions[id] = version;\n }\n if (storedVersions[\"@absolutejs/app\"] === undefined && typeof savedVersion === \"number\")\n storedVersions[\"@absolutejs/app\"] = savedVersion;\n const resolved = resolveSyncLocalSchemaComponents(storedVersions, storageSchema);\n const steps = resolved.components.flatMap((component) => component.steps);\n if (steps.length > 0) {\n await migrateIndexedRows(native.objectStore(\"collections\").openCursor(), (row) => {\n const {\n namespace,\n key,\n protectedRecord,\n ...plain\n } = row;\n const record = protectedRecord ? openProtectedRecord(protectedRecord, preparedProtector, { kind: \"collection\", namespace }) : plain;\n const migrated = migrateSyncLocalCollectionRecord(record, { key, namespace }, steps);\n if (migrated === null)\n return null;\n return protectedRecord && preparedProtector ? {\n key,\n namespace,\n protectedRecord: {\n ...protectedRecord,\n value: preparedProtector.seal(JSON.stringify(migrated), {\n kind: \"collection\",\n name: migrated.collection ?? key,\n namespace\n })\n }\n } : { ...migrated, key, namespace };\n });\n await migrateIndexedRows(native.objectStore(\"mutations\").openCursor(), (row) => {\n const { namespace, protectedRecord, ...plain } = row;\n const record = protectedRecord ? openProtectedRecord(protectedRecord, preparedProtector, { kind: \"mutation\", namespace }) : plain;\n const migrated = migrateSyncLocalMutationRecord(record, { key: record.operationId, namespace }, steps);\n if (migrated === null)\n return null;\n return protectedRecord && preparedProtector ? {\n createdAt: migrated.createdAt,\n namespace,\n operationId: migrated.operationId,\n protectedRecord: {\n ...protectedRecord,\n value: preparedProtector.seal(JSON.stringify(migrated), {\n kind: \"mutation\",\n name: migrated.name,\n namespace\n })\n }\n } : { ...migrated, namespace };\n });\n }\n const nextVersions = { ...storedVersions };\n for (const component of resolved.components)\n nextVersions[component.id] = component.targetVersion;\n await requestResult(schemaStore.put(nextVersions, \"componentVersions\"));\n const app = resolved.components.find((component) => component.id === \"@absolutejs/app\");\n if (app)\n await requestResult(schemaStore.put(app.targetVersion, \"logicalVersion\"));\n await completed;\n return createSyncLocalSchemaStatus(resolved.components, resolved.orphanedComponents, isSchemaBundle(storageSchema));\n } catch (error) {\n try {\n native.abort();\n } catch {}\n await completed.catch(() => {});\n throw error;\n }\n });\n return schemaPromise;\n };\n const transaction = async (namespace, mode, run) => {\n if (namespace.length === 0) {\n throw new Error(\"Sync local-store namespace must not be empty\");\n }\n await prepareSchema();\n const protector = await prepareProtector();\n const db = await database();\n const native = db.transaction([\"metadata\", \"collections\", \"mutations\"], mode);\n const completed = transactionComplete(native);\n const writable = () => {\n if (mode !== \"readwrite\") {\n throw new Error(\"Cannot write in a readonly Sync local transaction\");\n }\n };\n const metadata = native.objectStore(\"metadata\");\n const collections = native.objectStore(\"collections\");\n const mutations = native.objectStore(\"mutations\");\n const tx = {\n getInstallationId: () => requestResult(metadata.get(namespace)),\n setInstallationId: async (installationId) => {\n writable();\n if (installationId.length === 0) {\n throw new Error(\"Sync installation id must not be empty\");\n }\n await requestResult(metadata.put(installationId, namespace));\n },\n getCollection: async (key) => {\n const row = await requestResult(collections.get([namespace, key]));\n if (row === undefined)\n return;\n if (row.protectedRecord)\n return openProtectedRecord(row.protectedRecord, protector, { kind: \"collection\", namespace });\n const {\n namespace: _namespace,\n key: _key,\n protectedRecord: _protected,\n ...record\n } = row;\n return record;\n },\n listCollections: async () => {\n const rows = await requestResult(collections.index(\"namespace\").getAll(namespace));\n return rows.map((row) => ({\n key: row.key,\n record: row.protectedRecord ? openProtectedRecord(row.protectedRecord, protector, { kind: \"collection\", namespace }) : (({\n namespace: _namespace,\n key: _key,\n protectedRecord: _protected,\n ...record\n }) => record)(row)\n }));\n },\n putCollection: async (key, record) => {\n writable();\n await requestResult(collections.put(protector ? {\n key,\n namespace,\n protectedRecord: {\n name: record.collection ?? key,\n protector: protector.id,\n value: protector.seal(JSON.stringify(record), {\n kind: \"collection\",\n name: record.collection ?? key,\n namespace\n })\n }\n } : { ...record, key, namespace }));\n },\n deleteCollection: async (key) => {\n writable();\n await requestResult(collections.delete([namespace, key]));\n },\n listMutations: async () => {\n const rows = await requestResult(mutations.index(\"namespace\").getAll(namespace));\n return rows.map((row) => row.protectedRecord ? openProtectedRecord(row.protectedRecord, protector, { kind: \"mutation\", namespace }) : (({\n namespace: _namespace,\n protectedRecord: _protected,\n ...record\n }) => record)(row)).sort((a, b) => a.createdAt - b.createdAt);\n },\n getMutation: async (operationId) => {\n const row = await requestResult(mutations.get([namespace, operationId]));\n if (row === undefined)\n return;\n if (row.protectedRecord)\n return openProtectedRecord(row.protectedRecord, protector, { kind: \"mutation\", namespace });\n const {\n namespace: _namespace,\n protectedRecord: _protected,\n ...record\n } = row;\n return record;\n },\n putMutation: async (record) => {\n writable();\n await requestResult(mutations.put(protector ? {\n createdAt: record.createdAt,\n namespace,\n operationId: record.operationId,\n protectedRecord: {\n name: record.name,\n protector: protector.id,\n value: protector.seal(JSON.stringify(record), {\n kind: \"mutation\",\n name: record.name,\n namespace\n })\n }\n } : { ...record, namespace }));\n },\n deleteMutation: async (operationId) => {\n writable();\n await requestResult(mutations.delete([namespace, operationId]));\n }\n };\n try {\n const result = await runSyncLocalPolicyTransaction({\n mode,\n now: now(),\n policy: localData,\n protected: protector !== undefined,\n raw: tx,\n run\n });\n await completed;\n return result;\n } catch (error) {\n try {\n native.abort();\n } catch {}\n await completed.catch(() => {});\n throw error;\n }\n };\n return {\n transaction,\n getSchemaStatus: async () => ({ ...await prepareSchema() }),\n deleteNamespace: async (namespace) => {\n await prepareSchema();\n const db = await database();\n const native = db.transaction([\"metadata\", \"collections\", \"mutations\"], \"readwrite\");\n const completed = transactionComplete(native);\n await requestResult(native.objectStore(\"metadata\").delete(namespace));\n await deleteIndexRows(native.objectStore(\"collections\").index(\"namespace\"), namespace);\n await deleteIndexRows(native.objectStore(\"mutations\").index(\"namespace\"), namespace);\n await completed;\n }\n };\n};\nvar randomId = () => {\n const id = globalThis.crypto?.randomUUID?.();\n if (id === undefined) {\n throw new Error(\"Sync operation ids require crypto.randomUUID or a createId callback\");\n }\n return id;\n};\nvar ensureSyncInstallationId = (store, namespace, createId = randomId) => store.transaction(namespace, \"readwrite\", async (tx) => {\n const existing = await tx.getInstallationId();\n if (existing !== undefined)\n return existing;\n const installationId = createId();\n await tx.setInstallationId(installationId);\n return installationId;\n});\nvar createSyncOperationId = (installationId, createId = randomId) => `${installationId}:${createId()}`;\n\n// src/reconciliation.ts\nclass SyncMutationRejectedError extends Error {\n operationId;\n rejection;\n constructor(rejection, operationId) {\n super(rejection.message);\n this.name = \"SyncMutationRejectedError\";\n this.operationId = operationId;\n this.rejection = rejection;\n }\n}\n\n// src/client/syncClient.ts\nvar serverFrameTypes2 = [\n \"snapshot\",\n \"diff\",\n \"frame\",\n \"error\",\n \"ack\",\n \"reject\"\n];\nvar canonicalJson = (value) => {\n const seen = new Set;\n const normalize = (input) => {\n if (input === undefined)\n return null;\n if (input === null || typeof input === \"string\" || typeof input === \"boolean\") {\n return input;\n }\n if (typeof input === \"number\") {\n if (!Number.isFinite(input)) {\n throw new Error(\"Sync collection params must contain finite numbers; provide an explicit localKey\");\n }\n return input;\n }\n if (typeof input !== \"object\") {\n throw new Error(\"Sync collection params must be JSON-serializable; provide an explicit localKey\");\n }\n if (seen.has(input)) {\n throw new Error(\"Sync collection params contain a cycle; provide an explicit localKey\");\n }\n seen.add(input);\n try {\n if (Array.isArray(input))\n return input.map(normalize);\n const prototype = Object.getPrototypeOf(input);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new Error(\"Sync collection params must use plain objects; provide an explicit localKey\");\n }\n return Object.fromEntries(Object.entries(input).sort(([a], [b]) => a.localeCompare(b)).map(([key, item]) => [key, normalize(item)]));\n } finally {\n seen.delete(input);\n }\n };\n return JSON.stringify(normalize(value));\n};\nvar defaultLocalKey = (collection, params) => params === undefined ? collection : `${collection}:${canonicalJson(params)}`;\nvar ticketAuthenticatedSocketUrl = (url) => {\n if (/(?:\\?|&)__absolute_auth=/u.test(url))\n return url;\n const hashAt = url.indexOf(\"#\");\n const beforeHash = hashAt === -1 ? url : url.slice(0, hashAt);\n const hash = hashAt === -1 ? \"\" : url.slice(hashAt);\n const separator = beforeHash.includes(\"?\") ? \"&\" : \"?\";\n return `${beforeHash}${separator}__absolute_auth=ticket${hash}`;\n};\nvar createSyncClient = (options) => {\n const runtime = getSyncClientRuntimeTransport();\n const socketTicket = options.socketTicket ?? runtime?.socketTicket;\n const durable = options.durable ?? runtime?.durable;\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const maxAttempts = durable?.maxAttempts ?? 5;\n if (!Number.isInteger(maxAttempts) || maxAttempts < 1) {\n throw new TypeError(\"durable.maxAttempts must be a positive integer\");\n }\n const retryBackoff = durable?.retryBackoff ?? ((attempt) => Math.min(30000, 500 * 2 ** (attempt - 1)));\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? runtime?.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createSyncClient requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const entries = new Map;\n const pending = [];\n const mutationOwner = new Map;\n const deadLetters = new Map;\n const retryTimers = new Map;\n const statusListeners = new Set;\n let nextEntryId = 0;\n let mutationSeq = 0;\n let installationId;\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let immediateReconnect = false;\n let clientStatus = {\n automaticResolutions: 0,\n connection: \"connecting\",\n conflicts: 0,\n deadLetters: 0,\n pending: 0\n };\n const snapshotStatus = () => ({ ...clientStatus });\n const updateStatus = (patch = {}) => {\n const oldestPendingAt = pending.reduce((oldest, mutation) => oldest === undefined ? mutation.createdAt : Math.min(oldest, mutation.createdAt), undefined);\n const retained = [...deadLetters.values()];\n const oldestDeadLetterAt = retained.reduce((oldest, record) => {\n const at = record.deadLetteredAt ?? record.createdAt;\n return oldest === undefined ? at : Math.min(oldest, at);\n }, undefined);\n clientStatus = {\n ...clientStatus,\n ...patch,\n pending: pending.length,\n deadLetters: deadLetters.size,\n conflicts: retained.filter((record) => record.rejection?.kind === \"conflict\").length,\n ...oldestDeadLetterAt === undefined ? {} : { oldestDeadLetterAt },\n ...oldestPendingAt === undefined ? {} : { oldestPendingAt }\n };\n if (oldestPendingAt === undefined)\n delete clientStatus.oldestPendingAt;\n if (oldestDeadLetterAt === undefined)\n delete clientStatus.oldestDeadLetterAt;\n for (const listener of statusListeners)\n listener(snapshotStatus());\n };\n const notify = (entry) => {\n for (const listener of entry.listeners) {\n listener(entry.state);\n }\n };\n const rebuild = (entry, patch = {}) => {\n const working = new Map(entry.confirmed);\n const draft = {\n set: (row) => working.set(entry.key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n if (mutation.ownerKey === entry.localKey) {\n mutation.optimistic?.(draft);\n }\n for (const operation of mutation.optimisticOperations) {\n if (operation.collection !== entry.localKey)\n continue;\n if (operation.type === \"delete\")\n draft.delete(operation.key);\n else\n draft.set(operation.row);\n }\n }\n entry.state = {\n ...entry.state,\n ...patch,\n data: [...working.values()]\n };\n };\n const recompute = (entry, patch = {}) => {\n rebuild(entry, patch);\n notify(entry);\n };\n const applyDiffToConfirmed = (entry, diff) => {\n for (const row of diff.removed) {\n entry.confirmed.delete(entry.key(row));\n }\n for (const row of diff.added) {\n entry.confirmed.set(entry.key(row), row);\n }\n for (const row of diff.changed) {\n entry.confirmed.set(entry.key(row), row);\n }\n };\n const settlePending = (mutationId) => {\n const mutation = mutationOwner.get(mutationId);\n mutationOwner.delete(mutationId);\n if (mutation === undefined) {\n return;\n }\n const index = pending.findIndex((item) => item === mutation);\n if (index === -1) {\n return;\n }\n pending.splice(index, 1);\n if (mutation.operationId !== undefined) {\n const timer = retryTimers.get(mutation.operationId);\n if (timer !== undefined)\n clearTimeout(timer);\n retryTimers.delete(mutation.operationId);\n }\n updateStatus();\n return mutation;\n };\n const reportStorageError = (error) => {\n durable?.onError?.(error);\n options.onError?.(error);\n };\n let localWriteTail = Promise.resolve();\n const queueLocalWrite = (run) => {\n const next = localWriteTail.then(run);\n localWriteTail = next.then(() => {\n return;\n }, (error) => reportStorageError(error));\n return next;\n };\n const persistEntries = (affected) => {\n if (durable === undefined)\n return;\n const snapshots = new Map;\n for (const entry of affected) {\n snapshots.set(entry.localKey, {\n rows: [...entry.confirmed.values()],\n version: entry.appliedVersion,\n cursor: entry.cursor,\n collection: entry.collection,\n params: entry.params,\n ...entry.headlessKey ? { headlessKey: entry.headlessKey } : {}\n });\n }\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n for (const [key, record] of snapshots) {\n await tx.putCollection(key, record);\n }\n })).catch(() => {});\n };\n const recomputeMutationEntries = (mutation) => {\n const keys = new Set([\n mutation.ownerKey,\n ...mutation.optimisticOperations.map((operation) => operation.collection)\n ]);\n for (const entry of entries.values()) {\n if (keys.has(entry.localKey))\n recompute(entry);\n }\n };\n let sendMutate;\n const finishPending = (mutationId, result, error) => {\n const mutation = settlePending(mutationId);\n if (mutation === undefined)\n return;\n recomputeMutationEntries(mutation);\n if (error === undefined)\n mutation.resolve?.(result);\n else\n mutation.reject?.(error);\n };\n const finishDurablePending = (mutationId, echoedOperationId, result, error) => {\n const mutation = mutationOwner.get(mutationId);\n if (mutation?.operationId === undefined || durable === undefined) {\n finishPending(mutationId, result, error);\n return;\n }\n if (echoedOperationId !== mutation.operationId) {\n reportStorageError(new Error(`Durable mutation acknowledgment identity mismatch for ${mutation.operationId}`));\n return;\n }\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.deleteMutation(mutation.operationId))).then(() => finishPending(mutationId, result, error)).catch(() => {});\n };\n const deadLetterPending = (mutationId, rejection) => {\n const mutation = mutationOwner.get(mutationId);\n if (mutation?.operationId === undefined || durable === undefined) {\n finishPending(mutationId, undefined, new SyncMutationRejectedError(rejection, mutation?.operationId));\n return;\n }\n const deadLetteredAt = Date.now();\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const current = await tx.getMutation(mutation.operationId);\n if (current === undefined)\n return;\n const record = {\n ...current,\n attempts: mutation.attempts,\n deadLetteredAt,\n lastError: rejection.message,\n rejection,\n state: \"dead-letter\"\n };\n delete record.nextAttemptAt;\n await tx.putMutation(record);\n deadLetters.set(record.operationId, record);\n })).then(() => {\n updateStatus({ lastError: rejection.message });\n finishPending(mutationId, undefined, new SyncMutationRejectedError(rejection, mutation.operationId));\n }).catch(() => {});\n };\n const retryRejectedPending = (mutation, rejection) => {\n if (mutation.operationId === undefined || durable === undefined) {\n deadLetterPending(mutation.mutationId, rejection);\n return;\n }\n if (mutation.attempts >= maxAttempts) {\n deadLetterPending(mutation.mutationId, rejection);\n return;\n }\n const delay = Math.max(0, rejection.retryAfterMs ?? retryBackoff(mutation.attempts));\n mutation.nextAttemptAt = Date.now() + delay;\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const record = await tx.getMutation(mutation.operationId);\n if (record === undefined)\n return;\n await tx.putMutation({\n ...record,\n attempts: mutation.attempts,\n lastError: rejection.message,\n nextAttemptAt: mutation.nextAttemptAt,\n rejection,\n state: \"pending\"\n });\n })).then(() => {\n updateStatus({ lastError: rejection.message });\n sendMutate(mutation);\n }).catch(() => {});\n };\n const resolveConflictedPending = (mutation, rejection) => {\n const policy = mutation.conflictPolicy;\n if (!policy || policy.strategy === \"manual\")\n return false;\n const lastConflictAt = Date.now();\n if (policy.strategy === \"server-wins\") {\n queueLocalWrite(() => durable === undefined || mutation.operationId === undefined ? Promise.resolve() : durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.deleteMutation(mutation.operationId))).then(() => {\n updateStatus({\n automaticResolutions: clientStatus.automaticResolutions + 1,\n lastConflictAt,\n lastError: rejection.message\n });\n finishPending(mutation.mutationId, undefined, new SyncMutationRejectedError(rejection, mutation.operationId));\n }).catch(() => {});\n return true;\n }\n const conflictAttempts = mutation.conflictAttempts ?? 0;\n if (conflictAttempts >= (policy.maxAttempts ?? 1))\n return false;\n mutation.conflictAttempts = conflictAttempts + 1;\n mutation.nextAttemptAt = undefined;\n queueLocalWrite(() => durable === undefined || mutation.operationId === undefined ? Promise.resolve() : durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const record = await tx.getMutation(mutation.operationId);\n if (record === undefined)\n return;\n await tx.putMutation({\n ...record,\n attempts: mutation.attempts,\n conflictAttempts: mutation.conflictAttempts,\n lastError: rejection.message,\n rejection,\n state: \"pending\"\n });\n })).then(() => {\n updateStatus({\n automaticResolutions: clientStatus.automaticResolutions + 1,\n lastConflictAt,\n lastError: rejection.message\n });\n sendMutate(mutation);\n }).catch(() => {});\n return true;\n };\n const applyFrame = (frame) => {\n updateStatus({ connection: \"online\" });\n if (frame.type === \"snapshot\") {\n const entry = entries.get(frame.id);\n if (entry === undefined) {\n return;\n }\n entry.confirmed.clear();\n for (const row of frame.rows) {\n entry.confirmed.set(entry.key(row), row);\n }\n if (frame.version !== undefined) {\n entry.appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n persistEntries([entry]);\n recompute(entry, { status: \"ready\", error: undefined });\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"diff\") {\n const entry = entries.get(frame.id);\n if (entry === undefined) {\n return;\n }\n applyDiffToConfirmed(entry, frame);\n if (frame.version !== undefined) {\n entry.appliedVersion = Math.max(entry.appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n persistEntries([entry]);\n recompute(entry);\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"frame\") {\n const affected = new Set;\n for (const diff of frame.diffs) {\n const entry = entries.get(diff.id);\n if (entry === undefined) {\n continue;\n }\n applyDiffToConfirmed(entry, diff);\n if (frame.version !== undefined) {\n entry.appliedVersion = Math.max(entry.appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n rebuild(entry);\n affected.add(entry);\n }\n persistEntries(affected);\n for (const entry of affected) {\n notify(entry);\n }\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"error\") {\n if (frame.id !== undefined) {\n const entry = entries.get(frame.id);\n if (entry !== undefined) {\n recompute(entry, { error: frame.message });\n }\n }\n options.onError?.(frame.message);\n updateStatus({ lastError: String(frame.message) });\n } else if (frame.type === \"ack\") {\n updateStatus({ lastSuccessfulPushAt: Date.now() });\n finishDurablePending(frame.mutationId, frame.operationId, frame.result);\n } else if (frame.type === \"reject\") {\n const mutation = mutationOwner.get(frame.mutationId);\n if (mutation?.operationId !== undefined && frame.operationId !== mutation.operationId) {\n reportStorageError(new Error(`Durable mutation rejection identity mismatch for ${mutation.operationId}`));\n return;\n }\n const rejection = frame.rejection ?? {\n kind: \"permanent\",\n message: String(frame.message)\n };\n if (rejection.kind === \"conflict\" && mutation !== undefined && resolveConflictedPending(mutation, rejection)) {\n return;\n }\n if (rejection.kind === \"retryable\" && mutation !== undefined) {\n retryRejectedPending(mutation, rejection);\n } else {\n deadLetterPending(frame.mutationId, rejection);\n }\n }\n };\n const wsSend = (payload) => {\n socket?.send(payload);\n };\n const sendSubscribe = (entry) => {\n const since = entry.cursor ?? (entry.appliedVersion > 0 ? entry.appliedVersion : undefined);\n wsSend(serializer.encodeClient({\n type: \"subscribe\",\n id: entry.id,\n collection: entry.collection,\n params: entry.params,\n since\n }));\n };\n sendMutate = (mutation) => {\n if (mutation.nextAttemptAt !== undefined) {\n const delay = mutation.nextAttemptAt - Date.now();\n if (delay > 0 && mutation.operationId !== undefined) {\n if (!retryTimers.has(mutation.operationId)) {\n const timer = setTimeout(() => {\n retryTimers.delete(mutation.operationId);\n mutation.nextAttemptAt = undefined;\n sendMutate(mutation);\n }, delay);\n retryTimers.set(mutation.operationId, timer);\n }\n return;\n }\n mutation.nextAttemptAt = undefined;\n }\n if (!connected)\n return;\n const payload = serializer.encodeClient({\n type: \"mutate\",\n mutationId: mutation.mutationId,\n operationId: mutation.operationId,\n name: mutation.name,\n args: mutation.args\n });\n if (durable === undefined || mutation.operationId === undefined) {\n wsSend(payload);\n return;\n }\n if (mutation.sending)\n return;\n mutation.sending = true;\n mutation.attempts += 1;\n const targetSocket = socket;\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const record = await tx.getMutation(mutation.operationId);\n if (record !== undefined) {\n await tx.putMutation({\n ...record,\n attempts: mutation.attempts,\n state: \"pending\",\n nextAttemptAt: undefined\n });\n }\n })).catch(() => {}).finally(() => {\n mutation.sending = false;\n if (connected && socket === targetSocket && pending.includes(mutation)) {\n targetSocket?.send(payload);\n }\n });\n };\n const initializeDurable = async () => {\n if (durable === undefined)\n return;\n installationId = await ensureSyncInstallationId(durable.store, durable.namespace, durable.createId);\n const records = await durable.store.transaction(durable.namespace, \"readonly\", (tx) => tx.listMutations());\n for (const record of records) {\n if (record.state === \"dead-letter\") {\n deadLetters.set(record.operationId, record);\n continue;\n }\n mutationSeq += 1;\n const mutation = {\n mutationId: mutationSeq,\n operationId: record.operationId,\n ownerKey: record.owner ?? record.optimistic[0]?.collection ?? \"\",\n name: record.name,\n args: record.args,\n optimisticOperations: record.optimistic,\n inverse: record.inverse,\n attempts: record.attempts,\n createdAt: record.createdAt,\n conflictAttempts: record.conflictAttempts,\n conflictPolicy: record.conflictPolicy,\n nextAttemptAt: record.nextAttemptAt,\n supersedesOperationId: record.supersedesOperationId\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n }\n updateStatus();\n };\n const durableReady = durable === undefined ? Promise.resolve() : initializeDurable().catch((error) => {\n reportStorageError(error);\n throw error;\n });\n const hydrateEntry = async (entry) => {\n if (durable === undefined)\n return;\n await durableReady;\n const record = await durable.store.transaction(durable.namespace, \"readonly\", (tx) => tx.getCollection(entry.localKey));\n if (entry.closed || record === undefined) {\n if (!entry.closed)\n recompute(entry);\n return;\n }\n entry.confirmed.clear();\n for (const row of record.rows) {\n entry.confirmed.set(entry.key(row), row);\n }\n entry.appliedVersion = record.version;\n entry.cursor = record.cursor;\n recompute(entry);\n };\n const connect2 = () => {\n if (closed) {\n return;\n }\n reconnectTimer = undefined;\n updateStatus({ connection: \"connecting\" });\n const ws = new Impl(socketTicket ? ticketAuthenticatedSocketUrl(options.url) : options.url);\n socket = ws;\n const sendInitialFrames = () => {\n if (socket !== ws || closed)\n return;\n if (socketTicket) {\n socketTicket().then((ticket) => {\n if (socket !== ws || closed)\n return;\n wsSend(serializer.encodeClient({\n type: \"authenticate\",\n ticket\n }));\n connected = true;\n for (const entry of entries.values())\n sendSubscribe(entry);\n for (const mutation of pending)\n sendMutate(mutation);\n }).catch((error) => {\n options.onError?.(error);\n updateStatus({ lastError: String(error) });\n ws.close();\n });\n return;\n }\n connected = true;\n for (const entry of entries.values()) {\n sendSubscribe(entry);\n }\n for (const mutation of pending)\n sendMutate(mutation);\n };\n ws.onopen = () => {\n if (durable === undefined) {\n sendInitialFrames();\n return;\n }\n Promise.all([...entries.values()].map((entry) => entry.hydrated)).then(sendInitialFrames).catch((error) => {\n reportStorageError(error);\n ws.close();\n });\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes2)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n if (socket === ws)\n socket = undefined;\n connected = false;\n if (closed) {\n return;\n }\n updateStatus({ connection: \"offline\" });\n if (immediateReconnect) {\n immediateReconnect = false;\n connect2();\n return;\n }\n if (reconnectMs <= 0)\n return;\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect2, delay);\n };\n };\n if (durable === undefined)\n connect2();\n else\n durableReady.then(connect2).catch(() => {});\n const normalizeOptimisticOperations = (ownerKey, operations) => (operations ?? []).map((operation) => operation.type === \"delete\" ? {\n type: \"delete\",\n collection: operation.collection ?? ownerKey,\n key: operation.key\n } : {\n type: operation.type,\n collection: operation.collection ?? ownerKey,\n row: operation.row\n });\n const captureInverse = (operations) => {\n const working = new Map;\n const entryFor = (localKey) => {\n const entry = [...entries.values()].find((item) => item.localKey === localKey);\n if (entry === undefined) {\n throw new Error(`Durable optimistic operation targets unopened collection \"${localKey}\"`);\n }\n let rows = working.get(localKey);\n if (rows === undefined) {\n rows = new Map(entry.state.data.map((row) => [entry.key(row), row]));\n working.set(localKey, rows);\n }\n return { entry, rows };\n };\n const inverse = [];\n for (const operation of operations) {\n const { entry, rows } = entryFor(operation.collection);\n if (operation.type === \"delete\") {\n const existing2 = rows.get(operation.key);\n if (existing2 !== undefined) {\n inverse.unshift({\n type: \"insert\",\n collection: operation.collection,\n row: existing2\n });\n }\n rows.delete(operation.key);\n continue;\n }\n const rowKey = entry.key(operation.row);\n const existing = rows.get(rowKey);\n inverse.unshift(existing === undefined ? {\n type: \"delete\",\n collection: operation.collection,\n key: rowKey\n } : {\n type: \"update\",\n collection: operation.collection,\n row: existing\n });\n rows.set(rowKey, operation.row);\n }\n return inverse;\n };\n const collection = (handleOptions) => {\n const entryId = `c${nextEntryId}`;\n nextEntryId += 1;\n const localKey = handleOptions.localKey ?? defaultLocalKey(handleOptions.collection, handleOptions.params);\n if (localKey.length === 0) {\n throw new Error(\"Sync collection localKey must not be empty\");\n }\n const entry = {\n id: entryId,\n localKey,\n collection: handleOptions.collection,\n params: handleOptions.params,\n key: handleOptions.key ?? ((row) => row.id),\n headlessKey: handleOptions.key === undefined ? \"id\" : undefined,\n confirmed: new Map,\n state: { data: [], status: \"connecting\", error: undefined },\n listeners: new Set,\n appliedVersion: 0,\n cursor: undefined,\n closed: false,\n hydrated: Promise.resolve()\n };\n entries.set(entryId, entry);\n entry.hydrated = hydrateEntry(entry);\n if (connected)\n entry.hydrated.then(() => sendSubscribe(entry)).catch(reportStorageError);\n return {\n get: () => entry.state,\n subscribe: (listener) => {\n const typed = listener;\n entry.listeners.add(typed);\n listener(entry.state);\n return () => {\n entry.listeners.delete(typed);\n };\n },\n mutate: (mutateOptions) => new Promise((resolve, reject) => {\n const addPending = (operationId, optimisticOperations, inverse, createdAt = Date.now(), conflictPolicy) => {\n mutationSeq += 1;\n const mutation = {\n mutationId: mutationSeq,\n operationId,\n ownerKey: entry.localKey,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: mutateOptions.optimistic,\n optimisticOperations,\n inverse,\n attempts: 0,\n createdAt,\n conflictPolicy,\n resolve: (result) => resolve(result),\n reject\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n updateStatus();\n recomputeMutationEntries(mutation);\n sendMutate(mutation);\n };\n if (durable === undefined) {\n const optimisticOperations = normalizeOptimisticOperations(entry.localKey, mutateOptions.optimisticOperations);\n const inverse = captureInverse(optimisticOperations);\n addPending(undefined, optimisticOperations, inverse);\n return;\n }\n (async () => {\n await entry.hydrated;\n const optimisticOperations = normalizeOptimisticOperations(entry.localKey, mutateOptions.optimisticOperations);\n const inverse = captureInverse(optimisticOperations);\n await durableReady;\n const operationId = createSyncOperationId(installationId, durable.createId);\n const createdAt = Date.now();\n const stored = await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const conflictPolicy = tx.resolveMutationPolicy?.(mutateOptions.name)?.conflict;\n const record = {\n operationId,\n owner: entry.localKey,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: optimisticOperations,\n inverse,\n createdAt,\n attempts: 0,\n state: \"pending\",\n ...conflictPolicy ? { conflictPolicy } : {}\n };\n await tx.putMutation(record);\n return record;\n }));\n addPending(operationId, optimisticOperations, inverse, createdAt, stored.conflictPolicy);\n })().catch(reject);\n }),\n close: () => {\n if (entry.closed) {\n return;\n }\n entry.closed = true;\n entries.delete(entryId);\n if (connected) {\n wsSend(serializer.encodeClient({\n type: \"unsubscribe\",\n id: entryId\n }));\n }\n }\n };\n };\n const listDeadLetters = async () => {\n if (durable === undefined)\n return [];\n await durableReady;\n return [...deadLetters.values()].sort((a, b) => a.createdAt - b.createdAt).map((record) => structuredClone(record));\n };\n const retryDeadLetter = async (operationId) => {\n if (durable === undefined) {\n throw new Error(\"Dead-letter retry requires a durable Sync client\");\n }\n await durableReady;\n if (closed)\n throw new Error(\"Cannot retry a dead letter on a closed client\");\n const record = await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const current = await tx.getMutation(operationId);\n if (current?.state !== \"dead-letter\") {\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n }\n const next = {\n ...current,\n attempts: 0,\n state: \"pending\"\n };\n delete next.deadLetteredAt;\n delete next.lastError;\n delete next.nextAttemptAt;\n delete next.rejection;\n await tx.putMutation(next);\n return next;\n }));\n deadLetters.delete(operationId);\n mutationSeq += 1;\n const mutation = {\n args: record.args,\n attempts: 0,\n createdAt: record.createdAt,\n conflictAttempts: record.conflictAttempts,\n conflictPolicy: record.conflictPolicy,\n inverse: record.inverse,\n mutationId: mutationSeq,\n name: record.name,\n operationId: record.operationId,\n optimisticOperations: record.optimistic,\n ownerKey: record.owner ?? record.optimistic[0]?.collection ?? \"\"\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n recomputeMutationEntries(mutation);\n updateStatus();\n sendMutate(mutation);\n };\n const rebaseDeadLetter = async (operationId, args) => {\n if (durable === undefined)\n throw new Error(\"Dead-letter rebase requires a durable Sync client\");\n await durableReady;\n if (closed)\n throw new Error(\"Cannot rebase a dead letter on a closed client\");\n const nextOperationId = createSyncOperationId(installationId, durable.createId);\n const record = await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const current = await tx.getMutation(operationId);\n if (current?.state !== \"dead-letter\")\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n const next = {\n ...current,\n args,\n attempts: 0,\n conflictAttempts: 0,\n createdAt: Date.now(),\n operationId: nextOperationId,\n state: \"pending\",\n supersedesOperationId: operationId\n };\n delete next.deadLetteredAt;\n delete next.lastError;\n delete next.nextAttemptAt;\n delete next.rejection;\n await tx.deleteMutation(operationId);\n await tx.putMutation(next);\n return next;\n }));\n deadLetters.delete(operationId);\n mutationSeq += 1;\n const mutation = {\n args: record.args,\n attempts: 0,\n conflictAttempts: 0,\n conflictPolicy: record.conflictPolicy,\n createdAt: record.createdAt,\n inverse: record.inverse,\n mutationId: mutationSeq,\n name: record.name,\n operationId: record.operationId,\n optimisticOperations: record.optimistic,\n ownerKey: record.owner ?? record.optimistic[0]?.collection ?? \"\",\n supersedesOperationId: operationId\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n recomputeMutationEntries(mutation);\n updateStatus();\n sendMutate(mutation);\n return nextOperationId;\n };\n const discardDeadLetter = async (operationId) => {\n if (durable === undefined) {\n throw new Error(\"Dead-letter discard requires a durable Sync client\");\n }\n await durableReady;\n if (!deadLetters.has(operationId)) {\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n }\n await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.deleteMutation(operationId)));\n deadLetters.delete(operationId);\n updateStatus();\n };\n const subscribeStatus = (listener) => {\n statusListeners.add(listener);\n listener(snapshotStatus());\n return () => {\n statusListeners.delete(listener);\n };\n };\n const flush = async ({ timeoutMs = 1e4 } = {}) => {\n if (!Number.isFinite(timeoutMs) || timeoutMs < 0) {\n throw new TypeError(\"Sync flush timeoutMs must be a non-negative number\");\n }\n await durableReady;\n if (pending.length === 0) {\n return {\n deadLetters: deadLetters.size,\n pending: 0,\n timedOut: false\n };\n }\n if (!connected)\n reconnect();\n const timedOut = await new Promise((resolve) => {\n let settled = false;\n let remove = () => {\n return;\n };\n const timer = setTimeout(() => {\n if (settled)\n return;\n settled = true;\n remove();\n resolve(true);\n }, timeoutMs);\n remove = subscribeStatus((current) => {\n if (settled || current.pending > 0)\n return;\n settled = true;\n clearTimeout(timer);\n remove();\n resolve(false);\n });\n });\n return {\n deadLetters: deadLetters.size,\n pending: pending.length,\n timedOut\n };\n };\n let removeRuntimeClient;\n let removeInspectionClient;\n const close = () => {\n if (closed)\n return;\n closed = true;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n socket?.close();\n for (const timer of retryTimers.values())\n clearTimeout(timer);\n retryTimers.clear();\n entries.clear();\n mutationOwner.clear();\n pending.length = 0;\n updateStatus({ connection: \"closed\" });\n statusListeners.clear();\n removeRuntimeClient?.();\n removeRuntimeClient = undefined;\n removeInspectionClient?.();\n removeInspectionClient = undefined;\n };\n const disconnect = () => {\n if (closed || socket === undefined) {\n return;\n }\n socket.close();\n };\n const reconnect = () => {\n if (closed)\n return;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n reconnectTimer = undefined;\n }\n const current = socket;\n if (current && current.readyState !== current.CLOSED) {\n immediateReconnect = true;\n current.close();\n return;\n }\n socket = undefined;\n connect2();\n };\n const client = {\n close,\n collection,\n discardDeadLetter,\n disconnect,\n flush,\n listDeadLetters,\n rebaseDeadLetter,\n reconnect,\n retryDeadLetter,\n status: snapshotStatus,\n subscribeStatus\n };\n removeRuntimeClient = runtime?.registerClient?.(client) ?? undefined;\n removeInspectionClient = registerSyncRuntimeClient(client);\n return client;\n};\n// src/client/syncStore.ts\nvar serverFrameTypes3 = [\"snapshot\", \"diff\", \"error\"];\nvar SUBSCRIPTION_ID2 = \"s\";\nvar syncStore = (options) => {\n const key = options.key ?? ((row) => row.id);\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const reconcileGraceMs = options.reconcileGraceMs ?? 3000;\n const mutations = options.mutations ?? {};\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"syncStore requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const confirmed = new Map;\n const pending = [];\n let mutationSeq = 0;\n let state = {\n data: options.initialData ? [...options.initialData] : [],\n status: \"connecting\",\n error: undefined\n };\n if (options.initialData) {\n for (const row of options.initialData) {\n confirmed.set(key(row), row);\n }\n }\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n const recompute = (patch = {}) => {\n const working = new Map(confirmed);\n const draft = {\n set: (row) => working.set(key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n mutation.optimistic?.(draft);\n }\n setState({ ...patch, data: [...working.values()] });\n };\n const persist = () => {\n options.storage?.save(pending.map((mutation) => ({\n mutationId: mutation.id,\n name: mutation.name,\n args: mutation.args\n })));\n };\n const dropPending = (mutation) => {\n const index = pending.indexOf(mutation);\n if (index !== -1) {\n pending.splice(index, 1);\n }\n if (mutation.graceTimer !== undefined) {\n clearTimeout(mutation.graceTimer);\n }\n };\n const reconcileSettled = () => {\n let changed = false;\n for (const mutation of [...pending]) {\n if (!mutation.settled) {\n continue;\n }\n let reflected = true;\n for (const [rowKey, kind] of mutation.touched) {\n const present = confirmed.has(rowKey);\n if (kind === \"set\" ? !present : present) {\n reflected = false;\n break;\n }\n }\n if (reflected) {\n dropPending(mutation);\n changed = true;\n }\n }\n if (changed) {\n recompute();\n }\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let appliedVersion = 0;\n let appliedCursor;\n const applyFrame = (frame) => {\n if (frame.type === \"snapshot\") {\n confirmed.clear();\n for (const row of frame.rows) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n recompute({ status: \"ready\", error: undefined });\n reconcileSettled();\n } else if (frame.type === \"diff\") {\n for (const row of frame.removed) {\n confirmed.delete(key(row));\n }\n for (const row of frame.added) {\n confirmed.set(key(row), row);\n }\n for (const row of frame.changed) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = Math.max(appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n recompute();\n reconcileSettled();\n } else if (frame.type === \"error\") {\n setState({ error: frame.message });\n options.onError?.(frame.message);\n }\n };\n const runMutation = async (mutation) => {\n if (mutation.inFlight || mutation.settled) {\n return;\n }\n const run = mutations[mutation.name];\n if (run === undefined) {\n dropPending(mutation);\n recompute();\n mutation.reject(new Error(`Unknown mutation \"${mutation.name}\"`));\n return;\n }\n mutation.inFlight = true;\n try {\n const result = await run(mutation.args);\n mutation.inFlight = false;\n mutation.settled = true;\n mutation.resolve(result);\n persist();\n reconcileSettled();\n if (pending.includes(mutation)) {\n mutation.graceTimer = setTimeout(() => {\n dropPending(mutation);\n recompute();\n }, reconcileGraceMs);\n }\n } catch (error) {\n mutation.inFlight = false;\n if (connected) {\n dropPending(mutation);\n recompute();\n persist();\n mutation.reject(error);\n } else {\n options.onError?.(error);\n }\n }\n };\n const connect2 = () => {\n if (closed) {\n return;\n }\n setState({ status: \"connecting\" });\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"subscribe\",\n id: SUBSCRIPTION_ID2,\n collection: options.collection,\n params: options.params,\n since: appliedCursor ?? (appliedVersion > 0 ? appliedVersion : undefined)\n }));\n for (const mutation of pending) {\n if (!mutation.settled && !mutation.inFlight) {\n runMutation(mutation);\n }\n }\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes3)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect2, delay);\n };\n };\n const eagerHydrate = async () => {\n if (options.hydrate === undefined || options.initialData !== undefined) {\n return;\n }\n try {\n const rows = await options.hydrate();\n if (state.status !== \"ready\") {\n confirmed.clear();\n for (const row of rows) {\n confirmed.set(key(row), row);\n }\n recompute({ status: \"ready\" });\n }\n } catch (error) {\n options.onError?.(error);\n }\n };\n const hydratePersisted = async () => {\n if (options.storage === undefined) {\n return;\n }\n const records = await options.storage.load();\n for (const record of records) {\n if (pending.some((m) => m.id === record.mutationId)) {\n continue;\n }\n pending.push({\n id: record.mutationId,\n name: record.name,\n args: record.args,\n touched: new Map,\n settled: false,\n inFlight: false,\n resolve: () => {},\n reject: () => {}\n });\n mutationSeq = Math.max(mutationSeq, record.mutationId);\n }\n if (connected) {\n for (const mutation of pending) {\n runMutation(mutation);\n }\n }\n };\n connect2();\n eagerHydrate();\n hydratePersisted();\n const collectTouched = (optimistic) => {\n const touched = new Map;\n optimistic?.({\n set: (row) => touched.set(key(row), \"set\"),\n delete: (rowKey) => touched.set(rowKey, \"delete\")\n });\n return touched;\n };\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n mutate: (name, args, mutateOptions) => new Promise((resolve, reject) => {\n const mutation = {\n id: mutationSeq += 1,\n name,\n args,\n touched: collectTouched(mutateOptions?.optimistic),\n optimistic: mutateOptions?.optimistic,\n settled: false,\n inFlight: false,\n resolve,\n reject\n };\n pending.push(mutation);\n persist();\n recompute();\n runMutation(mutation);\n }),\n refetch: async () => {\n if (options.hydrate === undefined) {\n return;\n }\n const rows = await options.hydrate();\n confirmed.clear();\n for (const row of rows) {\n confirmed.set(key(row), row);\n }\n recompute({ status: \"ready\" });\n },\n close: () => {\n if (closed) {\n return;\n }\n closed = true;\n connected = false;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n try {\n socket?.send(serializer.encodeClient({\n type: \"unsubscribe\",\n id: SUBSCRIPTION_ID2\n }));\n socket?.close();\n } catch {}\n for (const mutation of pending.splice(0)) {\n if (mutation.graceTimer !== undefined) {\n clearTimeout(mutation.graceTimer);\n }\n mutation.reject(new Error(\"sync store closed\"));\n }\n persist();\n setState({ status: \"closed\" });\n listeners.clear();\n }\n };\n};\nvar unwrapEden = async (response) => {\n const { data, error } = await response;\n if (error !== null && error !== undefined) {\n throw error;\n }\n return data;\n};\nexport {\n SyncLocalDataPolicyError,\n SyncLocalStoreSchemaError,\n SyncMutationRejectedError,\n createCollaborativeText,\n createIndexedDbSyncLocalStore,\n createLiveQuery,\n createMemorySyncLocalStore,\n createPresence,\n createSharedSyncSubscriber,\n createSyncClient,\n createSyncCollection,\n createSyncLocalSchemaStatus,\n createSyncOperationId,\n createSyncSubscriber,\n discardSyncRuntimeDeadLetter,\n ensureSyncInstallationId,\n getSyncClientRuntimeTransport,\n indexedDbCollectionCache,\n inspectSyncRuntime,\n installSyncClientRuntimeTransport,\n jsonFetcher,\n localStorageCollectionCache,\n localStorageMutationStorage,\n migrateSyncLocalCollectionRecord,\n migrateSyncLocalMutationRecord,\n normalizeSyncLocalSchemaComponents,\n rebaseSyncRuntimeDeadLetter,\n registerSyncRuntimeClient,\n resolveSyncLocalCollectionPolicy,\n resolveSyncLocalDataPolicy,\n resolveSyncLocalMigrations,\n resolveSyncLocalMutationPolicy,\n resolveSyncLocalSchemaComponents,\n retrySyncRuntimeDeadLetter,\n runHeadlessSync,\n runSyncLocalPolicyTransaction,\n syncStore,\n unwrapEden,\n validateSyncLocalDataPolicy\n};\n\n//# debugId=117FAC16CDE3C9F364756E2164756E21\n//# sourceMappingURL=index.js.map\n",
10
12
  "import { readFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\nimport {\n\tresolveSyncLocalSchemaComponents,\n\ttype SyncLocalCollectionMigrationOperation,\n\ttype SyncLocalCollectionPolicy,\n\ttype SyncLocalConflictPolicy,\n\ttype SyncLocalDataPolicy,\n\ttype SyncLocalJsonValue,\n\ttype SyncLocalMutationPolicy,\n\ttype SyncLocalStoreMigration,\n\ttype SyncLocalStoreSchemaBundle,\n\ttype SyncLocalStoreSchemaComponent\n} from '@absolutejs/sync/client';\n\nexport type AbsoluteSyncSchemaDiscovery = {\n\tcomponents: SyncLocalStoreSchemaBundle['components'];\n\tsources: { id: string; manifestPath: string }[];\n};\n\n// A predicate annotation is required so parsed package JSON remains `unknown`\n// until every object boundary has been checked.\nconst object = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst manifestAt = (path: string) => {\n\ttry {\n\t\tconst value: unknown = JSON.parse(readFileSync(path, 'utf8'));\n\n\t\treturn object(value) ? value : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nconst localSchemaMetadata = (manifest: object) => {\n\tconst absolutejs = Reflect.get(manifest, 'absolutejs');\n\tif (!object(absolutejs)) return undefined;\n\tconst sync = Reflect.get(absolutejs, 'sync');\n\tif (!object(sync)) return undefined;\n\n\treturn Reflect.get(sync, 'localSchema');\n};\n\nconst packageManifestPath = (projectRoot: string, packageName: string) => {\n\tlet directory = resolve(projectRoot);\n\twhile (true) {\n\t\tconst candidate = join(\n\t\t\tdirectory,\n\t\t\t'node_modules',\n\t\t\tpackageName,\n\t\t\t'package.json'\n\t\t);\n\t\tconst manifest = manifestAt(candidate);\n\t\tif (manifest && Reflect.get(manifest, 'name') === packageName)\n\t\t\treturn candidate;\n\t\tconst parent = dirname(directory);\n\t\tif (parent === directory) return undefined;\n\t\tdirectory = parent;\n\t}\n};\n\nconst metadataError = (id: string, detail: string) =>\n\tnew TypeError(\n\t\t`Invalid AbsoluteJS Sync schema metadata for ${id}: ${detail}`\n\t);\n\nconst positiveVersion = (value: unknown, id: string, field: string) => {\n\tif (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 1)\n\t\tthrow metadataError(id, `${field} must be a positive safe integer.`);\n\n\treturn value;\n};\n\nconst nonEmpty = (value: unknown, id: string, field: string) => {\n\tif (\n\t\ttypeof value !== 'string' ||\n\t\tvalue.trim() !== value ||\n\t\tvalue.length === 0\n\t)\n\t\tthrow metadataError(id, `${field} must be a non-empty trimmed string.`);\n\n\treturn value;\n};\n\nconst requireObject = (value: unknown, id: string, detail: string) => {\n\tif (!object(value)) throw metadataError(id, detail);\n\n\treturn value;\n};\n\nconst unknownField = (record: Record<string, unknown>, key: string) =>\n\trecord[key];\n\nconst normalizeJsonValue: (\n\tvalue: unknown,\n\tid: string,\n\tfield: string\n) => SyncLocalJsonValue = (value, id, field) => {\n\tif (\n\t\tvalue === null ||\n\t\ttypeof value === 'string' ||\n\t\ttypeof value === 'boolean'\n\t)\n\t\treturn value;\n\tif (typeof value === 'number' && Number.isFinite(value)) return value;\n\tif (Array.isArray(value))\n\t\treturn value.map((entry) => normalizeJsonValue(entry, id, field));\n\tif (object(value))\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries(value).map(([key, entry]) => [\n\t\t\t\tkey,\n\t\t\t\tnormalizeJsonValue(entry, id, field)\n\t\t\t])\n\t\t);\n\n\tthrow metadataError(id, `${field} must be JSON-safe.`);\n};\n\nconst operation: (\n\tvalue: unknown,\n\tid: string,\n\tindex: number\n) => SyncLocalCollectionMigrationOperation = (value, id, index) => {\n\tconst record = requireObject(\n\t\tvalue,\n\t\tid,\n\t\t`migration operation ${index} must be an object.`\n\t);\n\tconst type = Reflect.get(record, 'type');\n\tconst collection = nonEmpty(\n\t\tReflect.get(record, 'collection'),\n\t\tid,\n\t\t`operation ${index}.collection`\n\t);\n\tif (type === 'delete-collection') return { collection, type };\n\tif (type === 'rename-field')\n\t\treturn {\n\t\t\tcollection,\n\t\t\tfrom: nonEmpty(\n\t\t\t\tReflect.get(record, 'from'),\n\t\t\t\tid,\n\t\t\t\t`operation ${index}.from`\n\t\t\t),\n\t\t\tto: nonEmpty(\n\t\t\t\tReflect.get(record, 'to'),\n\t\t\t\tid,\n\t\t\t\t`operation ${index}.to`\n\t\t\t),\n\t\t\ttype\n\t\t};\n\tconst field = nonEmpty(\n\t\tReflect.get(record, 'field'),\n\t\tid,\n\t\t`operation ${index}.field`\n\t);\n\tif (type === 'remove-field') return { collection, field, type };\n\tif (type === 'set-default')\n\t\treturn {\n\t\t\tcollection,\n\t\t\tfield,\n\t\t\ttype,\n\t\t\tvalue: normalizeJsonValue(\n\t\t\t\tReflect.get(record, 'value'),\n\t\t\t\tid,\n\t\t\t\t`operation ${index}.value`\n\t\t\t)\n\t\t};\n\n\tthrow metadataError(id, `operation ${index}.type is not supported.`);\n};\n\nconst migration: (\n\tvalue: unknown,\n\tid: string,\n\tindex: number\n) => SyncLocalStoreMigration = (value, id, index) => {\n\tconst record = requireObject(\n\t\tvalue,\n\t\tid,\n\t\t`migration ${index} must be an object.`\n\t);\n\tconst allowed = new Set(['operations', 'toVersion']);\n\tconst unsupported = Object.keys(record).find((key) => !allowed.has(key));\n\tif (unsupported)\n\t\tthrow metadataError(\n\t\t\tid,\n\t\t\t`migration ${index}.${unsupported} is not declarative metadata.`\n\t\t);\n\tconst declaredOperations = Reflect.get(record, 'operations');\n\tif (declaredOperations !== undefined && !Array.isArray(declaredOperations))\n\t\tthrow metadataError(\n\t\t\tid,\n\t\t\t`migration ${index}.operations must be an array.`\n\t\t);\n\tconst operations = Array.isArray(declaredOperations)\n\t\t? declaredOperations\n\t\t: [];\n\n\treturn {\n\t\toperations: operations.map((entry, operationIndex) =>\n\t\t\toperation(entry, id, operationIndex)\n\t\t),\n\t\ttoVersion: positiveVersion(\n\t\t\tReflect.get(record, 'toVersion'),\n\t\t\tid,\n\t\t\t`migration ${index}.toVersion`\n\t\t)\n\t};\n};\n\nconst localDataPolicy = (value: unknown, id: string): SyncLocalDataPolicy => {\n\tconst record = requireObject(value, id, 'localData must be an object.');\n\tconst allowed = new Set([\n\t\t'collections',\n\t\t'maxBytesPerNamespace',\n\t\t'mutations'\n\t]);\n\tconst unsupported = Object.keys(record).find((key) => !allowed.has(key));\n\tif (unsupported)\n\t\tthrow metadataError(id, `localData.${unsupported} is not supported.`);\n\tconst collectionRules = Reflect.get(record, 'collections');\n\tconst mutationRules = Reflect.get(record, 'mutations');\n\tif (collectionRules !== undefined && !Array.isArray(collectionRules))\n\t\tthrow metadataError(id, 'localData.collections must be an array.');\n\tif (mutationRules !== undefined && !Array.isArray(mutationRules))\n\t\tthrow metadataError(id, 'localData.mutations must be an array.');\n\tconst collections: SyncLocalCollectionPolicy[] | undefined = Array.isArray(\n\t\tcollectionRules\n\t)\n\t\t? collectionRules.map((entry, index) => {\n\t\t\t\tconst rule = requireObject(\n\t\t\t\t\tentry,\n\t\t\t\t\tid,\n\t\t\t\t\t`localData.collections[${index}] must be an object.`\n\t\t\t\t);\n\t\t\t\tconst allowedRuleKeys = new Set([\n\t\t\t\t\t'evictionPriority',\n\t\t\t\t\t'match',\n\t\t\t\t\t'maxAgeMs',\n\t\t\t\t\t'onProtectionUnavailable',\n\t\t\t\t\t'persistence',\n\t\t\t\t\t'protection',\n\t\t\t\t\t'sensitivity'\n\t\t\t\t]);\n\t\t\t\tconst unsupportedRuleKey = Object.keys(rule).find(\n\t\t\t\t\t(key) => !allowedRuleKeys.has(key)\n\t\t\t\t);\n\t\t\t\tif (unsupportedRuleKey)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].${unsupportedRuleKey} is not supported.`\n\t\t\t\t\t);\n\t\t\t\tconst match = nonEmpty(\n\t\t\t\t\tReflect.get(rule, 'match'),\n\t\t\t\t\tid,\n\t\t\t\t\t`localData.collections[${index}].match`\n\t\t\t\t);\n\t\t\t\tconst persistence = unknownField(rule, 'persistence');\n\t\t\t\tconst sensitivity = unknownField(rule, 'sensitivity');\n\t\t\t\tconst protection = unknownField(rule, 'protection');\n\t\t\t\tconst onProtectionUnavailable = unknownField(\n\t\t\t\t\trule,\n\t\t\t\t\t'onProtectionUnavailable'\n\t\t\t\t);\n\t\t\t\tconst evictionPriority = unknownField(rule, 'evictionPriority');\n\t\t\t\tconst maxAge = unknownField(rule, 'maxAgeMs');\n\t\t\t\tif (\n\t\t\t\t\tpersistence !== undefined &&\n\t\t\t\t\tpersistence !== 'durable' &&\n\t\t\t\t\tpersistence !== 'memory-only'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].persistence is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tsensitivity !== undefined &&\n\t\t\t\t\tsensitivity !== 'public' &&\n\t\t\t\t\tsensitivity !== 'private' &&\n\t\t\t\t\tsensitivity !== 'secret'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].sensitivity is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tprotection !== undefined &&\n\t\t\t\t\tprotection !== 'none' &&\n\t\t\t\t\tprotection !== 'required'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].protection is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tonProtectionUnavailable !== undefined &&\n\t\t\t\t\tonProtectionUnavailable !== 'error' &&\n\t\t\t\t\tonProtectionUnavailable !== 'memory-only'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].onProtectionUnavailable is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tevictionPriority !== undefined &&\n\t\t\t\t\tevictionPriority !== 'critical' &&\n\t\t\t\t\tevictionPriority !== 'normal' &&\n\t\t\t\t\tevictionPriority !== 'disposable'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.collections[${index}].evictionPriority is invalid.`\n\t\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\tmatch,\n\t\t\t\t\t...(sensitivity ? { sensitivity } : {}),\n\t\t\t\t\t...(persistence ? { persistence } : {}),\n\t\t\t\t\t...(protection ? { protection } : {}),\n\t\t\t\t\t...(onProtectionUnavailable\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tonProtectionUnavailable: onProtectionUnavailable\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t\t...(evictionPriority ? { evictionPriority } : {}),\n\t\t\t\t\t...(maxAge === undefined\n\t\t\t\t\t\t? {}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tmaxAgeMs: positiveVersion(\n\t\t\t\t\t\t\t\t\tmaxAge,\n\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t`localData.collections[${index}].maxAgeMs`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t})\n\t\t: undefined;\n\tconst mutations: SyncLocalMutationPolicy[] | undefined = Array.isArray(\n\t\tmutationRules\n\t)\n\t\t? mutationRules.map((entry, index) => {\n\t\t\t\tconst rule = requireObject(\n\t\t\t\t\tentry,\n\t\t\t\t\tid,\n\t\t\t\t\t`localData.mutations[${index}] must be an object.`\n\t\t\t\t);\n\t\t\t\tconst allowedRuleKeys = new Set([\n\t\t\t\t\t'conflict',\n\t\t\t\t\t'match',\n\t\t\t\t\t'onProtectionUnavailable',\n\t\t\t\t\t'persistence',\n\t\t\t\t\t'protection',\n\t\t\t\t\t'sensitivity'\n\t\t\t\t]);\n\t\t\t\tconst unsupportedRuleKey = Object.keys(rule).find(\n\t\t\t\t\t(key) => !allowedRuleKeys.has(key)\n\t\t\t\t);\n\t\t\t\tif (unsupportedRuleKey)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].${unsupportedRuleKey} is not supported.`\n\t\t\t\t\t);\n\t\t\t\tconst protection = unknownField(rule, 'protection');\n\t\t\t\tconst sensitivity = unknownField(rule, 'sensitivity');\n\t\t\t\tconst persistence = unknownField(rule, 'persistence');\n\t\t\t\tconst onProtectionUnavailable = unknownField(\n\t\t\t\t\trule,\n\t\t\t\t\t'onProtectionUnavailable'\n\t\t\t\t);\n\t\t\t\tconst declaredConflict = unknownField(rule, 'conflict');\n\t\t\t\tlet conflict: SyncLocalConflictPolicy | undefined;\n\t\t\t\tif (declaredConflict !== undefined) {\n\t\t\t\t\tconst conflictRecord = requireObject(\n\t\t\t\t\t\tdeclaredConflict,\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].conflict must be an object.`\n\t\t\t\t\t);\n\t\t\t\t\tconst unsupportedConflictKey = Object.keys(\n\t\t\t\t\t\tconflictRecord\n\t\t\t\t\t).find(\n\t\t\t\t\t\t(key) => key !== 'maxAttempts' && key !== 'strategy'\n\t\t\t\t\t);\n\t\t\t\t\tif (unsupportedConflictKey)\n\t\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t`localData.mutations[${index}].conflict.${unsupportedConflictKey} is not supported.`\n\t\t\t\t\t\t);\n\t\t\t\t\tconst strategy = unknownField(conflictRecord, 'strategy');\n\t\t\t\t\tif (\n\t\t\t\t\t\tstrategy !== 'client-wins' &&\n\t\t\t\t\t\tstrategy !== 'manual' &&\n\t\t\t\t\t\tstrategy !== 'server-wins'\n\t\t\t\t\t)\n\t\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t`localData.mutations[${index}].conflict.strategy is invalid.`\n\t\t\t\t\t\t);\n\t\t\t\t\tconst maxAttempts = unknownField(\n\t\t\t\t\t\tconflictRecord,\n\t\t\t\t\t\t'maxAttempts'\n\t\t\t\t\t);\n\t\t\t\t\tif (maxAttempts !== undefined && strategy !== 'client-wins')\n\t\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t`localData.mutations[${index}].conflict.maxAttempts requires client-wins.`\n\t\t\t\t\t\t);\n\t\t\t\t\tconflict = {\n\t\t\t\t\t\tstrategy,\n\t\t\t\t\t\t...(maxAttempts === undefined\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\tmaxAttempts: positiveVersion(\n\t\t\t\t\t\t\t\t\t\tmaxAttempts,\n\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t`localData.mutations[${index}].conflict.maxAttempts`\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};\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tprotection !== undefined &&\n\t\t\t\t\tprotection !== 'none' &&\n\t\t\t\t\tprotection !== 'required'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].protection is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tsensitivity !== undefined &&\n\t\t\t\t\tsensitivity !== 'public' &&\n\t\t\t\t\tsensitivity !== 'private' &&\n\t\t\t\t\tsensitivity !== 'secret'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].sensitivity is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tonProtectionUnavailable !== undefined &&\n\t\t\t\t\tonProtectionUnavailable !== 'error' &&\n\t\t\t\t\tonProtectionUnavailable !== 'memory-only'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].onProtectionUnavailable is invalid.`\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tpersistence !== undefined &&\n\t\t\t\t\tpersistence !== 'durable' &&\n\t\t\t\t\tpersistence !== 'memory-only'\n\t\t\t\t)\n\t\t\t\t\tthrow metadataError(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].persistence is invalid.`\n\t\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\tmatch: nonEmpty(\n\t\t\t\t\t\tReflect.get(rule, 'match'),\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t`localData.mutations[${index}].match`\n\t\t\t\t\t),\n\t\t\t\t\t...(conflict ? { conflict } : {}),\n\t\t\t\t\t...(sensitivity ? { sensitivity } : {}),\n\t\t\t\t\t...(onProtectionUnavailable\n\t\t\t\t\t\t? { onProtectionUnavailable }\n\t\t\t\t\t\t: {}),\n\t\t\t\t\t...(persistence\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tpersistence: persistence\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t\t...(protection ? { protection: protection } : {})\n\t\t\t\t};\n\t\t\t})\n\t\t: undefined;\n\tconst quota = Reflect.get(record, 'maxBytesPerNamespace');\n\n\treturn {\n\t\t...(collections ? { collections } : {}),\n\t\t...(mutations ? { mutations } : {}),\n\t\t...(quota === undefined\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\tmaxBytesPerNamespace: positiveVersion(\n\t\t\t\t\t\tquota,\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t'localData.maxBytesPerNamespace'\n\t\t\t\t\t)\n\t\t\t\t})\n\t};\n};\n\nconst component: (\n\tid: string,\n\tvalue: unknown\n) => SyncLocalStoreSchemaComponent = (id, value) => {\n\tconst record = requireObject(value, id, 'localSchema must be an object.');\n\tconst allowed = new Set([\n\t\t'localData',\n\t\t'migrations',\n\t\t'minimumCompatibleVersion',\n\t\t'version'\n\t]);\n\tconst unsupported = Object.keys(record).find((key) => !allowed.has(key));\n\tif (unsupported)\n\t\tthrow metadataError(id, `${unsupported} is not supported.`);\n\tconst version = positiveVersion(\n\t\tReflect.get(record, 'version'),\n\t\tid,\n\t\t'version'\n\t);\n\tconst declaredMinimum = Reflect.get(record, 'minimumCompatibleVersion');\n\tconst minimumCompatibleVersion =\n\t\tdeclaredMinimum === undefined\n\t\t\t? Math.max(1, version - 2)\n\t\t\t: positiveVersion(declaredMinimum, id, 'minimumCompatibleVersion');\n\tconst declaredMigrations = Reflect.get(record, 'migrations');\n\tconst declaredLocalData = Reflect.get(record, 'localData');\n\tif (declaredMigrations !== undefined && !Array.isArray(declaredMigrations))\n\t\tthrow metadataError(id, 'migrations must be an array.');\n\tconst migrations = Array.isArray(declaredMigrations)\n\t\t? declaredMigrations\n\t\t: undefined;\n\n\treturn {\n\t\tid,\n\t\t...(declaredLocalData === undefined\n\t\t\t? {}\n\t\t\t: { localData: localDataPolicy(declaredLocalData, id) }),\n\t\tminimumCompatibleVersion,\n\t\t...(Array.isArray(migrations)\n\t\t\t? {\n\t\t\t\t\tmigrations: migrations.map((entry, index) =>\n\t\t\t\t\t\tmigration(entry, id, index)\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t: {}),\n\t\tversion\n\t};\n};\n\nconst dependencyNames = (manifest: object) =>\n\t[\n\t\tReflect.get(manifest, 'dependencies'),\n\t\tReflect.get(manifest, 'optionalDependencies'),\n\t\tReflect.get(manifest, 'devDependencies'),\n\t\tReflect.get(manifest, 'peerDependencies')\n\t]\n\t\t.flatMap((dependencies) =>\n\t\t\tobject(dependencies) ? Object.keys(dependencies) : []\n\t\t)\n\t\t.filter((name, index, names) => names.indexOf(name) === index)\n\t\t.sort();\n\nexport const discoverAbsoluteSyncSchema = (\n\tprojectRoot: string\n): AbsoluteSyncSchemaDiscovery => {\n\tconst appManifestPath = join(resolve(projectRoot), 'package.json');\n\tconst appManifest = manifestAt(appManifestPath);\n\tif (!appManifest)\n\t\treturn {\n\t\t\tcomponents: [\n\t\t\t\t{\n\t\t\t\t\tid: '@absolutejs/app',\n\t\t\t\t\tminimumCompatibleVersion: 1,\n\t\t\t\t\tversion: 1\n\t\t\t\t}\n\t\t\t],\n\t\t\tsources: []\n\t\t};\n\tconst appMetadata = localSchemaMetadata(appManifest);\n\tconst components: SyncLocalStoreSchemaComponent[] = [\n\t\tappMetadata === undefined\n\t\t\t? { id: '@absolutejs/app', minimumCompatibleVersion: 1, version: 1 }\n\t\t\t: component('@absolutejs/app', appMetadata)\n\t];\n\tconst sources: AbsoluteSyncSchemaDiscovery['sources'] = [\n\t\t{ id: '@absolutejs/app', manifestPath: appManifestPath }\n\t];\n\tfor (const name of dependencyNames(appManifest)) {\n\t\tconst manifestPath = packageManifestPath(projectRoot, name);\n\t\tif (!manifestPath) continue;\n\t\tconst manifest = manifestAt(manifestPath);\n\t\tif (!manifest) continue;\n\t\tconst metadata = localSchemaMetadata(manifest);\n\t\tif (metadata === undefined) continue;\n\t\tcomponents.push(component(name, metadata));\n\t\tsources.push({ id: name, manifestPath });\n\t}\n\tcomponents.sort((left, right) => left.id.localeCompare(right.id));\n\tsources.sort((left, right) => left.id.localeCompare(right.id));\n\tresolveSyncLocalSchemaComponents({}, { components });\n\n\treturn { components, sources };\n};\n",
11
13
  "import { readFileSync } from 'node:fs';\nimport { extname, join, relative, resolve } from 'node:path';\nimport ts from 'typescript';\n\nexport type AbsoluteDeviceCapabilityProvider = {\n\tfactory: string;\n\tmodule: string;\n\tnative?: {\n\t\tandroid?: { permissions: string[] };\n\t\tios?: {\n\t\t\tprivacyAccessedApis?: Partial<\n\t\t\t\tRecord<AbsoluteIosPrivacyAccessedApi, string[]>\n\t\t\t>;\n\t\t\tpushNotifications?: true;\n\t\t\tsystemBars?: true;\n\t\t\tusageDescriptions?: AbsoluteIosUsageDescription[];\n\t\t};\n\t};\n\tpackages: string[];\n};\n\nexport type AbsoluteIosUsageDescription =\n\t| 'camera'\n\t| 'location-always'\n\t| 'location-when-in-use'\n\t| 'photo-library'\n\t| 'photo-library-add';\n\nexport type AbsoluteIosPrivacyAccessedApi =\n\t'NSPrivacyAccessedAPICategoryFileTimestamp';\n\nexport type AbsoluteDeviceCapabilityPlan = {\n\tcapabilities: string[];\n\tproviders: Record<string, AbsoluteDeviceCapabilityProvider>;\n\trequiredPackages: string[];\n};\n\nconst DEVICES_PACKAGE = '@absolutejs/devices';\nconst CAPACITOR_ADAPTER = '@absolutejs/devices-capacitor';\nconst SOURCE_GLOB = new Bun.Glob('**/*.{js,jsx,ts,tsx,svelte,vue}');\nconst IGNORED_DIRECTORIES = new Set([\n\t'.absolutejs',\n\t'.git',\n\t'.test-builds',\n\t'.test-shards',\n\t'build',\n\t'dist',\n\t'node_modules',\n\t'test',\n\t'tests'\n]);\nconst IDENTIFIER_PATTERN = /^[A-Za-z_$][\\w$]*$/u;\nconst CAPACITOR_MODULE_PATTERN =\n\t/^@absolutejs\\/devices-capacitor\\/[a-z][a-z0-9-]*$/u;\nconst CAPACITOR_PACKAGE_PATTERN =\n\t/^@capacitor\\/[a-z][a-z0-9-]*@\\d+\\.\\d+\\.\\d+$/u;\nconst ANDROID_PERMISSION_PATTERN = /^android\\.permission\\.[A-Z][A-Z0-9_]*$/u;\nconst IOS_USAGE_DESCRIPTIONS: ReadonlySet<string> = new Set([\n\t'camera',\n\t'location-always',\n\t'location-when-in-use',\n\t'photo-library',\n\t'photo-library-add'\n]);\nconst IOS_PRIVACY_ACCESSED_API_REASONS: Readonly<\n\tRecord<AbsoluteIosPrivacyAccessedApi, ReadonlySet<string>>\n> = {\n\tNSPrivacyAccessedAPICategoryFileTimestamp: new Set(['C617.1'])\n};\nconst IOS_PRIVACY_ACCESSED_APIS: readonly AbsoluteIosPrivacyAccessedApi[] = [\n\t'NSPrivacyAccessedAPICategoryFileTimestamp'\n];\n\nconst object = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst readJson = (path: string) => {\n\tconst value: unknown = JSON.parse(readFileSync(path, 'utf8'));\n\tif (!object(value)) throw new TypeError(`${path} must contain an object.`);\n\n\treturn value;\n};\n\nconst text = (value: unknown, field: string) => {\n\tif (typeof value !== 'string' || value.length === 0)\n\t\tthrow new TypeError(`${field} must be a non-empty string.`);\n\n\treturn value;\n};\n\nconst androidPermissions = (value: unknown, field: string) => {\n\tif (value === undefined) return undefined;\n\tif (!object(value)) throw new TypeError(`${field} must be an object.`);\n\tconst { permissions } = value;\n\tif (\n\t\t!Array.isArray(permissions) ||\n\t\t!permissions.every(\n\t\t\t(permission): permission is string =>\n\t\t\t\ttypeof permission === 'string' &&\n\t\t\t\tANDROID_PERMISSION_PATTERN.test(permission)\n\t\t)\n\t)\n\t\tthrow new TypeError(\n\t\t\t`${field}.permissions must contain Android permission names.`\n\t\t);\n\n\treturn [...permissions];\n};\n\nconst iosPrivacyAccessedApis = (value: unknown, field: string) => {\n\tif (value === undefined) return undefined;\n\tif (!object(value)) throw new TypeError(`${field} must be an object.`);\n\tconst privacy: Partial<Record<AbsoluteIosPrivacyAccessedApi, string[]>> =\n\t\t{};\n\tfor (const api of IOS_PRIVACY_ACCESSED_APIS) {\n\t\tconst reasons = value[api];\n\t\tif (reasons === undefined) continue;\n\t\tconst supported = IOS_PRIVACY_ACCESSED_API_REASONS[api];\n\t\tif (\n\t\t\t!Array.isArray(reasons) ||\n\t\t\treasons.length === 0 ||\n\t\t\t!reasons.every(\n\t\t\t\t(reason): reason is string =>\n\t\t\t\t\ttypeof reason === 'string' && supported.has(reason)\n\t\t\t)\n\t\t)\n\t\t\tthrow new TypeError(\n\t\t\t\t`${field} contains an unsupported API or reason.`\n\t\t\t);\n\t\tprivacy[api] = [...reasons];\n\t}\n\tif (\n\t\tObject.keys(value).some(\n\t\t\t(api) => !IOS_PRIVACY_ACCESSED_APIS.some((known) => known === api)\n\t\t)\n\t)\n\t\tthrow new TypeError(`${field} contains an unsupported API or reason.`);\n\n\treturn privacy;\n};\n\nconst iosNativeRequirements = (value: unknown, field: string) => {\n\tif (value === undefined) return undefined;\n\tif (!object(value)) throw new TypeError(`${field} must be an object.`);\n\tconst {\n\t\tprivacyAccessedApis,\n\t\tpushNotifications,\n\t\tsystemBars,\n\t\tusageDescriptions\n\t} = value;\n\tif (pushNotifications !== undefined && pushNotifications !== true)\n\t\tthrow new TypeError(`${field}.pushNotifications must be true.`);\n\tif (systemBars !== undefined && systemBars !== true)\n\t\tthrow new TypeError(`${field}.systemBars must be true.`);\n\tif (\n\t\tusageDescriptions !== undefined &&\n\t\t(!Array.isArray(usageDescriptions) ||\n\t\t\t!usageDescriptions.every(\n\t\t\t\t(purpose): purpose is AbsoluteIosUsageDescription =>\n\t\t\t\t\ttypeof purpose === 'string' &&\n\t\t\t\t\tIOS_USAGE_DESCRIPTIONS.has(purpose)\n\t\t\t))\n\t)\n\t\tthrow new TypeError(\n\t\t\t`${field}.usageDescriptions contains an unsupported purpose.`\n\t\t);\n\tconst privacy = iosPrivacyAccessedApis(\n\t\tprivacyAccessedApis,\n\t\t`${field}.privacyAccessedApis`\n\t);\n\n\treturn {\n\t\t...(privacy === undefined ? {} : { privacyAccessedApis: privacy }),\n\t\t...(pushNotifications === true\n\t\t\t? { pushNotifications: true as const }\n\t\t\t: {}),\n\t\t...(systemBars === true ? { systemBars: true as const } : {}),\n\t\t...(usageDescriptions === undefined\n\t\t\t? {}\n\t\t\t: { usageDescriptions: [...usageDescriptions] })\n\t};\n};\n\nconst parseProvider = (\n\tname: string,\n\tvalue: unknown\n): AbsoluteDeviceCapabilityProvider => {\n\tif (!IDENTIFIER_PATTERN.test(name))\n\t\tthrow new TypeError('Device capability names must be identifiers.');\n\tif (!object(value))\n\t\tthrow new TypeError(`Device capability ${name} must be an object.`);\n\tconst factory = text(value.factory, `${name}.factory`);\n\tconst module = text(value.module, `${name}.module`);\n\tif (!IDENTIFIER_PATTERN.test(factory))\n\t\tthrow new TypeError(`${name}.factory must be a JavaScript identifier.`);\n\tif (!CAPACITOR_MODULE_PATTERN.test(module))\n\t\tthrow new TypeError(\n\t\t\t`${name}.module must be an official devices-capacitor subpath.`\n\t\t);\n\tif (\n\t\t!Array.isArray(value.packages) ||\n\t\t!value.packages.every(\n\t\t\t(spec): spec is string =>\n\t\t\t\ttypeof spec === 'string' && CAPACITOR_PACKAGE_PATTERN.test(spec)\n\t\t)\n\t)\n\t\tthrow new TypeError(\n\t\t\t`${name}.packages must contain exact official Capacitor package versions.`\n\t\t);\n\tlet native: AbsoluteDeviceCapabilityProvider['native'];\n\tconst { native: nativeMetadata } = value;\n\tif (nativeMetadata !== undefined) {\n\t\tif (!object(nativeMetadata))\n\t\t\tthrow new TypeError(`${name}.native must be an object.`);\n\t\tconst { android, ios } = nativeMetadata;\n\t\tconst permissions = androidPermissions(\n\t\t\tandroid,\n\t\t\t`${name}.native.android`\n\t\t);\n\t\tconst iosRequirements = iosNativeRequirements(\n\t\t\tios,\n\t\t\t`${name}.native.ios`\n\t\t);\n\t\tnative = {\n\t\t\t...(permissions === undefined ? {} : { android: { permissions } }),\n\t\t\t...(iosRequirements === undefined ? {} : { ios: iosRequirements })\n\t\t};\n\t}\n\n\treturn {\n\t\tfactory,\n\t\tmodule,\n\t\t...(native === undefined ? {} : { native }),\n\t\tpackages: [...value.packages]\n\t};\n};\n\nexport const absoluteDeviceNativeRequirements = (\n\tplan: AbsoluteDeviceCapabilityPlan\n) => {\n\tconst privacy = plan.capabilities.reduce<\n\t\tPartial<Record<AbsoluteIosPrivacyAccessedApi, Set<string>>>\n\t>((requirements, name) => {\n\t\tfor (const api of IOS_PRIVACY_ACCESSED_APIS) {\n\t\t\tconst reasons =\n\t\t\t\tplan.providers[name]?.native?.ios?.privacyAccessedApis?.[api] ??\n\t\t\t\t[];\n\t\t\tif (reasons.length === 0) continue;\n\t\t\tconst current = requirements[api] ?? new Set<string>();\n\t\t\tfor (const reason of reasons) current.add(reason);\n\t\t\trequirements[api] = current;\n\t\t}\n\n\t\treturn requirements;\n\t}, {});\n\n\treturn {\n\t\tandroidPermissions: [\n\t\t\t...new Set(\n\t\t\t\tplan.capabilities.flatMap(\n\t\t\t\t\t(name) =>\n\t\t\t\t\t\tplan.providers[name]?.native?.android?.permissions ?? []\n\t\t\t\t)\n\t\t\t)\n\t\t].sort(),\n\t\tiosPrivacyAccessedApis: IOS_PRIVACY_ACCESSED_APIS.flatMap((api) => {\n\t\t\tconst reasons = privacy[api];\n\n\t\t\treturn reasons ? [{ api, reasons: [...reasons].sort() }] : [];\n\t\t}),\n\t\tiosPushNotifications: plan.capabilities.some(\n\t\t\t(name) =>\n\t\t\t\tplan.providers[name]?.native?.ios?.pushNotifications === true\n\t\t),\n\t\tiosSystemBars: plan.capabilities.some(\n\t\t\t(name) => plan.providers[name]?.native?.ios?.systemBars === true\n\t\t),\n\t\tiosUsageDescriptions: [\n\t\t\t...new Set(\n\t\t\t\tplan.capabilities.flatMap(\n\t\t\t\t\t(name) =>\n\t\t\t\t\t\tplan.providers[name]?.native?.ios?.usageDescriptions ??\n\t\t\t\t\t\t[]\n\t\t\t\t)\n\t\t\t)\n\t\t].sort()\n\t};\n};\n\nexport const loadAbsoluteDeviceCapabilityProviders = (projectRoot: string) => {\n\tconst path = join(\n\t\tresolve(projectRoot),\n\t\t'node_modules',\n\t\tCAPACITOR_ADAPTER,\n\t\t'package.json'\n\t);\n\tconst manifest = readJson(path);\n\tconst { absolutejs } = manifest;\n\tconst devices = object(absolutejs) ? absolutejs.devices : undefined;\n\tif (\n\t\t!object(devices) ||\n\t\tdevices.format !== 1 ||\n\t\tdevices.provider !== 'capacitor' ||\n\t\t!object(devices.capabilities)\n\t)\n\t\tthrow new TypeError(\n\t\t\t`${CAPACITOR_ADAPTER} does not publish supported capability metadata.`\n\t\t);\n\n\tconst entries = Object.entries(devices.capabilities).map(\n\t\t([name, provider]) => ({\n\t\t\tname,\n\t\t\tprovider: parseProvider(name, provider)\n\t\t})\n\t);\n\n\treturn Object.fromEntries(\n\t\tentries\n\t\t\t.sort((left, right) => left.name.localeCompare(right.name))\n\t\t\t.map(({ name, provider }) => [name, provider])\n\t);\n};\n\nconst isIgnored = (path: string) =>\n\tpath.split('/').some((segment) => IGNORED_DIRECTORIES.has(segment));\n\nconst importedCapabilities = (source: string, file: string) => {\n\tconst names = new Set<string>();\n\tconst namespaces = new Set<string>();\n\tconst visit = (node: ts.Node) => {\n\t\tif (\n\t\t\tts.isImportDeclaration(node) &&\n\t\t\tts.isStringLiteral(node.moduleSpecifier) &&\n\t\t\tnode.moduleSpecifier.text === DEVICES_PACKAGE &&\n\t\t\t!node.importClause?.isTypeOnly\n\t\t) {\n\t\t\tconst bindings = node.importClause?.namedBindings;\n\t\t\tif (bindings && ts.isNamedImports(bindings))\n\t\t\t\tfor (const element of bindings.elements)\n\t\t\t\t\tif (!element.isTypeOnly)\n\t\t\t\t\t\tnames.add((element.propertyName ?? element.name).text);\n\t\t\tif (bindings && ts.isNamespaceImport(bindings))\n\t\t\t\tnamespaces.add(bindings.name.text);\n\t\t}\n\t\tif (\n\t\t\tts.isExportDeclaration(node) &&\n\t\t\t!node.isTypeOnly &&\n\t\t\tnode.moduleSpecifier !== undefined &&\n\t\t\tts.isStringLiteral(node.moduleSpecifier) &&\n\t\t\tnode.moduleSpecifier.text === DEVICES_PACKAGE &&\n\t\t\tnode.exportClause &&\n\t\t\tts.isNamedExports(node.exportClause)\n\t\t)\n\t\t\tfor (const element of node.exportClause.elements)\n\t\t\t\tif (!element.isTypeOnly)\n\t\t\t\t\tnames.add((element.propertyName ?? element.name).text);\n\t\tif (\n\t\t\tts.isPropertyAccessExpression(node) &&\n\t\t\tts.isIdentifier(node.expression) &&\n\t\t\tnamespaces.has(node.expression.text)\n\t\t)\n\t\t\tnames.add(node.name.text);\n\t\tts.forEachChild(node, visit);\n\t};\n\tconst extension = extname(file).toLowerCase();\n\tconst sources =\n\t\textension === '.svelte' || extension === '.vue'\n\t\t\t? [...source.matchAll(/<script\\b[^>]*>([\\s\\S]*?)<\\/script\\s*>/giu)]\n\t\t\t\t\t.map((match) => match[1])\n\t\t\t\t\t.filter((value): value is string => value !== undefined)\n\t\t\t: [source];\n\tfor (const [index, script] of sources.entries())\n\t\tvisit(\n\t\t\tts.createSourceFile(\n\t\t\t\t`${file}#script-${index}`,\n\t\t\t\tscript,\n\t\t\t\tts.ScriptTarget.Latest,\n\t\t\t\ttrue,\n\t\t\t\tts.ScriptKind.TSX\n\t\t\t)\n\t\t);\n\n\treturn names;\n};\n\nexport const assertAbsoluteDeviceCapabilityPackages = (\n\tprojectRoot: string,\n\tplan: AbsoluteDeviceCapabilityPlan\n) => {\n\tconst missing = missingAbsoluteDeviceCapabilityPackages(\n\t\tplan,\n\t\tdirectAbsoluteProjectPackages(projectRoot)\n\t);\n\tconst mismatched = plan.requiredPackages.filter((spec) => {\n\t\tconst separator = spec.lastIndexOf('@');\n\t\tconst packageName = spec.slice(0, separator);\n\t\tif (missing.includes(spec)) return false;\n\t\ttry {\n\t\t\treturn (\n\t\t\t\treadJson(\n\t\t\t\t\tjoin(\n\t\t\t\t\t\tresolve(projectRoot),\n\t\t\t\t\t\t'node_modules',\n\t\t\t\t\t\tpackageName,\n\t\t\t\t\t\t'package.json'\n\t\t\t\t\t)\n\t\t\t\t).version !== spec.slice(separator + 1)\n\t\t\t);\n\t\t} catch {\n\t\t\treturn true;\n\t\t}\n\t});\n\tconst unmet = [...missing, ...mismatched];\n\tif (unmet.length > 0)\n\t\tthrow new TypeError(\n\t\t\t`Device capabilities ${plan.capabilities.join(', ')} require ${unmet.join(', ')}. Run absolute mobile sync and approve the detected capability plugins.`\n\t\t);\n};\n\nexport const directAbsoluteProjectPackages = (projectRoot: string) => {\n\tconst manifest = readJson(join(resolve(projectRoot), 'package.json'));\n\tconst packages = new Set<string>();\n\tfor (const field of ['dependencies', 'devDependencies']) {\n\t\tconst dependencies = manifest[field];\n\t\tif (object(dependencies))\n\t\t\tfor (const name of Object.keys(dependencies)) packages.add(name);\n\t}\n\n\treturn packages;\n};\n\nexport const discoverAbsoluteDeviceCapabilities = (\n\tprojectRoot: string,\n\tproviders = loadAbsoluteDeviceCapabilityProviders(projectRoot)\n) => {\n\tconst root = resolve(projectRoot);\n\tconst known = new Set(Object.keys(providers));\n\tconst capabilities = new Set<string>();\n\tfor (const path of SOURCE_GLOB.scanSync({ cwd: root })) {\n\t\tconst portable = relative(root, resolve(root, path)).replaceAll(\n\t\t\t'\\\\',\n\t\t\t'/'\n\t\t);\n\t\tif (isIgnored(portable)) continue;\n\t\tconst source = readFileSync(resolve(root, portable), 'utf8');\n\t\tfor (const name of importedCapabilities(source, portable))\n\t\t\tif (known.has(name)) capabilities.add(name);\n\t}\n\n\treturn [...capabilities].sort();\n};\n\nexport const missingAbsoluteDeviceCapabilityPackages = (\n\tplan: AbsoluteDeviceCapabilityPlan,\n\tdirectPackages: ReadonlySet<string>\n) =>\n\tplan.requiredPackages.filter((spec) => {\n\t\tconst packageName = spec.slice(0, spec.lastIndexOf('@'));\n\n\t\treturn !directPackages.has(packageName);\n\t});\n\n/** Framework-agnostic capability discovery used by web/PWA builds. This does\n * not load a native provider manifest, so Web Push never requires Capacitor. */\nexport const projectImportsAbsoluteDeviceCapability = (\n\tprojectRoot: string,\n\tcapability: string\n) => {\n\tconst root = resolve(projectRoot);\n\tfor (const path of SOURCE_GLOB.scanSync({ cwd: root })) {\n\t\tconst portable = relative(root, resolve(root, path)).replaceAll(\n\t\t\t'\\\\',\n\t\t\t'/'\n\t\t);\n\t\tif (isIgnored(portable)) continue;\n\t\tconst source = readFileSync(resolve(root, portable), 'utf8');\n\t\tif (importedCapabilities(source, portable).has(capability)) return true;\n\t}\n\n\treturn false;\n};\n\nexport const resolveAbsoluteDeviceCapabilityPlan = (\n\tprojectRoot: string\n): AbsoluteDeviceCapabilityPlan => {\n\tconst allProviders = loadAbsoluteDeviceCapabilityProviders(projectRoot);\n\tconst capabilities = discoverAbsoluteDeviceCapabilities(\n\t\tprojectRoot,\n\t\tallProviders\n\t);\n\tconst providers: Record<string, AbsoluteDeviceCapabilityProvider> = {};\n\tfor (const name of capabilities) {\n\t\tconst provider = allProviders[name];\n\t\tif (provider) providers[name] = provider;\n\t}\n\n\treturn {\n\t\tcapabilities,\n\t\tproviders,\n\t\trequiredPackages: [\n\t\t\t...new Set(\n\t\t\t\tcapabilities.flatMap((name) => providers[name]?.packages ?? [])\n\t\t\t)\n\t\t].sort()\n\t};\n};\n",
12
14
  "import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport type { TelemetryConfig } from '../../../types/telemetry';\n\nconst configDir = join(homedir(), '.absolutejs');\nconst configPath = join(configDir, 'telemetry.json');\n\nexport const getTelemetryConfig = () => {\n\ttry {\n\t\tif (!existsSync(configPath)) return null;\n\t\tconst raw = readFileSync(configPath, 'utf-8');\n\n\t\tconst config: TelemetryConfig = JSON.parse(raw);\n\n\t\treturn config;\n\t} catch {\n\t\treturn null;\n\t}\n};\n\nexport const isTelemetryEnabled = () => {\n\tconst config = getTelemetryConfig();\n\n\treturn config?.enabled === true;\n};\n\nexport const saveTelemetryConfig = (config: TelemetryConfig) => {\n\tmkdirSync(configDir, { recursive: true });\n\twriteFileSync(configPath, `${JSON.stringify(config, null, '\\t')}\\n`);\n};\n\nconst enable = () => {\n\tconst existing = getTelemetryConfig();\n\tconst config: TelemetryConfig = {\n\t\tanonymousId: existing?.anonymousId ?? crypto.randomUUID(),\n\t\tcreatedAt: existing?.createdAt ?? new Date().toISOString(),\n\t\tenabled: true\n\t};\n\tsaveTelemetryConfig(config);\n\tconsole.log('Telemetry enabled.');\n\tconsole.log(`Anonymous ID: ${config.anonymousId}`);\n};\n\nconst disable = () => {\n\tconst existing = getTelemetryConfig();\n\tif (existing) {\n\t\tsaveTelemetryConfig({ ...existing, enabled: false });\n\t}\n\tconsole.log('Telemetry disabled.');\n};\n\nconst status = () => {\n\tconst config = getTelemetryConfig();\n\tif (!config || !config.enabled) {\n\t\tconsole.log('Telemetry is disabled.');\n\t} else {\n\t\tconsole.log('Telemetry is enabled.');\n\t\tconsole.log(`Anonymous ID: ${config.anonymousId}`);\n\t}\n};\n\nexport const telemetry = (args: string[]) => {\n\tconst [subcommand] = args;\n\n\tif (subcommand === 'enable') {\n\t\tenable();\n\n\t\treturn;\n\t}\n\tif (subcommand === 'disable') {\n\t\tdisable();\n\n\t\treturn;\n\t}\n\tif (subcommand === 'status') {\n\t\tstatus();\n\n\t\treturn;\n\t}\n\tif (!subcommand) {\n\t\tstatus();\n\t\tconsole.log('');\n\t\tconsole.log('Usage: absolute telemetry <command>');\n\t\tconsole.log('Commands:');\n\t\tconsole.log(' enable Enable anonymous telemetry');\n\t\tconsole.log(' disable Disable telemetry');\n\t\tconsole.log(' status Show current telemetry status');\n\n\t\treturn;\n\t}\n\tconsole.error(`Unknown telemetry command: ${subcommand}`);\n\tconsole.error('Usage: absolute telemetry <enable|disable|status>');\n\tprocess.exit(1);\n};\n",
@@ -28,23 +30,21 @@
28
30
  "export const ABSOLUTE_REMOTE_MAC_EVENT_PREFIX = 'ABSOLUTE_REMOTE_MAC\\t';\nexport const ABSOLUTE_REMOTE_MAC_PROTOCOL_VERSION = 2;\n",
29
31
  "export type AbsoluteIosDeviceAcceptanceResult = {\n\thmrConnected: true;\n\tinstalled: true;\n\trelaunchMs: number;\n};\n\ntype CommandResult = { exitCode: number; stderr: string; stdout: string };\n\nexport const absoluteIosDeviceAcceptanceCommands = (options: {\n\tappId: string;\n\tdevice: string;\n\txcrun?: string;\n}) => {\n\tconst xcrun = options.xcrun ?? '/usr/bin/xcrun';\n\tconst prefix = [xcrun, 'devicectl', 'device'];\n\n\treturn {\n\t\tapps: [...prefix, 'info', 'apps', '--device', options.device],\n\t\tdetails: [...prefix, 'info', 'details', '--device', options.device],\n\t\tlaunch: [\n\t\t\t...prefix,\n\t\t\t'process',\n\t\t\t'launch',\n\t\t\t'--terminate-existing',\n\t\t\t'--device',\n\t\t\toptions.device,\n\t\t\toptions.appId\n\t\t]\n\t};\n};\n\nconst requireSuccess = (result: CommandResult, message: string) => {\n\tif (result.exitCode !== 0) throw new Error(message);\n\n\treturn result;\n};\n\n/**\n * Validate and relaunch a physical iOS app without retaining device inventory,\n * signing output, or console output in the acceptance result.\n */\nexport const testAbsoluteIosPhysicalDevice = async (options: {\n\tappId: string;\n\tcapture: (command: string[]) => Promise<CommandResult>;\n\tdevice: string;\n\tnow?: () => number;\n\twaitForHmr: () => Promise<void>;\n\txcrun?: string;\n}): Promise<AbsoluteIosDeviceAcceptanceResult> => {\n\tconst commands = absoluteIosDeviceAcceptanceCommands(options);\n\trequireSuccess(\n\t\tawait options.capture(commands.details),\n\t\t'The selected physical iOS device is unavailable. Pair it in Xcode Device Hub, trust this Mac, unlock it, and enable Developer Mode.'\n\t);\n\tconst apps = requireSuccess(\n\t\tawait options.capture(commands.apps),\n\t\t'AbsoluteJS could not inspect installed apps on the physical iOS device.'\n\t);\n\tif (!apps.stdout.includes(options.appId))\n\t\tthrow new Error(\n\t\t\t'The AbsoluteJS app is not installed on the selected physical iOS device. Start bun dev with the same --ios-device value first.'\n\t\t);\n\tconst now = options.now ?? performance.now.bind(performance);\n\tconst startedAt = now();\n\trequireSuccess(\n\t\tawait options.capture(commands.launch),\n\t\t'AbsoluteJS could not relaunch the app on the physical iOS device.'\n\t);\n\tawait options.waitForHmr();\n\n\treturn {\n\t\thmrConnected: true,\n\t\tinstalled: true,\n\t\trelaunchMs: Math.round(now() - startedAt)\n\t};\n};\n",
30
32
  "import {\n\taccess,\n\tmkdir,\n\treadFile,\n\trename,\n\trm,\n\twriteFile\n} from 'node:fs/promises';\nimport { resolve } from 'node:path';\nimport { Elysia } from 'elysia';\nimport type { MobileConfig } from '../../types/build';\nimport {\n\tnormalizeAbsoluteMobileConfig,\n\ttype NormalizedAbsoluteMobileConfig\n} from './config';\n\nconst JSON_HEADERS: Record<string, string> = {\n\t'cache-control': 'public, max-age=300, must-revalidate',\n\t'content-type': 'application/json; charset=utf-8'\n};\nconst OWNERSHIP_FILE = '.absolutejs-mobile-associations.json';\nconst HTTP_OK = 200;\nconst VERIFY_TIMEOUT_MS = 10_000;\n\ntype AssociationEndpoint = {\n\tdocument: unknown;\n\thost: string;\n\tpath: string;\n\tplatform: string;\n};\n\nexport type AbsoluteAssociationRequest = (\n\tinput: string | URL | Request,\n\tinit?: RequestInit\n) => Promise<Response>;\n\nexport const ANDROID_ASSOCIATION_PATH = '/.well-known/assetlinks.json';\nexport const APPLE_ASSOCIATION_PATH = '/.well-known/apple-app-site-association';\n\nexport type AbsoluteMobileAssociationDocuments = {\n\tandroid?: readonly [\n\t\t{\n\t\t\trelation: readonly ['delegate_permission/common.handle_all_urls'];\n\t\t\ttarget: {\n\t\t\t\tnamespace: 'android_app';\n\t\t\t\tpackage_name: string;\n\t\t\t\tsha256_cert_fingerprints: string[];\n\t\t\t};\n\t\t}\n\t];\n\tapple?: {\n\t\tapplinks: {\n\t\t\tdetails: readonly [\n\t\t\t\t{\n\t\t\t\t\tappIDs: readonly [string];\n\t\t\t\t\tcomponents: readonly [{ '/': '/*' }];\n\t\t\t\t}\n\t\t\t];\n\t\t};\n\t};\n};\n\nconst missingIdentity = (field: string, platform: string) =>\n\tnew TypeError(\n\t\t`${field} is required to publish ${platform} deep-link association files.`\n\t);\n\nconst createAppleDocument = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\trequireAll: boolean\n) => {\n\tif (!config.platforms.includes('ios')) return undefined;\n\tif (!config.appleAppIdPrefix && requireAll) {\n\t\tthrow missingIdentity('mobile.deepLinks.apple.appIdPrefix', 'iOS');\n\t}\n\tif (!config.appleAppIdPrefix) return undefined;\n\n\treturn {\n\t\tapplinks: {\n\t\t\tdetails: [\n\t\t\t\t{\n\t\t\t\t\tappIDs: [\n\t\t\t\t\t\t`${config.appleAppIdPrefix}.${config.appId}`\n\t\t\t\t\t] as const,\n\t\t\t\t\tcomponents: [{ '/': '/*' as const }]\n\t\t\t\t}\n\t\t\t] as const\n\t\t}\n\t};\n};\n\nconst createAndroidDocument = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\trequireAll: boolean\n) => {\n\tif (!config.platforms.includes('android')) return undefined;\n\tif (config.androidCertificateFingerprints.length === 0 && requireAll) {\n\t\tthrow missingIdentity(\n\t\t\t'mobile.deepLinks.android.sha256CertificateFingerprints',\n\t\t\t'Android'\n\t\t);\n\t}\n\tif (config.androidCertificateFingerprints.length === 0) return undefined;\n\n\treturn [\n\t\t{\n\t\t\trelation: ['delegate_permission/common.handle_all_urls'] as const,\n\t\t\ttarget: {\n\t\t\t\tnamespace: 'android_app' as const,\n\t\t\t\tpackage_name: config.appId,\n\t\t\t\tsha256_cert_fingerprints: config.androidCertificateFingerprints\n\t\t\t}\n\t\t}\n\t] as const;\n};\n\nexport const createAbsoluteMobileAssociationDocuments = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\toptions: { requireAll?: boolean } = {}\n) => {\n\tconst documents: AbsoluteMobileAssociationDocuments = {};\n\tconst requireAll = options.requireAll === true;\n\tconst android = createAndroidDocument(config, requireAll);\n\tconst apple = createAppleDocument(config, requireAll);\n\tif (android) documents.android = android;\n\tif (apple) documents.apple = apple;\n\n\treturn documents;\n};\n\nconst jsonResponse = (value: unknown) =>\n\tnew Response(`${JSON.stringify(value)}\\n`, { headers: JSON_HEADERS });\n\nexport const createAbsoluteMobileAssociationPlugin = (\n\tmobile: MobileConfig | undefined,\n\tprojectRoot: string,\n\toptions: { requireAll?: boolean } = {}\n) => {\n\tconst plugin = new Elysia({ name: 'absolutejs-mobile-associations' });\n\tif (!mobile) return plugin;\n\tconst config = normalizeAbsoluteMobileConfig(mobile, projectRoot);\n\tconst documents = createAbsoluteMobileAssociationDocuments(config, options);\n\tif (documents.apple) {\n\t\tplugin.get(APPLE_ASSOCIATION_PATH, () => jsonResponse(documents.apple));\n\t}\n\tif (documents.android) {\n\t\tplugin.get(ANDROID_ASSOCIATION_PATH, () =>\n\t\t\tjsonResponse(documents.android)\n\t\t);\n\t}\n\n\treturn plugin;\n};\n\nconst writeAtomic = async (path: string, source: string) => {\n\tlet current: string | undefined;\n\ttry {\n\t\tcurrent = await readFile(path, 'utf8');\n\t} catch (error) {\n\t\tif (\n\t\t\t!(error instanceof Error) ||\n\t\t\t!('code' in error) ||\n\t\t\terror.code !== 'ENOENT'\n\t\t) {\n\t\t\tthrow error;\n\t\t}\n\t}\n\tif (current === source) return false;\n\tconst temporary = `${path}.${crypto.randomUUID()}.tmp`;\n\tawait writeFile(temporary, source, { flag: 'wx' });\n\tawait rename(temporary, path);\n\n\treturn true;\n};\n\nconst exists = async (path: string) => {\n\ttry {\n\t\tawait access(path);\n\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst assertOwnedOutput = async (root: string) => {\n\tconst path = resolve(root, OWNERSHIP_FILE);\n\tlet ownership: unknown;\n\ttry {\n\t\townership = JSON.parse(await readFile(path, 'utf8'));\n\t} catch {\n\t\tthrow new TypeError(\n\t\t\t`Association output ${root} already exists and is not owned by AbsoluteJS.`\n\t\t);\n\t}\n\tif (\n\t\ttypeof ownership !== 'object' ||\n\t\townership === null ||\n\t\tReflect.get(ownership, 'format') !== 1\n\t) {\n\t\tthrow new TypeError(\n\t\t\t`Association output ${root} has an unsupported ownership manifest.`\n\t\t);\n\t}\n};\n\nconst publishGeneratedDirectory = async (temporary: string, root: string) => {\n\tconst hasCurrent = await exists(root);\n\tif (hasCurrent) await assertOwnedOutput(root);\n\tconst backup = `${root}.${crypto.randomUUID()}.previous`;\n\tif (hasCurrent) await rename(root, backup);\n\ttry {\n\t\tawait rename(temporary, root);\n\t} catch (error) {\n\t\tif (hasCurrent) await rename(backup, root);\n\t\tthrow error;\n\t}\n\tif (hasCurrent) await rm(backup, { force: true, recursive: true });\n};\n\nconst materializeHost = async (\n\troot: string,\n\thost: string,\n\tfiles: Array<[string, unknown]>\n) => {\n\tconst directory = resolve(root, host, '.well-known');\n\tawait mkdir(directory, { recursive: true });\n\n\treturn Promise.all(\n\t\tfiles.map(async ([name, document]) => {\n\t\t\tconst path = resolve(directory, name);\n\t\t\tawait writeAtomic(path, `${JSON.stringify(document, null, 2)}\\n`);\n\n\t\t\treturn path;\n\t\t})\n\t);\n};\n\nconst associationEndpoints = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tdocuments: AbsoluteMobileAssociationDocuments\n) =>\n\tconfig.deepLinkHosts.flatMap((host) => {\n\t\tconst endpoints: AssociationEndpoint[] = [];\n\t\tif (documents.android)\n\t\t\tendpoints.push({\n\t\t\t\tdocument: documents.android,\n\t\t\t\thost,\n\t\t\t\tpath: ANDROID_ASSOCIATION_PATH,\n\t\t\t\tplatform: 'Android'\n\t\t\t});\n\t\tif (documents.apple)\n\t\t\tendpoints.push({\n\t\t\t\tdocument: documents.apple,\n\t\t\t\thost,\n\t\t\t\tpath: APPLE_ASSOCIATION_PATH,\n\t\t\t\tplatform: 'Apple'\n\t\t\t});\n\n\t\treturn endpoints;\n\t});\n\nexport const materializeAbsoluteMobileAssociationFiles = async (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\toutputDirectory: string\n) => {\n\tconst root = resolve(outputDirectory);\n\tconst temporary = `${root}.${crypto.randomUUID()}.tmp`;\n\tconst documents = createAbsoluteMobileAssociationDocuments(config, {\n\t\trequireAll: true\n\t});\n\tconst files: Array<[string, unknown]> = [];\n\tif (documents.android) files.push(['assetlinks.json', documents.android]);\n\tif (documents.apple) {\n\t\tfiles.push(['apple-app-site-association', documents.apple]);\n\t}\n\tawait mkdir(temporary, { recursive: true });\n\ttry {\n\t\tconst temporaryPaths = (\n\t\t\tawait Promise.all(\n\t\t\t\tconfig.deepLinkHosts.map((host) =>\n\t\t\t\t\tmaterializeHost(temporary, host, files)\n\t\t\t\t)\n\t\t\t)\n\t\t).flat();\n\t\tawait writeAtomic(\n\t\t\tresolve(temporary, OWNERSHIP_FILE),\n\t\t\t`${JSON.stringify({ format: 1, hosts: config.deepLinkHosts }, null, 2)}\\n`\n\t\t);\n\t\tawait publishGeneratedDirectory(temporary, root);\n\t\tconst written = temporaryPaths.map((path) =>\n\t\t\tresolve(root, path.slice(temporary.length + 1))\n\t\t);\n\n\t\treturn { root, written };\n\t} catch (error) {\n\t\tawait rm(temporary, { force: true, recursive: true });\n\t\tthrow error;\n\t}\n};\n\nexport const verifyAbsoluteMobileAssociationFiles = async (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\trequest: AbsoluteAssociationRequest = globalThis.fetch\n) => {\n\tconst documents = createAbsoluteMobileAssociationDocuments(config, {\n\t\trequireAll: true\n\t});\n\tconst results = await Promise.all(\n\t\tassociationEndpoints(config, documents).map(async (endpoint) => {\n\t\t\tconst url = `https://${endpoint.host}${endpoint.path}`;\n\t\t\tconst response = await request(url, {\n\t\t\t\tredirect: 'manual',\n\t\t\t\tsignal: AbortSignal.timeout(VERIFY_TIMEOUT_MS)\n\t\t\t});\n\t\t\tif (response.status !== HTTP_OK) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`${endpoint.platform} association verification failed for ${url}: HTTP ${response.status}; redirects are not allowed.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst contentType = response.headers.get('content-type') ?? '';\n\t\t\tif (!contentType.toLowerCase().startsWith('application/json')) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`${endpoint.platform} association verification failed for ${url}: expected application/json.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tlet document: unknown;\n\t\t\ttry {\n\t\t\t\tdocument = await response.json();\n\t\t\t} catch {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`${endpoint.platform} association verification failed for ${url}: invalid JSON.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tJSON.stringify(document) !== JSON.stringify(endpoint.document)\n\t\t\t) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`${endpoint.platform} association verification failed for ${url}: the hosted identity does not match mobile config.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn { platform: endpoint.platform, url };\n\t\t})\n\t);\n\n\treturn { results };\n};\n",
31
- "import { resolve } from 'node:path';\nimport type { MobileConfig, MobilePlatform } from '../../types/build';\n\nexport type NormalizedAbsoluteMobileConfig = {\n\tappId: string;\n\tappName: string;\n\tandroidCertificateFingerprints: string[];\n\tappleAppIdPrefix?: string;\n\tbundleDirectory: string;\n\tdeepLinkHosts: string[];\n\tdeepLinkScheme?: string;\n\tengine: 'capacitor' | 'expo';\n\tentry: string;\n\texpoNativeRoutes: Record<string, string>;\n\texpoSdkVersion?: 57;\n\tiosVersion?: string;\n\tnativeProjectDirectory: string;\n\tplatforms: MobilePlatform[];\n\tproductionOrigin: string;\n\tpushAndroidGoogleServicesFile: string;\n};\n\nconst APP_ID_PATTERN = /^[A-Za-z][\\w]*(?:\\.[A-Za-z][\\w]*)+$/;\nconst SCHEME_PATTERN = /^[a-z][a-z0-9+.-]*$/;\nconst APPLE_APP_ID_PREFIX_PATTERN = /^[A-Z0-9]{10}$/;\nconst CERTIFICATE_FINGERPRINT_PATTERN = /^[0-9A-F]{64}$/;\nconst HOSTNAME_PATTERN =\n\t/^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)(?:\\.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?))*$/;\n\nconst resolveProjectPath = (\n\tprojectRoot: string,\n\tvalue: string,\n\tfield: string\n) => {\n\tconst root = resolve(projectRoot);\n\tconst path = resolve(root, value);\n\tif (path !== root && !path.startsWith(`${root}/`)) {\n\t\tthrow new TypeError(`${field} must remain inside the project root.`);\n\t}\n\n\treturn path;\n};\n\nconst requireText = (value: string, field: string) => {\n\tconst normalized = value.trim();\n\tif (!normalized) throw new TypeError(`${field} must not be empty.`);\n\n\treturn normalized;\n};\n\nconst normalizeEntry = (entry: string | undefined) => {\n\tconst normalized = requireText(entry ?? '/', 'mobile.entry');\n\tif (!normalized.startsWith('/') || normalized.startsWith('//')) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.entry must be an absolute application path.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeProductionOrigin = (value: string) => {\n\tconst parsed = new URL(\n\t\trequireText(value, 'mobile.server.productionOrigin')\n\t);\n\tconst isLoopbackHttp =\n\t\tparsed.protocol === 'http:' &&\n\t\t(parsed.hostname === 'localhost' ||\n\t\t\tparsed.hostname === '127.0.0.1' ||\n\t\t\tparsed.hostname === '[::1]');\n\tif (parsed.protocol !== 'https:' && !isLoopbackHttp) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.server.productionOrigin must use HTTPS, except for a loopback development origin.'\n\t\t);\n\t}\n\tif (\n\t\tparsed.username ||\n\t\tparsed.password ||\n\t\tparsed.pathname !== '/' ||\n\t\tparsed.search ||\n\t\tparsed.hash\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.server.productionOrigin must be an origin without credentials, path, query, or hash.'\n\t\t);\n\t}\n\n\treturn parsed.origin;\n};\n\nconst normalizePlatforms = (\n\tplatforms: readonly MobilePlatform[] | undefined\n) => {\n\tconst normalized: MobilePlatform[] = [\n\t\t...new Set<MobilePlatform>(platforms ?? ['ios', 'android'])\n\t];\n\tif (normalized.length === 0) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.platforms must contain at least one platform.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeHosts = (\n\thosts: readonly string[] | undefined,\n\tproductionOrigin: string\n) => {\n\tconst normalizeHostname = (host: string) => {\n\t\tconst value = requireText(host, 'mobile.deepLinks.hosts').toLowerCase();\n\t\tif (!HOSTNAME_PATTERN.test(value)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'mobile.deepLinks.hosts entries must be valid hostnames without ports, wildcards, or paths.'\n\t\t\t);\n\t\t}\n\n\t\treturn value;\n\t};\n\tconst productionHostname = new URL(productionOrigin).hostname;\n\t// IPv6 loopback is valid for a local backend preview but cannot be an\n\t// Android App Link or Apple Universal Link hostname.\n\tconst normalized = new Set<string>(\n\t\tproductionHostname === '[::1]'\n\t\t\t? []\n\t\t\t: [normalizeHostname(productionHostname)]\n\t);\n\tfor (const host of hosts ?? []) {\n\t\tnormalized.add(normalizeHostname(host));\n\t}\n\n\treturn [...normalized].sort();\n};\n\nconst normalizeAppleAppIdPrefix = (value: string | undefined) => {\n\tif (value === undefined) return undefined;\n\tconst normalized = requireText(\n\t\tvalue,\n\t\t'mobile.deepLinks.apple.appIdPrefix'\n\t).toUpperCase();\n\tif (!APPLE_APP_ID_PREFIX_PATTERN.test(normalized)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.deepLinks.apple.appIdPrefix must contain ten letters or digits.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeIosVersion = (value: string | undefined) => {\n\tif (value === undefined) return undefined;\n\tconst normalized = requireText(value, 'mobile.ios.version');\n\tif (!/^\\d+(?:\\.\\d+){0,2}$/u.test(normalized)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.ios.version must contain one to three dot-separated integer components, for example 1.4.0.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeCertificateFingerprints = (\n\tvalues: readonly string[] | undefined\n) =>\n\t[\n\t\t...new Set(\n\t\t\t(values ?? [])\n\t\t\t\t.map((value) =>\n\t\t\t\t\trequireText(\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t'mobile.deepLinks.android.sha256CertificateFingerprints'\n\t\t\t\t\t)\n\t\t\t\t\t\t.replaceAll(':', '')\n\t\t\t\t\t\t.toUpperCase()\n\t\t\t\t)\n\t\t\t\t.map((value) => {\n\t\t\t\t\tif (!CERTIFICATE_FINGERPRINT_PATTERN.test(value)) {\n\t\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t\t'mobile.deepLinks.android.sha256CertificateFingerprints entries must be SHA-256 certificate fingerprints.'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn value.match(/.{2}/g)?.join(':') ?? value;\n\t\t\t\t})\n\t\t)\n\t].sort();\n\nconst normalizeExpoNativeRoutes = (\n\tconfig: MobileConfig,\n\tprojectRoot: string\n) => {\n\tif (config.engine !== 'expo') return {};\n\tconst routes = config.routes?.native ?? {};\n\tconst normalized: Record<string, string> = {};\n\tfor (const [route, module] of Object.entries(routes)) {\n\t\tconst path = normalizeEntry(route);\n\t\tif (\n\t\t\tpath.includes('?') ||\n\t\t\tpath.includes('#') ||\n\t\t\t(path !== '/' && path.endsWith('/'))\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`mobile.routes.native route ${path} must be a canonical path without a query, fragment, or trailing slash.`\n\t\t\t);\n\t\t}\n\t\tif (path === '/__absolute/native') {\n\t\t\tthrow new TypeError(\n\t\t\t\t'mobile.routes.native reserves /__absolute/native for the Expo diagnostic screen.'\n\t\t\t);\n\t\t}\n\t\tif (path.includes('*') || path.includes(':')) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`mobile.routes.native route ${path} must be static during the Expo experiment; parameters and wildcards are not supported yet.`\n\t\t\t);\n\t\t}\n\t\tnormalized[path] = resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\trequireText(module, `mobile.routes.native[${path}]`),\n\t\t\t`mobile.routes.native[${path}]`\n\t\t);\n\t}\n\n\treturn Object.fromEntries(\n\t\tObject.entries(normalized).sort(([left], [right]) =>\n\t\t\tleft.localeCompare(right)\n\t\t)\n\t);\n};\n\nexport const normalizeAbsoluteMobileConfig = (\n\tconfig: MobileConfig,\n\tprojectRoot: string\n): NormalizedAbsoluteMobileConfig => {\n\tconst appId = requireText(config.appId, 'mobile.appId');\n\tif (!APP_ID_PATTERN.test(appId)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.appId must use reverse-domain notation, for example com.example.app.'\n\t\t);\n\t}\n\tconst productionOrigin = normalizeProductionOrigin(\n\t\tconfig.server.productionOrigin\n\t);\n\tconst deepLinkScheme = (config.deepLinks?.scheme ?? appId)\n\t\t.trim()\n\t\t.toLowerCase();\n\tif (deepLinkScheme && !SCHEME_PATTERN.test(deepLinkScheme)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.deepLinks.scheme is not a valid URL scheme.'\n\t\t);\n\t}\n\n\treturn {\n\t\tandroidCertificateFingerprints: normalizeCertificateFingerprints(\n\t\t\tconfig.deepLinks?.android?.sha256CertificateFingerprints\n\t\t),\n\t\tappId,\n\t\tappleAppIdPrefix: normalizeAppleAppIdPrefix(\n\t\t\tconfig.deepLinks?.apple?.appIdPrefix\n\t\t),\n\t\tappName: requireText(config.appName, 'mobile.appName'),\n\t\tbundleDirectory: resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\tconfig.bundleDirectory ?? '.absolutejs/mobile/web',\n\t\t\t'mobile.bundleDirectory'\n\t\t),\n\t\tdeepLinkHosts: normalizeHosts(\n\t\t\tconfig.deepLinks?.hosts,\n\t\t\tproductionOrigin\n\t\t),\n\t\tdeepLinkScheme,\n\t\tengine: config.engine ?? 'capacitor',\n\t\tentry: normalizeEntry(config.entry),\n\t\texpoNativeRoutes: normalizeExpoNativeRoutes(config, projectRoot),\n\t\t...(config.engine === 'expo'\n\t\t\t? { expoSdkVersion: config.expo?.sdkVersion ?? 57 }\n\t\t\t: {}),\n\t\tiosVersion: normalizeIosVersion(config.ios?.version),\n\t\tnativeProjectDirectory: resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\tconfig.nativeProject?.directory ??\n\t\t\t\t(config.engine === 'expo'\n\t\t\t\t\t? '.absolutejs/mobile/expo'\n\t\t\t\t\t: 'mobile'),\n\t\t\t'mobile.nativeProject.directory'\n\t\t),\n\t\tplatforms: normalizePlatforms(config.platforms),\n\t\tproductionOrigin,\n\t\tpushAndroidGoogleServicesFile: resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\tconfig.pushNotifications?.android?.googleServicesFile ??\n\t\t\t\t'google-services.json',\n\t\t\t'mobile.pushNotifications.android.googleServicesFile'\n\t\t)\n\t};\n};\n",
32
33
  "import type { AbsoluteMobilePageFramework } from './pageProtocol';\n\nexport const ABSOLUTE_MOBILE_ROUTE_DETAIL = 'x-absolute-mobile' as const;\n\nexport type AbsoluteMobileBuildPageMetadata = {\n\tbundleKey: string;\n\tcontract: string;\n\tframework: AbsoluteMobilePageFramework;\n\tpageId: string;\n\tpropsSchemaHash: string;\n};\n\nconst frameworks = new Set<string>([\n\t'angular',\n\t'ember',\n\t'html',\n\t'htmx',\n\t'react',\n\t'svelte',\n\t'vue'\n]);\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst isPageFramework = (\n\tvalue: unknown\n): value is AbsoluteMobilePageFramework =>\n\ttypeof value === 'string' && frameworks.has(value);\n\nexport const parseAbsoluteMobileBuildPageMetadata = (\n\tvalue: unknown\n): AbsoluteMobileBuildPageMetadata | undefined => {\n\tif (!isRecord(value)) return undefined;\n\tif (\n\t\ttypeof value.bundleKey !== 'string' ||\n\t\ttypeof value.contract !== 'string' ||\n\t\t!isPageFramework(value.framework) ||\n\t\ttypeof value.pageId !== 'string' ||\n\t\ttypeof value.propsSchemaHash !== 'string'\n\t) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\tbundleKey: value.bundleKey,\n\t\tcontract: value.contract,\n\t\tframework: value.framework,\n\t\tpageId: value.pageId,\n\t\tpropsSchemaHash: value.propsSchemaHash\n\t};\n};\n",
33
- "import { readFile } from 'node:fs/promises';\nimport { join, resolve } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { Elysia } from 'elysia';\nimport type { MobileConfig } from '../../types/build';\nimport { buildAbsoluteMobileCompatibilityRelease } from './buildRelease';\nimport { materializeAbsoluteCapacitorWebBundle } from './capacitorBundle';\nimport { normalizeAbsoluteMobileConfig } from './config';\nimport {\n\tmaterializeAbsoluteMobileCompatibilityBundle,\n\treadAbsoluteMobileMaterializedReleases\n} from './materializedBundle';\nimport { ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION } from './pageProtocol';\nimport { retainAbsoluteMobileCompatibilityArtifacts } from './releaseArtifact';\nimport {\n\tprojectUsesAbsoluteSync,\n\tresolveAbsoluteMobileAuthManifest\n} from './nativeAuth';\nimport { discoverAbsoluteSyncSchema } from './syncSchema';\nimport {\n\tassertAbsoluteDeviceCapabilityPackages,\n\tresolveAbsoluteDeviceCapabilityPlan\n} from './deviceCapabilities';\nimport {\n\tsyncAbsoluteExpoWebAssets,\n\twriteAbsoluteExpoProject\n} from './expoProject';\n\nexport type FinalizeAbsoluteMobileBuildOptions = {\n\tbuildDirectory: string;\n\tconfigPath?: string;\n\tmobile: MobileConfig;\n\tproducerPath: string;\n\tprojectRoot: string;\n};\n\ntype ServerModule = {\n\tapp?: unknown;\n\tdefault?: unknown;\n\tserver?: unknown;\n};\n\ntype StringRecord = Record<string, string>;\n\nconst isElysiaApp = (\n\tvalue: unknown\n): value is Pick<Elysia, 'compile' | 'modules' | 'routes'> =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\ttypeof Reflect.get(value, 'compile') === 'function' &&\n\tArray.isArray(Reflect.get(value, 'routes'));\n\nconst isStringRecord = (value: unknown): value is StringRecord =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t!Array.isArray(value) &&\n\tObject.values(value).every((entry) => typeof entry === 'string');\n\nconst serverExportName = (loaded: ServerModule, app: unknown) => {\n\tif (loaded.server === app) return 'server';\n\tif (loaded.app === app) return 'app';\n\n\treturn 'default';\n};\n\nconst restoreEnvironmentVariable = (\n\tname:\n\t\t| 'ABSOLUTE_BUILD_DIR'\n\t\t| 'ABSOLUTE_COMPILED_RUNTIME'\n\t\t| 'ABSOLUTE_CONFIG',\n\tprevious: string | undefined\n) => {\n\tif (previous !== undefined) process.env[name] = previous;\n\telse delete process.env[name];\n};\n\nconst requireRelease = <T>(releases: Map<string, T>, releaseId: string) => {\n\tconst release = releases.get(releaseId);\n\tif (!release) {\n\t\tthrow new TypeError(`Missing retained mobile release ${releaseId}.`);\n\t}\n\n\treturn release;\n};\n\nconst loadServerApp = async (producerPath: string) => {\n\tconst loaded: ServerModule = await import(\n\t\t`${pathToFileURL(producerPath).href}?absolute-mobile-capture=${crypto.randomUUID()}`\n\t);\n\tconst candidates = [loaded.server, loaded.app, loaded.default];\n\tconst app = candidates.find(isElysiaApp);\n\tif (!app) {\n\t\tthrow new TypeError(\n\t\t\t'Mobile builds require the server entry to export its Elysia app as server, app, or default.'\n\t\t);\n\t}\n\tconst exportName = serverExportName(loaded, app);\n\n\treturn { app, exportName };\n};\n\nexport const finalizeAbsoluteMobileCompatibilityBuild = async (\n\toptions: FinalizeAbsoluteMobileBuildOptions\n) => {\n\tconst buildDirectory = resolve(options.buildDirectory);\n\tconst mobile = normalizeAbsoluteMobileConfig(\n\t\toptions.mobile,\n\t\toptions.projectRoot\n\t);\n\tconst root = join(buildDirectory, '.absolutejs', 'mobile-compatibility');\n\tconst [manifestSource, previous] = await Promise.all([\n\t\treadFile(join(buildDirectory, 'manifest.json'), 'utf8'),\n\t\treadAbsoluteMobileMaterializedReleases(root)\n\t]);\n\tconst manifest: unknown = JSON.parse(manifestSource);\n\tif (!isStringRecord(manifest)) {\n\t\tthrow new TypeError(\n\t\t\t'Invalid AbsoluteJS build manifest for mobile capture.'\n\t\t);\n\t}\n\tconst previousBuildDirectory = process.env.ABSOLUTE_BUILD_DIR;\n\tconst previousCompiledRuntime = process.env.ABSOLUTE_COMPILED_RUNTIME;\n\tconst previousConfigPath = process.env.ABSOLUTE_CONFIG;\n\tprocess.env.ABSOLUTE_BUILD_DIR = buildDirectory;\n\tprocess.env.ABSOLUTE_COMPILED_RUNTIME = '1';\n\tif (options.configPath) {\n\t\tprocess.env.ABSOLUTE_CONFIG = resolve(\n\t\t\toptions.projectRoot,\n\t\t\toptions.configPath\n\t\t);\n\t}\n\tlet loaded: Awaited<ReturnType<typeof loadServerApp>>;\n\ttry {\n\t\tloaded = await loadServerApp(resolve(options.producerPath));\n\t} finally {\n\t\trestoreEnvironmentVariable(\n\t\t\t'ABSOLUTE_BUILD_DIR',\n\t\t\tpreviousBuildDirectory\n\t\t);\n\t\trestoreEnvironmentVariable(\n\t\t\t'ABSOLUTE_COMPILED_RUNTIME',\n\t\t\tpreviousCompiledRuntime\n\t\t);\n\t\trestoreEnvironmentVariable('ABSOLUTE_CONFIG', previousConfigPath);\n\t}\n\tconst current = await buildAbsoluteMobileCompatibilityRelease({\n\t\tapp: loaded.app,\n\t\tappId: mobile.appId,\n\t\tbuildDirectory,\n\t\tmanifest,\n\t\tpreviousArtifacts: previous.map(({ artifact }) => artifact),\n\t\tproducerExport: loaded.exportName,\n\t\tproducerPath: resolve(options.producerPath),\n\t\truntime: String(ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION)\n\t});\n\tconst auth = resolveAbsoluteMobileAuthManifest(options.projectRoot, mobile);\n\tif (mobile.engine === 'expo' && auth) {\n\t\tthrow new TypeError(\n\t\t\t\"Expo mobile Auth is not released yet. The experimental Expo shell cannot safely substitute Capacitor credentials; remove engine: 'expo' or wait for @absolutejs/auth-expo.\"\n\t\t);\n\t}\n\tconst sync =\n\t\tauth !== undefined && projectUsesAbsoluteSync(options.projectRoot);\n\tconst syncSchema = sync\n\t\t? discoverAbsoluteSyncSchema(options.projectRoot)\n\t\t: undefined;\n\tconst deviceCapabilities = resolveAbsoluteDeviceCapabilityPlan(\n\t\toptions.projectRoot\n\t);\n\tconst usesPush =\n\t\tdeviceCapabilities.capabilities.includes('pushNotifications');\n\tif (\n\t\tmobile.engine === 'expo' &&\n\t\tdeviceCapabilities.capabilities.some(\n\t\t\t(capability) => capability !== 'haptics'\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Experimental Expo builds currently bridge only @absolutejs/devices haptics. Other detected device capabilities require their Expo adapters.'\n\t\t);\n\t}\n\tif (usesPush && !auth)\n\t\tthrow new TypeError(\n\t\t\t'Portable push notifications require @absolutejs/auth so provider tokens can be registered without exposing identity controls to page code.'\n\t\t);\n\tif (\n\t\tusesPush &&\n\t\t!loaded.app.routes.some(\n\t\t\t(route) =>\n\t\t\t\troute.path === '/auth/push' ||\n\t\t\t\troute.path === '/auth/mobile/push'\n\t\t)\n\t)\n\t\tthrow new TypeError(\n\t\t\t'@absolutejs/devices pushNotifications is used, but Auth push is not configured. Pass a trusted server-side registrar to auth({ push: ... }).'\n\t\t);\n\tif (mobile.engine === 'capacitor') {\n\t\tassertAbsoluteDeviceCapabilityPackages(\n\t\t\toptions.projectRoot,\n\t\t\tdeviceCapabilities\n\t\t);\n\t}\n\tif (\n\t\tauth &&\n\t\t!loaded.app.routes.some(\n\t\t\t(route) => route.path === '/.well-known/openid-configuration'\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'@absolutejs/auth is installed, but its OIDC provider is not mounted. Native authentication requires the auth oidc configuration so AbsoluteJS can provision a public PKCE client.'\n\t\t);\n\t}\n\tconst releasesById = new Map(\n\t\t[current, ...previous].map((release) => [\n\t\t\trelease.artifact.releaseId,\n\t\t\trelease\n\t\t])\n\t);\n\tconst retained = retainAbsoluteMobileCompatibilityArtifacts(\n\t\t[...releasesById.values()].map(({ artifact }) => artifact)\n\t);\n\tawait materializeAbsoluteMobileCompatibilityBundle({\n\t\tcurrentReleaseId: current.artifact.releaseId,\n\t\treleases: retained.map((artifact) =>\n\t\t\trequireRelease(releasesById, artifact.releaseId)\n\t\t),\n\t\troot\n\t});\n\tawait materializeAbsoluteCapacitorWebBundle({\n\t\tartifact: current.artifact,\n\t\t...(auth ? { auth } : {}),\n\t\tbuildDirectory,\n\t\tconfig: mobile,\n\t\tdeviceCapabilities,\n\t\tprojectRoot: options.projectRoot,\n\t\t...(sync ? { sync: true } : {}),\n\t\t...(syncSchema\n\t\t\t? { syncSchema: { components: syncSchema.components } }\n\t\t\t: {})\n\t});\n\tif (mobile.engine === 'expo') {\n\t\tawait writeAbsoluteExpoProject(mobile, {\n\t\t\tprojectRoot: options.projectRoot\n\t\t});\n\t\tawait syncAbsoluteExpoWebAssets(mobile);\n\t}\n\n\treturn current.artifact;\n};\n",
34
+ "import { readFile } from 'node:fs/promises';\nimport { join, resolve } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { Elysia } from 'elysia';\nimport type { MobileConfig } from '../../types/build';\nimport { buildAbsoluteMobileCompatibilityRelease } from './buildRelease';\nimport { materializeAbsoluteCapacitorWebBundle } from './capacitorBundle';\nimport { normalizeAbsoluteMobileConfig } from './config';\nimport {\n\tmaterializeAbsoluteMobileCompatibilityBundle,\n\treadAbsoluteMobileMaterializedReleases\n} from './materializedBundle';\nimport { ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION } from './pageProtocol';\nimport { retainAbsoluteMobileCompatibilityArtifacts } from './releaseArtifact';\nimport {\n\tprojectUsesAbsoluteSync,\n\tresolveAbsoluteMobileAuthManifest\n} from './nativeAuth';\nimport { discoverAbsoluteSyncSchema } from './syncSchema';\nimport {\n\tassertAbsoluteDeviceCapabilityPackages,\n\tresolveAbsoluteDeviceCapabilityPlan\n} from './deviceCapabilities';\nimport {\n\tsyncAbsoluteExpoWebAssets,\n\twriteAbsoluteExpoProject\n} from './expoProject';\n\nexport type FinalizeAbsoluteMobileBuildOptions = {\n\tbuildDirectory: string;\n\tconfigPath?: string;\n\tmobile: MobileConfig;\n\tproducerPath: string;\n\tprojectRoot: string;\n};\n\ntype ServerModule = {\n\tapp?: unknown;\n\tdefault?: unknown;\n\tserver?: unknown;\n};\n\ntype StringRecord = Record<string, string>;\n\nconst isElysiaApp = (\n\tvalue: unknown\n): value is Pick<Elysia, 'compile' | 'modules' | 'routes'> =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\ttypeof Reflect.get(value, 'compile') === 'function' &&\n\tArray.isArray(Reflect.get(value, 'routes'));\n\nconst isStringRecord = (value: unknown): value is StringRecord =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t!Array.isArray(value) &&\n\tObject.values(value).every((entry) => typeof entry === 'string');\n\nconst serverExportName = (loaded: ServerModule, app: unknown) => {\n\tif (loaded.server === app) return 'server';\n\tif (loaded.app === app) return 'app';\n\n\treturn 'default';\n};\n\nconst restoreEnvironmentVariable = (\n\tname:\n\t\t| 'ABSOLUTE_BUILD_DIR'\n\t\t| 'ABSOLUTE_COMPILED_RUNTIME'\n\t\t| 'ABSOLUTE_CONFIG',\n\tprevious: string | undefined\n) => {\n\tif (previous !== undefined) process.env[name] = previous;\n\telse delete process.env[name];\n};\n\nconst requireRelease = <T>(releases: Map<string, T>, releaseId: string) => {\n\tconst release = releases.get(releaseId);\n\tif (!release) {\n\t\tthrow new TypeError(`Missing retained mobile release ${releaseId}.`);\n\t}\n\n\treturn release;\n};\n\nconst loadServerApp = async (producerPath: string) => {\n\tconst loaded: ServerModule = await import(\n\t\t`${pathToFileURL(producerPath).href}?absolute-mobile-capture=${crypto.randomUUID()}`\n\t);\n\tconst candidates = [loaded.server, loaded.app, loaded.default];\n\tconst app = candidates.find(isElysiaApp);\n\tif (!app) {\n\t\tthrow new TypeError(\n\t\t\t'Mobile builds require the server entry to export its Elysia app as server, app, or default.'\n\t\t);\n\t}\n\tconst exportName = serverExportName(loaded, app);\n\n\treturn { app, exportName };\n};\n\nexport const finalizeAbsoluteMobileCompatibilityBuild = async (\n\toptions: FinalizeAbsoluteMobileBuildOptions\n) => {\n\tconst buildDirectory = resolve(options.buildDirectory);\n\tconst mobile = normalizeAbsoluteMobileConfig(\n\t\toptions.mobile,\n\t\toptions.projectRoot\n\t);\n\tconst root = join(buildDirectory, '.absolutejs', 'mobile-compatibility');\n\tconst [manifestSource, previous] = await Promise.all([\n\t\treadFile(join(buildDirectory, 'manifest.json'), 'utf8'),\n\t\treadAbsoluteMobileMaterializedReleases(root)\n\t]);\n\tconst manifest: unknown = JSON.parse(manifestSource);\n\tif (!isStringRecord(manifest)) {\n\t\tthrow new TypeError(\n\t\t\t'Invalid AbsoluteJS build manifest for mobile capture.'\n\t\t);\n\t}\n\tconst previousBuildDirectory = process.env.ABSOLUTE_BUILD_DIR;\n\tconst previousCompiledRuntime = process.env.ABSOLUTE_COMPILED_RUNTIME;\n\tconst previousConfigPath = process.env.ABSOLUTE_CONFIG;\n\tprocess.env.ABSOLUTE_BUILD_DIR = buildDirectory;\n\tprocess.env.ABSOLUTE_COMPILED_RUNTIME = '1';\n\tif (options.configPath) {\n\t\tprocess.env.ABSOLUTE_CONFIG = resolve(\n\t\t\toptions.projectRoot,\n\t\t\toptions.configPath\n\t\t);\n\t}\n\tlet loaded: Awaited<ReturnType<typeof loadServerApp>>;\n\ttry {\n\t\tloaded = await loadServerApp(resolve(options.producerPath));\n\t} finally {\n\t\trestoreEnvironmentVariable(\n\t\t\t'ABSOLUTE_BUILD_DIR',\n\t\t\tpreviousBuildDirectory\n\t\t);\n\t\trestoreEnvironmentVariable(\n\t\t\t'ABSOLUTE_COMPILED_RUNTIME',\n\t\t\tpreviousCompiledRuntime\n\t\t);\n\t\trestoreEnvironmentVariable('ABSOLUTE_CONFIG', previousConfigPath);\n\t}\n\tconst current = await buildAbsoluteMobileCompatibilityRelease({\n\t\tapp: loaded.app,\n\t\tappId: mobile.appId,\n\t\tbuildDirectory,\n\t\tmanifest,\n\t\tpreviousArtifacts: previous.map(({ artifact }) => artifact),\n\t\tproducerExport: loaded.exportName,\n\t\tproducerPath: resolve(options.producerPath),\n\t\truntime: String(ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION)\n\t});\n\tconst auth = resolveAbsoluteMobileAuthManifest(options.projectRoot, mobile);\n\tconst sync =\n\t\tauth !== undefined && projectUsesAbsoluteSync(options.projectRoot);\n\tconst syncSchema = sync\n\t\t? discoverAbsoluteSyncSchema(options.projectRoot)\n\t\t: undefined;\n\tconst deviceCapabilities = resolveAbsoluteDeviceCapabilityPlan(\n\t\toptions.projectRoot\n\t);\n\tconst usesPush =\n\t\tdeviceCapabilities.capabilities.includes('pushNotifications');\n\tif (\n\t\tmobile.engine === 'expo' &&\n\t\tdeviceCapabilities.capabilities.some(\n\t\t\t(capability) => capability !== 'haptics'\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Experimental Expo builds currently bridge only @absolutejs/devices haptics. Other detected device capabilities require their Expo adapters.'\n\t\t);\n\t}\n\tif (usesPush && !auth)\n\t\tthrow new TypeError(\n\t\t\t'Portable push notifications require @absolutejs/auth so provider tokens can be registered without exposing identity controls to page code.'\n\t\t);\n\tif (\n\t\tusesPush &&\n\t\t!loaded.app.routes.some(\n\t\t\t(route) =>\n\t\t\t\troute.path === '/auth/push' ||\n\t\t\t\troute.path === '/auth/mobile/push'\n\t\t)\n\t)\n\t\tthrow new TypeError(\n\t\t\t'@absolutejs/devices pushNotifications is used, but Auth push is not configured. Pass a trusted server-side registrar to auth({ push: ... }).'\n\t\t);\n\tif (mobile.engine === 'capacitor') {\n\t\tassertAbsoluteDeviceCapabilityPackages(\n\t\t\toptions.projectRoot,\n\t\t\tdeviceCapabilities\n\t\t);\n\t}\n\tif (\n\t\tauth &&\n\t\t!loaded.app.routes.some(\n\t\t\t(route) => route.path === '/.well-known/openid-configuration'\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'@absolutejs/auth is installed, but its OIDC provider is not mounted. Native authentication requires the auth oidc configuration so AbsoluteJS can provision a public PKCE client.'\n\t\t);\n\t}\n\tconst releasesById = new Map(\n\t\t[current, ...previous].map((release) => [\n\t\t\trelease.artifact.releaseId,\n\t\t\trelease\n\t\t])\n\t);\n\tconst retained = retainAbsoluteMobileCompatibilityArtifacts(\n\t\t[...releasesById.values()].map(({ artifact }) => artifact)\n\t);\n\tawait materializeAbsoluteMobileCompatibilityBundle({\n\t\tcurrentReleaseId: current.artifact.releaseId,\n\t\treleases: retained.map((artifact) =>\n\t\t\trequireRelease(releasesById, artifact.releaseId)\n\t\t),\n\t\troot\n\t});\n\tawait materializeAbsoluteCapacitorWebBundle({\n\t\tartifact: current.artifact,\n\t\t...(auth ? { auth } : {}),\n\t\tbuildDirectory,\n\t\tconfig: mobile,\n\t\tdeviceCapabilities,\n\t\tprojectRoot: options.projectRoot,\n\t\t...(sync ? { sync: true } : {}),\n\t\t...(syncSchema\n\t\t\t? { syncSchema: { components: syncSchema.components } }\n\t\t\t: {})\n\t});\n\tif (mobile.engine === 'expo') {\n\t\tawait writeAbsoluteExpoProject(mobile, {\n\t\t\tprojectRoot: options.projectRoot\n\t\t});\n\t\tawait syncAbsoluteExpoWebAssets(mobile);\n\t}\n\n\treturn current.artifact;\n};\n",
34
35
  "import { createHash } from 'node:crypto';\nimport { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { basename, dirname, extname, join, relative, resolve } from 'node:path';\nimport type { Elysia } from 'elysia';\nimport {\n\tABSOLUTE_MOBILE_ROUTE_DETAIL,\n\tparseAbsoluteMobileBuildPageMetadata,\n\ttype AbsoluteMobileBuildPageMetadata\n} from './buildMetadata';\nimport {\n\tcreateAbsoluteMobileCompatibilityArtifact,\n\ttype AbsoluteMobileCompatibilityArtifact,\n\ttype AbsoluteMobileCompatibilityPage,\n\ttype AbsoluteMobileCompatibilityRoute\n} from './releaseArtifact';\nimport type { AbsoluteMobileStoredCompatibilityRelease } from './artifactStore';\nimport { toPascal } from '../utils/stringModifiers';\n\nexport type AbsoluteMobileBuildReleaseOptions = {\n\tapp: Pick<Elysia, 'compile' | 'modules' | 'routes'>;\n\tappId: string;\n\tbuildDirectory: string;\n\tmanifest: Record<string, string>;\n\tpreviousArtifacts?: readonly AbsoluteMobileCompatibilityArtifact[];\n\tproducerExport?: string;\n\tproducerModule?: string;\n\tproducerPath: string;\n\truntime: string;\n};\n\nconst sha256 = (bytes: Uint8Array) =>\n\tcreateHash('sha256').update(bytes).digest('hex');\n\nconst STATIC_SCRIPT_PATTERN =\n\t/(<script\\b[^>]*?\\bsrc\\s*=\\s*[\"'])(\\/[^\"']+\\.(?:js|ts))([\"'][^>]*>)/giu;\n\nconst rewriteStaticScriptPaths = (\n\tsource: string,\n\tmanifest: Record<string, string>\n) =>\n\tsource.replace(\n\t\tSTATIC_SCRIPT_PATTERN,\n\t\t(match, prefix: string, path: string, suffix: string) => {\n\t\t\tif (path.endsWith('/htmx.min.js')) return match;\n\t\t\tconst key = toPascal(basename(path, extname(path)));\n\t\t\tconst builtPath = manifest[key];\n\n\t\t\treturn builtPath ? `${prefix}${builtPath}${suffix}` : match;\n\t\t}\n\t);\n\nconst readPageMetadata = (route: {\n\thooks?: { detail?: Record<string, unknown> };\n}) =>\n\tparseAbsoluteMobileBuildPageMetadata(\n\t\troute.hooks?.detail?.[ABSOLUTE_MOBILE_ROUTE_DETAIL]\n\t);\n\nconst resolveAssetPath = (buildDirectory: string, assetPath: string) => {\n\tconst resolvedBuildDirectory = resolve(buildDirectory);\n\tconst resolvedAsset = resolve(assetPath);\n\tif (resolvedAsset.startsWith(`${resolvedBuildDirectory}/`)) {\n\t\treturn resolvedAsset;\n\t}\n\n\treturn join(buildDirectory, assetPath.replace(/^\\/+/, ''));\n};\n\nconst pageFor = async (\n\tmetadata: AbsoluteMobileBuildPageMetadata,\n\tmanifest: Record<string, string>,\n\tbuildDirectory: string\n) => {\n\tconst assetPath = manifest[metadata.bundleKey];\n\tif (!assetPath) {\n\t\tthrow new TypeError(\n\t\t\t`Mobile page ${metadata.pageId} references missing manifest asset ${metadata.bundleKey}.`\n\t\t);\n\t}\n\tlet resolvedAssetPath = resolveAssetPath(buildDirectory, assetPath);\n\tif (metadata.framework === 'html' || metadata.framework === 'htmx') {\n\t\tconst source = await readFile(resolvedAssetPath, 'utf8');\n\t\tconst rewritten = rewriteStaticScriptPaths(source, manifest);\n\t\tconst documentHash = sha256(new TextEncoder().encode(rewritten));\n\t\tresolvedAssetPath = join(\n\t\t\tbuildDirectory,\n\t\t\t'.absolutejs',\n\t\t\t'mobile-pages',\n\t\t\t`${documentHash}.html`\n\t\t);\n\t\tawait mkdir(dirname(resolvedAssetPath), { recursive: true });\n\t\tawait writeFile(resolvedAssetPath, rewritten);\n\t}\n\tconst pageAssetKey = metadata.bundleKey.replace(/Index$/u, '');\n\tconst styleAssetPath = [\n\t\t`${pageAssetKey}BundledCSS`,\n\t\t`${pageAssetKey}CompiledCSS`\n\t]\n\t\t.map((key) => manifest[key])\n\t\t.find((path): path is string => typeof path === 'string');\n\tconst resolvedStylePath = styleAssetPath\n\t\t? resolveAssetPath(buildDirectory, styleAssetPath)\n\t\t: undefined;\n\tconst [bytes, styleBytes] = await Promise.all([\n\t\treadFile(resolvedAssetPath),\n\t\tresolvedStylePath ? readFile(resolvedStylePath) : undefined\n\t]);\n\tconst bundlePath = `/${relative(resolve(buildDirectory), resolvedAssetPath).replaceAll('\\\\', '/')}`;\n\tconst styleBundlePath = resolvedStylePath\n\t\t? `/${relative(resolve(buildDirectory), resolvedStylePath).replaceAll('\\\\', '/')}`\n\t\t: undefined;\n\n\treturn {\n\t\tbundleHash: sha256(bytes),\n\t\tbundlePath,\n\t\tcontract: metadata.contract,\n\t\tframework: metadata.framework,\n\t\tpageId: metadata.pageId,\n\t\tpropsSchemaHash: metadata.propsSchemaHash,\n\t\t...(styleBytes && styleBundlePath\n\t\t\t? {\n\t\t\t\t\tstyleBundleHash: sha256(styleBytes),\n\t\t\t\t\tstyleBundlePath\n\t\t\t\t}\n\t\t\t: {})\n\t} satisfies AbsoluteMobileCompatibilityPage;\n};\n\nexport const buildAbsoluteMobileCompatibilityRelease = async (\n\toptions: AbsoluteMobileBuildReleaseOptions\n): Promise<AbsoluteMobileStoredCompatibilityRelease> => {\n\tconst [captured, producerBytes] = await Promise.all([\n\t\tcaptureAbsoluteMobileRouteGraph(options.app),\n\t\treadFile(options.producerPath)\n\t]);\n\tif (captured.length === 0) {\n\t\tthrow new TypeError(\n\t\t\t'No instrumented AbsoluteJS mobile page routes were found in the finalized Elysia route graph.'\n\t\t);\n\t}\n\tconst metadataByPage = new Map<string, AbsoluteMobileBuildPageMetadata>();\n\tfor (const { metadata } of captured) {\n\t\tconst prior = metadataByPage.get(metadata.pageId);\n\t\tif (prior && JSON.stringify(prior) !== JSON.stringify(metadata)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Mobile page ${metadata.pageId} has inconsistent generated contracts.`\n\t\t\t);\n\t\t}\n\t\tmetadataByPage.set(metadata.pageId, metadata);\n\t}\n\tconst pages = await Promise.all(\n\t\t[...metadataByPage.values()].map((metadata) =>\n\t\t\tpageFor(metadata, options.manifest, options.buildDirectory)\n\t\t)\n\t);\n\tconst producerHash = sha256(producerBytes);\n\tconst appBuild = `ambuild_${sha256(\n\t\tnew TextEncoder().encode(\n\t\t\tJSON.stringify({\n\t\t\t\tpages: pages.map(\n\t\t\t\t\t({\n\t\t\t\t\t\tbundleHash,\n\t\t\t\t\t\tbundlePath,\n\t\t\t\t\t\tcontract,\n\t\t\t\t\t\tpageId,\n\t\t\t\t\t\tstyleBundleHash,\n\t\t\t\t\t\tstyleBundlePath\n\t\t\t\t\t}) => ({\n\t\t\t\t\t\tbundleHash,\n\t\t\t\t\t\tbundlePath,\n\t\t\t\t\t\tcontract,\n\t\t\t\t\t\tpageId,\n\t\t\t\t\t\t...(styleBundleHash && styleBundlePath\n\t\t\t\t\t\t\t? { styleBundleHash, styleBundlePath }\n\t\t\t\t\t\t\t: {})\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t\tproducerHash,\n\t\t\t\truntime: options.runtime\n\t\t\t})\n\t\t)\n\t)}`;\n\tconst priorAppIds = new Set(\n\t\t(options.previousArtifacts ?? []).map(({ appId }) => appId)\n\t);\n\tif (\n\t\tpriorAppIds.size > 1 ||\n\t\t(priorAppIds.size === 1 && !priorAppIds.has(options.appId))\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Previous mobile compatibility artifacts belong to another app.'\n\t\t);\n\t}\n\tconst unchanged = options.previousArtifacts?.find(\n\t\t(artifact) =>\n\t\t\tartifact.appBuild === appBuild &&\n\t\t\tartifact.runtime === options.runtime\n\t);\n\tconst generation =\n\t\tunchanged?.generation ??\n\t\tMath.max(\n\t\t\t0,\n\t\t\t...(options.previousArtifacts ?? []).map(\n\t\t\t\t(artifact) => artifact.generation\n\t\t\t)\n\t\t) + 1;\n\tconst artifact = createAbsoluteMobileCompatibilityArtifact({\n\t\tappBuild,\n\t\tappId: options.appId,\n\t\tgeneration,\n\t\tpages,\n\t\tproducer: {\n\t\t\tbundleHash: producerHash,\n\t\t\tbytes: producerBytes.byteLength,\n\t\t\texportName: options.producerExport ?? 'server',\n\t\t\tmodule: options.producerModule ?? 'producer.js'\n\t\t},\n\t\troutes: captured.map(({ route }) => route),\n\t\truntime: options.runtime\n\t});\n\n\treturn { artifact, producer: new Blob([producerBytes]) };\n};\nexport const captureAbsoluteMobileRouteGraph = async (\n\tapp: Pick<Elysia, 'compile' | 'modules' | 'routes'>\n) => {\n\tif (app.modules) await app.modules;\n\tapp.compile();\n\tconst captured = app.routes.flatMap((route) => {\n\t\tconst metadata = readPageMetadata(route);\n\t\tif (!metadata || (route.method !== 'GET' && route.method !== 'HEAD')) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tmetadata,\n\t\t\t\troute: {\n\t\t\t\t\tmethod: route.method === 'GET' ? 'GET' : 'HEAD',\n\t\t\t\t\tpageId: metadata.pageId,\n\t\t\t\t\tpattern: route.path\n\t\t\t\t} satisfies AbsoluteMobileCompatibilityRoute\n\t\t\t}\n\t\t];\n\t});\n\tconst identities = new Map<string, string>();\n\tfor (const { metadata, route } of captured) {\n\t\tconst prior = identities.get(`${route.method}:${route.pattern}`);\n\t\tif (prior && prior !== metadata.pageId) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Mobile route ${route.method} ${route.pattern} resolves to multiple pages.`\n\t\t\t);\n\t\t}\n\t\tidentities.set(`${route.method}:${route.pattern}`, metadata.pageId);\n\t}\n\n\treturn captured;\n};\n",
35
- "import {\n\tcp,\n\tcopyFile,\n\tmkdir,\n\tmkdtemp,\n\treadFile,\n\trename,\n\trm,\n\twriteFile\n} from 'node:fs/promises';\nimport { existsSync } from 'node:fs';\nimport { basename, dirname, extname, join, relative, resolve } from 'node:path';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\nimport type {\n\tAbsoluteMobileCompatibilityArtifact,\n\tAbsoluteMobileCompatibilityPage\n} from './releaseArtifact';\nimport { resolveAbsoluteMobileRoute } from './routeMatcher';\nimport {\n\tABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT,\n\ttype AbsoluteMobileClientManifest\n} from './transport';\nimport type { AbsoluteMobileAuthManifest } from './nativeAuth';\nimport type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';\nimport type { AbsoluteDeviceCapabilityPlan } from './deviceCapabilities';\n\nexport type AbsoluteCapacitorBundleOptions = {\n\tartifact: AbsoluteMobileCompatibilityArtifact;\n\tauth?: AbsoluteMobileAuthManifest;\n\tbuildDirectory: string;\n\tconfig: NormalizedAbsoluteMobileConfig;\n\tdeviceCapabilities: AbsoluteDeviceCapabilityPlan;\n\tprojectRoot: string;\n\tsync?: boolean;\n\tsyncSchema?: SyncLocalStoreSchemaBundle;\n};\n\nconst MANIFEST_FILE = 'absolute-mobile-manifest.json';\nconst BOOTSTRAP_FILE = 'absolute-mobile-bootstrap.js';\nconst INDEX_FILE = 'index.html';\nconst CLIENT_CSS_DEPENDENCY_PATTERN =\n\t/(?:@import\\s+(?:url\\(\\s*)?|url\\(\\s*)[\"']?((?:\\/|\\.\\.\\/|\\.\\/)[^\"')\\s]+)[\"']?\\s*\\)?/gu;\nconst CLIENT_MARKUP_DEPENDENCY_PATTERN =\n\t/<(?:script\\b[^>]*\\bsrc|link\\b[^>]*\\bhref|img\\b[^>]*\\bsrc|source\\b[^>]*\\bsrcset)\\s*=\\s*[\"']((?:\\/|\\.\\.\\/|\\.\\/)[^\"',\\s]+)/giu;\nconst CAPACITOR_CLIENT_FRAMEWORKS = new Set([\n\t'angular',\n\t'html',\n\t'htmx',\n\t'react',\n\t'svelte',\n\t'vue'\n]);\nconst CLIENT_ASSET_DIRECTORIES = ['assets', 'html', 'htmx', 'indexes'] as const;\n\nconst errorHasCode = (error: unknown, code: string) =>\n\ttypeof error === 'object' &&\n\terror !== null &&\n\tReflect.get(error, 'code') === code;\n\nconst shellBootstrapModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) =>\n\t\t\tjoin(import.meta.dir, `shellBootstrap.${extension}`)\n\t\t)\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile shell bootstrap module is missing.');\n};\n\nconst shellAuthModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellAuth.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile auth shell module is missing.');\n};\n\nconst shellSyncModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellSync.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile Sync shell module is missing.');\n};\n\nconst shellPushModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellPush.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile push shell module is missing.');\n};\n\nconst shellExpoDevicesModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) =>\n\t\t\tjoin(import.meta.dir, `shellExpoDevices.${extension}`)\n\t\t)\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS Expo device bridge module is missing.');\n};\n\nconst escapeHtml = (value: string) =>\n\tvalue\n\t\t.replaceAll('&', '&amp;')\n\t\t.replaceAll('<', '&lt;')\n\t\t.replaceAll('>', '&gt;')\n\t\t.replaceAll('\"', '&quot;');\n\nconst contentSecurityPolicy = (productionOrigin: string) => {\n\tconst backend = new URL(productionOrigin);\n\tconst socketOrigin = `${backend.protocol === 'https:' ? 'wss:' : 'ws:'}//${backend.host}`;\n\n\treturn [\n\t\t\"default-src 'self' data: blob: https:\",\n\t\t\"base-uri 'none'\",\n\t\t\"object-src 'none'\",\n\t\t\"script-src 'self'\",\n\t\t\"style-src 'self' 'unsafe-inline'\",\n\t\t`connect-src 'self' ${backend.origin} ${socketOrigin}`,\n\t\t\"form-action 'none'\"\n\t].join('; ');\n};\n\nconst indexHtml = (\n\tappName: string,\n\tproductionOrigin: string\n) => `<!doctype html>\n<html>\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\t\t<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,viewport-fit=cover\">\n\t\t<meta name=\"color-scheme\" content=\"light dark\">\n\t\t<meta http-equiv=\"Content-Security-Policy\" content=\"${escapeHtml(contentSecurityPolicy(productionOrigin))}\">\n\t\t<title>${escapeHtml(appName)}</title>\n\t</head>\n\t<body>\n\t\t<main id=\"absolute-mobile-status\" role=\"status\">Starting…</main>\n\t\t<script type=\"module\" src=\"./${BOOTSTRAP_FILE}\"></script>\n\t</body>\n</html>\n`;\n\nconst sourceAssetPath = (buildDirectory: string, bundlePath: string) => {\n\tconst root = resolve(buildDirectory);\n\tconst asset = resolve(root, bundlePath.replace(/^\\/+/, ''));\n\tif (!asset.startsWith(`${root}/`)) {\n\t\tthrow new TypeError('Mobile page bundle escaped the build directory.');\n\t}\n\n\treturn asset;\n};\n\nconst importEntryTarget = (entry: unknown) => {\n\tif (typeof entry === 'string') return entry;\n\tif (typeof entry === 'object' && entry !== null)\n\t\treturn Reflect.get(entry, 'import');\n\n\treturn undefined;\n};\n\nconst resolveProjectImport = async (projectRoot: string, specifier: string) => {\n\tconst segments = specifier.split('/');\n\tconst packageName = specifier.startsWith('@')\n\t\t? segments.slice(0, 2).join('/')\n\t\t: (segments[0] ?? '');\n\tconst subpath = specifier.slice(packageName.length);\n\tconst packageDirectory = join(\n\t\tresolve(projectRoot),\n\t\t'node_modules',\n\t\tpackageName\n\t);\n\tconst manifest: unknown = JSON.parse(\n\t\tawait readFile(join(packageDirectory, 'package.json'), 'utf8')\n\t);\n\tconst exports =\n\t\ttypeof manifest === 'object' && manifest !== null\n\t\t\t? Reflect.get(manifest, 'exports')\n\t\t\t: undefined;\n\tconst entry =\n\t\ttypeof exports === 'object' && exports !== null\n\t\t\t? Reflect.get(exports, subpath ? `.${subpath}` : '.')\n\t\t\t: undefined;\n\tconst target = importEntryTarget(entry);\n\tif (typeof target !== 'string' || !target.startsWith('./'))\n\t\tthrow new TypeError(`${specifier} does not publish an import entry.`);\n\tconst resolved = resolve(packageDirectory, target);\n\tif (!resolved.startsWith(`${resolve(packageDirectory)}/`))\n\t\tthrow new TypeError(`${specifier} has an unsafe import entry.`);\n\n\treturn resolved;\n};\n\nconst buildShellBootstrap = async (\n\tstaging: string,\n\tauth: boolean,\n\tsync: boolean,\n\tstoragePrefix: string,\n\tengine: 'capacitor' | 'expo',\n\tdeviceCapabilities: AbsoluteDeviceCapabilityPlan,\n\tprojectRoot: string\n) => {\n\tconst capacitor = engine !== 'expo';\n\tconst shellCapabilities = capacitor ? deviceCapabilities.capabilities : [];\n\tconst modulePath = shellBootstrapModule();\n\tconst authImport = auth\n\t\t? `import { createAbsoluteMobileShellAuth } from ${JSON.stringify(shellAuthModule())};\\n`\n\t\t: '';\n\tconst options = auth\n\t\t? `{ createAuth: createAbsoluteMobileShellAuth${sync ? ', installSync: installAbsoluteMobileShellSync' : ''} }`\n\t\t: '';\n\tconst syncImport = sync\n\t\t? `import { installAbsoluteMobileShellSync } from ${JSON.stringify(shellSyncModule())};\\n`\n\t\t: '';\n\tconst pushIndex = shellCapabilities.indexOf('pushNotifications');\n\tconst push = pushIndex !== -1;\n\tconst pushImport = push\n\t\t? `import { createAbsoluteMobileShellPush } from ${JSON.stringify(shellPushModule())};\\n`\n\t\t: '';\n\tconst capabilityImports = (\n\t\tawait Promise.all(\n\t\t\tshellCapabilities.map(async (name, index) => {\n\t\t\t\tconst provider = deviceCapabilities.providers[name];\n\t\t\t\tif (!provider)\n\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t`Missing device capability provider ${name}.`\n\t\t\t\t\t);\n\n\t\t\t\treturn `import { ${provider.factory} as absoluteDeviceCapability${index} } from ${JSON.stringify(await resolveProjectImport(projectRoot, provider.module))};`;\n\t\t\t})\n\t\t)\n\t).join('\\n');\n\tconst pushSetup = push\n\t\t? `const absoluteMobilePush = createAbsoluteMobileShellPush();\\nconst absoluteMobilePushCapability = absoluteDeviceCapability${pushIndex}(absoluteMobilePush.capabilityOptions);\\n`\n\t\t: '';\n\tconst capabilityOptions = shellCapabilities\n\t\t.map(\n\t\t\t(name, index) =>\n\t\t\t\t`${JSON.stringify(name)}: ${name === 'pushNotifications' ? 'absoluteMobilePushCapability' : `absoluteDeviceCapability${index}()`}`\n\t\t)\n\t\t.join(', ');\n\tconst entryPath = join(staging, '.absolute-mobile-entry.ts');\n\tconst baseAdapterModule = capacitor\n\t\t? await resolveProjectImport(\n\t\t\t\tprojectRoot,\n\t\t\t\t'@absolutejs/devices-capacitor'\n\t\t\t)\n\t\t: shellExpoDevicesModule();\n\tconst adapterImport = capacitor\n\t\t? `import { installCapacitorDeviceAdapterIfNative } from ${JSON.stringify(baseAdapterModule)};`\n\t\t: `import { createAbsoluteExpoBridgeFetch, installAbsoluteExpoWebDeviceAdapter } from ${JSON.stringify(baseAdapterModule)};`;\n\tconst adapterInstall = capacitor\n\t\t? `installCapacitorDeviceAdapterIfNative({ storagePrefix: ${JSON.stringify(storagePrefix)}${capabilityOptions ? `, ${capabilityOptions}` : ''} });`\n\t\t: 'installAbsoluteExpoWebDeviceAdapter();';\n\tlet shellOptions = '{ createFetch: createAbsoluteExpoBridgeFetch }';\n\tif (capacitor) shellOptions = options;\n\tif (push) {\n\t\tshellOptions = `{ createAuth: (config, options) => createAbsoluteMobileShellAuth(config, options), beforeSignOut: absoluteMobilePush.beforeSignOut, connectPush: (auth) => absoluteMobilePush.connect(auth, absoluteMobilePushCapability)${sync ? ', installSync: installAbsoluteMobileShellSync' : ''} }`;\n\t}\n\tawait writeFile(\n\t\tentryPath,\n\t\t`import { startAbsoluteMobileShell } from ${JSON.stringify(modulePath)};\\n${adapterImport}\\n${authImport}${syncImport}${pushImport}${capabilityImports}\\n${pushSetup}${adapterInstall}\\nvoid startAbsoluteMobileShell(${shellOptions});\\n`\n\t);\n\tconst build = await Bun.build({\n\t\tentrypoints: [entryPath],\n\t\tminify: true,\n\t\toutdir: staging,\n\t\ttarget: 'browser'\n\t});\n\tif (!build.success || build.outputs.length !== 1) {\n\t\tthrow new AggregateError(\n\t\t\tbuild.logs,\n\t\t\t'Failed to build the AbsoluteJS Capacitor shell.'\n\t\t);\n\t}\n\tawait rename(build.outputs[0]?.path ?? '', join(staging, BOOTSTRAP_FILE));\n\tawait rm(entryPath, { force: true });\n};\n\nconst removePreviousBundle = async (backup: string, moved: boolean) => {\n\tif (!moved) return;\n\tawait rm(backup, { force: true, recursive: true });\n};\n\nconst restorePreviousBundle = async (\n\tbackup: string,\n\tdestination: string,\n\tmoved: boolean\n) => {\n\tif (!moved) return;\n\tawait rename(backup, destination);\n};\n\nconst installBundle = async (staging: string, destination: string) => {\n\tconst backup = `${destination}.previous-${crypto.randomUUID()}`;\n\tlet movedPrevious = false;\n\ttry {\n\t\tawait rename(destination, backup);\n\t\tmovedPrevious = true;\n\t} catch (error) {\n\t\tif (!errorHasCode(error, 'ENOENT')) throw error;\n\t}\n\ttry {\n\t\tawait rename(staging, destination);\n\t\tawait removePreviousBundle(backup, movedPrevious);\n\t} catch (error) {\n\t\tawait restorePreviousBundle(backup, destination, movedPrevious);\n\n\t\tthrow error;\n\t}\n};\n\nconst copyClientPage = async (\n\tpage: AbsoluteMobileCompatibilityPage,\n\tbuildDirectory: string,\n\tstaging: string,\n\tcopiedDependencies: Set<string>\n) => {\n\tif (!CAPACITOR_CLIENT_FRAMEWORKS.has(page.framework)) {\n\t\tthrow new TypeError(\n\t\t\t`Capacitor client rendering does not yet support ${page.framework} page ${page.pageId}.`\n\t\t);\n\t}\n\tconst extension = extname(page.bundlePath) || '.js';\n\tconst localBundlePath = `./pages/${page.bundleHash}${extension}`;\n\tconst source = sourceAssetPath(buildDirectory, page.bundlePath);\n\tawait copyFile(source, join(staging, localBundlePath));\n\tawait copyAbsoluteClientDependencies(\n\t\tsource,\n\t\tbuildDirectory,\n\t\tstaging,\n\t\tcopiedDependencies\n\t);\n\n\tlet localStylePath: string | undefined;\n\tif (page.styleBundlePath && page.styleBundleHash) {\n\t\tconst styleExtension = extname(page.styleBundlePath) || '.css';\n\t\tlocalStylePath = `./styles/${page.styleBundleHash}${styleExtension}`;\n\t\tconst styleSource = sourceAssetPath(\n\t\t\tbuildDirectory,\n\t\t\tpage.styleBundlePath\n\t\t);\n\t\tawait mkdir(dirname(join(staging, localStylePath)), {\n\t\t\trecursive: true\n\t\t});\n\t\tawait copyFile(styleSource, join(staging, localStylePath));\n\t\tawait copyAbsoluteClientDependencies(\n\t\t\tstyleSource,\n\t\t\tbuildDirectory,\n\t\t\tstaging,\n\t\t\tcopiedDependencies\n\t\t);\n\t}\n\n\treturn {\n\t\t...page,\n\t\tlocalBundlePath,\n\t\t...(localStylePath ? { localStylePath } : {})\n\t};\n};\n\nconst absoluteClientImports = async (\n\tsourcePath: string,\n\tbuildDirectory: string\n) => {\n\tconst source = await readFile(sourcePath, 'utf8');\n\tconst extension = extname(sourcePath).toLowerCase();\n\tlet scriptLoader: 'js' | 'jsx' | 'ts' | 'tsx' | undefined;\n\tif (extension === '.tsx') scriptLoader = 'tsx';\n\telse if (extension === '.ts') scriptLoader = 'ts';\n\telse if (extension === '.jsx') scriptLoader = 'jsx';\n\telse if (['.js', '.mjs', '.cjs'].includes(extension)) scriptLoader = 'js';\n\tconst scriptImports = scriptLoader\n\t\t? new Bun.Transpiler({ loader: scriptLoader })\n\t\t\t\t.scanImports(source)\n\t\t\t\t.map(({ path }) => path)\n\t\t: [];\n\tconst cssImports =\n\t\textension === '.css'\n\t\t\t? [...source.matchAll(CLIENT_CSS_DEPENDENCY_PATTERN)].flatMap(\n\t\t\t\t\t(match) => match[1] ?? []\n\t\t\t\t)\n\t\t\t: [];\n\tconst markupImports =\n\t\textension === '.html'\n\t\t\t? [...source.matchAll(CLIENT_MARKUP_DEPENDENCY_PATTERN)].flatMap(\n\t\t\t\t\t(match) => match[1] ?? []\n\t\t\t\t)\n\t\t\t: [];\n\n\treturn [...scriptImports, ...cssImports, ...markupImports].flatMap(\n\t\t(specifier) => {\n\t\t\tif (!specifier) return [];\n\t\t\tif (\n\t\t\t\t!specifier.startsWith('/') &&\n\t\t\t\t!specifier.startsWith('./') &&\n\t\t\t\t!specifier.startsWith('../')\n\t\t\t) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst clean = specifier.split(/[?#]/u, 1)[0] ?? specifier;\n\t\t\tif (clean.startsWith('/')) return [clean];\n\t\t\tconst resolved = resolve(dirname(sourcePath), clean);\n\t\t\tconst root = resolve(buildDirectory);\n\t\t\tconst relativePath = relative(root, resolved).replaceAll('\\\\', '/');\n\t\t\tif (relativePath === '..' || relativePath.startsWith('../')) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`Mobile client dependency escaped the build directory: ${specifier}`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn [`/${relativePath}`];\n\t\t}\n\t);\n};\n\nconst copyAbsoluteClientDependency = async (\n\tspecifier: string,\n\tbuildDirectory: string,\n\tstaging: string,\n\tcopied: Set<string>\n) => {\n\tif (copied.has(specifier)) return;\n\tcopied.add(specifier);\n\tconst source = sourceAssetPath(buildDirectory, specifier);\n\tconst destination = join(staging, specifier.replace(/^\\/+/, ''));\n\tawait mkdir(dirname(destination), { recursive: true });\n\tawait copyFile(source, destination);\n\tawait copyAbsoluteClientDependencies(\n\t\tsource,\n\t\tbuildDirectory,\n\t\tstaging,\n\t\tcopied\n\t);\n};\n\nconst copyAbsoluteClientDependencies = async (\n\tsourcePath: string,\n\tbuildDirectory: string,\n\tstaging: string,\n\tcopied: Set<string>\n) => {\n\tconst dependencies = await absoluteClientImports(\n\t\tsourcePath,\n\t\tbuildDirectory\n\t);\n\tawait Promise.all(\n\t\tdependencies.map((specifier) =>\n\t\t\tcopyAbsoluteClientDependency(\n\t\t\t\tspecifier,\n\t\t\t\tbuildDirectory,\n\t\t\t\tstaging,\n\t\t\t\tcopied\n\t\t\t)\n\t\t)\n\t);\n};\n\nexport const materializeAbsoluteCapacitorWebBundle = async (\n\toptions: AbsoluteCapacitorBundleOptions\n) => {\n\tif (\n\t\t!resolveAbsoluteMobileRoute(\n\t\t\toptions.artifact.routes,\n\t\t\tnew URL(options.config.entry, 'https://absolute.invalid').pathname\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t`mobile.entry ${options.config.entry} is not a captured mobile page route.`\n\t\t);\n\t}\n\tconst destination = options.config.bundleDirectory;\n\tawait mkdir(dirname(destination), { recursive: true });\n\tconst staging = await mkdtemp(\n\t\tjoin(dirname(destination), `.${basename(destination)}.stage-`)\n\t);\n\ttry {\n\t\tconst pageDirectory = join(staging, 'pages');\n\t\tawait mkdir(pageDirectory, { recursive: true });\n\t\tawait Promise.all(\n\t\t\tCLIENT_ASSET_DIRECTORIES.map((directory) => ({\n\t\t\t\tdestination: join(staging, directory),\n\t\t\t\tsource: join(options.buildDirectory, directory)\n\t\t\t}))\n\t\t\t\t.filter(({ source }) => existsSync(source))\n\t\t\t\t.map(({ destination: assetDestination, source }) =>\n\t\t\t\t\tcp(source, assetDestination, { recursive: true })\n\t\t\t\t)\n\t\t);\n\t\tconst copiedDependencies = new Set<string>();\n\t\tconst pages = await Promise.all(\n\t\t\toptions.artifact.pages.map((page) =>\n\t\t\t\tcopyClientPage(\n\t\t\t\t\tpage,\n\t\t\t\t\toptions.buildDirectory,\n\t\t\t\t\tstaging,\n\t\t\t\t\tcopiedDependencies\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t\tconst manifest = {\n\t\t\tappBuild: options.artifact.appBuild,\n\t\t\t...(options.auth ? { auth: options.auth } : {}),\n\t\t\tappId: options.config.appId,\n\t\t\tappName: options.config.appName,\n\t\t\tdeepLinkHosts: options.config.deepLinkHosts,\n\t\t\tdeepLinkScheme: options.config.deepLinkScheme,\n\t\t\tdeviceCapabilities: options.deviceCapabilities.capabilities,\n\t\t\tentry: options.config.entry,\n\t\t\tformat: ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT,\n\t\t\tpages,\n\t\t\tproductionOrigin: options.config.productionOrigin,\n\t\t\troutes: options.artifact.routes,\n\t\t\truntime: options.artifact.runtime,\n\t\t\t...(options.sync\n\t\t\t\t? {\n\t\t\t\t\t\tsync: {\n\t\t\t\t\t\t\tbackground: {\n\t\t\t\t\t\t\t\tendpoint: new URL(\n\t\t\t\t\t\t\t\t\t'/__absolute/sync/background',\n\t\t\t\t\t\t\t\t\toptions.config.productionOrigin\n\t\t\t\t\t\t\t\t).href,\n\t\t\t\t\t\t\t\tintervalMinutes: 15\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsocketTickets: true as const,\n\t\t\t\t\t\t\tstorageSchema: options.syncSchema ?? {\n\t\t\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t\t\t{ id: '@absolutejs/app', version: 1 }\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} satisfies AbsoluteMobileClientManifest;\n\t\tawait Promise.all([\n\t\t\twriteFile(\n\t\t\t\tjoin(staging, MANIFEST_FILE),\n\t\t\t\t`${JSON.stringify(manifest, null, '\\t')}\\n`\n\t\t\t),\n\t\t\twriteFile(\n\t\t\t\tjoin(staging, INDEX_FILE),\n\t\t\t\tindexHtml(\n\t\t\t\t\toptions.config.appName,\n\t\t\t\t\toptions.config.productionOrigin\n\t\t\t\t)\n\t\t\t),\n\t\t\tbuildShellBootstrap(\n\t\t\t\tstaging,\n\t\t\t\toptions.auth !== undefined,\n\t\t\t\toptions.auth !== undefined && options.sync === true,\n\t\t\t\t`absolutejs.${options.auth?.clientId ?? options.config.appId}.`,\n\t\t\t\toptions.config.engine,\n\t\t\t\toptions.deviceCapabilities,\n\t\t\t\toptions.projectRoot\n\t\t\t)\n\t\t]);\n\t\tawait installBundle(staging, destination);\n\n\t\treturn manifest;\n\t} catch (error) {\n\t\tawait rm(staging, { force: true, recursive: true });\n\n\t\tthrow error;\n\t}\n};\n",
36
+ "import {\n\tcp,\n\tcopyFile,\n\tmkdir,\n\tmkdtemp,\n\treadFile,\n\trename,\n\trm,\n\twriteFile\n} from 'node:fs/promises';\nimport { existsSync } from 'node:fs';\nimport { basename, dirname, extname, join, relative, resolve } from 'node:path';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\nimport type {\n\tAbsoluteMobileCompatibilityArtifact,\n\tAbsoluteMobileCompatibilityPage\n} from './releaseArtifact';\nimport { resolveAbsoluteMobileRoute } from './routeMatcher';\nimport {\n\tABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT,\n\ttype AbsoluteMobileClientManifest\n} from './transport';\nimport type { AbsoluteMobileAuthManifest } from './nativeAuth';\nimport type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';\nimport type { AbsoluteDeviceCapabilityPlan } from './deviceCapabilities';\n\nexport type AbsoluteCapacitorBundleOptions = {\n\tartifact: AbsoluteMobileCompatibilityArtifact;\n\tauth?: AbsoluteMobileAuthManifest;\n\tbuildDirectory: string;\n\tconfig: NormalizedAbsoluteMobileConfig;\n\tdeviceCapabilities: AbsoluteDeviceCapabilityPlan;\n\tprojectRoot: string;\n\tsync?: boolean;\n\tsyncSchema?: SyncLocalStoreSchemaBundle;\n};\n\nconst MANIFEST_FILE = 'absolute-mobile-manifest.json';\nconst BOOTSTRAP_FILE = 'absolute-mobile-bootstrap.js';\nconst INDEX_FILE = 'index.html';\nconst CLIENT_CSS_DEPENDENCY_PATTERN =\n\t/(?:@import\\s+(?:url\\(\\s*)?|url\\(\\s*)[\"']?((?:\\/|\\.\\.\\/|\\.\\/)[^\"')\\s]+)[\"']?\\s*\\)?/gu;\nconst CLIENT_MARKUP_DEPENDENCY_PATTERN =\n\t/<(?:script\\b[^>]*\\bsrc|link\\b[^>]*\\bhref|img\\b[^>]*\\bsrc|source\\b[^>]*\\bsrcset)\\s*=\\s*[\"']((?:\\/|\\.\\.\\/|\\.\\/)[^\"',\\s]+)/giu;\nconst CAPACITOR_CLIENT_FRAMEWORKS = new Set([\n\t'angular',\n\t'html',\n\t'htmx',\n\t'react',\n\t'svelte',\n\t'vue'\n]);\nconst CLIENT_ASSET_DIRECTORIES = ['assets', 'html', 'htmx', 'indexes'] as const;\n\nconst errorHasCode = (error: unknown, code: string) =>\n\ttypeof error === 'object' &&\n\terror !== null &&\n\tReflect.get(error, 'code') === code;\n\nconst shellBootstrapModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) =>\n\t\t\tjoin(import.meta.dir, `shellBootstrap.${extension}`)\n\t\t)\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile shell bootstrap module is missing.');\n};\n\nconst shellAuthModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellAuth.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile auth shell module is missing.');\n};\n\nconst shellExpoAuthModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellExpoAuth.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS Expo auth bridge module is missing.');\n};\n\nconst shellSyncModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellSync.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile Sync shell module is missing.');\n};\n\nconst shellExpoSyncModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellExpoSync.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS Expo Sync bridge module is missing.');\n};\n\nconst shellPushModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellPush.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile push shell module is missing.');\n};\n\nconst shellExpoDevicesModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) =>\n\t\t\tjoin(import.meta.dir, `shellExpoDevices.${extension}`)\n\t\t)\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS Expo device bridge module is missing.');\n};\n\nconst escapeHtml = (value: string) =>\n\tvalue\n\t\t.replaceAll('&', '&amp;')\n\t\t.replaceAll('<', '&lt;')\n\t\t.replaceAll('>', '&gt;')\n\t\t.replaceAll('\"', '&quot;');\n\nconst contentSecurityPolicy = (productionOrigin: string) => {\n\tconst backend = new URL(productionOrigin);\n\tconst socketOrigin = `${backend.protocol === 'https:' ? 'wss:' : 'ws:'}//${backend.host}`;\n\n\treturn [\n\t\t\"default-src 'self' data: blob: https:\",\n\t\t\"base-uri 'none'\",\n\t\t\"object-src 'none'\",\n\t\t\"script-src 'self'\",\n\t\t\"style-src 'self' 'unsafe-inline'\",\n\t\t`connect-src 'self' ${backend.origin} ${socketOrigin}`,\n\t\t\"form-action 'none'\"\n\t].join('; ');\n};\n\nconst indexHtml = (\n\tappName: string,\n\tproductionOrigin: string\n) => `<!doctype html>\n<html>\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\t\t<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,viewport-fit=cover\">\n\t\t<meta name=\"color-scheme\" content=\"light dark\">\n\t\t<meta http-equiv=\"Content-Security-Policy\" content=\"${escapeHtml(contentSecurityPolicy(productionOrigin))}\">\n\t\t<title>${escapeHtml(appName)}</title>\n\t</head>\n\t<body>\n\t\t<main id=\"absolute-mobile-status\" role=\"status\">Starting…</main>\n\t\t<script type=\"module\" src=\"./${BOOTSTRAP_FILE}\"></script>\n\t</body>\n</html>\n`;\n\nconst sourceAssetPath = (buildDirectory: string, bundlePath: string) => {\n\tconst root = resolve(buildDirectory);\n\tconst asset = resolve(root, bundlePath.replace(/^\\/+/, ''));\n\tif (!asset.startsWith(`${root}/`)) {\n\t\tthrow new TypeError('Mobile page bundle escaped the build directory.');\n\t}\n\n\treturn asset;\n};\n\nconst importEntryTarget = (entry: unknown) => {\n\tif (typeof entry === 'string') return entry;\n\tif (typeof entry === 'object' && entry !== null)\n\t\treturn Reflect.get(entry, 'import');\n\n\treturn undefined;\n};\n\nconst resolveProjectImport = async (projectRoot: string, specifier: string) => {\n\tconst segments = specifier.split('/');\n\tconst packageName = specifier.startsWith('@')\n\t\t? segments.slice(0, 2).join('/')\n\t\t: (segments[0] ?? '');\n\tconst subpath = specifier.slice(packageName.length);\n\tconst packageDirectory = join(\n\t\tresolve(projectRoot),\n\t\t'node_modules',\n\t\tpackageName\n\t);\n\tconst manifest: unknown = JSON.parse(\n\t\tawait readFile(join(packageDirectory, 'package.json'), 'utf8')\n\t);\n\tconst exports =\n\t\ttypeof manifest === 'object' && manifest !== null\n\t\t\t? Reflect.get(manifest, 'exports')\n\t\t\t: undefined;\n\tconst entry =\n\t\ttypeof exports === 'object' && exports !== null\n\t\t\t? Reflect.get(exports, subpath ? `.${subpath}` : '.')\n\t\t\t: undefined;\n\tconst target = importEntryTarget(entry);\n\tif (typeof target !== 'string' || !target.startsWith('./'))\n\t\tthrow new TypeError(`${specifier} does not publish an import entry.`);\n\tconst resolved = resolve(packageDirectory, target);\n\tif (!resolved.startsWith(`${resolve(packageDirectory)}/`))\n\t\tthrow new TypeError(`${specifier} has an unsafe import entry.`);\n\n\treturn resolved;\n};\n\nconst buildShellBootstrap = async (\n\tstaging: string,\n\tauth: boolean,\n\tsync: boolean,\n\tstoragePrefix: string,\n\tengine: 'capacitor' | 'expo',\n\tdeviceCapabilities: AbsoluteDeviceCapabilityPlan,\n\tprojectRoot: string\n) => {\n\tconst capacitor = engine !== 'expo';\n\tconst shellCapabilities = capacitor ? deviceCapabilities.capabilities : [];\n\tconst modulePath = shellBootstrapModule();\n\tconst authFactory = capacitor\n\t\t? 'createAbsoluteMobileShellAuth'\n\t\t: 'createAbsoluteExpoShellAuth';\n\tconst syncFactory = capacitor\n\t\t? 'installAbsoluteMobileShellSync'\n\t\t: 'installAbsoluteExpoShellSync';\n\tconst authImport = auth\n\t\t? `import { ${authFactory} } from ${JSON.stringify(capacitor ? shellAuthModule() : shellExpoAuthModule())};\\n`\n\t\t: '';\n\tconst options = auth\n\t\t? `{ createAuth: ${authFactory}${sync ? `, installSync: ${syncFactory}` : ''} }`\n\t\t: '';\n\tconst syncImport = sync\n\t\t? `import { ${syncFactory} } from ${JSON.stringify(capacitor ? shellSyncModule() : shellExpoSyncModule())};\\n`\n\t\t: '';\n\tconst pushIndex = shellCapabilities.indexOf('pushNotifications');\n\tconst push = pushIndex !== -1;\n\tconst pushImport = push\n\t\t? `import { createAbsoluteMobileShellPush } from ${JSON.stringify(shellPushModule())};\\n`\n\t\t: '';\n\tconst capabilityImports = (\n\t\tawait Promise.all(\n\t\t\tshellCapabilities.map(async (name, index) => {\n\t\t\t\tconst provider = deviceCapabilities.providers[name];\n\t\t\t\tif (!provider)\n\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t`Missing device capability provider ${name}.`\n\t\t\t\t\t);\n\n\t\t\t\treturn `import { ${provider.factory} as absoluteDeviceCapability${index} } from ${JSON.stringify(await resolveProjectImport(projectRoot, provider.module))};`;\n\t\t\t})\n\t\t)\n\t).join('\\n');\n\tconst pushSetup = push\n\t\t? `const absoluteMobilePush = createAbsoluteMobileShellPush();\\nconst absoluteMobilePushCapability = absoluteDeviceCapability${pushIndex}(absoluteMobilePush.capabilityOptions);\\n`\n\t\t: '';\n\tconst capabilityOptions = shellCapabilities\n\t\t.map(\n\t\t\t(name, index) =>\n\t\t\t\t`${JSON.stringify(name)}: ${name === 'pushNotifications' ? 'absoluteMobilePushCapability' : `absoluteDeviceCapability${index}()`}`\n\t\t)\n\t\t.join(', ');\n\tconst entryPath = join(staging, '.absolute-mobile-entry.ts');\n\tconst baseAdapterModule = capacitor\n\t\t? await resolveProjectImport(\n\t\t\t\tprojectRoot,\n\t\t\t\t'@absolutejs/devices-capacitor'\n\t\t\t)\n\t\t: shellExpoDevicesModule();\n\tconst adapterImport = capacitor\n\t\t? `import { installCapacitorDeviceAdapterIfNative } from ${JSON.stringify(baseAdapterModule)};`\n\t\t: `import { createAbsoluteExpoBridgeFetch, installAbsoluteExpoWebDeviceAdapter } from ${JSON.stringify(baseAdapterModule)};`;\n\tconst adapterInstall = capacitor\n\t\t? `installCapacitorDeviceAdapterIfNative({ storagePrefix: ${JSON.stringify(storagePrefix)}${capabilityOptions ? `, ${capabilityOptions}` : ''} });`\n\t\t: 'installAbsoluteExpoWebDeviceAdapter();';\n\tlet shellOptions = auth\n\t\t? options\n\t\t: '{ createFetch: createAbsoluteExpoBridgeFetch }';\n\tif (capacitor) shellOptions = options;\n\tif (push) {\n\t\tshellOptions = `{ createAuth: (config, options) => createAbsoluteMobileShellAuth(config, options), beforeSignOut: absoluteMobilePush.beforeSignOut, connectPush: (auth) => absoluteMobilePush.connect(auth, absoluteMobilePushCapability)${sync ? `, installSync: ${syncFactory}` : ''} }`;\n\t}\n\tawait writeFile(\n\t\tentryPath,\n\t\t`import { startAbsoluteMobileShell } from ${JSON.stringify(modulePath)};\\n${adapterImport}\\n${authImport}${syncImport}${pushImport}${capabilityImports}\\n${pushSetup}${adapterInstall}\\nvoid startAbsoluteMobileShell(${shellOptions});\\n`\n\t);\n\tconst build = await Bun.build({\n\t\tentrypoints: [entryPath],\n\t\tminify: true,\n\t\toutdir: staging,\n\t\ttarget: 'browser'\n\t});\n\tif (!build.success || build.outputs.length !== 1) {\n\t\tthrow new AggregateError(\n\t\t\tbuild.logs,\n\t\t\t'Failed to build the AbsoluteJS Capacitor shell.'\n\t\t);\n\t}\n\tawait rename(build.outputs[0]?.path ?? '', join(staging, BOOTSTRAP_FILE));\n\tawait rm(entryPath, { force: true });\n};\n\nconst removePreviousBundle = async (backup: string, moved: boolean) => {\n\tif (!moved) return;\n\tawait rm(backup, { force: true, recursive: true });\n};\n\nconst restorePreviousBundle = async (\n\tbackup: string,\n\tdestination: string,\n\tmoved: boolean\n) => {\n\tif (!moved) return;\n\tawait rename(backup, destination);\n};\n\nconst installBundle = async (staging: string, destination: string) => {\n\tconst backup = `${destination}.previous-${crypto.randomUUID()}`;\n\tlet movedPrevious = false;\n\ttry {\n\t\tawait rename(destination, backup);\n\t\tmovedPrevious = true;\n\t} catch (error) {\n\t\tif (!errorHasCode(error, 'ENOENT')) throw error;\n\t}\n\ttry {\n\t\tawait rename(staging, destination);\n\t\tawait removePreviousBundle(backup, movedPrevious);\n\t} catch (error) {\n\t\tawait restorePreviousBundle(backup, destination, movedPrevious);\n\n\t\tthrow error;\n\t}\n};\n\nconst copyClientPage = async (\n\tpage: AbsoluteMobileCompatibilityPage,\n\tbuildDirectory: string,\n\tstaging: string,\n\tcopiedDependencies: Set<string>\n) => {\n\tif (!CAPACITOR_CLIENT_FRAMEWORKS.has(page.framework)) {\n\t\tthrow new TypeError(\n\t\t\t`Capacitor client rendering does not yet support ${page.framework} page ${page.pageId}.`\n\t\t);\n\t}\n\tconst extension = extname(page.bundlePath) || '.js';\n\tconst localBundlePath = `./pages/${page.bundleHash}${extension}`;\n\tconst source = sourceAssetPath(buildDirectory, page.bundlePath);\n\tawait copyFile(source, join(staging, localBundlePath));\n\tawait copyAbsoluteClientDependencies(\n\t\tsource,\n\t\tbuildDirectory,\n\t\tstaging,\n\t\tcopiedDependencies\n\t);\n\n\tlet localStylePath: string | undefined;\n\tif (page.styleBundlePath && page.styleBundleHash) {\n\t\tconst styleExtension = extname(page.styleBundlePath) || '.css';\n\t\tlocalStylePath = `./styles/${page.styleBundleHash}${styleExtension}`;\n\t\tconst styleSource = sourceAssetPath(\n\t\t\tbuildDirectory,\n\t\t\tpage.styleBundlePath\n\t\t);\n\t\tawait mkdir(dirname(join(staging, localStylePath)), {\n\t\t\trecursive: true\n\t\t});\n\t\tawait copyFile(styleSource, join(staging, localStylePath));\n\t\tawait copyAbsoluteClientDependencies(\n\t\t\tstyleSource,\n\t\t\tbuildDirectory,\n\t\t\tstaging,\n\t\t\tcopiedDependencies\n\t\t);\n\t}\n\n\treturn {\n\t\t...page,\n\t\tlocalBundlePath,\n\t\t...(localStylePath ? { localStylePath } : {})\n\t};\n};\n\nconst absoluteClientImports = async (\n\tsourcePath: string,\n\tbuildDirectory: string\n) => {\n\tconst source = await readFile(sourcePath, 'utf8');\n\tconst extension = extname(sourcePath).toLowerCase();\n\tlet scriptLoader: 'js' | 'jsx' | 'ts' | 'tsx' | undefined;\n\tif (extension === '.tsx') scriptLoader = 'tsx';\n\telse if (extension === '.ts') scriptLoader = 'ts';\n\telse if (extension === '.jsx') scriptLoader = 'jsx';\n\telse if (['.js', '.mjs', '.cjs'].includes(extension)) scriptLoader = 'js';\n\tconst scriptImports = scriptLoader\n\t\t? new Bun.Transpiler({ loader: scriptLoader })\n\t\t\t\t.scanImports(source)\n\t\t\t\t.map(({ path }) => path)\n\t\t: [];\n\tconst cssImports =\n\t\textension === '.css'\n\t\t\t? [...source.matchAll(CLIENT_CSS_DEPENDENCY_PATTERN)].flatMap(\n\t\t\t\t\t(match) => match[1] ?? []\n\t\t\t\t)\n\t\t\t: [];\n\tconst markupImports =\n\t\textension === '.html'\n\t\t\t? [...source.matchAll(CLIENT_MARKUP_DEPENDENCY_PATTERN)].flatMap(\n\t\t\t\t\t(match) => match[1] ?? []\n\t\t\t\t)\n\t\t\t: [];\n\n\treturn [...scriptImports, ...cssImports, ...markupImports].flatMap(\n\t\t(specifier) => {\n\t\t\tif (!specifier) return [];\n\t\t\tif (\n\t\t\t\t!specifier.startsWith('/') &&\n\t\t\t\t!specifier.startsWith('./') &&\n\t\t\t\t!specifier.startsWith('../')\n\t\t\t) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst clean = specifier.split(/[?#]/u, 1)[0] ?? specifier;\n\t\t\tif (clean.startsWith('/')) return [clean];\n\t\t\tconst resolved = resolve(dirname(sourcePath), clean);\n\t\t\tconst root = resolve(buildDirectory);\n\t\t\tconst relativePath = relative(root, resolved).replaceAll('\\\\', '/');\n\t\t\tif (relativePath === '..' || relativePath.startsWith('../')) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`Mobile client dependency escaped the build directory: ${specifier}`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn [`/${relativePath}`];\n\t\t}\n\t);\n};\n\nconst copyAbsoluteClientDependency = async (\n\tspecifier: string,\n\tbuildDirectory: string,\n\tstaging: string,\n\tcopied: Set<string>\n) => {\n\tif (copied.has(specifier)) return;\n\tcopied.add(specifier);\n\tconst source = sourceAssetPath(buildDirectory, specifier);\n\tconst destination = join(staging, specifier.replace(/^\\/+/, ''));\n\tawait mkdir(dirname(destination), { recursive: true });\n\tawait copyFile(source, destination);\n\tawait copyAbsoluteClientDependencies(\n\t\tsource,\n\t\tbuildDirectory,\n\t\tstaging,\n\t\tcopied\n\t);\n};\n\nconst copyAbsoluteClientDependencies = async (\n\tsourcePath: string,\n\tbuildDirectory: string,\n\tstaging: string,\n\tcopied: Set<string>\n) => {\n\tconst dependencies = await absoluteClientImports(\n\t\tsourcePath,\n\t\tbuildDirectory\n\t);\n\tawait Promise.all(\n\t\tdependencies.map((specifier) =>\n\t\t\tcopyAbsoluteClientDependency(\n\t\t\t\tspecifier,\n\t\t\t\tbuildDirectory,\n\t\t\t\tstaging,\n\t\t\t\tcopied\n\t\t\t)\n\t\t)\n\t);\n};\n\nexport const materializeAbsoluteCapacitorWebBundle = async (\n\toptions: AbsoluteCapacitorBundleOptions\n) => {\n\tif (\n\t\t!resolveAbsoluteMobileRoute(\n\t\t\toptions.artifact.routes,\n\t\t\tnew URL(options.config.entry, 'https://absolute.invalid').pathname\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t`mobile.entry ${options.config.entry} is not a captured mobile page route.`\n\t\t);\n\t}\n\tconst destination = options.config.bundleDirectory;\n\tawait mkdir(dirname(destination), { recursive: true });\n\tconst staging = await mkdtemp(\n\t\tjoin(dirname(destination), `.${basename(destination)}.stage-`)\n\t);\n\ttry {\n\t\tconst pageDirectory = join(staging, 'pages');\n\t\tawait mkdir(pageDirectory, { recursive: true });\n\t\tawait Promise.all(\n\t\t\tCLIENT_ASSET_DIRECTORIES.map((directory) => ({\n\t\t\t\tdestination: join(staging, directory),\n\t\t\t\tsource: join(options.buildDirectory, directory)\n\t\t\t}))\n\t\t\t\t.filter(({ source }) => existsSync(source))\n\t\t\t\t.map(({ destination: assetDestination, source }) =>\n\t\t\t\t\tcp(source, assetDestination, { recursive: true })\n\t\t\t\t)\n\t\t);\n\t\tconst copiedDependencies = new Set<string>();\n\t\tconst pages = await Promise.all(\n\t\t\toptions.artifact.pages.map((page) =>\n\t\t\t\tcopyClientPage(\n\t\t\t\t\tpage,\n\t\t\t\t\toptions.buildDirectory,\n\t\t\t\t\tstaging,\n\t\t\t\t\tcopiedDependencies\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t\tconst manifest = {\n\t\t\tappBuild: options.artifact.appBuild,\n\t\t\t...(options.auth ? { auth: options.auth } : {}),\n\t\t\tappId: options.config.appId,\n\t\t\tappName: options.config.appName,\n\t\t\tdeepLinkHosts: options.config.deepLinkHosts,\n\t\t\tdeepLinkScheme: options.config.deepLinkScheme,\n\t\t\tdeviceCapabilities: options.deviceCapabilities.capabilities,\n\t\t\tentry: options.config.entry,\n\t\t\tformat: ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT,\n\t\t\tpages,\n\t\t\tproductionOrigin: options.config.productionOrigin,\n\t\t\troutes: options.artifact.routes,\n\t\t\truntime: options.artifact.runtime,\n\t\t\t...(options.sync\n\t\t\t\t? {\n\t\t\t\t\t\tsync: {\n\t\t\t\t\t\t\tbackground: {\n\t\t\t\t\t\t\t\tendpoint: new URL(\n\t\t\t\t\t\t\t\t\t'/__absolute/sync/background',\n\t\t\t\t\t\t\t\t\toptions.config.productionOrigin\n\t\t\t\t\t\t\t\t).href,\n\t\t\t\t\t\t\t\tintervalMinutes: 15\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsocketTickets: true as const,\n\t\t\t\t\t\t\tstorageSchema: options.syncSchema ?? {\n\t\t\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t\t\t{ id: '@absolutejs/app', version: 1 }\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} satisfies AbsoluteMobileClientManifest;\n\t\tawait Promise.all([\n\t\t\twriteFile(\n\t\t\t\tjoin(staging, MANIFEST_FILE),\n\t\t\t\t`${JSON.stringify(manifest, null, '\\t')}\\n`\n\t\t\t),\n\t\t\twriteFile(\n\t\t\t\tjoin(staging, INDEX_FILE),\n\t\t\t\tindexHtml(\n\t\t\t\t\toptions.config.appName,\n\t\t\t\t\toptions.config.productionOrigin\n\t\t\t\t)\n\t\t\t),\n\t\t\tbuildShellBootstrap(\n\t\t\t\tstaging,\n\t\t\t\toptions.auth !== undefined,\n\t\t\t\toptions.auth !== undefined && options.sync === true,\n\t\t\t\t`absolutejs.${options.auth?.clientId ?? options.config.appId}.`,\n\t\t\t\toptions.config.engine,\n\t\t\t\toptions.deviceCapabilities,\n\t\t\t\toptions.projectRoot\n\t\t\t)\n\t\t]);\n\t\tawait installBundle(staging, destination);\n\n\t\treturn manifest;\n\t} catch (error) {\n\t\tawait rm(staging, { force: true, recursive: true });\n\n\t\tthrow error;\n\t}\n};\n",
36
37
  "import type { AbsoluteMobileCompatibilityRoute } from './releaseArtifact';\n\nconst REGEXP_SPECIAL_CHARACTERS = /[.*+?^${}()|[\\]\\\\]/g;\n\nconst routeSegmentPattern = (segment: string) => {\n\tif (segment === '*') return '.*';\n\tif (segment.startsWith(':') && segment.endsWith('?')) return '[^/]*';\n\tif (segment.startsWith(':')) return '[^/]+';\n\n\treturn segment.replace(REGEXP_SPECIAL_CHARACTERS, '\\\\$&');\n};\n\nexport const matchesAbsoluteMobileRoutePattern = (\n\tpattern: string,\n\tpathname: string\n) => {\n\tconst expression = pattern.split('/').map(routeSegmentPattern).join('/');\n\n\treturn new RegExp(`^${expression}/?$`).test(pathname);\n};\n\nexport const resolveAbsoluteMobileRoute = (\n\troutes: readonly AbsoluteMobileCompatibilityRoute[],\n\tpathname: string,\n\tmethod: 'GET' | 'HEAD' = 'GET'\n) =>\n\troutes.find(\n\t\t(route) =>\n\t\t\troute.method === method &&\n\t\t\tmatchesAbsoluteMobileRoutePattern(route.pattern, pathname)\n\t);\n",
37
38
  "import type { AbsoluteMobileCompatibilityPage } from './releaseArtifact';\n\nexport type AbsoluteMobileProducerContext = {\n\tpage: AbsoluteMobileCompatibilityPage;\n\treleaseId: string;\n};\n\nexport const ABSOLUTE_MOBILE_PRODUCER_STORAGE_KEY = Symbol.for(\n\t'absolutejs.mobileProducerAsyncLocalStorage'\n);\n\nconst frameworks = new Set<string>([\n\t'angular',\n\t'ember',\n\t'html',\n\t'htmx',\n\t'react',\n\t'svelte',\n\t'vue'\n]);\n\nconst isCompatibilityPage = (\n\tvalue: unknown\n): value is AbsoluteMobileCompatibilityPage =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t'bundleHash' in value &&\n\ttypeof value.bundleHash === 'string' &&\n\t'contract' in value &&\n\ttypeof value.contract === 'string' &&\n\t'framework' in value &&\n\ttypeof value.framework === 'string' &&\n\tframeworks.has(value.framework) &&\n\t'pageId' in value &&\n\ttypeof value.pageId === 'string' &&\n\t'propsSchemaHash' in value &&\n\ttypeof value.propsSchemaHash === 'string';\n\nexport const getCurrentAbsoluteMobileProducerContext = () => {\n\tconst value: unknown = Reflect.get(\n\t\tglobalThis,\n\t\tABSOLUTE_MOBILE_PRODUCER_STORAGE_KEY\n\t);\n\tif (\n\t\ttypeof value !== 'object' ||\n\t\tvalue === null ||\n\t\t!('getStore' in value) ||\n\t\ttypeof value.getStore !== 'function'\n\t) {\n\t\treturn undefined;\n\t}\n\tconst context: unknown = value.getStore();\n\tif (\n\t\ttypeof context !== 'object' ||\n\t\tcontext === null ||\n\t\t!('page' in context) ||\n\t\t!isCompatibilityPage(context.page) ||\n\t\t!('releaseId' in context) ||\n\t\ttypeof context.releaseId !== 'string'\n\t) {\n\t\treturn undefined;\n\t}\n\n\treturn { page: context.page, releaseId: context.releaseId };\n};\n",
38
39
  "import {\n\tgetCurrentAbsoluteMobileProducerContext,\n\ttype AbsoluteMobileProducerContext\n} from './producerContextState';\n\nexport const ABSOLUTE_MOBILE_PAGE_MEDIA_TYPE =\n\t'application/vnd.absolute.page+json';\nexport const ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION = 1 as const;\nconst BAD_REQUEST_STATUS = 400;\nconst OK_STATUS = 200;\nconst SERVER_ERROR_STATUS = 500;\nconst UPGRADE_REQUIRED_STATUS = 426;\n\nexport const MOBILE_PAGE_REQUEST_HEADERS = {\n\tappBuild: 'x-absolute-mobile-app-build',\n\tpageBundle: 'x-absolute-mobile-page-bundle',\n\tpageContracts: 'x-absolute-mobile-page-contracts',\n\tpageId: 'x-absolute-mobile-page-id',\n\tprotocol: 'x-absolute-mobile-protocol',\n\truntime: 'x-absolute-mobile-runtime'\n} as const;\n\nexport type AbsoluteMobilePageFramework =\n\t| 'angular'\n\t| 'ember'\n\t| 'html'\n\t| 'htmx'\n\t| 'react'\n\t| 'svelte'\n\t| 'vue';\n\nexport type AbsoluteMobilePageClient = {\n\tappBuild: string;\n\tpageBundle: string;\n\tpageContracts: string[];\n\tpageId: string;\n\tprotocol: number;\n\truntime: string;\n};\n\nexport type AbsoluteMobilePageRepresentation<Props> = {\n\t/** Stable data contract understood by an embedded page bundle. */\n\tcontract: string;\n\t/**\n\t * Adapts the current route props to an older compatible contract. The\n\t * current representation normally uses the identity function.\n\t */\n\tmapProps: (props: Props) => Record<string, unknown>;\n};\n\nexport type AbsoluteMobilePageCompatibility<Props> = {\n\tframework: AbsoluteMobilePageFramework;\n\tpageId: string;\n\t/** Newest representation first, followed by retained compatibility forms. */\n\trepresentations: readonly AbsoluteMobilePageRepresentation<Props>[];\n\t/** Current runtime plus every retained compatible runtime generation. */\n\truntimes: readonly string[];\n};\n\nexport type AbsoluteMobilePageResult = {\n\tkind: 'page';\n\tcontract: string;\n\tframework: AbsoluteMobilePageFramework;\n\tpageId: string;\n\tprops: Record<string, unknown>;\n\tstatus: number;\n};\n\nexport type AbsoluteMobileUpgradeReason =\n\t| 'app-release'\n\t| 'page-contract'\n\t| 'protocol'\n\t| 'runtime';\n\nexport type AbsoluteMobileUpgradeRequiredResult = {\n\tkind: 'upgrade-required';\n\treason: AbsoluteMobileUpgradeReason;\n\tpageId: string;\n\tsupportedContracts?: string[];\n\tsupportedRuntimes?: string[];\n};\n\nexport type AbsoluteMobileInvalidRequestResult = {\n\tkind: 'invalid-request';\n\tmessage: string;\n};\n\nexport type AbsoluteMobilePageErrorResult = {\n\tcode: 'representation-failed';\n\tkind: 'error';\n\tpageId: string;\n\tstatus: typeof SERVER_ERROR_STATUS;\n};\n\nexport type AbsoluteMobilePageEnvelope = {\n\tprotocol: typeof ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION;\n\tresponse:\n\t\t| AbsoluteMobilePageErrorResult\n\t\t| AbsoluteMobileInvalidRequestResult\n\t\t| AbsoluteMobilePageResult\n\t\t| AbsoluteMobileUpgradeRequiredResult;\n};\n\ntype ParsedMobilePageRequest =\n\t| { kind: 'not-mobile' }\n\t| { kind: 'invalid'; message: string }\n\t| { kind: 'mobile'; client: AbsoluteMobilePageClient };\n\ntype FinalizeAbsoluteMobilePageInput<Props> = {\n\tcompatibility: AbsoluteMobilePageCompatibility<Props>;\n\tprops: Props;\n\trequest: Request | undefined;\n\tstatus?: number;\n};\n\nconst parseMediaType = (value: string) =>\n\tvalue.split(';', 1)[0]?.trim().toLowerCase();\n\nexport const acceptsAbsoluteMobilePage = (request: Request | undefined) => {\n\tif (!request) return false;\n\n\treturn (request.headers.get('accept') ?? '')\n\t\t.split(',')\n\t\t.some(\n\t\t\t(value) => parseMediaType(value) === ABSOLUTE_MOBILE_PAGE_MEDIA_TYPE\n\t\t);\n};\n\nconst readRequiredHeader = (request: Request, name: string) => {\n\tconst value = request.headers.get(name)?.trim();\n\n\treturn value ? value : undefined;\n};\n\nexport const parseAbsoluteMobilePageRequest = (\n\trequest: Request | undefined\n): ParsedMobilePageRequest => {\n\tif (!request || !acceptsAbsoluteMobilePage(request)) {\n\t\treturn { kind: 'not-mobile' };\n\t}\n\n\tconst protocolValue = readRequiredHeader(\n\t\trequest,\n\t\tMOBILE_PAGE_REQUEST_HEADERS.protocol\n\t);\n\tconst runtime = readRequiredHeader(\n\t\trequest,\n\t\tMOBILE_PAGE_REQUEST_HEADERS.runtime\n\t);\n\tconst appBuild = readRequiredHeader(\n\t\trequest,\n\t\tMOBILE_PAGE_REQUEST_HEADERS.appBuild\n\t);\n\tconst pageBundle = readRequiredHeader(\n\t\trequest,\n\t\tMOBILE_PAGE_REQUEST_HEADERS.pageBundle\n\t);\n\tconst pageContractsValue = readRequiredHeader(\n\t\trequest,\n\t\tMOBILE_PAGE_REQUEST_HEADERS.pageContracts\n\t);\n\tconst pageId = readRequiredHeader(\n\t\trequest,\n\t\tMOBILE_PAGE_REQUEST_HEADERS.pageId\n\t);\n\n\tif (!protocolValue || !/^\\d+$/.test(protocolValue)) {\n\t\treturn {\n\t\t\tkind: 'invalid',\n\t\t\tmessage: `Missing or invalid ${MOBILE_PAGE_REQUEST_HEADERS.protocol} header.`\n\t\t};\n\t}\n\tif (!runtime) {\n\t\treturn {\n\t\t\tkind: 'invalid',\n\t\t\tmessage: `Missing ${MOBILE_PAGE_REQUEST_HEADERS.runtime} header.`\n\t\t};\n\t}\n\tif (!appBuild) {\n\t\treturn {\n\t\t\tkind: 'invalid',\n\t\t\tmessage: `Missing ${MOBILE_PAGE_REQUEST_HEADERS.appBuild} header.`\n\t\t};\n\t}\n\tif (!pageBundle) {\n\t\treturn {\n\t\t\tkind: 'invalid',\n\t\t\tmessage: `Missing ${MOBILE_PAGE_REQUEST_HEADERS.pageBundle} header.`\n\t\t};\n\t}\n\tif (!pageContractsValue) {\n\t\treturn {\n\t\t\tkind: 'invalid',\n\t\t\tmessage: `Missing ${MOBILE_PAGE_REQUEST_HEADERS.pageContracts} header.`\n\t\t};\n\t}\n\tif (!pageId) {\n\t\treturn {\n\t\t\tkind: 'invalid',\n\t\t\tmessage: `Missing ${MOBILE_PAGE_REQUEST_HEADERS.pageId} header.`\n\t\t};\n\t}\n\n\tconst pageContracts = [\n\t\t...new Set(\n\t\t\tpageContractsValue\n\t\t\t\t.split(',')\n\t\t\t\t.map((value) => value.trim())\n\t\t\t\t.filter(Boolean)\n\t\t)\n\t];\n\tif (pageContracts.length === 0) {\n\t\treturn {\n\t\t\tkind: 'invalid',\n\t\t\tmessage: `${MOBILE_PAGE_REQUEST_HEADERS.pageContracts} must contain at least one contract.`\n\t\t};\n\t}\n\n\treturn {\n\t\tclient: {\n\t\t\tappBuild,\n\t\t\tpageBundle,\n\t\t\tpageContracts,\n\t\t\tpageId,\n\t\t\tprotocol: Number(protocolValue),\n\t\t\truntime\n\t\t},\n\t\tkind: 'mobile'\n\t};\n};\n\nconst responseHeaders = () => {\n\tconst headers = new Headers({\n\t\t'cache-control': 'no-store',\n\t\t'content-type': `${ABSOLUTE_MOBILE_PAGE_MEDIA_TYPE}; version=${ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION}`\n\t});\n\theaderVaryValues.forEach((value) => headers.append('vary', value));\n\n\treturn headers;\n};\n\nconst headerVaryValues = [\n\t'Accept',\n\tMOBILE_PAGE_REQUEST_HEADERS.protocol,\n\tMOBILE_PAGE_REQUEST_HEADERS.runtime,\n\tMOBILE_PAGE_REQUEST_HEADERS.appBuild,\n\tMOBILE_PAGE_REQUEST_HEADERS.pageBundle,\n\tMOBILE_PAGE_REQUEST_HEADERS.pageContracts,\n\tMOBILE_PAGE_REQUEST_HEADERS.pageId\n];\n\nconst envelopeResponse = (\n\tresponse: AbsoluteMobilePageEnvelope['response'],\n\tstatus: number\n) =>\n\tnew Response(\n\t\tJSON.stringify({\n\t\t\tprotocol: ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION,\n\t\t\tresponse\n\t\t} satisfies AbsoluteMobilePageEnvelope),\n\t\t{ headers: responseHeaders(), status }\n\t);\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst normalizeJsonValue = (value: Record<string, unknown>) => {\n\tconst serialized = JSON.stringify(value);\n\tif (serialized === undefined) {\n\t\tthrow new TypeError('Mobile page props must be JSON-serializable.');\n\t}\n\n\tconst parsed: unknown = JSON.parse(serialized);\n\tif (!isRecord(parsed)) {\n\t\tthrow new TypeError('Mobile page props must serialize to an object.');\n\t}\n\n\treturn parsed;\n};\n\nconst finalizeArchivedMobilePage = <Props>(\n\tcontext: AbsoluteMobileProducerContext,\n\tinput: FinalizeAbsoluteMobilePageInput<Props>\n) => {\n\tconst { page } = context;\n\tif (\n\t\tpage.pageId !== input.compatibility.pageId ||\n\t\tpage.framework !== input.compatibility.framework\n\t) {\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tkind: 'invalid-request',\n\t\t\t\tmessage:\n\t\t\t\t\t'Archived producer page identity does not match its release artifact.'\n\t\t\t},\n\t\t\tBAD_REQUEST_STATUS\n\t\t);\n\t}\n\n\ttry {\n\t\tconst [currentRepresentation] = input.compatibility.representations;\n\t\tif (!currentRepresentation) {\n\t\t\tthrow new TypeError('Mobile page has no current representation.');\n\t\t}\n\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tcontract: page.contract,\n\t\t\t\tframework: page.framework,\n\t\t\t\tkind: 'page',\n\t\t\t\tpageId: page.pageId,\n\t\t\t\tprops: normalizeJsonValue(\n\t\t\t\t\tcurrentRepresentation.mapProps(input.props)\n\t\t\t\t),\n\t\t\t\tstatus: input.status ?? OK_STATUS\n\t\t\t},\n\t\t\tinput.status ?? OK_STATUS\n\t\t);\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[Mobile] Archived producer ${context.releaseId} failed for ${page.pageId}:`,\n\t\t\terror\n\t\t);\n\n\t\treturn createAbsoluteMobilePageErrorResponse(page.pageId);\n\t}\n};\n\nexport const createAbsoluteMobileInvalidRequestResponse = (message: string) =>\n\tenvelopeResponse({ kind: 'invalid-request', message }, BAD_REQUEST_STATUS);\n\nexport const createAbsoluteMobilePageErrorResponse = (pageId: string) =>\n\tenvelopeResponse(\n\t\t{\n\t\t\tcode: 'representation-failed',\n\t\t\tkind: 'error',\n\t\t\tpageId,\n\t\t\tstatus: SERVER_ERROR_STATUS\n\t\t},\n\t\tSERVER_ERROR_STATUS\n\t);\n\nexport const createAbsoluteMobileUpgradeResponse = (\n\tresult: AbsoluteMobileUpgradeRequiredResult\n) => envelopeResponse(result, UPGRADE_REQUIRED_STATUS);\n\nexport const finalizeAbsoluteMobilePage = <Props>(\n\tinput: FinalizeAbsoluteMobilePageInput<Props>\n) => {\n\tconst parsed = parseAbsoluteMobilePageRequest(input.request);\n\tif (parsed.kind === 'not-mobile') return undefined;\n\tif (parsed.kind === 'invalid') {\n\t\treturn envelopeResponse(\n\t\t\t{ kind: 'invalid-request', message: parsed.message },\n\t\t\tBAD_REQUEST_STATUS\n\t\t);\n\t}\n\n\tconst { client } = parsed;\n\tif (client.pageId !== input.compatibility.pageId) {\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tkind: 'invalid-request',\n\t\t\t\tmessage: `Requested mobile page ${client.pageId} does not match ${input.compatibility.pageId}.`\n\t\t\t},\n\t\t\tBAD_REQUEST_STATUS\n\t\t);\n\t}\n\tconst producerContext = getCurrentAbsoluteMobileProducerContext();\n\tif (producerContext)\n\t\treturn finalizeArchivedMobilePage(producerContext, input);\n\tif (client.protocol !== ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION) {\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tkind: 'upgrade-required',\n\t\t\t\tpageId: input.compatibility.pageId,\n\t\t\t\treason: 'protocol'\n\t\t\t},\n\t\t\tUPGRADE_REQUIRED_STATUS\n\t\t);\n\t}\n\tif (!input.compatibility.runtimes.includes(client.runtime)) {\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tkind: 'upgrade-required',\n\t\t\t\tpageId: input.compatibility.pageId,\n\t\t\t\treason: 'runtime',\n\t\t\t\tsupportedRuntimes: [...input.compatibility.runtimes]\n\t\t\t},\n\t\t\tUPGRADE_REQUIRED_STATUS\n\t\t);\n\t}\n\n\tconst clientContracts = new Set(client.pageContracts);\n\tconst representation = input.compatibility.representations.find(\n\t\t({ contract }) => clientContracts.has(contract)\n\t);\n\tif (!representation) {\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tkind: 'upgrade-required',\n\t\t\t\tpageId: input.compatibility.pageId,\n\t\t\t\treason: 'page-contract',\n\t\t\t\tsupportedContracts: input.compatibility.representations.map(\n\t\t\t\t\t({ contract }) => contract\n\t\t\t\t)\n\t\t\t},\n\t\t\tUPGRADE_REQUIRED_STATUS\n\t\t);\n\t}\n\n\ttry {\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tcontract: representation.contract,\n\t\t\t\tframework: input.compatibility.framework,\n\t\t\t\tkind: 'page',\n\t\t\t\tpageId: input.compatibility.pageId,\n\t\t\t\tprops: normalizeJsonValue(representation.mapProps(input.props)),\n\t\t\t\tstatus: input.status ?? OK_STATUS\n\t\t\t},\n\t\t\tinput.status ?? OK_STATUS\n\t\t);\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[Mobile] Failed to produce ${input.compatibility.pageId} representation ${representation.contract}:`,\n\t\t\terror\n\t\t);\n\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tcode: 'representation-failed',\n\t\t\t\tkind: 'error',\n\t\t\t\tpageId: input.compatibility.pageId,\n\t\t\t\tstatus: SERVER_ERROR_STATUS\n\t\t\t},\n\t\t\tSERVER_ERROR_STATUS\n\t\t);\n\t}\n};\n",
39
40
  "import {\n\tABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION,\n\ttype AbsoluteMobilePageEnvelope,\n\ttype AbsoluteMobilePageFramework,\n\ttype AbsoluteMobilePageResult,\n\ttype AbsoluteMobileUpgradeReason,\n\ttype AbsoluteMobileUpgradeRequiredResult\n} from './pageProtocol';\n\ntype AbsoluteMobileClientTarget = {\n\t__ABSOLUTE_PAGE_DISPOSE__?: () => Promise<void> | void;\n\t__ABSOLUTE_PAGE_READY__?: Promise<unknown>;\n\t__ABSOLUTE_PAGE_RENDER_MODE__?: 'client' | 'hydrate';\n\t__ABS_ANGULAR_REQUEST_CONTEXT__?: Record<string, unknown>;\n\t__INITIAL_PROPS__?: Record<string, unknown>;\n};\n\nexport type AbsoluteMobilePageLoader = (input: {\n\tcontract: string;\n\tpageId: string;\n}) => Promise<unknown>;\n\nexport type AbsoluteMobilePageActivation =\n\t| {\n\t\t\tkind: 'rendered';\n\t\t\tcontract: string;\n\t\t\tpageId: string;\n\t }\n\t| AbsoluteMobileUpgradeRequiredResult;\n\nexport type AbsoluteMobilePageActivationOptions = {\n\tloadPage: AbsoluteMobilePageLoader;\n\ttarget?: AbsoluteMobileClientTarget;\n};\n\nexport class AbsoluteMobilePageProtocolError extends Error {\n\treadonly code:\n\t\t| 'invalid-envelope'\n\t\t| 'invalid-props'\n\t\t| 'server-error'\n\t\t| 'server-rejected-request';\n\n\tconstructor(\n\t\tcode: AbsoluteMobilePageProtocolError['code'],\n\t\tmessage: string\n\t) {\n\t\tsuper(message);\n\t\tthis.name = 'AbsoluteMobilePageProtocolError';\n\t\tthis.code = code;\n\t}\n}\n\nexport const disposeAbsoluteMobilePage = async (\n\ttarget: AbsoluteMobileClientTarget = window\n) => {\n\tconst dispose = target.__ABSOLUTE_PAGE_DISPOSE__;\n\ttarget.__ABSOLUTE_PAGE_DISPOSE__ = undefined;\n\ttarget.__ABSOLUTE_PAGE_READY__ = undefined;\n\tif (dispose) await dispose();\n};\n\nconst frameworks = new Set<string>([\n\t'angular',\n\t'ember',\n\t'html',\n\t'htmx',\n\t'react',\n\t'svelte',\n\t'vue'\n]);\nconst upgradeReasons = new Set<string>([\n\t'app-release',\n\t'page-contract',\n\t'protocol',\n\t'runtime'\n]);\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst isFramework = (value: unknown): value is AbsoluteMobilePageFramework =>\n\ttypeof value === 'string' && frameworks.has(value);\n\nconst isUpgradeReason = (\n\tvalue: unknown\n): value is AbsoluteMobileUpgradeReason =>\n\ttypeof value === 'string' && upgradeReasons.has(value);\n\nconst parsePageResult = (\n\tvalue: Record<string, unknown>\n): AbsoluteMobilePageResult => {\n\tif (\n\t\ttypeof value.contract !== 'string' ||\n\t\t!isFramework(value.framework) ||\n\t\ttypeof value.pageId !== 'string' ||\n\t\ttypeof value.status !== 'number'\n\t) {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'invalid-envelope',\n\t\t\t'The mobile page response is missing required page metadata.'\n\t\t);\n\t}\n\tif (!isRecord(value.props)) {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'invalid-props',\n\t\t\t'The mobile page response must contain an object props value.'\n\t\t);\n\t}\n\n\treturn {\n\t\tcontract: value.contract,\n\t\tframework: value.framework,\n\t\tkind: 'page',\n\t\tpageId: value.pageId,\n\t\tprops: value.props,\n\t\tstatus: value.status\n\t};\n};\n\nconst parseUpgradeResult = (\n\tvalue: Record<string, unknown>\n): AbsoluteMobileUpgradeRequiredResult => {\n\tif (typeof value.pageId !== 'string' || !isUpgradeReason(value.reason)) {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'invalid-envelope',\n\t\t\t'The update response is missing its page or reason.'\n\t\t);\n\t}\n\n\treturn {\n\t\tkind: 'upgrade-required',\n\t\tpageId: value.pageId,\n\t\treason: value.reason,\n\t\tsupportedContracts: Array.isArray(value.supportedContracts)\n\t\t\t? value.supportedContracts.filter(\n\t\t\t\t\t(contract): contract is string =>\n\t\t\t\t\t\ttypeof contract === 'string'\n\t\t\t\t)\n\t\t\t: undefined,\n\t\tsupportedRuntimes: Array.isArray(value.supportedRuntimes)\n\t\t\t? value.supportedRuntimes.filter(\n\t\t\t\t\t(runtime): runtime is string => typeof runtime === 'string'\n\t\t\t\t)\n\t\t\t: undefined\n\t};\n};\n\nexport const activateAbsoluteMobilePage = async (\n\tvalue: unknown,\n\toptions: AbsoluteMobilePageActivationOptions\n) => {\n\tconst envelope = parseAbsoluteMobilePageEnvelope(value);\n\tif (envelope.response.kind === 'upgrade-required') {\n\t\treturn envelope.response;\n\t}\n\tif (envelope.response.kind !== 'page') {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'invalid-envelope',\n\t\t\t'Expected a renderable mobile page response.'\n\t\t);\n\t}\n\n\tconst target: AbsoluteMobileClientTarget = options.target ?? window;\n\tawait disposeAbsoluteMobilePage(target);\n\ttarget.__INITIAL_PROPS__ = envelope.response.props;\n\ttarget.__ABS_ANGULAR_REQUEST_CONTEXT__ = envelope.response.props;\n\ttarget.__ABSOLUTE_PAGE_RENDER_MODE__ = 'client';\n\tawait options.loadPage({\n\t\tcontract: envelope.response.contract,\n\t\tpageId: envelope.response.pageId\n\t});\n\tif (target.__ABSOLUTE_PAGE_READY__) {\n\t\tawait target.__ABSOLUTE_PAGE_READY__;\n\t}\n\n\treturn {\n\t\tcontract: envelope.response.contract,\n\t\tkind: 'rendered',\n\t\tpageId: envelope.response.pageId\n\t} satisfies AbsoluteMobilePageActivation;\n};\n\nexport const parseAbsoluteMobilePageEnvelope = (value: unknown) => {\n\tif (!isRecord(value) || !isRecord(value.response)) {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'invalid-envelope',\n\t\t\t'The server did not return an AbsoluteJS mobile page envelope.'\n\t\t);\n\t}\n\tif (value.protocol !== ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION) {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'invalid-envelope',\n\t\t\t`Unsupported mobile page protocol ${String(value.protocol)}.`\n\t\t);\n\t}\n\n\tconst { kind } = value.response;\n\tif (kind === 'page') {\n\t\treturn {\n\t\t\tprotocol: ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION,\n\t\t\tresponse: parsePageResult(value.response)\n\t\t} satisfies AbsoluteMobilePageEnvelope;\n\t}\n\tif (kind === 'upgrade-required') {\n\t\treturn {\n\t\t\tprotocol: ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION,\n\t\t\tresponse: parseUpgradeResult(value.response)\n\t\t} satisfies AbsoluteMobilePageEnvelope;\n\t}\n\tif (kind === 'invalid-request') {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'server-rejected-request',\n\t\t\ttypeof value.response.message === 'string'\n\t\t\t\t? value.response.message\n\t\t\t\t: 'The server rejected the mobile page request.'\n\t\t);\n\t}\n\tif (kind === 'error') {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'server-error',\n\t\t\t'The server could not create a compatible mobile page representation.'\n\t\t);\n\t}\n\n\tthrow new AbsoluteMobilePageProtocolError(\n\t\t'invalid-envelope',\n\t\t`Unknown mobile page response kind ${String(kind)}.`\n\t);\n};\n",
40
41
  "import {\n\tactivateAbsoluteMobilePage,\n\ttype AbsoluteMobilePageActivationOptions\n} from './client';\nimport {\n\tABSOLUTE_MOBILE_PAGE_MEDIA_TYPE,\n\tABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION,\n\tMOBILE_PAGE_REQUEST_HEADERS\n} from './pageProtocol';\nimport type {\n\tAbsoluteMobileCompatibilityPage,\n\tAbsoluteMobileCompatibilityRoute\n} from './releaseArtifact';\nimport { resolveAbsoluteMobileRoute } from './routeMatcher';\nimport type { AbsoluteMobileAuthManifest } from './nativeAuth';\nimport type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';\n\nexport const ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT = 1 as const;\n\nexport type AbsoluteMobileFetch = (\n\tinput: RequestInfo | URL,\n\tinit?: RequestInit\n) => Promise<Response>;\n\nexport type AbsoluteMobileClientPage = AbsoluteMobileCompatibilityPage & {\n\tlocalBundlePath: string;\n\tlocalStylePath?: string;\n};\n\nexport type AbsoluteMobileClientManifest = {\n\tauth?: AbsoluteMobileAuthManifest;\n\tappBuild: string;\n\tappId: string;\n\tappName: string;\n\tdeepLinkHosts: string[];\n\tdeepLinkScheme?: string;\n\tdeviceCapabilities: string[];\n\tentry: string;\n\tformat: typeof ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT;\n\tpages: AbsoluteMobileClientPage[];\n\tproductionOrigin: string;\n\troutes: AbsoluteMobileCompatibilityRoute[];\n\truntime: string;\n\tsync?: {\n\t\tsocketTickets: true;\n\t\tbackground: { endpoint: string; intervalMinutes: number };\n\t\tstorageSchema: SyncLocalStoreSchemaBundle;\n\t};\n};\n\nexport type AbsoluteMobileTransportOptions = {\n\tfetch?: AbsoluteMobileFetch;\n\theaders?: HeadersInit;\n};\n\nconst pageForPathname = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpathname: string\n) => {\n\tconst route = resolveAbsoluteMobileRoute(manifest.routes, pathname);\n\tif (!route) {\n\t\tthrow new TypeError(`No embedded mobile page owns ${pathname}.`);\n\t}\n\tconst page = manifest.pages.find(\n\t\t(candidate) => candidate.pageId === route.pageId\n\t);\n\tif (!page) {\n\t\tthrow new TypeError(\n\t\t\t`Mobile route ${route.pattern} references missing page ${route.pageId}.`\n\t\t);\n\t}\n\n\treturn page;\n};\n\nconst canonicalBackendUrl = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpath: string\n) => {\n\tconst origin = new URL(manifest.productionOrigin);\n\tconst url = new URL(path, `${origin.origin}/`);\n\tif (url.origin !== origin.origin) {\n\t\tthrow new TypeError('Mobile transport cannot leave productionOrigin.');\n\t}\n\turl.hash = '';\n\n\treturn url;\n};\n\nexport const createAbsoluteMobilePageRequest = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpath: string,\n\toptions: AbsoluteMobileTransportOptions = {}\n) => {\n\tconst url = canonicalBackendUrl(manifest, path);\n\tconst page = pageForPathname(manifest, url.pathname);\n\tconst headers = new Headers(options.headers);\n\theaders.set('accept', ABSOLUTE_MOBILE_PAGE_MEDIA_TYPE);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.appBuild, manifest.appBuild);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.pageBundle, page.bundleHash);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.pageContracts, page.contract);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.pageId, page.pageId);\n\theaders.set(\n\t\tMOBILE_PAGE_REQUEST_HEADERS.protocol,\n\t\tString(ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION)\n\t);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.runtime, manifest.runtime);\n\n\treturn new Request(url, { headers, method: 'GET' });\n};\n\nexport const fetchAbsoluteMobilePage = async (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpath: string,\n\toptions: AbsoluteMobileTransportOptions = {}\n) => {\n\tconst request = createAbsoluteMobilePageRequest(manifest, path, options);\n\tconst response = await (options.fetch ?? globalThis.fetch)(request);\n\tconst value: unknown = await response.json();\n\n\treturn value;\n};\n\nexport const navigateAbsoluteMobilePage = async (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpath: string,\n\toptions: AbsoluteMobileTransportOptions &\n\t\tAbsoluteMobilePageActivationOptions\n) => {\n\tconst envelope = await fetchAbsoluteMobilePage(manifest, path, options);\n\n\treturn activateAbsoluteMobilePage(envelope, options);\n};\n\nexport const resolveAbsoluteMobileDeepLink = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tvalue: string\n) => {\n\tconst url = new URL(value);\n\tif (url.username || url.password) {\n\t\tthrow new TypeError('Mobile deep links cannot contain credentials.');\n\t}\n\tconst isHttpsHost =\n\t\turl.protocol === 'https:' &&\n\t\tmanifest.deepLinkHosts.includes(url.hostname.toLowerCase());\n\tconst isCustomScheme =\n\t\tmanifest.deepLinkScheme !== undefined &&\n\t\turl.protocol === `${manifest.deepLinkScheme}:`;\n\tif (!isHttpsHost && !isCustomScheme) {\n\t\tthrow new TypeError(\n\t\t\t'Mobile deep link is outside the configured app URLs.'\n\t\t);\n\t}\n\n\treturn `${url.pathname || '/'}${url.search}${url.hash}`;\n};\n\nexport const resolveAbsoluteMobileNavigation = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tvalue: string,\n\tlocalOrigin: string\n) => {\n\tconst url = new URL(value, `${localOrigin}/`);\n\tconst local = new URL(localOrigin);\n\tconst production = new URL(manifest.productionOrigin);\n\tconst matches = (candidate: URL, allowed: URL) =>\n\t\tcandidate.protocol === allowed.protocol &&\n\t\tcandidate.host === allowed.host;\n\tif (!matches(url, local) && !matches(url, production)) {\n\t\treturn undefined;\n\t}\n\n\treturn `${url.pathname}${url.search}${url.hash}`;\n};\n",
41
42
  "import { createHash } from 'node:crypto';\nimport {\n\taccess,\n\tmkdir,\n\tmkdtemp,\n\treadFile,\n\trename,\n\trm,\n\twriteFile\n} from 'node:fs/promises';\nimport { dirname, join, resolve as resolvePath } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport {\n\tverifyAbsoluteMobileCompatibilityProducer,\n\ttype AbsoluteMobileStoredCompatibilityRelease\n} from './artifactStore';\nimport type {\n\tAbsoluteMobileCompatibilityDispatcherOptions,\n\tAbsoluteMobileCompatibilityProducerHandler\n} from './compatibilityDispatcher';\nimport {\n\tparseAbsoluteMobileCompatibilityArtifact,\n\tretainAbsoluteMobileCompatibilityArtifacts,\n\ttype AbsoluteMobileCompatibilityArtifact\n} from './releaseArtifact';\n\nexport const ABSOLUTE_MOBILE_MATERIALIZED_BUNDLE_FORMAT = 1 as const;\n\nexport type AbsoluteMobileMaterializedBundleInput = {\n\tcurrentReleaseId: string;\n\treleases: readonly AbsoluteMobileStoredCompatibilityRelease[];\n\troot: string;\n};\n\nexport type AbsoluteMobileMaterializedBundleIndex = {\n\tbundleId: string;\n\tcurrentReleaseId: string;\n\tformat: typeof ABSOLUTE_MOBILE_MATERIALIZED_BUNDLE_FORMAT;\n\treleases: AbsoluteMobileCompatibilityArtifact[];\n};\n\ntype CompatibilityModule = Record<string, unknown>;\ntype CompatibilityModuleLoader = (\n\tmodulePath: string\n) => Promise<CompatibilityModule>;\n\nconst CURRENT_BUNDLE_FILE = 'current.json';\nconst BUNDLES_DIRECTORY = 'bundles';\nconst ARTIFACT_FILE = 'artifact.json';\nconst BUNDLE_ID_PATTERN = /^amb_[a-f0-9]{64}$/;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst errorHasCode = (error: unknown, code: string) =>\n\ttypeof error === 'object' &&\n\terror !== null &&\n\tReflect.get(error, 'code') === code;\n\nconst bundleIdFor = (\n\tcurrentReleaseId: string,\n\treleases: readonly AbsoluteMobileCompatibilityArtifact[]\n) => {\n\tconst identity = JSON.stringify({\n\t\tcurrentReleaseId,\n\t\treleases: releases.map(({ releaseId }) => releaseId)\n\t});\n\n\treturn `amb_${createHash('sha256').update(identity).digest('hex')}`;\n};\n\nconst parseBundleIndex = (value: unknown) => {\n\tif (\n\t\t!isRecord(value) ||\n\t\tvalue.format !== ABSOLUTE_MOBILE_MATERIALIZED_BUNDLE_FORMAT ||\n\t\ttypeof value.bundleId !== 'string' ||\n\t\t!BUNDLE_ID_PATTERN.test(value.bundleId) ||\n\t\ttypeof value.currentReleaseId !== 'string' ||\n\t\t!Array.isArray(value.releases)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Invalid materialized mobile compatibility bundle.'\n\t\t);\n\t}\n\tconst releases = value.releases.map(\n\t\tparseAbsoluteMobileCompatibilityArtifact\n\t);\n\tconst retained = retainAbsoluteMobileCompatibilityArtifacts(releases);\n\tif (\n\t\tretained.length !== releases.length ||\n\t\tretained.some(\n\t\t\t({ releaseId }, index) => releaseId !== releases[index]?.releaseId\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Materialized mobile bundle releases are not a retained generation window.'\n\t\t);\n\t}\n\tconst expectedBundleId = bundleIdFor(value.currentReleaseId, releases);\n\tif (value.bundleId !== expectedBundleId) {\n\t\tthrow new TypeError('Materialized mobile bundle integrity failed.');\n\t}\n\tif (releases[0]?.releaseId !== value.currentReleaseId) {\n\t\tthrow new TypeError(\n\t\t\t'Materialized mobile bundle current release is not its newest generation.'\n\t\t);\n\t}\n\n\treturn {\n\t\tbundleId: value.bundleId,\n\t\tcurrentReleaseId: value.currentReleaseId,\n\t\tformat: ABSOLUTE_MOBILE_MATERIALIZED_BUNDLE_FORMAT,\n\t\treleases\n\t} satisfies AbsoluteMobileMaterializedBundleIndex;\n};\n\nconst writeRelease = async (\n\troot: string,\n\trelease: AbsoluteMobileStoredCompatibilityRelease\n) => {\n\tconst directory = join(root, release.artifact.releaseId);\n\tconst producerPath = join(directory, release.artifact.producer.module);\n\tawait mkdir(dirname(producerPath), { recursive: true });\n\tawait Promise.all([\n\t\twriteFile(\n\t\t\tjoin(directory, ARTIFACT_FILE),\n\t\t\t`${JSON.stringify(release.artifact, null, '\\t')}\\n`\n\t\t),\n\t\twriteFile(\n\t\t\tproducerPath,\n\t\t\tnew Uint8Array(await release.producer.arrayBuffer())\n\t\t)\n\t]);\n};\n\nconst installImmutableBundle = async (\n\tbundlesRoot: string,\n\tbundleId: string,\n\treleases: readonly AbsoluteMobileStoredCompatibilityRelease[]\n) => {\n\tconst destination = join(bundlesRoot, bundleId);\n\ttry {\n\t\tawait access(destination);\n\n\t\treturn destination;\n\t} catch (error) {\n\t\tif (!errorHasCode(error, 'ENOENT')) throw error;\n\t}\n\n\tconst staging = await mkdtemp(join(bundlesRoot, '.stage-'));\n\ttry {\n\t\tawait Promise.all(\n\t\t\treleases.map((release) => writeRelease(staging, release))\n\t\t);\n\t\tawait rename(staging, destination);\n\t} catch (error) {\n\t\tawait rm(staging, { force: true, recursive: true });\n\t\tif (errorHasCode(error, 'EEXIST') || errorHasCode(error, 'ENOTEMPTY')) {\n\t\t\treturn destination;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\treturn destination;\n};\n\nconst readCompatibilityModule: CompatibilityModuleLoader = (modulePath) =>\n\timport(pathToFileURL(modulePath).href);\n\nconst resolveProducerHandler = (\n\tloaded: CompatibilityModule,\n\texportName: string\n) => {\n\tconst value = loaded[exportName];\n\tif (!isRecord(value) || typeof value.handle !== 'function') {\n\t\tthrow new TypeError(\n\t\t\t`Compatibility producer export ${exportName} must expose handle(request).`\n\t\t);\n\t}\n\n\tconst { handle } = value;\n\n\treturn {\n\t\thandle: async (request) => {\n\t\t\tconst response: unknown = await Reflect.apply(handle, value, [\n\t\t\t\trequest\n\t\t\t]);\n\t\t\tif (!(response instanceof Response)) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`Compatibility producer ${exportName} returned a non-Response value.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn response;\n\t\t}\n\t} satisfies AbsoluteMobileCompatibilityProducerHandler;\n};\n\nexport const loadAbsoluteMobileMaterializedBundle = async (\n\troot: string\n): Promise<AbsoluteMobileCompatibilityDispatcherOptions> => {\n\tconst resolvedRoot = resolvePath(root);\n\tconst serialized = await readFile(\n\t\tjoin(resolvedRoot, CURRENT_BUNDLE_FILE),\n\t\t'utf8'\n\t);\n\tconst parsed: unknown = JSON.parse(serialized);\n\tconst index = parseBundleIndex(parsed);\n\tconst bundleRoot = join(resolvedRoot, BUNDLES_DIRECTORY, index.bundleId);\n\n\treturn {\n\t\tartifacts: index.releases,\n\t\tcurrentReleaseId: index.currentReleaseId,\n\t\tloadProducer: async (artifact) => {\n\t\t\tconst modulePath = join(\n\t\t\t\tbundleRoot,\n\t\t\t\tartifact.releaseId,\n\t\t\t\tartifact.producer.module\n\t\t\t);\n\t\t\tawait verifyAbsoluteMobileCompatibilityProducer({\n\t\t\t\tartifact,\n\t\t\t\tproducer: Bun.file(modulePath)\n\t\t\t});\n\t\t\tconst loaded = await readCompatibilityModule(modulePath);\n\n\t\t\treturn resolveProducerHandler(loaded, artifact.producer.exportName);\n\t\t}\n\t};\n};\n\nexport const materializeAbsoluteMobileCompatibilityBundle = async (\n\tinput: AbsoluteMobileMaterializedBundleInput\n) => {\n\tconst releases = await Promise.all(\n\t\tinput.releases.map((release) =>\n\t\t\tverifyAbsoluteMobileCompatibilityProducer(release)\n\t\t)\n\t);\n\tconst artifacts = retainAbsoluteMobileCompatibilityArtifacts(\n\t\treleases.map(({ artifact }) => artifact)\n\t);\n\tif (artifacts.length !== releases.length) {\n\t\tthrow new TypeError(\n\t\t\t'Materialization input must already contain only retained releases.'\n\t\t);\n\t}\n\tif (artifacts[0]?.releaseId !== input.currentReleaseId) {\n\t\tthrow new TypeError(\n\t\t\t'Materialization current release must be the newest generation.'\n\t\t);\n\t}\n\tconst orderedReleases = artifacts.map((artifact) => {\n\t\tconst release = releases.find(\n\t\t\t(candidate) => candidate.artifact.releaseId === artifact.releaseId\n\t\t);\n\t\tif (!release) {\n\t\t\tthrow new TypeError('Materialization input is missing a producer.');\n\t\t}\n\n\t\treturn release;\n\t});\n\tconst root = resolvePath(input.root);\n\tconst bundlesRoot = join(root, BUNDLES_DIRECTORY);\n\tawait mkdir(bundlesRoot, { recursive: true });\n\tconst bundleId = bundleIdFor(input.currentReleaseId, artifacts);\n\tawait installImmutableBundle(bundlesRoot, bundleId, orderedReleases);\n\tconst index = {\n\t\tbundleId,\n\t\tcurrentReleaseId: input.currentReleaseId,\n\t\tformat: ABSOLUTE_MOBILE_MATERIALIZED_BUNDLE_FORMAT,\n\t\treleases: artifacts\n\t} satisfies AbsoluteMobileMaterializedBundleIndex;\n\tconst pointerPath = join(root, CURRENT_BUNDLE_FILE);\n\tconst temporaryPointerPath = join(\n\t\troot,\n\t\t`.current-${crypto.randomUUID()}.json`\n\t);\n\tawait writeFile(\n\t\ttemporaryPointerPath,\n\t\t`${JSON.stringify(index, null, '\\t')}\\n`,\n\t\t{ flag: 'wx' }\n\t);\n\tawait rename(temporaryPointerPath, pointerPath);\n\n\treturn index;\n};\n\nexport const readAbsoluteMobileMaterializedReleases = async (root: string) => {\n\tconst resolvedRoot = resolvePath(root);\n\ttry {\n\t\tconst serialized = await readFile(\n\t\t\tjoin(resolvedRoot, CURRENT_BUNDLE_FILE),\n\t\t\t'utf8'\n\t\t);\n\t\tconst parsed: unknown = JSON.parse(serialized);\n\t\tconst index = parseBundleIndex(parsed);\n\t\tconst bundleRoot = join(\n\t\t\tresolvedRoot,\n\t\t\tBUNDLES_DIRECTORY,\n\t\t\tindex.bundleId\n\t\t);\n\n\t\treturn Promise.all(\n\t\t\tindex.releases.map(async (artifact) => {\n\t\t\t\tconst producer = Bun.file(\n\t\t\t\t\tjoin(\n\t\t\t\t\t\tbundleRoot,\n\t\t\t\t\t\tartifact.releaseId,\n\t\t\t\t\t\tartifact.producer.module\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tawait verifyAbsoluteMobileCompatibilityProducer({\n\t\t\t\t\tartifact,\n\t\t\t\t\tproducer\n\t\t\t\t});\n\n\t\t\t\treturn { artifact, producer };\n\t\t\t})\n\t\t);\n\t} catch (error) {\n\t\tif (errorHasCode(error, 'ENOENT')) return [];\n\n\t\tthrow error;\n\t}\n};\n",
42
- "import { readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\n\nexport const ABSOLUTE_AUTH_PACKAGE = '@absolutejs/auth' as const;\nexport const ABSOLUTE_NATIVE_AUTH_CLIENTS_ENV =\n\t'ABSOLUTE_AUTH_NATIVE_CLIENTS' as const;\nexport const ABSOLUTE_NATIVE_AUTH_SCOPES = ['openid', 'profile'] as const;\nexport const ABSOLUTE_SYNC_PACKAGE = '@absolutejs/sync' as const;\n\nexport type AbsoluteMobileAuthManifest = {\n\tclientId: string;\n\tissuer: string;\n\tredirectUri: string;\n\tscopes: string[];\n};\n\nconst readPackageManifest = (projectRoot: string) => {\n\ttry {\n\t\treturn JSON.parse(\n\t\t\treadFileSync(join(projectRoot, 'package.json'), 'utf8')\n\t\t);\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nconst packageManifestHas = (manifest: unknown, packageName: string) => {\n\tif (typeof manifest !== 'object' || manifest === null) return false;\n\n\treturn [\n\t\tReflect.get(manifest, 'dependencies'),\n\t\tReflect.get(manifest, 'devDependencies'),\n\t\tReflect.get(manifest, 'optionalDependencies'),\n\t\tReflect.get(manifest, 'peerDependencies')\n\t].some(\n\t\t(dependencies) =>\n\t\t\ttypeof dependencies === 'object' &&\n\t\t\tdependencies !== null &&\n\t\t\tObject.hasOwn(dependencies, packageName)\n\t);\n};\n\nexport const createAbsoluteMobileAuthManifest = (\n\tconfig: NormalizedAbsoluteMobileConfig\n): AbsoluteMobileAuthManifest => {\n\tconst scheme = config.deepLinkScheme ?? config.appId.toLowerCase();\n\n\treturn {\n\t\tclientId: `absolutejs-native:${config.appId}`,\n\t\tissuer: config.productionOrigin,\n\t\tredirectUri: `${scheme}://auth/callback`,\n\t\tscopes: [...ABSOLUTE_NATIVE_AUTH_SCOPES]\n\t};\n};\n\nexport const installAbsoluteMobileAuthEnvironment = (\n\tprojectRoot: string,\n\tconfig: NormalizedAbsoluteMobileConfig\n) => {\n\tconst auth = resolveAbsoluteMobileAuthManifest(projectRoot, config);\n\tconst serialized = serializeAbsoluteMobileAuthEnvironment(config, auth);\n\tif (serialized === undefined)\n\t\tdelete process.env[ABSOLUTE_NATIVE_AUTH_CLIENTS_ENV];\n\telse process.env[ABSOLUTE_NATIVE_AUTH_CLIENTS_ENV] = serialized;\n\n\treturn auth;\n};\n\nexport const projectUsesAbsoluteAuth = (projectRoot: string) =>\n\tpackageManifestHas(readPackageManifest(projectRoot), ABSOLUTE_AUTH_PACKAGE);\n\nexport const projectUsesAbsoluteSync = (projectRoot: string) =>\n\tpackageManifestHas(readPackageManifest(projectRoot), ABSOLUTE_SYNC_PACKAGE);\n\nexport const resolveAbsoluteMobileAuthManifest = (\n\tprojectRoot: string,\n\tconfig: NormalizedAbsoluteMobileConfig\n) =>\n\tprojectUsesAbsoluteAuth(projectRoot)\n\t\t? createAbsoluteMobileAuthManifest(config)\n\t\t: undefined;\n\nexport const serializeAbsoluteMobileAuthEnvironment = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tauth: AbsoluteMobileAuthManifest | undefined\n) =>\n\tauth === undefined\n\t\t? undefined\n\t\t: JSON.stringify([\n\t\t\t\t{\n\t\t\t\t\t...auth,\n\t\t\t\t\tname: `${config.appName} native app`\n\t\t\t\t}\n\t\t\t]);\n",
43
- "import {\n\taccess,\n\tcp,\n\tmkdir,\n\tmkdtemp,\n\treaddir,\n\treadFile,\n\trename,\n\trm,\n\twriteFile\n} from 'node:fs/promises';\nimport { createHash } from 'node:crypto';\nimport { basename, dirname, join, relative, resolve } from 'node:path';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\n\nconst EXPO_GENERATED_HEADER =\n\t'// Generated by AbsoluteJS. Edit absolute.config.ts, then run absolute mobile sync.\\n';\nconst EXPO_ASSET_EXTENSION = '.absasset';\nconst EXPO_PROJECT_MARKER = '.absolutejs-expo-project';\n\nexport type WriteAbsoluteExpoProjectOptions = {\n\tforce?: boolean;\n\tprojectRoot: string;\n};\n\nconst exists = async (path: string) => {\n\ttry {\n\t\tawait access(path);\n\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst portableRelative = (from: string, destination: string) => {\n\tconst value = relative(from, destination).replaceAll('\\\\', '/');\n\n\treturn value.startsWith('.') ? value : `./${value}`;\n};\n\nconst routeSegments = (route: string) =>\n\troute\n\t\t.split('/')\n\t\t.filter(Boolean)\n\t\t.map((segment) => {\n\t\t\tif (segment.startsWith(':')) return `[${segment.slice(1)}]`;\n\t\t\tif (\n\t\t\t\tsegment === '.' ||\n\t\t\t\tsegment === '..' ||\n\t\t\t\t!/^[A-Za-z0-9._~-]+$/u.test(segment)\n\t\t\t) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`Expo native route ${route} contains an unsupported segment ${segment}.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn segment;\n\t\t});\n\nconst routeFile = (project: string, route: string) =>\n\tjoin(project, 'app', ...routeSegments(route), 'index.tsx');\n\nconst expoPackage = () => ({\n\tdependencies: {\n\t\texpo: '~57.0.9',\n\t\t'expo-asset': '~57.0.15',\n\t\t'expo-constants': '~57.0.16',\n\t\t'expo-dev-client': '~57.0.16',\n\t\t'expo-file-system': '~57.0.6',\n\t\t'expo-haptics': '~57.0.2',\n\t\t'expo-linking': '~57.0.8',\n\t\t'expo-router': '~57.0.17',\n\t\treact: '19.2.3',\n\t\t'react-native': '0.86.3',\n\t\t'react-native-safe-area-context': '~5.7.0',\n\t\t'react-native-screens': '4.26.0',\n\t\t'react-native-webview': '13.16.1'\n\t},\n\tdevDependencies: {\n\t\t'@types/react': '~19.2.2',\n\t\ttypescript: '~6.0.3'\n\t},\n\tmain: 'expo-router/entry',\n\tname: 'absolutejs-expo-shell',\n\tprivate: true,\n\tscripts: {\n\t\tandroid: 'expo run:android',\n\t\tios: 'expo run:ios',\n\t\tstart: 'expo start --dev-client'\n\t},\n\tversion: '0.0.0'\n});\n\nconst expoAppConfig = (config: NormalizedAbsoluteMobileConfig) => ({\n\texpo: {\n\t\tandroid: {\n\t\t\tintentFilters: config.deepLinkHosts.map((host) => ({\n\t\t\t\taction: 'VIEW',\n\t\t\t\tautoVerify: true,\n\t\t\t\tcategory: ['BROWSABLE', 'DEFAULT'],\n\t\t\t\tdata: [{ host, pathPrefix: '/', scheme: 'https' }]\n\t\t\t})),\n\t\t\tpackage: config.appId\n\t\t},\n\t\texperiments: { typedRoutes: true },\n\t\tios: {\n\t\t\tassociatedDomains: config.deepLinkHosts.map(\n\t\t\t\t(host) => `applinks:${host}`\n\t\t\t),\n\t\t\tbundleIdentifier: config.appId,\n\t\t\t...(config.iosVersion ? { buildNumber: config.iosVersion } : {})\n\t\t},\n\t\tname: config.appName,\n\t\tplugins: [\n\t\t\t'expo-router',\n\t\t\t['expo-dev-client', { launchMode: 'most-recent' }]\n\t\t],\n\t\truntimeVersion: { policy: 'appVersion' },\n\t\tscheme: config.deepLinkScheme,\n\t\tslug: config.appId.toLowerCase().replaceAll('.', '-'),\n\t\tversion: config.iosVersion ?? '0.1.0'\n\t}\n});\n\nconst expoDynamicAppConfig = `${EXPO_GENERATED_HEADER}const config = require('./app.json');\n\nif (process.env.ABSOLUTE_EXPO_DEVELOPMENT === '1' && process.env.ABSOLUTE_EXPO_DEVELOPMENT_CA_PATH) {\n\tconfig.expo.plugins = [\n\t\t...config.expo.plugins,\n\t\t'./plugins/withAbsoluteDevelopmentCa'\n\t];\n}\n\nmodule.exports = config;\n`;\n\nconst expoDevelopmentCaPlugin = `${EXPO_GENERATED_HEADER}const { AndroidConfig, withAndroidManifest, withDangerousMod } = require('expo/config-plugins');\nconst { copyFile, mkdir } = require('node:fs/promises');\nconst path = require('node:path');\n\nconst NETWORK_CONFIG = [\n\t'<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n\t'<network-security-config>',\n\t'\\t<debug-overrides>',\n\t'\\t\\t<trust-anchors>',\n\t'\\t\\t\\t<certificates src=\"@raw/absolutejs_dev_ca\" />',\n\t'\\t\\t</trust-anchors>',\n\t'\\t</debug-overrides>',\n\t'</network-security-config>',\n\t''\n].join('\\\\n');\n\nconst withAbsoluteDevelopmentCa = config => {\n\tconfig = withAndroidManifest(config, value => {\n\t\tconst application = AndroidConfig.Manifest.getMainApplicationOrThrow(value.modResults);\n\t\tapplication.$['android:networkSecurityConfig'] = '@xml/absolutejs_dev_network_security';\n\t\treturn value;\n\t});\n\treturn withDangerousMod(config, ['android', async value => {\n\t\tconst certificate = process.env.ABSOLUTE_EXPO_DEVELOPMENT_CA_PATH;\n\t\tif (!certificate) throw new Error('AbsoluteJS Expo HTTPS development requires its development CA path.');\n\t\tconst resources = path.join(value.modRequest.platformProjectRoot, 'app', 'src', 'main', 'res');\n\t\tawait Promise.all([\n\t\t\tmkdir(path.join(resources, 'raw'), { recursive: true }),\n\t\t\tmkdir(path.join(resources, 'xml'), { recursive: true })\n\t\t]);\n\t\tawait Promise.all([\n\t\t\tcopyFile(certificate, path.join(resources, 'raw', 'absolutejs_dev_ca.pem')),\n\t\t\trequire('node:fs/promises').writeFile(path.join(resources, 'xml', 'absolutejs_dev_network_security.xml'), NETWORK_CONFIG)\n\t\t]);\n\t\treturn value;\n\t}]);\n};\n\nmodule.exports = withAbsoluteDevelopmentCa;\n`;\n\nconst metroConfig = (projectRoot: string) =>\n\t`${EXPO_GENERATED_HEADER}const { getDefaultConfig } = require('expo/metro-config');\nconst path = require('node:path');\n\nconst projectRoot = __dirname;\nconst appRoot = ${JSON.stringify(projectRoot)};\nconst config = getDefaultConfig(projectRoot);\nconfig.resolver.assetExts.push('absasset');\nconfig.resolver.nodeModulesPaths = [\n\tpath.join(projectRoot, 'node_modules'),\n\tpath.join(appRoot, 'node_modules')\n];\nconfig.watchFolders = [appRoot];\n\nmodule.exports = config;\n`;\n\nconst layoutSource = `${EXPO_GENERATED_HEADER}import { Stack } from 'expo-router';\n\nexport default function AbsoluteLayout() {\n\treturn <Stack screenOptions={{ headerShown: false }} />;\n}\n`;\n\nconst nativeDiagnosticSource = `${EXPO_GENERATED_HEADER}import * as Haptics from 'expo-haptics';\nimport { Link } from 'expo-router';\nimport { Pressable, SafeAreaView, StyleSheet, Text, View } from 'react-native';\n\nexport default function AbsoluteNativeDiagnostic() {\n\treturn (\n\t\t<SafeAreaView style={styles.page}>\n\t\t\t<View style={styles.card}>\n\t\t\t\t<Text style={styles.eyebrow}>ABSOLUTEJS · EXPO EXPERIMENT</Text>\n\t\t\t\t<Text style={styles.title}>This screen is native React UI.</Text>\n\t\t\t\t<Text style={styles.body}>Ordinary AbsoluteJS routes remain embedded web routes. Only explicitly owned routes use React Native.</Text>\n\t\t\t\t<Pressable style={styles.button} onPress={() => Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Medium)}>\n\t\t\t\t\t<Text style={styles.buttonText}>Test native haptics</Text>\n\t\t\t\t</Pressable>\n\t\t\t\t<Link href=\"/\" style={styles.link}>Open the AbsoluteJS app</Link>\n\t\t\t</View>\n\t\t</SafeAreaView>\n\t);\n}\n\nconst styles = StyleSheet.create({\n\tbody: { color: '#cbd5e1', fontSize: 16, lineHeight: 24 },\n\tbutton: { backgroundColor: '#f8fafc', borderRadius: 12, padding: 14 },\n\tbuttonText: { color: '#020617', fontSize: 16, fontWeight: '700', textAlign: 'center' },\n\tcard: { backgroundColor: '#0f172a', borderRadius: 24, gap: 20, maxWidth: 560, padding: 28, width: '100%' },\n\teyebrow: { color: '#38bdf8', fontSize: 12, fontWeight: '800', letterSpacing: 1.5 },\n\tlink: { color: '#7dd3fc', fontSize: 16, textAlign: 'center' },\n\tpage: { alignItems: 'center', backgroundColor: '#020617', flex: 1, justifyContent: 'center', padding: 20 },\n\ttitle: { color: '#f8fafc', fontSize: 32, fontWeight: '800' }\n});\n`;\n\nconst webHostSource = (config: NormalizedAbsoluteMobileConfig) => {\n\tconst nativeRoutes = [\n\t\t'/__absolute/native',\n\t\t...Object.keys(config.expoNativeRoutes)\n\t];\n\n\treturn `${EXPO_GENERATED_HEADER}import * as Haptics from 'expo-haptics';\nimport * as Linking from 'expo-linking';\nimport { router, usePathname } from 'expo-router';\nimport { useEffect, useRef, useState } from 'react';\nimport { ActivityIndicator, BackHandler, Platform, StyleSheet, View } from 'react-native';\nimport { WebView, type WebViewMessageEvent } from 'react-native-webview';\nimport { materializeAbsoluteWebBundle } from './webAssets';\n\nconst BRIDGE_FORMAT = 1;\nconst MAX_MESSAGE_BYTES = 64 * 1024;\nconst MAX_HTTP_BODY_BYTES = 48 * 1024;\nconst NATIVE_ROUTES = new Set(${JSON.stringify(nativeRoutes)});\nconst PRODUCTION_ORIGIN = ${JSON.stringify(config.productionOrigin)};\nconst DEV_ORIGIN = Platform.OS === 'android'\n\t? process.env.EXPO_PUBLIC_ABSOLUTE_DEV_ANDROID_ORIGIN\n\t: process.env.EXPO_PUBLIC_ABSOLUTE_DEV_IOS_ORIGIN;\nconst HMR_TARGET = Platform.OS === 'android' ? 'expo-android' : 'expo-ios';\n\nconst bridgeBootstrap = (path: string) => {\n\tconst initialPath = DEV_ORIGIN\n\t\t? 'location.pathname + location.search + location.hash'\n\t\t: JSON.stringify(path);\n\treturn \\`(() => {\n\tconst pending = new Map();\n\tlet sequence = 0;\n\tlet currentPath = \\${initialPath};\n\tconst send = value => {\n\t\tconst source = JSON.stringify(value);\n\t\tif (new TextEncoder().encode(source).byteLength > 65536) throw new Error('Expo bridge message exceeds 64 KiB.');\n\t\twindow.ReactNativeWebView.postMessage(source);\n\t};\n\tglobalThis.__absoluteExpoReceive = source => {\n\t\tconst message = JSON.parse(source);\n\t\tconst operation = pending.get(message.id);\n\t\tif (!operation) return;\n\t\tpending.delete(message.id);\n\t\tclearTimeout(operation.timer);\n\t\tmessage.error ? operation.reject(new Error(message.error.message)) : operation.resolve(message.result);\n\t};\n\tglobalThis.__absoluteExpoBridge = {\n\t\trequest(method, params) {\n\t\t\tconst id = 'web_' + Date.now().toString(36) + '_' + (++sequence).toString(36);\n\t\t\tsend({ format: 1, id, kind: 'request', method, params, path: currentPath });\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst timer = setTimeout(() => {\n\t\t\t\t\tpending.delete(id);\n\t\t\t\t\treject(new Error('Expo bridge request timed out.'));\n\t\t\t\t}, 10000);\n\t\t\t\tpending.set(id, { reject, resolve, timer });\n\t\t\t});\n\t\t},\n\t\tsetPath(path) {\n\t\t\tcurrentPath = path;\n\t\t\tsend({ format: 1, kind: 'event', event: 'navigation', path });\n\t\t}\n\t};\n\tif (\\${DEV_ORIGIN ? 'true' : 'false'}) {\n\t\tconst publishPath = () => {\n\t\t\tconst path = location.pathname + location.search + location.hash;\n\t\t\tif (path === currentPath) return;\n\t\t\tcurrentPath = path;\n\t\t\tsend({ format: 1, kind: 'event', event: 'navigation', path });\n\t\t};\n\t\tfor (const method of ['pushState', 'replaceState']) {\n\t\t\tconst original = history[method];\n\t\t\thistory[method] = function(...args) {\n\t\t\t\tconst result = original.apply(this, args);\n\t\t\t\tpublishPath();\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\t\taddEventListener('popstate', publishPath);\n\t\taddEventListener('hashchange', publishPath);\n\t}\n\tdocument.addEventListener('click', event => {\n\t\tconst anchor = event.target instanceof Element ? event.target.closest('a[href]') : null;\n\t\tif (!anchor) return;\n\t\tconst url = new URL(anchor.href, location.href);\n\t\tif (!${JSON.stringify(nativeRoutes)}.includes(url.pathname)) return;\n\t\tevent.preventDefault();\n\t\tsend({ format: 1, kind: 'event', event: 'navigation', path: url.pathname + url.search + url.hash });\n\t}, true);\n\tsend({ format: 1, kind: 'event', event: 'ready', path: currentPath });\n})(); true;\\`;\n};\n\nconst impact = async (params: Record<string, unknown>) => {\n\tconst style = params.style;\n\tif (style === 'selection') return Haptics.selectionAsync();\n\tif (style === 'success' || style === 'warning' || style === 'error') {\n\t\tconst value = style === 'success' ? Haptics.NotificationFeedbackType.Success : style === 'warning' ? Haptics.NotificationFeedbackType.Warning : Haptics.NotificationFeedbackType.Error;\n\t\treturn Haptics.notificationAsync(value);\n\t}\n\tconst value = style === 'light' ? Haptics.ImpactFeedbackStyle.Light : style === 'heavy' ? Haptics.ImpactFeedbackStyle.Heavy : Haptics.ImpactFeedbackStyle.Medium;\n\treturn Haptics.impactAsync(value);\n};\n\nconst bridgeFetch = async (params: Record<string, unknown>) => {\n\tif (params.method !== 'GET' || typeof params.url !== 'string' || typeof params.headers !== 'object' || params.headers === null || Array.isArray(params.headers)) throw new Error('Expo bridge HTTP request is invalid.');\n\tconst url = new URL(params.url);\n\tif (url.origin !== PRODUCTION_ORIGIN || url.username || url.password) throw new Error('Expo bridge HTTP request left productionOrigin.');\n\tconst headers = new Headers();\n\tfor (const [name, value] of Object.entries(params.headers as Record<string, unknown>)) {\n\t\tconst normalized = name.toLowerCase();\n\t\tif (typeof value !== 'string' || (normalized !== 'accept' && !normalized.startsWith('x-absolute-mobile-'))) throw new Error('Expo bridge HTTP header is not allowed.');\n\t\theaders.set(normalized, value);\n\t}\n\tconst response = await fetch(url, { headers, method: 'GET', redirect: 'manual' });\n\tif (new URL(response.url || url.href).origin !== PRODUCTION_ORIGIN || response.status >= 300 && response.status < 400) throw new Error('Expo bridge HTTP redirects are not allowed.');\n\tconst body = await response.text();\n\tif (new TextEncoder().encode(body).byteLength > MAX_HTTP_BODY_BYTES) throw new Error('Expo bridge HTTP response exceeds 48 KiB.');\n\tconst responseHeaders: Record<string, string> = {};\n\tfor (const name of ['cache-control', 'content-type']) {\n\t\tconst value = response.headers.get(name);\n\t\tif (value) responseHeaders[name] = value;\n\t}\n\treturn { body, headers: responseHeaders, status: response.status };\n};\n\nexport function AbsoluteWebHost() {\n\tconst pathname = usePathname() || '/';\n\tconst webView = useRef<WebView>(null);\n\tconst [indexUri, setIndexUri] = useState<string>();\n\tconst [canGoBack, setCanGoBack] = useState(false);\n\tconst activeWebPath = useRef(pathname);\n\n\tuseEffect(() => {\n\t\tif (DEV_ORIGIN) {\n\t\t\tconst target = new URL(pathname, DEV_ORIGIN);\n\t\t\ttarget.searchParams.set('__absolute_target', HMR_TARGET);\n\t\t\tsetIndexUri(target.href);\n\t\t\treturn;\n\t\t}\n\t\tvoid materializeAbsoluteWebBundle().then(uri => setIndexUri(uri + '?absolutePath=' + encodeURIComponent(pathname)));\n\t}, [pathname]);\n\tuseEffect(() => {\n\t\tconst subscription = BackHandler.addEventListener('hardwareBackPress', () => {\n\t\t\tif (!canGoBack) return false;\n\t\t\twebView.current?.goBack();\n\t\t\treturn true;\n\t\t});\n\t\treturn () => subscription.remove();\n\t}, [canGoBack]);\n\n\tconst respond = (message: Record<string, unknown>) => {\n\t\tconst source = JSON.stringify(message).replaceAll('\\\\u2028', '\\\\\\\\u2028').replaceAll('\\\\u2029', '\\\\\\\\u2029');\n\t\tif (new TextEncoder().encode(source).byteLength > MAX_MESSAGE_BYTES) throw new Error('Expo bridge response exceeds 64 KiB.');\n\t\twebView.current?.injectJavaScript(\\`globalThis.__absoluteExpoReceive(\\${JSON.stringify(source)}); true;\\`);\n\t};\n\tconst hasOrigin = (source: string, origin: string) => {\n\t\ttry { return new URL(source).origin === origin; } catch { return false; }\n\t};\n\tconst onMessage = async (event: WebViewMessageEvent) => {\n\t\tconst source = event.nativeEvent.data;\n\t\tif (new TextEncoder().encode(source).byteLength > MAX_MESSAGE_BYTES) return;\n\t\tlet message: Record<string, unknown>;\n\t\ttry { message = JSON.parse(source); } catch { return; }\n\t\tif (message.format !== BRIDGE_FORMAT || typeof message.path !== 'string' || !message.path.startsWith('/') || message.path.startsWith('//')) return;\n\t\tif (message.kind === 'event' && (message.event === 'navigation' || message.event === 'ready')) {\n\t\t\tconst target = new URL(message.path, PRODUCTION_ORIGIN);\n\t\t\tif (target.origin !== PRODUCTION_ORIGIN) return;\n\t\t\tif (NATIVE_ROUTES.has(target.pathname)) router.push(message.path as never);\n\t\t\telse activeWebPath.current = message.path;\n\t\t\treturn;\n\t\t}\n\t\tif (message.kind !== 'request' || typeof message.id !== 'string' || message.path !== activeWebPath.current) return;\n\t\ttry {\n\t\t\tif (typeof message.params !== 'object' || message.params === null || Array.isArray(message.params)) throw new Error('Expo bridge method params are invalid.');\n\t\t\tif (message.method === 'devices.haptics.impact') {\n\t\t\t\tconst style = (message.params as Record<string, unknown>).style;\n\t\t\t\tif (typeof style !== 'string' || !['error', 'heavy', 'light', 'medium', 'selection', 'success', 'vibrate', 'warning'].includes(style)) throw new Error('Expo bridge haptics style is invalid.');\n\t\t\t\tawait impact(message.params as Record<string, unknown>);\n\t\t\t\trespond({ format: BRIDGE_FORMAT, id: message.id, kind: 'response', result: null });\n\t\t\t} else if (message.method === 'http.fetch') {\n\t\t\t\trespond({ format: BRIDGE_FORMAT, id: message.id, kind: 'response', result: await bridgeFetch(message.params as Record<string, unknown>) });\n\t\t\t} else {\n\t\t\t\tthrow new Error('Expo bridge method is not allowed.');\n\t\t\t}\n\t\t} catch (error) {\n\t\t\trespond({ error: { code: 'failed', message: error instanceof Error ? error.message : 'Native operation failed.' }, format: BRIDGE_FORMAT, id: message.id, kind: 'response' });\n\t\t}\n\t};\n\n\tif (!indexUri) return <View style={styles.loading}><ActivityIndicator /></View>;\n\treturn <WebView\n\t\tallowFileAccess\n\t\tallowFileAccessFromFileURLs\n\t\tallowUniversalAccessFromFileURLs={false}\n\t\tallowingReadAccessToURL={indexUri.slice(0, indexUri.lastIndexOf('/') + 1)}\n\t\tinjectedJavaScriptBeforeContentLoaded={bridgeBootstrap(pathname)}\n\t\tonMessage={onMessage}\n\t\tonNavigationStateChange={state => setCanGoBack(state.canGoBack)}\n\t\tonShouldStartLoadWithRequest={request => {\n\t\t\tif (request.url.startsWith('file:') || hasOrigin(request.url, PRODUCTION_ORIGIN) || DEV_ORIGIN && hasOrigin(request.url, DEV_ORIGIN)) return true;\n\t\t\tvoid Linking.openURL(request.url);\n\t\t\treturn false;\n\t\t}}\n\t\tref={webView}\n\t\tsource={{ uri: indexUri }}\n\t\tstyle={styles.web}\n\t/>;\n}\n\nconst styles = StyleSheet.create({ loading: { alignItems: 'center', flex: 1, justifyContent: 'center' }, web: { flex: 1 } });\n`;\n};\n\nconst webRouteSource = `${EXPO_GENERATED_HEADER}import { AbsoluteWebHost } from '../src/generated/AbsoluteWebHost';\n\nexport default AbsoluteWebHost;\n`;\n\nconst catchAllRouteSource = `${EXPO_GENERATED_HEADER}import { AbsoluteWebHost } from '../src/generated/AbsoluteWebHost';\n\nexport default AbsoluteWebHost;\n`;\n\nconst nativeWrapperSource = (wrapper: string, module: string) =>\n\t`${EXPO_GENERATED_HEADER}export { default } from ${JSON.stringify(portableRelative(dirname(wrapper), module).replace(/\\.(?:[cm]?[jt]sx?)$/u, ''))};\n`;\n\nconst expoTsConfig = (projectRoot: string, project: string) => ({\n\tcompilerOptions: {\n\t\tpaths: {\n\t\t\t'*': [\n\t\t\t\t'./node_modules/*',\n\t\t\t\t`${portableRelative(project, projectRoot)}/node_modules/*`\n\t\t\t],\n\t\t\treact: ['./node_modules/@types/react/index.d.ts'],\n\t\t\t'react/*': ['./node_modules/@types/react/*']\n\t\t},\n\t\tstrict: true\n\t},\n\textends: 'expo/tsconfig.base'\n});\n\nconst writeManagedFile = async (\n\tpath: string,\n\tsource: string,\n\tforce: boolean\n) => {\n\tawait mkdir(dirname(path), { recursive: true });\n\tif (await exists(path)) {\n\t\tconst current = await readFile(path, 'utf8');\n\t\tif (current === source) return false;\n\t\tif (!force && !current.startsWith(EXPO_GENERATED_HEADER)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Expo project file ${path} is not AbsoluteJS-managed; rerun with --force only after reviewing it.`\n\t\t\t);\n\t\t}\n\t}\n\tconst temporary = `${path}.${crypto.randomUUID()}.tmp`;\n\tawait writeFile(temporary, source, { flag: 'wx' });\n\tawait rename(temporary, path);\n\n\treturn true;\n};\n\nconst jsonSource = (value: unknown) => `${JSON.stringify(value, null, '\\t')}\\n`;\n\nconst emptyWebAssetsSource = `${EXPO_GENERATED_HEADER}export const materializeAbsoluteWebBundle = async () => {\n\tthrow new Error('The embedded AbsoluteJS bundle is unavailable. Run absolute prepare before a production Expo build.');\n};\n`;\n\nexport const writeAbsoluteExpoProject = async (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\toptions: WriteAbsoluteExpoProjectOptions\n) => {\n\tif (config.engine !== 'expo')\n\t\tthrow new TypeError(\n\t\t\t'Expo project generation requires mobile.engine: expo.'\n\t\t);\n\tconst projectRoot = resolve(options.projectRoot);\n\tconst project = config.nativeProjectDirectory;\n\tconst routeModules = Object.entries(config.expoNativeRoutes);\n\tconst moduleChecks = await Promise.all(\n\t\trouteModules.map(async ([route, module]) => ({\n\t\t\texists: await exists(module),\n\t\t\tmodule,\n\t\t\troute\n\t\t}))\n\t);\n\tconst missing = moduleChecks.find((entry) => !entry.exists);\n\tif (missing) {\n\t\tthrow new TypeError(\n\t\t\t`Expo native route ${missing.route} references missing module ${missing.module}.`\n\t\t);\n\t}\n\tconst marker = join(project, EXPO_PROJECT_MARKER);\n\tif ((await exists(project)) && !(await exists(marker))) {\n\t\tconst entries = await readdir(project);\n\t\tif (entries.length > 0 && !options.force) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Expo project directory ${project} is not AbsoluteJS-managed; rerun with --force only after reviewing it.`\n\t\t\t);\n\t\t}\n\t}\n\tawait mkdir(project, { recursive: true });\n\tawait writeFile(marker, 'format=1\\n');\n\tconst files = new Map<string, string>([\n\t\t[\n\t\t\tjoin(project, '.gitignore'),\n\t\t\t'.expo/\\nandroid/\\nios/\\nnode_modules/\\n'\n\t\t],\n\t\t[join(project, 'app.json'), jsonSource(expoAppConfig(config))],\n\t\t[join(project, 'app.config.js'), expoDynamicAppConfig],\n\t\t[join(project, 'package.json'), jsonSource(expoPackage())],\n\t\t[join(project, 'metro.config.js'), metroConfig(projectRoot)],\n\t\t[\n\t\t\tjoin(project, 'plugins', 'withAbsoluteDevelopmentCa.js'),\n\t\t\texpoDevelopmentCaPlugin\n\t\t],\n\t\t[\n\t\t\tjoin(project, 'tsconfig.json'),\n\t\t\tjsonSource(expoTsConfig(projectRoot, project))\n\t\t],\n\t\t[join(project, 'app', '_layout.tsx'), layoutSource],\n\t\t[\n\t\t\tjoin(project, 'app', '__absolute', 'native', 'index.tsx'),\n\t\t\tnativeDiagnosticSource\n\t\t],\n\t\t[\n\t\t\tjoin(project, 'src', 'generated', 'AbsoluteWebHost.tsx'),\n\t\t\twebHostSource(config)\n\t\t]\n\t]);\n\tconst webAssetsPath = join(project, 'src', 'generated', 'webAssets.ts');\n\tif (!(await exists(webAssetsPath))) {\n\t\tfiles.set(webAssetsPath, emptyWebAssetsSource);\n\t}\n\tif (!config.expoNativeRoutes['/']) {\n\t\tfiles.set(join(project, 'app', 'index.tsx'), webRouteSource);\n\t}\n\tfiles.set(join(project, 'app', '[...absolute].tsx'), catchAllRouteSource);\n\tfor (const [route, module] of routeModules) {\n\t\tconst wrapper =\n\t\t\troute === '/'\n\t\t\t\t? join(project, 'app', 'index.tsx')\n\t\t\t\t: routeFile(project, route);\n\t\tfiles.set(wrapper, nativeWrapperSource(wrapper, module));\n\t}\n\tconst changes = await Promise.all(\n\t\t[...files].map(([path, source]) => writeManagedFile(path, source, true))\n\t);\n\tconst changed = changes.filter(Boolean).length;\n\n\treturn { changed, path: project, written: [...files.keys()] };\n};\n\nconst walkFiles = async (root: string, directory = root): Promise<string[]> => {\n\tconst entries = await readdir(directory, { withFileTypes: true });\n\tconst nested = await Promise.all(\n\t\tentries.map((entry) => {\n\t\t\tconst path = join(directory, entry.name);\n\t\t\tif (entry.isDirectory()) return walkFiles(root, path);\n\t\t\tif (entry.isFile()) return [path];\n\t\t\tthrow new TypeError(\n\t\t\t\t`Expo embedded bundle cannot contain a symbolic link or special file: ${path}.`\n\t\t\t);\n\t\t})\n\t);\n\n\treturn nested.flat().sort();\n};\n\nconst renameIfPresent = async (source: string, destination: string) => {\n\ttry {\n\t\tawait rename(source, destination);\n\n\t\treturn true;\n\t} catch (error) {\n\t\tif (\n\t\t\ttypeof error === 'object' &&\n\t\t\terror !== null &&\n\t\t\tReflect.get(error, 'code') === 'ENOENT'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tthrow error;\n\t}\n};\n\nconst installStagedDirectory = async (staging: string, destination: string) => {\n\tconst backup = `${destination}.previous-${crypto.randomUUID()}`;\n\tconst moved = await renameIfPresent(destination, backup);\n\ttry {\n\t\tawait rename(staging, destination);\n\t\tif (moved) await rm(backup, { force: true, recursive: true });\n\t} catch (error) {\n\t\tif (moved) await rename(backup, destination);\n\t\tthrow error;\n\t}\n};\n\nconst assetModuleSource = (\n\tassets: { asset: string; path: string }[],\n\tbundleId: string\n) => `${EXPO_GENERATED_HEADER}import { Asset } from 'expo-asset';\nimport { Directory, File, Paths } from 'expo-file-system';\n\ndeclare const require: (path: string) => number;\nconst BUNDLE_ID = ${JSON.stringify(bundleId)};\nconst ASSETS = [\n${assets.map(({ asset, path }) => `\\t{ module: require(${JSON.stringify(asset)}), path: ${JSON.stringify(path)} }`).join(',\\n')}\n] as const;\n\nexport const materializeAbsoluteWebBundle = async () => {\n\tconst root = new Directory(Paths.document, 'absolutejs-web', BUNDLE_ID);\n\troot.create({ idempotent: true, intermediates: true });\n\tfor (const entry of ASSETS) {\n\t\tconst parts = entry.path.split('/');\n\t\tconst name = parts.pop();\n\t\tif (!name) throw new Error('AbsoluteJS embedded asset path is invalid.');\n\t\tconst directory = new Directory(root, ...parts);\n\t\tdirectory.create({ idempotent: true, intermediates: true });\n\t\tconst destination = new File(directory, name);\n\t\tif (destination.exists) continue;\n\t\tconst asset = await Asset.fromModule(entry.module).downloadAsync();\n\t\tif (!asset.localUri) throw new Error('Expo did not materialize an embedded AbsoluteJS asset.');\n\t\tnew File(asset.localUri).copy(destination);\n\t}\n\n\treturn new File(root, 'index.html').uri;\n};\n`;\n\nexport const syncAbsoluteExpoWebAssets = async (\n\tconfig: NormalizedAbsoluteMobileConfig\n) => {\n\tif (config.engine !== 'expo')\n\t\tthrow new TypeError('Expo asset sync requires mobile.engine: expo.');\n\tconst marker = join(config.nativeProjectDirectory, EXPO_PROJECT_MARKER);\n\tif (!(await exists(marker))) {\n\t\tthrow new TypeError(\n\t\t\t'Expo asset sync requires an AbsoluteJS-managed Expo project. Run mobile init first.'\n\t\t);\n\t}\n\tconst manifestPath = join(\n\t\tconfig.bundleDirectory,\n\t\t'absolute-mobile-manifest.json'\n\t);\n\tconst manifest: unknown = JSON.parse(await readFile(manifestPath, 'utf8'));\n\tconst appBuild =\n\t\ttypeof manifest === 'object' &&\n\t\tmanifest !== null &&\n\t\ttypeof Reflect.get(manifest, 'appBuild') === 'string'\n\t\t\t? String(Reflect.get(manifest, 'appBuild'))\n\t\t\t: undefined;\n\tif (!appBuild)\n\t\tthrow new TypeError('AbsoluteJS mobile manifest has no appBuild.');\n\tconst files = await walkFiles(config.bundleDirectory);\n\tconst bundleHash = createHash('sha256');\n\tconst filesWithContents = await Promise.all(\n\t\tfiles.map(async (file) => ({ contents: await readFile(file), file }))\n\t);\n\tfilesWithContents.forEach(({ contents, file }) => {\n\t\tbundleHash.update(\n\t\t\trelative(config.bundleDirectory, file).replaceAll('\\\\', '/')\n\t\t);\n\t\tbundleHash.update('\\0');\n\t\tbundleHash.update(contents);\n\t\tbundleHash.update('\\0');\n\t});\n\tconst bundleId = `amexpo_${bundleHash.digest('hex')}`;\n\tconst destination = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'assets',\n\t\t'absolute'\n\t);\n\tawait mkdir(dirname(destination), { recursive: true });\n\tconst staging = await mkdtemp(\n\t\tjoin(dirname(destination), `.${basename(destination)}.stage-`)\n\t);\n\tlet assets: { asset: string; path: string }[];\n\ttry {\n\t\tassets = await Promise.all(\n\t\t\tfiles.map(async (source, index) => {\n\t\t\t\tconst name = `${String(index).padStart(6, '0')}${EXPO_ASSET_EXTENSION}`;\n\t\t\t\tawait cp(source, join(staging, name));\n\n\t\t\t\treturn {\n\t\t\t\t\tasset: portableRelative(\n\t\t\t\t\t\tjoin(config.nativeProjectDirectory, 'src', 'generated'),\n\t\t\t\t\t\tjoin(destination, name)\n\t\t\t\t\t),\n\t\t\t\t\tpath: relative(config.bundleDirectory, source).replaceAll(\n\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\t\tawait installStagedDirectory(staging, destination);\n\t} catch (error) {\n\t\tawait rm(staging, { force: true, recursive: true });\n\t\tthrow error;\n\t}\n\tconst generated = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'src',\n\t\t'generated',\n\t\t'webAssets.ts'\n\t);\n\tawait writeManagedFile(\n\t\tgenerated,\n\t\tassetModuleSource(assets, bundleId),\n\t\ttrue\n\t);\n\n\treturn { appBuild, assets: assets.length, bundleId, path: destination };\n};\n",
43
+ "import {\n\taccess,\n\tcp,\n\tmkdir,\n\tmkdtemp,\n\treaddir,\n\treadFile,\n\trename,\n\trm,\n\twriteFile\n} from 'node:fs/promises';\nimport { createHash } from 'node:crypto';\nimport { basename, dirname, join, relative, resolve } from 'node:path';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\nimport {\n\tABSOLUTE_EXPO_AUTH_PACKAGE,\n\tABSOLUTE_EXPO_AUTH_CORE_VERSION,\n\tABSOLUTE_EXPO_AUTH_VERSION,\n\tABSOLUTE_EXPO_SYNC_CORE_VERSION,\n\tABSOLUTE_EXPO_SYNC_PACKAGE,\n\tABSOLUTE_EXPO_SYNC_VERSION,\n\tprojectUsesAbsoluteSync,\n\tresolveAbsoluteMobileAuthManifest,\n\ttype AbsoluteMobileAuthManifest\n} from './nativeAuth';\nimport { discoverAbsoluteSyncSchema } from './syncSchema';\nimport type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';\n\nconst EXPO_GENERATED_HEADER =\n\t'// Generated by AbsoluteJS. Edit absolute.config.ts, then run absolute mobile sync.\\n';\nconst EXPO_ASSET_EXTENSION = '.absasset';\nconst EXPO_PROJECT_MARKER = '.absolutejs-expo-project';\n\nexport type WriteAbsoluteExpoProjectOptions = {\n\tforce?: boolean;\n\tprojectRoot: string;\n};\n\nconst exists = async (path: string) => {\n\ttry {\n\t\tawait access(path);\n\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst portableRelative = (from: string, destination: string) => {\n\tconst value = relative(from, destination).replaceAll('\\\\', '/');\n\n\treturn value.startsWith('.') ? value : `./${value}`;\n};\n\nconst routeSegments = (route: string) =>\n\troute\n\t\t.split('/')\n\t\t.filter(Boolean)\n\t\t.map((segment) => {\n\t\t\tif (segment.startsWith(':')) return `[${segment.slice(1)}]`;\n\t\t\tif (\n\t\t\t\tsegment === '.' ||\n\t\t\t\tsegment === '..' ||\n\t\t\t\t!/^[A-Za-z0-9._~-]+$/u.test(segment)\n\t\t\t) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`Expo native route ${route} contains an unsupported segment ${segment}.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn segment;\n\t\t});\n\nconst routeFile = (project: string, route: string) =>\n\tjoin(project, 'app', ...routeSegments(route), 'index.tsx');\n\nconst expoPackage = (auth: boolean, sync: boolean) => ({\n\tdependencies: {\n\t\t...(auth\n\t\t\t? {\n\t\t\t\t\t'@absolutejs/auth': ABSOLUTE_EXPO_AUTH_CORE_VERSION,\n\t\t\t\t\t[ABSOLUTE_EXPO_AUTH_PACKAGE]: ABSOLUTE_EXPO_AUTH_VERSION\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(sync\n\t\t\t? {\n\t\t\t\t\t'@absolutejs/sync': ABSOLUTE_EXPO_SYNC_CORE_VERSION,\n\t\t\t\t\t[ABSOLUTE_EXPO_SYNC_PACKAGE]: ABSOLUTE_EXPO_SYNC_VERSION\n\t\t\t\t}\n\t\t\t: {}),\n\t\texpo: '~57.0.9',\n\t\t'expo-asset': '~57.0.15',\n\t\t'expo-constants': '~57.0.16',\n\t\t'expo-dev-client': '~57.0.16',\n\t\t'expo-file-system': '~57.0.6',\n\t\t'expo-haptics': '~57.0.2',\n\t\t'expo-linking': '~57.0.8',\n\t\t...(sync\n\t\t\t? {\n\t\t\t\t\t'expo-background-task': '~57.0.14',\n\t\t\t\t\t'expo-network': '~57.0.1',\n\t\t\t\t\t'expo-sqlite': '~57.0.2',\n\t\t\t\t\t'expo-task-manager': '~57.0.14',\n\t\t\t\t\t'expo-updates': '~57.0.19'\n\t\t\t\t}\n\t\t\t: {}),\n\t\t'expo-router': '~57.0.17',\n\t\t...(auth\n\t\t\t? {\n\t\t\t\t\t'expo-secure-store': '~57.0.2',\n\t\t\t\t\t'expo-web-browser': '~57.0.2'\n\t\t\t\t}\n\t\t\t: {}),\n\t\treact: '19.2.3',\n\t\t'react-native': '0.86.3',\n\t\t'react-native-safe-area-context': '~5.7.0',\n\t\t'react-native-screens': '4.26.0',\n\t\t'react-native-webview': '13.16.1'\n\t},\n\tdevDependencies: {\n\t\t'@types/react': '~19.2.2',\n\t\ttypescript: '~6.0.3'\n\t},\n\tmain: 'expo-router/entry',\n\tname: 'absolutejs-expo-shell',\n\tprivate: true,\n\tscripts: {\n\t\tandroid: 'expo run:android',\n\t\tios: 'expo run:ios',\n\t\tstart: 'expo start --dev-client'\n\t},\n\tversion: '0.0.0'\n});\n\nconst expoAppConfig = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tauth: boolean,\n\tsync: boolean\n) => ({\n\texpo: {\n\t\tandroid: {\n\t\t\tintentFilters: config.deepLinkHosts.map((host) => ({\n\t\t\t\taction: 'VIEW',\n\t\t\t\tautoVerify: true,\n\t\t\t\tcategory: ['BROWSABLE', 'DEFAULT'],\n\t\t\t\tdata: [{ host, pathPrefix: '/', scheme: 'https' }]\n\t\t\t})),\n\t\t\tpackage: config.appId\n\t\t},\n\t\texperiments: { typedRoutes: true },\n\t\tios: {\n\t\t\tassociatedDomains: config.deepLinkHosts.map(\n\t\t\t\t(host) => `applinks:${host}`\n\t\t\t),\n\t\t\tbundleIdentifier: config.appId,\n\t\t\t...(config.iosVersion ? { buildNumber: config.iosVersion } : {})\n\t\t},\n\t\tname: config.appName,\n\t\tplugins: [\n\t\t\t'expo-router',\n\t\t\t['expo-dev-client', { launchMode: 'most-recent' }],\n\t\t\t...(auth ? ['expo-secure-store'] : []),\n\t\t\t...(sync\n\t\t\t\t? ['expo-sqlite', 'expo-background-task', 'expo-task-manager']\n\t\t\t\t: [])\n\t\t],\n\t\truntimeVersion: { policy: 'appVersion' },\n\t\tscheme: config.deepLinkScheme,\n\t\tslug: config.appId.toLowerCase().replaceAll('.', '-'),\n\t\tversion: config.iosVersion ?? '0.1.0'\n\t}\n});\n\nconst expoDynamicAppConfig = `${EXPO_GENERATED_HEADER}const config = require('./app.json');\n\nif (process.env.ABSOLUTE_EXPO_DEVELOPMENT === '1' && process.env.ABSOLUTE_EXPO_DEVELOPMENT_CA_PATH) {\n\tconfig.expo.plugins = [\n\t\t...config.expo.plugins,\n\t\t'./plugins/withAbsoluteDevelopmentCa'\n\t];\n}\n\nmodule.exports = config;\n`;\n\nconst expoDevelopmentCaPlugin = `${EXPO_GENERATED_HEADER}const { AndroidConfig, withAndroidManifest, withDangerousMod } = require('expo/config-plugins');\nconst { copyFile, mkdir } = require('node:fs/promises');\nconst path = require('node:path');\n\nconst NETWORK_CONFIG = [\n\t'<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n\t'<network-security-config>',\n\t'\\t<debug-overrides>',\n\t'\\t\\t<trust-anchors>',\n\t'\\t\\t\\t<certificates src=\"@raw/absolutejs_dev_ca\" />',\n\t'\\t\\t</trust-anchors>',\n\t'\\t</debug-overrides>',\n\t'</network-security-config>',\n\t''\n].join('\\\\n');\n\nconst withAbsoluteDevelopmentCa = config => {\n\tconfig = withAndroidManifest(config, value => {\n\t\tconst application = AndroidConfig.Manifest.getMainApplicationOrThrow(value.modResults);\n\t\tapplication.$['android:networkSecurityConfig'] = '@xml/absolutejs_dev_network_security';\n\t\treturn value;\n\t});\n\treturn withDangerousMod(config, ['android', async value => {\n\t\tconst certificate = process.env.ABSOLUTE_EXPO_DEVELOPMENT_CA_PATH;\n\t\tif (!certificate) throw new Error('AbsoluteJS Expo HTTPS development requires its development CA path.');\n\t\tconst resources = path.join(value.modRequest.platformProjectRoot, 'app', 'src', 'main', 'res');\n\t\tawait Promise.all([\n\t\t\tmkdir(path.join(resources, 'raw'), { recursive: true }),\n\t\t\tmkdir(path.join(resources, 'xml'), { recursive: true })\n\t\t]);\n\t\tawait Promise.all([\n\t\t\tcopyFile(certificate, path.join(resources, 'raw', 'absolutejs_dev_ca.pem')),\n\t\t\trequire('node:fs/promises').writeFile(path.join(resources, 'xml', 'absolutejs_dev_network_security.xml'), NETWORK_CONFIG)\n\t\t]);\n\t\treturn value;\n\t}]);\n};\n\nmodule.exports = withAbsoluteDevelopmentCa;\n`;\n\nconst metroConfig = (projectRoot: string) =>\n\t`${EXPO_GENERATED_HEADER}const { getDefaultConfig } = require('expo/metro-config');\nconst path = require('node:path');\n\nconst projectRoot = __dirname;\nconst appRoot = ${JSON.stringify(projectRoot)};\nconst config = getDefaultConfig(projectRoot);\nconfig.resolver.assetExts.push('absasset');\nconfig.resolver.nodeModulesPaths = [\n\tpath.join(projectRoot, 'node_modules'),\n\tpath.join(appRoot, 'node_modules')\n];\nconfig.watchFolders = [appRoot];\n\nmodule.exports = config;\n`;\n\nconst layoutSource = (auth: boolean, sync: boolean) =>\n\t`${EXPO_GENERATED_HEADER}import { Stack } from 'expo-router';\n${auth ? \"import { useEffect, useState } from 'react';\\nimport { startAbsoluteExpoAuth } from '../src/generated/AbsoluteAuth';\" : ''}\n${sync ? \"import { startAbsoluteExpoSync } from '../src/generated/AbsoluteSync';\" : ''}\n\nexport default function AbsoluteLayout() {\n\t${\n\t\tauth\n\t\t\t? `const [ready, setReady] = useState(false);\n\tuseEffect(() => {\n\t\tlet active = true;\n\t\tvoid ${sync ? 'startAbsoluteExpoSync' : 'startAbsoluteExpoAuth'}().then(() => { if (active) setReady(true); });\n\t\treturn () => { active = false; };\n\t}, []);\n\tif (!ready) return null;`\n\t\t\t: ''\n\t}\n\treturn <Stack screenOptions={{ headerShown: false }} />;\n}\n`;\n\nconst nativeDiagnosticSource = `${EXPO_GENERATED_HEADER}import * as Haptics from 'expo-haptics';\nimport { Link } from 'expo-router';\nimport { Pressable, SafeAreaView, StyleSheet, Text, View } from 'react-native';\n\nexport default function AbsoluteNativeDiagnostic() {\n\treturn (\n\t\t<SafeAreaView style={styles.page}>\n\t\t\t<View style={styles.card}>\n\t\t\t\t<Text style={styles.eyebrow}>ABSOLUTEJS · EXPO EXPERIMENT</Text>\n\t\t\t\t<Text style={styles.title}>This screen is native React UI.</Text>\n\t\t\t\t<Text style={styles.body}>Ordinary AbsoluteJS routes remain embedded web routes. Only explicitly owned routes use React Native.</Text>\n\t\t\t\t<Pressable style={styles.button} onPress={() => Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Medium)}>\n\t\t\t\t\t<Text style={styles.buttonText}>Test native haptics</Text>\n\t\t\t\t</Pressable>\n\t\t\t\t<Link href=\"/\" style={styles.link}>Open the AbsoluteJS app</Link>\n\t\t\t</View>\n\t\t</SafeAreaView>\n\t);\n}\n\nconst styles = StyleSheet.create({\n\tbody: { color: '#cbd5e1', fontSize: 16, lineHeight: 24 },\n\tbutton: { backgroundColor: '#f8fafc', borderRadius: 12, padding: 14 },\n\tbuttonText: { color: '#020617', fontSize: 16, fontWeight: '700', textAlign: 'center' },\n\tcard: { backgroundColor: '#0f172a', borderRadius: 24, gap: 20, maxWidth: 560, padding: 28, width: '100%' },\n\teyebrow: { color: '#38bdf8', fontSize: 12, fontWeight: '800', letterSpacing: 1.5 },\n\tlink: { color: '#7dd3fc', fontSize: 16, textAlign: 'center' },\n\tpage: { alignItems: 'center', backgroundColor: '#020617', flex: 1, justifyContent: 'center', padding: 20 },\n\ttitle: { color: '#f8fafc', fontSize: 32, fontWeight: '800' }\n});\n`;\n\nconst authRuntimeSource = (auth: AbsoluteMobileAuthManifest, appId: string) => {\n\tconst storageIdentity = createHash('sha256')\n\t\t.update(appId)\n\t\t.digest('hex')\n\t\t.slice(0, 24);\n\n\treturn `${EXPO_GENERATED_HEADER}import { createAbsoluteExpoAuthClient } from '@absolutejs/auth-expo';\nimport { createMobileAuthTransport, installAuthClientRuntimeTransport } from '@absolutejs/auth/client/mobile';\n\nexport const absoluteExpoAuth = createAbsoluteExpoAuthClient({\n\tallowedOrigins: [${JSON.stringify(auth.issuer)}],\n\tclientId: ${JSON.stringify(auth.clientId)},\n\tissuer: ${JSON.stringify(auth.issuer)},\n\tredirectUri: ${JSON.stringify(auth.redirectUri)},\n\tresource: ${JSON.stringify(auth.issuer)},\n\tscopes: ${JSON.stringify(auth.scopes)},\n\tstoragePrefix: ${JSON.stringify(`absolutejs.auth.${storageIdentity}`)}\n});\ninstallAuthClientRuntimeTransport(createMobileAuthTransport(absoluteExpoAuth, { baseUrl: ${JSON.stringify(auth.issuer)} }));\n\nlet currentPrincipal: Awaited<ReturnType<typeof absoluteExpoAuth.principal>> = null;\nabsoluteExpoAuth.onPrincipalChange(principal => {\n\tcurrentPrincipal = principal;\n});\nexport const getAbsoluteExpoAuthPrincipal = () => currentPrincipal;\n\nlet startPromise: Promise<void> | undefined;\nexport const startAbsoluteExpoAuth = () => {\n\tstartPromise ??= absoluteExpoAuth.start().then(async () => {\n\t\tcurrentPrincipal = await absoluteExpoAuth.principal();\n\t});\n\n\treturn startPromise;\n};\n`;\n};\n\nconst syncRuntimeSource = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tschema: SyncLocalStoreSchemaBundle\n) => {\n\tconst storageIdentity = createHash('sha256')\n\t\t.update(config.appId)\n\t\t.digest('hex')\n\t\t.slice(0, 24);\n\tconst backgroundEndpoint = new URL(\n\t\t'/__absolute/sync/background',\n\t\tconfig.productionOrigin\n\t).href;\n\tconst backgroundTask = `${config.appId}.absolutejs.sync`;\n\n\treturn `${EXPO_GENERATED_HEADER}import { runHeadlessSync } from '@absolutejs/sync/client/headless';\nimport type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';\nimport { installSyncClientRuntimeTransport } from '@absolutejs/sync/client/runtime';\nimport {\n\tcreateExpoSyncBridgeHost,\n\tcreateExpoSyncLocalStore,\n\tcreateExpoSyncProtection,\n\tcreateExpoSyncSocketBridgeHost,\n\tdefineExpoSyncBackgroundTask,\n\tinstallExpoSyncLifecycle,\n\tregisterExpoSyncBackgroundTask\n} from '@absolutejs/sync-expo';\nimport * as Updates from 'expo-updates';\nimport { absoluteExpoAuth, startAbsoluteExpoAuth } from './AbsoluteAuth';\n\nconst BACKGROUND_TASK = ${JSON.stringify(backgroundTask)};\nconst BACKGROUND_ENDPOINT = ${JSON.stringify(backgroundEndpoint)};\nconst PRODUCTION_ORIGIN = ${JSON.stringify(config.productionOrigin)};\nconst STORAGE_SCHEMA: SyncLocalStoreSchemaBundle = ${JSON.stringify(schema)};\nconst store = createExpoSyncLocalStore({\n\tdatabaseName: ${JSON.stringify(`absolutejs-sync-${storageIdentity}.db`)},\n\tprotection: createExpoSyncProtection({ storagePrefix: ${JSON.stringify(`absolutejs.sync.${storageIdentity}`)} }),\n\tstorageSchema: STORAGE_SCHEMA\n});\n\nconst runBackgroundSync = async () => {\n\tawait startAbsoluteExpoAuth();\n\tconst principal = await absoluteExpoAuth.principal();\n\tif (!principal) return;\n\tawait runHeadlessSync({\n\t\tendpoint: BACKGROUND_ENDPOINT,\n\t\tfetch: (url, init) => absoluteExpoAuth.fetch(url, init),\n\t\tnamespace: principal.namespace,\n\t\tstore\n\t});\n};\ndefineExpoSyncBackgroundTask(BACKGROUND_TASK, runBackgroundSync);\n\nlet activeNamespace: string | undefined;\nlet started = false;\nlet startPromise: Promise<void> | undefined;\nexport const startAbsoluteExpoSync = () => {\n\tstartPromise ??= (async () => {\n\t\tawait startAbsoluteExpoAuth();\n\t\tconst principal = await absoluteExpoAuth.principal();\n\t\tactiveNamespace = principal?.namespace;\n\t\tinstallSyncClientRuntimeTransport({\n\t\t\t...(principal ? { durable: { namespace: principal.namespace, store }, socketTicket: () => absoluteExpoAuth.socketTicket() } : {}),\n\t\t\tregisterClient: client => installExpoSyncLifecycle({ client })\n\t\t});\n\t\tawait registerExpoSyncBackgroundTask(BACKGROUND_TASK, { minimumInterval: 15 });\n\t\tstarted = true;\n\t})();\n\n\treturn startPromise;\n};\n\nabsoluteExpoAuth.onPrincipalChange(principal => {\n\tif (!started || principal?.namespace === activeNamespace) return;\n\tvoid Updates.reloadAsync();\n});\n\nexport const createAbsoluteExpoSyncBridge = async (\n\temit: (event: 'sync.socket' | 'sync.wake', payload: Record<string, unknown>) => void\n) => {\n\tawait startAbsoluteExpoSync();\n\tconst principal = await absoluteExpoAuth.principal();\n\tif (!principal) return {\n\t\tclose: () => undefined,\n\t\trequest: async () => { throw new Error('Expo Sync requires an authenticated principal.'); }\n\t};\n\tconst transactions = createExpoSyncBridgeHost({ namespace: principal.namespace, store });\n\tconst sockets = createExpoSyncSocketBridgeHost({\n\t\tallowedOrigin: PRODUCTION_ORIGIN,\n\t\temit: payload => emit('sync.socket', payload),\n\t\tsocketTicket: audience => absoluteExpoAuth.socketTicket(audience)\n\t});\n\tconst removeLifecycle = installExpoSyncLifecycle({\n\t\tclient: { reconnect: () => emit('sync.wake', {}) }\n\t});\n\n\treturn {\n\t\tclose: async () => {\n\t\t\tremoveLifecycle();\n\t\t\tawait Promise.all([transactions.close(), sockets.close()]);\n\t\t},\n\t\trequest: (method: string, params: Record<string, unknown>) =>\n\t\t\tmethod.startsWith('sync.socket.')\n\t\t\t\t? sockets.request(method, params)\n\t\t\t\t: transactions.request(method, params)\n\t};\n};\n`;\n};\n\nconst webHostSource = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tauth: AbsoluteMobileAuthManifest | undefined,\n\tsync: boolean\n) => {\n\tconst nativeRoutes = [\n\t\t'/__absolute/native',\n\t\t...Object.keys(config.expoNativeRoutes)\n\t];\n\n\treturn `${EXPO_GENERATED_HEADER}import * as Haptics from 'expo-haptics';\nimport * as Linking from 'expo-linking';\nimport { router, usePathname } from 'expo-router';\nimport { useEffect, useRef, useState } from 'react';\nimport { ActivityIndicator, BackHandler, Platform, StyleSheet, View } from 'react-native';\nimport { WebView, type WebViewMessageEvent } from 'react-native-webview';\nimport { materializeAbsoluteWebBundle } from './webAssets';\n${auth ? \"import { absoluteExpoAuth, getAbsoluteExpoAuthPrincipal, startAbsoluteExpoAuth } from './AbsoluteAuth';\" : ''}\n${sync ? \"import { createAbsoluteExpoSyncBridge, startAbsoluteExpoSync } from './AbsoluteSync';\" : ''}\n\nconst BRIDGE_FORMAT = 3;\nconst MAX_MESSAGE_BYTES = 64 * 1024;\nconst MAX_HTTP_BODY_BYTES = 48 * 1024;\nconst NATIVE_ROUTES = new Set(${JSON.stringify(nativeRoutes)});\nconst PRODUCTION_ORIGIN = ${JSON.stringify(config.productionOrigin)};\nconst DEV_ORIGIN = Platform.OS === 'android'\n\t? process.env.EXPO_PUBLIC_ABSOLUTE_DEV_ANDROID_ORIGIN\n\t: process.env.EXPO_PUBLIC_ABSOLUTE_DEV_IOS_ORIGIN;\nconst HMR_TARGET = Platform.OS === 'android' ? 'expo-android' : 'expo-ios';\nconst AUTH_ENABLED = ${auth ? 'true' : 'false'};\nconst SYNC_ENABLED = ${sync ? 'true' : 'false'};\n\nconst bridgeBootstrap = (path: string) => {\n\tconst initialPath = DEV_ORIGIN\n\t\t? 'location.pathname + location.search + location.hash'\n\t\t: JSON.stringify(path);\n\treturn \\`(() => {\n\tconst pending = new Map();\n\tconst listeners = new Map();\n\tlet sequence = 0;\n\tlet currentPath = \\${initialPath};\n\tconst send = value => {\n\t\tconst source = JSON.stringify(value);\n\t\tif (new TextEncoder().encode(source).byteLength > 65536) throw new Error('Expo bridge message exceeds 64 KiB.');\n\t\twindow.ReactNativeWebView.postMessage(source);\n\t};\n\tglobalThis.__absoluteExpoReceive = source => {\n\t\tconst message = JSON.parse(source);\n\t\tif (message.kind === 'event') {\n\t\t\tfor (const listener of listeners.get(message.event) || []) listener(message.payload || {});\n\t\t\treturn;\n\t\t}\n\t\tconst operation = pending.get(message.id);\n\t\tif (!operation) return;\n\t\tpending.delete(message.id);\n\t\tclearTimeout(operation.timer);\n\t\tmessage.error ? operation.reject(new Error(message.error.message)) : operation.resolve(message.result);\n\t};\n\tglobalThis.__absoluteExpoBridge = {\n\t\ton(event, listener) {\n\t\t\tconst values = listeners.get(event) || new Set();\n\t\t\tvalues.add(listener);\n\t\t\tlisteners.set(event, values);\n\t\t\treturn () => {\n\t\t\t\tvalues.delete(listener);\n\t\t\t\tif (values.size === 0) listeners.delete(event);\n\t\t\t};\n\t\t},\n\t\trequest(method, params) {\n\t\t\tconst id = 'web_' + Date.now().toString(36) + '_' + (++sequence).toString(36);\n\t\t\tsend({ format: 3, id, kind: 'request', method, params, path: currentPath });\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst timer = setTimeout(() => {\n\t\t\t\t\tpending.delete(id);\n\t\t\t\t\treject(new Error('Expo bridge request timed out.'));\n\t\t\t\t}, 10000);\n\t\t\t\tpending.set(id, { reject, resolve, timer });\n\t\t\t});\n\t\t},\n\t\tsetPath(path) {\n\t\t\tcurrentPath = path;\n\t\t\tsend({ format: 3, kind: 'event', event: 'navigation', path });\n\t\t}\n\t};\n\tif (\\${DEV_ORIGIN ? 'true' : 'false'}) {\n\t\tconst publishPath = () => {\n\t\t\tconst path = location.pathname + location.search + location.hash;\n\t\t\tif (path === currentPath) return;\n\t\t\tcurrentPath = path;\n\t\t\tsend({ format: 3, kind: 'event', event: 'navigation', path });\n\t\t};\n\t\tfor (const method of ['pushState', 'replaceState']) {\n\t\t\tconst original = history[method];\n\t\t\thistory[method] = function(...args) {\n\t\t\t\tconst result = original.apply(this, args);\n\t\t\t\tpublishPath();\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\t\taddEventListener('popstate', publishPath);\n\t\taddEventListener('hashchange', publishPath);\n\t}\n\tdocument.addEventListener('click', event => {\n\t\tconst anchor = event.target instanceof Element ? event.target.closest('a[href]') : null;\n\t\tif (!anchor) return;\n\t\tconst url = new URL(anchor.href, location.href);\n\t\tif (!${JSON.stringify(nativeRoutes)}.includes(url.pathname)) return;\n\t\tevent.preventDefault();\n\t\tsend({ format: 3, kind: 'event', event: 'navigation', path: url.pathname + url.search + url.hash });\n\t}, true);\n\tsend({ format: 3, kind: 'event', event: 'ready', path: currentPath });\n})(); true;\\`;\n};\n\nconst impact = async (params: Record<string, unknown>) => {\n\tconst style = params.style;\n\tif (style === 'selection') return Haptics.selectionAsync();\n\tif (style === 'success' || style === 'warning' || style === 'error') {\n\t\tconst value = style === 'success' ? Haptics.NotificationFeedbackType.Success : style === 'warning' ? Haptics.NotificationFeedbackType.Warning : Haptics.NotificationFeedbackType.Error;\n\t\treturn Haptics.notificationAsync(value);\n\t}\n\tconst value = style === 'light' ? Haptics.ImpactFeedbackStyle.Light : style === 'heavy' ? Haptics.ImpactFeedbackStyle.Heavy : Haptics.ImpactFeedbackStyle.Medium;\n\treturn Haptics.impactAsync(value);\n};\n\nconst bridgeFetch = async (params: Record<string, unknown>) => {\n\tif (typeof params.method !== 'string' || !['DELETE', 'GET', 'PATCH', 'POST', 'PUT'].includes(params.method) || typeof params.url !== 'string' || typeof params.headers !== 'object' || params.headers === null || Array.isArray(params.headers) || params.body !== undefined && typeof params.body !== 'string') throw new Error('Expo bridge HTTP request is invalid.');\n\tconst url = new URL(params.url);\n\tif (url.origin !== PRODUCTION_ORIGIN || url.username || url.password) throw new Error('Expo bridge HTTP request left productionOrigin.');\n\tconst headers = new Headers();\n\tfor (const [name, value] of Object.entries(params.headers as Record<string, unknown>)) {\n\t\tconst normalized = name.toLowerCase();\n\t\tif (typeof value !== 'string' || (normalized !== 'accept' && normalized !== 'content-type' && !normalized.startsWith('x-absolute-mobile-'))) throw new Error('Expo bridge HTTP header is not allowed.');\n\t\theaders.set(normalized, value);\n\t}\n\tconst response = await ${auth ? 'absoluteExpoAuth.fetchOptional' : 'fetch'}(url, { ...(typeof params.body === 'string' ? { body: params.body } : {}), headers, method: params.method, redirect: 'manual' });\n\tif (new URL(response.url || url.href).origin !== PRODUCTION_ORIGIN || response.status >= 300 && response.status < 400) throw new Error('Expo bridge HTTP redirects are not allowed.');\n\tconst body = await response.text();\n\tif (new TextEncoder().encode(body).byteLength > MAX_HTTP_BODY_BYTES) throw new Error('Expo bridge HTTP response exceeds 48 KiB.');\n\tconst responseHeaders: Record<string, string> = {};\n\tfor (const name of ['cache-control', 'content-type']) {\n\t\tconst value = response.headers.get(name);\n\t\tif (value) responseHeaders[name] = value;\n\t}\n\treturn { body, headers: responseHeaders, status: response.status };\n};\n\nconst authStatus = async () => {\n\t${\n\t\tauth\n\t\t\t? `const user = await absoluteExpoAuth.status();\n\tconst principal = getAbsoluteExpoAuthPrincipal();\n\treturn { principal: principal ? { namespace: principal.namespace } : null, user };`\n\t\t\t: \"throw new Error('Expo Auth is not configured.');\"\n\t}\n};\n\nexport function AbsoluteWebHost() {\n\tconst pathname = usePathname() || '/';\n\tconst webView = useRef<WebView>(null);\n\tconst syncBridge = useRef<{ close(): void | Promise<void>; request(method: string, params: Record<string, unknown>): Promise<unknown> } | undefined>(undefined);\n\tconst [indexUri, setIndexUri] = useState<string>();\n\tconst [canGoBack, setCanGoBack] = useState(false);\n\tconst [runtimeReady, setRuntimeReady] = useState(!AUTH_ENABLED && !SYNC_ENABLED);\n\tconst activeWebPath = useRef(pathname);\n\n\tuseEffect(() => {\n\t\tif (!AUTH_ENABLED && !SYNC_ENABLED) return;\n\t\tlet active = true;\n\t\t${\n\t\t\tauth\n\t\t\t\t? `const stop = absoluteExpoAuth.onPrincipalChange(principal => {\n\t\t\tif (!active) return;\n\t\t\tconst source = JSON.stringify({ event: 'auth.principal', format: BRIDGE_FORMAT, kind: 'event', path: activeWebPath.current, payload: { principal: principal ? { namespace: principal.namespace } : null } });\n\t\t\twebView.current?.injectJavaScript(\\`globalThis.__absoluteExpoReceive(\\${JSON.stringify(source)}); true;\\`);\n\t\t});\n\t\tvoid ${sync ? 'startAbsoluteExpoSync' : 'startAbsoluteExpoAuth'}().then(async () => {\n\t\t\t${\n\t\t\t\tsync\n\t\t\t\t\t? `syncBridge.current = await createAbsoluteExpoSyncBridge((event, payload) => {\n\t\t\t\tconst source = JSON.stringify({ event, format: BRIDGE_FORMAT, kind: 'event', path: activeWebPath.current, payload });\n\t\t\t\twebView.current?.injectJavaScript(\\`globalThis.__absoluteExpoReceive(\\${JSON.stringify(source)}); true;\\`);\n\t\t\t});`\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t\tif (active) setRuntimeReady(true);\n\t\t});\n\t\treturn () => {\n\t\t\tactive = false;\n\t\t\tstop();\n\t\t\tconst bridge = syncBridge.current;\n\t\t\tsyncBridge.current = undefined;\n\t\t\tvoid bridge?.close();\n\t\t};`\n\t\t\t\t: ''\n\t\t}\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (DEV_ORIGIN) {\n\t\t\tconst target = new URL(pathname, DEV_ORIGIN);\n\t\t\ttarget.searchParams.set('__absolute_target', HMR_TARGET);\n\t\t\tsetIndexUri(target.href);\n\t\t\treturn;\n\t\t}\n\t\tvoid materializeAbsoluteWebBundle().then(uri => setIndexUri(uri + '?absolutePath=' + encodeURIComponent(pathname)));\n\t}, [pathname]);\n\tuseEffect(() => {\n\t\tconst subscription = BackHandler.addEventListener('hardwareBackPress', () => {\n\t\t\tif (!canGoBack) return false;\n\t\t\twebView.current?.goBack();\n\t\t\treturn true;\n\t\t});\n\t\treturn () => subscription.remove();\n\t}, [canGoBack]);\n\n\tconst respond = (message: Record<string, unknown>) => {\n\t\tconst source = JSON.stringify(message).replaceAll('\\\\u2028', '\\\\\\\\u2028').replaceAll('\\\\u2029', '\\\\\\\\u2029');\n\t\tif (new TextEncoder().encode(source).byteLength > MAX_MESSAGE_BYTES) throw new Error('Expo bridge response exceeds 64 KiB.');\n\t\twebView.current?.injectJavaScript(\\`globalThis.__absoluteExpoReceive(\\${JSON.stringify(source)}); true;\\`);\n\t};\n\tconst hasOrigin = (source: string, origin: string) => {\n\t\ttry { return new URL(source).origin === origin; } catch { return false; }\n\t};\n\tconst onMessage = async (event: WebViewMessageEvent) => {\n\t\tconst source = event.nativeEvent.data;\n\t\tif (new TextEncoder().encode(source).byteLength > MAX_MESSAGE_BYTES) return;\n\t\tlet message: Record<string, unknown>;\n\t\ttry { message = JSON.parse(source); } catch { return; }\n\t\tif (message.format !== BRIDGE_FORMAT || typeof message.path !== 'string' || !message.path.startsWith('/') || message.path.startsWith('//')) return;\n\t\tif (message.kind === 'event' && (message.event === 'navigation' || message.event === 'ready')) {\n\t\t\tconst target = new URL(message.path, PRODUCTION_ORIGIN);\n\t\t\tif (target.origin !== PRODUCTION_ORIGIN) return;\n\t\t\tif (NATIVE_ROUTES.has(target.pathname)) router.push(message.path as never);\n\t\t\telse activeWebPath.current = message.path;\n\t\t\treturn;\n\t\t}\n\t\tif (message.kind !== 'request' || typeof message.id !== 'string' || message.path !== activeWebPath.current) return;\n\t\ttry {\n\t\t\tif (typeof message.params !== 'object' || message.params === null || Array.isArray(message.params)) throw new Error('Expo bridge method params are invalid.');\n\t\t\tif (message.method === 'devices.haptics.impact') {\n\t\t\t\tconst style = (message.params as Record<string, unknown>).style;\n\t\t\t\tif (typeof style !== 'string' || !['error', 'heavy', 'light', 'medium', 'selection', 'success', 'vibrate', 'warning'].includes(style)) throw new Error('Expo bridge haptics style is invalid.');\n\t\t\t\tawait impact(message.params as Record<string, unknown>);\n\t\t\t\trespond({ format: BRIDGE_FORMAT, id: message.id, kind: 'response', result: null });\n\t\t\t} else if (message.method === 'http.fetch') {\n\t\t\t\trespond({ format: BRIDGE_FORMAT, id: message.id, kind: 'response', result: await bridgeFetch(message.params as Record<string, unknown>) });\n\t\t\t} else if (message.method === 'auth.signIn') {\n\t\t\t\t${\n\t\t\t\t\tauth\n\t\t\t\t\t\t? `const params = message.params as Record<string, unknown>;\n\t\t\t\tif (typeof params.email !== 'string' || typeof params.signup !== 'boolean') throw new Error('Expo Auth sign-in params are invalid.');\n\t\t\t\tawait absoluteExpoAuth.signIn({ authorizationParameters: { login_hint: params.email, ...(params.signup ? { screen_hint: 'signup' } : {}) } });\n\t\t\t\trespond({ format: BRIDGE_FORMAT, id: message.id, kind: 'response', result: await authStatus() });`\n\t\t\t\t\t\t: \"throw new Error('Expo Auth is not configured.');\"\n\t\t\t\t}\n\t\t\t} else if (message.method === 'auth.signOut') {\n\t\t\t\t${\n\t\t\t\t\tauth\n\t\t\t\t\t\t? `await absoluteExpoAuth.signOut();\n\t\t\t\trespond({ format: BRIDGE_FORMAT, id: message.id, kind: 'response', result: null });`\n\t\t\t\t\t\t: \"throw new Error('Expo Auth is not configured.');\"\n\t\t\t\t}\n\t\t\t} else if (message.method === 'auth.status') {\n\t\t\t\trespond({ format: BRIDGE_FORMAT, id: message.id, kind: 'response', result: await authStatus() });\n\t\t\t} else if (typeof message.method === 'string' && message.method.startsWith('sync.')) {\n\t\t\t\tif (!syncBridge.current) throw new Error('Expo Sync bridge is unavailable.');\n\t\t\t\trespond({ format: BRIDGE_FORMAT, id: message.id, kind: 'response', result: await syncBridge.current.request(message.method, message.params as Record<string, unknown>) });\n\t\t\t} else {\n\t\t\t\tthrow new Error('Expo bridge method is not allowed.');\n\t\t\t}\n\t\t} catch (error) {\n\t\t\trespond({ error: { code: 'failed', message: error instanceof Error ? error.message : 'Native operation failed.' }, format: BRIDGE_FORMAT, id: message.id, kind: 'response' });\n\t\t}\n\t};\n\n\tif (!indexUri || !runtimeReady) return <View style={styles.loading}><ActivityIndicator /></View>;\n\treturn <WebView\n\t\tallowFileAccess\n\t\tallowFileAccessFromFileURLs\n\t\tallowUniversalAccessFromFileURLs={false}\n\t\tallowingReadAccessToURL={indexUri.slice(0, indexUri.lastIndexOf('/') + 1)}\n\t\tinjectedJavaScriptBeforeContentLoaded={bridgeBootstrap(pathname)}\n\t\tonMessage={onMessage}\n\t\tonNavigationStateChange={state => setCanGoBack(state.canGoBack)}\n\t\tonShouldStartLoadWithRequest={request => {\n\t\t\tif (request.url.startsWith('file:') || hasOrigin(request.url, PRODUCTION_ORIGIN) || DEV_ORIGIN && hasOrigin(request.url, DEV_ORIGIN)) return true;\n\t\t\tvoid Linking.openURL(request.url);\n\t\t\treturn false;\n\t\t}}\n\t\tref={webView}\n\t\tsource={{ uri: indexUri }}\n\t\tstyle={styles.web}\n\t/>;\n}\n\nconst styles = StyleSheet.create({ loading: { alignItems: 'center', flex: 1, justifyContent: 'center' }, web: { flex: 1 } });\n`;\n};\n\nconst webRouteSource = `${EXPO_GENERATED_HEADER}import { AbsoluteWebHost } from '../src/generated/AbsoluteWebHost';\n\nexport default AbsoluteWebHost;\n`;\n\nconst catchAllRouteSource = `${EXPO_GENERATED_HEADER}import { AbsoluteWebHost } from '../src/generated/AbsoluteWebHost';\n\nexport default AbsoluteWebHost;\n`;\n\nconst nativeWrapperSource = (wrapper: string, module: string) =>\n\t`${EXPO_GENERATED_HEADER}export { default } from ${JSON.stringify(portableRelative(dirname(wrapper), module).replace(/\\.(?:[cm]?[jt]sx?)$/u, ''))};\n`;\n\nconst expoTsConfig = (\n\tprojectRoot: string,\n\tproject: string,\n\tauth: boolean,\n\tsync: boolean\n) => ({\n\tcompilerOptions: {\n\t\tpaths: {\n\t\t\t...(auth\n\t\t\t\t? {\n\t\t\t\t\t\t'@absolutejs/auth': [\n\t\t\t\t\t\t\t'./node_modules/@absolutejs/auth/dist/index.d.ts'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t'@absolutejs/auth/*': [\n\t\t\t\t\t\t\t'./node_modules/@absolutejs/auth/dist/*'\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t\t...(sync\n\t\t\t\t? {\n\t\t\t\t\t\t'@absolutejs/sync': [\n\t\t\t\t\t\t\t'./node_modules/@absolutejs/sync/dist/index.d.ts'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t'@absolutejs/sync-expo': [\n\t\t\t\t\t\t\t'./node_modules/@absolutejs/sync-expo/dist/index.d.ts'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t'@absolutejs/sync-expo/*': [\n\t\t\t\t\t\t\t'./node_modules/@absolutejs/sync-expo/dist/*'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t'@absolutejs/sync/*': [\n\t\t\t\t\t\t\t'./node_modules/@absolutejs/sync/dist/*'\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\t\t'./node_modules/*',\n\t\t\t\t`${portableRelative(project, projectRoot)}/node_modules/*`\n\t\t\t],\n\t\t\treact: ['./node_modules/@types/react/index.d.ts'],\n\t\t\t'react/*': ['./node_modules/@types/react/*']\n\t\t},\n\t\tstrict: true\n\t},\n\textends: 'expo/tsconfig.base'\n});\n\nconst writeManagedFile = async (\n\tpath: string,\n\tsource: string,\n\tforce: boolean\n) => {\n\tawait mkdir(dirname(path), { recursive: true });\n\tif (await exists(path)) {\n\t\tconst current = await readFile(path, 'utf8');\n\t\tif (current === source) return false;\n\t\tif (!force && !current.startsWith(EXPO_GENERATED_HEADER)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Expo project file ${path} is not AbsoluteJS-managed; rerun with --force only after reviewing it.`\n\t\t\t);\n\t\t}\n\t}\n\tconst temporary = `${path}.${crypto.randomUUID()}.tmp`;\n\tawait writeFile(temporary, source, { flag: 'wx' });\n\tawait rename(temporary, path);\n\n\treturn true;\n};\n\nconst jsonSource = (value: unknown) => `${JSON.stringify(value, null, '\\t')}\\n`;\n\nconst emptyWebAssetsSource = `${EXPO_GENERATED_HEADER}export const materializeAbsoluteWebBundle = async () => {\n\tthrow new Error('The embedded AbsoluteJS bundle is unavailable. Run absolute prepare before a production Expo build.');\n};\n`;\n\nexport const writeAbsoluteExpoProject = async (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\toptions: WriteAbsoluteExpoProjectOptions\n) => {\n\tif (config.engine !== 'expo')\n\t\tthrow new TypeError(\n\t\t\t'Expo project generation requires mobile.engine: expo.'\n\t\t);\n\tconst projectRoot = resolve(options.projectRoot);\n\tconst project = config.nativeProjectDirectory;\n\tconst auth = resolveAbsoluteMobileAuthManifest(projectRoot, config);\n\tconst syncEnabled = Boolean(auth && projectUsesAbsoluteSync(projectRoot));\n\tconst syncSchema = syncEnabled\n\t\t? { components: discoverAbsoluteSyncSchema(projectRoot).components }\n\t\t: undefined;\n\tconst routeModules = Object.entries(config.expoNativeRoutes);\n\tconst moduleChecks = await Promise.all(\n\t\trouteModules.map(async ([route, module]) => ({\n\t\t\texists: await exists(module),\n\t\t\tmodule,\n\t\t\troute\n\t\t}))\n\t);\n\tconst missing = moduleChecks.find((entry) => !entry.exists);\n\tif (missing) {\n\t\tthrow new TypeError(\n\t\t\t`Expo native route ${missing.route} references missing module ${missing.module}.`\n\t\t);\n\t}\n\tconst marker = join(project, EXPO_PROJECT_MARKER);\n\tif ((await exists(project)) && !(await exists(marker))) {\n\t\tconst entries = await readdir(project);\n\t\tif (entries.length > 0 && !options.force) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Expo project directory ${project} is not AbsoluteJS-managed; rerun with --force only after reviewing it.`\n\t\t\t);\n\t\t}\n\t}\n\tawait mkdir(project, { recursive: true });\n\tawait writeFile(marker, 'format=1\\n');\n\tconst authEnabled = Boolean(auth);\n\tconst files = new Map<string, string>([\n\t\t[\n\t\t\tjoin(project, '.gitignore'),\n\t\t\t'.expo/\\nandroid/\\nios/\\nnode_modules/\\n'\n\t\t],\n\t\t[\n\t\t\tjoin(project, 'app.json'),\n\t\t\tjsonSource(expoAppConfig(config, authEnabled, syncEnabled))\n\t\t],\n\t\t[join(project, 'app.config.js'), expoDynamicAppConfig],\n\t\t[\n\t\t\tjoin(project, 'package.json'),\n\t\t\tjsonSource(expoPackage(authEnabled, syncEnabled))\n\t\t],\n\t\t[join(project, 'metro.config.js'), metroConfig(projectRoot)],\n\t\t[\n\t\t\tjoin(project, 'plugins', 'withAbsoluteDevelopmentCa.js'),\n\t\t\texpoDevelopmentCaPlugin\n\t\t],\n\t\t[\n\t\t\tjoin(project, 'tsconfig.json'),\n\t\t\tjsonSource(\n\t\t\t\texpoTsConfig(projectRoot, project, authEnabled, syncEnabled)\n\t\t\t)\n\t\t],\n\t\t[\n\t\t\tjoin(project, 'app', '_layout.tsx'),\n\t\t\tlayoutSource(authEnabled, syncEnabled)\n\t\t],\n\t\t[\n\t\t\tjoin(project, 'app', '__absolute', 'native', 'index.tsx'),\n\t\t\tnativeDiagnosticSource\n\t\t],\n\t\t[\n\t\t\tjoin(project, 'src', 'generated', 'AbsoluteWebHost.tsx'),\n\t\t\twebHostSource(config, auth, syncEnabled)\n\t\t]\n\t]);\n\tif (auth) {\n\t\tfiles.set(\n\t\t\tjoin(project, 'src', 'generated', 'AbsoluteAuth.ts'),\n\t\t\tauthRuntimeSource(auth, config.appId)\n\t\t);\n\t}\n\tif (syncSchema) {\n\t\tfiles.set(\n\t\t\tjoin(project, 'src', 'generated', 'AbsoluteSync.ts'),\n\t\t\tsyncRuntimeSource(config, syncSchema)\n\t\t);\n\t}\n\tconst webAssetsPath = join(project, 'src', 'generated', 'webAssets.ts');\n\tif (!(await exists(webAssetsPath))) {\n\t\tfiles.set(webAssetsPath, emptyWebAssetsSource);\n\t}\n\tif (!config.expoNativeRoutes['/']) {\n\t\tfiles.set(join(project, 'app', 'index.tsx'), webRouteSource);\n\t}\n\tfiles.set(join(project, 'app', '[...absolute].tsx'), catchAllRouteSource);\n\tfor (const [route, module] of routeModules) {\n\t\tconst wrapper =\n\t\t\troute === '/'\n\t\t\t\t? join(project, 'app', 'index.tsx')\n\t\t\t\t: routeFile(project, route);\n\t\tfiles.set(wrapper, nativeWrapperSource(wrapper, module));\n\t}\n\tconst changes = await Promise.all(\n\t\t[...files].map(([path, source]) => writeManagedFile(path, source, true))\n\t);\n\tconst changed = changes.filter(Boolean).length;\n\n\treturn { changed, path: project, written: [...files.keys()] };\n};\n\nconst walkFiles = async (root: string, directory = root): Promise<string[]> => {\n\tconst entries = await readdir(directory, { withFileTypes: true });\n\tconst nested = await Promise.all(\n\t\tentries.map((entry) => {\n\t\t\tconst path = join(directory, entry.name);\n\t\t\tif (entry.isDirectory()) return walkFiles(root, path);\n\t\t\tif (entry.isFile()) return [path];\n\t\t\tthrow new TypeError(\n\t\t\t\t`Expo embedded bundle cannot contain a symbolic link or special file: ${path}.`\n\t\t\t);\n\t\t})\n\t);\n\n\treturn nested.flat().sort();\n};\n\nconst renameIfPresent = async (source: string, destination: string) => {\n\ttry {\n\t\tawait rename(source, destination);\n\n\t\treturn true;\n\t} catch (error) {\n\t\tif (\n\t\t\ttypeof error === 'object' &&\n\t\t\terror !== null &&\n\t\t\tReflect.get(error, 'code') === 'ENOENT'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tthrow error;\n\t}\n};\n\nconst installStagedDirectory = async (staging: string, destination: string) => {\n\tconst backup = `${destination}.previous-${crypto.randomUUID()}`;\n\tconst moved = await renameIfPresent(destination, backup);\n\ttry {\n\t\tawait rename(staging, destination);\n\t\tif (moved) await rm(backup, { force: true, recursive: true });\n\t} catch (error) {\n\t\tif (moved) await rename(backup, destination);\n\t\tthrow error;\n\t}\n};\n\nconst assetModuleSource = (\n\tassets: { asset: string; path: string }[],\n\tbundleId: string\n) => `${EXPO_GENERATED_HEADER}import { Asset } from 'expo-asset';\nimport { Directory, File, Paths } from 'expo-file-system';\n\ndeclare const require: (path: string) => number;\nconst BUNDLE_ID = ${JSON.stringify(bundleId)};\nconst ASSETS = [\n${assets.map(({ asset, path }) => `\\t{ module: require(${JSON.stringify(asset)}), path: ${JSON.stringify(path)} }`).join(',\\n')}\n] as const;\n\nexport const materializeAbsoluteWebBundle = async () => {\n\tconst root = new Directory(Paths.document, 'absolutejs-web', BUNDLE_ID);\n\troot.create({ idempotent: true, intermediates: true });\n\tfor (const entry of ASSETS) {\n\t\tconst parts = entry.path.split('/');\n\t\tconst name = parts.pop();\n\t\tif (!name) throw new Error('AbsoluteJS embedded asset path is invalid.');\n\t\tconst directory = new Directory(root, ...parts);\n\t\tdirectory.create({ idempotent: true, intermediates: true });\n\t\tconst destination = new File(directory, name);\n\t\tif (destination.exists) continue;\n\t\tconst asset = await Asset.fromModule(entry.module).downloadAsync();\n\t\tif (!asset.localUri) throw new Error('Expo did not materialize an embedded AbsoluteJS asset.');\n\t\tnew File(asset.localUri).copy(destination);\n\t}\n\n\treturn new File(root, 'index.html').uri;\n};\n`;\n\nexport const syncAbsoluteExpoWebAssets = async (\n\tconfig: NormalizedAbsoluteMobileConfig\n) => {\n\tif (config.engine !== 'expo')\n\t\tthrow new TypeError('Expo asset sync requires mobile.engine: expo.');\n\tconst marker = join(config.nativeProjectDirectory, EXPO_PROJECT_MARKER);\n\tif (!(await exists(marker))) {\n\t\tthrow new TypeError(\n\t\t\t'Expo asset sync requires an AbsoluteJS-managed Expo project. Run mobile init first.'\n\t\t);\n\t}\n\tconst manifestPath = join(\n\t\tconfig.bundleDirectory,\n\t\t'absolute-mobile-manifest.json'\n\t);\n\tconst manifest: unknown = JSON.parse(await readFile(manifestPath, 'utf8'));\n\tconst appBuild =\n\t\ttypeof manifest === 'object' &&\n\t\tmanifest !== null &&\n\t\ttypeof Reflect.get(manifest, 'appBuild') === 'string'\n\t\t\t? String(Reflect.get(manifest, 'appBuild'))\n\t\t\t: undefined;\n\tif (!appBuild)\n\t\tthrow new TypeError('AbsoluteJS mobile manifest has no appBuild.');\n\tconst files = await walkFiles(config.bundleDirectory);\n\tconst bundleHash = createHash('sha256');\n\tconst filesWithContents = await Promise.all(\n\t\tfiles.map(async (file) => ({ contents: await readFile(file), file }))\n\t);\n\tfilesWithContents.forEach(({ contents, file }) => {\n\t\tbundleHash.update(\n\t\t\trelative(config.bundleDirectory, file).replaceAll('\\\\', '/')\n\t\t);\n\t\tbundleHash.update('\\0');\n\t\tbundleHash.update(contents);\n\t\tbundleHash.update('\\0');\n\t});\n\tconst bundleId = `amexpo_${bundleHash.digest('hex')}`;\n\tconst destination = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'assets',\n\t\t'absolute'\n\t);\n\tawait mkdir(dirname(destination), { recursive: true });\n\tconst staging = await mkdtemp(\n\t\tjoin(dirname(destination), `.${basename(destination)}.stage-`)\n\t);\n\tlet assets: { asset: string; path: string }[];\n\ttry {\n\t\tassets = await Promise.all(\n\t\t\tfiles.map(async (source, index) => {\n\t\t\t\tconst name = `${String(index).padStart(6, '0')}${EXPO_ASSET_EXTENSION}`;\n\t\t\t\tawait cp(source, join(staging, name));\n\n\t\t\t\treturn {\n\t\t\t\t\tasset: portableRelative(\n\t\t\t\t\t\tjoin(config.nativeProjectDirectory, 'src', 'generated'),\n\t\t\t\t\t\tjoin(destination, name)\n\t\t\t\t\t),\n\t\t\t\t\tpath: relative(config.bundleDirectory, source).replaceAll(\n\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\t\tawait installStagedDirectory(staging, destination);\n\t} catch (error) {\n\t\tawait rm(staging, { force: true, recursive: true });\n\t\tthrow error;\n\t}\n\tconst generated = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'src',\n\t\t'generated',\n\t\t'webAssets.ts'\n\t);\n\tawait writeManagedFile(\n\t\tgenerated,\n\t\tassetModuleSource(assets, bundleId),\n\t\ttrue\n\t);\n\n\treturn { appBuild, assets: assets.length, bundleId, path: destination };\n};\n",
44
44
  "export * from './artifactStore';\nexport * from './androidRelease';\nexport * from './androidUpgradeConformance';\nexport * from './iosRelease';\nexport * from './iosConformance';\nexport * from './iosSimulatorController';\nexport * from './iosPhysicalDeviceTransport';\nexport * from './iosNativeWatcher';\nexport * from './remoteMacProtocol';\nexport * from './iosDeviceAcceptance';\nexport * from './associationFiles';\nexport * from './buildMetadata';\nexport * from './buildPipeline';\nexport * from './buildRelease';\nexport * from './capacitorBundle';\nexport * from './syncSchema';\nexport * from './syncRemediation';\nexport * from './deviceCapabilities';\nexport * from './expoBridge';\nexport * from './expoDevController';\nexport * from './expoProject';\nexport * from './capacitorProject';\nexport * from './config';\nexport * from './client';\nexport * from './ciWorkflow';\nexport * from './compatibilityDispatcher';\nexport * from './materializedBundle';\nexport * from './mobilePreview';\nexport * from './nativeDeepLinks';\nexport * from './nativeDeviceCapabilities';\nexport * from './nativeAuth';\nexport * from './pageProtocol';\nexport * from './producerContext';\nexport * from './releaseArtifact';\nexport * from './releasePublisher';\nexport * from './routeMetadataTransform';\nexport * from './routeMatcher';\nexport * from './shellHttp';\nexport * from './transport';\n",
45
- "var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __name = (target, name) => {\n Object.defineProperty(target, \"name\", {\n value: name,\n enumerable: false,\n configurable: true\n });\n return target;\n};\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => (key in obj) ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\nvar __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol(\"metadata\")] ?? null)];\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== undefined && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({\n kind: __decoratorStrings[kind],\n name,\n metadata,\n addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null))\n});\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length;i < n; i++)\n flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : {\n get [name]() {\n return __privateGet(this, extra);\n },\n set [name](x) {\n __privateSet(this, extra, x);\n }\n }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1;i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => (name in x) };\n if (k ^ 3)\n access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2)\n access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? undefined : { get: desc.get, set: desc.set } : target, ctx);\n done._ = 1;\n if (k ^ 4 || it === undefined)\n __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null)\n __typeError(\"Object expected\");\n else\n __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\n\n// src/client/runtimeTransport.ts\nvar RUNTIME_TRANSPORT = Symbol.for(\"@absolutejs/sync/client-runtime-transport\");\nvar host = globalThis;\nvar isRegistry = (value) => typeof value === \"object\" && value !== null && Array.isArray(Reflect.get(value, \"installations\")) && Array.isArray(Reflect.get(value, \"clients\"));\nvar registry = (() => {\n const existing = host[RUNTIME_TRANSPORT];\n if (isRegistry(existing))\n return existing;\n if (typeof existing === \"object\" && existing !== null && Array.isArray(Reflect.get(existing, \"installations\"))) {\n Reflect.set(existing, \"clients\", []);\n return existing;\n }\n const created = { clients: [], installations: [] };\n Object.defineProperty(host, RUNTIME_TRANSPORT, {\n configurable: false,\n enumerable: false,\n value: created,\n writable: false\n });\n return created;\n})();\nvar getSyncClientRuntimeTransport = () => registry.installations.at(-1)?.transport;\nvar installSyncClientRuntimeTransport = (transport) => {\n const installation = { transport };\n registry.installations.push(installation);\n return () => {\n const index = registry.installations.indexOf(installation);\n if (index >= 0)\n registry.installations.splice(index, 1);\n };\n};\nvar registerSyncRuntimeClient = (client) => {\n registry.clients.push(client);\n return () => {\n const index = registry.clients.indexOf(client);\n if (index >= 0)\n registry.clients.splice(index, 1);\n };\n};\nvar maximum = (values) => {\n const present = values.filter((value) => value !== undefined);\n return present.length === 0 ? undefined : Math.max(...present);\n};\nvar minimum = (values) => {\n const present = values.filter((value) => value !== undefined);\n return present.length === 0 ? undefined : Math.min(...present);\n};\nvar inspectSyncRuntime = async () => {\n const clients = [...registry.clients];\n const statuses = clients.map((client) => client.status());\n const deadLetters = (await Promise.all(clients.map((client) => client.listDeadLetters()))).flat().map((record) => ({\n attempts: record.attempts,\n ...record.rejection?.code ? { code: record.rejection.code } : {},\n createdAt: record.createdAt,\n ...record.deadLetteredAt === undefined ? {} : { deadLetteredAt: record.deadLetteredAt },\n ...record.rejection?.kind ? { kind: record.rejection.kind } : {},\n ...record.rejection?.message ? { message: record.rejection.message } : {},\n name: record.name,\n operationId: record.operationId\n })).sort((left, right) => (left.deadLetteredAt ?? left.createdAt) - (right.deadLetteredAt ?? right.createdAt) || left.operationId.localeCompare(right.operationId));\n const lastError = statuses.findLast((status) => status.lastError)?.lastError;\n return {\n automaticResolutions: statuses.reduce((total, status) => total + status.automaticResolutions, 0),\n clients: clients.length,\n conflicts: deadLetters.filter((record) => record.kind === \"conflict\").length,\n deadLetters,\n ...lastError ? { lastError } : {},\n ...maximum(statuses.map((status) => status.lastSuccessfulPullAt)) === undefined ? {} : {\n lastSuccessfulPullAt: maximum(statuses.map((status) => status.lastSuccessfulPullAt))\n },\n ...maximum(statuses.map((status) => status.lastSuccessfulPushAt)) === undefined ? {} : {\n lastSuccessfulPushAt: maximum(statuses.map((status) => status.lastSuccessfulPushAt))\n },\n ...minimum(statuses.map((status) => status.oldestDeadLetterAt)) === undefined ? {} : {\n oldestDeadLetterAt: minimum(statuses.map((status) => status.oldestDeadLetterAt))\n },\n ...minimum(statuses.map((status) => status.oldestPendingAt)) === undefined ? {} : {\n oldestPendingAt: minimum(statuses.map((status) => status.oldestPendingAt))\n },\n pending: statuses.reduce((total, status) => total + status.pending, 0)\n };\n};\nvar clientWithDeadLetter = async (operationId) => {\n for (const client of registry.clients)\n if ((await client.listDeadLetters()).some((record) => record.operationId === operationId))\n return client;\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n};\nvar retrySyncRuntimeDeadLetter = async (operationId) => (await clientWithDeadLetter(operationId)).retryDeadLetter(operationId);\nvar discardSyncRuntimeDeadLetter = async (operationId) => (await clientWithDeadLetter(operationId)).discardDeadLetter(operationId);\nvar rebaseSyncRuntimeDeadLetter = async (operationId, args) => (await clientWithDeadLetter(operationId)).rebaseDeadLetter(operationId, args);\nexport {\n retrySyncRuntimeDeadLetter,\n registerSyncRuntimeClient,\n rebaseSyncRuntimeDeadLetter,\n installSyncClientRuntimeTransport,\n inspectSyncRuntime,\n getSyncClientRuntimeTransport,\n discardSyncRuntimeDeadLetter\n};\n\n//# debugId=52912A34E403B16964756E2164756E21\n//# sourceMappingURL=runtimeTransport.js.map\n",
45
+ "var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __name = (target, name) => {\n Object.defineProperty(target, \"name\", {\n value: name,\n enumerable: false,\n configurable: true\n });\n return target;\n};\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => (key in obj) ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\nvar __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol(\"metadata\")] ?? null)];\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== undefined && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({\n kind: __decoratorStrings[kind],\n name,\n metadata,\n addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null))\n});\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length;i < n; i++)\n flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : {\n get [name]() {\n return __privateGet(this, extra);\n },\n set [name](x) {\n __privateSet(this, extra, x);\n }\n }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1;i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => (name in x) };\n if (k ^ 3)\n access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2)\n access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? undefined : { get: desc.get, set: desc.set } : target, ctx);\n done._ = 1;\n if (k ^ 4 || it === undefined)\n __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null)\n __typeError(\"Object expected\");\n else\n __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\n\n// src/client/runtimeTransport.ts\nvar RUNTIME_TRANSPORT = Symbol.for(\"@absolutejs/sync/client-runtime-transport\");\nvar host = globalThis;\nvar isRegistry = (value) => typeof value === \"object\" && value !== null && Array.isArray(Reflect.get(value, \"installations\")) && Array.isArray(Reflect.get(value, \"clients\"));\nvar registry = (() => {\n const existing = host[RUNTIME_TRANSPORT];\n if (isRegistry(existing))\n return existing;\n if (typeof existing === \"object\" && existing !== null && Array.isArray(Reflect.get(existing, \"installations\"))) {\n Reflect.set(existing, \"clients\", []);\n return existing;\n }\n const created = { clients: [], installations: [] };\n Object.defineProperty(host, RUNTIME_TRANSPORT, {\n configurable: false,\n enumerable: false,\n value: created,\n writable: false\n });\n return created;\n})();\nvar getSyncClientRuntimeTransport = () => registry.installations.at(-1)?.transport;\nvar installSyncClientRuntimeTransport = (transport) => {\n const installation = { transport };\n registry.installations.push(installation);\n return () => {\n const index = registry.installations.indexOf(installation);\n if (index >= 0)\n registry.installations.splice(index, 1);\n };\n};\nvar registerSyncRuntimeClient = (client) => {\n registry.clients.push(client);\n return () => {\n const index = registry.clients.indexOf(client);\n if (index >= 0)\n registry.clients.splice(index, 1);\n };\n};\nvar maximum = (values) => {\n const present = values.filter((value) => value !== undefined);\n return present.length === 0 ? undefined : Math.max(...present);\n};\nvar minimum = (values) => {\n const present = values.filter((value) => value !== undefined);\n return present.length === 0 ? undefined : Math.min(...present);\n};\nvar inspectSyncRuntime = async () => {\n const clients = [...registry.clients];\n const statuses = clients.map((client) => client.status());\n const deadLetters = (await Promise.all(clients.map((client) => client.listDeadLetters()))).flat().map((record) => ({\n attempts: record.attempts,\n ...record.rejection?.code ? { code: record.rejection.code } : {},\n createdAt: record.createdAt,\n ...record.deadLetteredAt === undefined ? {} : { deadLetteredAt: record.deadLetteredAt },\n ...record.rejection?.kind ? { kind: record.rejection.kind } : {},\n ...record.rejection?.message ? { message: record.rejection.message } : {},\n name: record.name,\n operationId: record.operationId\n })).sort((left, right) => (left.deadLetteredAt ?? left.createdAt) - (right.deadLetteredAt ?? right.createdAt) || left.operationId.localeCompare(right.operationId));\n const lastError = statuses.findLast((status) => status.lastError)?.lastError;\n return {\n automaticResolutions: statuses.reduce((total, status) => total + status.automaticResolutions, 0),\n clients: clients.length,\n conflicts: deadLetters.filter((record) => record.kind === \"conflict\").length,\n deadLetters,\n ...lastError ? { lastError } : {},\n ...maximum(statuses.map((status) => status.lastSuccessfulPullAt)) === undefined ? {} : {\n lastSuccessfulPullAt: maximum(statuses.map((status) => status.lastSuccessfulPullAt))\n },\n ...maximum(statuses.map((status) => status.lastSuccessfulPushAt)) === undefined ? {} : {\n lastSuccessfulPushAt: maximum(statuses.map((status) => status.lastSuccessfulPushAt))\n },\n ...minimum(statuses.map((status) => status.oldestDeadLetterAt)) === undefined ? {} : {\n oldestDeadLetterAt: minimum(statuses.map((status) => status.oldestDeadLetterAt))\n },\n ...minimum(statuses.map((status) => status.oldestPendingAt)) === undefined ? {} : {\n oldestPendingAt: minimum(statuses.map((status) => status.oldestPendingAt))\n },\n pending: statuses.reduce((total, status) => total + status.pending, 0)\n };\n};\nvar clientWithDeadLetter = async (operationId) => {\n for (const client of registry.clients)\n if ((await client.listDeadLetters()).some((record) => record.operationId === operationId))\n return client;\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n};\nvar retrySyncRuntimeDeadLetter = async (operationId) => (await clientWithDeadLetter(operationId)).retryDeadLetter(operationId);\nvar discardSyncRuntimeDeadLetter = async (operationId) => (await clientWithDeadLetter(operationId)).discardDeadLetter(operationId);\nvar rebaseSyncRuntimeDeadLetter = async (operationId, args) => (await clientWithDeadLetter(operationId)).rebaseDeadLetter(operationId, args);\nexport {\n discardSyncRuntimeDeadLetter,\n getSyncClientRuntimeTransport,\n inspectSyncRuntime,\n installSyncClientRuntimeTransport,\n rebaseSyncRuntimeDeadLetter,\n registerSyncRuntimeClient,\n retrySyncRuntimeDeadLetter\n};\n\n//# debugId=74366468048A0B9164756E2164756E21\n//# sourceMappingURL=runtimeTransport.js.map\n",
46
46
  "import {\n\tdiscardSyncRuntimeDeadLetter,\n\tinspectSyncRuntime,\n\trebaseSyncRuntimeDeadLetter,\n\tretrySyncRuntimeDeadLetter,\n\ttype SyncRuntimeInspection\n} from '@absolutejs/sync/client/runtime';\n\nexport type AbsoluteMobileSyncRemediation = {\n\tdiscard: (operationId: string) => Promise<void>;\n\tinspect: () => Promise<SyncRuntimeInspection>;\n\trebase: (operationId: string, args: unknown) => Promise<string>;\n\tretry: (operationId: string) => Promise<void>;\n};\n\ntype Installation = { bridge: AbsoluteMobileSyncRemediation };\ntype Registry = { installations: Installation[] };\nconst REMEDIATION_REGISTRY = Symbol.for('@absolutejs/mobile-sync-remediation');\nconst LAST_INSTALLATION_OFFSET = -1;\nconst isRegistry = (value: unknown): value is Registry =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\tArray.isArray(Reflect.get(value, 'installations'));\nconst resolveRegistry = () => {\n\tconst existing: unknown = Reflect.get(globalThis, REMEDIATION_REGISTRY);\n\tif (isRegistry(existing)) return existing;\n\tconst created: Registry = { installations: [] };\n\tObject.defineProperty(globalThis, REMEDIATION_REGISTRY, {\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t\tvalue: created,\n\t\twritable: false\n\t});\n\n\treturn created;\n};\nconst registry = resolveRegistry();\n\n/** Install the native shell's framework-neutral, redacted remediation bridge. */\nexport const getAbsoluteMobileSyncRemediation = () =>\n\tregistry.installations.at(LAST_INSTALLATION_OFFSET)?.bridge;\nexport const installAbsoluteMobileSyncRemediation = (\n\tbridge: AbsoluteMobileSyncRemediation = {\n\t\tdiscard: discardSyncRuntimeDeadLetter,\n\t\tinspect: inspectSyncRuntime,\n\t\trebase: rebaseSyncRuntimeDeadLetter,\n\t\tretry: retrySyncRuntimeDeadLetter\n\t}\n) => {\n\tconst installation: Installation = { bridge };\n\tregistry.installations.push(installation);\n\n\treturn () => {\n\t\tconst index = registry.installations.indexOf(installation);\n\t\tif (index >= 0) registry.installations.splice(index, 1);\n\t};\n};\n",
47
- "export const ABSOLUTE_EXPO_BRIDGE_FORMAT = 1 as const;\nexport const ABSOLUTE_EXPO_BRIDGE_MAX_BYTES = 64 * 1024;\n\nexport const ABSOLUTE_EXPO_BRIDGE_METHODS = [\n\t'devices.haptics.impact',\n\t'http.fetch'\n] as const;\n\nexport type AbsoluteExpoBridgeMethod =\n\t(typeof ABSOLUTE_EXPO_BRIDGE_METHODS)[number];\n\nexport type AbsoluteExpoBridgeRequest = {\n\tformat: typeof ABSOLUTE_EXPO_BRIDGE_FORMAT;\n\tid: string;\n\tkind: 'request';\n\tmethod: AbsoluteExpoBridgeMethod;\n\tparams: Record<string, unknown>;\n\tpath: string;\n};\n\nexport type AbsoluteExpoBridgeResponse = {\n\tformat: typeof ABSOLUTE_EXPO_BRIDGE_FORMAT;\n\tid: string;\n\tkind: 'response';\n\tresult?: unknown;\n\terror?: { code: string; message: string };\n};\n\nexport type AbsoluteExpoBridgeEvent = {\n\tformat: typeof ABSOLUTE_EXPO_BRIDGE_FORMAT;\n\tkind: 'event';\n\tevent: 'ready' | 'navigation';\n\tpath: string;\n\tpayload?: Record<string, unknown>;\n};\n\nexport type AbsoluteExpoBridgeMessage =\n\t| AbsoluteExpoBridgeEvent\n\t| AbsoluteExpoBridgeRequest\n\t| AbsoluteExpoBridgeResponse;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t!Array.isArray(value) &&\n\t(Object.getPrototypeOf(value) === Object.prototype ||\n\t\tObject.getPrototypeOf(value) === null);\n\nconst validId = (value: unknown) =>\n\ttypeof value === 'string' && /^[A-Za-z0-9_-]{1,80}$/u.test(value);\n\nconst validPath = (value: unknown) =>\n\ttypeof value === 'string' &&\n\tvalue.startsWith('/') &&\n\t!value.startsWith('//') &&\n\tvalue.length <= 4096;\n\nconst parseRequest = (value: Record<string, unknown>) => {\n\tif (typeof value.id !== 'string' || !validId(value.id))\n\t\tthrow new TypeError('Expo bridge request id is invalid.');\n\tconst method = ABSOLUTE_EXPO_BRIDGE_METHODS.find(\n\t\t(candidate) => candidate === value.method\n\t);\n\tif (!method) {\n\t\tthrow new TypeError('Expo bridge method is not allowed.');\n\t}\n\tif (!isRecord(value.params))\n\t\tthrow new TypeError('Expo bridge request params must be an object.');\n\tif (typeof value.path !== 'string' || !validPath(value.path))\n\t\tthrow new TypeError('Expo bridge request path is invalid.');\n\tif (method === 'devices.haptics.impact') {\n\t\tconst styles = new Set([\n\t\t\t'error',\n\t\t\t'heavy',\n\t\t\t'light',\n\t\t\t'medium',\n\t\t\t'selection',\n\t\t\t'success',\n\t\t\t'vibrate',\n\t\t\t'warning'\n\t\t]);\n\t\tif (\n\t\t\ttypeof value.params.style !== 'string' ||\n\t\t\t!styles.has(value.params.style)\n\t\t)\n\t\t\tthrow new TypeError('Expo bridge haptics style is invalid.');\n\t\tif (\n\t\t\tvalue.params.durationMs !== undefined &&\n\t\t\t(typeof value.params.durationMs !== 'number' ||\n\t\t\t\t!Number.isFinite(value.params.durationMs) ||\n\t\t\t\tvalue.params.durationMs < 0 ||\n\t\t\t\tvalue.params.durationMs > 10_000)\n\t\t) {\n\t\t\tthrow new TypeError('Expo bridge haptics duration is invalid.');\n\t\t}\n\t}\n\tif (method === 'http.fetch') {\n\t\tif (typeof value.params.url !== 'string')\n\t\t\tthrow new TypeError('Expo bridge HTTP URL is invalid.');\n\t\tconst url = new URL(value.params.url);\n\t\tconst loopbackHttp =\n\t\t\turl.protocol === 'http:' &&\n\t\t\t(url.hostname === 'localhost' ||\n\t\t\t\turl.hostname === '127.0.0.1' ||\n\t\t\t\turl.hostname === '[::1]');\n\t\tif (url.protocol !== 'https:' && !loopbackHttp)\n\t\t\tthrow new TypeError('Expo bridge HTTP URL must use HTTPS.');\n\t\tif (value.params.method !== 'GET')\n\t\t\tthrow new TypeError('Expo bridge HTTP method is not allowed.');\n\t\tif (!isRecord(value.params.headers))\n\t\t\tthrow new TypeError('Expo bridge HTTP headers must be an object.');\n\t\tconst headersAllowed = Object.entries(value.params.headers).every(\n\t\t\t([name, header]) =>\n\t\t\t\ttypeof header === 'string' &&\n\t\t\t\t(name.toLowerCase() === 'accept' ||\n\t\t\t\t\tname.toLowerCase().startsWith('x-absolute-mobile-'))\n\t\t);\n\t\tif (!headersAllowed) {\n\t\t\tthrow new TypeError('Expo bridge HTTP header is not allowed.');\n\t\t}\n\t}\n\n\treturn {\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tid: value.id,\n\t\tkind: 'request' as const,\n\t\tmethod,\n\t\tparams: value.params,\n\t\tpath: value.path\n\t};\n};\n\nconst parseResponse = (value: Record<string, unknown>) => {\n\tif (typeof value.id !== 'string' || !validId(value.id))\n\t\tthrow new TypeError('Expo bridge response id is invalid.');\n\tif (value.error !== undefined) {\n\t\tif (\n\t\t\t!isRecord(value.error) ||\n\t\t\ttypeof value.error.code !== 'string' ||\n\t\t\ttypeof value.error.message !== 'string'\n\t\t) {\n\t\t\tthrow new TypeError('Expo bridge response error is invalid.');\n\t\t}\n\t\tif (value.result !== undefined)\n\t\t\tthrow new TypeError(\n\t\t\t\t'Expo bridge response cannot contain result and error.'\n\t\t\t);\n\t}\n\n\tif (isRecord(value.error)) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\tcode: String(value.error.code),\n\t\t\t\tmessage: String(value.error.message)\n\t\t\t},\n\t\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\t\tid: value.id,\n\t\t\tkind: 'response' as const\n\t\t};\n\t}\n\n\treturn {\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tid: value.id,\n\t\tkind: 'response' as const,\n\t\tresult: value.result\n\t};\n};\n\nconst parseEvent = (value: Record<string, unknown>) => {\n\tif (value.event !== 'ready' && value.event !== 'navigation') {\n\t\tthrow new TypeError('Expo bridge event is not allowed.');\n\t}\n\tif (typeof value.path !== 'string' || !validPath(value.path))\n\t\tthrow new TypeError('Expo bridge event path is invalid.');\n\tif (value.payload !== undefined && !isRecord(value.payload)) {\n\t\tthrow new TypeError('Expo bridge event payload must be an object.');\n\t}\n\n\treturn {\n\t\tevent: value.event,\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tkind: 'event' as const,\n\t\tpath: value.path,\n\t\t...(value.payload ? { payload: value.payload } : {})\n\t};\n};\n\nexport const createAbsoluteExpoBridgeError = (\n\tid: string,\n\tcode: string,\n\tmessage: string\n) =>\n\tparseResponse({\n\t\terror: { code, message },\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tid,\n\t\tkind: 'response'\n\t});\nexport const createAbsoluteExpoBridgeResponse = (id: string, result: unknown) =>\n\tparseResponse({\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tid,\n\t\tkind: 'response',\n\t\tresult\n\t});\nexport const parseAbsoluteExpoBridgeMessage = (source: string) => {\n\tif (\n\t\tnew TextEncoder().encode(source).byteLength >\n\t\tABSOLUTE_EXPO_BRIDGE_MAX_BYTES\n\t)\n\t\tthrow new TypeError('Expo bridge message exceeds 64 KiB.');\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(source);\n\t} catch (cause) {\n\t\tthrow new TypeError('Expo bridge message is not valid JSON.', {\n\t\t\tcause\n\t\t});\n\t}\n\tif (!isRecord(parsed) || parsed.format !== ABSOLUTE_EXPO_BRIDGE_FORMAT) {\n\t\tthrow new TypeError('Expo bridge message format is unsupported.');\n\t}\n\tif (parsed.kind === 'request') return parseRequest(parsed);\n\tif (parsed.kind === 'response') return parseResponse(parsed);\n\tif (parsed.kind === 'event') return parseEvent(parsed);\n\n\tthrow new TypeError('Expo bridge message kind is unsupported.');\n};\n",
47
+ "export const ABSOLUTE_EXPO_BRIDGE_FORMAT = 3 as const;\nexport const ABSOLUTE_EXPO_BRIDGE_MAX_BYTES = 64 * 1024;\n\nexport const ABSOLUTE_EXPO_BRIDGE_METHODS = [\n\t'devices.haptics.impact',\n\t'http.fetch',\n\t'auth.signIn',\n\t'auth.signOut',\n\t'auth.status',\n\t'sync.store.begin',\n\t'sync.store.deleteNamespace',\n\t'sync.store.end',\n\t'sync.store.schema',\n\t'sync.tx.deleteCollection',\n\t'sync.tx.deleteMutation',\n\t'sync.tx.getCollection',\n\t'sync.tx.getInstallationId',\n\t'sync.tx.getMutation',\n\t'sync.tx.listCollections',\n\t'sync.tx.listMutations',\n\t'sync.tx.putCollection',\n\t'sync.tx.putMutation',\n\t'sync.tx.setInstallationId',\n\t'sync.socket.close',\n\t'sync.socket.open',\n\t'sync.socket.sendChunk'\n] as const;\n\nexport type AbsoluteExpoBridgeMethod =\n\t(typeof ABSOLUTE_EXPO_BRIDGE_METHODS)[number];\n\nexport type AbsoluteExpoBridgeRequest = {\n\tformat: typeof ABSOLUTE_EXPO_BRIDGE_FORMAT;\n\tid: string;\n\tkind: 'request';\n\tmethod: AbsoluteExpoBridgeMethod;\n\tparams: Record<string, unknown>;\n\tpath: string;\n};\n\nexport type AbsoluteExpoBridgeResponse = {\n\tformat: typeof ABSOLUTE_EXPO_BRIDGE_FORMAT;\n\tid: string;\n\tkind: 'response';\n\tresult?: unknown;\n\terror?: { code: string; message: string };\n};\n\nexport type AbsoluteExpoBridgeEvent = {\n\tformat: typeof ABSOLUTE_EXPO_BRIDGE_FORMAT;\n\tkind: 'event';\n\tevent:\n\t\t| 'ready'\n\t\t| 'navigation'\n\t\t| 'auth.principal'\n\t\t| 'sync.socket'\n\t\t| 'sync.wake';\n\tpath: string;\n\tpayload?: Record<string, unknown>;\n};\n\nexport type AbsoluteExpoBridgeMessage =\n\t| AbsoluteExpoBridgeEvent\n\t| AbsoluteExpoBridgeRequest\n\t| AbsoluteExpoBridgeResponse;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t!Array.isArray(value) &&\n\t(Object.getPrototypeOf(value) === Object.prototype ||\n\t\tObject.getPrototypeOf(value) === null);\n\nconst validId = (value: unknown) =>\n\ttypeof value === 'string' && /^[A-Za-z0-9_-]{1,80}$/u.test(value);\n\nconst validPath = (value: unknown) =>\n\ttypeof value === 'string' &&\n\tvalue.startsWith('/') &&\n\t!value.startsWith('//') &&\n\tvalue.length <= 4096;\n\nconst parseRequest = (value: Record<string, unknown>) => {\n\tif (typeof value.id !== 'string' || !validId(value.id))\n\t\tthrow new TypeError('Expo bridge request id is invalid.');\n\tconst method = ABSOLUTE_EXPO_BRIDGE_METHODS.find(\n\t\t(candidate) => candidate === value.method\n\t);\n\tif (!method) {\n\t\tthrow new TypeError('Expo bridge method is not allowed.');\n\t}\n\tif (!isRecord(value.params))\n\t\tthrow new TypeError('Expo bridge request params must be an object.');\n\tif (typeof value.path !== 'string' || !validPath(value.path))\n\t\tthrow new TypeError('Expo bridge request path is invalid.');\n\tif (method === 'devices.haptics.impact') {\n\t\tconst styles = new Set([\n\t\t\t'error',\n\t\t\t'heavy',\n\t\t\t'light',\n\t\t\t'medium',\n\t\t\t'selection',\n\t\t\t'success',\n\t\t\t'vibrate',\n\t\t\t'warning'\n\t\t]);\n\t\tif (\n\t\t\ttypeof value.params.style !== 'string' ||\n\t\t\t!styles.has(value.params.style)\n\t\t)\n\t\t\tthrow new TypeError('Expo bridge haptics style is invalid.');\n\t\tif (\n\t\t\tvalue.params.durationMs !== undefined &&\n\t\t\t(typeof value.params.durationMs !== 'number' ||\n\t\t\t\t!Number.isFinite(value.params.durationMs) ||\n\t\t\t\tvalue.params.durationMs < 0 ||\n\t\t\t\tvalue.params.durationMs > 10_000)\n\t\t) {\n\t\t\tthrow new TypeError('Expo bridge haptics duration is invalid.');\n\t\t}\n\t}\n\tif (method === 'http.fetch') {\n\t\tif (typeof value.params.url !== 'string')\n\t\t\tthrow new TypeError('Expo bridge HTTP URL is invalid.');\n\t\tconst url = new URL(value.params.url);\n\t\tconst loopbackHttp =\n\t\t\turl.protocol === 'http:' &&\n\t\t\t(url.hostname === 'localhost' ||\n\t\t\t\turl.hostname === '127.0.0.1' ||\n\t\t\t\turl.hostname === '[::1]');\n\t\tif (url.protocol !== 'https:' && !loopbackHttp)\n\t\t\tthrow new TypeError('Expo bridge HTTP URL must use HTTPS.');\n\t\tif (\n\t\t\ttypeof value.params.method !== 'string' ||\n\t\t\t!['DELETE', 'GET', 'PATCH', 'POST', 'PUT'].includes(\n\t\t\t\tvalue.params.method\n\t\t\t)\n\t\t)\n\t\t\tthrow new TypeError('Expo bridge HTTP method is not allowed.');\n\t\tif (\n\t\t\tvalue.params.body !== undefined &&\n\t\t\ttypeof value.params.body !== 'string'\n\t\t)\n\t\t\tthrow new TypeError('Expo bridge HTTP body is invalid.');\n\t\tif (\n\t\t\ttypeof value.params.body === 'string' &&\n\t\t\tnew TextEncoder().encode(value.params.body).byteLength > 48 * 1024\n\t\t)\n\t\t\tthrow new TypeError('Expo bridge HTTP body exceeds 48 KiB.');\n\t\tif (\n\t\t\t(value.params.method === 'GET' ||\n\t\t\t\tvalue.params.method === 'DELETE') &&\n\t\t\tvalue.params.body !== undefined\n\t\t)\n\t\t\tthrow new TypeError(\n\t\t\t\t'Expo bridge HTTP method cannot contain a body.'\n\t\t\t);\n\t\tif (!isRecord(value.params.headers))\n\t\t\tthrow new TypeError('Expo bridge HTTP headers must be an object.');\n\t\tconst headersAllowed = Object.entries(value.params.headers).every(\n\t\t\t([name, header]) =>\n\t\t\t\ttypeof header === 'string' &&\n\t\t\t\t(name.toLowerCase() === 'accept' ||\n\t\t\t\t\tname.toLowerCase() === 'content-type' ||\n\t\t\t\t\tname.toLowerCase().startsWith('x-absolute-mobile-'))\n\t\t);\n\t\tif (!headersAllowed) {\n\t\t\tthrow new TypeError('Expo bridge HTTP header is not allowed.');\n\t\t}\n\t}\n\tif (method === 'auth.signIn') {\n\t\tif (\n\t\t\ttypeof value.params.email !== 'string' ||\n\t\t\tvalue.params.email.length > 320 ||\n\t\t\ttypeof value.params.signup !== 'boolean'\n\t\t)\n\t\t\tthrow new TypeError('Expo bridge Auth sign-in params are invalid.');\n\t}\n\tif (\n\t\t(method === 'auth.signOut' || method === 'auth.status') &&\n\t\tObject.keys(value.params).length !== 0\n\t)\n\t\tthrow new TypeError('Expo bridge Auth params must be empty.');\n\n\treturn {\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tid: value.id,\n\t\tkind: 'request' as const,\n\t\tmethod,\n\t\tparams: value.params,\n\t\tpath: value.path\n\t};\n};\n\nconst parseResponse = (value: Record<string, unknown>) => {\n\tif (typeof value.id !== 'string' || !validId(value.id))\n\t\tthrow new TypeError('Expo bridge response id is invalid.');\n\tif (value.error !== undefined) {\n\t\tif (\n\t\t\t!isRecord(value.error) ||\n\t\t\ttypeof value.error.code !== 'string' ||\n\t\t\ttypeof value.error.message !== 'string'\n\t\t) {\n\t\t\tthrow new TypeError('Expo bridge response error is invalid.');\n\t\t}\n\t\tif (value.result !== undefined)\n\t\t\tthrow new TypeError(\n\t\t\t\t'Expo bridge response cannot contain result and error.'\n\t\t\t);\n\t}\n\n\tif (isRecord(value.error)) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\tcode: String(value.error.code),\n\t\t\t\tmessage: String(value.error.message)\n\t\t\t},\n\t\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\t\tid: value.id,\n\t\t\tkind: 'response' as const\n\t\t};\n\t}\n\n\treturn {\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tid: value.id,\n\t\tkind: 'response' as const,\n\t\tresult: value.result\n\t};\n};\n\nconst parseEvent = (value: Record<string, unknown>) => {\n\tif (\n\t\tvalue.event !== 'ready' &&\n\t\tvalue.event !== 'navigation' &&\n\t\tvalue.event !== 'auth.principal' &&\n\t\tvalue.event !== 'sync.socket' &&\n\t\tvalue.event !== 'sync.wake'\n\t) {\n\t\tthrow new TypeError('Expo bridge event is not allowed.');\n\t}\n\tif (typeof value.path !== 'string' || !validPath(value.path))\n\t\tthrow new TypeError('Expo bridge event path is invalid.');\n\tif (value.payload !== undefined && !isRecord(value.payload)) {\n\t\tthrow new TypeError('Expo bridge event payload must be an object.');\n\t}\n\n\treturn {\n\t\tevent: value.event,\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tkind: 'event' as const,\n\t\tpath: value.path,\n\t\t...(value.payload ? { payload: value.payload } : {})\n\t};\n};\n\nexport const createAbsoluteExpoBridgeError = (\n\tid: string,\n\tcode: string,\n\tmessage: string\n) =>\n\tparseResponse({\n\t\terror: { code, message },\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tid,\n\t\tkind: 'response'\n\t});\nexport const createAbsoluteExpoBridgeResponse = (id: string, result: unknown) =>\n\tparseResponse({\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tid,\n\t\tkind: 'response',\n\t\tresult\n\t});\nexport const parseAbsoluteExpoBridgeMessage = (source: string) => {\n\tif (\n\t\tnew TextEncoder().encode(source).byteLength >\n\t\tABSOLUTE_EXPO_BRIDGE_MAX_BYTES\n\t)\n\t\tthrow new TypeError('Expo bridge message exceeds 64 KiB.');\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(source);\n\t} catch (cause) {\n\t\tthrow new TypeError('Expo bridge message is not valid JSON.', {\n\t\t\tcause\n\t\t});\n\t}\n\tif (!isRecord(parsed) || parsed.format !== ABSOLUTE_EXPO_BRIDGE_FORMAT) {\n\t\tthrow new TypeError('Expo bridge message format is unsupported.');\n\t}\n\tif (parsed.kind === 'request') return parseRequest(parsed);\n\tif (parsed.kind === 'response') return parseResponse(parsed);\n\tif (parsed.kind === 'event') return parseEvent(parsed);\n\n\tthrow new TypeError('Expo bridge message kind is unsupported.');\n};\n",
48
48
  "import { spawn, type ChildProcess } from 'node:child_process';\nimport { access } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\nimport {\n\tstartAbsoluteIosCaEnrollmentServer,\n\ttype AbsoluteIosCaEnrollmentServer\n} from './iosPhysicalDeviceTransport';\n\nexport type AbsoluteExpoDevPlatform = 'android' | 'ios';\nexport type AbsoluteExpoDevState =\n\t| 'building-android'\n\t| 'building-ios'\n\t| 'closed'\n\t| 'enrolling-trust'\n\t| 'failed'\n\t| 'preparing-native'\n\t| 'ready'\n\t| 'starting-metro';\n\nexport type AbsoluteExpoDevCommand = {\n\targs: string[];\n\tenv: Record<string, string>;\n\tplatform?: AbsoluteExpoDevPlatform;\n\trole: 'metro' | 'native-build' | 'native-prepare';\n};\n\nexport type AbsoluteExpoDevPlan = {\n\tcommands: AbsoluteExpoDevCommand[];\n\tmetroPort: number;\n\tproject: string;\n};\n\nexport type PlanAbsoluteExpoDevOptions = {\n\tandroidDevice?: string;\n\tandroidOrigin?: string;\n\tcertificateAuthorityPath?: string;\n\tiosDevice?: string;\n\tiosOrigin?: string;\n\tmetroHost?: string;\n\tmetroPort: number;\n\t/** The caller owns Metro, for example through a Remote Mac tunnel. */\n\tmetro?: 'external' | 'managed';\n\tplatforms: AbsoluteExpoDevPlatform[];\n};\n\nexport type AbsoluteExpoDevPhaseTiming = {\n\tdurationMs: number;\n\tphase: AbsoluteExpoDevState;\n};\n\nexport type StartAbsoluteExpoDevOptions = PlanAbsoluteExpoDevOptions & {\n\tconfig: NormalizedAbsoluteMobileConfig;\n\texecutable?: string;\n\tlog?: (message: string) => void;\n\tonPhaseTiming?: (timing: AbsoluteExpoDevPhaseTiming) => void;\n\tonStateChange?: (state: AbsoluteExpoDevState) => void;\n\tsignal?: AbortSignal;\n\tspawnProcess?: typeof spawn;\n\tstartCaEnrollmentServer?: typeof startAbsoluteIosCaEnrollmentServer;\n};\n\nexport type AbsoluteExpoDevSession = {\n\tclose: () => Promise<void>;\n\tmetroPort: number;\n\tplatforms: AbsoluteExpoDevPlatform[];\n\ttimings: Partial<Record<AbsoluteExpoDevState, number>>;\n};\n\nconst METRO_READY_TIMEOUT_MS = 60_000;\nconst PROCESS_CLOSE_TIMEOUT_MS = 2_000;\n\nconst commandEnvironment = (options: PlanAbsoluteExpoDevOptions) => ({\n\tABSOLUTE_EXPO_DEVELOPMENT: '1',\n\t...(options.certificateAuthorityPath\n\t\t? {\n\t\t\t\tABSOLUTE_EXPO_DEVELOPMENT_CA_PATH:\n\t\t\t\t\toptions.certificateAuthorityPath\n\t\t\t}\n\t\t: {}),\n\t...(options.androidOrigin\n\t\t? { EXPO_PUBLIC_ABSOLUTE_DEV_ANDROID_ORIGIN: options.androidOrigin }\n\t\t: {}),\n\t...(options.iosOrigin\n\t\t? { EXPO_PUBLIC_ABSOLUTE_DEV_IOS_ORIGIN: options.iosOrigin }\n\t\t: {}),\n\t...(options.metroHost\n\t\t? { REACT_NATIVE_PACKAGER_HOSTNAME: options.metroHost }\n\t\t: {})\n});\n\nexport const absoluteExpoExecutable = async (project: string) => {\n\tconst executable = join(project, 'node_modules', '.bin', 'expo');\n\ttry {\n\t\tawait access(executable);\n\n\t\treturn executable;\n\t} catch {\n\t\tthrow new TypeError(\n\t\t\t'Expo dependencies are not installed in the generated shell. Run `absolute mobile init --yes`.'\n\t\t);\n\t}\n};\n\nexport const planAbsoluteExpoDevSession = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\toptions: PlanAbsoluteExpoDevOptions\n): AbsoluteExpoDevPlan => {\n\tif (config.engine !== 'expo')\n\t\tthrow new TypeError('The Expo development controller requires Expo.');\n\tif (options.platforms.length === 0 && options.metro === 'external')\n\t\tthrow new TypeError(\n\t\t\t'External Expo execution requires a target platform.'\n\t\t);\n\tconst secureOrigin = [options.androidOrigin, options.iosOrigin].some(\n\t\t(origin) => origin && new URL(origin).protocol === 'https:'\n\t);\n\tif (secureOrigin && !options.certificateAuthorityPath)\n\t\tthrow new TypeError(\n\t\t\t'Expo HTTPS development requires the AbsoluteJS development CA certificate.'\n\t\t);\n\tconst env = commandEnvironment(options);\n\tconst metro: AbsoluteExpoDevCommand = {\n\t\targs: [\n\t\t\t'start',\n\t\t\t'--dev-client',\n\t\t\t'--host',\n\t\t\t'localhost',\n\t\t\t'--port',\n\t\t\tString(options.metroPort)\n\t\t],\n\t\tenv,\n\t\trole: 'metro'\n\t};\n\tconst prepare: AbsoluteExpoDevCommand | undefined =\n\t\toptions.platforms.length === 0\n\t\t\t? undefined\n\t\t\t: {\n\t\t\t\t\targs: [\n\t\t\t\t\t\t'prebuild',\n\t\t\t\t\t\t'--clean',\n\t\t\t\t\t\t'--no-install',\n\t\t\t\t\t\t'--platform',\n\t\t\t\t\t\toptions.platforms.length === 2\n\t\t\t\t\t\t\t? 'all'\n\t\t\t\t\t\t\t: (options.platforms[0] ?? 'all')\n\t\t\t\t\t],\n\t\t\t\t\tenv,\n\t\t\t\t\trole: 'native-prepare'\n\t\t\t\t};\n\tconst native = options.platforms.map((platform) => {\n\t\tconst device =\n\t\t\tplatform === 'android' ? options.androidDevice : options.iosDevice;\n\t\tconst command: AbsoluteExpoDevCommand = {\n\t\t\targs: [\n\t\t\t\t`run:${platform}`,\n\t\t\t\t'--no-bundler',\n\t\t\t\t'--port',\n\t\t\t\tString(options.metroPort),\n\t\t\t\t...(device ? ['--device', device] : [])\n\t\t\t],\n\t\t\tenv,\n\t\t\tplatform,\n\t\t\trole: 'native-build'\n\t\t};\n\n\t\treturn command;\n\t});\n\n\treturn {\n\t\tcommands: [\n\t\t\t...(prepare ? [prepare] : []),\n\t\t\t...(options.metro === 'external' ? [] : [metro]),\n\t\t\t...native\n\t\t],\n\t\tmetroPort: options.metroPort,\n\t\tproject: config.nativeProjectDirectory\n\t};\n};\n\nconst abortError = () =>\n\tnew DOMException('Expo development aborted.', 'AbortError');\n\nconst forwardLines = (\n\tprocess: ChildProcess,\n\tonLine: (line: string) => void\n) => {\n\tconst attach = (stream: NodeJS.ReadableStream | null) => {\n\t\tif (!stream) return;\n\t\tlet buffered = '';\n\t\tstream.on('data', (chunk: Buffer) => {\n\t\t\tbuffered += chunk.toString('utf8');\n\t\t\tlet newline = buffered.indexOf('\\n');\n\t\t\twhile (newline >= 0) {\n\t\t\t\tonLine(buffered.slice(0, newline).replace(/\\r$/u, ''));\n\t\t\t\tbuffered = buffered.slice(newline + 1);\n\t\t\t\tnewline = buffered.indexOf('\\n');\n\t\t\t}\n\t\t});\n\t\tstream.on('end', () => {\n\t\t\tif (buffered) onLine(buffered);\n\t\t});\n\t};\n\tattach(process.stdout);\n\tattach(process.stderr);\n};\n\nconst stopProcess = async (process: ChildProcess) => {\n\tif (process.exitCode !== null || process.killed) return;\n\tprocess.kill('SIGTERM');\n\tawait Promise.race([\n\t\tnew Promise<void>((resolve) => process.once('exit', () => resolve())),\n\t\tnew Promise<void>((resolve) =>\n\t\t\tsetTimeout(resolve, PROCESS_CLOSE_TIMEOUT_MS)\n\t\t)\n\t]);\n\tif (process.exitCode === null) process.kill('SIGKILL');\n};\n\nconst waitForExit = (process: ChildProcess) =>\n\tnew Promise<number>((resolve) => {\n\t\tif (process.exitCode !== null) {\n\t\t\tresolve(process.exitCode);\n\n\t\t\treturn;\n\t\t}\n\t\tprocess.once('exit', (code) => resolve(code ?? 1));\n\t});\n\ntype ExpoUtilityCommandOptions = {\n\tcwd: string;\n\tsignal?: AbortSignal;\n\tlog: (message: string) => void;\n};\n\nconst runUtilityCommand = async (\n\trun: typeof spawn,\n\tcommand: string,\n\targs: string[],\n\toptions: ExpoUtilityCommandOptions\n) => {\n\tconst child = run(command, args, {\n\t\tcwd: options.cwd,\n\t\tenv: process.env,\n\t\tstdio: ['ignore', 'pipe', 'pipe']\n\t});\n\tforwardLines(child, options.log);\n\tconst abort = () => void stopProcess(child);\n\toptions.signal?.addEventListener('abort', abort, { once: true });\n\tconst exitCode = await waitForExit(child);\n\toptions.signal?.removeEventListener('abort', abort);\n\tif (options.signal?.aborted) throw abortError();\n\n\treturn exitCode;\n};\n\nexport const startAbsoluteExpoDevSession = async (\n\toptions: StartAbsoluteExpoDevOptions\n) => {\n\tconst plan = planAbsoluteExpoDevSession(options.config, options);\n\tconst executable =\n\t\toptions.executable ?? (await absoluteExpoExecutable(plan.project));\n\tconst run = options.spawnProcess ?? spawn;\n\tconst log = options.log ?? (() => undefined);\n\tconst timings: Partial<Record<AbsoluteExpoDevState, number>> = {};\n\tlet caEnrollmentServer: AbsoluteIosCaEnrollmentServer | null = null;\n\tconst closeEnrollmentServer = async () => {\n\t\tconst server = caEnrollmentServer;\n\t\tcaEnrollmentServer = null;\n\t\tawait server?.close();\n\t};\n\tconst publishTiming = (phase: AbsoluteExpoDevState, durationMs: number) => {\n\t\ttimings[phase] = (timings[phase] ?? 0) + durationMs;\n\t\toptions.onPhaseTiming?.({ durationMs, phase });\n\t};\n\tconst setState = (state: AbsoluteExpoDevState) => {\n\t\toptions.onStateChange?.(state);\n\t};\n\tif (options.signal?.aborted) throw abortError();\n\tconst prepareCommand = plan.commands.find(\n\t\t(command) => command.role === 'native-prepare'\n\t);\n\tconst metroCommand = plan.commands.find(\n\t\t(command) => command.role === 'metro'\n\t);\n\tconst nativeCommands = plan.commands.filter(\n\t\t(command) => command.role === 'native-build'\n\t);\n\tconst runPrepareCommand = async (command: AbsoluteExpoDevCommand) => {\n\t\tsetState('preparing-native');\n\t\tconst prepareStarted = performance.now();\n\t\tconst prepareProcess = run(executable, command.args, {\n\t\t\tcwd: plan.project,\n\t\t\tenv: { ...process.env, ...command.env },\n\t\t\tstdio: ['ignore', 'pipe', 'pipe']\n\t\t});\n\t\tforwardLines(prepareProcess, (line) => {\n\t\t\tif (line) log(`[prebuild] ${line}`);\n\t\t});\n\t\tconst abortPrepare = () => void stopProcess(prepareProcess);\n\t\toptions.signal?.addEventListener('abort', abortPrepare, { once: true });\n\t\tconst prepareExit = await waitForExit(prepareProcess);\n\t\toptions.signal?.removeEventListener('abort', abortPrepare);\n\t\tif (options.signal?.aborted) throw abortError();\n\t\tif (prepareExit !== 0) {\n\t\t\tsetState('failed');\n\t\t\tthrow new Error(\n\t\t\t\t`Expo native preparation exited with status ${prepareExit}.`\n\t\t\t);\n\t\t}\n\t\tpublishTiming('preparing-native', performance.now() - prepareStarted);\n\t};\n\tif (prepareCommand) await runPrepareCommand(prepareCommand);\n\tconst managedMetro = metroCommand !== undefined;\n\tif (managedMetro) setState('starting-metro');\n\tconst metroStarted = performance.now();\n\tconst metro = metroCommand\n\t\t? run(executable, metroCommand.args, {\n\t\t\t\tcwd: plan.project,\n\t\t\t\tenv: { ...process.env, ...metroCommand.env },\n\t\t\t\tstdio: ['ignore', 'pipe', 'pipe']\n\t\t\t})\n\t\t: undefined;\n\tlet metroReady = false;\n\tlet resolveMetro: (() => void) | undefined;\n\tconst metroPromise = new Promise<void>((resolve, reject) => {\n\t\tif (!metro) {\n\t\t\tresolve();\n\n\t\t\treturn;\n\t\t}\n\t\tconst timeout = setTimeout(() => {\n\t\t\treject(\n\t\t\t\tnew Error('Expo Metro did not become ready within 60 seconds.')\n\t\t\t);\n\t\t}, METRO_READY_TIMEOUT_MS);\n\t\tresolveMetro = () => {\n\t\t\tclearTimeout(timeout);\n\t\t\tresolve();\n\t\t};\n\t\tmetro.once('exit', (code) => {\n\t\t\tif (!metroReady) {\n\t\t\t\tclearTimeout(timeout);\n\t\t\t\treject(\n\t\t\t\t\tnew Error(`Expo Metro exited with status ${code ?? 1}.`)\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t});\n\tif (metro)\n\t\tforwardLines(metro, (line) => {\n\t\t\tif (line) log(`[metro] ${line}`);\n\t\t\tif (\n\t\t\t\t!metroReady &&\n\t\t\t\t/(?:Waiting on|Metro waiting on|Dev server ready)/iu.test(line)\n\t\t\t) {\n\t\t\t\tmetroReady = true;\n\t\t\t\tresolveMetro?.();\n\t\t\t}\n\t\t});\n\tconst abort = () => {\n\t\tif (metro) void stopProcess(metro);\n\t};\n\toptions.signal?.addEventListener('abort', abort, { once: true });\n\tconst runNativeCommand = async (command: AbsoluteExpoDevCommand) => {\n\t\tif (options.signal?.aborted) throw abortError();\n\t\tconst { platform } = command;\n\t\tif (!platform)\n\t\t\tthrow new TypeError(\n\t\t\t\t'Expo native build command is missing a platform.'\n\t\t\t);\n\t\tconst state: AbsoluteExpoDevState =\n\t\t\tplatform === 'android' ? 'building-android' : 'building-ios';\n\t\tsetState(state);\n\t\tconst started = performance.now();\n\t\tconst child = run(executable, command.args, {\n\t\t\tcwd: plan.project,\n\t\t\tenv: { ...process.env, ...command.env },\n\t\t\tstdio: ['ignore', 'pipe', 'pipe']\n\t\t});\n\t\tforwardLines(child, (line) => {\n\t\t\tif (line) log(`[${platform}] ${line}`);\n\t\t});\n\t\tconst abortChild = () => void stopProcess(child);\n\t\toptions.signal?.addEventListener('abort', abortChild, { once: true });\n\t\tconst exitCode = await waitForExit(child);\n\t\toptions.signal?.removeEventListener('abort', abortChild);\n\t\tif (options.signal?.aborted) throw abortError();\n\t\tif (exitCode !== 0) {\n\t\t\tthrow new Error(\n\t\t\t\t`Expo ${platform} development build exited with status ${exitCode}.`\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\tplatform === 'ios' &&\n\t\t\toptions.certificateAuthorityPath &&\n\t\t\toptions.iosOrigin &&\n\t\t\tnew URL(options.iosOrigin).protocol === 'https:' &&\n\t\t\t!options.iosDevice\n\t\t) {\n\t\t\tsetState('enrolling-trust');\n\t\t\tconst trustStarted = performance.now();\n\t\t\tconst utilityOptions: ExpoUtilityCommandOptions = {\n\t\t\t\tcwd: plan.project,\n\t\t\t\tsignal: options.signal,\n\t\t\t\tlog: (line: string) => line && log(`[ios-trust] ${line}`)\n\t\t\t};\n\t\t\tconst trustExit = await runUtilityCommand(\n\t\t\t\trun,\n\t\t\t\t'xcrun',\n\t\t\t\t[\n\t\t\t\t\t'simctl',\n\t\t\t\t\t'keychain',\n\t\t\t\t\t'booted',\n\t\t\t\t\t'add-root-cert',\n\t\t\t\t\toptions.certificateAuthorityPath\n\t\t\t\t],\n\t\t\t\tutilityOptions\n\t\t\t);\n\t\t\tif (trustExit !== 0)\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Expo iOS Simulator development CA trust exited with status ${trustExit}.`\n\t\t\t\t);\n\t\t\tawait runUtilityCommand(\n\t\t\t\trun,\n\t\t\t\t'xcrun',\n\t\t\t\t['simctl', 'terminate', 'booted', options.config.appId],\n\t\t\t\tutilityOptions\n\t\t\t);\n\t\t\tconst launchExit = await runUtilityCommand(\n\t\t\t\trun,\n\t\t\t\t'xcrun',\n\t\t\t\t['simctl', 'launch', 'booted', options.config.appId],\n\t\t\t\tutilityOptions\n\t\t\t);\n\t\t\tif (launchExit !== 0)\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Expo iOS Simulator relaunch exited with status ${launchExit}.`\n\t\t\t\t);\n\t\t\tlog(\n\t\t\t\t'Installed the AbsoluteJS development CA into the Expo iOS Simulator and relaunched the app.'\n\t\t\t);\n\t\t\tpublishTiming('enrolling-trust', performance.now() - trustStarted);\n\t\t}\n\t\tconst durationMs = performance.now() - started;\n\t\ttimings[state] = durationMs;\n\t\toptions.onPhaseTiming?.({ durationMs, phase: state });\n\t};\n\tconst runNativeCommands = async (\n\t\tcommands: AbsoluteExpoDevCommand[]\n\t): Promise<void> => {\n\t\tconst [command, ...remaining] = commands;\n\t\tif (!command) return;\n\t\tawait runNativeCommand(command);\n\t\tawait runNativeCommands(remaining);\n\t};\n\tconst startPhysicalIosEnrollment = async () => {\n\t\tif (\n\t\t\t!options.iosDevice ||\n\t\t\t!options.certificateAuthorityPath ||\n\t\t\t!options.iosOrigin ||\n\t\t\tnew URL(options.iosOrigin).protocol !== 'https:'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tsetState('enrolling-trust');\n\t\tconst trustStarted = performance.now();\n\t\tconst startEnrollment =\n\t\t\toptions.startCaEnrollmentServer ??\n\t\t\tstartAbsoluteIosCaEnrollmentServer;\n\t\tcaEnrollmentServer = await startEnrollment({\n\t\t\tcertificateAuthorityPath: options.certificateAuthorityPath,\n\t\t\tdisplayHost: new URL(options.iosOrigin).hostname\n\t\t});\n\t\tlog(\n\t\t\t`On the iOS device, open ${caEnrollmentServer.url}, install the AbsoluteJS development CA profile, then enable it under Settings > General > About > Certificate Trust Settings. This public CA endpoint exists only for this dev session.`\n\t\t);\n\t\tpublishTiming('enrolling-trust', performance.now() - trustStarted);\n\t};\n\ttry {\n\t\tawait startPhysicalIosEnrollment();\n\t\tawait metroPromise;\n\t\tif (managedMetro)\n\t\t\tpublishTiming('starting-metro', performance.now() - metroStarted);\n\t\tawait runNativeCommands(nativeCommands);\n\t\tsetState('ready');\n\n\t\treturn {\n\t\t\tmetroPort: plan.metroPort,\n\t\t\tplatforms: options.platforms,\n\t\t\ttimings,\n\t\t\tclose: async () => {\n\t\t\t\toptions.signal?.removeEventListener('abort', abort);\n\t\t\t\tif (metro) await stopProcess(metro);\n\t\t\t\tawait closeEnrollmentServer();\n\t\t\t\tsetState('closed');\n\t\t\t}\n\t\t};\n\t} catch (error) {\n\t\toptions.signal?.removeEventListener('abort', abort);\n\t\tif (metro) await stopProcess(metro);\n\t\tawait closeEnrollmentServer();\n\t\tsetState('failed');\n\t\tthrow error;\n\t}\n};\n",
49
49
  "import { existsSync } from 'node:fs';\nimport { access, mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { dirname, extname, relative, resolve, sep } from 'node:path';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\n\nexport const ABSOLUTE_MOBILE_CI_WORKFLOW_FORMAT = 1 as const;\n\nexport type AbsoluteMobileGithubWorkflowOptions = {\n\tconfig: NormalizedAbsoluteMobileConfig;\n\tconfigPath?: string;\n\tforce?: boolean;\n\tincludePublishing?: boolean;\n\toutputPath?: string;\n\tprojectRoot: string;\n\tregistryModule?: string;\n\tsecretEnvironment?: readonly string[];\n\tserverEntry?: string;\n};\n\nexport type AbsoluteMobileGithubWorkflowResult = {\n\tchanged: boolean;\n\tformat: typeof ABSOLUTE_MOBILE_CI_WORKFLOW_FORMAT;\n\tpath: string;\n\tplatforms: ('android' | 'ios')[];\n\tpublishing: boolean;\n\trequiredSecrets: string[];\n};\n\nconst SECRET_NAME_PATTERN = /^[A-Z][A-Z0-9_]*$/u;\nconst CI_ENV_INDENTATION = 6;\nconst RESERVED_SECRET_NAMES = new Set([\n\t'ABSOLUTE_ANDROID_KEYSTORE_BASE64',\n\t'ABSOLUTE_ANDROID_KEYSTORE_PASSWORD',\n\t'ABSOLUTE_ANDROID_KEY_ALIAS',\n\t'ABSOLUTE_ANDROID_KEY_PASSWORD',\n\t'ABSOLUTE_GOOGLE_CREDENTIALS_BASE64',\n\t'ABSOLUTE_IOS_CERTIFICATE_BASE64',\n\t'ABSOLUTE_IOS_CERTIFICATE_PASSWORD',\n\t'ABSOLUTE_IOS_PROVISIONING_PROFILE_BASE64',\n\t'ABSOLUTE_IOS_KEYCHAIN_PASSWORD',\n\t'ABSOLUTE_IOS_DEVELOPMENT_TEAM',\n\t'APP_STORE_CONNECT_ISSUER_ID',\n\t'APP_STORE_CONNECT_KEY_ID',\n\t'APP_STORE_CONNECT_PRIVATE_KEY_BASE64'\n]);\n\nconst exists = async (path: string) => {\n\ttry {\n\t\tawait access(path);\n\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst yamlString = (value: string) => `'${value.replaceAll(\"'\", \"''\")}'`;\n\nconst projectPath = (\n\tprojectRoot: string,\n\tvalue: string,\n\tfield: string,\n\toptions: { allowMissing?: boolean } = {}\n) => {\n\tconst root = resolve(projectRoot);\n\tconst path = resolve(root, value);\n\tconst portable = relative(root, path).replaceAll('\\\\', '/');\n\tif (\n\t\tportable === '..' ||\n\t\tportable.startsWith(`..${sep}`) ||\n\t\tportable.startsWith('../') ||\n\t\tportable === ''\n\t) {\n\t\tthrow new TypeError(`${field} must remain inside the project root.`);\n\t}\n\tif (/\\r|\\n/u.test(portable) || portable.startsWith('-'))\n\t\tthrow new TypeError(`${field} contains an unsafe path.`);\n\tif (!options.allowMissing && !existsSync(path))\n\t\tthrow new TypeError(`${field} does not exist inside the project.`);\n\n\treturn portable;\n};\n\nconst workflowOutputPath = (projectRoot: string, value?: string) => {\n\tconst root = resolve(projectRoot);\n\tconst workflows = resolve(root, '.github/workflows');\n\tconst path = resolve(\n\t\troot,\n\t\tvalue ?? '.github/workflows/absolute-mobile.yml'\n\t);\n\tconst portable = relative(workflows, path);\n\tif (\n\t\tportable === '..' ||\n\t\tportable.startsWith(`..${sep}`) ||\n\t\t(extname(path) !== '.yml' && extname(path) !== '.yaml')\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'mobile ci github --output must be a .yml or .yaml file inside .github/workflows.'\n\t\t);\n\t}\n\n\treturn path;\n};\n\nconst normalizeSecretEnvironment = (values: readonly string[] = []) => {\n\tconst names = [...new Set(values)].sort();\n\tfor (const name of names) {\n\t\tif (!SECRET_NAME_PATTERN.test(name))\n\t\t\tthrow new TypeError(\n\t\t\t\t'mobile ci github --secret-env values must be uppercase environment variable names.'\n\t\t\t);\n\t\tif (\n\t\t\tname.startsWith('GITHUB_') ||\n\t\t\tname.startsWith('RUNNER_') ||\n\t\t\tname.startsWith('ACTIONS_') ||\n\t\t\tRESERVED_SECRET_NAMES.has(name)\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`mobile ci github --secret-env cannot replace reserved variable ${name}.`\n\t\t\t);\n\t\t}\n\t}\n\n\treturn names;\n};\n\nconst customSecretEnvironment = (\n\tnames: readonly string[],\n\tindentation = CI_ENV_INDENTATION\n) =>\n\tnames\n\t\t.map(\n\t\t\t(name) =>\n\t\t\t\t`${' '.repeat(indentation)}${name}: \\${{ secrets.${name} }}`\n\t\t)\n\t\t.join('\\n');\n\ntype CommandEnvironmentOptions = {\n\tconfigPath?: string;\n\tregistryModule: string;\n\tserverEntry: string;\n};\n\ntype PlatformJobOptions = {\n\tcustomSecrets: readonly string[];\n\tincludePublishing: boolean;\n};\n\nconst commandEnvironment = (options: CommandEnvironmentOptions) =>\n\t` ABSOLUTE_CONFIG_PATH: ${yamlString(options.configPath ?? '')}\n ABSOLUTE_REGISTRY_MODULE: ${yamlString(options.registryModule)}\n ABSOLUTE_SERVER_ENTRY: ${yamlString(options.serverEntry)}`;\n\nconst appendConfigArgument = `if [[ -n \"$ABSOLUTE_CONFIG_PATH\" ]]; then\n args+=(--config \"$ABSOLUTE_CONFIG_PATH\")\n fi`;\n\nconst installSteps = ` - name: Check out source\n uses: actions/checkout@v6\n - name: Install Bun\n uses: oven-sh/setup-bun@v2\n - name: Install exact dependencies\n run: bun ci`;\n\nconst bundleAuditSteps = ` - name: Prepare production mobile bundle\n shell: bash\n run: |\n args=(bunx absolute prepare \"$ABSOLUTE_SERVER_ENTRY\" --outdir .absolutejs/mobile-ci/server)\n ${appendConfigArgument}\n \"\\${args[@]}\"\n - name: Run cryptographic mobile bundle audit\n id: mobile-bundle-audit\n continue-on-error: true\n shell: bash\n run: |\n mkdir -p .absolutejs/mobile-ci\n args=(bunx absolute mobile inspect --json --require-bundle)\n ${appendConfigArgument}\n \"\\${args[@]}\" > .absolutejs/mobile-ci/inspection.json\n - name: Upload mobile inspection report\n if: always()\n uses: actions/upload-artifact@v7\n with:\n name: absolute-mobile-inspection\n path: .absolutejs/mobile-ci/inspection.json\n if-no-files-found: error\n retention-days: 30\n include-hidden-files: true\n - name: Enforce mobile bundle audit\n if: steps.mobile-bundle-audit.outcome != 'success'\n run: exit 1`;\n\nconst releaseAuditSteps = (\n\tplatform: 'android' | 'ios'\n) => ` - name: Run redacted mobile release audit\n id: mobile-release-audit\n continue-on-error: true\n shell: bash\n run: |\n mkdir -p .absolutejs/mobile-ci\n args=(bunx absolute mobile doctor release ${platform} --json)\n ${appendConfigArgument}\n \"\\${args[@]}\" > .absolutejs/mobile-ci/compliance.json\n - name: Upload mobile compliance report\n if: always()\n uses: actions/upload-artifact@v7\n with:\n name: absolute-mobile-compliance-\\${{ github.job }}\n path: .absolutejs/mobile-ci/compliance.json\n if-no-files-found: error\n retention-days: 30\n include-hidden-files: true\n - name: Enforce mobile release audit\n if: steps.mobile-release-audit.outcome != 'success'\n run: exit 1`;\n\nconst platformInput = (platforms: readonly string[]) => {\n\tconst choices = platforms.length === 2 ? ['all', ...platforms] : platforms;\n\n\treturn ` platform:\n description: Native platform to build\n required: true\n type: choice\n default: ${choices[0]}\n options:\n${choices.map((value) => ` - ${value}`).join('\\n')}`;\n};\n\nconst publishingInputs = (\n\tplatforms: readonly string[],\n\tincludePublishing: boolean\n) => {\n\tif (!includePublishing) return '';\n\tconst fields = [\n\t\t` publish:\n description: Publish through mobile.release.ts after the signed build\n required: true\n type: boolean\n default: false`,\n\t\t` channel:\n description: Optional AbsoluteJS immutable release channel\n required: false\n type: string`\n\t];\n\tif (platforms.includes('android'))\n\t\tfields.push(` play_track:\n description: Optional Google Play track\n required: true\n type: choice\n default: registry-only\n options:\n - registry-only\n - internal\n - alpha\n - beta\n - production`);\n\tif (platforms.includes('ios')) {\n\t\tfields.push(` testflight_group:\n description: Optional internal or external TestFlight group\n required: false\n type: string`);\n\t\tfields.push(` submit_testflight_review:\n description: Explicitly submit an external TestFlight build for review\n required: true\n type: boolean\n default: false`);\n\t}\n\n\treturn `\\n${fields.join('\\n')}`;\n};\n\nconst jobCondition = (platform: 'android' | 'ios') =>\n\t`github.event_name == 'workflow_dispatch' && (inputs.platform == 'all' || inputs.platform == '${platform}')`;\n\nconst androidJob = (options: PlatformJobOptions) => {\n\tconst custom = customSecretEnvironment(options.customSecrets);\n\tconst publishEnvironment = options.includePublishing\n\t\t? `\n ABSOLUTE_PUBLISH: \\${{ inputs.publish }}\n ABSOLUTE_RELEASE_CHANNEL: \\${{ inputs.channel }}\n ABSOLUTE_PLAY_TRACK: \\${{ inputs.play_track }}\n ABSOLUTE_GOOGLE_CREDENTIALS_BASE64: \\${{ secrets.ABSOLUTE_GOOGLE_CREDENTIALS_BASE64 }}\n GOOGLE_APPLICATION_CREDENTIALS: \\${{ runner.temp }}/absolute-google-credentials.json`\n\t\t: '';\n\tconst publishCommand = options.includePublishing\n\t\t? `if [[ \"$ABSOLUTE_PUBLISH\" == \"true\" ]]; then\n args=(bunx absolute mobile publish android \"$ABSOLUTE_SERVER_ENTRY\" --registry \"$ABSOLUTE_REGISTRY_MODULE\")\n if [[ -n \"$ABSOLUTE_RELEASE_CHANNEL\" ]]; then\n args+=(--channel \"$ABSOLUTE_RELEASE_CHANNEL\")\n fi\n if [[ \"$ABSOLUTE_PLAY_TRACK\" != \"registry-only\" ]]; then\n args+=(--play-track \"$ABSOLUTE_PLAY_TRACK\")\n fi\n else\n args=(bunx absolute mobile build android \"$ABSOLUTE_SERVER_ENTRY\")\n fi`\n\t\t: `args=(bunx absolute mobile build android \"$ABSOLUTE_SERVER_ENTRY\")`;\n\tconst googleSetup = options.includePublishing\n\t\t? `\n if [[ \"$ABSOLUTE_PUBLISH\" == \"true\" && \"$ABSOLUTE_PLAY_TRACK\" != \"registry-only\" ]]; then\n if [[ -z \"$ABSOLUTE_GOOGLE_CREDENTIALS_BASE64\" ]]; then\n echo \"ABSOLUTE_GOOGLE_CREDENTIALS_BASE64 is required for Google Play publication.\" >&2\n exit 1\n fi\n printf '%s' \"$ABSOLUTE_GOOGLE_CREDENTIALS_BASE64\" | base64 --decode > \"$GOOGLE_APPLICATION_CREDENTIALS\"\n chmod 600 \"$GOOGLE_APPLICATION_CREDENTIALS\"\n fi`\n\t\t: '';\n\n\treturn `\n android:\n name: Signed Android release\n needs: validate\n if: \\${{ ${jobCondition('android')} }}\n runs-on: ubuntu-latest\n environment: absolute-mobile-release\n permissions:\n contents: read\n id-token: write\n attestations: write\n env:\n ABSOLUTE_ANDROID_KEYSTORE_BASE64: \\${{ secrets.ABSOLUTE_ANDROID_KEYSTORE_BASE64 }}\n ABSOLUTE_ANDROID_KEYSTORE_PASSWORD: \\${{ secrets.ABSOLUTE_ANDROID_KEYSTORE_PASSWORD }}\n ABSOLUTE_ANDROID_KEY_ALIAS: \\${{ secrets.ABSOLUTE_ANDROID_KEY_ALIAS }}\n ABSOLUTE_ANDROID_KEY_PASSWORD: \\${{ secrets.ABSOLUTE_ANDROID_KEY_PASSWORD }}\n ABSOLUTE_ANDROID_KEYSTORE_PATH: \\${{ runner.temp }}/absolute-release.jks${publishEnvironment}${custom ? `\\n${custom}` : ''}\n${commandEnvironment({ configPath: undefined, registryModule: '', serverEntry: '' })}\n steps:\n${installSteps}\n - name: Provision Android signing\n shell: bash\n run: |\n required=(\n ABSOLUTE_ANDROID_KEYSTORE_BASE64\n ABSOLUTE_ANDROID_KEYSTORE_PASSWORD\n ABSOLUTE_ANDROID_KEY_ALIAS\n ABSOLUTE_ANDROID_KEY_PASSWORD\n )\n for name in \"\\${required[@]}\"; do\n if [[ -z \"\\${!name}\" ]]; then\n echo \"$name is required in the absolute-mobile-release environment.\" >&2\n exit 1\n fi\n done\n printf '%s' \"$ABSOLUTE_ANDROID_KEYSTORE_BASE64\" | base64 --decode > \"\\${{ runner.temp }}/absolute-release.jks\"\n chmod 600 \"\\${{ runner.temp }}/absolute-release.jks\"${googleSetup}\n - name: Build or publish Android\n shell: bash\n run: |\n ${publishCommand}\n ${appendConfigArgument}\n \"\\${args[@]}\"\n${releaseAuditSteps('android')}\n - name: Attest Android App Bundle\n if: inputs.attest\n uses: actions/attest@v4\n with:\n subject-path: .absolutejs/mobile/releases/android/**/app-release.aab\n - name: Upload Android release\n uses: actions/upload-artifact@v7\n with:\n name: absolute-mobile-android\n path: .absolutejs/mobile/releases/android/\n if-no-files-found: error\n retention-days: 14\n include-hidden-files: true\n - name: Remove Android credentials\n if: always()\n shell: bash\n run: |\n rm -f \"\\${{ runner.temp }}/absolute-release.jks\"\n rm -f \"\\${{ runner.temp }}/absolute-google-credentials.json\"`;\n};\n\nconst iosJob = (options: PlatformJobOptions) => {\n\tconst custom = customSecretEnvironment(options.customSecrets);\n\tconst publishEnvironment = options.includePublishing\n\t\t? `\n ABSOLUTE_PUBLISH: \\${{ inputs.publish }}\n ABSOLUTE_RELEASE_CHANNEL: \\${{ inputs.channel }}\n ABSOLUTE_TESTFLIGHT_GROUP: \\${{ inputs.testflight_group }}\n ABSOLUTE_TESTFLIGHT_SUBMIT_REVIEW: \\${{ inputs.submit_testflight_review }}\n APP_STORE_CONNECT_ISSUER_ID: \\${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}\n APP_STORE_CONNECT_KEY_ID: \\${{ secrets.APP_STORE_CONNECT_KEY_ID }}\n APP_STORE_CONNECT_PRIVATE_KEY_BASE64: \\${{ secrets.APP_STORE_CONNECT_PRIVATE_KEY_BASE64 }}\n APP_STORE_CONNECT_PRIVATE_KEY_PATH: \\${{ runner.temp }}/AuthKey_AbsoluteJS.p8`\n\t\t: '';\n\tconst publishCommand = options.includePublishing\n\t\t? `if [[ \"$ABSOLUTE_PUBLISH\" == \"true\" ]]; then\n args=(bunx absolute mobile publish ios \"$ABSOLUTE_SERVER_ENTRY\" --registry \"$ABSOLUTE_REGISTRY_MODULE\")\n if [[ -n \"$ABSOLUTE_RELEASE_CHANNEL\" ]]; then\n args+=(--channel \"$ABSOLUTE_RELEASE_CHANNEL\")\n fi\n if [[ -n \"$ABSOLUTE_TESTFLIGHT_GROUP\" ]]; then\n args+=(--testflight-group \"$ABSOLUTE_TESTFLIGHT_GROUP\")\n fi\n if [[ \"$ABSOLUTE_TESTFLIGHT_SUBMIT_REVIEW\" == \"true\" ]]; then\n args+=(--testflight-submit-review)\n fi\n else\n args=(bunx absolute mobile build ios \"$ABSOLUTE_SERVER_ENTRY\")\n fi`\n\t\t: `args=(bunx absolute mobile build ios \"$ABSOLUTE_SERVER_ENTRY\")`;\n\tconst appStoreSetup = options.includePublishing\n\t\t? `\n if [[ \"$ABSOLUTE_PUBLISH\" == \"true\" && -n \"$ABSOLUTE_TESTFLIGHT_GROUP\" ]]; then\n required+=(APP_STORE_CONNECT_ISSUER_ID APP_STORE_CONNECT_KEY_ID APP_STORE_CONNECT_PRIVATE_KEY_BASE64)\n fi`\n\t\t: '';\n\tconst appStoreDecode = options.includePublishing\n\t\t? `\n if [[ \"$ABSOLUTE_PUBLISH\" == \"true\" && -n \"$ABSOLUTE_TESTFLIGHT_GROUP\" ]]; then\n printf '%s' \"$APP_STORE_CONNECT_PRIVATE_KEY_BASE64\" | base64 --decode > \"$APP_STORE_CONNECT_PRIVATE_KEY_PATH\"\n chmod 600 \"$APP_STORE_CONNECT_PRIVATE_KEY_PATH\"\n fi`\n\t\t: '';\n\n\treturn `\n ios:\n name: Signed iOS release\n needs: validate\n if: \\${{ ${jobCondition('ios')} }}\n runs-on: macos-latest\n environment: absolute-mobile-release\n permissions:\n contents: read\n id-token: write\n attestations: write\n env:\n ABSOLUTE_IOS_CERTIFICATE_BASE64: \\${{ secrets.ABSOLUTE_IOS_CERTIFICATE_BASE64 }}\n ABSOLUTE_IOS_CERTIFICATE_PASSWORD: \\${{ secrets.ABSOLUTE_IOS_CERTIFICATE_PASSWORD }}\n ABSOLUTE_IOS_PROVISIONING_PROFILE_BASE64: \\${{ secrets.ABSOLUTE_IOS_PROVISIONING_PROFILE_BASE64 }}\n ABSOLUTE_IOS_KEYCHAIN_PASSWORD: \\${{ secrets.ABSOLUTE_IOS_KEYCHAIN_PASSWORD }}${publishEnvironment}${custom ? `\\n${custom}` : ''}\n ABSOLUTE_IOS_DEVELOPMENT_TEAM: \\${{ secrets.ABSOLUTE_IOS_DEVELOPMENT_TEAM }}\n${commandEnvironment({ configPath: undefined, registryModule: '', serverEntry: '' })}\n steps:\n${installSteps}\n - name: Provision iOS signing\n shell: bash\n run: |\n required=(\n ABSOLUTE_IOS_CERTIFICATE_BASE64\n ABSOLUTE_IOS_CERTIFICATE_PASSWORD\n ABSOLUTE_IOS_PROVISIONING_PROFILE_BASE64\n ABSOLUTE_IOS_KEYCHAIN_PASSWORD\n ABSOLUTE_IOS_DEVELOPMENT_TEAM\n )${appStoreSetup}\n for name in \"\\${required[@]}\"; do\n if [[ -z \"\\${!name}\" ]]; then\n echo \"$name is required in the absolute-mobile-release environment.\" >&2\n exit 1\n fi\n done\n CERTIFICATE_PATH=\"\\${{ runner.temp }}/absolute-signing.p12\"\n PROFILE_PATH=\"\\${{ runner.temp }}/absolute.mobileprovision\"\n KEYCHAIN_PATH=\"\\${{ runner.temp }}/absolute-signing.keychain-db\"\n PROFILE_DESTINATION=\"$HOME/Library/MobileDevice/Provisioning Profiles/absolute.mobileprovision\"\n printf '%s' \"$ABSOLUTE_IOS_CERTIFICATE_BASE64\" | base64 --decode > \"$CERTIFICATE_PATH\"\n printf '%s' \"$ABSOLUTE_IOS_PROVISIONING_PROFILE_BASE64\" | base64 --decode > \"$PROFILE_PATH\"\n security create-keychain -p \"$ABSOLUTE_IOS_KEYCHAIN_PASSWORD\" \"$KEYCHAIN_PATH\"\n security set-keychain-settings -lut 21600 \"$KEYCHAIN_PATH\"\n security unlock-keychain -p \"$ABSOLUTE_IOS_KEYCHAIN_PASSWORD\" \"$KEYCHAIN_PATH\"\n security import \"$CERTIFICATE_PATH\" -P \"$ABSOLUTE_IOS_CERTIFICATE_PASSWORD\" -A -t cert -f pkcs12 -k \"$KEYCHAIN_PATH\"\n security set-key-partition-list -S apple-tool:,apple: -k \"$ABSOLUTE_IOS_KEYCHAIN_PASSWORD\" \"$KEYCHAIN_PATH\"\n security list-keychain -d user -s \"$KEYCHAIN_PATH\"\n mkdir -p \"$(dirname \"$PROFILE_DESTINATION\")\"\n cp \"$PROFILE_PATH\" \"$PROFILE_DESTINATION\"${appStoreDecode}\n - name: Build or publish iOS\n shell: bash\n run: |\n ${publishCommand}\n ${appendConfigArgument}\n \"\\${args[@]}\"\n${releaseAuditSteps('ios')}\n - name: Attest iOS IPA\n if: inputs.attest\n uses: actions/attest@v4\n with:\n subject-path: .absolutejs/mobile/releases/ios/**/App.ipa\n - name: Upload iOS release\n uses: actions/upload-artifact@v7\n with:\n name: absolute-mobile-ios\n path: .absolutejs/mobile/releases/ios/\n if-no-files-found: error\n retention-days: 14\n include-hidden-files: true\n - name: Remove iOS credentials\n if: always()\n shell: bash\n run: |\n security delete-keychain \"\\${{ runner.temp }}/absolute-signing.keychain-db\" 2>/dev/null || true\n rm -f \"$HOME/Library/MobileDevice/Provisioning Profiles/absolute.mobileprovision\"\n rm -f \"\\${{ runner.temp }}/absolute-signing.p12\"\n rm -f \"\\${{ runner.temp }}/absolute.mobileprovision\"\n rm -f \"\\${{ runner.temp }}/AuthKey_AbsoluteJS.p8\"`;\n};\n\nconst requiredSecrets = (\n\tplatforms: readonly string[],\n\tincludePublishing: boolean,\n\tcustom: readonly string[]\n) => [\n\t...(platforms.includes('android')\n\t\t? [\n\t\t\t\t'ABSOLUTE_ANDROID_KEYSTORE_BASE64',\n\t\t\t\t'ABSOLUTE_ANDROID_KEYSTORE_PASSWORD',\n\t\t\t\t'ABSOLUTE_ANDROID_KEY_ALIAS',\n\t\t\t\t'ABSOLUTE_ANDROID_KEY_PASSWORD',\n\t\t\t\t...(includePublishing\n\t\t\t\t\t? ['ABSOLUTE_GOOGLE_CREDENTIALS_BASE64']\n\t\t\t\t\t: [])\n\t\t\t]\n\t\t: []),\n\t...(platforms.includes('ios')\n\t\t? [\n\t\t\t\t'ABSOLUTE_IOS_CERTIFICATE_BASE64',\n\t\t\t\t'ABSOLUTE_IOS_CERTIFICATE_PASSWORD',\n\t\t\t\t'ABSOLUTE_IOS_PROVISIONING_PROFILE_BASE64',\n\t\t\t\t'ABSOLUTE_IOS_KEYCHAIN_PASSWORD',\n\t\t\t\t'ABSOLUTE_IOS_DEVELOPMENT_TEAM',\n\t\t\t\t...(includePublishing\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t'APP_STORE_CONNECT_ISSUER_ID',\n\t\t\t\t\t\t\t'APP_STORE_CONNECT_KEY_ID',\n\t\t\t\t\t\t\t'APP_STORE_CONNECT_PRIVATE_KEY_BASE64'\n\t\t\t\t\t\t]\n\t\t\t\t\t: [])\n\t\t\t]\n\t\t: []),\n\t...custom\n];\n\nexport const createAbsoluteMobileGithubWorkflow = (\n\toptions: AbsoluteMobileGithubWorkflowOptions\n) => {\n\tconst platforms: ('android' | 'ios')[] = [\n\t\t...options.config.platforms\n\t].sort();\n\tconst includePublishing = options.includePublishing === true;\n\tconst customSecrets = normalizeSecretEnvironment(options.secretEnvironment);\n\tconst serverEntry = projectPath(\n\t\toptions.projectRoot,\n\t\toptions.serverEntry ?? 'server.ts',\n\t\t'mobile ci github server entry'\n\t);\n\tconst configPath = options.configPath\n\t\t? projectPath(\n\t\t\t\toptions.projectRoot,\n\t\t\t\toptions.configPath,\n\t\t\t\t'mobile ci github --config'\n\t\t\t)\n\t\t: undefined;\n\tconst registryModule = projectPath(\n\t\toptions.projectRoot,\n\t\toptions.registryModule ?? 'mobile.release.ts',\n\t\t'mobile ci github --registry',\n\t\t{ allowMissing: !includePublishing }\n\t);\n\tconst environment = commandEnvironment({\n\t\tconfigPath,\n\t\tregistryModule,\n\t\tserverEntry\n\t});\n\tlet workflow = `# Generated by AbsoluteJS. Regenerate with: absolute mobile ci github${includePublishing ? ' --publish' : ''}\nname: AbsoluteJS Mobile\n\non:\n pull_request:\n workflow_dispatch:\n inputs:\n${platformInput(platforms)}\n attest:\n description: Generate GitHub artifact provenance attestations\n required: true\n type: boolean\n default: false${publishingInputs(platforms, includePublishing)}\n\nconcurrency:\n group: absolute-mobile-\\${{ github.repository }}\n cancel-in-progress: false\n\njobs:\n validate:\n name: Validate mobile release inputs\n runs-on: ubuntu-latest\n permissions:\n contents: read\n env:\n${environment}\n steps:\n${installSteps}\n${bundleAuditSteps}${platforms.includes('android') ? androidJob({ customSecrets, includePublishing }) : ''}${platforms.includes('ios') ? iosJob({ customSecrets, includePublishing }) : ''}\n`;\n\tconst replacements = new Map([\n\t\t[\n\t\t\t\"ABSOLUTE_CONFIG_PATH: ''\",\n\t\t\t`ABSOLUTE_CONFIG_PATH: ${yamlString(configPath ?? '')}`\n\t\t],\n\t\t[\n\t\t\t\"ABSOLUTE_REGISTRY_MODULE: ''\",\n\t\t\t`ABSOLUTE_REGISTRY_MODULE: ${yamlString(registryModule)}`\n\t\t],\n\t\t[\n\t\t\t\"ABSOLUTE_SERVER_ENTRY: ''\",\n\t\t\t`ABSOLUTE_SERVER_ENTRY: ${yamlString(serverEntry)}`\n\t\t]\n\t]);\n\tfor (const [placeholder, replacement] of replacements)\n\t\tworkflow = workflow.replaceAll(placeholder, replacement);\n\n\treturn {\n\t\trequiredSecrets: requiredSecrets(\n\t\t\tplatforms,\n\t\t\tincludePublishing,\n\t\t\tcustomSecrets\n\t\t),\n\t\tworkflow\n\t};\n};\n\nexport const writeAbsoluteMobileGithubWorkflow = async (\n\toptions: AbsoluteMobileGithubWorkflowOptions\n): Promise<AbsoluteMobileGithubWorkflowResult> => {\n\tconst path = workflowOutputPath(options.projectRoot, options.outputPath);\n\tconst generated = createAbsoluteMobileGithubWorkflow(options);\n\tconst previous = (await exists(path))\n\t\t? await readFile(path, 'utf8')\n\t\t: undefined;\n\tif (\n\t\tprevious !== undefined &&\n\t\tprevious !== generated.workflow &&\n\t\t!options.force\n\t)\n\t\tthrow new TypeError(\n\t\t\t`${relative(options.projectRoot, path)} already exists and differs. Rerun with --force to replace the generated workflow.`\n\t\t);\n\tif (previous !== generated.workflow) {\n\t\tawait mkdir(dirname(path), { recursive: true });\n\t\tawait writeFile(path, generated.workflow);\n\t}\n\n\treturn {\n\t\tchanged: previous !== generated.workflow,\n\t\tformat: ABSOLUTE_MOBILE_CI_WORKFLOW_FORMAT,\n\t\tpath,\n\t\tplatforms: [...options.config.platforms].sort(),\n\t\tpublishing: options.includePublishing === true,\n\t\trequiredSecrets: generated.requiredSecrets\n\t};\n};\n",
50
50
  "import { Elysia } from 'elysia';\nimport {\n\tcreateAbsoluteMobileInvalidRequestResponse,\n\tcreateAbsoluteMobilePageErrorResponse,\n\tcreateAbsoluteMobileUpgradeResponse,\n\tMOBILE_PAGE_REQUEST_HEADERS,\n\tparseAbsoluteMobilePageRequest\n} from './pageProtocol';\nimport {\n\tresolveAbsoluteMobileCompatibilityRelease,\n\tretainAbsoluteMobileCompatibilityArtifacts,\n\ttype AbsoluteMobileCompatibilityArtifact\n} from './releaseArtifact';\nimport {\n\tgetCurrentAbsoluteMobileProducerContext,\n\trunWithAbsoluteMobileProducer\n} from './producerContext';\nimport { matchesAbsoluteMobileRoutePattern } from './routeMatcher';\n\nexport type AbsoluteMobileCompatibilityProducerHandler = {\n\thandle: (request: Request) => Promise<Response> | Response;\n};\n\nexport type AbsoluteMobileCompatibilityProducerLoader = (\n\tartifact: AbsoluteMobileCompatibilityArtifact\n) => Promise<AbsoluteMobileCompatibilityProducerHandler>;\n\nexport type AbsoluteMobileCompatibilityDispatcherOptions = {\n\tartifacts: readonly AbsoluteMobileCompatibilityArtifact[];\n\tcurrentReleaseId: string;\n\tloadProducer: AbsoluteMobileCompatibilityProducerLoader;\n};\n\nconst MOBILE_WEBVIEW_ORIGINS = new Set([\n\t'capacitor://localhost',\n\t'http://localhost',\n\t'https://localhost'\n]);\nconst MOBILE_REQUEST_HEADER_NAMES = Object.values(MOBILE_PAGE_REQUEST_HEADERS);\nconst MOBILE_CORS_ALLOW_HEADERS = [\n\t'accept',\n\t'content-type',\n\t'authorization',\n\t'hx-current-url',\n\t'hx-request',\n\t'hx-target',\n\t'hx-trigger',\n\t'hx-trigger-name',\n\t...MOBILE_REQUEST_HEADER_NAMES\n].join(', ');\nconst MOBILE_CORS_METHODS = new Set([\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PUT'\n]);\n\nconst mobileWebViewOrigin = (request: Request) => {\n\tconst origin = request.headers.get('origin');\n\n\treturn origin && MOBILE_WEBVIEW_ORIGINS.has(origin) ? origin : undefined;\n};\n\nconst applyMobileCorsHeaders = (response: Response, origin: string) => {\n\tresponse.headers.set('access-control-allow-credentials', 'true');\n\tresponse.headers.set('access-control-allow-origin', origin);\n\tresponse.headers.append('vary', 'Origin');\n\n\treturn response;\n};\n\nconst finalizeMobileResponse = (request: Request, response: Response) => {\n\tconst origin = mobileWebViewOrigin(request);\n\n\treturn origin ? applyMobileCorsHeaders(response, origin) : response;\n};\n\nconst mobilePreflightResponse = (request: Request) => {\n\tif (request.method !== 'OPTIONS') return undefined;\n\tconst origin = mobileWebViewOrigin(request);\n\tif (!origin) return undefined;\n\tconst requestedHeaders = request.headers.get(\n\t\t'access-control-request-headers'\n\t);\n\tconst requestedMethod =\n\t\trequest.headers.get('access-control-request-method')?.toUpperCase() ??\n\t\t'';\n\tif (!MOBILE_CORS_METHODS.has(requestedMethod)) return undefined;\n\n\treturn new Response(null, {\n\t\theaders: {\n\t\t\t'access-control-allow-credentials': 'true',\n\t\t\t'access-control-allow-headers':\n\t\t\t\trequestedHeaders || MOBILE_CORS_ALLOW_HEADERS,\n\t\t\t'access-control-allow-methods': [...MOBILE_CORS_METHODS].join(', '),\n\t\t\t'access-control-allow-origin': origin,\n\t\t\t'access-control-max-age': '600',\n\t\t\tvary: 'Origin, Access-Control-Request-Headers'\n\t\t},\n\t\tstatus: 204\n\t});\n};\n\nconst artifactOwnsRequest = (\n\tartifact: AbsoluteMobileCompatibilityArtifact,\n\tpageId: string,\n\trequest: Request\n) => {\n\tconst { pathname } = new URL(request.url);\n\n\treturn artifact.routes.some(\n\t\t(route) =>\n\t\t\troute.pageId === pageId &&\n\t\t\troute.method === request.method &&\n\t\t\tmatchesAbsoluteMobileRoutePattern(route.pattern, pathname)\n\t);\n};\n\nconst createProducerResolver = (\n\tloadProducer: AbsoluteMobileCompatibilityProducerLoader\n) => {\n\tconst producers = new Map<\n\t\tstring,\n\t\tPromise<AbsoluteMobileCompatibilityProducerHandler>\n\t>();\n\n\treturn (artifact: AbsoluteMobileCompatibilityArtifact) => {\n\t\tconst cached = producers.get(artifact.releaseId);\n\t\tif (cached) return cached;\n\n\t\tconst loading = loadProducer(artifact).catch((error: unknown) => {\n\t\t\tproducers.delete(artifact.releaseId);\n\n\t\t\tthrow error;\n\t\t});\n\t\tproducers.set(artifact.releaseId, loading);\n\n\t\treturn loading;\n\t};\n};\n\nexport const createAbsoluteMobileCompatibilityDispatcher = (\n\toptions: AbsoluteMobileCompatibilityDispatcherOptions\n) => {\n\tconst artifacts = retainAbsoluteMobileCompatibilityArtifacts(\n\t\toptions.artifacts\n\t);\n\tif (\n\t\t!artifacts.some(\n\t\t\t({ releaseId }) => releaseId === options.currentReleaseId\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'currentReleaseId must identify a retained compatibility artifact.'\n\t\t);\n\t}\n\tconst resolveProducer = createProducerResolver(options.loadProducer);\n\n\treturn new Elysia({ name: 'absolutejs-mobile-compatibility-dispatcher' })\n\t\t.request(async ({ request }) => {\n\t\t\tif (getCurrentAbsoluteMobileProducerContext()) return undefined;\n\t\t\tconst preflight = mobilePreflightResponse(request);\n\t\t\tif (preflight) return preflight;\n\t\t\tconst parsed = parseAbsoluteMobilePageRequest(request);\n\t\t\tif (parsed.kind !== 'mobile') return undefined;\n\n\t\t\tconst resolved = resolveAbsoluteMobileCompatibilityRelease(\n\t\t\t\tparsed.client,\n\t\t\t\tartifacts\n\t\t\t);\n\t\t\tif (resolved.kind === 'upgrade-required') {\n\t\t\t\treturn finalizeMobileResponse(\n\t\t\t\t\trequest,\n\t\t\t\t\tcreateAbsoluteMobileUpgradeResponse(resolved.result)\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!artifactOwnsRequest(\n\t\t\t\t\tresolved.artifact,\n\t\t\t\t\tparsed.client.pageId,\n\t\t\t\t\trequest\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn finalizeMobileResponse(\n\t\t\t\t\trequest,\n\t\t\t\t\tcreateAbsoluteMobileInvalidRequestResponse(\n\t\t\t\t\t\t'The requested URL is not assigned to this mobile page.'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (resolved.artifact.releaseId === options.currentReleaseId) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst producer = await resolveProducer(resolved.artifact);\n\n\t\t\t\tconst response = await runWithAbsoluteMobileProducer(\n\t\t\t\t\t{\n\t\t\t\t\t\tpage: resolved.page,\n\t\t\t\t\t\treleaseId: resolved.artifact.releaseId\n\t\t\t\t\t},\n\t\t\t\t\t() => producer.handle(request)\n\t\t\t\t);\n\n\t\t\t\treturn finalizeMobileResponse(request, response);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`[Mobile] Failed to load retained producer ${resolved.artifact.releaseId}:`,\n\t\t\t\t\terror\n\t\t\t\t);\n\n\t\t\t\treturn finalizeMobileResponse(\n\t\t\t\t\trequest,\n\t\t\t\t\tcreateAbsoluteMobilePageErrorResponse(parsed.client.pageId)\n\t\t\t\t);\n\t\t\t}\n\t\t})\n\t\t.afterHandle('global', ({ request, responseValue }) => {\n\t\t\tconst origin = mobileWebViewOrigin(request);\n\t\t\tif (!origin || !(responseValue instanceof Response)) return;\n\n\t\t\tapplyMobileCorsHeaders(responseValue, origin);\n\t\t})\n\t\t.as('global');\n};\n",
@@ -57,7 +57,7 @@
57
57
  "// src/contracts.ts\nclass AbsoluteHttpError extends Error {\n code;\n cause;\n status;\n url;\n constructor(code, message, options = {}) {\n super(message);\n this.name = \"AbsoluteHttpError\";\n this.code = code;\n this.cause = options.cause;\n this.status = options.status;\n this.url = options.url;\n }\n}\n// src/url.ts\nvar loopbackHosts = new Set([\"127.0.0.1\", \"[::1]\", \"localhost\"]);\nvar normalizeAbsoluteHttpOrigin = (value) => {\n let url;\n try {\n url = new URL(value);\n } catch (cause) {\n throw new AbsoluteHttpError(\"origin\", \"HTTP origin is invalid.\", {\n cause\n });\n }\n const loopback = url.protocol === \"http:\" && loopbackHosts.has(url.hostname);\n if (url.protocol !== \"https:\" && !loopback)\n throw new AbsoluteHttpError(\"origin\", \"HTTP origin must use HTTPS outside loopback development.\");\n if (url.username || url.password || url.pathname !== \"/\" || url.search || url.hash)\n throw new AbsoluteHttpError(\"origin\", \"HTTP origin cannot contain credentials, a path, query, or fragment.\");\n return url.origin;\n};\nvar resolveAbsoluteHttpUrl = (target, origin) => {\n let url;\n try {\n url = new URL(String(target), `${origin}/`);\n } catch (cause) {\n throw new AbsoluteHttpError(\"origin\", \"HTTP request URL is invalid.\", {\n cause\n });\n }\n if (url.username || url.password)\n throw new AbsoluteHttpError(\"origin\", \"HTTP request URLs cannot contain credentials.\");\n if (url.origin !== origin)\n throw new AbsoluteHttpError(\"origin\", \"Absolute HTTP refused a request outside the configured application origin.\", { url: url.href });\n url.hash = \"\";\n return url;\n};\n\n// src/adapters.ts\nvar createAbsoluteHttpTransport = ({\n fetch: fetchImpl = globalThis.fetch,\n origin,\n runtime\n}) => ({\n fetch: fetchImpl,\n origin: normalizeAbsoluteHttpOrigin(origin),\n runtime\n});\nvar createWebHttpTransport = (options = {}) => {\n const origin = options.origin ?? globalThis.location?.origin;\n if (!origin)\n throw new TypeError(\"The web HTTP transport requires a browser origin or explicit origin.\");\n return createAbsoluteHttpTransport({\n ...options.fetch ? { fetch: options.fetch } : {},\n origin,\n runtime: \"web\"\n });\n};\n\n// src/runtime.ts\nvar RUNTIME_REGISTRY = Symbol.for(\"@absolutejs/http/runtime\");\nvar registryHost = globalThis;\nvar isRuntimeRegistry = (value) => typeof value === \"object\" && value !== null && Array.isArray(Reflect.get(value, \"installations\"));\nvar runtimeRegistry = (() => {\n const existing = registryHost[RUNTIME_REGISTRY];\n if (isRuntimeRegistry(existing))\n return existing;\n const created = { installations: [] };\n Object.defineProperty(registryHost, RUNTIME_REGISTRY, {\n configurable: false,\n enumerable: false,\n value: created,\n writable: false\n });\n return created;\n})();\nvar fallbackTransport = () => {\n if (typeof location !== \"undefined\" && location.origin)\n return createWebHttpTransport();\n throw new AbsoluteHttpError(\"not-configured\", \"Absolute HTTP requires a request-scoped SSR transport outside a browser.\");\n};\nvar getAbsoluteHttpTransport = () => runtimeRegistry.installations.at(-1)?.transport ?? (runtimeRegistry.fallback ??= fallbackTransport());\nvar installAbsoluteHttpTransport = (transport) => {\n const installation = { transport };\n runtimeRegistry.installations.push(installation);\n return () => {\n const index = runtimeRegistry.installations.indexOf(installation);\n if (index >= 0)\n runtimeRegistry.installations.splice(index, 1);\n };\n};\n\n// src/client.ts\nvar forbiddenCredentialHeaders = new Set([\n \"authorization\",\n \"cookie\",\n \"proxy-authorization\"\n]);\nvar transportFor = (configured) => configured ?? getAbsoluteHttpTransport();\nvar safeHeaders = (input) => {\n const headers = new Headers(input);\n for (const name of forbiddenCredentialHeaders) {\n if (headers.has(name))\n throw new AbsoluteHttpError(\"origin\", `Absolute HTTP owns the ${name} credential header for trusted transports.`);\n }\n return headers;\n};\nvar requestFor = (target, options, transport) => {\n const source = target instanceof Request ? target : undefined;\n const requestedUrl = source ? source.url : target;\n const url = resolveAbsoluteHttpUrl(requestedUrl, transport.origin);\n const headers = safeHeaders(options?.headers ?? source?.headers);\n return new Request(source ?? url, {\n ...options,\n credentials: transport.runtime === \"web\" ? \"same-origin\" : \"omit\",\n headers,\n redirect: \"error\"\n });\n};\nvar normalizeFetchError = (caught, url) => {\n if (caught instanceof AbsoluteHttpError)\n return caught;\n if (caught instanceof DOMException && (caught.name === \"AbortError\" || caught.name === \"TimeoutError\"))\n return new AbsoluteHttpError(\"aborted\", \"HTTP request was aborted.\", {\n cause: caught,\n url\n });\n return new AbsoluteHttpError(\"network\", \"HTTP request failed.\", {\n cause: caught,\n url\n });\n};\nvar requireOk = (response) => {\n if (!response.ok)\n throw new AbsoluteHttpError(\"http\", `HTTP request failed with status ${response.status}.`, { status: response.status, url: response.url });\n return response;\n};\nvar parseJson = async (response) => {\n const text = await response.text();\n if (text === \"\")\n return;\n try {\n return JSON.parse(text);\n } catch (cause) {\n throw new AbsoluteHttpError(\"response\", \"HTTP response is not valid JSON.\", {\n cause,\n status: response.status,\n url: response.url\n });\n }\n};\nvar jsonOptions = (method, body, options) => {\n const headers = new Headers(options?.headers);\n if (body !== undefined && !headers.has(\"content-type\"))\n headers.set(\"content-type\", \"application/json\");\n let encoded;\n try {\n encoded = body === undefined ? undefined : JSON.stringify(body);\n } catch (cause) {\n throw new AbsoluteHttpError(\"body\", \"HTTP body is not JSON serializable.\", {\n cause\n });\n }\n return encoded === undefined ? { ...options, headers, method } : { ...options, body: encoded, headers, method };\n};\nvar createAbsoluteHttpClient = (options = {}) => {\n const fetchTrusted = async (input, init) => {\n const transport = transportFor(options.transport);\n const request2 = requestFor(input, init, transport);\n try {\n return await transport.fetch(request2);\n } catch (caught) {\n throw normalizeFetchError(caught, request2.url);\n }\n };\n const request = (target, requestOptions) => fetchTrusted(target, requestOptions);\n const json = async (target, requestOptions) => parseJson(requireOk(await request(target, requestOptions)));\n const jsonMethod = (method, target, body, requestOptions) => json(target, jsonOptions(method, body, requestOptions));\n return {\n delete: (target, requestOptions) => {\n const { body, ...optionsWithoutBody } = requestOptions ?? {};\n return jsonMethod(\"DELETE\", target, body, optionsWithoutBody);\n },\n fetch: fetchTrusted,\n get: (target, requestOptions) => json(target, { ...requestOptions, method: \"GET\" }),\n json,\n origin: () => transportFor(options.transport).origin,\n patch: (target, body, requestOptions) => jsonMethod(\"PATCH\", target, body, requestOptions),\n post: (target, body, requestOptions) => jsonMethod(\"POST\", target, body, requestOptions),\n put: (target, body, requestOptions) => jsonMethod(\"PUT\", target, body, requestOptions),\n request,\n text: async (target, requestOptions) => requireOk(await request(target, requestOptions)).text()\n };\n};\nvar http = createAbsoluteHttpClient();\nexport {\n installAbsoluteHttpTransport,\n http,\n createAbsoluteHttpTransport,\n createAbsoluteHttpClient,\n AbsoluteHttpError\n};\n\n//# debugId=EEC17EF6030AA63A64756E2164756E21\n//# sourceMappingURL=index.js.map\n",
58
58
  "import {\n\tcreateAbsoluteHttpTransport,\n\tinstallAbsoluteHttpTransport,\n\ttype AbsoluteHttpFetch\n} from '@absolutejs/http';\n\nexport const installAbsoluteMobileShellHttp = (\n\torigin: string,\n\tfetch: AbsoluteHttpFetch = globalThis.fetch\n) =>\n\tinstallAbsoluteHttpTransport(\n\t\tcreateAbsoluteHttpTransport({ fetch, origin, runtime: 'native' })\n\t);\n"
59
59
  ],
60
- "mappings": "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",
61
- "debugId": "97C358B153ACDA7B64756E2164756E21",
60
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAa,0BAA0B,KAC1B,mBAAmB,IACnB,qBAAqB,GACrB,cAAc,IACd,gBAAgB,IAChB,gCACZ,8CAMY,kCAEA,oBAAoB,MACpB,qBAAqB,MACrB,kBAAkB,GAClB,6BAA6B,IAC7B,yBAAyB,IACzB,2BAA2B,KAC3B,6BAA6B,KAC7B,qBAAqB,OACrB,sBAAsB,IACtB,eAAe,MACf,iCAAiC,KACjC,sBAAsB,IACtB,8BAA8B,GAC9B,yBAAyB,GACzB,0BAA0B,GAC1B,2BAA2B,GAC3B,6BAA6B,6BAC7B,6BAA6B,MAC7B,sBAAsB,6BACtB,sBAAsB,MACtB,wBAAwB,MACxB,wBAAwB,IACxB,sBAAsB,IACtB,iBAAiB,KACjB,0BAA0B,KAC1B,wBAAwB,KACxB,eAAe,IACf,oBAAoB,IACpB,4BAGA,2BACA,wBAAwB,IACxB,2BAA2B,GAC3B,4BAA4B,KAC5B,mBAAmB,KACnB,yBAAyB,IACzB,2BAA2B,MAC3B,qBAAqB,IACrB,sBAAsB,IACtB,0BAEA,uBAKA,2BAA2B,KAC3B,mBAAmB,OACnB,0BAA0B,OAC1B,sBAAsB,GACtB,0BAA0B,IAC1B,yBAAyB,KACzB,sCAAsC,IACtC,6BAA6B,GAC7B,wBAAwB,GACxB,0BAA0B,GAC1B,yBAAyB,IACzB,8BAA8B,IAC9B,qCAAqC,MACrC,wBAAwB,MACxB,kBAAkB,GAClB,sBAAsB,IACtB,yBAAyB,IACzB,0BAA0B,KAC1B,6BAA6B,KAC7B,6BAA6B,KAC7B,kCAAkC,GAClC,kCAAkC,IAClC,mBAAmB,KACnB,oBAAoB,KACpB,6BAA6B,KAC7B,iBAAiB,GACjB,YACA,gBAAgB,IAChB,2BAA2B,MAU3B,yCAAyC,KASzC,oCAAoC,KACpC,gCAAgC,KAChC,gCAAgC,GAChC,oCAAoC,IACpC,qCAAqC,IACrC,qCAAqC,MACrC,oCAAoC,KACpC,6BAA6B,OAC7B,gCAAgC,KAChC,+BAA+B,IAC/B,8BAA8B,KAC9B,2CAA2C,IAC3C,kCAAkC,GAClC,+BAA+B,GAC/B,uCAAuC,GACvC,iCAAiC,GACjC,+BAA+B,IAC/B,qCAAqC,GACrC,iCAAiC,IACjC,mCAAmC,IACnC,6BAA6B,IAC7B,qCAAqC,GACrC,iCAAiC;AAAA;AAAA,EAtHjC,mCACZ;AAAA,EA6BY,6BAA6B;AAAA,IACzC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,EACxC;AAAA,EACa,4BAA4B,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,GAAG;AAAA,EAS9D,2BACZ,2BAA2B;AAAA,EACf,wBACZ,2BACA,sBACA,qBACA;AAAA,EA2BY,aAAa,IAAI;AAAA;;;ICjFjB,oBAAoB,CAAC,aAAqB;AAAA,EACtD,IAAI;AAAA,EAEJ,IAAI,WAAW,0BAA0B;AAAA,IACxC,iBAAiB,GAAG,SAAS,QAAQ,cAAc;AAAA,EACpD,EAAO,SAAI,WAAW,0BAA0B;AAAA,IAC/C,iBAAiB,IAAI,WAAW,0BAA0B,QAAQ,cAAc;AAAA,EACjF,EAAO;AAAA,IACN,MAAM,eAAe,KAAK,MAAM,WAAW,wBAAwB;AAAA,IACnE,MAAM,UAAU,KAAK,MAAM,eAAe,EAAE;AAAA,IAC5C,MAAM,UAAU,eAAe;AAAA,IAC/B,iBACC,YAAY,IAAI,GAAG,aAAa,GAAG,YAAY;AAAA;AAAA,EAGjD,OAAO;AAAA;AAAA;AAAA,EArBR;AAAA;;;ICGM,QAQA,QAeO,kBAAkB,MAAM;AAAA,EACpC,MAAM,MAAM,IAAI;AAAA,EAChB,MAAM,QAAQ,OAAO,IAAI,SAAS;AAAA,EAClC,MAAM,MAAM,IAAI,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,GAAG;AAAA,EACpD,IAAI,QAAQ,IAAI,SAAS;AAAA,EACzB,MAAM,UAAU,IAAI,WAAW,EAAE,SAAS,EAAE,SAAS,GAAG,GAAG;AAAA,EAC3D,MAAM,UAAU,IAAI,WAAW,EAAE,SAAS,EAAE,SAAS,GAAG,GAAG;AAAA,EAC3D,MAAM,OAAO,SAAS,oBAAoB,OAAO;AAAA,EACjD,QAAQ,QAAQ,qBAAqB;AAAA,EAErC,OAAO,GAAG,SAAS,OAAO,SAAS,WAAW,WAAW;AAAA,GAG7C,gBAAgB,CAAC,YASxB;AAAA,EACL;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACR;AAAA,EACJ,MAAM,OAAO,GAAG,OAAO,OAAO,OAAO,iBAAiB,OAAO;AAAA,EAC7D,MAAM,MAAM,GAAG,OAAO,OAAO,UAAU,OAAO;AAAA,EAC9C,MAAM,OAAO,GAAG,OAAO,cAAc,OAAO,SAAS,OAAO,OAAO,kBAAkB,aAAa,IAAI,OAAO;AAAA,EAC7G,MAAM,QACL,OAAO,kBAAkB,YAAY,OAAO,SAAS,aAAa,IAC/D,IAAI,OAAO,aAAa,kBAAkB,aAAa,KAAK,OAAO,UACnE;AAAA,EACJ,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,KAAK,QAAQ,QAAQ,OAAO,OAAO;AAAA,EAC/C,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IACP,KAAK,OAAO,cAAS,OAAO,UAAU,OAAO,aAAa,OAAO,WAAW,cAAc,SAAS,YAAY,cAAc,QAAQ,OACtI;AAAA,EACA,IAAI,YAAY;AAAA,IACf,QAAQ,IACP,KAAK,OAAO,cAAS,OAAO,UAAU,OAAO,eAAe,OAAO,SAAS,YAC7E;AAAA,EACD;AAAA,EACA,IAAI,kBAAkB;AAAA,IACrB,QAAQ,IACP,KAAK,OAAO,cAAS,OAAO,UAAU,OAAO,cAAc,OAAO,UAAU,kBAC7E;AAAA,EACD;AAAA,EACA,QAAQ,IAAI,EAAE;AAAA;AAAA;AAAA,EAlFf;AAAA,EACA;AAAA,EAEM,SAAS;AAAA,IACd,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EAEM,SAAS;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA;;;ACxBA,oBAAS;AAAA,IAsBH,gBACA,gBACA,6BACA,iCACA,kBAGA,qBAAqB,CAC1B,aACA,OACA,WACI;AAAA,EACJ,MAAM,OAAO,SAAQ,WAAW;AAAA,EAChC,MAAM,OAAO,SAAQ,MAAM,KAAK;AAAA,EAChC,IAAI,SAAS,QAAQ,CAAC,KAAK,WAAW,GAAG,OAAO,GAAG;AAAA,IAClD,MAAM,IAAI,UAAU,GAAG,6CAA4C;AAAA,EACpE;AAAA,EAEA,OAAO;AAAA,GAGF,cAAc,CAAC,OAAe,WAAkB;AAAA,EACrD,MAAM,aAAa,MAAM,KAAK;AAAA,EAC9B,IAAI,CAAC;AAAA,IAAY,MAAM,IAAI,UAAU,GAAG,2BAA0B;AAAA,EAElE,OAAO;AAAA,GAGF,iBAAiB,CAAC,UAA8B;AAAA,EACrD,MAAM,aAAa,YAAY,SAAS,KAAK,cAAc;AAAA,EAC3D,IAAI,CAAC,WAAW,WAAW,GAAG,KAAK,WAAW,WAAW,IAAI,GAAG;AAAA,IAC/D,MAAM,IAAI,UACT,oDACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,GAGF,4BAA4B,CAAC,UAAkB;AAAA,EACpD,MAAM,SAAS,IAAI,IAClB,YAAY,OAAO,gCAAgC,CACpD;AAAA,EACA,MAAM,iBACL,OAAO,aAAa,YACnB,OAAO,aAAa,eACpB,OAAO,aAAa,eACpB,OAAO,aAAa;AAAA,EACtB,IAAI,OAAO,aAAa,YAAY,CAAC,gBAAgB;AAAA,IACpD,MAAM,IAAI,UACT,0FACD;AAAA,EACD;AAAA,EACA,IACC,OAAO,YACP,OAAO,YACP,OAAO,aAAa,OACpB,OAAO,UACP,OAAO,MACN;AAAA,IACD,MAAM,IAAI,UACT,6FACD;AAAA,EACD;AAAA,EAEA,OAAO,OAAO;AAAA,GAGT,qBAAqB,CAC1B,cACI;AAAA,EACJ,MAAM,aAA+B;AAAA,IACpC,GAAG,IAAI,IAAoB,aAAa,CAAC,OAAO,SAAS,CAAC;AAAA,EAC3D;AAAA,EACA,IAAI,WAAW,WAAW,GAAG;AAAA,IAC5B,MAAM,IAAI,UACT,sDACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,GAGF,iBAAiB,CACtB,OACA,qBACI;AAAA,EACJ,MAAM,oBAAoB,CAAC,SAAiB;AAAA,IAC3C,MAAM,QAAQ,YAAY,MAAM,wBAAwB,EAAE,YAAY;AAAA,IACtE,IAAI,CAAC,iBAAiB,KAAK,KAAK,GAAG;AAAA,MAClC,MAAM,IAAI,UACT,4FACD;AAAA,IACD;AAAA,IAEA,OAAO;AAAA;AAAA,EAER,MAAM,qBAAqB,IAAI,IAAI,gBAAgB,EAAE;AAAA,EAGrD,MAAM,aAAa,IAAI,IACtB,uBAAuB,UACpB,CAAC,IACD,CAAC,kBAAkB,kBAAkB,CAAC,CAC1C;AAAA,EACA,WAAW,QAAQ,SAAS,CAAC,GAAG;AAAA,IAC/B,WAAW,IAAI,kBAAkB,IAAI,CAAC;AAAA,EACvC;AAAA,EAEA,OAAO,CAAC,GAAG,UAAU,EAAE,KAAK;AAAA,GAGvB,4BAA4B,CAAC,UAA8B;AAAA,EAChE,IAAI,UAAU;AAAA,IAAW;AAAA,EACzB,MAAM,aAAa,YAClB,OACA,oCACD,EAAE,YAAY;AAAA,EACd,IAAI,CAAC,4BAA4B,KAAK,UAAU,GAAG;AAAA,IAClD,MAAM,IAAI,UACT,wEACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,GAGF,sBAAsB,CAAC,UAA8B;AAAA,EAC1D,IAAI,UAAU;AAAA,IAAW;AAAA,EACzB,MAAM,aAAa,YAAY,OAAO,oBAAoB;AAAA,EAC1D,IAAI,CAAC,uBAAuB,KAAK,UAAU,GAAG;AAAA,IAC7C,MAAM,IAAI,UACT,mGACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,GAGF,mCAAmC,CACxC,WAEA;AAAA,EACC,GAAG,IAAI,KACL,UAAU,CAAC,GACV,IAAI,CAAC,UACL,YACC,OACA,wDACD,EACE,WAAW,KAAK,EAAE,EAClB,YAAY,CACf,EACC,IAAI,CAAC,UAAU;AAAA,IACf,IAAI,CAAC,gCAAgC,KAAK,KAAK,GAAG;AAAA,MACjD,MAAM,IAAI,UACT,0GACD;AAAA,IACD;AAAA,IAEA,OAAO,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,KAAK;AAAA,GAC1C,CACH;AACD,EAAE,KAAK,GAEF,4BAA4B,CACjC,QACA,gBACI;AAAA,EACJ,IAAI,OAAO,WAAW;AAAA,IAAQ,OAAO,CAAC;AAAA,EACtC,MAAM,SAAS,OAAO,QAAQ,UAAU,CAAC;AAAA,EACzC,MAAM,aAAqC,CAAC;AAAA,EAC5C,YAAY,OAAO,WAAW,OAAO,QAAQ,MAAM,GAAG;AAAA,IACrD,MAAM,OAAO,eAAe,KAAK;AAAA,IACjC,IACC,KAAK,SAAS,GAAG,KACjB,KAAK,SAAS,GAAG,KAChB,SAAS,OAAO,KAAK,SAAS,GAAG,GACjC;AAAA,MACD,MAAM,IAAI,UACT,8BAA8B,6EAC/B;AAAA,IACD;AAAA,IACA,IAAI,SAAS,sBAAsB;AAAA,MAClC,MAAM,IAAI,UACT,kFACD;AAAA,IACD;AAAA,IACA,IAAI,KAAK,SAAS,GAAG,KAAK,KAAK,SAAS,GAAG,GAAG;AAAA,MAC7C,MAAM,IAAI,UACT,8BAA8B,iGAC/B;AAAA,IACD;AAAA,IACA,WAAW,QAAQ,mBAClB,aACA,YAAY,QAAQ,wBAAwB,OAAO,GACnD,wBAAwB,OACzB;AAAA,EACD;AAAA,EAEA,OAAO,OAAO,YACb,OAAO,QAAQ,UAAU,EAAE,KAAK,EAAE,QAAQ,WACzC,KAAK,cAAc,KAAK,CACzB,CACD;AAAA,GAGY,gCAAgC,CAC5C,QACA,gBACoC;AAAA,EACpC,MAAM,QAAQ,YAAY,OAAO,OAAO,cAAc;AAAA,EACtD,IAAI,CAAC,eAAe,KAAK,KAAK,GAAG;AAAA,IAChC,MAAM,IAAI,UACT,6EACD;AAAA,EACD;AAAA,EACA,MAAM,mBAAmB,0BACxB,OAAO,OAAO,gBACf;AAAA,EACA,MAAM,kBAAkB,OAAO,WAAW,UAAU,OAClD,KAAK,EACL,YAAY;AAAA,EACd,IAAI,kBAAkB,CAAC,eAAe,KAAK,cAAc,GAAG;AAAA,IAC3D,MAAM,IAAI,UACT,oDACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,gCAAgC,iCAC/B,OAAO,WAAW,SAAS,6BAC5B;AAAA,IACA;AAAA,IACA,kBAAkB,0BACjB,OAAO,WAAW,OAAO,WAC1B;AAAA,IACA,SAAS,YAAY,OAAO,SAAS,gBAAgB;AAAA,IACrD,iBAAiB,mBAChB,aACA,OAAO,mBAAmB,0BAC1B,wBACD;AAAA,IACA,eAAe,eACd,OAAO,WAAW,OAClB,gBACD;AAAA,IACA;AAAA,IACA,QAAQ,OAAO,UAAU;AAAA,IACzB,OAAO,eAAe,OAAO,KAAK;AAAA,IAClC,kBAAkB,0BAA0B,QAAQ,WAAW;AAAA,OAC3D,OAAO,WAAW,SACnB,EAAE,gBAAgB,OAAO,MAAM,cAAc,GAAG,IAChD,CAAC;AAAA,IACJ,YAAY,oBAAoB,OAAO,KAAK,OAAO;AAAA,IACnD,wBAAwB,mBACvB,aACA,OAAO,eAAe,cACpB,OAAO,WAAW,SAChB,4BACA,WACJ,gCACD;AAAA,IACA,WAAW,mBAAmB,OAAO,SAAS;AAAA,IAC9C;AAAA,IACA,+BAA+B,mBAC9B,aACA,OAAO,mBAAmB,SAAS,sBAClC,wBACD,qDACD;AAAA,EACD;AAAA;AAAA;AAAA,EA/QK,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,8BAA8B;AAAA,EAC9B,kCAAkC;AAAA,EAClC,mBACL;AAAA;;;IC3BK,gBAAgB,CAAC,QACtB,IACE,KAAK,EACL,QAAQ,QAAQ,GAAG,EACnB,QAAQ,qBAAqB,EAAE,EAC/B,QAAQ,aAAa,GAAG,GAEd,UAAU,CAAC,QACvB,cAAc,GAAG,EACf,QAAQ,sBAAsB,OAAO,EACrC,YAAY,GACF,WAAW,CAAC,QAAgB;AAAA,EACxC,IAAI,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,SAAS,GAAG,GAAG;AAAA,IAC7C,OAAO,IAAI,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAAA,EACjD;AAAA,EAEA,OAAO,cAAc,GAAG,EACtB,MAAM,MAAM,EACZ,OAAO,OAAO,EACd,IACA,CAAC,YACA,QAAQ,OAAO,CAAC,EAAE,YAAY,IAAI,QAAQ,MAAM,CAAC,EAAE,YAAY,CACjE,EACC,KAAK,EAAE;AAAA;;;ACvBV,yBAAS;AACT,iBAAS;AAAA,IAGI,wBAAwB,oBACxB,kCAAkC,UAClC,6BAA6B,yBAC7B,6BAA6B,SAC7B,kCAAkC,UAClC,6BAA6B,yBAC7B,6BAA6B,SAC7B,mCACZ,gCACY,6BACA,wBAAwB,oBAS/B,sBAAsB,CAAC,gBAAwB;AAAA,EACpD,IAAI;AAAA,IACH,OAAO,KAAK,MACX,cAAa,OAAK,aAAa,cAAc,GAAG,MAAM,CACvD;AAAA,IACC,MAAM;AAAA,IACP;AAAA;AAAA,GAII,qBAAqB,CAAC,UAAmB,gBAAwB;AAAA,EACtE,IAAI,OAAO,aAAa,YAAY,aAAa;AAAA,IAAM,OAAO;AAAA,EAE9D,OAAO;AAAA,IACN,QAAQ,IAAI,UAAU,cAAc;AAAA,IACpC,QAAQ,IAAI,UAAU,iBAAiB;AAAA,IACvC,QAAQ,IAAI,UAAU,sBAAsB;AAAA,IAC5C,QAAQ,IAAI,UAAU,kBAAkB;AAAA,EACzC,EAAE,KACD,CAAC,iBACA,OAAO,iBAAiB,YACxB,iBAAiB,QACjB,OAAO,OAAO,cAAc,WAAW,CACzC;AAAA,GAGY,mCAAmC,CAC/C,WACgC;AAAA,EAChC,MAAM,SAAS,OAAO,kBAAkB,OAAO,MAAM,YAAY;AAAA,EAEjE,OAAO;AAAA,IACN,UAAU,qBAAqB,OAAO;AAAA,IACtC,QAAQ,OAAO;AAAA,IACf,aAAa,GAAG;AAAA,IAChB,QAAQ,CAAC,GAAG,2BAA2B;AAAA,EACxC;AAAA,GAGY,uCAAuC,CACnD,aACA,WACI;AAAA,EACJ,MAAM,OAAO,kCAAkC,aAAa,MAAM;AAAA,EAClE,MAAM,aAAa,uCAAuC,QAAQ,IAAI;AAAA,EACtE,IAAI,eAAe;AAAA,IAClB,OAAO,QAAQ,IAAI;AAAA,EACf;AAAA,YAAQ,IAAI,oCAAoC;AAAA,EAErD,OAAO;AAAA,GAGK,0BAA0B,CAAC,gBACvC,mBAAmB,oBAAoB,WAAW,GAAG,qBAAqB,GAE9D,0BAA0B,CAAC,gBACvC,mBAAmB,oBAAoB,WAAW,GAAG,qBAAqB,GAE9D,oCAAoC,CAChD,aACA,WAEA,wBAAwB,WAAW,IAChC,iCAAiC,MAAM,IACvC,WAES,yCAAyC,CACrD,QACA,SAEA,SAAS,YACN,YACA,KAAK,UAAU;AAAA,EACf;AAAA,OACI;AAAA,IACH,MAAM,GAAG,OAAO;AAAA,EACjB;AACD,CAAC;AAAA;AAAA,EAvFS,8BAA8B,CAAC,UAAU,SAAS;AAAA;;;ICue3D,mBACA,MACA,aAAa,CAAC,UAAU,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,QAAQ,IAAI,OAAO,eAAe,CAAC,KAAK,MAAM,QAAQ,QAAQ,IAAI,OAAO,SAAS,CAAC,GACxK,UAwTA,OA62BE,0BASA,2BAYF,kBAAkB,CAAC,OAAO,UAAU;AAAA,EACtC,IAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ;AAAA,IAC1C,MAAM,IAAI,0BAA0B,gBAAgB,GAAG,uCAAuC;AAAA,EAChG,OAAO;AAAA,GAEL,iBAAiB,CAAC,YAAY,gBAAgB,SAC9C,sBAAsB,CAAC,OAAO,UAAU;AAAA,EAC1C,IAAI,MAAM,WAAW,KAAK,MAAM,KAAK,MAAM,SAAS,QAAQ,KAAK,KAAK,KAAK,MAAM,SAAS,IAAI;AAAA,IAC5F,MAAM,IAAI,yBAAyB,kBAAkB,GAAG,mFAAmF;AAAA,GAE3I,8BAA8B,CAAC,QAAQ,QAAQ,gBAAgB;AAAA,EACjE,IAAI,OAAO,yBAAyB,cAAc,CAAC,OAAO,cAAc,OAAO,oBAAoB,KAAK,OAAO,uBAAuB;AAAA,IACpI,MAAM,IAAI,yBAAyB,kBAAkB,GAAG,6DAA6D;AAAA,EACvH,YAAY,OAAO,UAAU,OAAO,eAAe,CAAC,GAAG,QAAQ,GAAG;AAAA,IAChE,oBAAoB,KAAK,OAAO,GAAG,qBAAqB,QAAQ;AAAA,IAChE,IAAI,KAAK,aAAa,cAAc,CAAC,OAAO,cAAc,KAAK,QAAQ,KAAK,KAAK,WAAW;AAAA,MAC1F,MAAM,IAAI,yBAAyB,kBAAkB,GAAG,qBAAqB,kDAAkD;AAAA,IACjI,IAAI,KAAK,gBAAgB,iBAAiB,KAAK,eAAe;AAAA,MAC5D,MAAM,IAAI,yBAAyB,kBAAkB,GAAG,qBAAqB,kEAAkE;AAAA,IACjJ,IAAI,KAAK,gBAAgB,aAAa,KAAK,gBAAgB,YAAY,KAAK,eAAe,cAAc,KAAK,gBAAgB;AAAA,MAC5H,MAAM,IAAI,yBAAyB,kBAAkB,GAAG,qBAAqB,mBAAmB,KAAK,0EAA0E;AAAA,EACnL;AAAA,EACA,YAAY,OAAO,UAAU,OAAO,aAAa,CAAC,GAAG,QAAQ,GAAG;AAAA,IAC9D,oBAAoB,KAAK,OAAO,GAAG,mBAAmB,QAAQ;AAAA,IAC9D,IAAI,KAAK,aAAa,aAAa,KAAK,SAAS,aAAa,iBAAiB,KAAK,SAAS,aAAa,YAAY,KAAK,SAAS,aAAa;AAAA,MAC/I,MAAM,IAAI,yBAAyB,kBAAkB,GAAG,mBAAmB,sCAAsC;AAAA,IACnH,IAAI,KAAK,UAAU,gBAAgB,cAAc,CAAC,OAAO,cAAc,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS,cAAc;AAAA,MAC/H,MAAM,IAAI,yBAAyB,kBAAkB,GAAG,mBAAmB,8DAA8D;AAAA,IAC3I,IAAI,KAAK,UAAU,gBAAgB,aAAa,KAAK,SAAS,aAAa;AAAA,MACzE,MAAM,IAAI,yBAAyB,kBAAkB,GAAG,mBAAmB,4DAA4D;AAAA,IACzI,IAAI,KAAK,gBAAgB,iBAAiB,KAAK,eAAe;AAAA,MAC5D,MAAM,IAAI,yBAAyB,kBAAkB,GAAG,mBAAmB,kEAAkE;AAAA,IAC/I,IAAI,KAAK,gBAAgB,aAAa,KAAK,gBAAgB,YAAY,KAAK,eAAe,cAAc,KAAK,gBAAgB;AAAA,MAC5H,MAAM,IAAI,yBAAyB,kBAAkB,GAAG,mBAAmB,mBAAmB,KAAK,oDAAoD;AAAA,EAC3J;AAAA,EACA,OAAO;AAAA,GAuCL,qCAAqC,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM;AAAA,EACpE,MAAM,aAAa,eAAe,MAAM,IAAI,CAAC,GAAG,OAAO,UAAU,IAAI,CAAC,KAAK,QAAQ,IAAI,kBAAkB,CAAC;AAAA,EAC1G,MAAM,MAAM,IAAI;AAAA,EAChB,WAAW,aAAa,YAAY;AAAA,IAClC,IAAI,OAAO,UAAU,OAAO,YAAY,UAAU,GAAG,KAAK,MAAM,UAAU,MAAM,UAAU,GAAG,WAAW;AAAA,MACtG,MAAM,IAAI,0BAA0B,gBAAgB,wDAAwD;AAAA,IAC9G,IAAI,IAAI,IAAI,UAAU,EAAE;AAAA,MACtB,MAAM,IAAI,0BAA0B,gBAAgB,0BAA0B,UAAU,gCAAgC;AAAA,IAC1H,IAAI,IAAI,UAAU,EAAE;AAAA,IACpB,IAAI,UAAU;AAAA,MACZ,4BAA4B,UAAU,WAAW,GAAG,UAAU,cAAc;AAAA,EAChF;AAAA,EACA,OAAO,WAAW,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC;AAAA,GAoBvD,mCAAmC,CAAC,gBAAgB,SAAS,EAAE,SAAS,EAAE,MAAM;AAAA,EAClF,MAAM,aAAa,mCAAmC,MAAM,EAAE,IAAI,CAAC,cAAc;AAAA,IAC/E,MAAM,UAAU,2BAA2B,UAAU,SAAS,SAAS;AAAA,IACvE,OAAO;AAAA,MACL,IAAI,UAAU;AAAA,SACX,2BAA2B,eAAe,UAAU,OAAO,QAAQ,0BAA0B,SAAS;AAAA,IAC3G;AAAA,GACD;AAAA,EACD,MAAM,SAAS,IAAI,IAAI,WAAW,IAAI,CAAC,cAAc,UAAU,EAAE,CAAC;AAAA,EAClE,MAAM,qBAAqB,OAAO,KAAK,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,KAAK;AAAA,EAC5F,OAAO,EAAE,YAAY,mBAAmB;AAAA,GAkCtC,6BAA6B,CAAC,eAAe,SAAS,EAAE,SAAS,EAAE,MAAM;AAAA,EAC3E,gBAAgB,eAAe,4BAA4B;AAAA,EAC3D,MAAM,gBAAgB,gBAAgB,OAAO,SAAS,4BAA4B;AAAA,EAClF,MAAM,aAAa,CAAC,GAAG,OAAO,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,SAAS;AAAA,EACxF,MAAM,WAAW,IAAI;AAAA,EACrB,WAAW,aAAa,YAAY;AAAA,IAClC,gBAAgB,UAAU,WAAW,0BAA0B;AAAA,IAC/D,IAAI,SAAS,IAAI,UAAU,SAAS;AAAA,MAClC,MAAM,IAAI,0BAA0B,gBAAgB,kBAAkB,UAAU,sCAAsC;AAAA,IACxH,SAAS,IAAI,UAAU,SAAS;AAAA,EAClC;AAAA,EACA,MAAM,kBAAkB,WAAW,KAAK,WAAW,GAAG,YAAY,IAAI;AAAA,EACtE,MAAM,2BAA2B,gBAAgB,OAAO,4BAA4B,iBAAiB,wCAAwC;AAAA,EAC7I,IAAI,2BAA2B;AAAA,IAC7B,MAAM,IAAI,0BAA0B,gBAAgB,iEAAiE;AAAA,EACvH,IAAI,gBAAgB;AAAA,IAClB,MAAM,IAAI,0BAA0B,kBAAkB,sBAAsB,qDAAqD,iBAAiB,EAAE,eAAe,cAAc,CAAC;AAAA,EACpL,IAAI,gBAAgB;AAAA,IAClB,MAAM,IAAI,0BAA0B,kBAAkB,sBAAsB,6DAA6D,4BAA4B,EAAE,eAAe,cAAc,CAAC;AAAA,EACvM,MAAM,QAAQ,CAAC;AAAA,EACf,SAAS,UAAU,gBAAgB,EAAE,WAAW,eAAe,WAAW;AAAA,IACxE,MAAM,YAAY,WAAW,KAAK,CAAC,cAAc,UAAU,cAAc,OAAO;AAAA,IAChF,IAAI,cAAc;AAAA,MAChB,MAAM,IAAI,0BAA0B,qBAAqB,kBAAkB,UAAU,QAAQ,sBAAsB,EAAE,eAAe,cAAc,CAAC;AAAA,IACrJ,MAAM,KAAK,SAAS;AAAA,EACtB;AAAA,EACA,OAAO,EAAE,0BAA0B,OAAO,cAAc;AAAA;AAAA;AAAA,EA72CtD,oBAAoB,OAAO,IAAI,2CAA2C;AAAA,EAC1E,OAAO;AAAA,EAEP,YAAY,MAAM;AAAA,IACpB,MAAM,WAAW,KAAK;AAAA,IACtB,IAAI,WAAW,QAAQ;AAAA,MACrB,OAAO;AAAA,IACT,IAAI,OAAO,aAAa,YAAY,aAAa,QAAQ,MAAM,QAAQ,QAAQ,IAAI,UAAU,eAAe,CAAC,GAAG;AAAA,MAC9G,QAAQ,IAAI,UAAU,WAAW,CAAC,CAAC;AAAA,MACnC,OAAO;AAAA,IACT;AAAA,IACA,MAAM,UAAU,EAAE,SAAS,CAAC,GAAG,eAAe,CAAC,EAAE;AAAA,IACjD,OAAO,eAAe,MAAM,mBAAmB;AAAA,MAC7C,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,OAAO;AAAA,KACN;AAAA,EAwSC,QAAQ,IAAI;AAAA,EA62BV,2BAAN,MAAM,iCAAiC,MAAM;AAAA,IAC3C;AAAA,IACA,WAAW,CAAC,MAAM,SAAS;AAAA,MACzB,MAAM,OAAO;AAAA,MACb,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA;AAAA,EAEhB;AAAA,EAEM,4BAAN,MAAM,kCAAkC,MAAM;AAAA,IAC5C;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,CAAC,MAAM,SAAS,WAAW,CAAC,GAAG;AAAA,MACxC,MAAM,OAAO;AAAA,MACb,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,gBAAgB,SAAS;AAAA,MAC9B,KAAK,gBAAgB,SAAS;AAAA;AAAA,EAElC;AAAA;;;AChrDA,yBAAS;AACT,oBAAS,kBAAS,mBAAM;AAAA,IAqBlB,SAAS,CAAC,UACf,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,GAE9D,aAAa,CAAC,SAAiB;AAAA,EACpC,IAAI;AAAA,IACH,MAAM,QAAiB,KAAK,MAAM,cAAa,MAAM,MAAM,CAAC;AAAA,IAE5D,OAAO,OAAO,KAAK,IAAI,QAAQ;AAAA,IAC9B,MAAM;AAAA,IACP;AAAA;AAAA,GAII,sBAAsB,CAAC,aAAqB;AAAA,EACjD,MAAM,aAAa,QAAQ,IAAI,UAAU,YAAY;AAAA,EACrD,IAAI,CAAC,OAAO,UAAU;AAAA,IAAG;AAAA,EACzB,MAAM,OAAO,QAAQ,IAAI,YAAY,MAAM;AAAA,EAC3C,IAAI,CAAC,OAAO,IAAI;AAAA,IAAG;AAAA,EAEnB,OAAO,QAAQ,IAAI,MAAM,aAAa;AAAA,GAGjC,sBAAsB,CAAC,aAAqB,gBAAwB;AAAA,EACzE,IAAI,YAAY,UAAQ,WAAW;AAAA,EACnC,OAAO,MAAM;AAAA,IACZ,MAAM,YAAY,OACjB,WACA,gBACA,aACA,cACD;AAAA,IACA,MAAM,WAAW,WAAW,SAAS;AAAA,IACrC,IAAI,YAAY,QAAQ,IAAI,UAAU,MAAM,MAAM;AAAA,MACjD,OAAO;AAAA,IACR,MAAM,SAAS,SAAQ,SAAS;AAAA,IAChC,IAAI,WAAW;AAAA,MAAW;AAAA,IAC1B,YAAY;AAAA,EACb;AAAA,GAGK,gBAAgB,CAAC,IAAY,WAClC,IAAI,UACH,+CAA+C,OAAO,QACvD,GAEK,mBAAkB,CAAC,OAAgB,IAAY,WAAkB;AAAA,EACtE,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ;AAAA,IACxE,MAAM,cAAc,IAAI,GAAG,yCAAwC;AAAA,EAEpE,OAAO;AAAA,GAGF,WAAW,CAAC,OAAgB,IAAY,WAAkB;AAAA,EAC/D,IACC,OAAO,UAAU,YACjB,MAAM,KAAK,MAAM,SACjB,MAAM,WAAW;AAAA,IAEjB,MAAM,cAAc,IAAI,GAAG,4CAA2C;AAAA,EAEvE,OAAO;AAAA,GAGF,gBAAgB,CAAC,OAAgB,IAAY,WAAmB;AAAA,EACrE,IAAI,CAAC,OAAO,KAAK;AAAA,IAAG,MAAM,cAAc,IAAI,MAAM;AAAA,EAElD,OAAO;AAAA,GAGF,eAAe,CAAC,QAAiC,QACtD,OAAO,MAEF,sBAIoB,CAAC,OAAO,IAAI,WAAU;AAAA,EAC/C,IACC,UAAU,QACV,OAAO,UAAU,YACjB,OAAO,UAAU;AAAA,IAEjB,OAAO;AAAA,EACR,IAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAChE,IAAI,MAAM,QAAQ,KAAK;AAAA,IACtB,OAAO,MAAM,IAAI,CAAC,UAAU,oBAAmB,OAAO,IAAI,MAAK,CAAC;AAAA,EACjE,IAAI,OAAO,KAAK;AAAA,IACf,OAAO,OAAO,YACb,OAAO,QAAQ,KAAK,EAAE,IAAI,EAAE,KAAK,WAAW;AAAA,MAC3C;AAAA,MACA,oBAAmB,OAAO,IAAI,MAAK;AAAA,IACpC,CAAC,CACF;AAAA,EAED,MAAM,cAAc,IAAI,GAAG,2BAA0B;AAAA,GAGhD,YAIuC,CAAC,OAAO,IAAI,UAAU;AAAA,EAClE,MAAM,SAAS,cACd,OACA,IACA,uBAAuB,0BACxB;AAAA,EACA,MAAM,OAAO,QAAQ,IAAI,QAAQ,MAAM;AAAA,EACvC,MAAM,aAAa,SAClB,QAAQ,IAAI,QAAQ,YAAY,GAChC,IACA,aAAa,kBACd;AAAA,EACA,IAAI,SAAS;AAAA,IAAqB,OAAO,EAAE,YAAY,KAAK;AAAA,EAC5D,IAAI,SAAS;AAAA,IACZ,OAAO;AAAA,MACN;AAAA,MACA,MAAM,SACL,QAAQ,IAAI,QAAQ,MAAM,GAC1B,IACA,aAAa,YACd;AAAA,MACA,IAAI,SACH,QAAQ,IAAI,QAAQ,IAAI,GACxB,IACA,aAAa,UACd;AAAA,MACA;AAAA,IACD;AAAA,EACD,MAAM,SAAQ,SACb,QAAQ,IAAI,QAAQ,OAAO,GAC3B,IACA,aAAa,aACd;AAAA,EACA,IAAI,SAAS;AAAA,IAAgB,OAAO,EAAE,YAAY,eAAO,KAAK;AAAA,EAC9D,IAAI,SAAS;AAAA,IACZ,OAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,oBACN,QAAQ,IAAI,QAAQ,OAAO,GAC3B,IACA,aAAa,aACd;AAAA,IACD;AAAA,EAED,MAAM,cAAc,IAAI,aAAa,8BAA8B;AAAA,GAG9D,YAIyB,CAAC,OAAO,IAAI,UAAU;AAAA,EACpD,MAAM,SAAS,cACd,OACA,IACA,aAAa,0BACd;AAAA,EACA,MAAM,UAAU,IAAI,IAAI,CAAC,cAAc,WAAW,CAAC;AAAA,EACnD,MAAM,cAAc,OAAO,KAAK,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG,CAAC;AAAA,EACvE,IAAI;AAAA,IACH,MAAM,cACL,IACA,aAAa,SAAS,0CACvB;AAAA,EACD,MAAM,qBAAqB,QAAQ,IAAI,QAAQ,YAAY;AAAA,EAC3D,IAAI,uBAAuB,aAAa,CAAC,MAAM,QAAQ,kBAAkB;AAAA,IACxE,MAAM,cACL,IACA,aAAa,oCACd;AAAA,EACD,MAAM,aAAa,MAAM,QAAQ,kBAAkB,IAChD,qBACA,CAAC;AAAA,EAEJ,OAAO;AAAA,IACN,YAAY,WAAW,IAAI,CAAC,OAAO,mBAClC,UAAU,OAAO,IAAI,cAAc,CACpC;AAAA,IACA,WAAW,iBACV,QAAQ,IAAI,QAAQ,WAAW,GAC/B,IACA,aAAa,iBACd;AAAA,EACD;AAAA,GAGK,kBAAkB,CAAC,OAAgB,OAAoC;AAAA,EAC5E,MAAM,SAAS,cAAc,OAAO,IAAI,8BAA8B;AAAA,EACtE,MAAM,UAAU,IAAI,IAAI;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EACD,MAAM,cAAc,OAAO,KAAK,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG,CAAC;AAAA,EACvE,IAAI;AAAA,IACH,MAAM,cAAc,IAAI,aAAa,+BAA+B;AAAA,EACrE,MAAM,kBAAkB,QAAQ,IAAI,QAAQ,aAAa;AAAA,EACzD,MAAM,gBAAgB,QAAQ,IAAI,QAAQ,WAAW;AAAA,EACrD,IAAI,oBAAoB,aAAa,CAAC,MAAM,QAAQ,eAAe;AAAA,IAClE,MAAM,cAAc,IAAI,yCAAyC;AAAA,EAClE,IAAI,kBAAkB,aAAa,CAAC,MAAM,QAAQ,aAAa;AAAA,IAC9D,MAAM,cAAc,IAAI,uCAAuC;AAAA,EAChE,MAAM,cAAuD,MAAM,QAClE,eACD,IACG,gBAAgB,IAAI,CAAC,OAAO,UAAU;AAAA,IACtC,MAAM,OAAO,cACZ,OACA,IACA,yBAAyB,2BAC1B;AAAA,IACA,MAAM,kBAAkB,IAAI,IAAI;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,IACD,MAAM,qBAAqB,OAAO,KAAK,IAAI,EAAE,KAC5C,CAAC,QAAQ,CAAC,gBAAgB,IAAI,GAAG,CAClC;AAAA,IACA,IAAI;AAAA,MACH,MAAM,cACL,IACA,yBAAyB,UAAU,sCACpC;AAAA,IACD,MAAM,QAAQ,SACb,QAAQ,IAAI,MAAM,OAAO,GACzB,IACA,yBAAyB,cAC1B;AAAA,IACA,MAAM,cAAc,aAAa,MAAM,aAAa;AAAA,IACpD,MAAM,cAAc,aAAa,MAAM,aAAa;AAAA,IACpD,MAAM,aAAa,aAAa,MAAM,YAAY;AAAA,IAClD,MAAM,0BAA0B,aAC/B,MACA,yBACD;AAAA,IACA,MAAM,mBAAmB,aAAa,MAAM,kBAAkB;AAAA,IAC9D,MAAM,SAAS,aAAa,MAAM,UAAU;AAAA,IAC5C,IACC,gBAAgB,aAChB,gBAAgB,aAChB,gBAAgB;AAAA,MAEhB,MAAM,cACL,IACA,yBAAyB,gCAC1B;AAAA,IACD,IACC,gBAAgB,aAChB,gBAAgB,YAChB,gBAAgB,aAChB,gBAAgB;AAAA,MAEhB,MAAM,cACL,IACA,yBAAyB,gCAC1B;AAAA,IACD,IACC,eAAe,aACf,eAAe,UACf,eAAe;AAAA,MAEf,MAAM,cACL,IACA,yBAAyB,+BAC1B;AAAA,IACD,IACC,4BAA4B,aAC5B,4BAA4B,WAC5B,4BAA4B;AAAA,MAE5B,MAAM,cACL,IACA,yBAAyB,4CAC1B;AAAA,IACD,IACC,qBAAqB,aACrB,qBAAqB,cACrB,qBAAqB,YACrB,qBAAqB;AAAA,MAErB,MAAM,cACL,IACA,yBAAyB,qCAC1B;AAAA,IAED,OAAO;AAAA,MACN;AAAA,SACI,cAAc,EAAE,YAAY,IAAI,CAAC;AAAA,SACjC,cAAc,EAAE,YAAY,IAAI,CAAC;AAAA,SACjC,aAAa,EAAE,WAAW,IAAI,CAAC;AAAA,SAC/B,0BACD;AAAA,QACA;AAAA,MACD,IACC,CAAC;AAAA,SACA,mBAAmB,EAAE,iBAAiB,IAAI,CAAC;AAAA,SAC3C,WAAW,YACZ,CAAC,IACD;AAAA,QACA,UAAU,iBACT,QACA,IACA,yBAAyB,iBAC1B;AAAA,MACD;AAAA,IACH;AAAA,GACA,IACA;AAAA,EACH,MAAM,YAAmD,MAAM,QAC9D,aACD,IACG,cAAc,IAAI,CAAC,OAAO,UAAU;AAAA,IACpC,MAAM,OAAO,cACZ,OACA,IACA,uBAAuB,2BACxB;AAAA,IACA,MAAM,kBAAkB,IAAI,IAAI;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,IACD,MAAM,qBAAqB,OAAO,KAAK,IAAI,EAAE,KAC5C,CAAC,QAAQ,CAAC,gBAAgB,IAAI,GAAG,CAClC;AAAA,IACA,IAAI;AAAA,MACH,MAAM,cACL,IACA,uBAAuB,UAAU,sCAClC;AAAA,IACD,MAAM,aAAa,aAAa,MAAM,YAAY;AAAA,IAClD,MAAM,cAAc,aAAa,MAAM,aAAa;AAAA,IACpD,MAAM,cAAc,aAAa,MAAM,aAAa;AAAA,IACpD,MAAM,0BAA0B,aAC/B,MACA,yBACD;AAAA,IACA,MAAM,mBAAmB,aAAa,MAAM,UAAU;AAAA,IACtD,IAAI;AAAA,IACJ,IAAI,qBAAqB,WAAW;AAAA,MACnC,MAAM,iBAAiB,cACtB,kBACA,IACA,uBAAuB,oCACxB;AAAA,MACA,MAAM,yBAAyB,OAAO,KACrC,cACD,EAAE,KACD,CAAC,QAAQ,QAAQ,iBAAiB,QAAQ,UAC3C;AAAA,MACA,IAAI;AAAA,QACH,MAAM,cACL,IACA,uBAAuB,mBAAmB,0CAC3C;AAAA,MACD,MAAM,WAAW,aAAa,gBAAgB,UAAU;AAAA,MACxD,IACC,aAAa,iBACb,aAAa,YACb,aAAa;AAAA,QAEb,MAAM,cACL,IACA,uBAAuB,sCACxB;AAAA,MACD,MAAM,cAAc,aACnB,gBACA,aACD;AAAA,MACA,IAAI,gBAAgB,aAAa,aAAa;AAAA,QAC7C,MAAM,cACL,IACA,uBAAuB,mDACxB;AAAA,MACD,WAAW;AAAA,QACV;AAAA,WACI,gBAAgB,YACjB,CAAC,IACD;AAAA,UACA,aAAa,iBACZ,aACA,IACA,uBAAuB,6BACxB;AAAA,QACD;AAAA,MACH;AAAA,IACD;AAAA,IACA,IACC,eAAe,aACf,eAAe,UACf,eAAe;AAAA,MAEf,MAAM,cACL,IACA,uBAAuB,+BACxB;AAAA,IACD,IACC,gBAAgB,aAChB,gBAAgB,YAChB,gBAAgB,aAChB,gBAAgB;AAAA,MAEhB,MAAM,cACL,IACA,uBAAuB,gCACxB;AAAA,IACD,IACC,4BAA4B,aAC5B,4BAA4B,WAC5B,4BAA4B;AAAA,MAE5B,MAAM,cACL,IACA,uBAAuB,4CACxB;AAAA,IACD,IACC,gBAAgB,aAChB,gBAAgB,aAChB,gBAAgB;AAAA,MAEhB,MAAM,cACL,IACA,uBAAuB,gCACxB;AAAA,IAED,OAAO;AAAA,MACN,OAAO,SACN,QAAQ,IAAI,MAAM,OAAO,GACzB,IACA,uBAAuB,cACxB;AAAA,SACI,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,SAC3B,cAAc,EAAE,YAAY,IAAI,CAAC;AAAA,SACjC,0BACD,EAAE,wBAAwB,IAC1B,CAAC;AAAA,SACA,cACD;AAAA,QACA;AAAA,MACD,IACC,CAAC;AAAA,SACA,aAAa,EAAE,WAAuB,IAAI,CAAC;AAAA,IAChD;AAAA,GACA,IACA;AAAA,EACH,MAAM,QAAQ,QAAQ,IAAI,QAAQ,sBAAsB;AAAA,EAExD,OAAO;AAAA,OACF,cAAc,EAAE,YAAY,IAAI,CAAC;AAAA,OACjC,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,OAC7B,UAAU,YACX,CAAC,IACD;AAAA,MACA,sBAAsB,iBACrB,OACA,IACA,gCACD;AAAA,IACD;AAAA,EACH;AAAA,GAGK,YAG+B,CAAC,IAAI,UAAU;AAAA,EACnD,MAAM,SAAS,cAAc,OAAO,IAAI,gCAAgC;AAAA,EACxE,MAAM,UAAU,IAAI,IAAI;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EACD,MAAM,cAAc,OAAO,KAAK,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG,CAAC;AAAA,EACvE,IAAI;AAAA,IACH,MAAM,cAAc,IAAI,GAAG,+BAA+B;AAAA,EAC3D,MAAM,UAAU,iBACf,QAAQ,IAAI,QAAQ,SAAS,GAC7B,IACA,SACD;AAAA,EACA,MAAM,kBAAkB,QAAQ,IAAI,QAAQ,0BAA0B;AAAA,EACtE,MAAM,2BACL,oBAAoB,YACjB,KAAK,IAAI,GAAG,UAAU,CAAC,IACvB,iBAAgB,iBAAiB,IAAI,0BAA0B;AAAA,EACnE,MAAM,qBAAqB,QAAQ,IAAI,QAAQ,YAAY;AAAA,EAC3D,MAAM,oBAAoB,QAAQ,IAAI,QAAQ,WAAW;AAAA,EACzD,IAAI,uBAAuB,aAAa,CAAC,MAAM,QAAQ,kBAAkB;AAAA,IACxE,MAAM,cAAc,IAAI,8BAA8B;AAAA,EACvD,MAAM,aAAa,MAAM,QAAQ,kBAAkB,IAChD,qBACA;AAAA,EAEH,OAAO;AAAA,IACN;AAAA,OACI,sBAAsB,YACvB,CAAC,IACD,EAAE,WAAW,gBAAgB,mBAAmB,EAAE,EAAE;AAAA,IACvD;AAAA,OACI,MAAM,QAAQ,UAAU,IACzB;AAAA,MACA,YAAY,WAAW,IAAI,CAAC,OAAO,UAClC,UAAU,OAAO,IAAI,KAAK,CAC3B;AAAA,IACD,IACC,CAAC;AAAA,IACJ;AAAA,EACD;AAAA,GAGK,kBAAkB,CAAC,aACxB;AAAA,EACC,QAAQ,IAAI,UAAU,cAAc;AAAA,EACpC,QAAQ,IAAI,UAAU,sBAAsB;AAAA,EAC5C,QAAQ,IAAI,UAAU,iBAAiB;AAAA,EACvC,QAAQ,IAAI,UAAU,kBAAkB;AACzC,EACE,QAAQ,CAAC,iBACT,OAAO,YAAY,IAAI,OAAO,KAAK,YAAY,IAAI,CAAC,CACrD,EACC,OAAO,CAAC,MAAM,OAAO,UAAU,MAAM,QAAQ,IAAI,MAAM,KAAK,EAC5D,KAAK,GAEK,6BAA6B,CACzC,gBACiC;AAAA,EACjC,MAAM,kBAAkB,OAAK,UAAQ,WAAW,GAAG,cAAc;AAAA,EACjE,MAAM,cAAc,WAAW,eAAe;AAAA,EAC9C,IAAI,CAAC;AAAA,IACJ,OAAO;AAAA,MACN,YAAY;AAAA,QACX;AAAA,UACC,IAAI;AAAA,UACJ,0BAA0B;AAAA,UAC1B,SAAS;AAAA,QACV;AAAA,MACD;AAAA,MACA,SAAS,CAAC;AAAA,IACX;AAAA,EACD,MAAM,cAAc,oBAAoB,WAAW;AAAA,EACnD,MAAM,aAA8C;AAAA,IACnD,gBAAgB,YACb,EAAE,IAAI,mBAAmB,0BAA0B,GAAG,SAAS,EAAE,IACjE,UAAU,mBAAmB,WAAW;AAAA,EAC5C;AAAA,EACA,MAAM,UAAkD;AAAA,IACvD,EAAE,IAAI,mBAAmB,cAAc,gBAAgB;AAAA,EACxD;AAAA,EACA,WAAW,QAAQ,gBAAgB,WAAW,GAAG;AAAA,IAChD,MAAM,eAAe,oBAAoB,aAAa,IAAI;AAAA,IAC1D,IAAI,CAAC;AAAA,MAAc;AAAA,IACnB,MAAM,WAAW,WAAW,YAAY;AAAA,IACxC,IAAI,CAAC;AAAA,MAAU;AAAA,IACf,MAAM,WAAW,oBAAoB,QAAQ;AAAA,IAC7C,IAAI,aAAa;AAAA,MAAW;AAAA,IAC5B,WAAW,KAAK,UAAU,MAAM,QAAQ,CAAC;AAAA,IACzC,QAAQ,KAAK,EAAE,IAAI,MAAM,aAAa,CAAC;AAAA,EACxC;AAAA,EACA,WAAW,KAAK,CAAC,MAAM,UAAU,KAAK,GAAG,cAAc,MAAM,EAAE,CAAC;AAAA,EAChE,QAAQ,KAAK,CAAC,MAAM,UAAU,KAAK,GAAG,cAAc,MAAM,EAAE,CAAC;AAAA,EAC7D,iCAAiC,CAAC,GAAG,EAAE,WAAW,CAAC;AAAA,EAEnD,OAAO,EAAE,YAAY,QAAQ;AAAA;AAAA;AAAA,EAllB9B;AAAA;;;ACFA,yBAAS;AACT,oBAAS,kBAAS,oBAAM,sBAAU;AAClC;AAAA,IAmCM,kBAAkB,uBAClB,oBAAoB,iCACpB,aACA,qBAWA,oBACA,0BAEA,2BAEA,4BACA,wBAOA,kCAKA,2BAIA,UAAS,CAAC,UACf,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,GAE9D,WAAW,CAAC,SAAiB;AAAA,EAClC,MAAM,QAAiB,KAAK,MAAM,cAAa,MAAM,MAAM,CAAC;AAAA,EAC5D,IAAI,CAAC,QAAO,KAAK;AAAA,IAAG,MAAM,IAAI,UAAU,GAAG,8BAA8B;AAAA,EAEzE,OAAO;AAAA,GAGF,OAAO,CAAC,OAAgB,WAAkB;AAAA,EAC/C,IAAI,OAAO,UAAU,YAAY,MAAM,WAAW;AAAA,IACjD,MAAM,IAAI,UAAU,GAAG,oCAAmC;AAAA,EAE3D,OAAO;AAAA,GAGF,qBAAqB,CAAC,OAAgB,WAAkB;AAAA,EAC7D,IAAI,UAAU;AAAA,IAAW;AAAA,EACzB,IAAI,CAAC,QAAO,KAAK;AAAA,IAAG,MAAM,IAAI,UAAU,GAAG,2BAA0B;AAAA,EACrE,QAAQ,gBAAgB;AAAA,EACxB,IACC,CAAC,MAAM,QAAQ,WAAW,KAC1B,CAAC,YAAY,MACZ,CAAC,eACA,OAAO,eAAe,YACtB,2BAA2B,KAAK,UAAU,CAC5C;AAAA,IAEA,MAAM,IAAI,UACT,GAAG,2DACJ;AAAA,EAED,OAAO,CAAC,GAAG,WAAW;AAAA,GAGjB,yBAAyB,CAAC,OAAgB,WAAkB;AAAA,EACjE,IAAI,UAAU;AAAA,IAAW;AAAA,EACzB,IAAI,CAAC,QAAO,KAAK;AAAA,IAAG,MAAM,IAAI,UAAU,GAAG,2BAA0B;AAAA,EACrE,MAAM,UACL,CAAC;AAAA,EACF,WAAW,OAAO,2BAA2B;AAAA,IAC5C,MAAM,UAAU,MAAM;AAAA,IACtB,IAAI,YAAY;AAAA,MAAW;AAAA,IAC3B,MAAM,YAAY,iCAAiC;AAAA,IACnD,IACC,CAAC,MAAM,QAAQ,OAAO,KACtB,QAAQ,WAAW,KACnB,CAAC,QAAQ,MACR,CAAC,WACA,OAAO,WAAW,YAAY,UAAU,IAAI,MAAM,CACpD;AAAA,MAEA,MAAM,IAAI,UACT,GAAG,+CACJ;AAAA,IACD,QAAQ,OAAO,CAAC,GAAG,OAAO;AAAA,EAC3B;AAAA,EACA,IACC,OAAO,KAAK,KAAK,EAAE,KAClB,CAAC,QAAQ,CAAC,0BAA0B,KAAK,CAAC,UAAU,UAAU,GAAG,CAClE;AAAA,IAEA,MAAM,IAAI,UAAU,GAAG,+CAA8C;AAAA,EAEtE,OAAO;AAAA,GAGF,wBAAwB,CAAC,OAAgB,WAAkB;AAAA,EAChE,IAAI,UAAU;AAAA,IAAW;AAAA,EACzB,IAAI,CAAC,QAAO,KAAK;AAAA,IAAG,MAAM,IAAI,UAAU,GAAG,2BAA0B;AAAA,EACrE;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACG;AAAA,EACJ,IAAI,sBAAsB,aAAa,sBAAsB;AAAA,IAC5D,MAAM,IAAI,UAAU,GAAG,wCAAuC;AAAA,EAC/D,IAAI,eAAe,aAAa,eAAe;AAAA,IAC9C,MAAM,IAAI,UAAU,GAAG,iCAAgC;AAAA,EACxD,IACC,sBAAsB,cACrB,CAAC,MAAM,QAAQ,iBAAiB,KAChC,CAAC,kBAAkB,MAClB,CAAC,YACA,OAAO,YAAY,YACnB,uBAAuB,IAAI,OAAO,CACpC;AAAA,IAED,MAAM,IAAI,UACT,GAAG,2DACJ;AAAA,EACD,MAAM,UAAU,uBACf,qBACA,GAAG,4BACJ;AAAA,EAEA,OAAO;AAAA,OACF,YAAY,YAAY,CAAC,IAAI,EAAE,qBAAqB,QAAQ;AAAA,OAC5D,sBAAsB,OACvB,EAAE,mBAAmB,KAAc,IACnC,CAAC;AAAA,OACA,eAAe,OAAO,EAAE,YAAY,KAAc,IAAI,CAAC;AAAA,OACvD,sBAAsB,YACvB,CAAC,IACD,EAAE,mBAAmB,CAAC,GAAG,iBAAiB,EAAE;AAAA,EAChD;AAAA,GAGK,gBAAgB,CACrB,MACA,UACsC;AAAA,EACtC,IAAI,CAAC,mBAAmB,KAAK,IAAI;AAAA,IAChC,MAAM,IAAI,UAAU,8CAA8C;AAAA,EACnE,IAAI,CAAC,QAAO,KAAK;AAAA,IAChB,MAAM,IAAI,UAAU,qBAAqB,yBAAyB;AAAA,EACnE,MAAM,UAAU,KAAK,MAAM,SAAS,GAAG,cAAc;AAAA,EACrD,MAAM,SAAS,KAAK,MAAM,QAAQ,GAAG,aAAa;AAAA,EAClD,IAAI,CAAC,mBAAmB,KAAK,OAAO;AAAA,IACnC,MAAM,IAAI,UAAU,GAAG,+CAA+C;AAAA,EACvE,IAAI,CAAC,yBAAyB,KAAK,MAAM;AAAA,IACxC,MAAM,IAAI,UACT,GAAG,4DACJ;AAAA,EACD,IACC,CAAC,MAAM,QAAQ,MAAM,QAAQ,KAC7B,CAAC,MAAM,SAAS,MACf,CAAC,SACA,OAAO,SAAS,YAAY,0BAA0B,KAAK,IAAI,CACjE;AAAA,IAEA,MAAM,IAAI,UACT,GAAG,uEACJ;AAAA,EACD,IAAI;AAAA,EACJ,QAAQ,QAAQ,mBAAmB;AAAA,EACnC,IAAI,mBAAmB,WAAW;AAAA,IACjC,IAAI,CAAC,QAAO,cAAc;AAAA,MACzB,MAAM,IAAI,UAAU,GAAG,gCAAgC;AAAA,IACxD,QAAQ,SAAS,QAAQ;AAAA,IACzB,MAAM,cAAc,mBACnB,SACA,GAAG,qBACJ;AAAA,IACA,MAAM,kBAAkB,sBACvB,KACA,GAAG,iBACJ;AAAA,IACA,SAAS;AAAA,SACJ,gBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE;AAAA,SAC5D,oBAAoB,YAAY,CAAC,IAAI,EAAE,KAAK,gBAAgB;AAAA,IACjE;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN;AAAA,IACA;AAAA,OACI,WAAW,YAAY,CAAC,IAAI,EAAE,OAAO;AAAA,IACzC,UAAU,CAAC,GAAG,MAAM,QAAQ;AAAA,EAC7B;AAAA,GAGY,mCAAmC,CAC/C,SACI;AAAA,EACJ,MAAM,UAAU,KAAK,aAAa,OAEhC,CAAC,cAAc,SAAS;AAAA,IACzB,WAAW,OAAO,2BAA2B;AAAA,MAC5C,MAAM,UACL,KAAK,UAAU,OAAO,QAAQ,KAAK,sBAAsB,QACzD,CAAC;AAAA,MACF,IAAI,QAAQ,WAAW;AAAA,QAAG;AAAA,MAC1B,MAAM,UAAU,aAAa,QAAQ,IAAI;AAAA,MACzC,WAAW,UAAU;AAAA,QAAS,QAAQ,IAAI,MAAM;AAAA,MAChD,aAAa,OAAO;AAAA,IACrB;AAAA,IAEA,OAAO;AAAA,KACL,CAAC,CAAC;AAAA,EAEL,OAAO;AAAA,IACN,oBAAoB;AAAA,MACnB,GAAG,IAAI,IACN,KAAK,aAAa,QACjB,CAAC,SACA,KAAK,UAAU,OAAO,QAAQ,SAAS,eAAe,CAAC,CACzD,CACD;AAAA,IACD,EAAE,KAAK;AAAA,IACP,wBAAwB,0BAA0B,QAAQ,CAAC,QAAQ;AAAA,MAClE,MAAM,UAAU,QAAQ;AAAA,MAExB,OAAO,UAAU,CAAC,EAAE,KAAK,SAAS,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC;AAAA,KAC5D;AAAA,IACD,sBAAsB,KAAK,aAAa,KACvC,CAAC,SACA,KAAK,UAAU,OAAO,QAAQ,KAAK,sBAAsB,IAC3D;AAAA,IACA,eAAe,KAAK,aAAa,KAChC,CAAC,SAAS,KAAK,UAAU,OAAO,QAAQ,KAAK,eAAe,IAC7D;AAAA,IACA,sBAAsB;AAAA,MACrB,GAAG,IAAI,IACN,KAAK,aAAa,QACjB,CAAC,SACA,KAAK,UAAU,OAAO,QAAQ,KAAK,qBACnC,CAAC,CACH,CACD;AAAA,IACD,EAAE,KAAK;AAAA,EACR;AAAA,GAGY,wCAAwC,CAAC,gBAAwB;AAAA,EAC7E,MAAM,OAAO,OACZ,UAAQ,WAAW,GACnB,gBACA,mBACA,cACD;AAAA,EACA,MAAM,WAAW,SAAS,IAAI;AAAA,EAC9B,QAAQ,eAAe;AAAA,EACvB,MAAM,UAAU,QAAO,UAAU,IAAI,WAAW,UAAU;AAAA,EAC1D,IACC,CAAC,QAAO,OAAO,KACf,QAAQ,WAAW,KACnB,QAAQ,aAAa,eACrB,CAAC,QAAO,QAAQ,YAAY;AAAA,IAE5B,MAAM,IAAI,UACT,GAAG,mEACJ;AAAA,EAED,MAAM,UAAU,OAAO,QAAQ,QAAQ,YAAY,EAAE,IACpD,EAAE,MAAM,eAAe;AAAA,IACtB;AAAA,IACA,UAAU,cAAc,MAAM,QAAQ;AAAA,EACvC,EACD;AAAA,EAEA,OAAO,OAAO,YACb,QACE,KAAK,CAAC,MAAM,UAAU,KAAK,KAAK,cAAc,MAAM,IAAI,CAAC,EACzD,IAAI,GAAG,MAAM,eAAe,CAAC,MAAM,QAAQ,CAAC,CAC/C;AAAA,GAGK,YAAY,CAAC,SAClB,KAAK,MAAM,GAAG,EAAE,KAAK,CAAC,YAAY,oBAAoB,IAAI,OAAO,CAAC,GAE7D,uBAAuB,CAAC,QAAgB,SAAiB;AAAA,EAC9D,MAAM,QAAQ,IAAI;AAAA,EAClB,MAAM,aAAa,IAAI;AAAA,EACvB,MAAM,QAAQ,CAAC,SAAkB;AAAA,IAChC,IACC,GAAG,oBAAoB,IAAI,KAC3B,GAAG,gBAAgB,KAAK,eAAe,KACvC,KAAK,gBAAgB,SAAS,mBAC9B,CAAC,KAAK,cAAc,YACnB;AAAA,MACD,MAAM,WAAW,KAAK,cAAc;AAAA,MACpC,IAAI,YAAY,GAAG,eAAe,QAAQ;AAAA,QACzC,WAAW,WAAW,SAAS;AAAA,UAC9B,IAAI,CAAC,QAAQ;AAAA,YACZ,MAAM,KAAK,QAAQ,gBAAgB,QAAQ,MAAM,IAAI;AAAA;AAAA,MACxD,IAAI,YAAY,GAAG,kBAAkB,QAAQ;AAAA,QAC5C,WAAW,IAAI,SAAS,KAAK,IAAI;AAAA,IACnC;AAAA,IACA,IACC,GAAG,oBAAoB,IAAI,KAC3B,CAAC,KAAK,cACN,KAAK,oBAAoB,aACzB,GAAG,gBAAgB,KAAK,eAAe,KACvC,KAAK,gBAAgB,SAAS,mBAC9B,KAAK,gBACL,GAAG,eAAe,KAAK,YAAY;AAAA,MAEnC,WAAW,WAAW,KAAK,aAAa;AAAA,QACvC,IAAI,CAAC,QAAQ;AAAA,UACZ,MAAM,KAAK,QAAQ,gBAAgB,QAAQ,MAAM,IAAI;AAAA;AAAA,IACxD,IACC,GAAG,2BAA2B,IAAI,KAClC,GAAG,aAAa,KAAK,UAAU,KAC/B,WAAW,IAAI,KAAK,WAAW,IAAI;AAAA,MAEnC,MAAM,IAAI,KAAK,KAAK,IAAI;AAAA,IACzB,GAAG,aAAa,MAAM,KAAK;AAAA;AAAA,EAE5B,MAAM,YAAY,SAAQ,IAAI,EAAE,YAAY;AAAA,EAC5C,MAAM,UACL,cAAc,aAAa,cAAc,SACtC,CAAC,GAAG,OAAO,SAAS,2CAA2C,CAAC,EAC/D,IAAI,CAAC,UAAU,MAAM,EAAE,EACvB,OAAO,CAAC,UAA2B,UAAU,SAAS,IACvD,CAAC,MAAM;AAAA,EACX,YAAY,OAAO,WAAW,QAAQ,QAAQ;AAAA,IAC7C,MACC,GAAG,iBACF,GAAG,eAAe,SAClB,QACA,GAAG,aAAa,QAChB,MACA,GAAG,WAAW,GACf,CACD;AAAA,EAED,OAAO;AAAA,GAGK,yCAAyC,CACrD,aACA,SACI;AAAA,EACJ,MAAM,UAAU,wCACf,MACA,8BAA8B,WAAW,CAC1C;AAAA,EACA,MAAM,aAAa,KAAK,iBAAiB,OAAO,CAAC,SAAS;AAAA,IACzD,MAAM,YAAY,KAAK,YAAY,GAAG;AAAA,IACtC,MAAM,cAAc,KAAK,MAAM,GAAG,SAAS;AAAA,IAC3C,IAAI,QAAQ,SAAS,IAAI;AAAA,MAAG,OAAO;AAAA,IACnC,IAAI;AAAA,MACH,OACC,SACC,OACC,UAAQ,WAAW,GACnB,gBACA,aACA,cACD,CACD,EAAE,YAAY,KAAK,MAAM,YAAY,CAAC;AAAA,MAEtC,MAAM;AAAA,MACP,OAAO;AAAA;AAAA,GAER;AAAA,EACD,MAAM,QAAQ,CAAC,GAAG,SAAS,GAAG,UAAU;AAAA,EACxC,IAAI,MAAM,SAAS;AAAA,IAClB,MAAM,IAAI,UACT,uBAAuB,KAAK,aAAa,KAAK,IAAI,aAAa,MAAM,KAAK,IAAI,0EAC/E;AAAA,GAGW,gCAAgC,CAAC,gBAAwB;AAAA,EACrE,MAAM,WAAW,SAAS,OAAK,UAAQ,WAAW,GAAG,cAAc,CAAC;AAAA,EACpE,MAAM,WAAW,IAAI;AAAA,EACrB,WAAW,UAAS,CAAC,gBAAgB,iBAAiB,GAAG;AAAA,IACxD,MAAM,eAAe,SAAS;AAAA,IAC9B,IAAI,QAAO,YAAY;AAAA,MACtB,WAAW,QAAQ,OAAO,KAAK,YAAY;AAAA,QAAG,SAAS,IAAI,IAAI;AAAA,EACjE;AAAA,EAEA,OAAO;AAAA,GAGK,qCAAqC,CACjD,aACA,YAAY,sCAAsC,WAAW,MACzD;AAAA,EACJ,MAAM,OAAO,UAAQ,WAAW;AAAA,EAChC,MAAM,QAAQ,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC;AAAA,EAC5C,MAAM,eAAe,IAAI;AAAA,EACzB,WAAW,QAAQ,YAAY,SAAS,EAAE,KAAK,KAAK,CAAC,GAAG;AAAA,IACvD,MAAM,WAAW,UAAS,MAAM,UAAQ,MAAM,IAAI,CAAC,EAAE,WACpD,MACA,GACD;AAAA,IACA,IAAI,UAAU,QAAQ;AAAA,MAAG;AAAA,IACzB,MAAM,SAAS,cAAa,UAAQ,MAAM,QAAQ,GAAG,MAAM;AAAA,IAC3D,WAAW,QAAQ,qBAAqB,QAAQ,QAAQ;AAAA,MACvD,IAAI,MAAM,IAAI,IAAI;AAAA,QAAG,aAAa,IAAI,IAAI;AAAA,EAC5C;AAAA,EAEA,OAAO,CAAC,GAAG,YAAY,EAAE,KAAK;AAAA,GAGlB,0CAA0C,CACtD,MACA,mBAEA,KAAK,iBAAiB,OAAO,CAAC,SAAS;AAAA,EACtC,MAAM,cAAc,KAAK,MAAM,GAAG,KAAK,YAAY,GAAG,CAAC;AAAA,EAEvD,OAAO,CAAC,eAAe,IAAI,WAAW;AAAA,CACtC,GAIW,yCAAyC,CACrD,aACA,eACI;AAAA,EACJ,MAAM,OAAO,UAAQ,WAAW;AAAA,EAChC,WAAW,QAAQ,YAAY,SAAS,EAAE,KAAK,KAAK,CAAC,GAAG;AAAA,IACvD,MAAM,WAAW,UAAS,MAAM,UAAQ,MAAM,IAAI,CAAC,EAAE,WACpD,MACA,GACD;AAAA,IACA,IAAI,UAAU,QAAQ;AAAA,MAAG;AAAA,IACzB,MAAM,SAAS,cAAa,UAAQ,MAAM,QAAQ,GAAG,MAAM;AAAA,IAC3D,IAAI,qBAAqB,QAAQ,QAAQ,EAAE,IAAI,UAAU;AAAA,MAAG,OAAO;AAAA,EACpE;AAAA,EAEA,OAAO;AAAA,GAGK,sCAAsC,CAClD,gBACkC;AAAA,EAClC,MAAM,eAAe,sCAAsC,WAAW;AAAA,EACtE,MAAM,eAAe,mCACpB,aACA,YACD;AAAA,EACA,MAAM,YAA8D,CAAC;AAAA,EACrE,WAAW,QAAQ,cAAc;AAAA,IAChC,MAAM,WAAW,aAAa;AAAA,IAC9B,IAAI;AAAA,MAAU,UAAU,QAAQ;AAAA,EACjC;AAAA,EAEA,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,MACjB,GAAG,IAAI,IACN,aAAa,QAAQ,CAAC,SAAS,UAAU,OAAO,YAAY,CAAC,CAAC,CAC/D;AAAA,IACD,EAAE,KAAK;AAAA,EACR;AAAA;AAAA;AAAA,EAjdK,cAAc,IAAI,IAAI,KAAK,iCAAiC;AAAA,EAC5D,sBAAsB,IAAI,IAAI;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EACK,qBAAqB;AAAA,EACrB,2BACL;AAAA,EACK,4BACL;AAAA,EACK,6BAA6B;AAAA,EAC7B,yBAA8C,IAAI,IAAI;AAAA,IAC3D;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EACK,mCAEF;AAAA,IACH,2CAA2C,IAAI,IAAI,CAAC,QAAQ,CAAC;AAAA,EAC9D;AAAA,EACM,4BAAsE;AAAA,IAC3E;AAAA,EACD;AAAA;;;ACvEA,uBAAS,wCAAuB;AAChC,oBAAS;AACT,iBAAS;AAAA,IAGH,WACA,YAEO,qBAAqB,MAAM;AAAA,EACvC,IAAI;AAAA,IACH,IAAI,CAAC,YAAW,UAAU;AAAA,MAAG,OAAO;AAAA,IACpC,MAAM,MAAM,cAAa,YAAY,OAAO;AAAA,IAE5C,MAAM,SAA0B,KAAK,MAAM,GAAG;AAAA,IAE9C,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAAA;AAAA,EAZH,YAAY,OAAK,SAAQ,GAAG,aAAa;AAAA,EACzC,aAAa,OAAK,WAAW,gBAAgB;AAAA;;;ACNnD,uBAAS,6BAAY;AACrB;AACA,oBAAS,mBAAS;AAAA,IAIZ,iBAAiB,CAAC,cAAsB;AAAA,EAC7C,IAAI,CAAC,YAAW,SAAS,GAAG;AAAA,IAC3B,OAAO;AAAA,EACR;AAAA,EACA,MAAM,MAAM,KAAK,MAAM,cAAa,WAAW,OAAO,CAAC;AAAA,EAEvD,IAAI,IAAI,SAAS,wBAAwB;AAAA,IACxC,MAAM,MAAc,IAAI;AAAA,IAExB,OAAO;AAAA,EACR;AAAA,EAEA,OAAO;AAAA,GAGF,aAAa,MAAM;AAAA,EACxB,IAAI;AAAA,IACH,OAAO,mBAAmB;AAAA,IACzB,MAAM;AAAA,IACP,OAAO;AAAA;AAAA,GAIH,qBAAqB,MAAM;AAAA,EAChC,MAAM,QAAQ;AAAA,EAEd,OAAO,QAAQ,MAAM,GAAG,EAAE,MAAM;AAAA,IAC/B,MAAM,YAAY,OAAK,KAAK,cAAc;AAAA,IAC1C,MAAM,UAAU,eAAe,SAAS;AAAA,IACxC,IAAI,SAAS;AAAA,MACZ,OAAO;AAAA,IACR;AAAA,IACA,MAAM,UAAQ,GAAG;AAAA,EAClB;AAAA,EAEA,OAAO;AAAA,GAGK,qBAAqB,CACjC,OACA,YACI;AAAA,EACJ,IAAI;AAAA,IACH,IAAI,QAAQ,IAAI,kBAAkB;AAAA,MAAK;AAAA,IACvC,MAAM,SAAS,mBAAmB;AAAA,IAClC,IAAI,CAAC,QAAQ;AAAA,MAAS;AAAA,IAEtB,MAAM,OAAuB;AAAA,MAC5B,aAAa,OAAO;AAAA,MACpB,MAAM,KAAK;AAAA,MACX,YAAY,IAAI;AAAA,MAChB;AAAA,MACA,IAAI,SAAS;AAAA,MACb;AAAA,MACA,WAAW,IAAI,KAAK,EAAE,YAAY;AAAA,MAClC,SAAS,WAAW;AAAA,IACrB;AAAA,IAEA,MAAM,wCAAwC;AAAA,MAC7C,MAAM,KAAK,UAAU,IAAI;AAAA,MACzB,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAC9C,QAAQ;AAAA,IACT,CAAC,EAAE,MAAM,MAAG;AAAA,MAAG;AAAA,KAAS;AAAA,IACvB,MAAM;AAAA;AAAA;AAAA,EAjET;AAAA;;;ACJA,uBAAS;AACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,0BAAe;;;ACVf;AAOO,IAAM,uCAAuC;AAC7C,IAAM,uCAAuC;AAqEpD,IAAM,UAAU;AAChB,IAAM,oBAAoB;AAC1B,IAAM,wBAAwB;AAC9B,IAAM,sBAAsB;AAC5B,IAAM,aAAa,IAAI,IAAY;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,IAAM,oBAAoB,CAAC,UAA6C;AAAA,EACvE,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAAG;AAAA,IACxE,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,YAAqB,OAAO,eAAe,KAAK;AAAA,EAEtD,OAAO,cAAc,OAAO,aAAa,cAAc;AAAA;AAGxD,IAAM,sBAAsB,CAAC,OAAe,cAA2B;AAAA,EACtE,IAAI,UAAU,IAAI,KAAK,GAAG;AAAA,IACzB,MAAM,IAAI,UAAU,+CAA+C;AAAA,EACpE;AAAA,EACA,UAAU,IAAI,KAAK;AAAA;AAGpB,IAAM,0BAA0B,CAAC,OAAkB,cAA2B;AAAA,EAC7E,oBAAoB,OAAO,SAAS;AAAA,EACpC,MAAM,aAAa,MAAM,IAAI,CAAC,SAC7B,wBAAwB,MAAM,SAAS,CACxC;AAAA,EACA,UAAU,OAAO,KAAK;AAAA,EAEtB,OAAO;AAAA;AAGR,IAAM,2BAA2B,CAChC,OACA,cACI;AAAA,EACJ,oBAAoB,OAAO,SAAS;AAAA,EACpC,MAAM,aAAa,OAAO,YACzB,OAAO,QAAQ,KAAK,EAClB,KAAK,EAAE,QAAQ,WAAW,KAAK,cAAc,KAAK,CAAC,EACnD,IAAI,EAAE,KAAK,UAAU;AAAA,IACrB;AAAA,IACA,wBAAwB,MAAM,SAAS;AAAA,EACxC,CAAC,CACH;AAAA,EACA,UAAU,OAAO,KAAK;AAAA,EAEtB,OAAO;AAAA;AAGR,IAAM,0BAAoD,CACzD,OACA,cACI;AAAA,EACJ,IACC,UAAU,QACV,OAAO,UAAU,YACjB,OAAO,UAAU,WAChB;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,IAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAChE,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO,wBAAwB,OAAO,SAAS;AAAA,EACzE,IAAI,kBAAkB,KAAK,GAAG;AAAA,IAC7B,OAAO,yBAAyB,OAAO,SAAS;AAAA,EACjD;AAAA,EAEA,MAAM,IAAI,UACT,8DACD;AAAA;AAGD,IAAM,gBAAgB,CAAC,UACtB,KAAK,UAAU,wBAAwB,OAAO,IAAI,GAAa,CAAC;AAEjE,IAAM,qBAAqB,CAAC,UAC3B,WAAW,OAAO,EAAE,OAAO,cAAc,KAAK,CAAC,EAAE,OAAO,KAAK;AAE9D,IAAM,kBAAkB,CAAC,OAAe,UAAkB;AAAA,EACzD,IAAI,CAAC,MAAM,KAAK,GAAG;AAAA,IAClB,MAAM,IAAI,UAAU,GAAG,0BAA0B;AAAA,EAClD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,kBAAkB,CACvB,UAEA,OAAO,UAAU,YAAY,WAAW,IAAI,KAAK;AAElD,IAAM,aAAa,CAAC,OAAgB,UAAkB;AAAA,EACrD,IAAI,OAAO,UAAU,UAAU;AAAA,IAC9B,MAAM,IAAI,UAAU,GAAG,yBAAyB;AAAA,EACjD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,yBAAyB,CAAC,UAAmB;AAAA,EAClD,IAAI,CAAC,kBAAkB,KAAK,KAAK,CAAC,gBAAgB,MAAM,SAAS,GAAG;AAAA,IACnE,MAAM,IAAI,UAAU,kDAAkD;AAAA,EACvE;AAAA,EAEA,MAAM,kBACL,OAAO,MAAM,oBAAoB,WAC9B,MAAM,kBACN;AAAA,EACJ,MAAM,kBACL,OAAO,MAAM,oBAAoB,WAC9B,MAAM,kBACN;AAAA,EACJ,IAAI,QAAQ,eAAe,MAAM,QAAQ,eAAe,GAAG;AAAA,IAC1D,MAAM,IAAI,UACT,mEACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,YAAY,WAAW,MAAM,YAAY,iBAAiB;AAAA,IAC1D,YAAY,WAAW,MAAM,YAAY,iBAAiB;AAAA,IAC1D,UAAU,WAAW,MAAM,UAAU,eAAe;AAAA,IACpD,WAAW,MAAM;AAAA,IACjB,QAAQ,WAAW,MAAM,QAAQ,aAAa;AAAA,IAC9C,iBAAiB,WAChB,MAAM,iBACN,sBACD;AAAA,OACI,mBAAmB,kBACpB,EAAE,iBAAiB,gBAAgB,IACnC,CAAC;AAAA,EACL;AAAA;AAGD,IAAM,0BAA0B,CAAC,UAAmB;AAAA,EACnD,IACC,CAAC,kBAAkB,KAAK,KACvB,MAAM,WAAW,SAAS,MAAM,WAAW,QAC3C;AAAA,IACD,MAAM,IAAI,UACT,mDACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,QAAQ,MAAM;AAAA,IACd,QAAQ,WAAW,MAAM,QAAQ,cAAc;AAAA,IAC/C,SAAS,WAAW,MAAM,SAAS,eAAe;AAAA,EACnD;AAAA;AAGD,IAAM,6BAA6B,CAAC,UAAmB;AAAA,EACtD,IAAI,CAAC,kBAAkB,KAAK,KAAK,OAAO,MAAM,UAAU,UAAU;AAAA,IACjE,MAAM,IAAI,UACT,sDACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,YAAY,WAAW,MAAM,YAAY,qBAAqB;AAAA,IAC9D,OAAO,MAAM;AAAA,IACb,YAAY,WAAW,MAAM,YAAY,qBAAqB;AAAA,IAC9D,QAAQ,WAAW,MAAM,QAAQ,iBAAiB;AAAA,EACnD;AAAA;AAGD,IAAM,yBAAyB,CAAC,WAAmB;AAAA,EAClD,gBAAgB,QAAQ,iBAAiB;AAAA,EACzC,MAAM,WAAW,OAAO,MAAM,GAAG;AAAA,EACjC,IACC,OAAO,WAAW,GAAG,KACrB,OAAO,SAAS,IAAI,KACpB,SAAS,SAAS,qBAAqB,GACtC;AAAA,IACD,MAAM,IAAI,UAAU,+CAA+C;AAAA,EACpE;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,gBAAgB,CACrB,SACqC;AAAA,EACrC,IAAI,QAAQ,KAAK,eAAe,MAAM,QAAQ,KAAK,eAAe,GAAG;AAAA,IACpE,MAAM,IAAI,UACT,mEACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,YAAY,gBAAgB,KAAK,YAAY,iBAAiB;AAAA,IAC9D,YAAY,gBAAgB,KAAK,YAAY,iBAAiB;AAAA,IAC9D,UAAU,gBAAgB,KAAK,UAAU,eAAe;AAAA,IACxD,WAAW,KAAK;AAAA,IAChB,QAAQ,gBAAgB,KAAK,QAAQ,aAAa;AAAA,IAClD,iBAAiB,gBAChB,KAAK,iBACL,sBACD;AAAA,OACI,KAAK,mBAAmB,KAAK,kBAC9B;AAAA,MACA,iBAAiB,gBAChB,KAAK,iBACL,sBACD;AAAA,MACA,iBAAiB,gBAChB,KAAK,iBACL,sBACD;AAAA,IACD,IACC,CAAC;AAAA,EACL;AAAA;AAGD,IAAM,iBAAiB,CACtB,UACsC;AAAA,EACtC,IAAI,CAAC,MAAM,QAAQ,WAAW,GAAG,GAAG;AAAA,IACnC,MAAM,IAAI,UAAU,kCAAkC;AAAA,EACvD;AAAA,EAEA,OAAO;AAAA,IACN,QAAQ,MAAM;AAAA,IACd,QAAQ,gBAAgB,MAAM,QAAQ,cAAc;AAAA,IACpD,SAAS,MAAM;AAAA,EAChB;AAAA;AAGD,IAAM,eAAe,CAAC,QAAkB,UAAkB;AAAA,EACzD,IAAI,IAAI,IAAI,MAAM,EAAE,SAAS,OAAO,QAAQ;AAAA,IAC3C,MAAM,IAAI,UAAU,GAAG,8BAA8B;AAAA,EACtD;AAAA;AAGD,IAAM,2BAA2B,CAChC,UACkC;AAAA,EAClC,IAAI,CAAC,OAAO,cAAc,MAAM,UAAU,KAAK,MAAM,aAAa,GAAG;AAAA,IACpE,MAAM,IAAI,UAAU,6CAA6C;AAAA,EAClE;AAAA,EACA,IACC,CAAC,OAAO,cAAc,MAAM,SAAS,KAAK,KAC1C,MAAM,SAAS,QAAQ,GACtB;AAAA,IACD,MAAM,IAAI,UAAU,iDAAiD;AAAA,EACtE;AAAA,EAEA,MAAM,QAAQ,MAAM,MAClB,IAAI,aAAa,EACjB,KAAK,CAAC,MAAM,UAAU,KAAK,OAAO,cAAc,MAAM,MAAM,CAAC;AAAA,EAC/D,MAAM,SAAS,MAAM,OACnB,IAAI,cAAc,EAClB,KAAK,CAAC,MAAM,UACZ,GAAG,KAAK,WAAW,KAAK,SAAS,cAChC,GAAG,MAAM,WAAW,MAAM,QAC3B,CACD;AAAA,EACD,aACC,MAAM,IAAI,GAAG,aAAa,MAAM,GAChC,aACD;AAAA,EACA,aACC,OAAO,IAAI,GAAG,QAAQ,cAAc,GAAG,UAAU,SAAS,GAC1D,0BACD;AAAA,EACA,MAAM,UAAU,IAAI,IAAI,MAAM,IAAI,GAAG,aAAa,MAAM,CAAC;AAAA,EACzD,MAAM,cAAc,OAAO,KAAK,GAAG,aAAa,CAAC,QAAQ,IAAI,MAAM,CAAC;AAAA,EACpE,IAAI,aAAa;AAAA,IAChB,MAAM,IAAI,UACT,SAAS,YAAY,mCAAmC,YAAY,SACrE;AAAA,EACD;AAAA,EACA,IAAI,CAAC,oBAAoB,KAAK,MAAM,SAAS,UAAU,GAAG;AAAA,IACzD,MAAM,IAAI,UACT,sDACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,UAAU,gBAAgB,MAAM,UAAU,UAAU;AAAA,IACpD,OAAO,gBAAgB,MAAM,OAAO,OAAO;AAAA,IAC3C,QAAQ;AAAA,IACR,YAAY,MAAM;AAAA,IAClB;AAAA,IACA,UAAU;AAAA,MACT,YAAY,gBACX,MAAM,SAAS,YACf,qBACD;AAAA,MACA,OAAO,MAAM,SAAS;AAAA,MACtB,YAAY,MAAM,SAAS;AAAA,MAC3B,QAAQ,uBAAuB,MAAM,SAAS,MAAM;AAAA,IACrD;AAAA,IACA;AAAA,IACA,SAAS,gBAAgB,MAAM,SAAS,SAAS;AAAA,EAClD;AAAA;AAGM,IAAM,4CAA4C,CACxD,UACI;AAAA,EACJ,MAAM,UAAU,yBAAyB,KAAK;AAAA,EAE9C,OAAO;AAAA,OACH;AAAA,IACH,WAAW,GAAG,oBAAoB,mBAAmB,OAAO;AAAA,EAC7D;AAAA;AAGM,IAAM,gCAAgC,CAAC,WAC7C,mBAAmB,MAAM;AAEnB,IAAM,2CAA2C,CAAC,UAAmB;AAAA,EAC3E,IACC,CAAC,kBAAkB,KAAK,KACxB,MAAM,WAAW,wCACjB,OAAO,MAAM,eAAe,YAC5B,CAAC,MAAM,QAAQ,MAAM,KAAK,KAC1B,CAAC,MAAM,QAAQ,MAAM,MAAM,GAC1B;AAAA,IACD,MAAM,IAAI,UAAU,wCAAwC;AAAA,EAC7D;AAAA,EAEA,MAAM,YAAY,WAAW,MAAM,WAAW,WAAW;AAAA,EACzD,MAAM,WAAW,0CAA0C;AAAA,IAC1D,UAAU,WAAW,MAAM,UAAU,UAAU;AAAA,IAC/C,OAAO,WAAW,MAAM,OAAO,OAAO;AAAA,IACtC,YAAY,MAAM;AAAA,IAClB,OAAO,MAAM,MAAM,IAAI,sBAAsB;AAAA,IAC7C,UAAU,2BAA2B,MAAM,QAAQ;AAAA,IACnD,QAAQ,MAAM,OAAO,IAAI,uBAAuB;AAAA,IAChD,SAAS,WAAW,MAAM,SAAS,SAAS;AAAA,EAC7C,CAAC;AAAA,EACD,IAAI,SAAS,cAAc,WAAW;AAAA,IACrC,MAAM,IAAI,UAAU,iDAAiD;AAAA,EACtE;AAAA,EAEA,OAAO;AAAA;AAGD,IAAM,4CAA4C,CACxD,QACA,cACmC;AAAA,EACnC,MAAM,WAAW,UAAU,KAC1B,CAAC,cACA,UAAU,aAAa,OAAO,YAC9B,UAAU,YAAY,OAAO,OAC/B;AAAA,EACA,IAAI,CAAC,UAAU;AAAA,IACd,OAAO;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,QACP,MAAM;AAAA,QACN,QAAQ,OAAO;AAAA,QACf,QAAQ;AAAA,MACT;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,OAAO,SAAS,MAAM,KAC3B,CAAC,cACA,UAAU,WAAW,OAAO,UAC5B,UAAU,eAAe,OAAO,cAChC,OAAO,cAAc,SAAS,UAAU,QAAQ,CAClD;AAAA,EACA,IAAI,CAAC,MAAM;AAAA,IACV,OAAO;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,QACP,MAAM;AAAA,QACN,QAAQ,OAAO;AAAA,QACf,QAAQ;AAAA,QACR,oBAAoB,SAAS,MAC3B,OAAO,GAAG,aAAa,WAAW,OAAO,MAAM,EAC/C,IAAI,GAAG,eAAe,QAAQ;AAAA,MACjC;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO,EAAE,UAAU,MAAM,YAAY,KAAK;AAAA;AAGpC,IAAM,6CAA6C,CACzD,cACI;AAAA,EACJ,MAAM,SAAS,IAAI,IAAI,UAAU,IAAI,GAAG,YAAY,KAAK,CAAC;AAAA,EAC1D,IAAI,OAAO,OAAO,GAAG;AAAA,IACpB,MAAM,IAAI,UACT,0DACD;AAAA,EACD;AAAA,EACA,aACC,UAAU,IAAI,GAAG,eAAe,QAAQ,GACxC,UACD;AAAA,EACA,aACC,UAAU,IAAI,GAAG,iBAAiB,OAAO,UAAU,CAAC,GACpD,YACD;AAAA,EAEA,OAAO,CAAC,GAAG,SAAS,EAClB,KAAK,CAAC,MAAM,UAAU,MAAM,aAAa,KAAK,UAAU,EACxD,MAAM,GAAG,oCAAoC;AAAA;;;ADtahD,IAAM,6BAA6B;AACnC,IAAM,WAAU;AAChB,IAAM,gBAAgB;AACtB,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AAE5B,IAAM,WAAW,OAAO,SAAe;AAAA,EACtC,MAAM,QAAQ,IAAI,WAAW,MAAM,KAAK,YAAY,CAAC;AAAA,EAErD,OAAO,YAAW,QAAO,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA;AAGtD,IAAM,gBAAgB,CAAC,UAAsB;AAAA,EAC5C,MAAM,SAAS,IAAI,YAAY,MAAM,UAAU;AAAA,EAC/C,IAAI,WAAW,MAAM,EAAE,IAAI,KAAK;AAAA,EAEhC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;AAAA;AAGzB,IAAM,eAAe,CAAC,OAAgB,SACrC,OAAO,UAAU,YACjB,UAAU,QACV,QAAQ,IAAI,OAAO,MAAM,MAAM;AAEhC,IAAM,mBAAmB,CAAC,UACzB,YAAW,QAAO,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAE/C,IAAM,mBAAmB,CAAC,cAAsB;AAAA,EAC/C,IAAI,CAAC,mBAAmB,KAAK,SAAS,GAAG;AAAA,IACxC,MAAM,IAAI,UAAU,0CAA0C;AAAA,EAC/D;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,qBAAqB,OAAO,qBAA6B;AAAA,EAC9D,MAAM,aAAa,MAAM,SACxB,KAAK,kBAAkB,aAAa,GACpC,MACD;AAAA,EACA,MAAM,SAAkB,KAAK,MAAM,UAAU;AAAA,EAE7C,OAAO,yCAAyC,MAAM;AAAA;AAGvD,IAAM,yBAAyB,CAC9B,UACA,OACA,cACI;AAAA,EACJ,IAAI,SAAS,UAAU,SAAS,SAAS,cAAc,WAAW;AAAA,IACjE,MAAM,IAAI,UACT,sDACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAUR,IAAM,eAA8B,OACnC,OACA,QACA,QACA,OAAO,CAAC,MACJ;AAAA,EACJ,MAAM,SAAS,MAAM,MAAM,KAAK,EAAE,QAAQ,OAAO,CAAC;AAAA,EAClD,MAAM,YAAY,CAAC,GAAG,MAAM,GAAG,OAAO,QAAQ,IAAI,GAAG,UAAU,GAAG,CAAC;AAAA,EACnE,IAAI,CAAC,OAAO;AAAA,IAAW,OAAO;AAAA,EAC9B,IAAI,CAAC,OAAO,QAAQ;AAAA,IACnB,MAAM,IAAI,UAAU,kDAAkD;AAAA,EACvE;AAAA,EAEA,OAAO,aAAa,OAAO,QAAQ,OAAO,QAAQ,SAAS;AAAA;AAG5D,IAAM,sBAAsB,CAAC,WAAmB;AAAA,EAC/C,MAAM,aAAa,OAAO,QAAQ,cAAc,EAAE;AAAA,EAClD,IAAI,CAAC,cAAc,WAAW,MAAM,GAAG,EAAE,SAAS,IAAI,GAAG;AAAA,IACxD,MAAM,IAAI,UAAU,8CAA8C;AAAA,EACnE;AAAA,EAEA,OAAO;AAAA;AAED,IAAM,kDAAkD,OAC9D,UACI;AAAA,EACJ,MAAM,0CAA0C,MAAM,OAAO;AAAA,EAC7D,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO;AAAA,EACrC,MAAM,YAAY,MAAM,MAAM,MAAM,KAAK,MAAM,QAAQ,SAAS,KAAK;AAAA,EACrE,MAAM,WAAW,2CAA2C,SAAS;AAAA,EACrE,IAAI,SAAS,IAAI,cAAc,MAAM,QAAQ,SAAS,WAAW;AAAA,IAChE,MAAM,IAAI,UACT,sEACD;AAAA,EACD;AAAA,EACA,MAAM,WAAW,MAAM,QAAQ,IAC9B,SAAS,IAAI,GAAG,gBACf,MAAM,MAAM,KAAK,MAAM,QAAQ,SAAS,OAAO,SAAS,CACzD,CACD;AAAA,EAEA,OAAO,QAAQ,IACd,SAAS,IAAI,CAAC,YAAY;AAAA,IACzB,IAAI,CAAC,SAAS;AAAA,MACb,MAAM,IAAI,UACT,yDACD;AAAA,IACD;AAAA,IAEA,OAAO,0CAA0C,OAAO;AAAA,GACxD,CACF;AAAA;AAGM,IAAM,wCAAwC,CACpD,YAC8C;AAAA,EAC9C,MAAM,SAAS,oBAAoB,QAAQ,UAAU,mBAAmB;AAAA,EACxE,MAAM,mBACL,QAAQ,oBAAoB;AAAA,EAC7B,MAAM,YAAY,CAAC,UAClB,GAAG,UAAU,iBAAiB,KAAK;AAAA,EACpC,MAAM,gBAAgB,CAAC,OAAe,cACrC,GAAG,UAAU,KAAK,KAAK,iBAAiB,SAAS;AAAA,EAClD,MAAM,cAAc,CAAC,OAAe,cACnC,GAAG,cAAc,OAAO,SAAS,KAAK;AAAA,EACvC,MAAM,cAAc,CAAC,aACpB,GAAG,cAAc,SAAS,OAAO,SAAS,SAAS,KAAK,SAAS,SAAS;AAAA,EAC3E,MAAM,eAAe,OAAO,OAAe,cAAsB;AAAA,IAChE,MAAM,QAAQ,MAAM,QAAQ,MAAM,IAAI,YAAY,OAAO,SAAS,CAAC;AAAA,IACnE,IAAI,CAAC;AAAA,MAAO,OAAO;AAAA,IACnB,MAAM,SAAkB,KAAK,MAAM,IAAI,YAAY,EAAE,OAAO,KAAK,CAAC;AAAA,IAElE,OAAO,uBACN,yCAAyC,MAAM,GAC/C,OACA,SACD;AAAA;AAAA,EAGD,OAAO;AAAA,IACN,QAAQ,OAAO,OAAO,cAAc;AAAA,MACnC,MAAM,WAAW,MAAM,aAAa,OAAO,SAAS;AAAA,MACpD,IAAI;AAAA,QAAU,MAAM,QAAQ,MAAM,OAAO,YAAY,QAAQ,CAAC;AAAA,MAC9D,MAAM,QAAQ,MAAM,OAAO,YAAY,OAAO,SAAS,CAAC;AAAA;AAAA,IAEzD,MAAM,OAAO,UAAU;AAAA,MACtB,MAAM,cAAc,GAAG,UAAU,KAAK;AAAA,MACtC,MAAM,OAAO,MAAM,aAAa,QAAQ,OAAO,WAAW;AAAA,MAC1D,MAAM,aAAa,KACjB,OAAO,CAAC,QAAQ,IAAI,SAAS,IAAI,eAAe,CAAC,EACjD,IAAI,CAAC,QAAQ,IAAI,MAAM,YAAY,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,EACxD,OACA,CAAC,cACA,OAAO,cAAc,YACrB,mBAAmB,KAAK,SAAS,CACnC;AAAA,MACD,MAAM,YAAY,MAAM,QAAQ,IAC/B,CAAC,GAAG,IAAI,IAAI,UAAU,CAAC,EAAE,IAAI,CAAC,cAC7B,aAAa,OAAO,SAAS,CAC9B,CACD;AAAA,MAEA,OAAO,UACL,OACA,CACC,aAEA,aAAa,IACf,EACC,KAAK,CAAC,MAAM,UAAU,MAAM,aAAa,KAAK,UAAU;AAAA;AAAA,IAE3D,MAAM,OAAO,OAAO,cAAc;AAAA,MACjC,MAAM,WAAW,MAAM,aAAa,OAAO,SAAS;AAAA,MACpD,IAAI,CAAC;AAAA,QAAU,OAAO;AAAA,MACtB,MAAM,QAAQ,MAAM,QAAQ,MAAM,IAAI,YAAY,QAAQ,CAAC;AAAA,MAC3D,IAAI,CAAC,OAAO;AAAA,QACX,MAAM,IAAI,UACT,wDACD;AAAA,MACD;AAAA,MAEA,OAAO,EAAE,UAAU,UAAU,cAAc,KAAK,EAAE;AAAA;AAAA,IAEnD,OAAO,OAAO,YAAY;AAAA,MACzB,MAAM,WAAW,yCAChB,QAAQ,QACT;AAAA,MACA,MAAM,YAAY,MAAM,0CACvB,EAAE,UAAU,UAAU,QAAQ,SAAS,GACvC,gBACD;AAAA,MACA,MAAM,QAAQ,MAAM,IACnB,YAAY,UAAU,QAAQ,GAC9B,UAAU,SAAS,OAAO,GAC1B;AAAA,QACC,aAAa;AAAA,QACb,UAAU;AAAA,QACV,UAAU;AAAA,UACT,OAAO,UAAU,SAAS;AAAA,UAC1B,WAAW,UAAU,SAAS;AAAA,UAC9B,QAAQ,UAAU,SAAS,SAAS;AAAA,QACrC;AAAA,MACD,CACD;AAAA,MACA,MAAM,QAAQ,MAAM,IACnB,YACC,UAAU,SAAS,OACnB,UAAU,SAAS,SACpB,GACA,GAAG,KAAK,UAAU,UAAU,UAAU,MAAM,IAAI;AAAA,GAChD,EAAE,aAAa,mBAAmB,CACnC;AAAA;AAAA,EAEF;AAAA;AAGM,IAAM,wCAAwC,CACpD,YAC8C;AAAA,EAC9C,MAAM,OAAO,YAAY,QAAQ,IAAI;AAAA,EACrC,MAAM,mBACL,QAAQ,oBAAoB;AAAA,EAC7B,MAAM,eAAe,CAAC,UAAkB,KAAK,MAAM,iBAAiB,KAAK,CAAC;AAAA,EAC1E,MAAM,mBAAmB,CAAC,OAAe,cACxC,KAAK,aAAa,KAAK,GAAG,iBAAiB,SAAS,CAAC;AAAA,EACtD,MAAM,wBAAwB,OAC7B,OACA,aACI;AAAA,IACJ,IACC,CAAC,aAAa,OAAO,QAAQ,KAC7B,CAAC,aAAa,OAAO,WAAW,GAC/B;AAAA,MACD,OAAO;AAAA,IACR;AAAA,IACA,MAAM,WAAW,MAAM,mBACtB,iBAAiB,SAAS,OAAO,SAAS,SAAS,CACpD;AAAA,IAEA,OAAO,SAAS,cAAc,SAAS;AAAA;AAAA,EAGxC,OAAO;AAAA,IACN,QAAQ,OAAO,OAAO,cAAc;AAAA,MACnC,MAAM,GAAG,iBAAiB,OAAO,SAAS,GAAG;AAAA,QAC5C,OAAO;AAAA,QACP,WAAW;AAAA,MACZ,CAAC;AAAA;AAAA,IAEF,MAAM,OAAO,UAAU;AAAA,MACtB,IAAI;AAAA,MACJ,IAAI;AAAA,QACH,UAAU,MAAM,QAAQ,aAAa,KAAK,GAAG;AAAA,UAC5C,eAAe;AAAA,QAChB,CAAC;AAAA,QACA,OAAO,OAAO;AAAA,QACf,IAAI,aAAa,OAAO,QAAQ;AAAA,UAAG,OAAO,CAAC;AAAA,QAE3C,MAAM;AAAA;AAAA,MAEP,MAAM,YAAY,MAAM,QAAQ,IAC/B,QACE,OACA,CAAC,UACA,MAAM,YAAY,KAClB,mBAAmB,KAAK,MAAM,IAAI,CACpC,EACC,IAAI,SAAS,WACb,uBACC,MAAM,mBACL,iBAAiB,OAAO,IAAI,CAC7B,GACA,OACA,IACD,CACD,CACF;AAAA,MAEA,OAAO,UAAU,KAChB,CAAC,MAAM,UAAU,MAAM,aAAa,KAAK,UAC1C;AAAA;AAAA,IAED,MAAM,OAAO,OAAO,cAAc;AAAA,MACjC,MAAM,YAAY,iBAAiB,OAAO,SAAS;AAAA,MACnD,IAAI;AAAA,MACJ,IAAI;AAAA,QACH,WAAW,uBACV,MAAM,mBAAmB,SAAS,GAClC,OACA,SACD;AAAA,QACC,OAAO,OAAO;AAAA,QACf,IAAI,aAAa,OAAO,QAAQ;AAAA,UAAG,OAAO;AAAA,QAE1C,MAAM;AAAA;AAAA,MAGP,OAAO;AAAA,QACN;AAAA,QACA,UAAU,IAAI,KAAK,KAAK,WAAW,SAAS,SAAS,MAAM,CAAC;AAAA,MAC7D;AAAA;AAAA,IAED,OAAO,OAAO,YAAY;AAAA,MACzB,MAAM,oBAAoB,yCACzB,QAAQ,QACT;AAAA,MACA,MAAM,YAAY,MAAM,0CACvB,EAAE,UAAU,mBAAmB,UAAU,QAAQ,SAAS,GAC1D,gBACD;AAAA,MACA,MAAM,SAAS,aAAa,UAAU,SAAS,KAAK;AAAA,MACpD,MAAM,MAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,MACvC,MAAM,UAAU,MAAM,QAAQ,KAAK,QAAQ,SAAS,CAAC;AAAA,MACrD,MAAM,eAAe,KACpB,SACA,UAAU,SAAS,SAAS,MAC7B;AAAA,MACA,IAAI;AAAA,QACH,MAAM,MAAM,YAAY,cAAc,IAAI,GAAG;AAAA,UAC5C,WAAW;AAAA,QACZ,CAAC;AAAA,QACD,MAAM,QAAQ,IAAI;AAAA,UACjB,UACC,KAAK,SAAS,aAAa,GAC3B,GAAG,KAAK,UAAU,UAAU,UAAU,MAAM,IAAI;AAAA,CACjD;AAAA,UACA,UACC,cACA,IAAI,WAAW,MAAM,UAAU,SAAS,YAAY,CAAC,CACtD;AAAA,QACD,CAAC;AAAA,QACD,MAAM,OACL,SACA,iBACC,UAAU,SAAS,OACnB,UAAU,SAAS,SACpB,CACD;AAAA,QACC,OAAO,OAAO;AAAA,QACf,MAAM,GAAG,SAAS,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,QAClD,IAAI,MAAM,sBAAsB,OAAO,UAAU,QAAQ;AAAA,UACxD;AAAA,QAED,MAAM;AAAA;AAAA;AAAA,EAGT;AAAA;AAGM,IAAM,4CAA4C,OACxD,SACA,mBAAmB,+BACf;AAAA,EACJ,QAAQ,UAAU,aAAa;AAAA,EAC/B,IACC,SAAS,SAAS,SAAS,SAAS,SACpC,SAAS,OAAO,kBACf;AAAA,IACD,MAAM,IAAI,UACT,iEACD;AAAA,EACD;AAAA,EACA,IAAK,MAAM,SAAS,QAAQ,MAAO,SAAS,SAAS,YAAY;AAAA,IAChE,MAAM,IAAI,UACT,iEACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;;AE3bR,uBAAS;AACT;AAAA,YACC;AAAA,cACA;AAAA,WACA;AAAA,aACA;AAAA,cACA;AAAA,YACA;AAAA,QACA;AAAA;AAAA,eAEA;AAAA;AAED,oBAAS,wBAAS,qBAAY,mBAAM,sBAAU,iBAAS;;;ACZvD;AACA;AACA,iBAAS;;;ACAT;AAIA;AACA;AAIO,IAAM,mBAAmB,MAAM;AAAA,EACrC,IAAI;AAAA,IACH,MAAM,UAAU,aAAa,iBAAiB,OAAO;AAAA,IAErD,OAAO,iBAAiB,KAAK,OAAO;AAAA,IACnC,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;;;ADVF,IAAM,4BAA4B;AAoBzC,IAAM,iBAAiB,CAAC,YAAsB;AAAA,EAC7C,IAAI;AAAA,IACH,MAAM,SAAS,IAAI,UAAU,SAAS;AAAA,MACrC,QAAQ;AAAA,MACR,QAAQ;AAAA,IACT,CAAC;AAAA,IAED,OAAO;AAAA,MACN,UAAU,OAAO;AAAA,MACjB,QAAQ,OAAO,OAAO,SAAS;AAAA,IAChC;AAAA,IACC,MAAM;AAAA,IACP,OAAO,EAAE,UAAU,GAAG,QAAQ,GAAG;AAAA;AAAA;AAInC,IAAM,yBAAyB,CAAC,WAAmB;AAAA,EAClD,IAAI;AAAA,IACH,MAAM,SAAkB,KAAK,MAAM,MAAM;AAAA,IACzC,IAAI,OAAO,WAAW,YAAY,WAAW;AAAA,MAAM,OAAO;AAAA,IAC1D,MAAM,WAAW,QAAQ,IAAI,QAAQ,UAAU;AAAA,IAC/C,IAAI,CAAC,MAAM,QAAQ,QAAQ;AAAA,MAAG,OAAO;AAAA,IAErC,OAAO,SAAS,KACf,CAAC,YACA,OAAO,YAAY,YACnB,YAAY,QACZ,QAAQ,IAAI,SAAS,aAAa,MAAM,QACxC,OAAO,QAAQ,IAAI,SAAS,YAAY,MAAM,YAC9C,OAAO,QAAQ,IAAI,SAAS,YAAY,CAAC,EAAE,SAAS,KAAK,CAC3D;AAAA,IACC,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,IAAM,mBAAmB,CAAC,SAAiB;AAAA,EAC1C,MAAM,QAAQ,uBAAuB,KAAK,KAAK,KAAK,CAAC;AAAA,EACrD,IAAI,CAAC;AAAA,IAAO,OAAO,KAAK,KAAK,EAAE,WAAW,MAAM,GAAG;AAAA,EAEnD,OAAO,QAAQ,MAAM,IAAI,YAAY,KAAK,MAAM,IAAI,WAAW,MAAM,GAAG;AAAA;AAGzE,IAAM,6BAA6B,MAAM;AAAA,EACxC,IAAI;AAAA,IACH,MAAM,SAAS,IAAI,UAClB,CAAC,WAAW,MAAM,MAAM,QAAQ,gBAAgB,GAChD,EAAE,QAAQ,UAAU,QAAQ,OAAO,CACpC;AAAA,IACA,IAAI,OAAO,aAAa;AAAA,MAAG;AAAA,IAC3B,MAAM,SAAS,OAAO,OAAO,SAAS,EAAE,KAAK;AAAA,IAC7C,IAAI,CAAC,UAAU,WAAW;AAAA,MAAkB;AAAA,IAE5C,OAAO,iBAAiB,MAAM;AAAA,IAC7B,MAAM;AAAA,IACP;AAAA;AAAA;AAIK,IAAM,gCAAgC,CAC5C,MACA,MAA0C,QAAQ,QAC9C;AAAA,EACJ,IAAI,SAAS,WAAW;AAAA,IACvB,OAAO,MACN,IAAI,gBAAgB,MAAK,QAAQ,GAAG,WAAW,OAAO,GACtD,cACA,WACA,KACD;AAAA,EACD;AAAA,EACA,IAAI,SAAS,OAAO;AAAA,IACnB,MAAM,eAAe,2BAA2B;AAAA,IAChD,IAAI,cAAc;AAAA,MACjB,OAAO,MAAK,cAAc,cAAc,WAAW,KAAK;AAAA,IACzD;AAAA,EACD;AAAA,EAEA,OAAO,MAAK,QAAQ,GAAG,eAAe,aAAa;AAAA;AAGpD,IAAM,aAAa,OAAO,SAAiB;AAAA,EAC1C,IAAI;AAAA,IACH,MAAM,OAAO,IAAI;AAAA,IAEjB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIF,IAAM,2BAA2B,CACvC,WAAW,QAAQ,UACnB,MAAM,iBAAiB,MACnB;AAAA,EACJ,IAAI,aAAa;AAAA,IAAU,OAAO;AAAA,EAClC,IAAI,aAAa;AAAA,IAAS,OAAO;AAAA,EACjC,IAAI,aAAa,WAAW;AAAA,IAAK,OAAO;AAAA,EAExC,OAAO;AAAA;AAGR,IAAM,kBAAkB,CAAC,MAA0B,SAAiB;AAAA,EACnE,IAAI,SAAS;AAAA,IAAO,OAAO,CAAC,GAAG,YAAY,GAAG,YAAY,IAAI;AAAA,EAC9D,IAAI,SAAS;AAAA,IAAW,OAAO,CAAC,MAAM,GAAG,YAAY,GAAG,UAAU;AAAA,EAElE,OAAO,CAAC,IAAI;AAAA;AAGb,IAAM,iBAAiB,OACtB,MACA,OACA,SAGA,SACI;AAAA,EACJ,MAAM,WAAW,MAAM,QAAQ,IAC9B,MAAM,IAAI,OAAO,SACf,MAAM,QAAQ,OAAO,IAAI,IAAK,OAAO,SACvC,CACD;AAAA,EACA,MAAM,aAAa,SAAS,KAAK,CAAC,SAAS,SAAS,SAAS;AAAA,EAC7D,IAAI;AAAA,IAAY,OAAO;AAAA,EACvB,WAAW,aAAa,gBAAgB,MAAM,IAAI,GAAG;AAAA,IACpD,MAAM,OAAO,QAAQ,MAAM,SAAS;AAAA,IACpC,IAAI;AAAA,MAAM,OAAO;AAAA,EAClB;AAAA,EAEA;AAAA;AAGD,IAAM,YAAY,CACjB,IACA,OACA,UACA,MACA,gBAEA,OACI;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AACT,IACE;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AACT;AAEI,IAAM,iCAAiC,OAC7C,QAA+C,CAAC,MAC5C;AAAA,EACJ,MAAM,MAAM,MAAM,OAAO,QAAQ;AAAA,EACjC,MAAM,OAAO,MAAM,QAAQ,yBAAyB;AAAA,EACpD,MAAM,SAAS,MAAM,UAAU;AAAA,EAC/B,MAAM,QAAQ,MAAM,UAAU,CAAC,YAAoB,IAAI,MAAM,OAAO;AAAA,EACpE,MAAM,UAAU,MAAM,WAAW;AAAA,EACjC,MAAM,cACL,MAAM,gBAAgB,OACnB,YACC,MAAM,eACR,IAAI,gBACJ,IAAI,oBACJ,8BAA8B,MAAM,GAAG;AAAA,EAC1C,MAAM,sBAAsB,SAAS,aAAa,SAAS;AAAA,EAC3D,MAAM,UAAU,CAAC,aAChB,cAAc,MAAK,aAAa,GAAG,QAAQ,IAAI;AAAA,EAChD,MAAM,QAAQ,CAAC,WACd,OAAO,OAAO,CAAC,UAA2B,QAAQ,KAAK,CAAC;AAAA,EACzD,MAAM,MAAM,MAAM,eACjB,OACA,MAAM;AAAA,IACL,QAAQ,CAAC,kBAAkB,sBAAsB,YAAY,KAAK,CAAC;AAAA,EACpE,CAAC,GACD,EAAE,QAAQ,MAAM,GAChB,IACD;AAAA,EACA,MAAM,WAAW,MAAM,eACtB,YACA,MAAM;AAAA,IACL,QAAQ;AAAA,MACP;AAAA,MACA,sBAAsB,iBAAiB;AAAA,IACxC,CAAC;AAAA,EACF,CAAC,GACD,EAAE,QAAQ,MAAM,GAChB,IACD;AAAA,EACA,MAAM,aAAa,MAAM,eACxB,cACA,MAAM;AAAA,IACL,QAAQ;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA,sBAAsB,mBAAmB;AAAA,IAC1C,CAAC;AAAA,EACF,CAAC,GACD,EAAE,QAAQ,MAAM,GAChB,IACD;AAAA,EACA,MAAM,aAAa,MAAM,eACxB,cACA,MAAM;AAAA,IACL,QAAQ;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA,sBAAsB,mBAAmB;AAAA,IAC1C,CAAC;AAAA,EACF,CAAC,GACD,EAAE,QAAQ,MAAM,GAChB,IACD;AAAA,EACA,MAAM,OAAO,MAAM,eAAe,QAAQ,CAAC,GAAG,EAAE,QAAQ,MAAM,GAAG,IAAI;AAAA,EACrE,MAAM,SAAsC;AAAA,IAC3C;AAAA,MACC,IAAI;AAAA,MACJ,OAAO,qBAAqB;AAAA,MAC5B,UAAU;AAAA,MACV,QAAQ;AAAA,IACT;AAAA,IACA,UACC,eACA,wBACA,WACA,KACA,2DACD;AAAA,IACA,UACC,oBACA,oBACA,WACA,UACA,+DACD;AAAA,IACA,UACC,sBACA,uBACA,WACA,YACA,kDACD;AAAA,IACA,UACC,sBACA,kCACA,WACA,YACA,kDACD;AAAA,IACA,UACC,gBACA,gBACA,WACA,MACA,mEACD;AAAA,EACD;AAAA,EACA,IAAI,UAAU;AAAA,IACb,MAAM,OAAO,QAAQ,CAAC,UAAU,YAAY,CAAC;AAAA,IAC7C,MAAM,gBACL,KAAK,aAAa,KAClB,KAAK,OAAO,MAAM,OAAO,EAAE,SAAS,yBAAyB;AAAA,IAC9D,OAAO,KAAK;AAAA,MACX,IAAI;AAAA,MACJ,OAAO,gCAAgC;AAAA,MACvC,UAAU;AAAA,MACV,aAAa,gBACV,YACA;AAAA,MACH,QAAQ,gBAAgB,SAAS;AAAA,IAClC,CAAC;AAAA,EACF;AAAA,EAEA,IAAI,SAAS,OAAO;AAAA,IACnB,OAAO,KAAK;AAAA,MACX,IAAI;AAAA,MACJ,OAAO,KAAK,SAAS,MAAM,IACxB,iDACA;AAAA,MACH,UAAU;AAAA,MACV,aAAa,KAAK,SAAS,MAAM,IAC9B,YACA;AAAA,MACH,QAAQ,KAAK,SAAS,MAAM,IAAI,SAAS;AAAA,IAC1C,CAAC;AAAA,EACF,EAAO,SAAI,SAAS,SAAS;AAAA,IAC5B,MAAM,SAAS,MAAM,OAAO,UAAU;AAAA,IACtC,OAAO,KAAK;AAAA,MACX,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,UAAU;AAAA,MACV,aAAa,SACV,YACA;AAAA,MACH,QAAQ,SAAS,SAAS;AAAA,IAC3B,CAAC;AAAA,EACF;AAAA,EAEA,IAAI,SAAS,SAAS;AAAA,IACrB,OAAO,KAAK;AAAA,MACX,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,IACT,CAAC;AAAA,IAED,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,QAAQ,MAAM,eAAe,SAAS,CAAC,GAAG,EAAE,QAAQ,MAAM,GAAG,IAAI;AAAA,EACvE,MAAM,aAAa,MAAM,eACxB,cACA,CAAC,GACD,EAAE,QAAQ,MAAM,GAChB,IACD;AAAA,EACA,OAAO,KACN,UACC,aACA,wBACA,OACA,OACA,gDACD,GACA,UACC,kBACA,sBACA,OACA,YACA,gDACD,CACD;AAAA,EACA,IAAI,OAAO;AAAA,IACV,MAAM,WAAW,QAAQ;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,IACD,MAAM,aACL,SAAS,aAAa,KAAK,uBAAuB,SAAS,MAAM;AAAA,IAClE,OAAO,KAAK;AAAA,MACX,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,UAAU;AAAA,MACV,aAAa,aACV,YACA;AAAA,MACH,QAAQ,aAAa,SAAS;AAAA,IAC/B,CAAC;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;;AEnYR;AAAA,YACC;AAAA;AAAA;AAAA,WAGA;AAAA,cACA;AAAA,aACA;AAAA;AAAA;AAAA,YAGA;AAAA,QACA;AAAA,eACA;AAAA;AAED,uBAAS;AACT;AAAA;AAAA;AAAA,UAGC;AAAA,cACA;AAAA,aACA;AAAA;AAAA;AAAA;;;ACnBD,mBAAS,qBAAQ,qBAAU,sBAAQ;AACnC;AAQA,IAAM,cAAc;AAEpB,IAAM,mBAAmB,CAAC,MAAc,SACvC,SAAS,MAAM,IAAI,EAAE,WAAW,MAAM,GAAG;AAE1C,IAAM,wBAAwB,CAC7B,QACA,gBACI;AAAA;AAAA;AAAA,UAGK,KAAK,UAAU,OAAO,KAAK;AAAA,YACzB,KAAK,UAAU,OAAO,OAAO;AAAA,WAC9B,KAAK,UAAU,iBAAiB,aAAa,OAAO,eAAe,CAAC;AAAA;AAAA,UAErE,KAAK,UAAU,iBAAiB,aAAa,GAAG,OAAO,gCAAgC,CAAC;AAAA;AAAA;AAAA,UAGxF,KAAK,UAAU,iBAAiB,aAAa,GAAG,OAAO,4BAA4B,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAO9F,IAAM,SAAS,OAAO,SAAiB;AAAA,EACtC,IAAI;AAAA,IACH,MAAM,QAAO,IAAI;AAAA,IAEjB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIF,IAAM,+BAA+B,OAC3C,QACA,YACI;AAAA,EACJ,MAAM,cAAc,QAAQ,QAAQ,WAAW;AAAA,EAC/C,MAAM,cAAc,QAAQ,aAAa,WAAW;AAAA,EACpD,MAAM,SAAS,sBAAsB,QAAQ,WAAW;AAAA,EACxD,IAAI,MAAM,OAAO,WAAW,GAAG;AAAA,IAC9B,MAAM,UAAU,MAAM,UAAS,aAAa,MAAM;AAAA,IAClD,IAAI,YAAY;AAAA,MAAQ,OAAO,EAAE,SAAS,OAAO,MAAM,YAAY;AAAA,IACnE,IAAI,CAAC,QAAQ,OAAO;AAAA,MACnB,MAAM,IAAI,UACT,GAAG,qFACJ;AAAA,IACD;AAAA,EACD;AAAA,EACA,MAAM,YAAY,GAAG,eAAe,OAAO,WAAW;AAAA,EACtD,MAAM,WAAU,WAAW,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,EACjD,MAAM,QAAO,WAAW,WAAW;AAAA,EAEnC,OAAO,EAAE,SAAS,MAAM,MAAM,YAAY;AAAA;;;ADhC3C;AAMA,IAAM,aAAa;AACnB,IAAM,uBAAuB;AAC7B,IAAM,8BAA8B;AACpC,IAAM,sCACL;AA4KD,IAAM,cAAa,OAAO,SAAiB;AAAA,EAC1C,IAAI;AAAA,IACH,MAAM,QAAO,IAAI;AAAA,IAEjB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,IAAM,uBAAuB,CAC5B,QACA,gBAEA,OAAO,OACN,IAAI,eAAe;AAAA,EAClB,OAAO,CAAC,UAAU;AAAA,IACjB,YAAY,MAAM,KAAK;AAAA;AAEzB,CAAC,CACF;AAED,IAAM,aAAa,OAClB,SACA,UAAyC,CAAC,MACtC;AAAA,EACJ,MAAM,aAAa,IAAI,MAAM,SAAS;AAAA,IACrC,KAAK,QAAQ;AAAA,IACb,KAAK,QAAQ;AAAA,IACb,QAAQ,QAAQ;AAAA,IAChB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,EACT,CAAC;AAAA,EACD,OAAO,YAAY,MAAM,QAAQ,IAAI;AAAA,IACpC,WAAW;AAAA,IACX,qBAAqB,WAAW,QAAQ,QAAQ,MAAM;AAAA,IACtD,qBAAqB,WAAW,QAAQ,QAAQ,MAAM;AAAA,EACvD,CAAC;AAAA,EAED,OAAO;AAAA;AAGR,IAAM,kBAAiB,CACtB,SACA,UAAyC,CAAC,MACtC;AAAA,EACJ,IAAI;AAAA,IACH,MAAM,SAAS,IAAI,UAAU,SAAS;AAAA,MACrC,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ;AAAA,MACb,QAAQ;AAAA,MACR,QAAQ;AAAA,IACT,CAAC;AAAA,IAED,OAAO;AAAA,MACN,UAAU,OAAO;AAAA,MACjB,QAAQ,OAAO,OAAO,SAAS;AAAA,MAC/B,QAAQ,OAAO,OAAO,SAAS;AAAA,IAChC;AAAA,IACC,OAAO,OAAO;AAAA,IACf,OAAO;AAAA,MACN,UAAU;AAAA,MACV,QAAQ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC7D,QAAQ;AAAA,IACT;AAAA;AAAA;AAqBF,IAAM,eAAe;AAIrB,IAAM,wBAAwB,IAAI,OACjC,GAAG,OAAO,aAAa,YAAY,mCACnC,IACD;AA6IA,IAAM,iBAAiB,OACtB,SACA,OACA,KACA,YACI;AAAA,EACJ,MAAM,WAAW,MAAM,IAAI,SAAS,OAAO;AAAA,EAC3C,eAAe,SAAS,MAAM;AAAA,EAC9B,IAAI,aAAa;AAAA,IAAG,MAAM,IAAI,MAAM,GAAG,sBAAsB,YAAY;AAAA;AAG1E,IAAM,iBAAiB,CAAC,WAAyB;AAAA,EAChD,IAAI,CAAC,QAAQ;AAAA,IAAS;AAAA,EACtB,MAAM,IAAI,aACT,8CACA,YACD;AAAA;AAwFD,IAAM,0BAA0B,OAAO,oBAA4B;AAAA,EAClE,MAAM,WAAW,MAAM,UACtB,MAAK,iBAAiB,2BAA2B,GACjD,MACD;AAAA,EACA,MAAM,UAAU,IAAI,OACnB,oCAAoC,QACpC,oCAAoC,KACrC;AAAA,EACA,MAAM,eAAe,CAAC,GAAG,SAAS,SAAS,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW;AAAA,IACpE,OAAO,MAAM,MAAM,IAAI,MAAM,CAAC,EAAE,WAAW,qBAAqB,GAAG;AAAA,IACnE,QAAQ,SAAQ,iBAAiB,MAAM,MAAM,EAAE;AAAA,EAChD,EAAE;AAAA,EACF,IAAI,aAAa,WAAW,GAAG;AAAA,IAC9B,MAAM,IAAI,MACT,qEACD;AAAA,EACD;AAAA,EAEA,OAAO,EAAE,cAAc,SAAS;AAAA;AAGjC,IAAM,yBAAyB,CAC9B,cACA,uBACI;AAAA,EACJ,MAAM,QAAQ,aAAa,MAAM,GAAG;AAAA,EACpC,IACC,MAAM,SAAS,SAAS,KACxB,MAAM,SAAS,OAAO,KACtB,MAAM,SAAS,0BAA0B,GACxC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EAEA,OACC,sBACA,MAAM,MAAM,GAAG,2BAA2B,EAAE,KAAK,GAAG,MACnD;AAAA;AAWH,IAAM,oBAAoB,OACzB,MACA,OACA,MACA,aACA,QACA,gBACA,uBACI;AAAA,EACJ,MAAM,eAAe,UAAS,MAAM,IAAI;AAAA,EACxC,IAAI,uBAAuB,cAAc,kBAAkB;AAAA,IAAG,OAAO,CAAC;AAAA,EACtE,MAAM,WAAW,GAAG,SAAS,aAAa,MAAM,GAAG,EAAE,KAAK,GAAG;AAAA,EAC7D,IAAI,aAAa;AAAA,IAChB,OAAO,uBAAuB,MAAM,OAAO,MAAM,kBAAkB;AAAA,EACpE;AAAA,EACA,IAAI,gBAAgB;AAAA,IACnB,OAAO,CAAC,WAAS,WAAW,MAAM,SAAS,IAAI,OAAK;AAAA,EACrD;AAAA,EACA,IAAI,CAAC;AAAA,IAAQ,OAAO,CAAC;AAAA,EACrB,OAAO,UAAU,YAAY,MAAM,QAAQ,IAAI;AAAA,IAC9C,MAAM,IAAI;AAAA,IACV,UAAS,IAAI;AAAA,EACd,CAAC;AAAA,EACD,MAAM,gBAAgB,YAAW,QAAQ,EAAE,OAAO,QAAQ,EAAE,OAAO,KAAK;AAAA,EAExE,OAAO;AAAA,IACN,WAAS,WAAW,SAAS,OAAO,2BAAyB;AAAA,EAC9D;AAAA;AAGD,IAAM,yBAAmD,OACxD,MACA,OACA,WACA,uBACI;AAAA,EACJ,MAAM,UAAU,MAAM,SAAQ,WAAW,EAAE,eAAe,KAAK,CAAC;AAAA,EAChE,QAAQ,KAAK,CAAC,MAAM,UAAU,KAAK,KAAK,cAAc,MAAM,IAAI,CAAC;AAAA,EACjE,MAAM,UAAU,MAAM,QAAQ,IAC7B,QAAQ,IAAI,CAAC,UACZ,kBACC,MACA,OACA,MAAK,WAAW,MAAM,IAAI,GAC1B,MAAM,YAAY,GAClB,MAAM,OAAO,GACb,MAAM,eAAe,GACrB,kBACD,CACD,CACD;AAAA,EAEA,OAAO,QAAQ,KAAK;AAAA;AAGrB,IAAM,iBAAiB,OACtB,MACA,OACA,uBACI;AAAA,EACJ,MAAM,eAAe,MAAM,SAAS,IAAI;AAAA,EACxC,MAAM,UAAU,MAAM,uBACrB,cACA,OACA,cACA,kBACD;AAAA,EAEA,OAAO,YAAW,QAAQ,EAAE,OAAO,QAAQ,KAAK,EAAE,CAAC,EAAE,OAAO,KAAK;AAAA;AAS3D,IAAM,0CAA0C,OACtD,SACA,UAA6C,CAAC,MAC1C;AAAA,EACJ,QAAQ,iBAAiB,MAAM,wBAC9B,QAAQ,eACT;AAAA,EACA,MAAM,QAAiC;AAAA,IACtC;AAAA,MACC,oBAAoB,QAAQ,wBAAwB;AAAA,MACpD,OAAO;AAAA,MACP,QAAQ,QAAQ;AAAA,IACjB;AAAA,IACA,GAAG,aACD,KAAK,CAAC,MAAM,UAAU,KAAK,KAAK,cAAc,MAAM,IAAI,CAAC,EACzD,IAAI,CAAC,gBAAgB;AAAA,MACrB,oBAAoB;AAAA,MACpB,OAAO,cAAc,WAAW;AAAA,MAChC,QAAQ,WAAW;AAAA,IACpB,EAAE;AAAA,EACJ;AAAA,EACA,MAAM,cAAc,MAAM,QAAQ,IACjC,MAAM,IAAI,CAAC,SACV,eAAe,KAAK,QAAQ,KAAK,OAAO,KAAK,kBAAkB,CAChE,CACD;AAAA,EAEA,OAAO,YAAW,QAAQ,EAAE,OAAO,YAAY,KAAK,MAAI,CAAC,EAAE,OAAO,KAAK;AAAA;AAuaxE,IAAM,qBAAqB,CAC1B,MACA,YACI;AAAA,EACJ,MAAM,SAAS,QAAQ,CAAC,WAAW,MAAM,IAAI,CAAC;AAAA,EAC9C,IAAI,OAAO,aAAa,KAAK,CAAC,OAAO,OAAO,KAAK,GAAG;AAAA,IACnD,MAAM,IAAI,MAAM,6CAA6C,MAAM;AAAA,EACpE;AAAA,EAEA,OAAO,OAAO,OAAO,KAAK;AAAA;AAQ3B,IAAM,gCAAgC,OACrC,SACA,YACI;AAAA,EACJ,MAAM,eAAe,MACpB,QAAQ,iBACR,2BACD;AAAA,EACA,MAAM,WAAW,MAAM,UAAS,cAAc,MAAM;AAAA,EACpD,MAAM,eAA0C,CAAC;AAAA,EACjD,MAAM,oBAAoB,SAAS,QAClC,qCACA,CAAC,YAAY,aAAqB,eAAuB;AAAA,IACxD,MAAM,OAAO,YACX,MAAM,CAAC,EACP,WAAW,qBAAqB,GAAG;AAAA,IACrC,MAAM,SAAS,SAAQ,QAAQ,iBAAiB,UAAU;AAAA,IAC1D,aAAa,KAAK;AAAA,MACjB;AAAA,MACA,eAAe,mBAAmB,QAAQ,OAAO;AAAA,IAClD,CAAC;AAAA,IAED,OAAO,YAAY,mEAAmE;AAAA,GAExF;AAAA,EACA,IAAI,aAAa,WAAW,GAAG;AAAA,IAC9B,MAAM,IAAI,MACT,qEACD;AAAA,EACD;AAAA,EAEA,OAAO,EAAE,cAAc,kBAAkB;AAAA;AAG1C,IAAM,8BAA8B,CACnC,eACA,kBACA,oBACA,cACA,mBACA,MACA,oBACI;AAAA,EACJ,MAAM,kBAAkB,OAAO,KAAK,eAAe,MAAM,EAAE,SAC1D,QACD;AAAA,EACA,MAAM,iBAAiB,OAAO,KAAK,kBAAkB,MAAM,EAAE,SAC5D,QACD;AAAA,EACA,MAAM,cAAc,OAAO,KAAK,oBAAoB,MAAM,EAAE,SAC3D,QACD;AAAA,EACA,MAAM,iBAAiB,OAAO,KAC7B,KAAK,UAAU,YAAY,GAC3B,MACD,EAAE,SAAS,QAAQ;AAAA,EACnB,MAAM,eAAe,OAAO,KAAK,mBAAmB,MAAM,EAAE,SAC3D,QACD;AAAA,EACA,MAAM,gBAAgB,OAAO,KAC5B,KAAK,UAAU,eAAe,GAC9B,MACD,EAAE,SAAS,QAAQ;AAAA,EACnB,MAAM,SAAS;AAAA,IACd;AAAA,IACA,0EAA0E;AAAA,IAC1E,6EAA6E;AAAA,IAC7E,+EAA+E;AAAA,IAC/E,gFAAgF;AAAA,IAChF,4EAA4E;AAAA,IAC5E,qFAAqF;AAAA,IACrF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,yEAAyE;AAAA,IACzE;AAAA,IACA;AAAA,EACD,EAAE,KAAK,IAAI;AAAA,EAEX,OAAO,OAAO,KAAK,QAAQ,SAAS,EAAE,SAAS,QAAQ;AAAA;AAqBxD,IAAM,qBAAqB,CAC1B,iBACA,MACA,UAAU,UACN;AAAA,EACJ,MAAM,WAAW,UAAU,MAAM,OAAO;AAAA,EACxC,IAAI,SAAS,iBAAiB;AAAA,IAC7B,OAAO,SACN,iBACA,OACA,SACA,WACA,OACA,SACA,eACD;AAAA,EACD;AAAA,EACA,IAAI,SAAS,mBAAmB;AAAA,IAC/B,OAAO,SACN,iBACA,OACA,SACA,WACA,OACA,WACA,iBACD;AAAA,EACD;AAAA,EAEA,OAAO,SACN,iBACA,OACA,SACA,WACA,UACA,WACA,iBACD;AAAA;AAGD,IAAM,4BAA4B,OACjC,iBACA,SACI;AAAA,EACJ,MAAM,UAAU,mBAAmB,iBAAiB,IAAI;AAAA,EACxD,IAAI,SAAS,qBAAsB,MAAM,YAAW,OAAO,GAAI;AAAA,IAC9D,OAAO;AAAA,EACR;AAAA,EAEA,OAAO,MACN,iBACA,OACA,SACA,WACA,OACA,WACA,0BACD;AAAA;AAGM,IAAM,qCAAqC,OACjD,YACI;AAAA,EACJ,QAAQ,SAAS,SAAS;AAAA,EAC1B,MAAM,UAAU,QAAQ,WAAW;AAAA,EACnC,MAAM,MAAM,QAAQ,OAAO;AAAA,EAC3B,MAAM,MAAM,QAAQ,OAAO,QAAQ;AAAA,EACnC,MAAM,kBAAkB,QAAQ,mBAAmB,CAAC;AAAA,EACpD,IAAI,QAAQ,SAAS,OAAO;AAAA,IAC3B,MAAM,gBAAgB,mBACrB,QAAQ,iBACR,OACD;AAAA,IACA,MAAM,UAAU,IAAI,KAAK,QAAQ,WAAW,EAAE,SAAS,UAAU;AAAA,IACjE,MAAM,wBAAwB,SAC7B,QAAQ,aACR,MACA,MACA,UACA,GAAG,QAAQ,OAAO,SAAS,SAC5B;AAAA,IACA,MAAM,mBAAmB,mBACxB,uBACA,OACD;AAAA,IACA,MAAM,qBAAqB,mBAC1B,QAAQ,aACR,OACD;AAAA,IACA,QAAQ,cAAc,sBACrB,MAAM,8BAA8B,SAAS,OAAO;AAAA,IACrD,MAAM,eACL;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,4BACC,eACA,kBACA,oBACA,cACA,mBACA,MACA,eACD;AAAA,IACD,GACA,wBACA,KACA,EAAE,KAAK,QAAQ,QAAQ,OAAO,CAC/B;AAAA,IAEA,MAAM,gBAAe,MAAM,0BAC1B,uBACA,IACD;AAAA,IACA,MAAM,WAAW,cAAa,SAAS,eAAe;AAAA,IAEtD,OAAO;AAAA,MACN;AAAA,MACA,aAAa,WACV,MAAM,KACN,kBACA,OACA,SACA,WACA,OACA,WACA,0BACD,IACC,mBAAmB,kBAAkB,MAAM,IAAI;AAAA,IACnD;AAAA,EACD;AAAA,EACA,MAAM,UAAU,QAAQ,SAAS,YAAY,gBAAgB;AAAA,EAC7D,MAAM,eACL,CAAC,SAAS,eAAe,mBAAmB,GAAG,iBAAiB,IAAI,GACpE,wBACA,KACA,EAAE,KAAK,QAAQ,iBAAiB,KAAK,QAAQ,QAAQ,OAAO,CAC7D;AAAA,EAEA,MAAM,eAAe,MAAM,0BAC1B,QAAQ,iBACR,IACD;AAAA,EAEA,OAAO,EAAE,cAAc,aAAa,aAAa;AAAA;;;AH11C3C,IAAM,kCAAkC;AAkD/C,IAAM,WAAW,CAAC,UACjB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAEpE,IAAM,kBAAkB,CAAC,UAAyC;AAAA,EACjE,IACC,CAAC,SAAS,KAAK,KACf,OAAO,MAAM,aAAa,YAC1B,OAAO,MAAM,UAAU,YACvB,OAAO,MAAM,YAAY,UACxB;AAAA,IACD,MAAM,IAAI,UAAU,8CAA8C;AAAA,EACnE;AAAA,EAEA,OAAO;AAAA,IACN,UAAU,MAAM;AAAA,IAChB,OAAO,MAAM;AAAA,IACb,SAAS,MAAM;AAAA,EAChB;AAAA;AAGD,IAAM,cAAa,OAAO,SAAiB;AAAA,EAC1C,IAAI;AAAA,IACH,MAAM,QAAO,IAAI;AAAA,IAEjB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,IAAM,iBAAiB,CACtB,SACA,UAAyC,CAAC,MACtC;AAAA,EACJ,IAAI;AAAA,IACH,MAAM,SAAS,IAAI,UAAU,SAAS;AAAA,MACrC,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ;AAAA,MACb,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,IACT,CAAC;AAAA,IAED,OAAO;AAAA,MACN,UAAU,OAAO;AAAA,MACjB,QAAQ,OAAO,OAAO,SAAS;AAAA,MAC/B,QAAQ,OAAO,OAAO,SAAS;AAAA,IAChC;AAAA,IACC,OAAO,OAAO;AAAA,IACf,OAAO;AAAA,MACN,UAAU;AAAA,MACV,QAAQ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC7D,QAAQ;AAAA,IACT;AAAA;AAAA;AAIF,IAAM,qBAAqB,CAC1B,cACA,SACA,cACI;AAAA,EACJ,MAAM,aACL,cAAc,YAAY,IAAI,MAAM,WAAW,IAAI;AAAA,EACpD,IAAI,CAAC;AAAA,IAAY,OAAO;AAAA,EACxB,MAAM,SAAS,QAAQ;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EAED,OAAO,OAAO,aAAa,KAAK,iBAAiB,KAAK,OAAO,MAAM;AAAA;AAGpE,IAAM,UAAU,CACf,cACA,SACA,WACA,YACI;AAAA,EACJ,MAAM,SAAS,QAAQ;AAAA,IACtB;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,EACT,CAAC;AAAA,EACD,IAAI,OAAO,aAAa;AAAA,IACvB,MAAM,IAAI,UACT,kFACD;AAAA;AAGF,IAAM,aAAa,OAAO,SACzB,YAAW,QAAQ,EACjB,OAAO,MAAM,UAAS,IAAI,CAAC,EAC3B,OAAO,KAAK;AAEf,IAAM,sBAAsB,CAAC,aAAqB,cAAuB;AAAA,EACxE,MAAM,OAAO,SAAQ,WAAW;AAAA,EAChC,MAAM,SAAS,SACd,MACA,aAAa,qCACd;AAAA,EACA,MAAM,kBAAkB,UAAS,MAAM,MAAM;AAAA,EAC7C,IACC,oBAAoB,QACpB,gBAAgB,WAAW,KAAK,MAAK,KACrC,YAAW,eAAe,GACzB;AAAA,IACD,MAAM,IAAI,UACT,uDACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,iBAAiB,OACtB,cACA,UACA,eACI;AAAA,EACJ,MAAM,cAAc,MAAK,YAAY,SAAS,SAAS;AAAA,EACvD,MAAM,eAAe;AAAA,EACrB,MAAM,cAAc,MAAK,aAAa,YAAY;AAAA,EAClD,IAAI,MAAM,YAAW,WAAW,GAAG;AAAA,IAClC,MAAM,WAAW,wBAChB,KAAK,MACJ,MAAM,UAAS,MAAK,aAAa,cAAc,GAAG,MAAM,CACzD,GACA,QACD;AAAA,IACA,OAAO,gBAAgB,mBAAmB,MAAM,QAAQ,IAAI;AAAA,MAC3D,KAAK,WAAW,EAAE,KAAK,GAAG,WAAW,IAAI;AAAA,MACzC,WAAW,WAAW;AAAA,IACvB,CAAC;AAAA,IACD,IACC,mBAAmB,SAAS,SAC5B,oBAAoB,SAAS,QAC5B;AAAA,MACD,MAAM,IAAI,UACT,6BAA6B,SAAS,4CACvC;AAAA,IACD;AAAA,IAEA,OAAO,EAAE,cAAc,aAAa,UAAU,UAAU,YAAY;AAAA,EACrE;AAAA,EACA,MAAM,OAAM,SAAQ,WAAW,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACrD,MAAM,UAAU,MAAM,SACrB,MAAK,SAAQ,WAAW,GAAG,iBAAiB,CAC7C;AAAA,EACA,IAAI;AAAA,IACH,MAAM,UAAS,cAAc,MAAK,SAAS,YAAY,CAAC;AAAA,IACxD,MAAM,WAAW;AAAA,SACb;AAAA,MACH,UAAU;AAAA,IACX;AAAA,IACA,MAAM,WACL,MAAK,SAAS,cAAc,GAC5B,GAAG,KAAK,UAAU,UAAU,MAAM,IAAI;AAAA,GACtC,EAAE,MAAM,KAAK,CACd;AAAA,IACA,MAAM,QAAO,SAAS,WAAW;AAAA,IAEjC,OAAO,EAAE,cAAc,aAAa,UAAU,UAAU,YAAY;AAAA,YACnE;AAAA,IACD,MAAM,IAAG,SAAS,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC,EAAE,MACnD,MAAG;AAAA,MAAG;AAAA,KACP;AAAA;AAAA;AAIF,IAAM,0BAA0B,CAC/B,OACA,aACI;AAAA,EACJ,IAAI,CAAC,SAAS,KAAK,GAAG;AAAA,IACrB,MAAM,IAAI,UAAU,+CAA+C;AAAA,EACpE;AAAA,EACA,QAAQ,aAAa;AAAA,EACrB,IACC,aAAa,qBACb,OAAO,QAAQ,QAAQ,EAAE,KACxB,EAAE,KAAK,mBAAmB,QAAQ,IAAI,OAAO,GAAG,MAAM,aACvD,GACC;AAAA,IACD,MAAM,IAAI,UACT,6BAA6B,SAAS,uCACvC;AAAA,EACD;AAAA,EAEA,OAAO,KAAK,UAAU,SAAS;AAAA;AAGzB,IAAM,8BAA8B,OAC1C,YACI;AAAA,EACJ,IAAI,QAAQ,gBAAgB,aAAa,QAAQ,oBAAoB;AAAA,IACpE,MAAM,IAAI,UACT,wEACD;AAAA,EACD;AAAA,EACA,IACC,QAAQ,gBAAgB,cACvB,CAAC,OAAO,cAAc,QAAQ,WAAW,KACzC,QAAQ,cAAc,KACtB,QAAQ,cAAc,aACtB;AAAA,IACD,MAAM,IAAI,UACT,mEACD;AAAA,EACD;AAAA,EACA,MAAM,cAAc,SAAQ,QAAQ,WAAW;AAAA,EAC/C,MAAM,OAAO,QAAQ,QAAQ,yBAAyB;AAAA,EACtD,MAAM,cACL,QAAQ,eACR,QAAQ,IAAI,gBACZ,QAAQ,IAAI,oBACZ,8BAA8B,IAAI;AAAA,EACnC,MAAM,kBAAkB,MACvB,QAAQ,OAAO,wBACf,SACD;AAAA,EACA,MAAM,WAAW,gBAChB,KAAK,MACJ,MAAM,UACL,MACC,QAAQ,OAAO,iBACf,+BACD,GACA,MACD,CACD,CACD;AAAA,EACA,IAAI,SAAS,UAAU,QAAQ,OAAO,OAAO;AAAA,IAC5C,MAAM,IAAI,UACT,6DACD;AAAA,EACD;AAAA,EACA,MAAM,gBAAgB;AAAA,EACtB,IAAI,QAAQ,oBAAoB;AAAA,IAC/B,MAAM,oBAAoB,MAAM,wCAC/B,EAAE,gBAAgB,CACnB;AAAA,IACA,MAAM,gBAAgB,YAAW,QAAQ,EACvC,OAAO,GAAG,SAAS,eAAa,mBAAmB,EACnD,OAAO,KAAK;AAAA,IACd,cAAc,MAAM,QAAQ,mBAAmB,aAAa;AAAA,EAC7D;AAAA,EACA,IACC,gBAAgB,cACf,CAAC,OAAO,cAAc,WAAW,KACjC,cAAc,KACd,cAAc,aACd;AAAA,IACD,MAAM,IAAI,UACT,mEACD;AAAA,EACD;AAAA,EACA,QAAQ,iBAAiB,MAAM,mCAAmC;AAAA,IACjE,SAAS,QAAQ;AAAA,IACjB,iBACC,gBAAgB,YACb,CAAC,IACD,CAAC,mCAAmC,aAAa;AAAA,IACrD,SAAS;AAAA,MACR;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,KAAK,QAAQ;AAAA,IACb,MAAM;AAAA,EACP,CAAC;AAAA,EACD,IAAI,CAAE,MAAM,YAAW,YAAY,GAAI;AAAA,IACtC,MAAM,IAAI,UACT,2DAA2D,cAC5D;AAAA,EACD;AAAA,EACA,MAAM,UAAU,QAAQ,WAAW;AAAA,EACnC,MAAM,YACL,QAAQ,cAAc,YACnB,IAAI,MAAM,WAAW,IACrB,QAAQ;AAAA,EACZ,IAAI,SAAS,mBAAmB,cAAc,SAAS,SAAS;AAAA,EAChE,IAAI,WAAW,SAAS,QAAQ,SAAS;AAAA,IACxC,IAAI,CAAC;AAAA,MACJ,MAAM,IAAI,UACT,yEACD;AAAA,IACD,QAAQ,cAAc,SAAS,WAAW,QAAQ,OAAO;AAAA,IACzD,SAAS,mBAAmB,cAAc,SAAS,SAAS;AAAA,IAC5D,IAAI,CAAC;AAAA,MACJ,MAAM,IAAI,UACT,oEACD;AAAA,EACF;AAAA,EACA,IAAI,WAAW,QAAQ,CAAC,QAAQ,eAAe;AAAA,IAC9C,MAAM,IAAI,UACT,wJACD;AAAA,EACD;AAAA,EACA,IAAI,CAAC,UAAU,CAAC,QAAQ,eAAe;AAAA,IACtC,MAAM,IAAI,UACT,mNACD;AAAA,EACD;AAAA,EACA,OAAO,OAAO,UAAU,MAAM,QAAQ,IAAI;AAAA,IACzC,KAAK,YAAY,EAAE,KAAK,GAAG,WAAW,IAAI;AAAA,IAC1C,WAAW,YAAY;AAAA,EACxB,CAAC;AAAA,EACD,MAAM,YAAY,mBAAmB;AAAA,EACrC,MAAM,WAAW;AAAA,IAChB,UAAU,SAAS;AAAA,IACnB,OAAO,SAAS;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA,SAAS,SAAS;AAAA,IAClB;AAAA,IACA,QAAQ,WAAW;AAAA,IACnB,MAAM;AAAA,OACF,gBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY;AAAA,EACpD;AAAA,EAEA,OAAO,eACN,cACA,UACA,oBAAoB,aAAa,QAAQ,eAAe,CACzD;AAAA;;AK/ZD,wBAAS;AAoDT,IAAM,kBAAiB,OAAO,YAAsB;AAAA,EACnD,MAAM,WAAU,IAAI,MAAM,SAAS,EAAE,QAAQ,QAAQ,QAAQ,OAAO,CAAC;AAAA,EACrE,OAAO,UAAU,QAAQ,UAAU,MAAM,QAAQ,IAAI;AAAA,IACpD,SAAQ;AAAA,IACR,IAAI,SAAS,SAAQ,MAAM,EAAE,KAAK;AAAA,IAClC,IAAI,SAAS,SAAQ,MAAM,EAAE,KAAK;AAAA,EACnC,CAAC;AAAA,EAED,OAAO,EAAE,UAAU,QAAQ,OAAO;AAAA;AAGnC,IAAM,QAAQ,CAAC,QAAgB,SAC9B,IAAI,OAAO,QAAQ,sBAAsB,IAAI,EAAE,KAAK,MAAM,IAAI,IAAI,KAAK;AAEjE,IAAM,qCAAqC,OACjD,KACA,QACA,OACA,MAEoD,oBAChD;AAAA,EACJ,MAAM,SAAS,MAAM,IAAI;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EACD,IAAI,OAAO,aAAa;AAAA,IACvB,MAAM,IAAI,MACT,2CAA2C,UAAU,OAAO,OAAO,KAAK,KAAK,OAAO,OAAO,KAAK,GACjG;AAAA,EACD,MAAM,YAAY,iCAAiC,OAAO,OAAO,MAAM;AAAA,EACvE,IAAI,CAAC;AAAA,IACJ,MAAM,IAAI,MAAM,eAAe,6BAA6B,SAAS;AAAA,EAEtE,OAAO;AAAA;AAED,IAAM,mCAAmC,CAC/C,OACA,WACwC;AAAA,EACxC,MAAM,cAAc,6BAA6B,KAAK,MAAM,IAAI;AAAA,EAChE,IAAI,gBAAgB,SAAS,CAAC,OAAO,SAAS,WAAW,OAAO;AAAA,IAC/D,OAAO;AAAA,EACR,MAAM,kBAAkB,0BAA0B,KAAK,MAAM,IAAI;AAAA,EAEjE,OAAO;AAAA,IACN;AAAA,OACI,MAAM,QAAQ,SAAS,IACxB,EAAE,eAAe,MAAM,QAAQ,SAAS,EAAE,IAC1C,CAAC;AAAA,OACA,MAAM,QAAQ,kBAAkB,IACjC,EAAE,kBAAkB,MAAM,QAAQ,kBAAkB,EAAE,IACtD,CAAC;AAAA,OACA,MAAM,QAAQ,gBAAgB,IAC/B,EAAE,gBAAgB,MAAM,QAAQ,gBAAgB,EAAE,IAClD,CAAC;AAAA,OACA,MAAM,QAAQ,QAAQ,KAAK,MAAM,QAAQ,OAAO,IACjD,EAAE,KAAK,MAAM,QAAQ,QAAQ,KAAK,MAAM,QAAQ,OAAO,EAAE,IACzD,CAAC;AAAA,OACA,kBAAkB,EAAE,aAAa,OAAO,eAAe,EAAE,IAAI,CAAC;AAAA,OAC9D,MAAM,QAAQ,aAAa,IAC5B,EAAE,aAAa,MAAM,QAAQ,aAAa,EAAE,IAC5C,CAAC;AAAA,EACL;AAAA;AAGD,IAAM,YAAY,CACjB,MACA,QACA,UACI;AAAA,EACJ,IAAI,CAAC,UAAU,CAAC;AAAA,IACf,MAAM,IAAI,MACT,0BAA0B,6BAC3B;AAAA,EACD,IAAI,WAAW;AAAA,IACd,MAAM,IAAI,MAAM,WAAW,2CAA2C;AAAA;AAGjE,IAAM,uCAAuC,OACnD,YACsD;AAAA,EACtD,MAAM,MAAM,QAAQ,OAAO;AAAA,EAC3B,MAAM,YAAY,aAAY,IAAI;AAAA,EAClC,MAAM,SAAS,MAAM,mCACpB,QAAQ,KACR,QAAQ,QACR,QAAQ,OACR,GACD;AAAA,EACA,MAAM,mBAAmB,aAAY,IAAI;AAAA,EACzC,MAAM,YAAY,MAAM,IAAI;AAAA,IAC3B,QAAQ;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACT,CAAC;AAAA,EACD,MAAM,YAAY,KAAK,MAAM,aAAY,IAAI,IAAI,gBAAgB;AAAA,EACjE,IAAI,UAAU,aAAa,KAAK,CAAC,UAAU,OAAO,SAAS,SAAS;AAAA,IACnE,MAAM,IAAI,MACT,oCAAoC,UAAU,OAAO,KAAK,KAAK,UAAU,OAAO,KAAK,GACtF;AAAA,EACD,MAAM,QAAQ,MAAM,mCACnB,QAAQ,KACR,QAAQ,QACR,QAAQ,OACR,GACD;AAAA,EACA,UAAU,mBAAmB,OAAO,KAAK,MAAM,GAAG;AAAA,EAClD,UAAU,kBAAkB,OAAO,eAAe,MAAM,aAAa;AAAA,EACrE,UACC,2BACA,OAAO,kBACP,MAAM,gBACP;AAAA,EACA,IACC,OAAO,gBAAgB,aACvB,MAAM,gBAAgB,aACtB,MAAM,eAAe,OAAO;AAAA,IAE5B,MAAM,IAAI,MACT,yCAAyC,OAAO,kBAAkB,MAAM,eACzE;AAAA,EACD,MAAM,QAAQ,eAAe,KAAK;AAAA,EAClC,MAAM,QAAQ,MAAM,QAAQ,YAAY;AAAA,EACxC,MAAM,oBACL,CAAC,QAAQ,iBACR,QAAQ,cAAc,aAAa,gBACnC,QAAQ,cAAc,aAAa,gBACnC,QAAQ,cAAc,eAAe,sBACrC,QAAQ,cAAc,aAAa;AAAA,EACrC,MAAM,UACL,OAAO,OAAO,KAAK,EAAE,MAAM,OAAO,KAAK,oBACpC,SACA;AAAA,EAEJ,OAAO;AAAA,IACN;AAAA,IACA;AAAA,OACI,QAAQ,gBACT,EAAE,eAAe,QAAQ,cAAc,IACvC,CAAC;AAAA,IACJ,YAAY,KAAK,MAAM,aAAY,IAAI,IAAI,SAAS;AAAA,IACpD;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA;;AC7MD,uBAAS;AACT;AAAA,YACC;AAAA,cACA;AAAA,WACA;AAAA,aACA;AAAA,aACA;AAAA,cACA;AAAA,YACA;AAAA,QACA;AAAA,UACA;AAAA,eACA;AAAA;AAED,oBAAS,wBAAS,qBAAY,mBAAM,sBAAU,iBAAS;AAOhD,IAAM,8BAA8B;AA2C3C,IAAM,0BAA0B,CAAC,UAA8B;AAAA,EAC9D,IAAI,UAAU;AAAA,IAAW;AAAA,EACzB,MAAM,OAAO,MAAM,KAAK,EAAE,YAAY;AAAA,EACtC,IAAI,CAAC,kBAAkB,KAAK,IAAI;AAAA,IAC/B,MAAM,IAAI,UACT,0DACD;AAAA,EAED,OAAO,oBAAoB;AAAA;AAG5B,IAAM,YAAW,CAAC,UACjB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAEpE,IAAM,mBAAkB,CAAC,UAAyC;AAAA,EACjE,IACC,CAAC,UAAS,KAAK,KACf,OAAO,MAAM,aAAa,YAC1B,OAAO,MAAM,UAAU,YACvB,OAAO,MAAM,YAAY,UACxB;AAAA,IACD,MAAM,IAAI,UAAU,8CAA8C;AAAA,EACnE;AAAA,EAEA,OAAO;AAAA,IACN,UAAU,MAAM;AAAA,IAChB,OAAO,MAAM;AAAA,IACb,SAAS,MAAM;AAAA,EAChB;AAAA;AAGD,IAAM,cAAa,OAAO,SAAiB;AAAA,EAC1C,IAAI;AAAA,IACH,MAAM,QAAO,IAAI;AAAA,IAEjB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,IAAM,aAAa,OAAO,SAAmB,UAA0B,CAAC,MAAM;AAAA,EAC7E,MAAM,WAAU,IAAI,MAAM,SAAS;AAAA,IAClC,KAAK,QAAQ;AAAA,IACb,KAAK,QAAQ;AAAA,IACb,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,EACT,CAAC;AAAA,EAED,OAAO,SAAQ;AAAA;AAGhB,IAAM,kBAAiB,CAAC,SAAmB,UAA0B,CAAC,MAAM;AAAA,EAC3E,IAAI;AAAA,IACH,MAAM,SAAS,IAAI,UAAU,SAAS;AAAA,MACrC,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ;AAAA,MACb,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,IACT,CAAC;AAAA,IAED,OAAO;AAAA,MACN,UAAU,OAAO;AAAA,MACjB,QAAQ,OAAO,OAAO,SAAS;AAAA,MAC/B,QAAQ,OAAO,OAAO,SAAS;AAAA,IAChC;AAAA,IACC,OAAO,OAAO;AAAA,IACf,OAAO;AAAA,MACN,UAAU;AAAA,MACV,QAAQ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC7D,QAAQ;AAAA,IACT;AAAA;AAAA;AAIF,IAAM,gCAAgC,IAAI,IAAI;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,IAAM,mBAAmB,OACxB,MACA,UAAU,MACV,UAA6C,CAAC,MACvB;AAAA,EACvB,MAAM,UAAU,MAAM,SAAQ,SAAS,EAAE,eAAe,KAAK,CAAC;AAAA,EAC9D,MAAM,SAAS,MAAM,QAAQ,IAC5B,QACE,KAAK,CAAC,MAAM,UAAU,KAAK,KAAK,cAAc,MAAM,IAAI,CAAC,EACzD,IAAI,OAAO,UAAU;AAAA,IACrB,MAAM,OAAO,MAAK,SAAS,MAAM,IAAI;AAAA,IACrC,MAAM,kBAAkB,UAAS,MAAM,IAAI,EAAE,WAC5C,MACA,GACD;AAAA,IACA,MAAM,UACL,MAAM,YAAY,MACjB,8BAA8B,IAAI,MAAM,IAAI,KAC3C,oBAAoB,oBACpB,QAAQ,wBAAwB;AAAA,IACnC,IAAI;AAAA,MAAS,OAAO,CAAC;AAAA,IACrB,IAAI,MAAM,YAAY;AAAA,MACrB,OAAO,iBAAiB,MAAM,MAAM,OAAO;AAAA,IAE5C,OAAO,MAAM,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC;AAAA,GAClC,CACH;AAAA,EAEA,OAAO,OAAO,KAAK;AAAA;AAGb,IAAM,sCAAsC,OAClD,iBACA,UAA6C,CAAC,MAC1C;AAAA,EACJ,MAAM,SAAS,YAAW,QAAQ;AAAA,EAClC,MAAM,QAAQ,MAAM,iBACnB,iBACA,iBACA,OACD;AAAA,EACA,MAAM,WAAW,MAAM,QAAQ,IAAI,MAAM,IAAI,CAAC,SAAS,UAAS,IAAI,CAAC,CAAC;AAAA,EACtE,MAAM,QAAQ,CAAC,MAAM,UAAU;AAAA,IAC9B,OAAO,OAAO,UAAS,iBAAiB,IAAI,EAAE,WAAW,MAAM,GAAG,CAAC;AAAA,IACnE,OAAO,OAAO,MAAI;AAAA,IAClB,OAAO,OAAO,SAAS,UAAU,IAAI,UAAY;AAAA,IACjD,OAAO,OAAO,MAAI;AAAA,GAClB;AAAA,EAED,OAAO,OAAO,OAAO,KAAK;AAAA;AAG3B,IAAM,uBAAsB,CAAC,aAAqB,cAAuB;AAAA,EACxE,MAAM,OAAO,SAAQ,WAAW;AAAA,EAChC,MAAM,SAAS,SACd,MACA,aAAa,iCACd;AAAA,EACA,MAAM,kBAAkB,UAAS,MAAM,MAAM;AAAA,EAC7C,IACC,oBAAoB,QACpB,gBAAgB,WAAW,KAAK,MAAK,KACrC,YAAW,eAAe,GACzB;AAAA,IACD,MAAM,IAAI,UACT,uDACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,cAAa,OAAO,SACzB,YAAW,QAAQ,EACjB,OAAO,MAAM,UAAS,IAAI,CAAC,EAC3B,OAAO,KAAK;AAEf,IAAM,kBAAkB,OACvB,MACA,cACiC;AAAA,EACjC,IAAI,CAAE,MAAM,YAAW,IAAI;AAAA,IAAI;AAAA,EAC/B,MAAM,UAAU,MAAM,SAAQ,MAAM,EAAE,eAAe,KAAK,CAAC;AAAA,EAC3D,MAAM,UAAU,MAAM,QAAQ,IAC7B,QAAQ,IAAI,OAAO,UAAU;AAAA,IAC5B,MAAM,OAAO,MAAK,MAAM,MAAM,IAAI;AAAA,IAClC,IAAI,MAAM,YAAY,KAAK,MAAM,KAAK,SAAS,SAAS;AAAA,MACvD,OAAO;AAAA,IACR,IAAI,MAAM,OAAO,KAAK,MAAM,KAAK,SAAS,SAAS;AAAA,MAAG,OAAO;AAAA,IAE7D,OAAO,MAAM,YAAY,IACtB,gBAAgB,MAAM,SAAS,IAC/B;AAAA,GACH,CACF;AAAA,EAEA,OAAO,QAAQ,KAAK,CAAC,UAAU,UAAU,SAAS;AAAA;AAGnD,IAAM,gBAAgB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAY5B,IAAM,qBAAqB,CAAC,UAA8B;AAAA,EACzD,IAAI,UAAU,cAAc,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ;AAAA,IACnE,MAAM,IAAI,UAAU,8CAA8C;AAAA,EAEnE,OAAO;AAAA;AAGR,IAAM,kBAAiB,OACtB,cACA,UACA,eACI;AAAA,EACJ,MAAM,cAAc,MAAK,YAAY,SAAS,SAAS;AAAA,EACvD,MAAM,cAAc,MAAK,aAAa,SAAS;AAAA,EAC/C,IAAI,MAAM,YAAW,WAAW,GAAG;AAAA,IAClC,MAAM,QAAiB,KAAK,MAC3B,MAAM,UAAS,MAAK,aAAa,cAAc,GAAG,MAAM,CACzD;AAAA,IACA,IACC,CAAC,UAAS,KAAK,KACf,MAAM,aAAa,aACnB,OAAO,QAAQ,QAAQ,EAAE,KACxB,EAAE,KAAK,cAAc,QAAQ,IAAI,OAAO,GAAG,MAAM,QAClD,GACC;AAAA,MACD,MAAM,IAAI,UACT,yBAAyB,SAAS,uCACnC;AAAA,IACD;AAAA,IACA,OAAO,OAAO,UAAU,MAAM,QAAQ,IAAI;AAAA,MACzC,MAAK,WAAW,EAAE,KAAK,GAAG,WAAW,IAAI;AAAA,MACzC,YAAW,WAAW;AAAA,IACvB,CAAC;AAAA,IACD,IAAI,UAAU,SAAS,SAAS,WAAW,SAAS;AAAA,MACnD,MAAM,IAAI,UACT,yBAAyB,SAAS,4CACnC;AAAA,IAED,OAAO;AAAA,MACN,cAAc;AAAA,MACd,UAAU;AAAA,WACN;AAAA,QACH,UAAU;AAAA,MACX;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EACA,MAAM,OAAM,SAAQ,WAAW,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACrD,MAAM,UAAU,MAAM,SAAQ,MAAK,SAAQ,WAAW,GAAG,aAAa,CAAC;AAAA,EACvE,IAAI;AAAA,IACH,MAAM,UAAS,cAAc,MAAK,SAAS,SAAS,CAAC;AAAA,IACrD,MAAM,WAAW;AAAA,SACb;AAAA,MACH,UAAU;AAAA,IACX;AAAA,IACA,MAAM,WACL,MAAK,SAAS,cAAc,GAC5B,GAAG,KAAK,UAAU,UAAU,MAAM,IAAI;AAAA,GACtC,EAAE,MAAM,KAAK,CACd;AAAA,IACA,MAAM,QAAO,SAAS,WAAW;AAAA,IAEjC,OAAO,EAAE,cAAc,aAAa,UAAU,UAAU,YAAY;AAAA,YACnE;AAAA,IACD,MAAM,IAAG,SAAS,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC,EAAE,MACnD,MAAG;AAAA,MAAG;AAAA,KACP;AAAA;AAAA;AAIK,IAAM,0BAA0B,OACtC,YACI;AAAA,EACJ,IAAI,QAAQ,gBAAgB,aAAa,QAAQ;AAAA,IAChD,MAAM,IAAI,UACT,oEACD;AAAA,EACD,KAAK,QAAQ,QAAQ,yBAAyB,OAAO;AAAA,IACpD,MAAM,IAAI,UAAU,6CAA6C;AAAA,EAClE,MAAM,mBAAmB,QAAQ,OAAO;AAAA,EACxC,IAAI,CAAC;AAAA,IACJ,MAAM,IAAI,UACT,wEACD;AAAA,EACD,MAAM,WAAW,iBAChB,KAAK,MACJ,MAAM,UACL,MACC,QAAQ,OAAO,iBACf,+BACD,GACA,MACD,CACD,CACD;AAAA,EACA,IAAI,SAAS,UAAU,QAAQ,OAAO;AAAA,IACrC,MAAM,IAAI,UACT,6DACD;AAAA,EACD,MAAM,kBAAkB,MAAK,QAAQ,OAAO,wBAAwB,KAAK;AAAA,EACzE,IAAI,cAAc,mBAAmB,QAAQ,WAAW;AAAA,EACxD,IAAI,QAAQ,oBAAoB;AAAA,IAC/B,MAAM,oBACL,MAAM,oCAAoC,eAAe;AAAA,IAC1D,MAAM,gBAAgB,YAAW,QAAQ,EACvC,OACA,GAAG,SAAS,eAAa,wBAAsB,kBAChD,EACC,OAAO,KAAK;AAAA,IACd,cAAc,mBACb,MAAM,QAAQ,mBAAmB,aAAa,CAC/C;AAAA,EACD;AAAA,EACA,MAAM,gBAAgB,SAAQ,QAAQ,aAAa,oBAAoB;AAAA,EACvE,MAAM,OAAM,eAAe,EAAE,WAAW,KAAK,CAAC;AAAA,EAC9C,MAAM,UAAU,MAAM,SAAQ,MAAK,eAAe,aAAa,CAAC;AAAA,EAChE,MAAM,cAAc,MAAK,SAAS,eAAe;AAAA,EACjD,MAAM,aAAa,MAAK,SAAS,QAAQ;AAAA,EACzC,MAAM,cAAc,MAAK,SAAS,qBAAqB;AAAA,EACvD,MAAM,OAAM,YAAY,EAAE,WAAW,KAAK,CAAC;AAAA,EAC3C,MAAM,WAAU,aAAa,cAAc,CAAC;AAAA,EAC5C,MAAM,MAAM,QAAQ,OAAO;AAAA,EAC3B,IAAI;AAAA,IACH,MAAM,kBAAkB,wBACvB,QAAQ,eACT;AAAA,IACA,MAAM,mBAAmB;AAAA,MACxB,qBAAqB;AAAA,MACrB,GAAI,kBAAkB,CAAC,eAAe,IAAI,CAAC;AAAA,MAC3C,GAAI,gBAAgB,YACjB,CAAC,IACD,CAAC,2BAA2B,aAAa;AAAA,IAC7C;AAAA,IACA,MAAM,cAAc,MAAM,IACzB;AAAA,MACC;AAAA,MACA;AAAA,MACA,MAAK,iBAAiB,OAAO,iBAAiB;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,MACH;AAAA,IACD,GACA,EAAE,KAAK,gBAAgB,CACxB;AAAA,IACA,IAAI,gBAAgB;AAAA,MACnB,MAAM,IAAI,UAAU,sCAAsC;AAAA,IAC3D,MAAM,cAAc,MAAM,gBACzB,MAAK,aAAa,YAAY,cAAc,GAC5C,MACD;AAAA,IACA,MAAM,UAAU,QAAQ,WAAW;AAAA,IACnC,MAAM,SAAS,cACZ,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC,EAAE,aAAa,IACf;AAAA,IACH,IAAI,CAAC,UAAU,CAAC,QAAQ;AAAA,MACvB,MAAM,IAAI,UACT,mJACD;AAAA,IACD,MAAM,aAAa,MAAM,IACxB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,GACA,EAAE,KAAK,gBAAgB,CACxB;AAAA,IACA,IAAI,eAAe;AAAA,MAClB,MAAM,IAAI,UAAU,2CAA2C;AAAA,IAChE,MAAM,eAAe,MAAM,gBAAgB,YAAY,MAAM;AAAA,IAC7D,IAAI,CAAC;AAAA,MACJ,MAAM,IAAI,UAAU,wCAAwC;AAAA,IAC7D,OAAO,OAAO,UAAU,MAAM,QAAQ,IAAI;AAAA,MACzC,MAAK,YAAY,EAAE,KAAK,GAAG,WAAW,IAAI;AAAA,MAC1C,YAAW,YAAY;AAAA,IACxB,CAAC;AAAA,IACD,MAAM,YAAY,eAAe;AAAA,IAEjC,OAAO,MAAM,gBACZ,cACA;AAAA,MACC,UAAU,SAAS;AAAA,MACnB,OAAO,SAAS;AAAA,SACZ,gBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY;AAAA,MACnD;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,SAAS,SAAS;AAAA,MAClB;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACP,GACA,qBAAoB,QAAQ,aAAa,QAAQ,eAAe,CACjE;AAAA,YACC;AAAA,IACD,MAAM,IAAG,SAAS,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC,EAAE,MACnD,MAAG;AAAA,MAAG;AAAA,KACP;AAAA;AAAA;;AC3dF,qBAAS,mBAAU;AAEnB,IAAM,WAAW,IAAI,OACpB,OAAO,0IACP,GACD;AAUO,IAAM,yBAAyB,CACrC,SACgC;AAAA,EAChC,MAAM,QAAQ,SAAS,KAAK,IAAI;AAAA,EAChC,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EACnB,WAAW,QAAQ,eAAe,aAAa,eAAe;AAAA,EAC9D,IAAI,UAA0C;AAAA,EAC9C,IAAI,WAAW;AAAA,IAAc,UAAU;AAAA,EACvC,IAAI,WAAW;AAAA,IAAgB,UAAU;AAAA,EACzC,MAAM,WACL,gBAAgB,YAAY,YAAY,OAAO,WAAW;AAAA,EAC3D,MAAM,WACL,gBAAgB,YAAY,YAAY,OAAO,WAAW;AAAA,EAE3D,OAAO;AAAA,OACF,aAAa,YAAY,CAAC,IAAI,EAAE,SAAS;AAAA,IAC7C,UAAU,OAAO,aAAa;AAAA,IAC9B,MAAM,MAAM;AAAA,IACZ;AAAA,OACI,aAAa,YAAY,CAAC,IAAI,EAAE,SAAS;AAAA,EAC9C;AAAA;AAGD,IAAM,eAAe,CAAC,UAAoB;AAAA,EACzC,MAAM,QAAQ,MACZ,IAAI,CAAC,SAAS,uBAAuB,IAAI,CAAC,EAC1C,KAAK,CAAC,cAAc,cAAc,IAAI;AAAA,EACxC,IAAI,OAAO,YAAY;AAAA,IACtB,MAAM,IAAI,MACT,2CAA2C,MAAM,MAClD;AAAA,EAED,OAAO;AAAA;AAGD,IAAM,2BAA2B,OAAO,YAMzC;AAAA,EACL,MAAM,QAAQ,QAAQ,SAAS,IAAI;AAAA,EACnC,MAAM,YAAY,QAAQ,aAAa;AAAA,EACvC,MAAM,WAAW,KAAK,IAAI,IAAI;AAAA,EAC9B,IAAI,SACH,QAAQ,eACP,MAAM,MAAK,QAAQ,OAAO,EACzB,KAAK,GAAG,WAAW,IAAI,EACvB,MAAM,MAAM,CAAC;AAAA,EAChB,IAAI,WAAW;AAAA,EACf,MAAM,OAAO,YAA0C;AAAA,IACtD,IAAI,KAAK,IAAI,IAAI;AAAA,MAChB,MAAM,IAAI,MACT,yDAAyD,cAC1D;AAAA,IACD,QAAQ,QAAQ,eAAe;AAAA,IAC/B,MAAM,WAAW,MAAM,UAAS,QAAQ,OAAO,EAAE,MAAM,MACtD,OAAO,MAAM,CAAC,CACf;AAAA,IACA,IAAI,SAAS,aAAa,QAAQ;AAAA,MACjC,SAAS;AAAA,MACT,WAAW;AAAA,IACZ;AAAA,IACA,IAAI,SAAS,aAAa,QAAQ;AAAA,MACjC,YAAY,SAAS,SAAS,MAAM,EAAE,SAAS,MAAM;AAAA,MACrD,SAAS,SAAS;AAAA,MAClB,MAAM,QAAQ,SAAS,MAAM,QAAQ;AAAA,MACrC,WAAW,MAAM,IAAI,KAAK;AAAA,MAC1B,MAAM,QAAQ,aAAa,KAAK;AAAA,MAChC,IAAI;AAAA,QAAO,OAAO;AAAA,IACnB;AAAA,IACA,MAAM,MAAM,GAAG;AAAA,IAEf,OAAO,KAAK;AAAA;AAAA,EAGb,OAAO,KAAK;AAAA;;AC5Fb,uBAAS,2BAAY;AACrB;AAAA,YACC;AAAA,cACA;AAAA,WACA;AAAA,cACA;AAAA,YACA;AAAA,QACA;AAAA,eACA;AAAA;AAED,iBAAS;AACT,oBAAS,wBAAS,qBAAY,mBAAM,sBAAU,iBAAS;;;ACXvD,uBAAS;AACT;AACA;AAAA,aACC;AAAA,kBACA;AAAA;AAAA;AAID,qBAAS;AAUT,IAAM,cAAc,CAAC,WACpB,IAAI,QAAc,CAAC,UAAS,WAAW;AAAA,EACtC,OAAO,MAAM,CAAC,UAAU;AAAA,IACvB,IAAI;AAAA,MAAO,OAAO,KAAK;AAAA,IAClB;AAAA,eAAQ;AAAA,GACb;AAAA,CACD;AAEF,IAAM,SAAS,CAAC,QAAgC,SAC/C,IAAI,QAAgB,CAAC,UAAS,WAAW;AAAA,EACxC,OAAO,KAAK,SAAS,MAAM;AAAA,EAC3B,OAAO,OAAO,MAAM,WAAW,MAAM;AAAA,IACpC,OAAO,IAAI,SAAS,MAAM;AAAA,IAC1B,MAAM,UAAU,OAAO,QAAQ;AAAA,IAC/B,IAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAAA,MAC5C,OACC,IAAI,MAAM,iDAAiD,CAC5D;AAAA,MAEA;AAAA,IACD;AAAA,IACA,SAAQ,QAAQ,IAAI;AAAA,GACpB;AAAA,CACD;AAEF,IAAM,oBAAoB,YAAY;AAAA,EACrC,MAAM,QAAQ,gBAAgB;AAAA,EAC9B,MAAM,OAAO,MAAM,IAAI,QAAgB,CAAC,UAAS,WAAW;AAAA,IAC3D,MAAM,KAAK,SAAS,MAAM;AAAA,IAC1B,MAAM,OAAO,GAAG,aAAa,MAAM;AAAA,MAClC,MAAM,UAAU,MAAM,QAAQ;AAAA,MAC9B,IAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAAA,QAC5C,OACC,IAAI,MAAM,gDAAgD,CAC3D;AAAA,QAEA;AAAA,MACD;AAAA,MACA,SAAQ,QAAQ,IAAI;AAAA,KACpB;AAAA,GACD;AAAA,EACD,MAAM,YAAY,KAAK;AAAA,EAEvB,OAAO;AAAA;AAGD,IAAM,iCAAiC,CAAC,UAAkB;AAAA,EAChE,MAAM,aAAa,MAAM,KAAK;AAAA,EAC9B,IAAI,CAAC,cAAc,WAAW,SAAS,OAAO,aAAa,KAAK,UAAU;AAAA,IACzE,MAAM,IAAI,UACT,qDACD;AAAA,EAED,OAAO;AAAA;AAED,IAAM,uCAAuC,CAAC,UAAkB;AAAA,EACtE,MAAM,aAAa,MAAM,KAAK;AAAA,EAC9B,IAAI,CAAC,cAAc,WAAW,SAAS,OAAO,YAAY,KAAK,UAAU;AAAA,IACxE,MAAM,IAAI,UACT,gEACD;AAAA,EAED,OAAO;AAAA;AAGR,IAAM,aAAa,CAAC,UAA4B,MAAc,SAAiB;AAAA,EAC9E,MAAM,MAAM,IAAI,IAAI,GAAG,wBAAwB,MAAM;AAAA,EACrD,MAAM,iBAAiB,+BAA+B,IAAI;AAAA,EAC1D,IAAI,WACH,KAAK,cAAc,MAAM,IAAI,IAAI,oBAAoB;AAAA,EAEtD,OAAO;AAAA;AAGD,IAAM,qCAAqC,OAAO,YAGX;AAAA,EAC7C,MAAM,cAAc,IAAI,gBACvB,MAAM,UAAS,QAAQ,wBAAwB,CAChD;AAAA,EACA,MAAM,mBAAmB,YAAY;AAAA,EACrC,MAAM,QAAQ,YAAW,EAAE,WAAW,KAAK,EAAE;AAAA,EAC7C,MAAM,kBAAkB,IAAI;AAAA,EAC5B,MAAM,SAAS,aAAa,CAAC,SAAS,aAAa;AAAA,IAClD,IAAI,QAAQ,WAAW,SAAS,QAAQ,QAAQ,iBAAiB;AAAA,MAChE,SAAS,UAAU,KAAK;AAAA,QACvB,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,MACjB,CAAC;AAAA,MACD,SAAS,IAAI,YAAY;AAAA,MAEzB;AAAA,IACD;AAAA,IACA,SAAS,UAAU,KAAK;AAAA,MACvB,iBAAiB;AAAA,MACjB,uBACC;AAAA,MACD,kBAAkB,OAAO,iBAAiB,UAAU;AAAA,MACpD,gBAAgB;AAAA,MAChB,0BAA0B;AAAA,IAC3B,CAAC;AAAA,IACD,SAAS,IAAI,gBAAgB;AAAA,GAC7B;AAAA,EACD,MAAM,OAAO,MAAM,kBAAkB;AAAA,EACrC,MAAM,OAAO,QAAQ,IAAI;AAAA,EACzB,MAAM,MAAM,WAAW,QAAQ,QAAQ,aAAa,IAAI;AAAA,EACxD,IAAI,WAAW;AAAA,EAEf,OAAO;AAAA,IACN,KAAK,IAAI;AAAA,IACT,OAAO,MAAM,YAAY,MAAM;AAAA,EAChC;AAAA;AAGM,IAAM,2BAA2B,OAAO,YAGJ;AAAA,EAC1C,MAAM,SAAS,gBAAgB,CAAC,eAAe;AAAA,IAC9C,MAAM,WAAW,WAAW;AAAA,MAC3B,MAAM;AAAA,MACN,MAAM,QAAQ;AAAA,IACf,CAAC;AAAA,IACD,WAAW,KAAK,QAAQ;AAAA,IACxB,SAAS,KAAK,UAAU;AAAA,IACxB,MAAM,YAAY,MAAM;AAAA,MACvB,WAAW,QAAQ;AAAA,MACnB,SAAS,QAAQ;AAAA;AAAA,IAElB,WAAW,KAAK,SAAS,SAAS;AAAA,IAClC,SAAS,KAAK,SAAS,SAAS;AAAA,GAChC;AAAA,EACD,MAAM,OAAO,QAAQ,QAAQ,UAAU;AAAA,EAEvC,OAAO,EAAE,OAAO,MAAM,YAAY,MAAM,EAAE;AAAA;;;ADhI3C;AAEO,IAAM,8BAA8B;AAE3C,IAAM,kBAAkB;AACxB,IAAM,eAAe;AACrB,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AA2I5B,IAAM,YAAW,CAAC,UACjB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAEpE,IAAM,cAAa,OAAO,SAAiB;AAAA,EAC1C,IAAI;AAAA,IACH,MAAM,QAAO,IAAI;AAAA,IAEjB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,IAAM,kBAAiB,CAAC,WAAyB,QAAQ,eAAe;AAExE,IAAM,kBAAiB,CACtB,SACA,UAAqC,CAAC,MAClC;AAAA,EACJ,IAAI;AAAA,IACH,MAAM,SAAS,IAAI,UAAU,SAAS;AAAA,MACrC,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ;AAAA,MACb,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,IACT,CAAC;AAAA,IAED,OAAO;AAAA,MACN,UAAU,OAAO;AAAA,MACjB,QAAQ,OAAO,OAAO,SAAS;AAAA,MAC/B,QAAQ,OAAO,OAAO,SAAS;AAAA,IAChC;AAAA,IACC,OAAO,OAAO;AAAA,IACf,OAAO;AAAA,MACN,UAAU;AAAA,MACV,QAAQ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC7D,QAAQ;AAAA,IACT;AAAA;AAAA;AAIF,IAAM,cAAa,OAClB,SACA,UAAqC,CAAC,MAClC;AAAA,EACJ,MAAM,WAAU,IAAI,MAAM,SAAS;AAAA,IAClC,KAAK,QAAQ;AAAA,IACb,KAAK,QAAQ;AAAA,IACb,QAAQ,QAAQ;AAAA,IAChB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,EACT,CAAC;AAAA,EAED,OAAO,SAAQ;AAAA;AAGhB,IAAM,eAAe,CACpB,SACA,UAAqC,CAAC,MAClC;AAAA,EACJ,IAAI,MAAM,SAAS;AAAA,IAClB,KAAK,QAAQ;AAAA,IACb,KAAK,QAAQ;AAAA,IACb,QAAQ,QAAQ;AAAA,IAChB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,EACT,CAAC;AAAA;AAGF,IAAM,eAAe,OACpB,QACA,WACI;AAAA,EACJ,MAAM,SAAS,OAAO,UAAU;AAAA,EAChC,MAAM,UAAU,IAAI;AAAA,EACpB,IAAI,WAAW;AAAA,EACf,MAAM,OAAO,YAA2B;AAAA,IACvC,QAAQ,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,IAC1C,IAAI;AAAA,MAAM;AAAA,IACV,YAAY,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAAA,IAClD,MAAM,QAAQ,SAAS,MAAM,QAAQ;AAAA,IACrC,WAAW,MAAM,IAAI,KAAK;AAAA,IAC1B,MAAM,QAAQ,MAAM;AAAA,IAEpB,MAAM,KAAK;AAAA;AAAA,EAEZ,IAAI;AAAA,IACH,MAAM,KAAK;AAAA,IACX,YAAY,QAAQ,OAAO;AAAA,IAC3B,IAAI;AAAA,MAAU,OAAO,QAAQ;AAAA,YAC5B;AAAA,IACD,OAAO,YAAY;AAAA;AAAA;AAIrB,IAAM,yBAAyB,CAC9B,SACA,SACA,WAC0B;AAAA,EAC1B,MAAM,WAAU,IAAI,MAAM,SAAS;AAAA,IAClC,KAAK,QAAQ;AAAA,IACb,KAAK,QAAQ;AAAA,IACb,QAAQ,QAAQ;AAAA,IAChB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,EACT,CAAC;AAAA,EACI,aAAa,SAAQ,QAAQ,MAAM;AAAA,EACnC,aAAa,SAAQ,QAAQ,MAAM;AAAA,EAExC,OAAO;AAAA,IACN,OAAO,YAAY;AAAA,MAClB,IAAI;AAAA,QACH,SAAQ,KAAK;AAAA,QACZ,MAAM;AAAA,MAGR,MAAM,SAAQ,OAAO,MAAM,MAAG;AAAA,QAAG;AAAA,OAAS;AAAA;AAAA,EAE5C;AAAA;AAGD,IAAM,kBAAiB,OACtB,SACA,OACA,KACA,YACI;AAAA,EACJ,MAAM,WAAW,MAAM,IAAI,SAAS,OAAO;AAAA,EAC3C,IAAI,aAAa;AAAA,IAChB,MAAM,IAAI,MAAM,GAAG,4BAA4B,WAAW;AAAA;AAG5D,IAAM,iCAAiC,OACtC,SACA,MACA,KACA,QACI;AAAA,EACJ,IAAI,CAAC,QAAQ;AAAA,IAAO;AAAA,EACpB,IAAI,CAAC,QAAQ,0BAA0B;AAAA,IACtC,MAAM,IAAI,MACT,yEACD;AAAA,EACD;AAAA,EACA,MAAM,gBACL;AAAA,IACC,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACT,GACA,sCACA,KACA,EAAE,QAAQ,QAAQ,OAAO,CAC1B;AAAA,EACA,IACC,8EACD;AAAA;AAGD,IAAM,mBAAmB,CACxB,SACA,MACA,aAEA,WACG;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ,OAAO;AAChB,IACC;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ,OAAO;AAChB;AAEH,IAAM,yBAAyB,CAC9B,QACA,UACI;AAAA,EACJ,IAAI,OAAO,aAAa,GAAG;AAAA,IAC1B,MAAM,IAAI,MACT,GAAG,iBAAiB,OAAO,OAAO,KAAK,KAAK,OAAO,OAAO,KAAK,KAAK,UAAU,OAAO,YACtF;AAAA,EACD;AAAA,EAEA,OAAO,OAAO,OAAO,KAAK;AAAA;AAG3B,IAAM,YAAY,CAAC,QAAgB,UAAkB;AAAA,EACpD,IAAI;AAAA,IACH,MAAM,SAAkB,KAAK,MAAM,MAAM;AAAA,IACzC,IAAI,UAAS,MAAM;AAAA,MAAG,OAAO;AAAA,IAC5B,MAAM;AAAA,EAGR,MAAM,IAAI,MAAM,WAAW,yBAAyB;AAAA;AAG9C,IAAM,sBAAsB,CAAC,WAAmB;AAAA,EACtD,MAAM,SAAS,UAAU,QAAQ,aAAa;AAAA,EAC9C,MAAM,QAAQ,OAAO;AAAA,EACrB,IAAI,CAAC,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO,CAAC;AAAA,EAEnC,OAAO,MAAM,QAAQ,CAAC,SAAS;AAAA,IAC9B,IAAI,CAAC,UAAS,IAAI;AAAA,MAAG,OAAO,CAAC;AAAA,IAC7B,QAAQ,eAAe;AAAA,IACvB,QAAQ,SAAS;AAAA,IAEjB,OAAO,OAAO,eAAe,YAAY,OAAO,SAAS,WACtD,CAAC,EAAE,YAAY,KAAK,CAAC,IACrB,CAAC;AAAA,GACJ;AAAA;AAEK,IAAM,mBAAmB,CAAC,WAAmB;AAAA,EACnD,MAAM,SAAS,UAAU,QAAQ,SAAS;AAAA,EAC1C,QAAQ,aAAa;AAAA,EACrB,IAAI,CAAC,MAAM,QAAQ,QAAQ;AAAA,IAAG,OAAO,CAAC;AAAA,EAEtC,OAAO,SAAS,QAAQ,CAAC,YAAY;AAAA,IACpC,IAAI,CAAC,UAAS,OAAO;AAAA,MAAG,OAAO,CAAC;AAAA,IAChC,QAAQ,eAAe;AAAA,IACvB,QAAQ,SAAS;AAAA,IACjB,QAAQ,YAAY;AAAA,IACpB,IACC,OAAO,eAAe,YACtB,OAAO,SAAS,YAChB,OAAO,YAAY;AAAA,MAEnB,OAAO,CAAC;AAAA,IAET,OAAO;AAAA,MACN;AAAA,QACC;AAAA,QACA,aAAa,QAAQ,gBAAgB;AAAA,QACrC;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAAA,GACA;AAAA;AAEK,IAAM,qBAAqB,CAAC,WAAmB;AAAA,EACrD,MAAM,SAAS,UAAU,QAAQ,QAAQ;AAAA,EACzC,QAAQ,YAAY;AAAA,EACpB,IAAI,CAAC,UAAS,OAAO;AAAA,IAAG,OAAO,CAAC;AAAA,EAEhC,OAAO,OAAO,QAAQ,OAAO,EAAE,QAAQ,EAAE,SAAS,YAAY;AAAA,IAC7D,IAAI,CAAC,MAAM,QAAQ,MAAM;AAAA,MAAG,OAAO,CAAC;AAAA,IAEpC,OAAO,OAAO,QAAQ,CAAC,WAAW;AAAA,MACjC,IAAI,CAAC,UAAS,MAAM;AAAA,QAAG,OAAO,CAAC;AAAA,MAC/B,QAAQ,SAAS;AAAA,MACjB,QAAQ,UAAU;AAAA,MAClB,QAAQ,SAAS;AAAA,MACjB,IACC,OAAO,SAAS,YAChB,OAAO,UAAU,YACjB,OAAO,SAAS;AAAA,QAEhB,OAAO,CAAC;AAAA,MAET,OAAO;AAAA,QACN;AAAA,UACC,aAAa,OAAO,gBAAgB;AAAA,UACpC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,KACA;AAAA,GACD;AAAA;AAGF,IAAM,eAAe,CAAC,YACrB,QAAQ,MAAM,GAAG,EAAE,IAAI,CAAC,SAAS,OAAO,IAAI,CAAC;AAE9C,IAAM,kBAAkB,CAAC,MAAc,UAAkB;AAAA,EACxD,MAAM,YAAY,aAAa,IAAI;AAAA,EACnC,MAAM,aAAa,aAAa,KAAK;AAAA,EACrC,MAAM,SAAS,KAAK,IAAI,UAAU,QAAQ,WAAW,MAAM;AAAA,EAC3D,SAAS,QAAQ,EAAG,QAAQ,QAAQ,SAAS;AAAA,IAC5C,MAAM,cAAc,UAAU,UAAU,MAAM,WAAW,UAAU;AAAA,IACnE,IAAI,eAAe;AAAA,MAAG,OAAO;AAAA,EAC9B;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,mBAAmB,CAAC,aACzB,SACE,OACA,CAAC,YACA,QAAQ,eACR,QAAQ,WAAW,SAAS,iBAAiB,CAC/C,EACC,KAAK,CAAC,MAAM,UAAU,gBAAgB,MAAM,SAAS,KAAK,OAAO,CAAC,EAAE;AAEvE,IAAM,mBAAmB,CAAC,SACzB,OAAO,kBAAkB,KAAK,IAAI,IAAI,MAAM,CAAC;AAE9C,IAAM,sBAAsB,CAAC,UAC5B,MACE,OAAO,CAAC,SAAS,KAAK,KAAK,WAAW,QAAQ,CAAC,EAC/C,KAAK,CAAC,MAAM,UAAU;AAAA,EACtB,MAAM,aACL,iBAAiB,MAAM,IAAI,IAAI,iBAAiB,KAAK,IAAI;AAAA,EAC1D,IAAI,eAAe;AAAA,IAAG,OAAO;AAAA,EAC7B,MAAM,WAAW,MAAM,KAAK,SAAS,KAAK,IAAI,IAAI;AAAA,EAClD,MAAM,UAAU,KAAK,KAAK,SAAS,KAAK,IAAI,IAAI;AAAA,EAEhD,OAAO,WAAW;AAAA,CAClB,EAAE;AAEL,IAAM,eAAe,CAAC,gBAAwB;AAAA,EAC7C,MAAM,OAAO,MAAK,aAAa,eAAe,UAAU,iBAAiB;AAAA,EAEzE,OAAO;AAAA,IACN,cAAc,MAAK,MAAM,yBAAyB;AAAA,IAClD,YAAY,MAAK,MAAM,mBAAmB;AAAA,IAC1C,SAAS,MAAK,MAAM,cAAc;AAAA,IAClC;AAAA,EACD;AAAA;AAGD,IAAM,kBAAkB,CAAC,gBACxB,MAAK,aAAa,eAAe,UAAU,uBAAuB;AAEnE,IAAM,WAAW,CAAC,MAAc,SAAiB;AAAA,EAChD,MAAM,QAAQ,UAAS,SAAQ,IAAI,GAAG,SAAQ,IAAI,CAAC;AAAA,EAEnD,OACC,UAAU,MACT,CAAC,MAAM,WAAW,KAAK,MAAK,KAAK,UAAU,QAAQ,CAAC,YAAW,KAAK;AAAA;AAIvE,IAAM,eAAe,CAAC,UAAyC;AAAA,EAC9D,IAAI,CAAC,UAAS,KAAK,KAAK,MAAM,WAAW;AAAA,IAAoB,OAAO;AAAA,EACpE,QAAQ,qBAAqB;AAAA,EAC7B,QAAQ,mBAAmB;AAAA,EAC3B,QAAQ,aAAa;AAAA,EACrB,QAAQ,qBAAqB;AAAA,EAC7B,IACC,OAAO,qBAAqB,YAC5B,OAAO,mBAAmB,YAC1B,OAAO,aAAa,YACpB,OAAO,qBAAqB;AAAA,IAE5B,OAAO;AAAA,EAER,OAAO;AAAA,IACN;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA;AAGM,IAAM,8BAA8B,OAAO,gBAAwB;AAAA,EACzE,MAAM,QAAQ,aAAa,WAAW;AAAA,EACtC,IAAI,CAAE,MAAM,YAAW,MAAM,OAAO,GAAI;AAAA,IACvC,MAAM,IAAG,MAAM,MAAM,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,IAErD,OAAO;AAAA,EACR;AAAA,EACA,MAAM,UAAU,MAAM,UAAS,MAAM,SAAS,MAAM,EAClD,KAAK,CAAC,WAAW,aAAa,KAAK,MAAM,MAAM,CAAC,CAAC,EACjD,MAAM,MAAM,IAAI;AAAA,EAClB,IACC,CAAC,WACD,CAAC,SAAS,aAAa,QAAQ,gBAAgB,KAC/C,CAAC,SAAS,aAAa,QAAQ,QAAQ,KACvC,CAAC,SAAS,MAAM,MAAM,QAAQ,gBAAgB,KAC9C,CAAC,SAAS,MAAM,MAAM,QAAQ,cAAc,GAC3C;AAAA,IACD,MAAM,IAAI,MACT,iDAAiD,MAAM,UACxD;AAAA,EACD;AAAA,EACA,IAAI,MAAM,YAAW,QAAQ,gBAAgB;AAAA,IAC5C,MAAM,UAAS,QAAQ,kBAAkB,QAAQ,gBAAgB;AAAA,EAClE,IAAI,MAAM,YAAW,QAAQ,cAAc;AAAA,IAC1C,MAAM,UAAS,QAAQ,gBAAgB,QAAQ,QAAQ;AAAA,EACxD,MAAM,IAAG,MAAM,MAAM,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,EAErD,OAAO;AAAA;AAGR,IAAM,0BAA0B,CAAC,QAAgB,cAAuB;AAAA,EACvE,IAAI,CAAC;AAAA,IAAW,OAAO;AAAA,EACvB,MAAM,iBACL;AAAA,EACD,IAAI,eAAe,KAAK,MAAM;AAAA,IAC7B,OAAO,OAAO,QAAQ,gBAAgB,WAAW;AAAA,EAClD,IAAI,oDAAoD,KAAK,MAAM;AAAA,IAClE,OAAO;AAAA,EACR,MAAM,YAAY;AAAA,EAClB,IAAI,UAAU,KAAK,MAAM;AAAA,IACxB,OAAO,OAAO,QACb,WACA;AAAA;AAAA,UACD;AAAA,EAED,OAAO,OAAO,QACb,WACA;AAAA;AAAA;AAAA;AAAA;AAAA,SACD;AAAA;AAGD,IAAM,qBAAqB,OAC1B,SACA,MACA,OACA,aAAa,gBACT;AAAA,EACJ,MAAM,QAAQ,aAAa,QAAQ,WAAW;AAAA,EAC9C,MAAM,4BAA4B,QAAQ,WAAW;AAAA,EACrD,MAAM,mBAAmB,MACxB,QAAQ,iBACR,OACA,OACA,uBACD;AAAA,EACA,MAAM,WAAW,MAAK,QAAQ,iBAAiB,OAAO,OAAO,YAAY;AAAA,EACzE,OAAO,cAAc,cAAc,MAAM,QAAQ,IAAI;AAAA,IACpD,UAAS,kBAAkB,MAAM;AAAA,IACjC,UAAS,UAAU,MAAM;AAAA,EAC1B,CAAC;AAAA,EACD,MAAM,SAAkB,KAAK,MAAM,YAAY;AAAA,EAC/C,IAAI,CAAC,UAAS,MAAM;AAAA,IACnB,MAAM,IAAI,MACT,sCAAsC,mBACvC;AAAA,EACD,MAAM,OAAM,MAAM,MAAM,EAAE,WAAW,KAAK,CAAC;AAAA,EAC3C,MAAM,QAAQ,IAAI;AAAA,IACjB,WAAU,MAAM,cAAc,cAAc,EAAE,MAAM,KAAK,CAAC;AAAA,IAC1D,WAAU,MAAM,YAAY,YAAY,EAAE,MAAM,KAAK,CAAC;AAAA,EACvD,CAAC;AAAA,EACD,MAAM,UAAyB;AAAA,IAC9B,kBAAkB,MAAM;AAAA,IACxB,QAAQ;AAAA,IACR,gBAAgB,MAAM;AAAA,IACtB;AAAA,IACA;AAAA,EACD;AAAA,EACA,MAAM,WAAU,MAAM,SAAS,GAAG,KAAK,UAAU,SAAS,MAAM,IAAI;AAAA,GAAO;AAAA,IAC1E,MAAM;AAAA,EACP,CAAC;AAAA,EACD,MAAM,iBAAiB,IAAI,IAC1B,GAAG,QAAQ,UAAU,sBAAsB,OAAO,QAAQ,OAAO,OAClE;AAAA,EACA,eAAe,WACd,MAAK,UAAU,MAAM,IAAI,IAAI,gBAAgB;AAAA,EAC9C,eAAe,aAAa,IAAI,qBAAqB,eAAe;AAAA,EACpE,MAAM,iBAAiB,OAAO;AAAA,EAC9B,OAAO,SAAS;AAAA,OACX,UAAS,cAAc,IAAI,iBAAiB,CAAC;AAAA,IACjD,WAAW,CAAC;AAAA,IACZ,KAAK,eAAe;AAAA,EACrB;AAAA,EACA,MAAM,QAAQ,IAAI;AAAA,IACjB,WAAU,kBAAkB,GAAG,KAAK,UAAU,QAAQ,MAAM,IAAI;AAAA,CAAK;AAAA,IACrE,WAAU,UAAU,wBAAwB,YAAY,CAAC,KAAK,CAAC;AAAA,EAChE,CAAC;AAAA;AAGF,IAAM,mBAAmB,CAAC,UAA0C;AAAA,EACnE,IAAI,CAAC,UAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAC7B,QAAQ,OAAO,aAAa,QAAQ,kBAAkB;AAAA,EACtD,IACC,WAAW,uBACX,OAAO,UAAU,YACjB,OAAO,gBAAgB,YACvB,CAAC,UAAS,aAAa,KACvB,CAAC,OAAO,OAAO,aAAa,EAAE,MAC7B,CAAC,aAAa,OAAO,aAAa,QACnC;AAAA,IAEA,OAAO;AAAA,EAER,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe,OAAO,YACrB,OAAO,QAAQ,aAAa,EAAE,IAAI,EAAE,MAAM,cAAc;AAAA,MACvD;AAAA,MACA,OAAO,QAAQ;AAAA,IAChB,CAAC,CACF;AAAA,EACD;AAAA;AAGD,IAAM,kBAAkB,CAAC,gBACxB,UAAS,gBAAgB,WAAW,GAAG,MAAM,EAC3C,KAAK,CAAC,WAAW,iBAAiB,KAAK,MAAM,MAAM,CAAC,CAAC,EACrD,MAAM,MAAM,IAAI;AAEnB,IAAM,mBAAmB,OAAO,aAAqB,UAA0B;AAAA,EAC9E,MAAM,cAAc,gBAAgB,WAAW;AAAA,EAC/C,MAAM,YAAY,GAAG,eAAe,QAAQ,OAAO,YAAW;AAAA,EAC9D,MAAM,OAAM,SAAQ,WAAW,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACrD,IAAI;AAAA,IACH,MAAM,WAAU,WAAW,GAAG,KAAK,UAAU,OAAO,MAAM,IAAI;AAAA,GAAO;AAAA,MACpE,MAAM;AAAA,IACP,CAAC;AAAA,IACD,MAAM,QAAO,WAAW,WAAW;AAAA,YAClC;AAAA,IACD,MAAM,IAAG,WAAW,EAAE,OAAO,KAAK,CAAC,EAAE,MAAM,MAAG;AAAA,MAAG;AAAA,KAAS;AAAA;AAAA;AAIrD,IAAM,mCAAmC,OAC/C,SACA,UAA6C,CAAC,MAC1C,oCAAoC,QAAQ,iBAAiB,OAAO;AAEzE,IAAM,qBAAqB,CAC1B,OACA,YACI;AAAA,EACJ,MAAM,SAAS,QAAQ;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EAED,OAAO,mBACN,uBAAuB,QAAQ,yBAAyB,CACzD;AAAA;AAGD,IAAM,yBAAyB,OAC9B,SACA,YACI;AAAA,EACJ,MAAM,WAAW,iBAChB,uBACC,QAAQ,CAAC,QAAQ,OAAO,UAAU,QAAQ,YAAY,IAAI,CAAC,GAC3D,uBACD,CACD;AAAA,EACA,MAAM,UAAU,iBAAiB,QAAQ;AAAA,EACzC,IAAI,CAAC;AAAA,IACJ,MAAM,IAAI,MACT,2EACD;AAAA,EACD,OAAO,YAAY,mBAAmB,QAAQ,OAAO,OAAO,EAC1D,OACA,CAAC,WACA,OAAO,eACP,OAAO,SAAS,+BAChB,OAAO,YAAY,QAAQ,UAC7B,EACC,KACA,CAAC,MAAM,UACN,OAAO,MAAM,UAAU,QAAQ,IAC/B,OAAO,KAAK,UAAU,QAAQ,CAChC;AAAA,EACD,IAAI;AAAA,IAAU,OAAO,EAAE,SAAS,OAAO,QAAQ,SAAS;AAAA,EACxD,MAAM,QAAQ,oBACb,uBACC,QAAQ,CAAC,QAAQ,OAAO,UAAU,QAAQ,eAAe,IAAI,CAAC,GAC9D,2BACD,CACD;AAAA,EACA,MAAM,OAAO,oBAAoB,KAAK;AAAA,EACtC,IAAI,CAAC;AAAA,IACJ,MAAM,IAAI,MAAM,gDAAgD;AAAA,EACjE,OAAO,QAAQ,uBACd,QAAQ;AAAA,IACP,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL,QAAQ;AAAA,EACT,CAAC,GACD,wBACD,EAAE,MAAM,KAAK;AAAA,EACb,IAAI,CAAC;AAAA,IACJ,MAAM,IAAI,MAAM,mDAAmD;AAAA,EAEpE,OAAO;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,MACP,aAAa;AAAA,MACb,MAAM;AAAA,MACN,SAAS,QAAQ;AAAA,MACjB,OAAO;AAAA,MACP;AAAA,IACD;AAAA,EACD;AAAA;AAGD,IAAM,yBAAyB,OAC9B,SACA,MACA,SACA,OACA,WACI;AAAA,EACJ,MAAM,WAAW,KAAK,IAAI,IAAI;AAAA,EAC9B,MAAM,OAAO,YAA2B;AAAA,IACvC,gBAAe,MAAM;AAAA,IACrB,MAAM,SAAS,mBAAmB,QAAQ,OAAO,OAAO,EAAE,KACzD,CAAC,cAAc,UAAU,SAAS,IACnC;AAAA,IACA,IAAI,QAAQ,UAAU;AAAA,MAAU;AAAA,IAChC,IAAI,KAAK,IAAI,IAAI;AAAA,MAChB,MAAM,IAAI,MACT,iBAAiB,sCAAsC,kBAAkB,QAC1E;AAAA,IACD,MAAM,MAAM,YAAY;AAAA,IAExB,MAAM,KAAK;AAAA;AAAA,EAGZ,OAAO,KAAK;AAAA;AAGb,IAAM,gBAAgB,CACrB,SACA,QACA,YACI;AAAA,EACJ,IAAI,OAAO,UAAU;AAAA,IAAU;AAAA,EAC/B,uBACC,QAAQ,CAAC,QAAQ,OAAO,UAAU,QAAQ,OAAO,IAAI,CAAC,GACtD,oBACD;AAAA;AAGD,IAAM,uBAAuB,CAC5B,SACA,MACA,YACI;AAAA,EACJ,MAAM,SAAS,QAAQ;AAAA,IACtB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ,OAAO;AAAA,IACf;AAAA,EACD,CAAC;AAAA,EAED,OAAO,OAAO,aAAa,KAAK,OAAO,OAAO,KAAK,IAChD,OAAO,OAAO,KAAK,IACnB;AAAA;AAGJ,IAAM,4BAA4B,CACjC,SACA,YACA,YACI;AAAA,EACJ,MAAM,SAAS,QAAQ;AAAA,IACtB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EACD,IAAI,OAAO,aAAa;AAAA,IACvB,MAAM,IAAI,MACT,uBAAuB,KAAK,UAAU,UAAU,qBAAqB,OAAO,OAAO,KAAK,KAAK,OAAO,OAAO,KAAK,KAAK,sFACtH;AAAA;AAGF,IAAM,4BAA4B,CACjC,SACA,YACA,YACI;AAAA,EACJ,MAAM,SAAS,QAAQ;AAAA,IACtB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EAED,OACC,OAAO,aAAa,KAAK,OAAO,OAAO,SAAS,QAAQ,OAAO,KAAK;AAAA;AAItE,IAAM,mBAAmB,OACxB,SACA,MACA,aACA,KACA,WACI;AAAA,EACJ,MAAM,kBAAkB,MACvB,QAAQ,aACR,eACA,UACA,oBACA,YAAW,QAAQ,EACjB,OAAO,QAAQ,OAAO,KAAK,EAC3B,OAAO,KAAK,EACZ,MAAM,GAAG,EAAE,CACd;AAAA,EACA,MAAM,OAAM,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,EAChD,MAAM,gBACL;AAAA,IACC,QAAQ;AAAA,IACR;AAAA,IACA,MAAK,QAAQ,iBAAiB,OAAO,iBAAiB;AAAA,IACtD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,6BAA6B;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,EACD,GACA,uBACA,KACA,EAAE,KAAK,QAAQ,iBAAiB,OAAO,CACxC;AAAA,EACA,MAAM,UAAU,MACf,iBACA,SACA,YACA,yBACA,SACD;AAAA,EACA,IAAI,CAAE,MAAM,YAAW,OAAO;AAAA,IAC7B,MAAM,IAAI,MACT,8CAA8C,UAC/C;AAAA,EAED,OAAO;AAAA;AAGR,IAAM,2BAA2B,OAChC,SACA,YACA,KACA,WACI;AAAA,EACJ,MAAM,kBAAkB,MACvB,QAAQ,aACR,eACA,UACA,oBACA,YAAW,QAAQ,EACjB,OAAO,QAAQ,OAAO,KAAK,EAC3B,OAAO,KAAK,EACZ,MAAM,GAAG,EAAE,CACd;AAAA,EACA,MAAM,OAAM,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,EAChD,MAAM,gBACL;AAAA,IACC,QAAQ;AAAA,IACR;AAAA,IACA,MAAK,QAAQ,iBAAiB,OAAO,iBAAiB;AAAA,IACtD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,GACA,oHACA,KACA,EAAE,KAAK,QAAQ,iBAAiB,OAAO,CACxC;AAAA,EACA,MAAM,UAAU,MACf,iBACA,SACA,YACA,kBACA,SACD;AAAA,EACA,IAAI,CAAE,MAAM,YAAW,OAAO;AAAA,IAC7B,MAAM,IAAI,MACT,oDAAoD,UACrD;AAAA,EAED,OAAO;AAAA;AAGR,IAAM,4BAA4B,OAAO,YAUnC;AAAA,EACL,MAAM,WACL,QAAQ,OAAO,UAAU,QAAQ,QAAQ,OAAO,SAChD,QAAQ,MAAM,gBAAgB,QAAQ,eACtC,QAAQ,MAAM,cAAc,QAAQ,gBACnC,QAAQ,eACT,0BACC,QAAQ,SACR,QAAQ,YACR,QAAQ,OACT;AAAA,EACD,IAAI,UAAU;AAAA,IACb,QAAQ,IACP,+FACD;AAAA,IAEA,OAAO;AAAA,EACR;AAAA,EACA,QAAQ,IACP,gFACD;AAAA,EACA,QAAQ,WAAW,UAAU;AAAA,EAC7B,MAAM,UAAU,MAAM,yBACrB,QAAQ,SACR,QAAQ,YACR,QAAQ,KACR,QAAQ,MACT;AAAA,EACA,gBAAe,QAAQ,MAAM;AAAA,EAC7B,QAAQ,WAAW,YAAY;AAAA,EAC/B,MAAM,gBACL;AAAA,IACC,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,EACD,GACA,wCACA,QAAQ,KACR,EAAE,QAAQ,QAAQ,OAAO,CAC1B;AAAA,EACA,MAAM,iBAAiB,QAAQ,QAAQ,aAAa;AAAA,IACnD,OAAO,QAAQ,QAAQ,OAAO;AAAA,IAC9B,aAAa,QAAQ;AAAA,IACrB,QAAQ;AAAA,IACR,eAAe;AAAA,SACV,QAAQ,OAAO,UAAU,QAAQ,QAAQ,OAAO,QACjD,QAAQ,MAAM,gBACd,CAAC;AAAA,OACH,QAAQ,aAAa,QAAQ;AAAA,IAC/B;AAAA,EACD,CAAC,EAAE,MAAM,CAAC,UACT,QAAQ,IACP,wCAAwC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAC9F,CACD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,oBAAoB,OAAO,YAU3B;AAAA,EACL,MAAM,YAAY,qBACjB,QAAQ,SACR,QAAQ,MACR,QAAQ,OACT;AAAA,EACA,MAAM,WACL,QAAQ,OAAO,UAAU,QAAQ,QAAQ,OAAO,SAChD,QAAQ,MAAM,gBAAgB,QAAQ,eACtC,cAAc,aACd,QAAQ,MAAM,cAAc,QAAQ,UAAU;AAAA,EAC/C,IAAI,UAAU;AAAA,IACb,QAAQ,IACP,kCAAkC,QAAQ,wCAC3C;AAAA,IAEA,OAAO;AAAA,EACR;AAAA,EACA,QAAQ,IACP,sEACD;AAAA,EACA,QAAQ,WAAW,UAAU;AAAA,EAC7B,MAAM,UAAU,MAAM,iBACrB,QAAQ,SACR,QAAQ,MACR,QAAQ,aACR,QAAQ,KACR,QAAQ,MACT;AAAA,EACA,gBAAe,QAAQ,MAAM;AAAA,EAC7B,QAAQ,WAAW,YAAY;AAAA,EAC/B,MAAM,gBACL,CAAC,QAAQ,QAAQ,OAAO,UAAU,WAAW,QAAQ,MAAM,OAAO,GAClE,kCACA,QAAQ,KACR,EAAE,QAAQ,QAAQ,OAAO,CAC1B;AAAA,EACA,MAAM,UAAU,qBACf,QAAQ,SACR,QAAQ,MACR,QAAQ,OACT;AAAA,EACA,IAAI,SAAS;AAAA,IACZ,MAAM,iBAAiB,QAAQ,QAAQ,aAAa;AAAA,MACnD,OAAO,QAAQ,QAAQ,OAAO;AAAA,MAC9B,aAAa,QAAQ;AAAA,MACrB,QAAQ;AAAA,MACR,eAAe,GAAG,QAAQ,OAAO,QAAQ;AAAA,IAC1C,CAAC,EAAE,MAAM,CAAC,UACT,QAAQ,IACP,wCAAwC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAC9F,CACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,eACL;AACD,IAAM,eAAe,IAAI,OACxB,OAAO,sCACP,KACD;AACA,IAAM,YAAY;AAClB,IAAM,kBAAkB,IAAI,OAC3B,OAAO,+EACP,IACD;AAEO,IAAM,0BAA0B,CACtC,SACsC;AAAA,EACtC,MAAM,YAAY,qBAAqB,IAAI,EAAE,KAAK;AAAA,EAClD,IAAI,CAAC;AAAA,IAAW,OAAO;AAAA,EACvB,MAAM,QAAQ,gBAAgB,KAAK,SAAS;AAAA,EAC5C,MAAM,YAAY,QAAQ,IAAI,YAAY;AAAA,EAC1C,MAAM,QACL,cAAc,WACd,cAAc,WACd,cAAc,WACd,cAAc,WACX,YACA;AAAA,EAEJ,OAAO;AAAA,IACN;AAAA,IACA,SAAS,QAAQ,IAAI,KAAK,KAAK;AAAA,IAC/B,KAAK,QAAQ,IAAI,KAAK,KAAK;AAAA,EAC5B;AAAA;AAEM,IAAM,uBAAuB,CAAC,UACpC,MACE,WAAW,cAAc,mBAAmB,EAC5C,WAAW,WAAW,gBAAgB,EACtC,WAAW,cAAc,cAAc,EACvC,WAAW,WAAW,EAAE;AAE3B,IAAM,mBAAmB,CACxB,SACA,MACA,YACI;AAAA,EACJ,IAAI,CAAC,QAAQ;AAAA,IAAW,OAAO;AAAA,EAC/B,MAAM,QAAQ,QAAQ,mBAAmB;AAAA,EACzC,MAAM,UAAU,QAAQ,mBACrB;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ,OAAO;AAAA,EAChB,IACC;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EAEF,OAAO,MAAM,SAAS,EAAE,QAAQ,QAAQ,OAAO,GAAG,CAAC,SAAS;AAAA,IAC3D,MAAM,QAAQ,wBAAwB,IAAI;AAAA,IAC1C,IAAI;AAAA,MAAO,QAAQ,YAAY,KAAK;AAAA,GACpC;AAAA;AAGF,IAAM,oBAA6C;AAAA,EAClD,CAAC,WAAW,gBAAgB;AAAA,EAC5B,CAAC,eAAe,YAAY;AAAA,EAC5B,CAAC,kBAAkB,aAAa;AAAA,EAChC,CAAC,WAAW,WAAW;AAAA,EACvB,CAAC,cAAc,cAAc;AAAA,EAC7B,CAAC,mBAAmB,aAAa;AAAA,EACjC,CAAC,mBAAmB,WAAW;AAAA,EAC/B,CAAC,YAAY,OAAO;AAAA,EACpB,CAAC,cAAc,SAAS;AAAA,EACxB,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,kBAAkB,MAAM;AAC1B;AAEA,IAAM,gBAAgB,CAAC,YACtB,kBAAkB,IAAI,EAAE,OAAO,WAAW;AAAA,EACzC,MAAM,WAAW,QAAQ;AAAA,EAEzB,OAAO,aAAa,YACjB,OACA,GAAG,SAAS,kBAAkB,QAAQ;AAAA,CACzC,EACC,OAAO,CAAC,UAA2B,UAAU,IAAI,EACjD,KAAK,IAAI;AAEL,IAAM,+BAA+B,OAC3C,QACA,YACoC;AAAA,EACpC,IAAI,yBAAyB,MAAM;AAAA,IAClC,MAAM,IAAI,MAAM,2CAA2C;AAAA,EAC5D,MAAM,SAAS,QAAQ,UAAU;AAAA,EACjC,MAAM,cAAc,SAAQ,QAAQ,WAAW;AAAA,EAC/C,MAAM,SAAS,MAAM,+BAA+B,EAAE,MAAM,QAAQ,CAAC;AAAA,EACrE,MAAM,SAAS,OAAO,OACrB,CAAC,UACA,MAAM,aAAa,SACnB,EAAE,WAAW,YAAY,MAAM,OAAO,mBACrC,MAAM,WAAW,UAAU,MAAM,WAAW,OAC/C;AAAA,EACA,IAAI,OAAO,SAAS;AAAA,IACnB,MAAM,IAAI,MACT,OAAO,oCAAoC,OAAO,IAAI,GAAG,YAAY,KAAK,EAAE,KAAK,IAAI,IACtF;AAAA,EACD,MAAM,QAAQ,OAAO,KAAK,CAAC,UAAU,MAAM,OAAO,WAAW,GAAG;AAAA,EAChE,MAAM,aAAa,OAAO,KACzB,CAAC,UAAU,MAAM,OAAO,gBACzB,GAAG;AAAA,EACH,IAAI,CAAC,SAAS,CAAC;AAAA,IACd,MAAM,IAAI,MAAM,iDAAiD;AAAA,EAClE,MAAM,MAAM,MAAK,aAAa,gBAAgB,QAAQ,KAAK;AAAA,EAC3D,IAAI,CAAE,MAAM,YAAW,GAAG;AAAA,IACzB,MAAM,IAAI,MACT,iEACD;AAAA,EACD,MAAM,6BAA6B,QAAQ,EAAE,YAAY,CAAC;AAAA,EAC1D,MAAM,OAAM,OAAO,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,EACvD,MAAM,cAAc,MAAK,OAAO,iBAAiB,YAAY;AAAA,EAC7D,IAAI,CAAE,MAAM,YAAW,WAAW;AAAA,IACjC,MAAM,WACL,aACA;AAAA,CACD;AAAA,EACD,MAAM,kBAAkB,MAAK,OAAO,wBAAwB,KAAK;AAAA,EACjE,IAAI,CAAE,MAAM,YAAW,eAAe,GAAI;AAAA,IACzC,IAAI,CAAC,QAAQ;AAAA,MACZ,MAAM,IAAI,MAAM,0CAA0C;AAAA,IAC3D,MAAM,MAAM,QAAQ,OAAO;AAAA,IAC3B,IAAK,MAAM,IAAI,CAAC,KAAK,OAAO,KAAK,GAAG,EAAE,KAAK,YAAY,CAAC,MAAO;AAAA,MAC9D,MAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AAAA,EAEA,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA;AAGD,IAAM,2BAA2B,OAAO,YAQlC;AAAA,EACL,QAAQ,WAAW,YAAY;AAAA,EAC/B,0BACC,QAAQ,SACR,QAAQ,kBACR,QAAQ,OACT;AAAA,EACA,IAAI,CAAC,QAAQ,aAAa;AAAA,IACzB,OAAO;AAAA,MACN,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,MAAM,QAAQ;AAAA,IACf;AAAA,EACD,IAAI,CAAC,QAAQ,aAAa;AAAA,IACzB,MAAM,IAAI,MACT,oFACD;AAAA,EACD,QAAQ,WAAW,iBAAiB;AAAA,EACpC,MAAM,kBACL,QAAQ,aAAa,2BACrB;AAAA,EACD,MAAM,qBAAqB,MAAM,gBAAgB;AAAA,IAChD,0BAA0B,QAAQ,aAAa;AAAA,IAC/C,aAAa,QAAQ;AAAA,EACtB,CAAC;AAAA,EACD,QAAQ,IACP,2BAA2B,mBAAmB,6LAC/C;AAAA,EAEA,OAAO;AAAA,IACN;AAAA,IACA,kBAAkB;AAAA,IAClB,MAAM,QAAQ;AAAA,EACf;AAAA;AAGD,IAAM,4BAA4B,OAAO,YASnC;AAAA,EACL,QAAQ,WAAW,SAAS;AAAA,EAC5B,MAAM,UAAU,MAAM,uBACrB,QAAQ,SACR,QAAQ,OACT;AAAA,EACA,QAAQ,WAAW;AAAA,EACnB,MAAM,mBAAmB,QAAQ,WAAW,OAAO,UAAU;AAAA,EAC7D,cAAc,QAAQ,SAAS,QAAQ,QAAQ,OAAO;AAAA,EACtD,QAAQ,MAAM;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACR,CAAC;AAAA,EACD,QAAQ,WAAW,YAAY;AAAA,EAC/B,MAAM,uBACL,QAAQ,SACR,OAAO,MACP,QAAQ,SACR,QAAQ,OACR,QAAQ,aAAa,MACtB;AAAA,EACA,MAAM,gBACL,CAAC,QAAQ,QAAQ,OAAO,UAAU,cAAc,OAAO,MAAM,IAAI,GACjE,gCACA,QAAQ,KACR,EAAE,QAAQ,QAAQ,aAAa,OAAO,CACvC;AAAA,EACA,MAAM,+BACL,QAAQ,cACR,OAAO,MACP,QAAQ,KACR,QAAQ,GACT;AAAA,EAEA,OAAO,EAAE,oBAAoB,MAAM,kBAAkB,MAAM,OAAO,KAAK;AAAA;AAGjE,IAAM,6BAA6B,OACzC,YACoC;AAAA,EACpC,QAAQ,YAAY;AAAA,EACpB,MAAM,mBAAmB,QAAQ,mBAC9B,qCAAqC,QAAQ,gBAAgB,IAC7D;AAAA,EACH,MAAM,aAAa,mBAAmB,WAAW;AAAA,EACjD,MAAM,aAAa,mBAChB,+BAA+B,QAAQ,cAAc,EAAE,IACvD;AAAA,EACH,MAAM,UAAU,QAAQ,WAAW;AAAA,EACnC,MAAM,MAAM,QAAQ,OAAO;AAAA,EAC3B,MAAM,QAAQ,QAAQ,SAAS,IAAI;AAAA,EACnC,MAAM,QAAQ,QAAQ,SAAS;AAAA,EAC/B,MAAM,MAAM,QAAQ,OAAO,QAAQ;AAAA,EACnC,MAAM,YAAY,YAAY,IAAI;AAAA,EAClC,IAAI,iBAAiB,YAAY,IAAI;AAAA,EACrC,MAAM,UAAkC,CAAC;AAAA,EACzC,IAAI,QAA6B;AAAA,EACjC,MAAM,aAAa,CAAC,SAA8B;AAAA,IACjD,IAAI,SAAS,OAAO;AAAA,MACnB,QAAQ,gBAAgB,IAAI;AAAA,MAE5B;AAAA,IACD;AAAA,IACA,MAAM,MAAM,YAAY,IAAI;AAAA,IAC5B,MAAM,aAAa,MAAM;AAAA,IACzB,QAAQ,UAAU,QAAQ,UAAU,KAAK;AAAA,IACzC,QAAQ,gBAAgB;AAAA,MACvB;AAAA,MACA,OAAO;AAAA,MACP,SAAS,MAAM;AAAA,IAChB,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,QAAQ,gBAAgB,IAAI;AAAA;AAAA,EAE7B,IAAI,aAA0C;AAAA,EAC9C,IAAI,qBAA2D;AAAA,EAC/D,MAAM,YAAY,YAAY;AAAA,IAC7B,MAAM,SAAS;AAAA,IACf,aAAa;AAAA,IACb,MAAM,QAAQ,MAAM,EAAE,MAAM,MAAG;AAAA,MAAG;AAAA,KAAS;AAAA;AAAA,EAE5C,MAAM,iBAAiB,OAAO,SAAiB;AAAA,IAC9C,IAAI,oBAAoB,QAAQ,WAAW;AAAA,MAC1C,MAAM,UAAU;AAAA,MAChB,aAAa,iBAAiB,SAAS,MAAM,OAAO;AAAA,MAEpD;AAAA,IACD;AAAA,IACA,MAAM,gBACL,iBAAiB,SAAS,MAAM,qBAAqB,SAAS,GAC9D,oBACA,KACA,EAAE,QAAQ,QAAQ,OAAO,CAC1B;AAAA;AAAA,EAED,IAAI;AAAA,IACH,MAAM,4BAA4B,QAAQ,WAAW;AAAA,IACrD,gBAAe,QAAQ,MAAM;AAAA,IAC7B,WAAW,SAAS;AAAA,IACpB,MAAM,gBACL,CAAC,QAAQ,KAAK,QAAQ,KAAK,GAC3B,iCACA,KACA,EAAE,KAAK,QAAQ,aAAa,QAAQ,QAAQ,OAAO,CACpD;AAAA,IACA,WAAW,aAAa;AAAA,IACxB,IAAI,QAAQ,mBAAmB;AAAA,MAC9B,MAAM,mBACL,SACA,QAAQ,MACR,QAAQ,UAAU,MAClB,UACD;AAAA,IACD,gBAAe,QAAQ,MAAM;AAAA,IAC7B,MAAM,uBAAuB,YAAY,IAAI;AAAA,IAC7C,MAAM,qBAAqB,iCAAiC,SAAS;AAAA,MACpE,qBAAqB,QAAQ,mBAAmB;AAAA,IACjD,CAAC,EAAE,KAAK,CAAC,iBAAgB;AAAA,MACxB,QAAQ,iBAAiB,YAAY,IAAI,IAAI;AAAA,MAE7C,OAAO;AAAA,KACP;AAAA,IACD,MAAM,SAAS,mBACZ,MAAM,yBAAyB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,IACD,CAAC,IACA,MAAM,0BAA0B;AAAA,MAChC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,IACD,CAAC;AAAA,IACH;AAAA,MACC,oBAAoB;AAAA,MACpB;AAAA,MACA;AAAA,QACG;AAAA,IACJ,qBAAqB;AAAA,IACrB,MAAM,cAAc,MAAM;AAAA,IAC1B,WAAW,iBAAiB;AAAA,IAC5B,MAAM,QAAQ,MAAM,gBAAgB,QAAQ,WAAW;AAAA,IACvD,MAAM,iBAAiB,mBACpB,MAAM,0BAA0B;AAAA,MAChC;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB;AAAA,IACD,CAAC,IACA,MAAM,kBAAkB;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB;AAAA,MACA;AAAA,IACD,CAAC;AAAA,IACH,gBAAe,QAAQ,MAAM;AAAA,IAC7B,IAAI,QAAQ;AAAA,MAAW,WAAW,gBAAgB;AAAA,IAClD,aAAa,iBAAiB,SAAS,MAAM,OAAO;AAAA,IACpD,WAAW,WAAW;AAAA,IACtB,IAAI,CAAC,oBAAoB,CAAC;AAAA,MACzB,MAAM,gBACL,iBAAiB,SAAS,MAAM,qBAAqB,SAAS,GAC9D,kBACA,KACA,EAAE,QAAQ,QAAQ,OAAO,CAC1B;AAAA,IACD,WAAW,OAAO;AAAA,IAClB,QAAQ,QAAQ,YAAY,IAAI,IAAI;AAAA,IACpC,IACC,QAAQ,mBAAmB,OACxB,OAAO,qEAAqE,QAAQ,WAAW,kBAAkB,QAAQ,KAAK,MAAM,iBAAiB,qBAAqB,+BAC1K,OAAO,yCAAyC,QAAQ,WAAW,kBAAkB,QAAQ,KAAK,MAAM,iBAAiB,qBAAqB,4BAClJ;AAAA,IACA,IAAI,gBAAgB,cAAc,OAAO,IAAI;AAAA,IAC7C,IAAI,SAAS;AAAA,IACb,MAAM,QAAQ,YAAY;AAAA,MACzB,IAAI;AAAA,QAAQ;AAAA,MACZ,SAAS;AAAA,MACT,WAAW,SAAS;AAAA,MACpB,MAAM,UAAU;AAAA,MAChB,MAAM,oBAAoB,MAAM,EAAE,MAAM,MAAG;AAAA,QAAG;AAAA,OAAS;AAAA,MACvD,qBAAqB;AAAA,MACrB,MAAM,4BAA4B,QAAQ,WAAW;AAAA,MACrD,WAAW,QAAQ;AAAA;AAAA,IAGpB,OAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,KAAK,QAAQ;AAAA,MACtB;AAAA,MACA,SAAS,YAAY;AAAA,QACpB,IAAI;AAAA,UACH,MAAM,IAAI,MAAM,oCAAoC;AAAA,QACrD,IACC,0EACD;AAAA,QACA,MAAM,MAAM;AAAA,QAEZ,OAAO,2BAA2B,OAAO;AAAA;AAAA,MAE1C,UAAU,YAAY;AAAA,QACrB,IAAI;AAAA,UACH,MAAM,IAAI,MAAM,oCAAoC;AAAA,QACrD,WAAW,WAAW;AAAA,QACtB,IAAI;AAAA,UACH,MAAM,eAAe,IAAI;AAAA,UACzB,WAAW,OAAO;AAAA,UAClB,IAAI,sCAAsC,aAAa;AAAA,UACtD,OAAO,OAAO;AAAA,UACf,WAAW,QAAQ;AAAA,UAEnB,MAAM;AAAA;AAAA;AAAA,MAGR,YAAY,OAAO,gBAAgB;AAAA,QAClC,IAAI;AAAA,UACH,MAAM,IAAI,MACT,iHACD;AAAA,QACD,MAAM,WAAW,SAAQ,QAAQ,aAAa,WAAW;AAAA,QACzD,IAAI,CAAC,SAAS,QAAQ,aAAa,QAAQ;AAAA,UAC1C,MAAM,IAAI,MACT,4DACD;AAAA,QACD,MAAM,OAAM,SAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,QAClD,MAAM,gBACL;AAAA,UACC,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,GACA,4BACA,KACA,EAAE,QAAQ,QAAQ,OAAO,CAC1B;AAAA,QAEA,OAAO;AAAA;AAAA,UAEJ,KAAK,GAAG;AAAA,QACX,OAAO;AAAA;AAAA,IAET;AAAA,IACC,OAAO,OAAO;AAAA,IACf,WAAW,QAAQ;AAAA,IACnB,MAAM,UAAU;AAAA,IAChB,MAAM,oBAAoB,MAAM,EAAE,MAAM,MAAG;AAAA,MAAG;AAAA,KAAS;AAAA,IACvD,MAAM,4BAA4B,QAAQ,WAAW;AAAA,IAErD,MAAM;AAAA;AAAA;;AEzlDR;AACA;AAMA,IAAM,4BAA4B;AAClC,IAAM,qBAAqB,IAAI,IAAI;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAmBM,IAAM,iCAAiC,OAC7C,YACuC;AAAA,EACvC,IAAI,cAAc,MAAM,iCAAiC,QAAQ,OAAO;AAAA,EACxE,IAAI,SAAS;AAAA,EACb,IAAI,UAAU;AAAA,EACd,IAAI;AAAA,EACJ,IAAI,mBAAmB;AAAA,EACvB,MAAM,eAAe,IAAI;AAAA,EACzB,MAAM,WAAwB,CAAC;AAAA,EAC/B,MAAM,aAAa,QAAQ,cAAc;AAAA,EAEzC,MAAM,QAAQ,MAAM;AAAA,IACnB,IAAI;AAAA,MAAQ;AAAA,IACZ,SAAS;AAAA,IACT,IAAI;AAAA,MAAO,aAAa,KAAK;AAAA,IAC7B,SAAS,QAAQ,CAAC,YAAY,QAAQ,MAAM,CAAC;AAAA,IAC7C,QAAQ,QAAQ,oBAAoB,SAAS,KAAK;AAAA;AAAA,EAEnD,MAAM,WAAW,MAAM;AAAA,IACtB,IAAI,UAAU;AAAA,MAAS;AAAA,IACvB,IAAI;AAAA,MAAO,aAAa,KAAK;AAAA,IAC7B,QAAQ,WAAW,MAAM,KAAK,MAAM,GAAG,UAAU;AAAA;AAAA,EAElD,MAAM,QAAQ,YAAY;AAAA,IACzB,QAAQ;AAAA,IACR,IAAI,UAAU,WAAW,aAAa,SAAS;AAAA,MAAG;AAAA,IAClD,UAAU;AAAA,IACV,MAAM,QAAQ,CAAC,GAAG,YAAY,EAAE,KAAK;AAAA,IACrC,MAAM,SAAS;AAAA,IACf,aAAa,MAAM;AAAA,IACnB,mBAAmB;AAAA,IACnB,IAAI;AAAA,MACH,MAAM,OAAO,MAAM,iCAClB,QAAQ,OACT;AAAA,MACA,IAAI,CAAC,UAAU,SAAS;AAAA,QAAa;AAAA,MACrC,MAAM,QAAQ,SAAS;AAAA,QACtB,kBAAkB;AAAA,QAClB,mBAAmB;AAAA,QACnB;AAAA,QACA,kBAAkB;AAAA,MACnB,CAAC;AAAA,MACD,cAAc,MAAM,iCACnB,QAAQ,OACT;AAAA,MACC,OAAO,OAAO;AAAA,MACf,QAAQ,UAAU,KAAK;AAAA,cACtB;AAAA,MACD,UAAU;AAAA,MACV,IAAI,aAAa,OAAO;AAAA,QAAG,SAAS;AAAA;AAAA;AAAA,EAGtC,MAAM,SAAS,CAAC,MAAc,UAAmB;AAAA,IAChD,IAAI;AAAA,MAAQ;AAAA,IACZ,aAAa,IAAI,IAAI;AAAA,IACrB,qBAAqB;AAAA,IACrB,SAAS;AAAA;AAAA,EAGV,SAAS,KACR,MACC,QAAQ,QAAQ,iBAChB,EAAE,WAAW,KAAK,GAClB,CAAC,QAAQ,aAAa;AAAA,IACrB,IAAI;AAAA,MAAU,OAAO,OAAO,QAAQ,GAAG,KAAK;AAAA,GAE9C,CACD;AAAA,EACA,SAAS,KACR,MAAM,QAAQ,QAAQ,aAAa,CAAC,QAAQ,aAAa;AAAA,IACxD,IAAI,CAAC;AAAA,MAAU;AAAA,IACf,MAAM,OAAO,OAAO,QAAQ;AAAA,IAC5B,IAAI,6BAA6B,IAAI;AAAA,MAAG,OAAO,MAAM,IAAI;AAAA,GACzD,CACF;AAAA,EACA,SAAS,QAAQ,CAAC,YACjB,QAAQ,GAAG,SAAS,CAAC,UAAU,QAAQ,UAAU,KAAK,CAAC,CACxD;AAAA,EACA,QAAQ,QAAQ,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;AAAA,EAE/D,OAAO,EAAE,MAAM;AAAA;AAET,IAAM,+BAA+B,CAAC,SAC5C,mBAAmB,IAAI,SAAS,IAAI,CAAC;;AC1HtC,uBAAS,2BAAY;AACrB,yBAAgB,oBAAO,qBAAU,sBAAQ;AACzC,oBAAS;AACT,iBAAS;AACT;AAAA,aACC;AAAA,gBACA;AAAA,UACA;AAAA;AAAA,cAEA;AAAA,aACA;AAAA,SACA;AAAA;;;ACZM,IAAM,mCAAmC;AACzC,IAAM,uCAAuC;;;ADoCpD,IAAM,iBAAiB;AACvB,IAAM,8BAA8B;AACpC,IAAM,kCAAkC;AACxC,IAAM,eAAe;AACrB,IAAM,kBAAkB;AA+IxB,IAAM,qBAAqB,MAC1B,MAAK,SAAQ,GAAG,eAAe,UAAU,kBAAkB;AAE5D,IAAM,aAAa,OAAqB;AAAA,EACvC,QAAQ;AAAA,EACR,UAAU,CAAC;AACZ;AAEA,IAAM,YAAY,OAAO,OAAO,mBAAmB,MAAM;AAAA,EACxD,IAAI;AAAA,IACH,MAAM,SAAS,KAAK,MAAM,MAAM,UAAS,MAAM,MAAM,CAAC;AAAA,IACtD,IACC,OAAO,WAAW,kBAClB,OAAO,OAAO,aAAa,YAC3B,OAAO,aAAa,QACpB,MAAM,QAAQ,OAAO,QAAQ;AAAA,MAE7B,MAAM,IAAI,MAAM,wCAAwC;AAAA,IACzD,YAAY,KAAK,YAAY,OAAO,QAAQ,OAAO,QAAQ,GAAG;AAAA,MAC7D,IACC,OAAO,YAAY,YACnB,YAAY,QACZ,qCAAqC,GAAG,MAAM,OAC9C,QAAQ,SAAS,OACjB,+BAA+B,QAAQ,WAAW,MACjD,QAAQ,eACT,aAAa,QAAQ,IAAI,MAAM,QAAQ,QACvC,OAAO,QAAQ,cAAc,YAC7B,CAAC,QAAQ,aACT,OAAO,QAAQ,YAAY,YAC3B,CAAC,QAAQ,QAAQ,WAAW,GAAG,KAC/B,YAAY,KAAK,QAAQ,OAAO,KAChC,OAAO,QAAQ,kBAAkB,YACjC,CAAC,QAAQ,cAAc,WAAW,GAAG,KACrC,QAAQ,kBAAkB,OAC1B,YAAY,KAAK,QAAQ,aAAa,KACtC,OAAO,QAAQ,iBAAiB,YAChC,CAAC,QAAQ,aAAa,WAAW,QAAQ;AAAA,QAEzC,MAAM,IAAI,MACT,sBAAsB,KAAK,UAAU,GAAG,eACzC;AAAA,IACF;AAAA,IACA,IACC,OAAO,mBAAmB,aAC1B,CAAC,OAAO,SAAS,OAAO;AAAA,MAExB,MAAM,IAAI,MAAM,gDAAgD;AAAA,IAEjE,OAAO;AAAA,IACN,OAAO,OAAO;AAAA,IACf,IAAK,MAAgC,SAAS;AAAA,MAC7C,OAAO,WAAW;AAAA,IACnB,MAAM;AAAA;AAAA;AAIR,IAAM,YAAY,OAAO,OAAqB,OAAO,mBAAmB,MAAM;AAAA,EAC7E,MAAM,OAAM,SAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC9C,MAAM,YAAY,GAAG,QAAQ,YAAW;AAAA,EACxC,MAAM,WAAU,WAAW,GAAG,KAAK,UAAU,OAAO,MAAM,CAAC;AAAA,GAAO;AAAA,IACjE,MAAM;AAAA,EACP,CAAC;AAAA,EACD,MAAM,QAAO,WAAW,IAAI;AAAA,EAC5B,MAAM,MAAM,MAAM,GAAK;AAAA;AAGjB,IAAM,uCAAuC,CAAC,SAAiB;AAAA,EACrE,MAAM,aAAa,KAAK,KAAK,EAAE,YAAY;AAAA,EAC3C,IAAI,CAAC,aAAa,KAAK,UAAU;AAAA,IAChC,MAAM,IAAI,UACT,iGACD;AAAA,EAED,OAAO;AAAA;AAGD,IAAM,iCAAiC,CAAC,gBAAwB;AAAA,EACtE,MAAM,aAAa,YAAY,KAAK;AAAA,EACpC,IAAI,CAAC,gBAAgB,KAAK,UAAU,KAAK,WAAW,WAAW,GAAG;AAAA,IACjE,MAAM,IAAI,UACT,kGACD;AAAA,EAED,OAAO;AAAA;AAGR,IAAM,eAAe,CAAC,SAA6B;AAAA,EAClD,IACC,SAAS,cACR,CAAC,OAAO,UAAU,IAAI,KAAK,OAAO,KAAK,OAAO;AAAA,IAE/C,MAAM,IAAI,UAAU,kDAAkD;AAAA,EAEvE,OAAO;AAAA;AAGR,IAAM,aAAa,CAAC,UAAkB,IAAI,MAAM,WAAW,KAAK,OAAO;AAEhE,IAAM,2BAA2B,CACvC,SACA,UAAmC,CAAC,MAChC;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,yBAAyB,QAAQ,YAAY,eAAe;AAAA,EAC5D,GAAI,QAAQ,OAAO,CAAC,MAAM,OAAO,QAAQ,IAAI,CAAC,IAAI,CAAC;AAAA,EACnD,QAAQ;AACT;AAEA,IAAM,eAAe,OAAO,YAAsB;AAAA,EACjD,MAAM,WAAU,IAAI,MAAM,SAAS;AAAA,IAClC,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,EACT,CAAC;AAAA,EACD,OAAO,UAAU,QAAQ,UAAU,MAAM,QAAQ,IAAI;AAAA,IACpD,SAAQ;AAAA,IACR,IAAI,SAAS,SAAQ,MAAM,EAAE,KAAK;AAAA,IAClC,IAAI,SAAS,SAAQ,MAAM,EAAE,KAAK;AAAA,EACnC,CAAC;AAAA,EAED,OAAO,EAAE,UAAU,QAAQ,OAAO;AAAA;AAGnC,IAAM,mBAA+C;AAAA,EACpD,SAAS;AAAA,EACT,OAAO,CAAC,SAAS,YAChB,IAAI,MAAM,SAAS;AAAA,IAClB,QAAQ,QAAQ;AAAA,IAChB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,EACT,CAAC;AACH;AAEA,IAAM,uBAAuB,CAC5B,QACA,UACI;AAAA,EACJ,IAAI,OAAO,aAAa;AAAA,IACvB,MAAM,IAAI,MACT,GAAG,kBAAkB,OAAO,UAAU,OAAO,QAAQ,KAAK,KAAK,UAAU,OAAO,YACjF;AAAA,EAED,OAAO,OAAO,OAAO,KAAK;AAAA;AASpB,IAAM,kCAAkC,OAC9C,SACA,SACA,cACI;AAAA,EACJ,IAAI,QAAQ,WAAW;AAAA,IACtB,MAAM,IAAI,UAAU,uCAAuC;AAAA,EAC5D,IAAI,QAAQ,KAAK,CAAC,aAAa,YAAY,KAAK,QAAQ,CAAC;AAAA,IACxD,MAAM,IAAI,UACT,uDACD;AAAA,EACD,MAAM,UAAU,WAAW,WAAW,iBAAiB;AAAA,EAEvD,OAAO,QAAQ;AAAA,IACd,GAAG,yBAAyB,OAAO;AAAA,IACnC;AAAA,IACA,WAAW,QAAQ,IAAI,CAAC,aAAa,WAAW,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,EACrE,CAAC;AAAA;AAGK,IAAM,8BAA8B,OAC1C,MACA,gBACI;AAAA,EACJ,MAAM,QAAQ,MAAM,UAAU,WAAW;AAAA,EACzC,MAAM,WACL,QAAQ,QAAQ,IAAI,uBAAuB,MAAM;AAAA,EAClD,IAAI,CAAC;AAAA,IAAU;AAAA,EACf,MAAM,UAAU,MAAM,SAAS;AAAA,EAC/B,IAAI,CAAC;AAAA,IACJ,MAAM,IAAI,MACT,sBAAsB,KAAK,UAAU,QAAQ,kBAC9C;AAAA,EAED,OAAO;AAAA;AAED,IAAM,2BAA2B,OACvC,aACA,UAII,CAAC,MACD;AAAA,EACJ,MAAM,UAAkE;AAAA,IACvE,aAAa,+BAA+B,WAAW;AAAA,IACvD,MAAM,aAAa,QAAQ,IAAI;AAAA,EAChC;AAAA,EACA,MAAM,UAAU,QAAQ,WAAW,WAAW,iBAAiB;AAAA,EAC/D,MAAM,UAAU;AAAA,IACf,GAAG,yBAAyB,SAAS;AAAA,MACpC,WAAW,QAAQ,cAAc;AAAA,IAClC,CAAC;AAAA,IACD;AAAA,IACA,WACC,2PACD;AAAA,EACD;AAAA,EACA,MAAM,QAAQ,qBACb,MAAM,QAAQ,OAAO,GACrB,sBACD,EAAE,MAAM,QAAQ;AAAA,EAChB,OAAO,iBAAiB,MAAM,SAAS,gBAAgB;AAAA,EACvD,IAAI,oBAAoB;AAAA,IACvB,MAAM,IAAI,MAAM,8BAA8B;AAAA,EAC/C,IAAI,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,WAAW,GAAG;AAAA,IACrD,MAAM,IAAI,MACT,8DACD;AAAA,EACD,IAAI,CAAC,cAAc,WAAW,QAAQ;AAAA,IACrC,MAAM,IAAI,MACT,6DACD;AAAA,EAED,OAAO,EAAE,SAAS,MAAM,IAAI,iBAAiB,aAAa;AAAA;AAGpD,IAAM,kCAAkC,OAC9C,SACA,cACI;AAAA,EACJ,MAAM,UAAU,WAAW,WAAW,iBAAiB;AAAA,EACvD,MAAM,SACL;AAAA,EACD,MAAM,SAAS,MAAM,QAAQ;AAAA,IAC5B,GAAG,yBAAyB,OAAO;AAAA,IACnC;AAAA,IACA,WAAW,MAAM;AAAA,EAClB,CAAC;AAAA,EACD,MAAM,OAAO,qBACZ,QACA,kCACD,EAAE,KAAK;AAAA,EACP,IAAI,MAAK,IAAI,MAAM;AAAA,IAClB,MAAM,IAAI,MACT,+DACD;AAAA,EAED,OAAO;AAAA;AAGD,IAAM,gCAAgC,OAAO,gBAAyB;AAAA,EAC5E,MAAM,QAAQ,MAAM,UAAU,WAAW;AAAA,EAEzC,OAAO;AAAA,IACN,gBAAgB,MAAM;AAAA,IACtB,UAAU,OAAO,OAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,MAAM,UACnD,KAAK,KAAK,cAAc,MAAM,IAAI,CACnC;AAAA,EACD;AAAA;AAEM,IAAM,wBAAwB,OAAO,YAOtC;AAAA,EACL,MAAM,OAAO,qCAAqC,QAAQ,IAAI;AAAA,EAC9D,MAAM,cAAc,+BAA+B,QAAQ,WAAW;AAAA,EACtE,MAAM,OAAO,aAAa,QAAQ,IAAI;AAAA,EACtC,MAAM,aAAa,MAAM,yBAAyB,aAAa;AAAA,IAC9D,WAAW;AAAA,IACX;AAAA,IACA,WAAW,QAAQ;AAAA,EACpB,CAAC;AAAA,EACD,MAAM,gBAAgB,QAAQ,gBAC3B,QAAQ,cAAc,KAAK,IAC3B,MAAM,KAAK,WAAW,MAAM,eAAe,YAAY;AAAA,EAC1D,IACC,CAAC,cAAc,WAAW,GAAG,KAC7B,kBAAkB,OAClB,YAAY,KAAK,aAAa;AAAA,IAE9B,MAAM,IAAI,UACT,sDACD;AAAA,EACD,MAAM,UAAoC;AAAA,IACzC,SAAS,WAAW;AAAA,IACpB,WAAW,IAAI,KAAK,EAAE,YAAY;AAAA,IAClC;AAAA,IACA;AAAA,OACI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,IACvB;AAAA,IACA,cAAc,WAAW;AAAA,EAC1B;AAAA,EACA,MAAM,QAAQ,MAAM,UAAU,QAAQ,WAAW;AAAA,EACjD,MAAM,SAAS,QAAQ;AAAA,EACvB,MAAM,iBAAiB;AAAA,EACvB,MAAM,UAAU,OAAO,QAAQ,WAAW;AAAA,EAE1C,OAAO;AAAA;AAED,IAAM,iCAAiC,OAC7C,MACA,gBACI;AAAA,EACJ,MAAM,aAAa,qCAAqC,IAAI;AAAA,EAC5D,MAAM,QAAQ,MAAM,UAAU,WAAW;AAAA,EACzC,IAAI,CAAC,MAAM,SAAS;AAAA,IAAa,OAAO;AAAA,EACxC,OAAO,MAAM,SAAS;AAAA,EACtB,IAAI,MAAM,mBAAmB,YAAY;AAAA,IACxC,OAAO,eAAe,OAAO,KAAK,MAAM,QAAQ,EAAE,KAAK;AAAA,IACvD,MAAM,iBAAiB;AAAA,EACxB;AAAA,EACA,MAAM,UAAU,OAAO,WAAW;AAAA,EAElC,OAAO;AAAA;AAGR,IAAM,kBAAkB,CAAC,aAAqB,UAC7C,YAAW,QAAQ,EACjB,OAAO,GAAG,aAAY,WAAW,QAAM,OAAO,EAC9C,OAAO,KAAK,EACZ,MAAM,GAAG,EAAE;AAEP,IAAM,wCAAwC,CACpD,QACA,aACA,YACI;AAAA,EACJ,IAAI,OAAO,WAAW;AAAA,IACrB,MAAM,IAAI,UACT,qDACD;AAAA,EAED,OAAO,kCACN,QACA,aACA,OACD;AAAA;AAEM,IAAM,oCAAoC,CAChD,QACA,aACA,aACkC;AAAA,EAClC,KAAK,MAAK,aAAY,WAAW,GAAG,gBAAgB,QAAQ,KAAK;AAAA,EACjE;AAAA,EACA,iBAAiB,MAAK,OAAO,wBAAwB,KAAK;AAAA,EAC1D;AAAA,EACA,aAAa,aAAY,WAAW;AAAA,EACpC,QAAQ;AAAA,EACR,mBAAmB,MAAM,KACxB,QAAQ,eACR,YACA,gBAAgB,aAAa,OAAO,KAAK,GACzC,SACD;AAAA,EACA,YAAY;AAAA,EACZ,OAAO;AACR;AACO,IAAM,gCAAgC,OAC5C,YACI;AAAA,EACJ,MAAM,WAAW,MAAM,kCACtB,QAAQ,WACT;AAAA,EACA,MAAM,YAAY,MAAM,KACvB,QAAQ,QAAQ,eAChB,UACA,YAAY,wCACZ,SAAS,MACV;AAAA,EACA,MAAM,aAAa,MAAM,KAAK,WAAW,UAAU;AAAA,EACnD,MAAM,eACL,WAAW,WAAW,UAAU,UAChC,yBAAyB,WAAW,UAAU,4BAA4B,WAAW,SAAS,MAAM;AAAA,EACrG,MAAM,WAAW,MAAM,iBAAiB,QAAQ;AAAA,IAC/C,GAAG,yBAAyB,QAAQ,OAAO;AAAA,IAC3C;AAAA,IACA,WAAW,YAAY;AAAA,EACxB,CAAC;AAAA,EACD,IAAI,SAAS,aAAa;AAAA,IACzB,OAAO,KAAK,UAAU,YAAY,UAAU,MAAM;AAAA,EACnD,MAAM,YAAY,MAAM,KAAK,WAAW,UAAU,YAAW,OAAO;AAAA,EACpE,MAAM,gBAAgB;AAAA,IACrB;AAAA,IACA;AAAA,IACA,YAAY,WAAW,SAAS;AAAA,IAChC,SAAS,WAAW,SAAS;AAAA,IAC7B,yBAAyB,WAAW,SAAS,4BAA4B,WAAW,SAAS,MAAM;AAAA,IACnG,aAAa,WAAW,SAAS;AAAA,IACjC,MAAM,WAAW,SAAS,KAAK,WAAW,UAAU;AAAA,EACrD,EAAE,KAAK,IAAI;AAAA,EACX,MAAM,SAAS,IAAI,MAClB;AAAA,IACC,GAAG,yBAAyB,QAAQ,OAAO;AAAA,IAC3C;AAAA,IACA,WAAW,aAAa;AAAA,EACzB,GACA;AAAA,IACC,QAAQ;AAAA,IACR,OAAO,IAAI,KAAK,SAAS,IAAI;AAAA,IAC7B,QAAQ;AAAA,EACT,CACD;AAAA,EACA,OAAO,UAAU,UAAU,MAAM,QAAQ,IAAI;AAAA,IAC5C,OAAO;AAAA,IACP,IAAI,SAAS,OAAO,MAAM,EAAE,KAAK;AAAA,EAClC,CAAC;AAAA,EACD,IAAI,aAAa;AAAA,IAChB,MAAM,IAAI,MACT,yCAAyC,OAAO,KAAK,KAAK,UAAU,YACrE;AAAA,EAED,OAAO,KAAK,UAAU,YAAY,UAAU,KAAK;AAAA;AAE3C,IAAM,oCAAoC,OAChD,gBACI;AAAA,EACJ,MAAM,oBAAoB;AAAA,IACzB,MAAK,YAAY,KAAK,wBAAwB;AAAA,IAC9C,MAAK,YAAY,KAAK,MAAM,UAAU,wBAAwB;AAAA,EAC/D;AAAA,EACA,IAAI;AAAA,EACJ,WAAW,aAAa,mBAAmB;AAAA,IAC1C,IAAI,MAAM,IAAI,KAAK,SAAS,EAAE,OAAO,GAAG;AAAA,MACvC,OAAO;AAAA,MACP;AAAA,IACD;AAAA,EACD;AAAA,EACA,IAAI,CAAC,MAAM;AAAA,IACV,MAAM,mBAAmB;AAAA,MACxB,MAAK,YAAY,KAAK,wBAAwB;AAAA,MAC9C,MACC,YAAY,KACZ,MACA,MACA,OACA,UACA,wBACD;AAAA,IACD;AAAA,IACA,MAAM,SAAS,MAAM,iBAAiB,OAGrC,OAAO,OAAO,cACZ,MAAM,UACL,MAAM,IAAI,KAAK,SAAS,EAAE,OAAO,IAAK,YAAY,YACrD,QAAQ,QAAQ,SAAS,CAC1B;AAAA,IACA,IAAI,CAAC;AAAA,MACJ,MAAM,IAAI,MACT,6EACD;AAAA,IACD,MAAM,SAAS,MACd,aAAY,WAAW,GACvB,eACA,UACA,cACD;AAAA,IACA,MAAM,OAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,IACvC,MAAM,SAAS,MAAM,IAAI,MAAM;AAAA,MAC9B,aAAa,CAAC,MAAM;AAAA,MACpB,QAAQ;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,IACT,CAAC;AAAA,IACD,IAAI,CAAC,OAAO;AAAA,MACX,MAAM,IAAI,eACT,OAAO,MACP,kDACD;AAAA,IACD,OAAO,MAAK,QAAQ,wBAAwB;AAAA,EAC7C;AAAA,EACA,MAAM,QAAQ,MAAM,IAAI,KAAK,IAAI,EAAE,YAAY;AAAA,EAC/C,MAAM,SAAS,YAAW,QAAQ,EAChC,OAAO,IAAI,WAAW,KAAK,CAAC,EAC5B,OAAO,KAAK;AAAA,EAEd,OAAO,EAAE,OAAO,MAAM,YAAY,MAAM,OAAO;AAAA;AAGhD,IAAM,uBAAuB,CAAC,MAAc,SAC3C,UAAS,MAAM,IAAI,EAAE,MAAM,IAAG,EAAE,KAAK,MAAM,GAAG;AAE/C,IAAM,uBAAuB,CAC5B,aACmB;AAAA,EACnB,OAAO,QAAQ,OAAO;AAAA,EACtB,SAAS,QAAQ,OAAO;AAAA,EACxB,iBAAiB,qBAChB,QAAQ,aACR,QAAQ,OAAO,eAChB;AAAA,EACA,QAAQ,QAAQ,OAAO;AAAA,KACnB,QAAQ,OAAO,kBACnB,QAAQ,OAAO,cAAc,SAAS,KACtC,QAAQ,OAAO,mBACZ;AAAA,IACA,WAAW;AAAA,SACN,QAAQ,OAAO,iBAChB,EAAE,QAAQ,QAAQ,OAAO,eAAe,IACxC,CAAC;AAAA,MACJ,OAAO,QAAQ,OAAO;AAAA,SAClB,QAAQ,OAAO,mBAChB;AAAA,QACA,OAAO;AAAA,UACN,aAAa,QAAQ,OAAO;AAAA,QAC7B;AAAA,MACD,IACC,CAAC;AAAA,IACL;AAAA,EACD,IACC,CAAC;AAAA,EACJ,OAAO,QAAQ,OAAO;AAAA,KAClB,QAAQ,OAAO,WAAW,SAC3B;AAAA,IACA,MAAM,EAAE,YAAY,QAAQ,OAAO,kBAAkB,GAAG;AAAA,IACxD,QAAQ;AAAA,MACP,SAAS;AAAA,MACT,QAAQ,OAAO,YACd,OAAO,QAAQ,QAAQ,OAAO,gBAAgB,EAAE,IAC/C,EAAE,OAAO,YAAY;AAAA,QACpB;AAAA,QACA,qBACC,QAAQ,aACR,MACD;AAAA,MACD,CACD,CACD;AAAA,IACD;AAAA,EACD,IACC,CAAC;AAAA,KACA,QAAQ,OAAO,aAChB,EAAE,KAAK,EAAE,SAAS,QAAQ,OAAO,WAAW,EAAE,IAC9C,CAAC;AAAA,EACJ,eAAe;AAAA,IACd,WAAW,qBACV,QAAQ,aACR,QAAQ,OAAO,sBAChB;AAAA,IACA,MAAM;AAAA,EACP;AAAA,EACA,WAAW,CAAC,KAAK;AAAA,EACjB,QAAQ,EAAE,kBAAkB,QAAQ,OAAO,iBAAiB;AAC7D;AAEO,IAAM,oCAAoC,CAChD,YACI;AAAA,EACJ,MAAM,UAAU,QAAQ;AAAA,EACxB,MAAM,SAAS,MAAM,QAAQ,OAAO;AAAA,EACpC,MAAM,UAAU,MAAM,KAAK,QAAQ,aAAa,YAAW,GAAG;AAAA,EAC9D,MAAM,WAAW,MAAM,KAAK,QAAQ,WAAW;AAAA,EAC/C,MAAM,SAAS;AAAA,IACd;AAAA,IACA,YAAY,WAAW,OAAO;AAAA,IAC9B,gBAAgB,WAAW,OAAO;AAAA,IAClC,WAAW,WAAW,MAAM,KAAK,SAAS,cAAc,CAAC,gBAAgB,WAAW,MAAM,KAAK,SAAS,cAAc,CAAC,KAAK,WAAW,MAAM,KAAK,SAAS,cAAc,CAAC;AAAA,IAC1K,WAAW,WAAW,MAAM,KAAK,SAAS,aAAa,CAAC,gBAAgB,WAAW,MAAM,KAAK,SAAS,aAAa,CAAC,KAAK,WAAW,MAAM,KAAK,SAAS,aAAa,CAAC;AAAA,IACvK,UAAU,WAAW,QAAQ;AAAA,IAC7B,WAAW,WAAW,OAAO,gBAAgB,WAAW,OAAO,KAAK,WAAW,QAAQ;AAAA,IACvF,MAAM,WAAW,OAAO,KAAK,WAAW,OAAO;AAAA,IAC/C,UAAU,WAAW,QAAQ;AAAA,EAC9B,EAAE,KAAK,IAAI;AAAA,EAEX,OAAO;AAAA,IACN,QAAQ;AAAA,MACP,GAAG,yBAAyB,QAAQ,OAAO;AAAA,MAC3C;AAAA,MACA,WAAW,MAAM;AAAA,IAClB;AAAA,IACA,KAAK;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,IACD;AAAA,EACD;AAAA;AAGM,IAAM,+BAA+B,OAC3C,YACI;AAAA,EACJ,MAAM,WAAW,kCAAkC,OAAO;AAAA,EAC1D,MAAM,UAAU,IAAI,MAAM,SAAS,KAAK;AAAA,IACvC,QAAQ;AAAA,IACR,QAAQ;AAAA,EACT,CAAC;AAAA,EACD,MAAM,SAAS,IAAI,MAAM,SAAS,QAAQ;AAAA,IACzC,QAAQ;AAAA,IACR,OAAO,QAAQ;AAAA,IACf,QAAQ;AAAA,EACT,CAAC;AAAA,EACD,OAAO,aAAa,YAAY,cAAc,eAC7C,MAAM,QAAQ,IAAI;AAAA,IACjB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,IAAI,SAAS,QAAQ,MAAM,EAAE,KAAK;AAAA,IAClC,IAAI,SAAS,OAAO,MAAM,EAAE,KAAK;AAAA,EAClC,CAAC;AAAA,EACF,IAAI,gBAAgB,KAAK,eAAe;AAAA,IACvC,MAAM,IAAI,MACT,+CAA+C,gBAAgB,aAAa,KAAK,GAClF;AAAA,EACD,MAAM,UAAU,MAAM,iBAAiB,QAAQ;AAAA,IAC9C,GAAG,yBAAyB,QAAQ,OAAO;AAAA,IAC3C;AAAA,IACA,WACC,MAAM,WAAW,QAAQ,iBAAiB,QAAQ,WAAW,QAAQ,QAAQ,OAAO,6BACrF;AAAA,EACD,CAAC;AAAA,EACD,qBAAqB,SAAS,oCAAoC;AAAA;AAGnE,IAAM,gBAAe,OACpB,QACA,WACI;AAAA,EACJ,MAAM,SAAS,OAAO,UAAU;AAAA,EAChC,MAAM,UAAU,IAAI;AAAA,EACpB,IAAI,WAAW;AAAA,EACf,IAAI;AAAA,IACH,OAAO,MAAM;AAAA,MACZ,QAAQ,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,MAC1C,IAAI;AAAA,QAAM;AAAA,MACV,YAAY,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAAA,MAClD,MAAM,QAAQ,SAAS,MAAM,QAAQ;AAAA,MACrC,WAAW,MAAM,IAAI,KAAK;AAAA,MAC1B,MAAM,QAAQ,MAAM;AAAA,IACrB;AAAA,IACA,YAAY,QAAQ,OAAO;AAAA,IAC3B,IAAI;AAAA,MAAU,OAAO,QAAQ;AAAA,YAC5B;AAAA,IACD,OAAO,YAAY;AAAA;AAAA;AAId,IAAM,uCAAuC,OACnD,YACqC;AAAA,EACrC,MAAM,UAAU,MAAM,8BAA8B;AAAA,IACnD,0BAA0B,QAAQ;AAAA,IAClC,kBAAkB,QAAQ;AAAA,IAC1B,OAAO,QAAQ;AAAA,IACf,cAAc,QAAQ;AAAA,IACtB,KAAK,QAAQ;AAAA,IACb,WAAW,QAAQ;AAAA,IACnB,mBAAmB,QAAQ;AAAA,IAC3B,mBAAmB,QAAQ;AAAA,IAC3B,MAAM,QAAQ;AAAA,IACd,SAAS,QAAQ;AAAA,IACjB,YAAY,QAAQ;AAAA,IACpB,QAAQ,QAAQ;AAAA,IAChB,aAAa,QAAQ;AAAA,IACrB,WAAW,QAAQ;AAAA,EACpB,CAAC;AAAA,EAED,OAAO;AAAA,IACN,OAAO,QAAQ;AAAA,IACf,WAAW,QAAQ;AAAA,IACnB,WAAW,CAAC,KAAK;AAAA,IACjB,SAAS,QAAQ;AAAA,EAClB;AAAA;AAEM,IAAM,mCAAmC,CAC/C,YACI,8BAA8B,OAAO;AAC1C,IAAM,gCAAgC,OACrC,YACI;AAAA,EACJ,MAAM,YAAY,YAAY,IAAI;AAAA,EAClC,MAAM,YAAY,QAAQ,aAAa;AAAA,EACvC,MAAM,eAAe,QAAQ,gBAAgB;AAAA,EAC7C,MAAM,cAAc,QAAQ,eAAe;AAAA,EAC3C,MAAM,iBAAiB,YAAY,IAAI;AAAA,EACvC,MAAM,QAAQ,MAAM,aAAa,QAAQ,OAAO;AAAA,EAChD,MAAM,gBAAgB,YAAY,IAAI,IAAI;AAAA,EAC1C,MAAM,gBAAgB,YAAY,IAAI;AAAA,EACtC,MAAM,YAAY,QAAQ,OAAO;AAAA,EACjC,MAAM,eAAe,YAAY,IAAI,IAAI;AAAA,EACzC,MAAM,gBAAgB,OAAO,KAC5B,KAAK,UAAU,qBAAqB,QAAQ,OAAO,CAAC,CACrD,EAAE,SAAS,WAAW;AAAA,EACtB,MAAM,8BAA8B,QAAQ,4BACxC,MAAM,UAAS,QAAQ,wBAAwB,GAAG,SACnD,WACD,IACC;AAAA,EACH,MAAM,iBAAiB,QAAQ,qBAAqB;AAAA,EACpD,MAAM,OAAO,QAAQ,QAAQ,OAAO,WAAW;AAAA,EAC/C,IAAI,QAAQ,QAAQ,cAAc;AAAA,IACjC,MAAM,IAAI,UAAU,8CAA8C;AAAA,EACnE,IAAI,QAAQ,cAAc,QAAQ;AAAA,IACjC,MAAM,IAAI,UACT,qDACD;AAAA,EACD,MAAM,sBAAsB,CAAC,eAC5B,cAAc,QAAS,aAAa,QAAS,aAAa;AAAA,EAC3D,MAAM,sBAAsB,IAAI,IAC/B,CAAC,QAAQ,MAAM,QAAQ,SAAS,EAAE,OACjC,CAAC,UAA2B,UAAU,SACvC,CACD;AAAA,EACA,MAAM,mBAAmB,CAAC,eAAuB;AAAA,IAChD,IAAI,YAAY,oBAAoB,UAAU;AAAA,IAC9C,OAAO,oBAAoB,IAAI,SAAS;AAAA,MACvC,YAAY,cAAc,QAAS,OAAQ,YAAY;AAAA,IACxD,oBAAoB,IAAI,SAAS;AAAA,IAEjC,OAAO;AAAA;AAAA,EAER,MAAM,YAAY,iBACf,iBAAiB,QAAQ,IAAI,IAC7B;AAAA,EACH,MAAM,iBACL,kBAAkB,QAAQ,cAAc,YACrC,iBAAiB,QAAQ,SAAS,IAClC;AAAA,EACJ,IAAI,kBAAkB,CAAC,QAAQ;AAAA,IAC9B,MAAM,IAAI,MACT,mEACD;AAAA,EACD,MAAM,gBAAgB;AAAA,IACrB,MAAM,WAAW,QAAQ,QAAQ,iBAAiB;AAAA,IAClD;AAAA,IACA;AAAA,IACA,WAAW,QAAQ,QAAQ,QAAQ,OAAO;AAAA,IAC1C,WAAW,MAAM,UAAU;AAAA,IAC3B;AAAA,IACA,OAAO,QAAQ,IAAI;AAAA,IACnB;AAAA,IACA,WAAW,aAAa;AAAA,IACxB,GAAI,QAAQ,QAAQ,cAAc,YAC/B,CAAC,gBAAgB,OAAO,QAAQ,SAAS,CAAC,IAC1C,CAAC;AAAA,IACJ,GAAI,8BACD;AAAA,MACA;AAAA,MACA,WAAW,2BAA2B;AAAA,IACvC,IACC,CAAC;AAAA,IACJ,GAAI,QAAQ,QAAQ,CAAC,SAAS,IAAI,CAAC;AAAA,IACnC,GAAI,QAAQ,mBACT;AAAA,MACA;AAAA,MACA,WAAW,QAAQ,gBAAgB;AAAA,MACnC;AAAA,MACA,WAAW,QAAQ,cAAc,EAAE;AAAA,MACnC;AAAA,MACA,OAAO,SAAS;AAAA,MAChB,GAAI,QAAQ,mBAAmB,YAC5B,CAAC,sBAAsB,OAAO,cAAc,CAAC,IAC7C,CAAC;AAAA,IACL,IACC,CAAC;AAAA,EACL,EAAE,KAAK,GAAG;AAAA,EACV,MAAM,UAAU;AAAA,IACf,GAAG,yBAAyB,QAAQ,QAAQ,OAAO;AAAA,IACnD;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBACG,aAAa,uBAAuB,QAAQ,SAC5C,GAAG,QAAQ,kBAAkB,QAAQ;AAAA,IACxC,GAAI,QAAQ,QAAQ,cAAc,YAC/B;AAAA,MACA;AAAA,MACA,iBACG,aAAa,4BAA4B,QAAQ,cACjD,GAAG,QAAQ,uBAAuB,QAAQ;AAAA,IAC9C,IACC,CAAC;AAAA,IACJ;AAAA,IACA,WAAW,aAAa;AAAA,EACzB;AAAA,EACA,MAAM,mBAAmB,YAAY,IAAI;AAAA,EACzC,MAAM,WAAU,UAAU,MAAM,SAAS,EAAE,QAAQ,QAAQ,OAAO,CAAC;AAAA,EACnE,IAAI,QAA6B;AAAA,EACjC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM,UAAU,IAAI;AAAA,EAIpB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM,eAAe,IAAI,QAAc,CAAC,UAAS,WAAW;AAAA,IAC3D,eAAe;AAAA,IACf,cAAc;AAAA,GACd;AAAA,EACD,MAAM,cAAc,CAAC,UAAuB;AAAA,IAC3C,IAAI,MAAM,MAAM,sCAAsC;AAAA,MACrD,YAAY,IAAI,MAAM,uCAAuC,CAAC;AAAA,MAE9D;AAAA,IACD;AAAA,IACA,IAAI,MAAM,SAAS;AAAA,MAAO,QAAQ,MAAM,MAAM,OAAO;AAAA,IACrD,IAAI,MAAM,SAAS;AAAA,MAAc,QAAQ,YAAY,MAAM,KAAK;AAAA,IAChE,IAAI,MAAM,SAAS,SAAS;AAAA,MAC3B,IAAI;AAAA,QACH,QAAQ,oBACP,MAAM,KACP;AAAA,MACI;AAAA,QACJ,QAAQ,MAAM;AAAA,QACd,QAAQ,gBAAgB,KAAK;AAAA;AAAA,IAE/B;AAAA,IACA,IAAI,MAAM,SAAS,UAAU;AAAA,MAC5B,IAAI;AAAA,QACH,QAAQ,oBACP,KACD;AAAA,MACI;AAAA,gBAAQ,gBAAgB,KAAkC;AAAA,IAChE;AAAA,IACA,IAAI,MAAM,SAAS,SAAS;AAAA,MAC3B,QAAQ;AAAA,MACR,aAAa;AAAA,IACd;AAAA,IACA,IAAI,MAAM,SAAS,SAAS;AAAA,MAC3B,QAAQ,IAAI,MAAM,MAAM,KAAK;AAAA,MAC7B,YAAY,KAAK;AAAA,IAClB;AAAA,IACA,IAAI,MAAM,SAAS,YAAY;AAAA,MAC9B,MAAM,WAAU,QAAQ,IAAI,MAAM,EAAE;AAAA,MACpC,IAAI,CAAC;AAAA,QAAS;AAAA,MACd,QAAQ,OAAO,MAAM,EAAE;AAAA,MACvB,IAAI,MAAM;AAAA,QAAI,SAAQ,QAAQ,MAAM,MAAM;AAAA,MAEzC;AAAA,iBAAQ,OACP,IAAI,MAAM,MAAM,SAAS,wBAAwB,CAClD;AAAA,IACF;AAAA;AAAA,EAED,MAAM,aAAa,cAAa,SAAQ,QAAQ,CAAC,SAAS;AAAA,IACzD,IAAI,CAAC,KAAK,WAAW,gCAAgC;AAAA,MAAG;AAAA,IACxD,IAAI;AAAA,MACH,YACC,KAAK,MACJ,KAAK,MAAM,iCAAiC,MAAM,CACnD,CACD;AAAA,MACC,MAAM;AAAA,MACP,QAAQ,MAAM,+CAA+C;AAAA;AAAA,GAE9D,EAAE,MAAM,CAAC,UAAmB;AAAA,IAC5B,QACC,iBAAiB,QACd,QACA,IAAI,MAAM,gDAAgD;AAAA,IAC9D,YAAY,KAAK;AAAA,GACjB;AAAA,EACD,MAAM,aAAa,cAAa,SAAQ,QAAQ,CAAC,SAChD,QAAQ,MAAM,YAAY,MAAM,CACjC,EAAE,MAAM,CAAC,UACR,QAAQ,MACP,YAAY,iBAAiB,QAAQ,MAAM,UAAU,8BACtD,CACD;AAAA,EACK,SAAQ,OAAO,KAAK,OAAO,aAAa;AAAA,IAC5C,MAAM,QAAQ,IAAI,CAAC,YAAY,UAAU,CAAC;AAAA,IAC1C,MAAM,QACL,SACA,IAAI,MAAM,4CAA4C,WAAW;AAAA,IAClE,IAAI,CAAC;AAAA,MAAO,YAAY,KAAK;AAAA,IAC7B,QAAQ,QAAQ,GAAG,aAAa,OAAO,KAAK,CAAC;AAAA,IAC7C,QAAQ,MAAM;AAAA,IAEd;AAAA,GACA;AAAA,EACD,IAAI;AAAA,IACH,MAAM;AAAA,IACL,OAAO,OAAO;AAAA,IACf,SAAQ,MAAM,IAAI;AAAA,IAClB,SAAQ,KAAK;AAAA,IACb,MAAM,SAAQ,OAAO,MAAM,MAAG;AAAA,MAAG;AAAA,KAAS;AAAA,IAE1C,MAAM;AAAA;AAAA,EAEP,IAAI,CAAC;AAAA,IAAO,MAAM,SAAS,IAAI,MAAM,kCAAkC;AAAA,EACvE,IAAI,MAAM,WAAW,QAAQ,QAAQ,OAAO,QAAQ;AAAA,IACnD,SAAQ,MAAM,IAAI;AAAA,IAClB,SAAQ,KAAK;AAAA,IACb,MAAM,SAAQ,OAAO,MAAM,MAAG;AAAA,MAAG;AAAA,KAAS;AAAA,IAC1C,MAAM,IAAI,MACT,uDACD;AAAA,EACD;AAAA,EACA,MAAM,gBAAgB,YAAY,IAAI,IAAI;AAAA,EAC1C,IAAI,eAAwD;AAAA,OACxD;AAAA,IACH,SAAS;AAAA,SACL,MAAM;AAAA,MACT,gBAAgB;AAAA,MAChB,kBAAkB,YAAY,IAAI,IAAI;AAAA,MACtC,eAAe;AAAA,MACf,OAAO;AAAA,IACR;AAAA,EACD;AAAA,EACA,QAAQ,MACP,yBAAyB,QAAQ,QAAQ,QAAQ,gBAAgB,MAAM,WAAW,aAAa,oCAAoC,OAAO,UAAU,kBAAkB,cAAc,QAAQ,CAAC,MAC9L;AAAA,EAEA,MAAM,UAAU,CACf,gBACI;AAAA,IACJ,MAAM,KAAK,YAAW;AAAA,IACtB,MAAM,WAAW,IAAI,QAAiB,CAAC,UAAS,WAC/C,QAAQ,IAAI,IAAI,EAAE,QAAQ,kBAAQ,CAAC,CACpC;AAAA,IACA,SAAQ,MAAM,MACb,GAAG,KAAK,UAAU,EAAE,SAAS,aAAa,IAAI,GAAG,qCAAqC,CAAC;AAAA,CACxF;AAAA,IACA,MAAM,QAAQ,YAAY;AAAA,MACzB,SACK,UAAU,EACd,UAAU,6BACV,WACC;AAAA,QACD,IAAI;AAAA,UACH,MAAM,SAAQ,MAAM,MAAM;AAAA,UAE1B;AAAA,UACC,MAAM;AAAA,UAGP,MAAM,QAAQ,QAAQ;AAAA;AAAA,MAExB;AAAA;AAAA,IAGD,OAAO,MAAM,EAAE,KAAK,MAAM,QAAQ;AAAA;AAAA,EAEnC,IAAI,SAAS;AAAA,EACb,MAAM,QAAQ,YAAY;AAAA,IACzB,IAAI;AAAA,MAAQ;AAAA,IACZ,SAAS;AAAA,IACT,MAAM,UAAU,MACf,IAAI,QAAmB,CAAC,aACvB,WACC,MAAM,SAAQ,SAAS,GACvB,+BACD,CACD;AAAA,IACD,MAAM,QAAQ,KAAK;AAAA,MAClB,QAAQ,OAAO,EAAE,MAAM,MAAG;AAAA,QAAG;AAAA,OAAS;AAAA,MACtC,QAAQ;AAAA,IACT,CAAC;AAAA,IACD,SAAQ,MAAM,IAAI;AAAA,IAClB,MAAM,OAAO,MAAM,QAAQ,KAAK;AAAA,MAC/B,SAAQ,OACN,KAAK,MAAM,QAAiB,EAC5B,MAAM,MAAM,QAAiB;AAAA,MAC/B,QAAQ;AAAA,IACT,CAAC;AAAA,IACD,IAAI,SAAS,WAAW;AAAA,MACvB,SAAQ,KAAK;AAAA,MACb,MAAM,SAAQ,OAAO,MAAM,MAAG;AAAA,QAAG;AAAA,OAAS;AAAA,IAC3C;AAAA;AAAA,EAED,MAAM,cAAc,OAA8B;AAAA,IACjD;AAAA,IACA,gBAAgB,aAAa;AAAA,IAC7B,kBAAkB,aAAa;AAAA,IAC/B,YAAY,aAAa;AAAA,IACzB,SAAS,aAAa;AAAA,IACtB,MAAM,aAAa;AAAA,IACnB,SAAS,YAAY;AAAA,MACpB,MAAM,mBAAmB,YAAY,IAAI;AAAA,MACzC,MAAM,uBAAuB,YAAY,IAAI;AAAA,MAC7C,MAAM,YAAY,QAAQ,OAAO;AAAA,MACjC,MAAM,sBACL,YAAY,IAAI,IAAI;AAAA,MACrB,MAAM,SAAU,MAAM,QAAQ,SAAS;AAAA,MAIvC,eAAe;AAAA,WACX;AAAA,QACH,SAAS;AAAA,aACL,OAAO;AAAA,UACV,eAAe;AAAA,UACf,OAAO,YAAY,IAAI,IAAI;AAAA,QAC5B;AAAA,MACD;AAAA,MAEA,OAAO,YAAY;AAAA;AAAA,IAEpB,UAAU,YAAY;AAAA,MACrB,MAAM,QAAQ,UAAU;AAAA;AAAA,IAEzB,YAAY,OAAO,gBAAgB;AAAA,MAClC,MAAM,SAAU,MAAM,QAAQ,YAAY;AAAA,MAC1C,MAAM,SAAS,aACd,QAAQ,QAAQ,aAChB,WACD;AAAA,MACA,MAAM,iBAAiB,UACtB,QAAQ,QAAQ,aAChB,MACD;AAAA,MACA,IAAI,eAAe,WAAW,IAAI,KAAK,YAAW,cAAc;AAAA,QAC/D,MAAM,IAAI,MACT,gDACD;AAAA,MACD,MAAM,OAAM,SAAQ,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,MAChD,MAAM,WAAU,QAAQ,OAAO,KAAK,OAAO,MAAM,QAAQ,CAAC;AAAA,MAE1D,OAAO;AAAA;AAAA,QAEJ,KAAK,GAAG;AAAA,MACX,OAAO;AAAA;AAAA,EAET;AAAA,EAEA,OAAO,YAAY;AAAA;;AE9rCb,IAAM,sCAAsC,CAAC,YAI9C;AAAA,EACL,MAAM,QAAQ,QAAQ,SAAS;AAAA,EAC/B,MAAM,SAAS,CAAC,OAAO,aAAa,QAAQ;AAAA,EAE5C,OAAO;AAAA,IACN,MAAM,CAAC,GAAG,QAAQ,QAAQ,QAAQ,YAAY,QAAQ,MAAM;AAAA,IAC5D,SAAS,CAAC,GAAG,QAAQ,QAAQ,WAAW,YAAY,QAAQ,MAAM;AAAA,IAClE,QAAQ;AAAA,MACP,GAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ;AAAA,IACT;AAAA,EACD;AAAA;AAGD,IAAM,kBAAiB,CAAC,QAAuB,YAAoB;AAAA,EAClE,IAAI,OAAO,aAAa;AAAA,IAAG,MAAM,IAAI,MAAM,OAAO;AAAA,EAElD,OAAO;AAAA;AAOD,IAAM,gCAAgC,OAAO,YAOF;AAAA,EACjD,MAAM,WAAW,oCAAoC,OAAO;AAAA,EAC5D,gBACC,MAAM,QAAQ,QAAQ,SAAS,OAAO,GACtC,qIACD;AAAA,EACA,MAAM,OAAO,gBACZ,MAAM,QAAQ,QAAQ,SAAS,IAAI,GACnC,yEACD;AAAA,EACA,IAAI,CAAC,KAAK,OAAO,SAAS,QAAQ,KAAK;AAAA,IACtC,MAAM,IAAI,MACT,gIACD;AAAA,EACD,MAAM,MAAM,QAAQ,OAAO,YAAY,IAAI,KAAK,WAAW;AAAA,EAC3D,MAAM,YAAY,IAAI;AAAA,EACtB,gBACC,MAAM,QAAQ,QAAQ,SAAS,MAAM,GACrC,mEACD;AAAA,EACA,MAAM,QAAQ,WAAW;AAAA,EAEzB,OAAO;AAAA,IACN,cAAc;AAAA,IACd,WAAW;AAAA,IACX,YAAY,KAAK,MAAM,IAAI,IAAI,SAAS;AAAA,EACzC;AAAA;;AC/DD;AAXA;AAAA,YACC;AAAA,WACA;AAAA,cACA;AAAA,YACA;AAAA,QACA;AAAA,eACA;AAAA;AAED,oBAAS;AACT;AAOA,IAAM,eAAuC;AAAA,EAC5C,iBAAiB;AAAA,EACjB,gBAAgB;AACjB;AACA,IAAM,iBAAiB;AACvB,IAAM,UAAU;AAChB,IAAM,oBAAoB;AAcnB,IAAM,2BAA2B;AACjC,IAAM,yBAAyB;AAyBtC,IAAM,kBAAkB,CAAC,QAAe,aACvC,IAAI,UACH,GAAG,iCAAgC,uCACpC;AAED,IAAM,sBAAsB,CAC3B,QACA,eACI;AAAA,EACJ,IAAI,CAAC,OAAO,UAAU,SAAS,KAAK;AAAA,IAAG;AAAA,EACvC,IAAI,CAAC,OAAO,oBAAoB,YAAY;AAAA,IAC3C,MAAM,gBAAgB,sCAAsC,KAAK;AAAA,EAClE;AAAA,EACA,IAAI,CAAC,OAAO;AAAA,IAAkB;AAAA,EAE9B,OAAO;AAAA,IACN,UAAU;AAAA,MACT,SAAS;AAAA,QACR;AAAA,UACC,QAAQ;AAAA,YACP,GAAG,OAAO,oBAAoB,OAAO;AAAA,UACtC;AAAA,UACA,YAAY,CAAC,EAAE,KAAK,KAAc,CAAC;AAAA,QACpC;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA;AAGD,IAAM,wBAAwB,CAC7B,QACA,eACI;AAAA,EACJ,IAAI,CAAC,OAAO,UAAU,SAAS,SAAS;AAAA,IAAG;AAAA,EAC3C,IAAI,OAAO,+BAA+B,WAAW,KAAK,YAAY;AAAA,IACrE,MAAM,gBACL,0DACA,SACD;AAAA,EACD;AAAA,EACA,IAAI,OAAO,+BAA+B,WAAW;AAAA,IAAG;AAAA,EAExD,OAAO;AAAA,IACN;AAAA,MACC,UAAU,CAAC,4CAA4C;AAAA,MACvD,QAAQ;AAAA,QACP,WAAW;AAAA,QACX,cAAc,OAAO;AAAA,QACrB,0BAA0B,OAAO;AAAA,MAClC;AAAA,IACD;AAAA,EACD;AAAA;AAGM,IAAM,2CAA2C,CACvD,QACA,UAAoC,CAAC,MACjC;AAAA,EACJ,MAAM,YAAgD,CAAC;AAAA,EACvD,MAAM,aAAa,QAAQ,eAAe;AAAA,EAC1C,MAAM,UAAU,sBAAsB,QAAQ,UAAU;AAAA,EACxD,MAAM,QAAQ,oBAAoB,QAAQ,UAAU;AAAA,EACpD,IAAI;AAAA,IAAS,UAAU,UAAU;AAAA,EACjC,IAAI;AAAA,IAAO,UAAU,QAAQ;AAAA,EAE7B,OAAO;AAAA;AAGR,IAAM,eAAe,CAAC,UACrB,IAAI,SAAS,GAAG,KAAK,UAAU,KAAK;AAAA,GAAO,EAAE,SAAS,aAAa,CAAC;AAE9D,IAAM,wCAAwC,CACpD,QACA,aACA,UAAoC,CAAC,MACjC;AAAA,EACJ,MAAM,SAAS,IAAI,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAAA,EACpE,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EACpB,MAAM,SAAS,8BAA8B,QAAQ,WAAW;AAAA,EAChE,MAAM,YAAY,yCAAyC,QAAQ,OAAO;AAAA,EAC1E,IAAI,UAAU,OAAO;AAAA,IACpB,OAAO,IAAI,wBAAwB,MAAM,aAAa,UAAU,KAAK,CAAC;AAAA,EACvE;AAAA,EACA,IAAI,UAAU,SAAS;AAAA,IACtB,OAAO,IAAI,0BAA0B,MACpC,aAAa,UAAU,OAAO,CAC/B;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,cAAc,OAAO,MAAc,WAAmB;AAAA,EAC3D,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,UAAU,MAAM,WAAS,MAAM,MAAM;AAAA,IACpC,OAAO,OAAO;AAAA,IACf,IACC,EAAE,iBAAiB,UACnB,EAAE,UAAU,UACZ,MAAM,SAAS,UACd;AAAA,MACD,MAAM;AAAA,IACP;AAAA;AAAA,EAED,IAAI,YAAY;AAAA,IAAQ,OAAO;AAAA,EAC/B,MAAM,YAAY,GAAG,QAAQ,OAAO,WAAW;AAAA,EAC/C,MAAM,WAAU,WAAW,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,EACjD,MAAM,QAAO,WAAW,IAAI;AAAA,EAE5B,OAAO;AAAA;AAGR,IAAM,UAAS,OAAO,SAAiB;AAAA,EACtC,IAAI;AAAA,IACH,MAAM,QAAO,IAAI;AAAA,IAEjB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,IAAM,oBAAoB,OAAO,SAAiB;AAAA,EACjD,MAAM,OAAO,SAAQ,MAAM,cAAc;AAAA,EACzC,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,YAAY,KAAK,MAAM,MAAM,WAAS,MAAM,MAAM,CAAC;AAAA,IAClD,MAAM;AAAA,IACP,MAAM,IAAI,UACT,sBAAsB,qDACvB;AAAA;AAAA,EAED,IACC,OAAO,cAAc,YACrB,cAAc,QACd,QAAQ,IAAI,WAAW,QAAQ,MAAM,GACpC;AAAA,IACD,MAAM,IAAI,UACT,sBAAsB,6CACvB;AAAA,EACD;AAAA;AAGD,IAAM,4BAA4B,OAAO,WAAmB,SAAiB;AAAA,EAC5E,MAAM,aAAa,MAAM,QAAO,IAAI;AAAA,EACpC,IAAI;AAAA,IAAY,MAAM,kBAAkB,IAAI;AAAA,EAC5C,MAAM,SAAS,GAAG,QAAQ,OAAO,WAAW;AAAA,EAC5C,IAAI;AAAA,IAAY,MAAM,QAAO,MAAM,MAAM;AAAA,EACzC,IAAI;AAAA,IACH,MAAM,QAAO,WAAW,IAAI;AAAA,IAC3B,OAAO,OAAO;AAAA,IACf,IAAI;AAAA,MAAY,MAAM,QAAO,QAAQ,IAAI;AAAA,IACzC,MAAM;AAAA;AAAA,EAEP,IAAI;AAAA,IAAY,MAAM,IAAG,QAAQ,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA;AAGlE,IAAM,kBAAkB,OACvB,MACA,MACA,UACI;AAAA,EACJ,MAAM,YAAY,SAAQ,MAAM,MAAM,aAAa;AAAA,EACnD,MAAM,OAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAAA,EAE1C,OAAO,QAAQ,IACd,MAAM,IAAI,QAAQ,MAAM,cAAc;AAAA,IACrC,MAAM,OAAO,SAAQ,WAAW,IAAI;AAAA,IACpC,MAAM,YAAY,MAAM,GAAG,KAAK,UAAU,UAAU,MAAM,CAAC;AAAA,CAAK;AAAA,IAEhE,OAAO;AAAA,GACP,CACF;AAAA;AAGD,IAAM,uBAAuB,CAC5B,QACA,cAEA,OAAO,cAAc,QAAQ,CAAC,SAAS;AAAA,EACtC,MAAM,YAAmC,CAAC;AAAA,EAC1C,IAAI,UAAU;AAAA,IACb,UAAU,KAAK;AAAA,MACd,UAAU,UAAU;AAAA,MACpB;AAAA,MACA,MAAM;AAAA,MACN,UAAU;AAAA,IACX,CAAC;AAAA,EACF,IAAI,UAAU;AAAA,IACb,UAAU,KAAK;AAAA,MACd,UAAU,UAAU;AAAA,MACpB;AAAA,MACA,MAAM;AAAA,MACN,UAAU;AAAA,IACX,CAAC;AAAA,EAEF,OAAO;AAAA,CACP;AAEK,IAAM,4CAA4C,OACxD,QACA,oBACI;AAAA,EACJ,MAAM,OAAO,SAAQ,eAAe;AAAA,EACpC,MAAM,YAAY,GAAG,QAAQ,OAAO,WAAW;AAAA,EAC/C,MAAM,YAAY,yCAAyC,QAAQ;AAAA,IAClE,YAAY;AAAA,EACb,CAAC;AAAA,EACD,MAAM,QAAkC,CAAC;AAAA,EACzC,IAAI,UAAU;AAAA,IAAS,MAAM,KAAK,CAAC,mBAAmB,UAAU,OAAO,CAAC;AAAA,EACxE,IAAI,UAAU,OAAO;AAAA,IACpB,MAAM,KAAK,CAAC,8BAA8B,UAAU,KAAK,CAAC;AAAA,EAC3D;AAAA,EACA,MAAM,OAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1C,IAAI;AAAA,IACH,MAAM,kBACL,MAAM,QAAQ,IACb,OAAO,cAAc,IAAI,CAAC,SACzB,gBAAgB,WAAW,MAAM,KAAK,CACvC,CACD,GACC,KAAK;AAAA,IACP,MAAM,YACL,SAAQ,WAAW,cAAc,GACjC,GAAG,KAAK,UAAU,EAAE,QAAQ,GAAG,OAAO,OAAO,cAAc,GAAG,MAAM,CAAC;AAAA,CACtE;AAAA,IACA,MAAM,0BAA0B,WAAW,IAAI;AAAA,IAC/C,MAAM,UAAU,eAAe,IAAI,CAAC,SACnC,SAAQ,MAAM,KAAK,MAAM,UAAU,SAAS,CAAC,CAAC,CAC/C;AAAA,IAEA,OAAO,EAAE,MAAM,QAAQ;AAAA,IACtB,OAAO,OAAO;AAAA,IACf,MAAM,IAAG,WAAW,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,IACpD,MAAM;AAAA;AAAA;AAID,IAAM,uCAAuC,OACnD,QACA,UAAsC,WAAW,UAC7C;AAAA,EACJ,MAAM,YAAY,yCAAyC,QAAQ;AAAA,IAClE,YAAY;AAAA,EACb,CAAC;AAAA,EACD,MAAM,UAAU,MAAM,QAAQ,IAC7B,qBAAqB,QAAQ,SAAS,EAAE,IAAI,OAAO,aAAa;AAAA,IAC/D,MAAM,MAAM,WAAW,SAAS,OAAO,SAAS;AAAA,IAChD,MAAM,WAAW,MAAM,QAAQ,KAAK;AAAA,MACnC,UAAU;AAAA,MACV,QAAQ,YAAY,QAAQ,iBAAiB;AAAA,IAC9C,CAAC;AAAA,IACD,IAAI,SAAS,WAAW,SAAS;AAAA,MAChC,MAAM,IAAI,UACT,GAAG,SAAS,gDAAgD,aAAa,SAAS,oCACnF;AAAA,IACD;AAAA,IACA,MAAM,cAAc,SAAS,QAAQ,IAAI,cAAc,KAAK;AAAA,IAC5D,IAAI,CAAC,YAAY,YAAY,EAAE,WAAW,kBAAkB,GAAG;AAAA,MAC9D,MAAM,IAAI,UACT,GAAG,SAAS,gDAAgD,iCAC7D;AAAA,IACD;AAAA,IACA,IAAI;AAAA,IACJ,IAAI;AAAA,MACH,WAAW,MAAM,SAAS,KAAK;AAAA,MAC9B,MAAM;AAAA,MACP,MAAM,IAAI,UACT,GAAG,SAAS,gDAAgD,oBAC7D;AAAA;AAAA,IAED,IACC,KAAK,UAAU,QAAQ,MAAM,KAAK,UAAU,SAAS,QAAQ,GAC5D;AAAA,MACD,MAAM,IAAI,UACT,GAAG,SAAS,gDAAgD,wDAC7D;AAAA,IACD;AAAA,IAEA,OAAO,EAAE,UAAU,SAAS,UAAU,IAAI;AAAA,GAC1C,CACF;AAAA,EAEA,OAAO,EAAE,QAAQ;AAAA;;ACxVX,IAAM,+BAA+B;AAU5C,IAAM,cAAa,IAAI,IAAY;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,IAAM,YAAW,CAAC,UACjB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAEpE,IAAM,mBAAkB,CACvB,UAEA,OAAO,UAAU,YAAY,YAAW,IAAI,KAAK;AAE3C,IAAM,uCAAuC,CACnD,UACiD;AAAA,EACjD,IAAI,CAAC,UAAS,KAAK;AAAA,IAAG;AAAA,EACtB,IACC,OAAO,MAAM,cAAc,YAC3B,OAAO,MAAM,aAAa,YAC1B,CAAC,iBAAgB,MAAM,SAAS,KAChC,OAAO,MAAM,WAAW,YACxB,OAAO,MAAM,oBAAoB,UAChC;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,WAAW,MAAM;AAAA,IACjB,UAAU,MAAM;AAAA,IAChB,WAAW,MAAM;AAAA,IACjB,QAAQ,MAAM;AAAA,IACd,iBAAiB,MAAM;AAAA,EACxB;AAAA;;AClDD,qBAAS;AACT,iBAAS,mBAAM;AACf,0BAAS;;;ACFT,uBAAS;AACT,kBAAS,oBAAO,yBAAU;AAC1B,qBAAS,sBAAU,2BAAkB,mBAAM,sBAAU;AA4BrD,IAAM,SAAS,CAAC,UACf,YAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAEhD,IAAM,wBACL;AAED,IAAM,2BAA2B,CAChC,QACA,aAEA,OAAO,QACN,uBACA,CAAC,OAAO,QAAgB,MAAc,WAAmB;AAAA,EACxD,IAAI,KAAK,SAAS,cAAc;AAAA,IAAG,OAAO;AAAA,EAC1C,MAAM,MAAM,SAAS,UAAS,MAAM,QAAQ,IAAI,CAAC,CAAC;AAAA,EAClD,MAAM,YAAY,SAAS;AAAA,EAE3B,OAAO,YAAY,GAAG,SAAS,YAAY,WAAW;AAAA,CAExD;AAED,IAAM,mBAAmB,CAAC,UAGzB,qCACC,MAAM,OAAO,SAAS,6BACvB;AAED,IAAM,mBAAmB,CAAC,gBAAwB,cAAsB;AAAA,EACvE,MAAM,yBAAyB,SAAQ,cAAc;AAAA,EACrD,MAAM,gBAAgB,SAAQ,SAAS;AAAA,EACvC,IAAI,cAAc,WAAW,GAAG,yBAAyB,GAAG;AAAA,IAC3D,OAAO;AAAA,EACR;AAAA,EAEA,OAAO,MAAK,gBAAgB,UAAU,QAAQ,QAAQ,EAAE,CAAC;AAAA;AAG1D,IAAM,UAAU,OACf,UACA,UACA,mBACI;AAAA,EACJ,MAAM,YAAY,SAAS,SAAS;AAAA,EACpC,IAAI,CAAC,WAAW;AAAA,IACf,MAAM,IAAI,UACT,eAAe,SAAS,4CAA4C,SAAS,YAC9E;AAAA,EACD;AAAA,EACA,IAAI,oBAAoB,iBAAiB,gBAAgB,SAAS;AAAA,EAClE,IAAI,SAAS,cAAc,UAAU,SAAS,cAAc,QAAQ;AAAA,IACnE,MAAM,SAAS,MAAM,WAAS,mBAAmB,MAAM;AAAA,IACvD,MAAM,YAAY,yBAAyB,QAAQ,QAAQ;AAAA,IAC3D,MAAM,eAAe,OAAO,IAAI,YAAY,EAAE,OAAO,SAAS,CAAC;AAAA,IAC/D,oBAAoB,MACnB,gBACA,eACA,gBACA,GAAG,mBACJ;AAAA,IACA,MAAM,OAAM,SAAQ,iBAAiB,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,IAC3D,MAAM,WAAU,mBAAmB,SAAS;AAAA,EAC7C;AAAA,EACA,MAAM,eAAe,SAAS,UAAU,QAAQ,WAAW,EAAE;AAAA,EAC7D,MAAM,iBAAiB;AAAA,IACtB,GAAG;AAAA,IACH,GAAG;AAAA,EACJ,EACE,IAAI,CAAC,QAAQ,SAAS,IAAI,EAC1B,KAAK,CAAC,SAAyB,OAAO,SAAS,QAAQ;AAAA,EACzD,MAAM,oBAAoB,iBACvB,iBAAiB,gBAAgB,cAAc,IAC/C;AAAA,EACH,OAAO,OAAO,cAAc,MAAM,QAAQ,IAAI;AAAA,IAC7C,WAAS,iBAAiB;AAAA,IAC1B,oBAAoB,WAAS,iBAAiB,IAAI;AAAA,EACnD,CAAC;AAAA,EACD,MAAM,aAAa,IAAI,UAAS,SAAQ,cAAc,GAAG,iBAAiB,EAAE,WAAW,MAAM,GAAG;AAAA,EAChG,MAAM,kBAAkB,oBACrB,IAAI,UAAS,SAAQ,cAAc,GAAG,iBAAiB,EAAE,WAAW,MAAM,GAAG,MAC7E;AAAA,EAEH,OAAO;AAAA,IACN,YAAY,OAAO,KAAK;AAAA,IACxB;AAAA,IACA,UAAU,SAAS;AAAA,IACnB,WAAW,SAAS;AAAA,IACpB,QAAQ,SAAS;AAAA,IACjB,iBAAiB,SAAS;AAAA,OACtB,cAAc,kBACf;AAAA,MACA,iBAAiB,OAAO,UAAU;AAAA,MAClC;AAAA,IACD,IACC,CAAC;AAAA,EACL;AAAA;AAGM,IAAM,0CAA0C,OACtD,YACuD;AAAA,EACvD,OAAO,UAAU,iBAAiB,MAAM,QAAQ,IAAI;AAAA,IACnD,gCAAgC,QAAQ,GAAG;AAAA,IAC3C,WAAS,QAAQ,YAAY;AAAA,EAC9B,CAAC;AAAA,EACD,IAAI,SAAS,WAAW,GAAG;AAAA,IAC1B,MAAM,IAAI,UACT,+FACD;AAAA,EACD;AAAA,EACA,MAAM,iBAAiB,IAAI;AAAA,EAC3B,aAAa,cAAc,UAAU;AAAA,IACpC,MAAM,QAAQ,eAAe,IAAI,SAAS,MAAM;AAAA,IAChD,IAAI,SAAS,KAAK,UAAU,KAAK,MAAM,KAAK,UAAU,QAAQ,GAAG;AAAA,MAChE,MAAM,IAAI,UACT,eAAe,SAAS,8CACzB;AAAA,IACD;AAAA,IACA,eAAe,IAAI,SAAS,QAAQ,QAAQ;AAAA,EAC7C;AAAA,EACA,MAAM,QAAQ,MAAM,QAAQ,IAC3B,CAAC,GAAG,eAAe,OAAO,CAAC,EAAE,IAAI,CAAC,aACjC,QAAQ,UAAU,QAAQ,UAAU,QAAQ,cAAc,CAC3D,CACD;AAAA,EACA,MAAM,eAAe,OAAO,aAAa;AAAA,EACzC,MAAM,WAAW,WAAW,OAC3B,IAAI,YAAY,EAAE,OACjB,KAAK,UAAU;AAAA,IACd,OAAO,MAAM,IACZ;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,WACM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,SACI,mBAAmB,kBACpB,EAAE,iBAAiB,gBAAgB,IACnC,CAAC;AAAA,IACL,EACD;AAAA,IACA;AAAA,IACA,SAAS,QAAQ;AAAA,EAClB,CAAC,CACF,CACD;AAAA,EACA,MAAM,cAAc,IAAI,KACtB,QAAQ,qBAAqB,CAAC,GAAG,IAAI,GAAG,YAAY,KAAK,CAC3D;AAAA,EACA,IACC,YAAY,OAAO,KAClB,YAAY,SAAS,KAAK,CAAC,YAAY,IAAI,QAAQ,KAAK,GACxD;AAAA,IACD,MAAM,IAAI,UACT,gEACD;AAAA,EACD;AAAA,EACA,MAAM,aAAY,QAAQ,mBAAmB,KAC5C,CAAC,cACA,UAAS,aAAa,YACtB,UAAS,YAAY,QAAQ,OAC/B;AAAA,EACA,MAAM,aACL,YAAW,cACX,KAAK,IACJ,GACA,IAAI,QAAQ,qBAAqB,CAAC,GAAG,IACpC,CAAC,cAAa,UAAS,UACxB,CACD,IAAI;AAAA,EACL,MAAM,WAAW,0CAA0C;AAAA,IAC1D;AAAA,IACA,OAAO,QAAQ;AAAA,IACf;AAAA,IACA;AAAA,IACA,UAAU;AAAA,MACT,YAAY;AAAA,MACZ,OAAO,cAAc;AAAA,MACrB,YAAY,QAAQ,kBAAkB;AAAA,MACtC,QAAQ,QAAQ,kBAAkB;AAAA,IACnC;AAAA,IACA,QAAQ,SAAS,IAAI,GAAG,YAAY,KAAK;AAAA,IACzC,SAAS,QAAQ;AAAA,EAClB,CAAC;AAAA,EAED,OAAO,EAAE,UAAU,UAAU,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;AAAA;AAEjD,IAAM,kCAAkC,OAC9C,QACI;AAAA,EACJ,IAAI,IAAI;AAAA,IAAS,MAAM,IAAI;AAAA,EAC3B,IAAI,QAAQ;AAAA,EACZ,MAAM,WAAW,IAAI,OAAO,QAAQ,CAAC,UAAU;AAAA,IAC9C,MAAM,WAAW,iBAAiB,KAAK;AAAA,IACvC,IAAI,CAAC,YAAa,MAAM,WAAW,SAAS,MAAM,WAAW,QAAS;AAAA,MACrE,OAAO,CAAC;AAAA,IACT;AAAA,IAEA,OAAO;AAAA,MACN;AAAA,QACC;AAAA,QACA,OAAO;AAAA,UACN,QAAQ,MAAM,WAAW,QAAQ,QAAQ;AAAA,UACzC,QAAQ,SAAS;AAAA,UACjB,SAAS,MAAM;AAAA,QAChB;AAAA,MACD;AAAA,IACD;AAAA,GACA;AAAA,EACD,MAAM,aAAa,IAAI;AAAA,EACvB,aAAa,UAAU,WAAW,UAAU;AAAA,IAC3C,MAAM,QAAQ,WAAW,IAAI,GAAG,MAAM,UAAU,MAAM,SAAS;AAAA,IAC/D,IAAI,SAAS,UAAU,SAAS,QAAQ;AAAA,MACvC,MAAM,IAAI,UACT,gBAAgB,MAAM,UAAU,MAAM,qCACvC;AAAA,IACD;AAAA,IACA,WAAW,IAAI,GAAG,MAAM,UAAU,MAAM,WAAW,SAAS,MAAM;AAAA,EACnE;AAAA,EAEA,OAAO;AAAA;;;AChQR;AAAA;AAAA,cAEC;AAAA,WACA;AAAA,aACA;AAAA,cACA;AAAA,YACA;AAAA,QACA;AAAA,eACA;AAAA;AAED,uBAAS;AACT,qBAAS,sBAAU,qBAAS,kBAAS,mBAAM,sBAAU;;;ACTrD,IAAM,4BAA4B;AAElC,IAAM,sBAAsB,CAAC,YAAoB;AAAA,EAChD,IAAI,YAAY;AAAA,IAAK,OAAO;AAAA,EAC5B,IAAI,QAAQ,WAAW,GAAG,KAAK,QAAQ,SAAS,GAAG;AAAA,IAAG,OAAO;AAAA,EAC7D,IAAI,QAAQ,WAAW,GAAG;AAAA,IAAG,OAAO;AAAA,EAEpC,OAAO,QAAQ,QAAQ,2BAA2B,MAAM;AAAA;AAGlD,IAAM,oCAAoC,CAChD,SACA,aACI;AAAA,EACJ,MAAM,aAAa,QAAQ,MAAM,GAAG,EAAE,IAAI,mBAAmB,EAAE,KAAK,GAAG;AAAA,EAEvE,OAAO,IAAI,OAAO,IAAI,eAAe,EAAE,KAAK,QAAQ;AAAA;AAG9C,IAAM,6BAA6B,CACzC,QACA,UACA,SAAyB,UAEzB,OAAO,KACN,CAAC,UACA,MAAM,WAAW,UACjB,kCAAkC,MAAM,SAAS,QAAQ,CAC3D;;;ACvBM,IAAM,uCAAuC,OAAO,IAC1D,4CACD;AAEA,IAAM,cAAa,IAAI,IAAY;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,IAAM,sBAAsB,CAC3B,UAEA,OAAO,UAAU,YACjB,UAAU,SACV,gBAAgB,UAChB,OAAO,MAAM,eAAe,aAC5B,cAAc,UACd,OAAO,MAAM,aAAa,aAC1B,eAAe,UACf,OAAO,MAAM,cAAc,YAC3B,YAAW,IAAI,MAAM,SAAS,MAC9B,YAAY,UACZ,OAAO,MAAM,WAAW,aACxB,qBAAqB,UACrB,OAAO,MAAM,oBAAoB;AAE3B,IAAM,0CAA0C,MAAM;AAAA,EAC5D,MAAM,QAAiB,QAAQ,IAC9B,YACA,oCACD;AAAA,EACA,IACC,OAAO,UAAU,YACjB,UAAU,QACV,EAAE,cAAc,UAChB,OAAO,MAAM,aAAa,YACzB;AAAA,IACD;AAAA,EACD;AAAA,EACA,MAAM,UAAmB,MAAM,SAAS;AAAA,EACxC,IACC,OAAO,YAAY,YACnB,YAAY,QACZ,EAAE,UAAU,YACZ,CAAC,oBAAoB,QAAQ,IAAI,KACjC,EAAE,eAAe,YACjB,OAAO,QAAQ,cAAc,UAC5B;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO,EAAE,MAAM,QAAQ,MAAM,WAAW,QAAQ,UAAU;AAAA;;;AC1DpD,IAAM,kCACZ;AACM,IAAM,wCAAwC;AACrD,IAAM,qBAAqB;AAC3B,IAAM,YAAY;AAClB,IAAM,sBAAsB;AAC5B,IAAM,0BAA0B;AAEzB,IAAM,8BAA8B;AAAA,EAC1C,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AACV;AA+FA,IAAM,iBAAiB,CAAC,UACvB,MAAM,MAAM,KAAK,CAAC,EAAE,IAAI,KAAK,EAAE,YAAY;AAErC,IAAM,4BAA4B,CAAC,YAAiC;AAAA,EAC1E,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EAErB,QAAQ,QAAQ,QAAQ,IAAI,QAAQ,KAAK,IACvC,MAAM,GAAG,EACT,KACA,CAAC,UAAU,eAAe,KAAK,MAAM,+BACtC;AAAA;AAGF,IAAM,qBAAqB,CAAC,SAAkB,SAAiB;AAAA,EAC9D,MAAM,QAAQ,QAAQ,QAAQ,IAAI,IAAI,GAAG,KAAK;AAAA,EAE9C,OAAO,QAAQ,QAAQ;AAAA;AAGjB,IAAM,iCAAiC,CAC7C,YAC6B;AAAA,EAC7B,IAAI,CAAC,WAAW,CAAC,0BAA0B,OAAO,GAAG;AAAA,IACpD,OAAO,EAAE,MAAM,aAAa;AAAA,EAC7B;AAAA,EAEA,MAAM,gBAAgB,mBACrB,SACA,4BAA4B,QAC7B;AAAA,EACA,MAAM,UAAU,mBACf,SACA,4BAA4B,OAC7B;AAAA,EACA,MAAM,WAAW,mBAChB,SACA,4BAA4B,QAC7B;AAAA,EACA,MAAM,aAAa,mBAClB,SACA,4BAA4B,UAC7B;AAAA,EACA,MAAM,qBAAqB,mBAC1B,SACA,4BAA4B,aAC7B;AAAA,EACA,MAAM,SAAS,mBACd,SACA,4BAA4B,MAC7B;AAAA,EAEA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,KAAK,aAAa,GAAG;AAAA,IACnD,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS,sBAAsB,4BAA4B;AAAA,IAC5D;AAAA,EACD;AAAA,EACA,IAAI,CAAC,SAAS;AAAA,IACb,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS,WAAW,4BAA4B;AAAA,IACjD;AAAA,EACD;AAAA,EACA,IAAI,CAAC,UAAU;AAAA,IACd,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS,WAAW,4BAA4B;AAAA,IACjD;AAAA,EACD;AAAA,EACA,IAAI,CAAC,YAAY;AAAA,IAChB,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS,WAAW,4BAA4B;AAAA,IACjD;AAAA,EACD;AAAA,EACA,IAAI,CAAC,oBAAoB;AAAA,IACxB,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS,WAAW,4BAA4B;AAAA,IACjD;AAAA,EACD;AAAA,EACA,IAAI,CAAC,QAAQ;AAAA,IACZ,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS,WAAW,4BAA4B;AAAA,IACjD;AAAA,EACD;AAAA,EAEA,MAAM,gBAAgB;AAAA,IACrB,GAAG,IAAI,IACN,mBACE,MAAM,GAAG,EACT,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,EAC3B,OAAO,OAAO,CACjB;AAAA,EACD;AAAA,EACA,IAAI,cAAc,WAAW,GAAG;AAAA,IAC/B,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS,GAAG,4BAA4B;AAAA,IACzC;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,QAAQ;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,OAAO,aAAa;AAAA,MAC9B;AAAA,IACD;AAAA,IACA,MAAM;AAAA,EACP;AAAA;AAGD,IAAM,kBAAkB,MAAM;AAAA,EAC7B,MAAM,UAAU,IAAI,QAAQ;AAAA,IAC3B,iBAAiB;AAAA,IACjB,gBAAgB,GAAG,4CAA4C;AAAA,EAChE,CAAC;AAAA,EACD,iBAAiB,QAAQ,CAAC,UAAU,QAAQ,OAAO,QAAQ,KAAK,CAAC;AAAA,EAEjE,OAAO;AAAA;AAGR,IAAM,mBAAmB;AAAA,EACxB;AAAA,EACA,4BAA4B;AAAA,EAC5B,4BAA4B;AAAA,EAC5B,4BAA4B;AAAA,EAC5B,4BAA4B;AAAA,EAC5B,4BAA4B;AAAA,EAC5B,4BAA4B;AAC7B;AAEA,IAAM,mBAAmB,CACxB,UACA,WAEA,IAAI,SACH,KAAK,UAAU;AAAA,EACd,UAAU;AAAA,EACV;AACD,CAAsC,GACtC,EAAE,SAAS,gBAAgB,GAAG,OAAO,CACtC;AAED,IAAM,YAAW,CAAC,UACjB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAEpE,IAAM,qBAAqB,CAAC,UAAmC;AAAA,EAC9D,MAAM,aAAa,KAAK,UAAU,KAAK;AAAA,EACvC,IAAI,eAAe,WAAW;AAAA,IAC7B,MAAM,IAAI,UAAU,8CAA8C;AAAA,EACnE;AAAA,EAEA,MAAM,SAAkB,KAAK,MAAM,UAAU;AAAA,EAC7C,IAAI,CAAC,UAAS,MAAM,GAAG;AAAA,IACtB,MAAM,IAAI,UAAU,gDAAgD;AAAA,EACrE;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,6BAA6B,CAClC,SACA,UACI;AAAA,EACJ,QAAQ,SAAS;AAAA,EACjB,IACC,KAAK,WAAW,MAAM,cAAc,UACpC,KAAK,cAAc,MAAM,cAAc,WACtC;AAAA,IACD,OAAO,iBACN;AAAA,MACC,MAAM;AAAA,MACN,SACC;AAAA,IACF,GACA,kBACD;AAAA,EACD;AAAA,EAEA,IAAI;AAAA,IACH,OAAO,yBAAyB,MAAM,cAAc;AAAA,IACpD,IAAI,CAAC,uBAAuB;AAAA,MAC3B,MAAM,IAAI,UAAU,4CAA4C;AAAA,IACjE;AAAA,IAEA,OAAO,iBACN;AAAA,MACC,UAAU,KAAK;AAAA,MACf,WAAW,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO,mBACN,sBAAsB,SAAS,MAAM,KAAK,CAC3C;AAAA,MACA,QAAQ,MAAM,UAAU;AAAA,IACzB,GACA,MAAM,UAAU,SACjB;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,MACP,8BAA8B,QAAQ,wBAAwB,KAAK,WACnE,KACD;AAAA,IAEA,OAAO,sCAAsC,KAAK,MAAM;AAAA;AAAA;AAInD,IAAM,6CAA6C,CAAC,YAC1D,iBAAiB,EAAE,MAAM,mBAAmB,QAAQ,GAAG,kBAAkB;AAEnE,IAAM,wCAAwC,CAAC,WACrD,iBACC;AAAA,EACC,MAAM;AAAA,EACN,MAAM;AAAA,EACN;AAAA,EACA,QAAQ;AACT,GACA,mBACD;AAEM,IAAM,sCAAsC,CAClD,WACI,iBAAiB,QAAQ,uBAAuB;AAE9C,IAAM,6BAA6B,CACzC,UACI;AAAA,EACJ,MAAM,SAAS,+BAA+B,MAAM,OAAO;AAAA,EAC3D,IAAI,OAAO,SAAS;AAAA,IAAc;AAAA,EAClC,IAAI,OAAO,SAAS,WAAW;AAAA,IAC9B,OAAO,iBACN,EAAE,MAAM,mBAAmB,SAAS,OAAO,QAAQ,GACnD,kBACD;AAAA,EACD;AAAA,EAEA,QAAQ,WAAW;AAAA,EACnB,IAAI,OAAO,WAAW,MAAM,cAAc,QAAQ;AAAA,IACjD,OAAO,iBACN;AAAA,MACC,MAAM;AAAA,MACN,SAAS,yBAAyB,OAAO,yBAAyB,MAAM,cAAc;AAAA,IACvF,GACA,kBACD;AAAA,EACD;AAAA,EACA,MAAM,kBAAkB,wCAAwC;AAAA,EAChE,IAAI;AAAA,IACH,OAAO,2BAA2B,iBAAiB,KAAK;AAAA,EACzD,IAAI,OAAO,aAAa,uCAAuC;AAAA,IAC9D,OAAO,iBACN;AAAA,MACC,MAAM;AAAA,MACN,QAAQ,MAAM,cAAc;AAAA,MAC5B,QAAQ;AAAA,IACT,GACA,uBACD;AAAA,EACD;AAAA,EACA,IAAI,CAAC,MAAM,cAAc,SAAS,SAAS,OAAO,OAAO,GAAG;AAAA,IAC3D,OAAO,iBACN;AAAA,MACC,MAAM;AAAA,MACN,QAAQ,MAAM,cAAc;AAAA,MAC5B,QAAQ;AAAA,MACR,mBAAmB,CAAC,GAAG,MAAM,cAAc,QAAQ;AAAA,IACpD,GACA,uBACD;AAAA,EACD;AAAA,EAEA,MAAM,kBAAkB,IAAI,IAAI,OAAO,aAAa;AAAA,EACpD,MAAM,iBAAiB,MAAM,cAAc,gBAAgB,KAC1D,GAAG,eAAe,gBAAgB,IAAI,QAAQ,CAC/C;AAAA,EACA,IAAI,CAAC,gBAAgB;AAAA,IACpB,OAAO,iBACN;AAAA,MACC,MAAM;AAAA,MACN,QAAQ,MAAM,cAAc;AAAA,MAC5B,QAAQ;AAAA,MACR,oBAAoB,MAAM,cAAc,gBAAgB,IACvD,GAAG,eAAe,QACnB;AAAA,IACD,GACA,uBACD;AAAA,EACD;AAAA,EAEA,IAAI;AAAA,IACH,OAAO,iBACN;AAAA,MACC,UAAU,eAAe;AAAA,MACzB,WAAW,MAAM,cAAc;AAAA,MAC/B,MAAM;AAAA,MACN,QAAQ,MAAM,cAAc;AAAA,MAC5B,OAAO,mBAAmB,eAAe,SAAS,MAAM,KAAK,CAAC;AAAA,MAC9D,QAAQ,MAAM,UAAU;AAAA,IACzB,GACA,MAAM,UAAU,SACjB;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,MACP,8BAA8B,MAAM,cAAc,yBAAyB,eAAe,aAC1F,KACD;AAAA,IAEA,OAAO,iBACN;AAAA,MACC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ,MAAM,cAAc;AAAA,MAC5B,QAAQ;AAAA,IACT,GACA,mBACD;AAAA;AAAA;;;AClZK,MAAM,wCAAwC,MAAM;AAAA,EAO1D,WAAW,CACV,MACA,SACC;AAAA,IACD,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA;AAEd;AAEO,IAAM,4BAA4B,OACxC,SAAqC,WACjC;AAAA,EACJ,MAAM,UAAU,OAAO;AAAA,EACvB,OAAO,4BAA4B;AAAA,EACnC,OAAO,0BAA0B;AAAA,EACjC,IAAI;AAAA,IAAS,MAAM,QAAQ;AAAA;AAG5B,IAAM,cAAa,IAAI,IAAY;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AACD,IAAM,iBAAiB,IAAI,IAAY;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,IAAM,YAAW,CAAC,UACjB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAEpE,IAAM,cAAc,CAAC,UACpB,OAAO,UAAU,YAAY,YAAW,IAAI,KAAK;AAElD,IAAM,kBAAkB,CACvB,UAEA,OAAO,UAAU,YAAY,eAAe,IAAI,KAAK;AAEtD,IAAM,kBAAkB,CACvB,UAC8B;AAAA,EAC9B,IACC,OAAO,MAAM,aAAa,YAC1B,CAAC,YAAY,MAAM,SAAS,KAC5B,OAAO,MAAM,WAAW,YACxB,OAAO,MAAM,WAAW,UACvB;AAAA,IACD,MAAM,IAAI,gCACT,oBACA,6DACD;AAAA,EACD;AAAA,EACA,IAAI,CAAC,UAAS,MAAM,KAAK,GAAG;AAAA,IAC3B,MAAM,IAAI,gCACT,iBACA,8DACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,UAAU,MAAM;AAAA,IAChB,WAAW,MAAM;AAAA,IACjB,MAAM;AAAA,IACN,QAAQ,MAAM;AAAA,IACd,OAAO,MAAM;AAAA,IACb,QAAQ,MAAM;AAAA,EACf;AAAA;AAGD,IAAM,qBAAqB,CAC1B,UACyC;AAAA,EACzC,IAAI,OAAO,MAAM,WAAW,YAAY,CAAC,gBAAgB,MAAM,MAAM,GAAG;AAAA,IACvE,MAAM,IAAI,gCACT,oBACA,oDACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,MAAM;AAAA,IACd,QAAQ,MAAM;AAAA,IACd,oBAAoB,MAAM,QAAQ,MAAM,kBAAkB,IACvD,MAAM,mBAAmB,OACzB,CAAC,aACA,OAAO,aAAa,QACtB,IACC;AAAA,IACH,mBAAmB,MAAM,QAAQ,MAAM,iBAAiB,IACrD,MAAM,kBAAkB,OACxB,CAAC,YAA+B,OAAO,YAAY,QACpD,IACC;AAAA,EACJ;AAAA;AAGM,IAAM,6BAA6B,OACzC,OACA,YACI;AAAA,EACJ,MAAM,WAAW,gCAAgC,KAAK;AAAA,EACtD,IAAI,SAAS,SAAS,SAAS,oBAAoB;AAAA,IAClD,OAAO,SAAS;AAAA,EACjB;AAAA,EACA,IAAI,SAAS,SAAS,SAAS,QAAQ;AAAA,IACtC,MAAM,IAAI,gCACT,oBACA,6CACD;AAAA,EACD;AAAA,EAEA,MAAM,SAAqC,QAAQ,UAAU;AAAA,EAC7D,MAAM,0BAA0B,MAAM;AAAA,EACtC,OAAO,oBAAoB,SAAS,SAAS;AAAA,EAC7C,OAAO,kCAAkC,SAAS,SAAS;AAAA,EAC3D,OAAO,gCAAgC;AAAA,EACvC,MAAM,QAAQ,SAAS;AAAA,IACtB,UAAU,SAAS,SAAS;AAAA,IAC5B,QAAQ,SAAS,SAAS;AAAA,EAC3B,CAAC;AAAA,EACD,IAAI,OAAO,yBAAyB;AAAA,IACnC,MAAM,OAAO;AAAA,EACd;AAAA,EAEA,OAAO;AAAA,IACN,UAAU,SAAS,SAAS;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ,SAAS,SAAS;AAAA,EAC3B;AAAA;AAGM,IAAM,kCAAkC,CAAC,UAAmB;AAAA,EAClE,IAAI,CAAC,UAAS,KAAK,KAAK,CAAC,UAAS,MAAM,QAAQ,GAAG;AAAA,IAClD,MAAM,IAAI,gCACT,oBACA,+DACD;AAAA,EACD;AAAA,EACA,IAAI,MAAM,aAAa,uCAAuC;AAAA,IAC7D,MAAM,IAAI,gCACT,oBACA,oCAAoC,OAAO,MAAM,QAAQ,IAC1D;AAAA,EACD;AAAA,EAEA,QAAQ,SAAS,MAAM;AAAA,EACvB,IAAI,SAAS,QAAQ;AAAA,IACpB,OAAO;AAAA,MACN,UAAU;AAAA,MACV,UAAU,gBAAgB,MAAM,QAAQ;AAAA,IACzC;AAAA,EACD;AAAA,EACA,IAAI,SAAS,oBAAoB;AAAA,IAChC,OAAO;AAAA,MACN,UAAU;AAAA,MACV,UAAU,mBAAmB,MAAM,QAAQ;AAAA,IAC5C;AAAA,EACD;AAAA,EACA,IAAI,SAAS,mBAAmB;AAAA,IAC/B,MAAM,IAAI,gCACT,2BACA,OAAO,MAAM,SAAS,YAAY,WAC/B,MAAM,SAAS,UACf,8CACJ;AAAA,EACD;AAAA,EACA,IAAI,SAAS,SAAS;AAAA,IACrB,MAAM,IAAI,gCACT,gBACA,sEACD;AAAA,EACD;AAAA,EAEA,MAAM,IAAI,gCACT,oBACA,qCAAqC,OAAO,IAAI,IACjD;AAAA;;;AClNM,IAAM,yCAAyC;AAsCtD,IAAM,kBAAkB,CACvB,UACA,aACI;AAAA,EACJ,MAAM,QAAQ,2BAA2B,SAAS,QAAQ,QAAQ;AAAA,EAClE,IAAI,CAAC,OAAO;AAAA,IACX,MAAM,IAAI,UAAU,gCAAgC,WAAW;AAAA,EAChE;AAAA,EACA,MAAM,OAAO,SAAS,MAAM,KAC3B,CAAC,cAAc,UAAU,WAAW,MAAM,MAC3C;AAAA,EACA,IAAI,CAAC,MAAM;AAAA,IACV,MAAM,IAAI,UACT,gBAAgB,MAAM,mCAAmC,MAAM,SAChE;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,sBAAsB,CAC3B,UACA,SACI;AAAA,EACJ,MAAM,SAAS,IAAI,IAAI,SAAS,gBAAgB;AAAA,EAChD,MAAM,MAAM,IAAI,IAAI,MAAM,GAAG,OAAO,SAAS;AAAA,EAC7C,IAAI,IAAI,WAAW,OAAO,QAAQ;AAAA,IACjC,MAAM,IAAI,UAAU,iDAAiD;AAAA,EACtE;AAAA,EACA,IAAI,OAAO;AAAA,EAEX,OAAO;AAAA;AAGD,IAAM,kCAAkC,CAC9C,UACA,MACA,UAA0C,CAAC,MACvC;AAAA,EACJ,MAAM,MAAM,oBAAoB,UAAU,IAAI;AAAA,EAC9C,MAAM,OAAO,gBAAgB,UAAU,IAAI,QAAQ;AAAA,EACnD,MAAM,UAAU,IAAI,QAAQ,QAAQ,OAAO;AAAA,EAC3C,QAAQ,IAAI,UAAU,+BAA+B;AAAA,EACrD,QAAQ,IAAI,4BAA4B,UAAU,SAAS,QAAQ;AAAA,EACnE,QAAQ,IAAI,4BAA4B,YAAY,KAAK,UAAU;AAAA,EACnE,QAAQ,IAAI,4BAA4B,eAAe,KAAK,QAAQ;AAAA,EACpE,QAAQ,IAAI,4BAA4B,QAAQ,KAAK,MAAM;AAAA,EAC3D,QAAQ,IACP,4BAA4B,UAC5B,OAAO,qCAAqC,CAC7C;AAAA,EACA,QAAQ,IAAI,4BAA4B,SAAS,SAAS,OAAO;AAAA,EAEjE,OAAO,IAAI,QAAQ,KAAK,EAAE,SAAS,QAAQ,MAAM,CAAC;AAAA;AAG5C,IAAM,0BAA0B,OACtC,UACA,MACA,UAA0C,CAAC,MACvC;AAAA,EACJ,MAAM,UAAU,gCAAgC,UAAU,MAAM,OAAO;AAAA,EACvE,MAAM,WAAW,OAAO,QAAQ,SAAS,WAAW,OAAO,OAAO;AAAA,EAClE,MAAM,QAAiB,MAAM,SAAS,KAAK;AAAA,EAE3C,OAAO;AAAA;AAGD,IAAM,6BAA6B,OACzC,UACA,MACA,YAEI;AAAA,EACJ,MAAM,WAAW,MAAM,wBAAwB,UAAU,MAAM,OAAO;AAAA,EAEtE,OAAO,2BAA2B,UAAU,OAAO;AAAA;AAG7C,IAAM,gCAAgC,CAC5C,UACA,UACI;AAAA,EACJ,MAAM,MAAM,IAAI,IAAI,KAAK;AAAA,EACzB,IAAI,IAAI,YAAY,IAAI,UAAU;AAAA,IACjC,MAAM,IAAI,UAAU,+CAA+C;AAAA,EACpE;AAAA,EACA,MAAM,cACL,IAAI,aAAa,YACjB,SAAS,cAAc,SAAS,IAAI,SAAS,YAAY,CAAC;AAAA,EAC3D,MAAM,iBACL,SAAS,mBAAmB,aAC5B,IAAI,aAAa,GAAG,SAAS;AAAA,EAC9B,IAAI,CAAC,eAAe,CAAC,gBAAgB;AAAA,IACpC,MAAM,IAAI,UACT,sDACD;AAAA,EACD;AAAA,EAEA,OAAO,GAAG,IAAI,YAAY,MAAM,IAAI,SAAS,IAAI;AAAA;AAG3C,IAAM,kCAAkC,CAC9C,UACA,OACA,gBACI;AAAA,EACJ,MAAM,MAAM,IAAI,IAAI,OAAO,GAAG,cAAc;AAAA,EAC5C,MAAM,QAAQ,IAAI,IAAI,WAAW;AAAA,EACjC,MAAM,aAAa,IAAI,IAAI,SAAS,gBAAgB;AAAA,EACpD,MAAM,UAAU,CAAC,WAAgB,YAChC,UAAU,aAAa,QAAQ,YAC/B,UAAU,SAAS,QAAQ;AAAA,EAC5B,IAAI,CAAC,QAAQ,KAAK,KAAK,KAAK,CAAC,QAAQ,KAAK,UAAU,GAAG;AAAA,IACtD;AAAA,EACD;AAAA,EAEA,OAAO,GAAG,IAAI,WAAW,IAAI,SAAS,IAAI;AAAA;;;ALvI3C,IAAM,gBAAgB;AACtB,IAAM,iBAAiB;AACvB,IAAM,aAAa;AACnB,IAAM,gCACL;AACD,IAAM,mCACL;AACD,IAAM,8BAA8B,IAAI,IAAI;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AACD,IAAM,2BAA2B,CAAC,UAAU,QAAQ,QAAQ,SAAS;AAErE,IAAM,gBAAe,CAAC,OAAgB,SACrC,OAAO,UAAU,YACjB,UAAU,QACV,QAAQ,IAAI,OAAO,MAAM,MAAM;AAEhC,IAAM,uBAAuB,MAAM;AAAA,EAClC,MAAM,YAAY,CAAC,MAAM,IAAI,EAC3B,IAAI,CAAC,cACL,MAAK,YAAY,KAAK,kBAAkB,WAAW,CACpD,EACC,KAAK,WAAU;AAAA,EACjB,IAAI;AAAA,IAAW,OAAO;AAAA,EAEtB,MAAM,IAAI,UAAU,sDAAsD;AAAA;AAG3E,IAAM,kBAAkB,MAAM;AAAA,EAC7B,MAAM,YAAY,CAAC,MAAM,IAAI,EAC3B,IAAI,CAAC,cAAc,MAAK,YAAY,KAAK,aAAa,WAAW,CAAC,EAClE,KAAK,WAAU;AAAA,EACjB,IAAI;AAAA,IAAW,OAAO;AAAA,EAEtB,MAAM,IAAI,UAAU,iDAAiD;AAAA;AAGtE,IAAM,sBAAsB,MAAM;AAAA,EACjC,MAAM,YAAY,CAAC,MAAM,IAAI,EAC3B,IAAI,CAAC,cAAc,MAAK,YAAY,KAAK,iBAAiB,WAAW,CAAC,EACtE,KAAK,WAAU;AAAA,EACjB,IAAI;AAAA,IAAW,OAAO;AAAA,EAEtB,MAAM,IAAI,UAAU,gDAAgD;AAAA;AAGrE,IAAM,kBAAkB,MAAM;AAAA,EAC7B,MAAM,YAAY,CAAC,MAAM,IAAI,EAC3B,IAAI,CAAC,cAAc,MAAK,YAAY,KAAK,aAAa,WAAW,CAAC,EAClE,KAAK,WAAU;AAAA,EACjB,IAAI;AAAA,IAAW,OAAO;AAAA,EAEtB,MAAM,IAAI,UAAU,iDAAiD;AAAA;AAGtE,IAAM,sBAAsB,MAAM;AAAA,EACjC,MAAM,YAAY,CAAC,MAAM,IAAI,EAC3B,IAAI,CAAC,cAAc,MAAK,YAAY,KAAK,iBAAiB,WAAW,CAAC,EACtE,KAAK,WAAU;AAAA,EACjB,IAAI;AAAA,IAAW,OAAO;AAAA,EAEtB,MAAM,IAAI,UAAU,gDAAgD;AAAA;AAGrE,IAAM,kBAAkB,MAAM;AAAA,EAC7B,MAAM,YAAY,CAAC,MAAM,IAAI,EAC3B,IAAI,CAAC,cAAc,MAAK,YAAY,KAAK,aAAa,WAAW,CAAC,EAClE,KAAK,WAAU;AAAA,EACjB,IAAI;AAAA,IAAW,OAAO;AAAA,EAEtB,MAAM,IAAI,UAAU,iDAAiD;AAAA;AAGtE,IAAM,yBAAyB,MAAM;AAAA,EACpC,MAAM,YAAY,CAAC,MAAM,IAAI,EAC3B,IAAI,CAAC,cACL,MAAK,YAAY,KAAK,oBAAoB,WAAW,CACtD,EACC,KAAK,WAAU;AAAA,EACjB,IAAI;AAAA,IAAW,OAAO;AAAA,EAEtB,MAAM,IAAI,UAAU,kDAAkD;AAAA;AAGvE,IAAM,aAAa,CAAC,UACnB,MACE,WAAW,KAAK,OAAO,EACvB,WAAW,KAAK,MAAM,EACtB,WAAW,KAAK,MAAM,EACtB,WAAW,KAAK,QAAQ;AAE3B,IAAM,wBAAwB,CAAC,qBAA6B;AAAA,EAC3D,MAAM,UAAU,IAAI,IAAI,gBAAgB;AAAA,EACxC,MAAM,eAAe,GAAG,QAAQ,aAAa,WAAW,SAAS,UAAU,QAAQ;AAAA,EAEnF,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,sBAAsB,QAAQ,UAAU;AAAA,IACxC;AAAA,EACD,EAAE,KAAK,IAAI;AAAA;AAGZ,IAAM,YAAY,CACjB,SACA,qBACI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wDAMmD,WAAW,sBAAsB,gBAAgB,CAAC;AAAA,WAC/F,WAAW,OAAO;AAAA;AAAA;AAAA;AAAA,iCAII;AAAA;AAAA;AAAA;AAKjC,IAAM,kBAAkB,CAAC,gBAAwB,eAAuB;AAAA,EACvE,MAAM,OAAO,SAAQ,cAAc;AAAA,EACnC,MAAM,QAAQ,SAAQ,MAAM,WAAW,QAAQ,QAAQ,EAAE,CAAC;AAAA,EAC1D,IAAI,CAAC,MAAM,WAAW,GAAG,OAAO,GAAG;AAAA,IAClC,MAAM,IAAI,UAAU,iDAAiD;AAAA,EACtE;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,oBAAoB,CAAC,UAAmB;AAAA,EAC7C,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EACtC,IAAI,OAAO,UAAU,YAAY,UAAU;AAAA,IAC1C,OAAO,QAAQ,IAAI,OAAO,QAAQ;AAAA,EAEnC;AAAA;AAGD,IAAM,uBAAuB,OAAO,aAAqB,cAAsB;AAAA,EAC9E,MAAM,WAAW,UAAU,MAAM,GAAG;AAAA,EACpC,MAAM,cAAc,UAAU,WAAW,GAAG,IACzC,SAAS,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,IAC5B,SAAS,MAAM;AAAA,EACnB,MAAM,UAAU,UAAU,MAAM,YAAY,MAAM;AAAA,EAClD,MAAM,mBAAmB,MACxB,SAAQ,WAAW,GACnB,gBACA,WACD;AAAA,EACA,MAAM,WAAoB,KAAK,MAC9B,MAAM,WAAS,MAAK,kBAAkB,cAAc,GAAG,MAAM,CAC9D;AAAA,EACA,MAAM,UACL,OAAO,aAAa,YAAY,aAAa,OAC1C,QAAQ,IAAI,UAAU,SAAS,IAC/B;AAAA,EACJ,MAAM,QACL,OAAO,YAAY,YAAY,YAAY,OACxC,QAAQ,IAAI,SAAS,UAAU,IAAI,YAAY,GAAG,IAClD;AAAA,EACJ,MAAM,SAAS,kBAAkB,KAAK;AAAA,EACtC,IAAI,OAAO,WAAW,YAAY,CAAC,OAAO,WAAW,IAAI;AAAA,IACxD,MAAM,IAAI,UAAU,GAAG,6CAA6C;AAAA,EACrE,MAAM,WAAW,SAAQ,kBAAkB,MAAM;AAAA,EACjD,IAAI,CAAC,SAAS,WAAW,GAAG,SAAQ,gBAAgB,IAAI;AAAA,IACvD,MAAM,IAAI,UAAU,GAAG,uCAAuC;AAAA,EAE/D,OAAO;AAAA;AAGR,IAAM,sBAAsB,OAC3B,SACA,MACA,MACA,eACA,QACA,oBACA,gBACI;AAAA,EACJ,MAAM,YAAY,WAAW;AAAA,EAC7B,MAAM,oBAAoB,YAAY,mBAAmB,eAAe,CAAC;AAAA,EACzE,MAAM,aAAa,qBAAqB;AAAA,EACxC,MAAM,cAAc,YACjB,kCACA;AAAA,EACH,MAAM,cAAc,YACjB,mCACA;AAAA,EACH,MAAM,aAAa,OAChB,YAAY,sBAAsB,KAAK,UAAU,YAAY,gBAAgB,IAAI,oBAAoB,CAAC;AAAA,IACtG;AAAA,EACH,MAAM,UAAU,OACb,iBAAiB,cAAc,OAAO,kBAAkB,gBAAgB,SACxE;AAAA,EACH,MAAM,aAAa,OAChB,YAAY,sBAAsB,KAAK,UAAU,YAAY,gBAAgB,IAAI,oBAAoB,CAAC;AAAA,IACtG;AAAA,EACH,MAAM,YAAY,kBAAkB,QAAQ,mBAAmB;AAAA,EAC/D,MAAM,OAAO,cAAc;AAAA,EAC3B,MAAM,aAAa,OAChB,iDAAiD,KAAK,UAAU,gBAAgB,CAAC;AAAA,IACjF;AAAA,EACH,MAAM,qBACL,MAAM,QAAQ,IACb,kBAAkB,IAAI,OAAO,MAAM,UAAU;AAAA,IAC5C,MAAM,WAAW,mBAAmB,UAAU;AAAA,IAC9C,IAAI,CAAC;AAAA,MACJ,MAAM,IAAI,UACT,sCAAsC,OACvC;AAAA,IAED,OAAO,YAAY,SAAS,sCAAsC,gBAAgB,KAAK,UAAU,MAAM,qBAAqB,aAAa,SAAS,MAAM,CAAC;AAAA,GACzJ,CACF,GACC,KAAK;AAAA,CAAI;AAAA,EACX,MAAM,YAAY,OACf;AAAA,+DAA6H;AAAA,IAC7H;AAAA,EACH,MAAM,oBAAoB,kBACxB,IACA,CAAC,MAAM,UACN,GAAG,KAAK,UAAU,IAAI,MAAM,SAAS,sBAAsB,iCAAiC,2BAA2B,WACzH,EACC,KAAK,IAAI;AAAA,EACX,MAAM,YAAY,MAAK,SAAS,2BAA2B;AAAA,EAC3D,MAAM,oBAAoB,YACvB,MAAM,qBACN,aACA,+BACD,IACC,uBAAuB;AAAA,EAC1B,MAAM,gBAAgB,YACnB,yDAAyD,KAAK,UAAU,iBAAiB,OACzF,sFAAsF,KAAK,UAAU,iBAAiB;AAAA,EACzH,MAAM,iBAAiB,YACpB,0DAA0D,KAAK,UAAU,aAAa,IAAI,oBAAoB,KAAK,sBAAsB,WACzI;AAAA,EACH,IAAI,eAAe,OAChB,UACA;AAAA,EACH,IAAI;AAAA,IAAW,eAAe;AAAA,EAC9B,IAAI,MAAM;AAAA,IACT,eAAe,4NAA4N,OAAO,kBAAkB,gBAAgB;AAAA,EACrR;AAAA,EACA,MAAM,YACL,WACA,4CAA4C,KAAK,UAAU,UAAU;AAAA,EAAO;AAAA,EAAkB,aAAa,aAAa,aAAa;AAAA,EAAsB,YAAY;AAAA,gCAAiD;AAAA,CACzN;AAAA,EACA,MAAM,QAAQ,MAAM,IAAI,MAAM;AAAA,IAC7B,aAAa,CAAC,SAAS;AAAA,IACvB,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,EACT,CAAC;AAAA,EACD,IAAI,CAAC,MAAM,WAAW,MAAM,QAAQ,WAAW,GAAG;AAAA,IACjD,MAAM,IAAI,eACT,MAAM,MACN,iDACD;AAAA,EACD;AAAA,EACA,MAAM,QAAO,MAAM,QAAQ,IAAI,QAAQ,IAAI,MAAK,SAAS,cAAc,CAAC;AAAA,EACxE,MAAM,IAAG,WAAW,EAAE,OAAO,KAAK,CAAC;AAAA;AAGpC,IAAM,uBAAuB,OAAO,QAAgB,UAAmB;AAAA,EACtE,IAAI,CAAC;AAAA,IAAO;AAAA,EACZ,MAAM,IAAG,QAAQ,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA;AAGlD,IAAM,wBAAwB,OAC7B,QACA,aACA,UACI;AAAA,EACJ,IAAI,CAAC;AAAA,IAAO;AAAA,EACZ,MAAM,QAAO,QAAQ,WAAW;AAAA;AAGjC,IAAM,gBAAgB,OAAO,SAAiB,gBAAwB;AAAA,EACrE,MAAM,SAAS,GAAG,wBAAwB,OAAO,WAAW;AAAA,EAC5D,IAAI,gBAAgB;AAAA,EACpB,IAAI;AAAA,IACH,MAAM,QAAO,aAAa,MAAM;AAAA,IAChC,gBAAgB;AAAA,IACf,OAAO,OAAO;AAAA,IACf,IAAI,CAAC,cAAa,OAAO,QAAQ;AAAA,MAAG,MAAM;AAAA;AAAA,EAE3C,IAAI;AAAA,IACH,MAAM,QAAO,SAAS,WAAW;AAAA,IACjC,MAAM,qBAAqB,QAAQ,aAAa;AAAA,IAC/C,OAAO,OAAO;AAAA,IACf,MAAM,sBAAsB,QAAQ,aAAa,aAAa;AAAA,IAE9D,MAAM;AAAA;AAAA;AAIR,IAAM,iBAAiB,OACtB,MACA,gBACA,SACA,uBACI;AAAA,EACJ,IAAI,CAAC,4BAA4B,IAAI,KAAK,SAAS,GAAG;AAAA,IACrD,MAAM,IAAI,UACT,mDAAmD,KAAK,kBAAkB,KAAK,SAChF;AAAA,EACD;AAAA,EACA,MAAM,YAAY,SAAQ,KAAK,UAAU,KAAK;AAAA,EAC9C,MAAM,kBAAkB,WAAW,KAAK,aAAa;AAAA,EACrD,MAAM,SAAS,gBAAgB,gBAAgB,KAAK,UAAU;AAAA,EAC9D,MAAM,UAAS,QAAQ,MAAK,SAAS,eAAe,CAAC;AAAA,EACrD,MAAM,+BACL,QACA,gBACA,SACA,kBACD;AAAA,EAEA,IAAI;AAAA,EACJ,IAAI,KAAK,mBAAmB,KAAK,iBAAiB;AAAA,IACjD,MAAM,iBAAiB,SAAQ,KAAK,eAAe,KAAK;AAAA,IACxD,iBAAiB,YAAY,KAAK,kBAAkB;AAAA,IACpD,MAAM,cAAc,gBACnB,gBACA,KAAK,eACN;AAAA,IACA,MAAM,OAAM,SAAQ,MAAK,SAAS,cAAc,CAAC,GAAG;AAAA,MACnD,WAAW;AAAA,IACZ,CAAC;AAAA,IACD,MAAM,UAAS,aAAa,MAAK,SAAS,cAAc,CAAC;AAAA,IACzD,MAAM,+BACL,aACA,gBACA,SACA,kBACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,OACH;AAAA,IACH;AAAA,OACI,iBAAiB,EAAE,eAAe,IAAI,CAAC;AAAA,EAC5C;AAAA;AAGD,IAAM,wBAAwB,OAC7B,YACA,mBACI;AAAA,EACJ,MAAM,SAAS,MAAM,WAAS,YAAY,MAAM;AAAA,EAChD,MAAM,YAAY,SAAQ,UAAU,EAAE,YAAY;AAAA,EAClD,IAAI;AAAA,EACJ,IAAI,cAAc;AAAA,IAAQ,eAAe;AAAA,EACpC,SAAI,cAAc;AAAA,IAAO,eAAe;AAAA,EACxC,SAAI,cAAc;AAAA,IAAQ,eAAe;AAAA,EACzC,SAAI,CAAC,OAAO,QAAQ,MAAM,EAAE,SAAS,SAAS;AAAA,IAAG,eAAe;AAAA,EACrE,MAAM,gBAAgB,eACnB,IAAI,IAAI,WAAW,EAAE,QAAQ,aAAa,CAAC,EAC1C,YAAY,MAAM,EAClB,IAAI,GAAG,WAAW,IAAI,IACvB,CAAC;AAAA,EACJ,MAAM,aACL,cAAc,SACX,CAAC,GAAG,OAAO,SAAS,6BAA6B,CAAC,EAAE,QACpD,CAAC,UAAU,MAAM,MAAM,CAAC,CACzB,IACC,CAAC;AAAA,EACL,MAAM,gBACL,cAAc,UACX,CAAC,GAAG,OAAO,SAAS,gCAAgC,CAAC,EAAE,QACvD,CAAC,UAAU,MAAM,MAAM,CAAC,CACzB,IACC,CAAC;AAAA,EAEL,OAAO,CAAC,GAAG,eAAe,GAAG,YAAY,GAAG,aAAa,EAAE,QAC1D,CAAC,cAAc;AAAA,IACd,IAAI,CAAC;AAAA,MAAW,OAAO,CAAC;AAAA,IACxB,IACC,CAAC,UAAU,WAAW,GAAG,KACzB,CAAC,UAAU,WAAW,IAAI,KAC1B,CAAC,UAAU,WAAW,KAAK,GAC1B;AAAA,MACD,OAAO,CAAC;AAAA,IACT;AAAA,IACA,MAAM,QAAQ,UAAU,MAAM,SAAS,CAAC,EAAE,MAAM;AAAA,IAChD,IAAI,MAAM,WAAW,GAAG;AAAA,MAAG,OAAO,CAAC,KAAK;AAAA,IACxC,MAAM,WAAW,SAAQ,SAAQ,UAAU,GAAG,KAAK;AAAA,IACnD,MAAM,OAAO,SAAQ,cAAc;AAAA,IACnC,MAAM,eAAe,UAAS,MAAM,QAAQ,EAAE,WAAW,MAAM,GAAG;AAAA,IAClE,IAAI,iBAAiB,QAAQ,aAAa,WAAW,KAAK,GAAG;AAAA,MAC5D,MAAM,IAAI,UACT,yDAAyD,WAC1D;AAAA,IACD;AAAA,IAEA,OAAO,CAAC,IAAI,cAAc;AAAA,GAE5B;AAAA;AAGD,IAAM,+BAA+B,OACpC,WACA,gBACA,SACA,WACI;AAAA,EACJ,IAAI,OAAO,IAAI,SAAS;AAAA,IAAG;AAAA,EAC3B,OAAO,IAAI,SAAS;AAAA,EACpB,MAAM,SAAS,gBAAgB,gBAAgB,SAAS;AAAA,EACxD,MAAM,cAAc,MAAK,SAAS,UAAU,QAAQ,QAAQ,EAAE,CAAC;AAAA,EAC/D,MAAM,OAAM,SAAQ,WAAW,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACrD,MAAM,UAAS,QAAQ,WAAW;AAAA,EAClC,MAAM,+BACL,QACA,gBACA,SACA,MACD;AAAA;AAGD,IAAM,iCAAiC,OACtC,YACA,gBACA,SACA,WACI;AAAA,EACJ,MAAM,eAAe,MAAM,sBAC1B,YACA,cACD;AAAA,EACA,MAAM,QAAQ,IACb,aAAa,IAAI,CAAC,cACjB,6BACC,WACA,gBACA,SACA,MACD,CACD,CACD;AAAA;AAGM,IAAM,wCAAwC,OACpD,YACI;AAAA,EACJ,IACC,CAAC,2BACA,QAAQ,SAAS,QACjB,IAAI,IAAI,QAAQ,OAAO,OAAO,0BAA0B,EAAE,QAC3D,GACC;AAAA,IACD,MAAM,IAAI,UACT,gBAAgB,QAAQ,OAAO,4CAChC;AAAA,EACD;AAAA,EACA,MAAM,cAAc,QAAQ,OAAO;AAAA,EACnC,MAAM,OAAM,SAAQ,WAAW,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACrD,MAAM,UAAU,MAAM,SACrB,MAAK,SAAQ,WAAW,GAAG,IAAI,UAAS,WAAW,UAAU,CAC9D;AAAA,EACA,IAAI;AAAA,IACH,MAAM,gBAAgB,MAAK,SAAS,OAAO;AAAA,IAC3C,MAAM,OAAM,eAAe,EAAE,WAAW,KAAK,CAAC;AAAA,IAC9C,MAAM,QAAQ,IACb,yBAAyB,IAAI,CAAC,eAAe;AAAA,MAC5C,aAAa,MAAK,SAAS,SAAS;AAAA,MACpC,QAAQ,MAAK,QAAQ,gBAAgB,SAAS;AAAA,IAC/C,EAAE,EACA,OAAO,GAAG,aAAa,YAAW,MAAM,CAAC,EACzC,IAAI,GAAG,aAAa,kBAAkB,aACtC,GAAG,QAAQ,kBAAkB,EAAE,WAAW,KAAK,CAAC,CACjD,CACF;AAAA,IACA,MAAM,qBAAqB,IAAI;AAAA,IAC/B,MAAM,QAAQ,MAAM,QAAQ,IAC3B,QAAQ,SAAS,MAAM,IAAI,CAAC,SAC3B,eACC,MACA,QAAQ,gBACR,SACA,kBACD,CACD,CACD;AAAA,IACA,MAAM,WAAW;AAAA,MAChB,UAAU,QAAQ,SAAS;AAAA,SACvB,QAAQ,OAAO,EAAE,MAAM,QAAQ,KAAK,IAAI,CAAC;AAAA,MAC7C,OAAO,QAAQ,OAAO;AAAA,MACtB,SAAS,QAAQ,OAAO;AAAA,MACxB,eAAe,QAAQ,OAAO;AAAA,MAC9B,gBAAgB,QAAQ,OAAO;AAAA,MAC/B,oBAAoB,QAAQ,mBAAmB;AAAA,MAC/C,OAAO,QAAQ,OAAO;AAAA,MACtB,QAAQ;AAAA,MACR;AAAA,MACA,kBAAkB,QAAQ,OAAO;AAAA,MACjC,QAAQ,QAAQ,SAAS;AAAA,MACzB,SAAS,QAAQ,SAAS;AAAA,SACtB,QAAQ,OACT;AAAA,QACA,MAAM;AAAA,UACL,YAAY;AAAA,YACX,UAAU,IAAI,IACb,+BACA,QAAQ,OAAO,gBAChB,EAAE;AAAA,YACF,iBAAiB;AAAA,UAClB;AAAA,UACA,eAAe;AAAA,UACf,eAAe,QAAQ,cAAc;AAAA,YACpC,YAAY;AAAA,cACX,EAAE,IAAI,mBAAmB,SAAS,EAAE;AAAA,YACrC;AAAA,UACD;AAAA,QACD;AAAA,MACD,IACC,CAAC;AAAA,IACL;AAAA,IACA,MAAM,QAAQ,IAAI;AAAA,MACjB,YACC,MAAK,SAAS,aAAa,GAC3B,GAAG,KAAK,UAAU,UAAU,MAAM,IAAI;AAAA,CACvC;AAAA,MACA,YACC,MAAK,SAAS,UAAU,GACxB,UACC,QAAQ,OAAO,SACf,QAAQ,OAAO,gBAChB,CACD;AAAA,MACA,oBACC,SACA,QAAQ,SAAS,WACjB,QAAQ,SAAS,aAAa,QAAQ,SAAS,MAC/C,cAAc,QAAQ,MAAM,YAAY,QAAQ,OAAO,UACvD,QAAQ,OAAO,QACf,QAAQ,oBACR,QAAQ,WACT;AAAA,IACD,CAAC;AAAA,IACD,MAAM,cAAc,SAAS,WAAW;AAAA,IAExC,OAAO;AAAA,IACN,OAAO,OAAO;AAAA,IACf,MAAM,IAAG,SAAS,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,IAElD,MAAM;AAAA;AAAA;;;AF3kBR;;;AQPA,uBAAS;AACT;AAAA,YACC;AAAA,WACA;AAAA,aACA;AAAA,cACA;AAAA,YACA;AAAA,QACA;AAAA,eACA;AAAA;AAED,oBAAS,kBAAS,mBAAM;AACxB;AAeO,IAAM,6CAA6C;AAoB1D,IAAM,sBAAsB;AAC5B,IAAM,oBAAoB;AAC1B,IAAM,iBAAgB;AACtB,IAAM,oBAAoB;AAE1B,IAAM,YAAW,CAAC,UACjB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAEpE,IAAM,gBAAe,CAAC,OAAgB,SACrC,OAAO,UAAU,YACjB,UAAU,QACV,QAAQ,IAAI,OAAO,MAAM,MAAM;AAEhC,IAAM,cAAc,CACnB,kBACA,aACI;AAAA,EACJ,MAAM,WAAW,KAAK,UAAU;AAAA,IAC/B;AAAA,IACA,UAAU,SAAS,IAAI,GAAG,gBAAgB,SAAS;AAAA,EACpD,CAAC;AAAA,EAED,OAAO,OAAO,YAAW,QAAQ,EAAE,OAAO,QAAQ,EAAE,OAAO,KAAK;AAAA;AAGjE,IAAM,mBAAmB,CAAC,UAAmB;AAAA,EAC5C,IACC,CAAC,UAAS,KAAK,KACf,MAAM,WAAW,8CACjB,OAAO,MAAM,aAAa,YAC1B,CAAC,kBAAkB,KAAK,MAAM,QAAQ,KACtC,OAAO,MAAM,qBAAqB,YAClC,CAAC,MAAM,QAAQ,MAAM,QAAQ,GAC5B;AAAA,IACD,MAAM,IAAI,UACT,mDACD;AAAA,EACD;AAAA,EACA,MAAM,WAAW,MAAM,SAAS,IAC/B,wCACD;AAAA,EACA,MAAM,WAAW,2CAA2C,QAAQ;AAAA,EACpE,IACC,SAAS,WAAW,SAAS,UAC7B,SAAS,KACR,GAAG,aAAa,UAAU,cAAc,SAAS,QAAQ,SAC1D,GACC;AAAA,IACD,MAAM,IAAI,UACT,2EACD;AAAA,EACD;AAAA,EACA,MAAM,mBAAmB,YAAY,MAAM,kBAAkB,QAAQ;AAAA,EACrE,IAAI,MAAM,aAAa,kBAAkB;AAAA,IACxC,MAAM,IAAI,UAAU,8CAA8C;AAAA,EACnE;AAAA,EACA,IAAI,SAAS,IAAI,cAAc,MAAM,kBAAkB;AAAA,IACtD,MAAM,IAAI,UACT,0EACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,UAAU,MAAM;AAAA,IAChB,kBAAkB,MAAM;AAAA,IACxB,QAAQ;AAAA,IACR;AAAA,EACD;AAAA;AAGD,IAAM,eAAe,OACpB,MACA,YACI;AAAA,EACJ,MAAM,YAAY,OAAK,MAAM,QAAQ,SAAS,SAAS;AAAA,EACvD,MAAM,eAAe,OAAK,WAAW,QAAQ,SAAS,SAAS,MAAM;AAAA,EACrE,MAAM,QAAM,SAAQ,YAAY,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACtD,MAAM,QAAQ,IAAI;AAAA,IACjB,YACC,OAAK,WAAW,cAAa,GAC7B,GAAG,KAAK,UAAU,QAAQ,UAAU,MAAM,IAAI;AAAA,CAC/C;AAAA,IACA,YACC,cACA,IAAI,WAAW,MAAM,QAAQ,SAAS,YAAY,CAAC,CACpD;AAAA,EACD,CAAC;AAAA;AAGF,IAAM,yBAAyB,OAC9B,aACA,UACA,aACI;AAAA,EACJ,MAAM,cAAc,OAAK,aAAa,QAAQ;AAAA,EAC9C,IAAI;AAAA,IACH,MAAM,QAAO,WAAW;AAAA,IAExB,OAAO;AAAA,IACN,OAAO,OAAO;AAAA,IACf,IAAI,CAAC,cAAa,OAAO,QAAQ;AAAA,MAAG,MAAM;AAAA;AAAA,EAG3C,MAAM,UAAU,MAAM,SAAQ,OAAK,aAAa,SAAS,CAAC;AAAA,EAC1D,IAAI;AAAA,IACH,MAAM,QAAQ,IACb,SAAS,IAAI,CAAC,YAAY,aAAa,SAAS,OAAO,CAAC,CACzD;AAAA,IACA,MAAM,SAAO,SAAS,WAAW;AAAA,IAChC,OAAO,OAAO;AAAA,IACf,MAAM,IAAG,SAAS,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,IAClD,IAAI,cAAa,OAAO,QAAQ,KAAK,cAAa,OAAO,WAAW,GAAG;AAAA,MACtE,OAAO;AAAA,IACR;AAAA,IAEA,MAAM;AAAA;AAAA,EAGP,OAAO;AAAA;AAGR,IAAM,0BAAqD,CAAC,eACpD,qBAAc,UAAU,EAAE;AAElC,IAAM,yBAAyB,CAC9B,QACA,eACI;AAAA,EACJ,MAAM,QAAQ,OAAO;AAAA,EACrB,IAAI,CAAC,UAAS,KAAK,KAAK,OAAO,MAAM,WAAW,YAAY;AAAA,IAC3D,MAAM,IAAI,UACT,iCAAiC,yCAClC;AAAA,EACD;AAAA,EAEA,QAAQ,WAAW;AAAA,EAEnB,OAAO;AAAA,IACN,QAAQ,OAAO,YAAY;AAAA,MAC1B,MAAM,WAAoB,MAAM,QAAQ,MAAM,QAAQ,OAAO;AAAA,QAC5D;AAAA,MACD,CAAC;AAAA,MACD,IAAI,EAAE,oBAAoB,WAAW;AAAA,QACpC,MAAM,IAAI,UACT,0BAA0B,2CAC3B;AAAA,MACD;AAAA,MAEA,OAAO;AAAA;AAAA,EAET;AAAA;AAGM,IAAM,uCAAuC,OACnD,SAC2D;AAAA,EAC3D,MAAM,eAAe,aAAY,IAAI;AAAA,EACrC,MAAM,aAAa,MAAM,WACxB,OAAK,cAAc,mBAAmB,GACtC,MACD;AAAA,EACA,MAAM,SAAkB,KAAK,MAAM,UAAU;AAAA,EAC7C,MAAM,QAAQ,iBAAiB,MAAM;AAAA,EACrC,MAAM,aAAa,OAAK,cAAc,mBAAmB,MAAM,QAAQ;AAAA,EAEvE,OAAO;AAAA,IACN,WAAW,MAAM;AAAA,IACjB,kBAAkB,MAAM;AAAA,IACxB,cAAc,OAAO,aAAa;AAAA,MACjC,MAAM,aAAa,OAClB,YACA,SAAS,WACT,SAAS,SAAS,MACnB;AAAA,MACA,MAAM,0CAA0C;AAAA,QAC/C;AAAA,QACA,UAAU,IAAI,KAAK,UAAU;AAAA,MAC9B,CAAC;AAAA,MACD,MAAM,SAAS,MAAM,wBAAwB,UAAU;AAAA,MAEvD,OAAO,uBAAuB,QAAQ,SAAS,SAAS,UAAU;AAAA;AAAA,EAEpE;AAAA;AAGM,IAAM,+CAA+C,OAC3D,UACI;AAAA,EACJ,MAAM,WAAW,MAAM,QAAQ,IAC9B,MAAM,SAAS,IAAI,CAAC,YACnB,0CAA0C,OAAO,CAClD,CACD;AAAA,EACA,MAAM,YAAY,2CACjB,SAAS,IAAI,GAAG,eAAe,QAAQ,CACxC;AAAA,EACA,IAAI,UAAU,WAAW,SAAS,QAAQ;AAAA,IACzC,MAAM,IAAI,UACT,oEACD;AAAA,EACD;AAAA,EACA,IAAI,UAAU,IAAI,cAAc,MAAM,kBAAkB;AAAA,IACvD,MAAM,IAAI,UACT,gEACD;AAAA,EACD;AAAA,EACA,MAAM,kBAAkB,UAAU,IAAI,CAAC,aAAa;AAAA,IACnD,MAAM,UAAU,SAAS,KACxB,CAAC,cAAc,UAAU,SAAS,cAAc,SAAS,SAC1D;AAAA,IACA,IAAI,CAAC,SAAS;AAAA,MACb,MAAM,IAAI,UAAU,8CAA8C;AAAA,IACnE;AAAA,IAEA,OAAO;AAAA,GACP;AAAA,EACD,MAAM,OAAO,aAAY,MAAM,IAAI;AAAA,EACnC,MAAM,cAAc,OAAK,MAAM,iBAAiB;AAAA,EAChD,MAAM,QAAM,aAAa,EAAE,WAAW,KAAK,CAAC;AAAA,EAC5C,MAAM,WAAW,YAAY,MAAM,kBAAkB,SAAS;AAAA,EAC9D,MAAM,uBAAuB,aAAa,UAAU,eAAe;AAAA,EACnE,MAAM,QAAQ;AAAA,IACb;AAAA,IACA,kBAAkB,MAAM;AAAA,IACxB,QAAQ;AAAA,IACR,UAAU;AAAA,EACX;AAAA,EACA,MAAM,cAAc,OAAK,MAAM,mBAAmB;AAAA,EAClD,MAAM,uBAAuB,OAC5B,MACA,YAAY,OAAO,WAAW,QAC/B;AAAA,EACA,MAAM,YACL,sBACA,GAAG,KAAK,UAAU,OAAO,MAAM,IAAI;AAAA,GACnC,EAAE,MAAM,KAAK,CACd;AAAA,EACA,MAAM,SAAO,sBAAsB,WAAW;AAAA,EAE9C,OAAO;AAAA;AAGD,IAAM,yCAAyC,OAAO,SAAiB;AAAA,EAC7E,MAAM,eAAe,aAAY,IAAI;AAAA,EACrC,IAAI;AAAA,IACH,MAAM,aAAa,MAAM,WACxB,OAAK,cAAc,mBAAmB,GACtC,MACD;AAAA,IACA,MAAM,SAAkB,KAAK,MAAM,UAAU;AAAA,IAC7C,MAAM,QAAQ,iBAAiB,MAAM;AAAA,IACrC,MAAM,aAAa,OAClB,cACA,mBACA,MAAM,QACP;AAAA,IAEA,OAAO,QAAQ,IACd,MAAM,SAAS,IAAI,OAAO,aAAa;AAAA,MACtC,MAAM,WAAW,IAAI,KACpB,OACC,YACA,SAAS,WACT,SAAS,SAAS,MACnB,CACD;AAAA,MACA,MAAM,0CAA0C;AAAA,QAC/C;AAAA,QACA;AAAA,MACD,CAAC;AAAA,MAED,OAAO,EAAE,UAAU,SAAS;AAAA,KAC5B,CACF;AAAA,IACC,OAAO,OAAO;AAAA,IACf,IAAI,cAAa,OAAO,QAAQ;AAAA,MAAG,OAAO,CAAC;AAAA,IAE3C,MAAM;AAAA;AAAA;;;ARrTR;AAIA;AACA;;;ASLA;AAWA;AAzBA;AAAA,YACC;AAAA,QACA;AAAA,WACA;AAAA,aACA;AAAA,aACA;AAAA,cACA;AAAA,YACA;AAAA,QACA;AAAA,eACA;AAAA;AAED,uBAAS;AACT,qBAAS,sBAAU,mBAAS,oBAAM,uBAAU;AAgB5C,IAAM,wBACL;AAAA;AACD,IAAM,uBAAuB;AAC7B,IAAM,sBAAsB;AAO5B,IAAM,UAAS,OAAO,SAAiB;AAAA,EACtC,IAAI;AAAA,IACH,MAAM,QAAO,IAAI;AAAA,IAEjB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,IAAM,oBAAmB,CAAC,MAAc,gBAAwB;AAAA,EAC/D,MAAM,QAAQ,WAAS,MAAM,WAAW,EAAE,WAAW,MAAM,GAAG;AAAA,EAE9D,OAAO,MAAM,WAAW,GAAG,IAAI,QAAQ,KAAK;AAAA;AAG7C,IAAM,gBAAgB,CAAC,UACtB,MACE,MAAM,GAAG,EACT,OAAO,OAAO,EACd,IAAI,CAAC,YAAY;AAAA,EACjB,IAAI,QAAQ,WAAW,GAAG;AAAA,IAAG,OAAO,IAAI,QAAQ,MAAM,CAAC;AAAA,EACvD,IACC,YAAY,OACZ,YAAY,QACZ,CAAC,sBAAsB,KAAK,OAAO,GAClC;AAAA,IACD,MAAM,IAAI,UACT,qBAAqB,yCAAyC,UAC/D;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,CACP;AAEH,IAAM,YAAY,CAAC,SAAiB,UACnC,OAAK,SAAS,OAAO,GAAG,cAAc,KAAK,GAAG,WAAW;AAE1D,IAAM,cAAc,CAAC,MAAe,UAAmB;AAAA,EACtD,cAAc;AAAA,OACT,OACD;AAAA,MACA,oBAAoB;AAAA,OACnB,6BAA6B;AAAA,IAC/B,IACC,CAAC;AAAA,OACA,OACD;AAAA,MACA,oBAAoB;AAAA,OACnB,6BAA6B;AAAA,IAC/B,IACC,CAAC;AAAA,IACJ,MAAM;AAAA,IACN,cAAc;AAAA,IACd,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,OACZ,OACD;AAAA,MACA,wBAAwB;AAAA,MACxB,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,qBAAqB;AAAA,MACrB,gBAAgB;AAAA,IACjB,IACC,CAAC;AAAA,IACJ,eAAe;AAAA,OACX,OACD;AAAA,MACA,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,IACrB,IACC,CAAC;AAAA,IACJ,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,kCAAkC;AAAA,IAClC,wBAAwB;AAAA,IACxB,wBAAwB;AAAA,EACzB;AAAA,EACA,iBAAiB;AAAA,IAChB,gBAAgB;AAAA,IAChB,YAAY;AAAA,EACb;AAAA,EACA,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,IACR,SAAS;AAAA,IACT,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACA,SAAS;AACV;AAEA,IAAM,gBAAgB,CACrB,QACA,MACA,UACK;AAAA,EACL,MAAM;AAAA,IACL,SAAS;AAAA,MACR,eAAe,OAAO,cAAc,IAAI,CAAC,WAAU;AAAA,QAClD,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,UAAU,CAAC,aAAa,SAAS;AAAA,QACjC,MAAM,CAAC,EAAE,aAAM,YAAY,KAAK,QAAQ,QAAQ,CAAC;AAAA,MAClD,EAAE;AAAA,MACF,SAAS,OAAO;AAAA,IACjB;AAAA,IACA,aAAa,EAAE,aAAa,KAAK;AAAA,IACjC,KAAK;AAAA,MACJ,mBAAmB,OAAO,cAAc,IACvC,CAAC,UAAS,YAAY,OACvB;AAAA,MACA,kBAAkB,OAAO;AAAA,SACrB,OAAO,aAAa,EAAE,aAAa,OAAO,WAAW,IAAI,CAAC;AAAA,IAC/D;AAAA,IACA,MAAM,OAAO;AAAA,IACb,SAAS;AAAA,MACR;AAAA,MACA,CAAC,mBAAmB,EAAE,YAAY,cAAc,CAAC;AAAA,MACjD,GAAI,OAAO,CAAC,mBAAmB,IAAI,CAAC;AAAA,MACpC,GAAI,OACD,CAAC,eAAe,wBAAwB,mBAAmB,IAC3D,CAAC;AAAA,IACL;AAAA,IACA,gBAAgB,EAAE,QAAQ,aAAa;AAAA,IACvC,QAAQ,OAAO;AAAA,IACf,MAAM,OAAO,MAAM,YAAY,EAAE,WAAW,KAAK,GAAG;AAAA,IACpD,SAAS,OAAO,cAAc;AAAA,EAC/B;AACD;AAEA,IAAM,uBAAuB,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYhC,IAAM,0BAA0B,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyCnC,IAAM,cAAc,CAAC,gBACpB,GAAG;AAAA;AAAA;AAAA;AAAA,kBAIc,KAAK,UAAU,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAY5C,IAAM,eAAe,CAAC,MAAe,SACpC,GAAG;AAAA,EACF,OAAO;AAAA,0EAAyH;AAAA,EAChI,OAAO,2EAA2E;AAAA;AAAA;AAAA,GAIlF,OACG;AAAA;AAAA;AAAA,SAGI,OAAO,0BAA0B;AAAA;AAAA;AAAA,6BAIrC;AAAA;AAAA;AAAA;AAML,IAAM,yBAAyB,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgClC,IAAM,oBAAoB,CAAC,MAAkC,UAAkB;AAAA,EAC9E,MAAM,kBAAkB,aAAW,QAAQ,EACzC,OAAO,KAAK,EACZ,OAAO,KAAK,EACZ,MAAM,GAAG,EAAE;AAAA,EAEb,OAAO,GAAG;AAAA;AAAA;AAAA;AAAA,oBAIS,KAAK,UAAU,KAAK,MAAM;AAAA,aACjC,KAAK,UAAU,KAAK,QAAQ;AAAA,WAC9B,KAAK,UAAU,KAAK,MAAM;AAAA,gBACrB,KAAK,UAAU,KAAK,WAAW;AAAA,aAClC,KAAK,UAAU,KAAK,MAAM;AAAA,WAC5B,KAAK,UAAU,KAAK,MAAM;AAAA,kBACnB,KAAK,UAAU,mBAAmB,iBAAiB;AAAA;AAAA,2FAEsB,KAAK,UAAU,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBrH,IAAM,oBAAoB,CACzB,QACA,WACI;AAAA,EACJ,MAAM,kBAAkB,aAAW,QAAQ,EACzC,OAAO,OAAO,KAAK,EACnB,OAAO,KAAK,EACZ,MAAM,GAAG,EAAE;AAAA,EACb,MAAM,qBAAqB,IAAI,IAC9B,+BACA,OAAO,gBACR,EAAE;AAAA,EACF,MAAM,iBAAiB,GAAG,OAAO;AAAA,EAEjC,OAAO,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAee,KAAK,UAAU,cAAc;AAAA,8BACzB,KAAK,UAAU,kBAAkB;AAAA,4BACnC,KAAK,UAAU,OAAO,gBAAgB;AAAA,qDACb,KAAK,UAAU,MAAM;AAAA;AAAA,iBAEzD,KAAK,UAAU,mBAAmB,oBAAoB;AAAA,yDACd,KAAK,UAAU,mBAAmB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0E5G,IAAM,gBAAgB,CACrB,QACA,MACA,SACI;AAAA,EACJ,MAAM,eAAe;AAAA,IACpB;AAAA,IACA,GAAG,OAAO,KAAK,OAAO,gBAAgB;AAAA,EACvC;AAAA,EAEA,OAAO,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,OAAO,4GAA4G;AAAA,EACnH,OAAO,0FAA0F;AAAA;AAAA;AAAA;AAAA;AAAA,gCAKnE,KAAK,UAAU,YAAY;AAAA,4BAC/B,KAAK,UAAU,OAAO,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,uBAK3C,OAAO,SAAS;AAAA,uBAChB,OAAO,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SA4E9B,KAAK,UAAU,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BA6BV,OAAO,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAclE,OACG;AAAA;AAAA,uFAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAiBF,OACG;AAAA;AAAA;AAAA;AAAA;AAAA,SAKG,OAAO,0BAA0B;AAAA,KAEtC,OACG;AAAA;AAAA;AAAA,UAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAWD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAuDD,OACG;AAAA;AAAA;AAAA,yGAIA;AAAA;AAAA,MAIH,OACG;AAAA,2FAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuCR,IAAM,iBAAiB,GAAG;AAAA;AAAA;AAAA;AAK1B,IAAM,sBAAsB,GAAG;AAAA;AAAA;AAAA;AAK/B,IAAM,sBAAsB,CAAC,SAAiB,WAC7C,GAAG,gDAAgD,KAAK,UAAU,kBAAiB,UAAQ,OAAO,GAAG,MAAM,EAAE,QAAQ,wBAAwB,EAAE,CAAC;AAAA;AAGjJ,IAAM,eAAe,CACpB,aACA,SACA,MACA,UACK;AAAA,EACL,iBAAiB;AAAA,IAChB,OAAO;AAAA,SACF,OACD;AAAA,QACA,oBAAoB;AAAA,UACnB;AAAA,QACD;AAAA,QACA,sBAAsB;AAAA,UACrB;AAAA,QACD;AAAA,MACD,IACC,CAAC;AAAA,SACA,OACD;AAAA,QACA,oBAAoB;AAAA,UACnB;AAAA,QACD;AAAA,QACA,yBAAyB;AAAA,UACxB;AAAA,QACD;AAAA,QACA,2BAA2B;AAAA,UAC1B;AAAA,QACD;AAAA,QACA,sBAAsB;AAAA,UACrB;AAAA,QACD;AAAA,MACD,IACC,CAAC;AAAA,MACJ,KAAK;AAAA,QACJ;AAAA,QACA,GAAG,kBAAiB,SAAS,WAAW;AAAA,MACzC;AAAA,MACA,OAAO,CAAC,wCAAwC;AAAA,MAChD,WAAW,CAAC,+BAA+B;AAAA,IAC5C;AAAA,IACA,QAAQ;AAAA,EACT;AAAA,EACA,SAAS;AACV;AAEA,IAAM,mBAAmB,OACxB,MACA,QACA,UACI;AAAA,EACJ,MAAM,QAAM,UAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC9C,IAAI,MAAM,QAAO,IAAI,GAAG;AAAA,IACvB,MAAM,UAAU,MAAM,WAAS,MAAM,MAAM;AAAA,IAC3C,IAAI,YAAY;AAAA,MAAQ,OAAO;AAAA,IAC/B,IAAI,CAAC,SAAS,CAAC,QAAQ,WAAW,qBAAqB,GAAG;AAAA,MACzD,MAAM,IAAI,UACT,qBAAqB,6EACtB;AAAA,IACD;AAAA,EACD;AAAA,EACA,MAAM,YAAY,GAAG,QAAQ,OAAO,WAAW;AAAA,EAC/C,MAAM,YAAU,WAAW,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,EACjD,MAAM,SAAO,WAAW,IAAI;AAAA,EAE5B,OAAO;AAAA;AAGR,IAAM,aAAa,CAAC,UAAmB,GAAG,KAAK,UAAU,OAAO,MAAM,IAAI;AAAA;AAE1E,IAAM,uBAAuB,GAAG;AAAA;AAAA;AAAA;AAKzB,IAAM,2BAA2B,OACvC,QACA,YACI;AAAA,EACJ,IAAI,OAAO,WAAW;AAAA,IACrB,MAAM,IAAI,UACT,uDACD;AAAA,EACD,MAAM,cAAc,UAAQ,QAAQ,WAAW;AAAA,EAC/C,MAAM,UAAU,OAAO;AAAA,EACvB,MAAM,OAAO,kCAAkC,aAAa,MAAM;AAAA,EAClE,MAAM,cAAc,QAAQ,QAAQ,wBAAwB,WAAW,CAAC;AAAA,EACxE,MAAM,aAAa,cAChB,EAAE,YAAY,2BAA2B,WAAW,EAAE,WAAW,IACjE;AAAA,EACH,MAAM,eAAe,OAAO,QAAQ,OAAO,gBAAgB;AAAA,EAC3D,MAAM,eAAe,MAAM,QAAQ,IAClC,aAAa,IAAI,QAAQ,OAAO,aAAa;AAAA,IAC5C,QAAQ,MAAM,QAAO,MAAM;AAAA,IAC3B;AAAA,IACA;AAAA,EACD,EAAE,CACH;AAAA,EACA,MAAM,UAAU,aAAa,KAAK,CAAC,UAAU,CAAC,MAAM,MAAM;AAAA,EAC1D,IAAI,SAAS;AAAA,IACZ,MAAM,IAAI,UACT,qBAAqB,QAAQ,mCAAmC,QAAQ,SACzE;AAAA,EACD;AAAA,EACA,MAAM,SAAS,OAAK,SAAS,mBAAmB;AAAA,EAChD,IAAK,MAAM,QAAO,OAAO,KAAM,CAAE,MAAM,QAAO,MAAM,GAAI;AAAA,IACvD,MAAM,UAAU,MAAM,SAAQ,OAAO;AAAA,IACrC,IAAI,QAAQ,SAAS,KAAK,CAAC,QAAQ,OAAO;AAAA,MACzC,MAAM,IAAI,UACT,0BAA0B,gFAC3B;AAAA,IACD;AAAA,EACD;AAAA,EACA,MAAM,QAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,EACxC,MAAM,YAAU,QAAQ;AAAA,CAAY;AAAA,EACpC,MAAM,cAAc,QAAQ,IAAI;AAAA,EAChC,MAAM,QAAQ,IAAI,IAAoB;AAAA,IACrC;AAAA,MACC,OAAK,SAAS,YAAY;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,IACD;AAAA,IACA;AAAA,MACC,OAAK,SAAS,UAAU;AAAA,MACxB,WAAW,cAAc,QAAQ,aAAa,WAAW,CAAC;AAAA,IAC3D;AAAA,IACA,CAAC,OAAK,SAAS,eAAe,GAAG,oBAAoB;AAAA,IACrD;AAAA,MACC,OAAK,SAAS,cAAc;AAAA,MAC5B,WAAW,YAAY,aAAa,WAAW,CAAC;AAAA,IACjD;AAAA,IACA,CAAC,OAAK,SAAS,iBAAiB,GAAG,YAAY,WAAW,CAAC;AAAA,IAC3D;AAAA,MACC,OAAK,SAAS,WAAW,8BAA8B;AAAA,MACvD;AAAA,IACD;AAAA,IACA;AAAA,MACC,OAAK,SAAS,eAAe;AAAA,MAC7B,WACC,aAAa,aAAa,SAAS,aAAa,WAAW,CAC5D;AAAA,IACD;AAAA,IACA;AAAA,MACC,OAAK,SAAS,OAAO,aAAa;AAAA,MAClC,aAAa,aAAa,WAAW;AAAA,IACtC;AAAA,IACA;AAAA,MACC,OAAK,SAAS,OAAO,cAAc,UAAU,WAAW;AAAA,MACxD;AAAA,IACD;AAAA,IACA;AAAA,MACC,OAAK,SAAS,OAAO,aAAa,qBAAqB;AAAA,MACvD,cAAc,QAAQ,MAAM,WAAW;AAAA,IACxC;AAAA,EACD,CAAC;AAAA,EACD,IAAI,MAAM;AAAA,IACT,MAAM,IACL,OAAK,SAAS,OAAO,aAAa,iBAAiB,GACnD,kBAAkB,MAAM,OAAO,KAAK,CACrC;AAAA,EACD;AAAA,EACA,IAAI,YAAY;AAAA,IACf,MAAM,IACL,OAAK,SAAS,OAAO,aAAa,iBAAiB,GACnD,kBAAkB,QAAQ,UAAU,CACrC;AAAA,EACD;AAAA,EACA,MAAM,gBAAgB,OAAK,SAAS,OAAO,aAAa,cAAc;AAAA,EACtE,IAAI,CAAE,MAAM,QAAO,aAAa,GAAI;AAAA,IACnC,MAAM,IAAI,eAAe,oBAAoB;AAAA,EAC9C;AAAA,EACA,IAAI,CAAC,OAAO,iBAAiB,MAAM;AAAA,IAClC,MAAM,IAAI,OAAK,SAAS,OAAO,WAAW,GAAG,cAAc;AAAA,EAC5D;AAAA,EACA,MAAM,IAAI,OAAK,SAAS,OAAO,mBAAmB,GAAG,mBAAmB;AAAA,EACxE,YAAY,OAAO,WAAW,cAAc;AAAA,IAC3C,MAAM,UACL,UAAU,MACP,OAAK,SAAS,OAAO,WAAW,IAChC,UAAU,SAAS,KAAK;AAAA,IAC5B,MAAM,IAAI,SAAS,oBAAoB,SAAS,MAAM,CAAC;AAAA,EACxD;AAAA,EACA,MAAM,UAAU,MAAM,QAAQ,IAC7B,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,iBAAiB,MAAM,QAAQ,IAAI,CAAC,CACxE;AAAA,EACA,MAAM,UAAU,QAAQ,OAAO,OAAO,EAAE;AAAA,EAExC,OAAO,EAAE,SAAS,MAAM,SAAS,SAAS,CAAC,GAAG,MAAM,KAAK,CAAC,EAAE;AAAA;AAG7D,IAAM,YAAY,OAAO,MAAc,YAAY,SAA4B;AAAA,EAC9E,MAAM,UAAU,MAAM,SAAQ,WAAW,EAAE,eAAe,KAAK,CAAC;AAAA,EAChE,MAAM,SAAS,MAAM,QAAQ,IAC5B,QAAQ,IAAI,CAAC,UAAU;AAAA,IACtB,MAAM,OAAO,OAAK,WAAW,MAAM,IAAI;AAAA,IACvC,IAAI,MAAM,YAAY;AAAA,MAAG,OAAO,UAAU,MAAM,IAAI;AAAA,IACpD,IAAI,MAAM,OAAO;AAAA,MAAG,OAAO,CAAC,IAAI;AAAA,IAChC,MAAM,IAAI,UACT,wEAAwE,OACzE;AAAA,GACA,CACF;AAAA,EAEA,OAAO,OAAO,KAAK,EAAE,KAAK;AAAA;AAG3B,IAAM,kBAAkB,OAAO,QAAgB,gBAAwB;AAAA,EACtE,IAAI;AAAA,IACH,MAAM,SAAO,QAAQ,WAAW;AAAA,IAEhC,OAAO;AAAA,IACN,OAAO,OAAO;AAAA,IACf,IACC,OAAO,UAAU,YACjB,UAAU,QACV,QAAQ,IAAI,OAAO,MAAM,MAAM,UAC9B;AAAA,MACD,OAAO;AAAA,IACR;AAAA,IACA,MAAM;AAAA;AAAA;AAIR,IAAM,yBAAyB,OAAO,SAAiB,gBAAwB;AAAA,EAC9E,MAAM,SAAS,GAAG,wBAAwB,OAAO,WAAW;AAAA,EAC5D,MAAM,QAAQ,MAAM,gBAAgB,aAAa,MAAM;AAAA,EACvD,IAAI;AAAA,IACH,MAAM,SAAO,SAAS,WAAW;AAAA,IACjC,IAAI;AAAA,MAAO,MAAM,IAAG,QAAQ,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,IAC3D,OAAO,OAAO;AAAA,IACf,IAAI;AAAA,MAAO,MAAM,SAAO,QAAQ,WAAW;AAAA,IAC3C,MAAM;AAAA;AAAA;AAIR,IAAM,oBAAoB,CACzB,QACA,aACI,GAAG;AAAA;AAAA;AAAA;AAAA,oBAIY,KAAK,UAAU,QAAQ;AAAA;AAAA,EAEzC,OAAO,IAAI,GAAG,OAAO,WAAW,sBAAuB,KAAK,UAAU,KAAK,aAAa,KAAK,UAAU,IAAI,KAAK,EAAE,KAAK;AAAA,CAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBvH,IAAM,4BAA4B,OACxC,WACI;AAAA,EACJ,IAAI,OAAO,WAAW;AAAA,IACrB,MAAM,IAAI,UAAU,+CAA+C;AAAA,EACpE,MAAM,SAAS,OAAK,OAAO,wBAAwB,mBAAmB;AAAA,EACtE,IAAI,CAAE,MAAM,QAAO,MAAM,GAAI;AAAA,IAC5B,MAAM,IAAI,UACT,qFACD;AAAA,EACD;AAAA,EACA,MAAM,eAAe,OACpB,OAAO,iBACP,+BACD;AAAA,EACA,MAAM,WAAoB,KAAK,MAAM,MAAM,WAAS,cAAc,MAAM,CAAC;AAAA,EACzE,MAAM,WACL,OAAO,aAAa,YACpB,aAAa,QACb,OAAO,QAAQ,IAAI,UAAU,UAAU,MAAM,WAC1C,OAAO,QAAQ,IAAI,UAAU,UAAU,CAAC,IACxC;AAAA,EACJ,IAAI,CAAC;AAAA,IACJ,MAAM,IAAI,UAAU,6CAA6C;AAAA,EAClE,MAAM,QAAQ,MAAM,UAAU,OAAO,eAAe;AAAA,EACpD,MAAM,aAAa,aAAW,QAAQ;AAAA,EACtC,MAAM,oBAAoB,MAAM,QAAQ,IACvC,MAAM,IAAI,OAAO,UAAU,EAAE,UAAU,MAAM,WAAS,IAAI,GAAG,KAAK,EAAE,CACrE;AAAA,EACA,kBAAkB,QAAQ,GAAG,UAAU,WAAW;AAAA,IACjD,WAAW,OACV,WAAS,OAAO,iBAAiB,IAAI,EAAE,WAAW,MAAM,GAAG,CAC5D;AAAA,IACA,WAAW,OAAO,MAAI;AAAA,IACtB,WAAW,OAAO,QAAQ;AAAA,IAC1B,WAAW,OAAO,MAAI;AAAA,GACtB;AAAA,EACD,MAAM,WAAW,UAAU,WAAW,OAAO,KAAK;AAAA,EAClD,MAAM,cAAc,OACnB,OAAO,wBACP,UACA,UACD;AAAA,EACA,MAAM,QAAM,UAAQ,WAAW,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACrD,MAAM,UAAU,MAAM,SACrB,OAAK,UAAQ,WAAW,GAAG,IAAI,UAAS,WAAW,UAAU,CAC9D;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,SAAS,MAAM,QAAQ,IACtB,MAAM,IAAI,OAAO,QAAQ,UAAU;AAAA,MAClC,MAAM,OAAO,GAAG,OAAO,KAAK,EAAE,SAAS,GAAG,GAAG,IAAI;AAAA,MACjD,MAAM,IAAG,QAAQ,OAAK,SAAS,IAAI,CAAC;AAAA,MAEpC,OAAO;AAAA,QACN,OAAO,kBACN,OAAK,OAAO,wBAAwB,OAAO,WAAW,GACtD,OAAK,aAAa,IAAI,CACvB;AAAA,QACA,MAAM,WAAS,OAAO,iBAAiB,MAAM,EAAE,WAC9C,MACA,GACD;AAAA,MACD;AAAA,KACA,CACF;AAAA,IACA,MAAM,uBAAuB,SAAS,WAAW;AAAA,IAChD,OAAO,OAAO;AAAA,IACf,MAAM,IAAG,SAAS,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,IAClD,MAAM;AAAA;AAAA,EAEP,MAAM,YAAY,OACjB,OAAO,wBACP,OACA,aACA,cACD;AAAA,EACA,MAAM,iBACL,WACA,kBAAkB,QAAQ,QAAQ,GAClC,IACD;AAAA,EAEA,OAAO,EAAE,UAAU,QAAQ,OAAO,QAAQ,UAAU,MAAM,YAAY;AAAA;;;ATriCvE,IAAM,cAAc,CACnB,UAEA,OAAO,UAAU,YACjB,UAAU,QACV,OAAO,QAAQ,IAAI,OAAO,SAAS,MAAM,cACzC,MAAM,QAAQ,QAAQ,IAAI,OAAO,QAAQ,CAAC;AAE3C,IAAM,iBAAiB,CAAC,UACvB,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,KAAK,KACpB,OAAO,OAAO,KAAK,EAAE,MAAM,CAAC,UAAU,OAAO,UAAU,QAAQ;AAEhE,IAAM,mBAAmB,CAAC,QAAsB,QAAiB;AAAA,EAChE,IAAI,OAAO,WAAW;AAAA,IAAK,OAAO;AAAA,EAClC,IAAI,OAAO,QAAQ;AAAA,IAAK,OAAO;AAAA,EAE/B,OAAO;AAAA;AAGR,IAAM,6BAA6B,CAClC,MAIA,aACI;AAAA,EACJ,IAAI,aAAa;AAAA,IAAW,QAAQ,IAAI,QAAQ;AAAA,EAC3C;AAAA,WAAO,QAAQ,IAAI;AAAA;AAGzB,IAAM,iBAAiB,CAAI,UAA0B,cAAsB;AAAA,EAC1E,MAAM,UAAU,SAAS,IAAI,SAAS;AAAA,EACtC,IAAI,CAAC,SAAS;AAAA,IACb,MAAM,IAAI,UAAU,mCAAmC,YAAY;AAAA,EACpE;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,gBAAgB,OAAO,iBAAyB;AAAA,EACrD,MAAM,SAAuB,MAC5B,UAAG,eAAc,YAAY,EAAE,gCAAgC,OAAO,WAAW;AAAA,EAElF,MAAM,aAAa,CAAC,OAAO,QAAQ,OAAO,KAAK,OAAO,OAAO;AAAA,EAC7D,MAAM,MAAM,WAAW,KAAK,WAAW;AAAA,EACvC,IAAI,CAAC,KAAK;AAAA,IACT,MAAM,IAAI,UACT,6FACD;AAAA,EACD;AAAA,EACA,MAAM,aAAa,iBAAiB,QAAQ,GAAG;AAAA,EAE/C,OAAO,EAAE,KAAK,WAAW;AAAA;AAGnB,IAAM,2CAA2C,OACvD,YACI;AAAA,EACJ,MAAM,iBAAiB,UAAQ,QAAQ,cAAc;AAAA,EACrD,MAAM,SAAS,8BACd,QAAQ,QACR,QAAQ,WACT;AAAA,EACA,MAAM,OAAO,OAAK,gBAAgB,eAAe,sBAAsB;AAAA,EACvE,OAAO,gBAAgB,YAAY,MAAM,QAAQ,IAAI;AAAA,IACpD,WAAS,OAAK,gBAAgB,eAAe,GAAG,MAAM;AAAA,IACtD,uCAAuC,IAAI;AAAA,EAC5C,CAAC;AAAA,EACD,MAAM,WAAoB,KAAK,MAAM,cAAc;AAAA,EACnD,IAAI,CAAC,eAAe,QAAQ,GAAG;AAAA,IAC9B,MAAM,IAAI,UACT,uDACD;AAAA,EACD;AAAA,EACA,MAAM,yBAAyB,QAAQ,IAAI;AAAA,EAC3C,MAAM,0BAA0B,QAAQ,IAAI;AAAA,EAC5C,MAAM,qBAAqB,QAAQ,IAAI;AAAA,EACvC,QAAQ,IAAI,qBAAqB;AAAA,EACjC,QAAQ,IAAI,4BAA4B;AAAA,EACxC,IAAI,QAAQ,YAAY;AAAA,IACvB,QAAQ,IAAI,kBAAkB,UAC7B,QAAQ,aACR,QAAQ,UACT;AAAA,EACD;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,SAAS,MAAM,cAAc,UAAQ,QAAQ,YAAY,CAAC;AAAA,YACzD;AAAA,IACD,2BACC,sBACA,sBACD;AAAA,IACA,2BACC,6BACA,uBACD;AAAA,IACA,2BAA2B,mBAAmB,kBAAkB;AAAA;AAAA,EAEjE,MAAM,UAAU,MAAM,wCAAwC;AAAA,IAC7D,KAAK,OAAO;AAAA,IACZ,OAAO,OAAO;AAAA,IACd;AAAA,IACA;AAAA,IACA,mBAAmB,SAAS,IAAI,GAAG,eAAe,QAAQ;AAAA,IAC1D,gBAAgB,OAAO;AAAA,IACvB,cAAc,UAAQ,QAAQ,YAAY;AAAA,IAC1C,SAAS,OAAO,qCAAqC;AAAA,EACtD,CAAC;AAAA,EACD,MAAM,OAAO,kCAAkC,QAAQ,aAAa,MAAM;AAAA,EAC1E,MAAM,OACL,SAAS,aAAa,wBAAwB,QAAQ,WAAW;AAAA,EAClE,MAAM,aAAa,OAChB,2BAA2B,QAAQ,WAAW,IAC9C;AAAA,EACH,MAAM,qBAAqB,oCAC1B,QAAQ,WACT;AAAA,EACA,MAAM,WACL,mBAAmB,aAAa,SAAS,mBAAmB;AAAA,EAC7D,IACC,OAAO,WAAW,UAClB,mBAAmB,aAAa,KAC/B,CAAC,eAAe,eAAe,SAChC,GACC;AAAA,IACD,MAAM,IAAI,UACT,6IACD;AAAA,EACD;AAAA,EACA,IAAI,YAAY,CAAC;AAAA,IAChB,MAAM,IAAI,UACT,4IACD;AAAA,EACD,IACC,YACA,CAAC,OAAO,IAAI,OAAO,KAClB,CAAC,UACA,MAAM,SAAS,gBACf,MAAM,SAAS,mBACjB;AAAA,IAEA,MAAM,IAAI,UACT,8IACD;AAAA,EACD,IAAI,OAAO,WAAW,aAAa;AAAA,IAClC,uCACC,QAAQ,aACR,kBACD;AAAA,EACD;AAAA,EACA,IACC,QACA,CAAC,OAAO,IAAI,OAAO,KAClB,CAAC,UAAU,MAAM,SAAS,mCAC3B,GACC;AAAA,IACD,MAAM,IAAI,UACT,mLACD;AAAA,EACD;AAAA,EACA,MAAM,eAAe,IAAI,IACxB,CAAC,SAAS,GAAG,QAAQ,EAAE,IAAI,CAAC,YAAY;AAAA,IACvC,QAAQ,SAAS;AAAA,IACjB;AAAA,EACD,CAAC,CACF;AAAA,EACA,MAAM,WAAW,2CAChB,CAAC,GAAG,aAAa,OAAO,CAAC,EAAE,IAAI,GAAG,eAAe,QAAQ,CAC1D;AAAA,EACA,MAAM,6CAA6C;AAAA,IAClD,kBAAkB,QAAQ,SAAS;AAAA,IACnC,UAAU,SAAS,IAAI,CAAC,aACvB,eAAe,cAAc,SAAS,SAAS,CAChD;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EACD,MAAM,sCAAsC;AAAA,IAC3C,UAAU,QAAQ;AAAA,OACd,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,IACvB;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,aAAa,QAAQ;AAAA,OACjB,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAAA,OACzB,aACD,EAAE,YAAY,EAAE,YAAY,WAAW,WAAW,EAAE,IACpD,CAAC;AAAA,EACL,CAAC;AAAA,EACD,IAAI,OAAO,WAAW,QAAQ;AAAA,IAC7B,MAAM,yBAAyB,QAAQ;AAAA,MACtC,aAAa,QAAQ;AAAA,IACtB,CAAC;AAAA,IACD,MAAM,0BAA0B,MAAM;AAAA,EACvC;AAAA,EAEA,OAAO,QAAQ;AAAA;;;AUnOhB;;;ACwDA,IAAI,qBAAoB,OAAO,IAAI,2CAA2C;AAC9E,IAAI,QAAO;AACX,IAAI,cAAa,CAAC,UAAU,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,QAAQ,IAAI,OAAO,eAAe,CAAC,KAAK,MAAM,QAAQ,QAAQ,IAAI,OAAO,SAAS,CAAC;AAC5K,IAAI,aAAY,MAAM;AAAA,EACpB,MAAM,WAAW,MAAK;AAAA,EACtB,IAAI,YAAW,QAAQ;AAAA,IACrB,OAAO;AAAA,EACT,IAAI,OAAO,aAAa,YAAY,aAAa,QAAQ,MAAM,QAAQ,QAAQ,IAAI,UAAU,eAAe,CAAC,GAAG;AAAA,IAC9G,QAAQ,IAAI,UAAU,WAAW,CAAC,CAAC;AAAA,IACnC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,UAAU,EAAE,SAAS,CAAC,GAAG,eAAe,CAAC,EAAE;AAAA,EACjD,OAAO,eAAe,OAAM,oBAAmB;AAAA,IAC7C,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,OAAO;AAAA,GACN;AAmBH,IAAI,UAAU,CAAC,WAAW;AAAA,EACxB,MAAM,UAAU,OAAO,OAAO,CAAC,UAAU,UAAU,SAAS;AAAA,EAC5D,OAAO,QAAQ,WAAW,IAAI,YAAY,KAAK,IAAI,GAAG,OAAO;AAAA;AAE/D,IAAI,UAAU,CAAC,WAAW;AAAA,EACxB,MAAM,UAAU,OAAO,OAAO,CAAC,UAAU,UAAU,SAAS;AAAA,EAC5D,OAAO,QAAQ,WAAW,IAAI,YAAY,KAAK,IAAI,GAAG,OAAO;AAAA;AAE/D,IAAI,qBAAqB,YAAY;AAAA,EACnC,MAAM,UAAU,CAAC,GAAG,UAAS,OAAO;AAAA,EACpC,MAAM,WAAW,QAAQ,IAAI,CAAC,WAAW,OAAO,OAAO,CAAC;AAAA,EACxD,MAAM,eAAe,MAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,WAAW,OAAO,gBAAgB,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,YAAY;AAAA,IACjH,UAAU,OAAO;AAAA,OACd,OAAO,WAAW,OAAO,EAAE,MAAM,OAAO,UAAU,KAAK,IAAI,CAAC;AAAA,IAC/D,WAAW,OAAO;AAAA,OACf,OAAO,mBAAmB,YAAY,CAAC,IAAI,EAAE,gBAAgB,OAAO,eAAe;AAAA,OACnF,OAAO,WAAW,OAAO,EAAE,MAAM,OAAO,UAAU,KAAK,IAAI,CAAC;AAAA,OAC5D,OAAO,WAAW,UAAU,EAAE,SAAS,OAAO,UAAU,QAAQ,IAAI,CAAC;AAAA,IACxE,MAAM,OAAO;AAAA,IACb,aAAa,OAAO;AAAA,EACtB,EAAE,EAAE,KAAK,CAAC,MAAM,WAAW,KAAK,kBAAkB,KAAK,cAAc,MAAM,kBAAkB,MAAM,cAAc,KAAK,YAAY,cAAc,MAAM,WAAW,CAAC;AAAA,EAClK,MAAM,YAAY,SAAS,SAAS,CAAC,WAAW,OAAO,SAAS,GAAG;AAAA,EACnE,OAAO;AAAA,IACL,sBAAsB,SAAS,OAAO,CAAC,OAAO,WAAW,QAAQ,OAAO,sBAAsB,CAAC;AAAA,IAC/F,SAAS,QAAQ;AAAA,IACjB,WAAW,YAAY,OAAO,CAAC,WAAW,OAAO,SAAS,UAAU,EAAE;AAAA,IACtE;AAAA,OACG,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,OAC7B,QAAQ,SAAS,IAAI,CAAC,WAAW,OAAO,oBAAoB,CAAC,MAAM,YAAY,CAAC,IAAI;AAAA,MACrF,sBAAsB,QAAQ,SAAS,IAAI,CAAC,WAAW,OAAO,oBAAoB,CAAC;AAAA,IACrF;AAAA,OACG,QAAQ,SAAS,IAAI,CAAC,WAAW,OAAO,oBAAoB,CAAC,MAAM,YAAY,CAAC,IAAI;AAAA,MACrF,sBAAsB,QAAQ,SAAS,IAAI,CAAC,WAAW,OAAO,oBAAoB,CAAC;AAAA,IACrF;AAAA,OACG,QAAQ,SAAS,IAAI,CAAC,WAAW,OAAO,kBAAkB,CAAC,MAAM,YAAY,CAAC,IAAI;AAAA,MACnF,oBAAoB,QAAQ,SAAS,IAAI,CAAC,WAAW,OAAO,kBAAkB,CAAC;AAAA,IACjF;AAAA,OACG,QAAQ,SAAS,IAAI,CAAC,WAAW,OAAO,eAAe,CAAC,MAAM,YAAY,CAAC,IAAI;AAAA,MAChF,iBAAiB,QAAQ,SAAS,IAAI,CAAC,WAAW,OAAO,eAAe,CAAC;AAAA,IAC3E;AAAA,IACA,SAAS,SAAS,OAAO,CAAC,OAAO,WAAW,QAAQ,OAAO,SAAS,CAAC;AAAA,EACvE;AAAA;AAEF,IAAI,uBAAuB,OAAO,gBAAgB;AAAA,EAChD,WAAW,UAAU,UAAS;AAAA,IAC5B,KAAK,MAAM,OAAO,gBAAgB,GAAG,KAAK,CAAC,WAAW,OAAO,gBAAgB,WAAW;AAAA,MACtF,OAAO;AAAA,EACX,MAAM,IAAI,MAAM,6BAA6B,cAAc;AAAA;AAE7D,IAAI,6BAA6B,OAAO,iBAAiB,MAAM,qBAAqB,WAAW,GAAG,gBAAgB,WAAW;AAC7H,IAAI,+BAA+B,OAAO,iBAAiB,MAAM,qBAAqB,WAAW,GAAG,kBAAkB,WAAW;AACjI,IAAI,8BAA8B,OAAO,aAAa,UAAU,MAAM,qBAAqB,WAAW,GAAG,iBAAiB,aAAa,IAAI;;;AC/I3I,IAAM,uBAAuB,OAAO,IAAI,qCAAqC;AAC7E,IAAM,2BAA2B;AACjC,IAAM,cAAa,CAAC,UACnB,OAAO,UAAU,YACjB,UAAU,QACV,MAAM,QAAQ,QAAQ,IAAI,OAAO,eAAe,CAAC;AAClD,IAAM,kBAAkB,MAAM;AAAA,EAC7B,MAAM,WAAoB,QAAQ,IAAI,YAAY,oBAAoB;AAAA,EACtE,IAAI,YAAW,QAAQ;AAAA,IAAG,OAAO;AAAA,EACjC,MAAM,UAAoB,EAAE,eAAe,CAAC,EAAE;AAAA,EAC9C,OAAO,eAAe,YAAY,sBAAsB;AAAA,IACvD,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,UAAU;AAAA,EACX,CAAC;AAAA,EAED,OAAO;AAAA;AAER,IAAM,YAAW,gBAAgB;AAG1B,IAAM,mCAAmC,MAC/C,UAAS,cAAc,GAAG,wBAAwB,GAAG;AAC/C,IAAM,uCAAuC,CACnD,SAAwC;AAAA,EACvC,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,OAAO;AACR,MACI;AAAA,EACJ,MAAM,eAA6B,EAAE,OAAO;AAAA,EAC5C,UAAS,cAAc,KAAK,YAAY;AAAA,EAExC,OAAO,MAAM;AAAA,IACZ,MAAM,QAAQ,UAAS,cAAc,QAAQ,YAAY;AAAA,IACzD,IAAI,SAAS;AAAA,MAAG,UAAS,cAAc,OAAO,OAAO,CAAC;AAAA;AAAA;;;AFrCxD;;;AGjBO,IAAM,8BAA8B;AACpC,IAAM,iCAAiC,KAAK;AAE5C,IAAM,+BAA+B;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAwCA,IAAM,YAAW,CAAC,UACjB,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,KAAK,MACnB,OAAO,eAAe,KAAK,MAAM,OAAO,aACxC,OAAO,eAAe,KAAK,MAAM;AAEnC,IAAM,UAAU,CAAC,UAChB,OAAO,UAAU,YAAY,yBAAyB,KAAK,KAAK;AAEjE,IAAM,YAAY,CAAC,UAClB,OAAO,UAAU,YACjB,MAAM,WAAW,GAAG,KACpB,CAAC,MAAM,WAAW,IAAI,KACtB,MAAM,UAAU;AAEjB,IAAM,eAAe,CAAC,UAAmC;AAAA,EACxD,IAAI,OAAO,MAAM,OAAO,YAAY,CAAC,QAAQ,MAAM,EAAE;AAAA,IACpD,MAAM,IAAI,UAAU,oCAAoC;AAAA,EACzD,MAAM,SAAS,6BAA6B,KAC3C,CAAC,cAAc,cAAc,MAAM,MACpC;AAAA,EACA,IAAI,CAAC,QAAQ;AAAA,IACZ,MAAM,IAAI,UAAU,oCAAoC;AAAA,EACzD;AAAA,EACA,IAAI,CAAC,UAAS,MAAM,MAAM;AAAA,IACzB,MAAM,IAAI,UAAU,+CAA+C;AAAA,EACpE,IAAI,OAAO,MAAM,SAAS,YAAY,CAAC,UAAU,MAAM,IAAI;AAAA,IAC1D,MAAM,IAAI,UAAU,sCAAsC;AAAA,EAC3D,IAAI,WAAW,0BAA0B;AAAA,IACxC,MAAM,SAAS,IAAI,IAAI;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,IACD,IACC,OAAO,MAAM,OAAO,UAAU,YAC9B,CAAC,OAAO,IAAI,MAAM,OAAO,KAAK;AAAA,MAE9B,MAAM,IAAI,UAAU,uCAAuC;AAAA,IAC5D,IACC,MAAM,OAAO,eAAe,cAC3B,OAAO,MAAM,OAAO,eAAe,YACnC,CAAC,OAAO,SAAS,MAAM,OAAO,UAAU,KACxC,MAAM,OAAO,aAAa,KAC1B,MAAM,OAAO,aAAa,MAC1B;AAAA,MACD,MAAM,IAAI,UAAU,0CAA0C;AAAA,IAC/D;AAAA,EACD;AAAA,EACA,IAAI,WAAW,cAAc;AAAA,IAC5B,IAAI,OAAO,MAAM,OAAO,QAAQ;AAAA,MAC/B,MAAM,IAAI,UAAU,kCAAkC;AAAA,IACvD,MAAM,MAAM,IAAI,IAAI,MAAM,OAAO,GAAG;AAAA,IACpC,MAAM,eACL,IAAI,aAAa,YAChB,IAAI,aAAa,eACjB,IAAI,aAAa,eACjB,IAAI,aAAa;AAAA,IACnB,IAAI,IAAI,aAAa,YAAY,CAAC;AAAA,MACjC,MAAM,IAAI,UAAU,sCAAsC;AAAA,IAC3D,IACC,OAAO,MAAM,OAAO,WAAW,YAC/B,CAAC,CAAC,UAAU,OAAO,SAAS,QAAQ,KAAK,EAAE,SAC1C,MAAM,OAAO,MACd;AAAA,MAEA,MAAM,IAAI,UAAU,yCAAyC;AAAA,IAC9D,IACC,MAAM,OAAO,SAAS,aACtB,OAAO,MAAM,OAAO,SAAS;AAAA,MAE7B,MAAM,IAAI,UAAU,mCAAmC;AAAA,IACxD,IACC,OAAO,MAAM,OAAO,SAAS,YAC7B,IAAI,YAAY,EAAE,OAAO,MAAM,OAAO,IAAI,EAAE,aAAa,KAAK;AAAA,MAE9D,MAAM,IAAI,UAAU,uCAAuC;AAAA,IAC5D,KACE,MAAM,OAAO,WAAW,SACxB,MAAM,OAAO,WAAW,aACzB,MAAM,OAAO,SAAS;AAAA,MAEtB,MAAM,IAAI,UACT,gDACD;AAAA,IACD,IAAI,CAAC,UAAS,MAAM,OAAO,OAAO;AAAA,MACjC,MAAM,IAAI,UAAU,6CAA6C;AAAA,IAClE,MAAM,iBAAiB,OAAO,QAAQ,MAAM,OAAO,OAAO,EAAE,MAC3D,EAAE,MAAM,YACP,OAAO,WAAW,aACjB,KAAK,YAAY,MAAM,YACvB,KAAK,YAAY,MAAM,kBACvB,KAAK,YAAY,EAAE,WAAW,oBAAoB,EACrD;AAAA,IACA,IAAI,CAAC,gBAAgB;AAAA,MACpB,MAAM,IAAI,UAAU,yCAAyC;AAAA,IAC9D;AAAA,EACD;AAAA,EACA,IAAI,WAAW,eAAe;AAAA,IAC7B,IACC,OAAO,MAAM,OAAO,UAAU,YAC9B,MAAM,OAAO,MAAM,SAAS,OAC5B,OAAO,MAAM,OAAO,WAAW;AAAA,MAE/B,MAAM,IAAI,UAAU,8CAA8C;AAAA,EACpE;AAAA,EACA,KACE,WAAW,kBAAkB,WAAW,kBACzC,OAAO,KAAK,MAAM,MAAM,EAAE,WAAW;AAAA,IAErC,MAAM,IAAI,UAAU,wCAAwC;AAAA,EAE7D,OAAO;AAAA,IACN,QAAQ;AAAA,IACR,IAAI,MAAM;AAAA,IACV,MAAM;AAAA,IACN;AAAA,IACA,QAAQ,MAAM;AAAA,IACd,MAAM,MAAM;AAAA,EACb;AAAA;AAGD,IAAM,gBAAgB,CAAC,UAAmC;AAAA,EACzD,IAAI,OAAO,MAAM,OAAO,YAAY,CAAC,QAAQ,MAAM,EAAE;AAAA,IACpD,MAAM,IAAI,UAAU,qCAAqC;AAAA,EAC1D,IAAI,MAAM,UAAU,WAAW;AAAA,IAC9B,IACC,CAAC,UAAS,MAAM,KAAK,KACrB,OAAO,MAAM,MAAM,SAAS,YAC5B,OAAO,MAAM,MAAM,YAAY,UAC9B;AAAA,MACD,MAAM,IAAI,UAAU,wCAAwC;AAAA,IAC7D;AAAA,IACA,IAAI,MAAM,WAAW;AAAA,MACpB,MAAM,IAAI,UACT,uDACD;AAAA,EACF;AAAA,EAEA,IAAI,UAAS,MAAM,KAAK,GAAG;AAAA,IAC1B,OAAO;AAAA,MACN,OAAO;AAAA,QACN,MAAM,OAAO,MAAM,MAAM,IAAI;AAAA,QAC7B,SAAS,OAAO,MAAM,MAAM,OAAO;AAAA,MACpC;AAAA,MACA,QAAQ;AAAA,MACR,IAAI,MAAM;AAAA,MACV,MAAM;AAAA,IACP;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,QAAQ;AAAA,IACR,IAAI,MAAM;AAAA,IACV,MAAM;AAAA,IACN,QAAQ,MAAM;AAAA,EACf;AAAA;AAGD,IAAM,aAAa,CAAC,UAAmC;AAAA,EACtD,IACC,MAAM,UAAU,WAChB,MAAM,UAAU,gBAChB,MAAM,UAAU,oBAChB,MAAM,UAAU,iBAChB,MAAM,UAAU,aACf;AAAA,IACD,MAAM,IAAI,UAAU,mCAAmC;AAAA,EACxD;AAAA,EACA,IAAI,OAAO,MAAM,SAAS,YAAY,CAAC,UAAU,MAAM,IAAI;AAAA,IAC1D,MAAM,IAAI,UAAU,oCAAoC;AAAA,EACzD,IAAI,MAAM,YAAY,aAAa,CAAC,UAAS,MAAM,OAAO,GAAG;AAAA,IAC5D,MAAM,IAAI,UAAU,8CAA8C;AAAA,EACnE;AAAA,EAEA,OAAO;AAAA,IACN,OAAO,MAAM;AAAA,IACb,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM,MAAM;AAAA,OACR,MAAM,UAAU,EAAE,SAAS,MAAM,QAAQ,IAAI,CAAC;AAAA,EACnD;AAAA;AAGM,IAAM,gCAAgC,CAC5C,IACA,MACA,YAEA,cAAc;AAAA,EACb,OAAO,EAAE,MAAM,QAAQ;AAAA,EACvB,QAAQ;AAAA,EACR;AAAA,EACA,MAAM;AACP,CAAC;AACK,IAAM,mCAAmC,CAAC,IAAY,WAC5D,cAAc;AAAA,EACb,QAAQ;AAAA,EACR;AAAA,EACA,MAAM;AAAA,EACN;AACD,CAAC;AACK,IAAM,iCAAiC,CAAC,WAAmB;AAAA,EACjE,IACC,IAAI,YAAY,EAAE,OAAO,MAAM,EAAE,aACjC;AAAA,IAEA,MAAM,IAAI,UAAU,qCAAqC;AAAA,EAC1D,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,SAAS,KAAK,MAAM,MAAM;AAAA,IACzB,OAAO,OAAO;AAAA,IACf,MAAM,IAAI,UAAU,0CAA0C;AAAA,MAC7D;AAAA,IACD,CAAC;AAAA;AAAA,EAEF,IAAI,CAAC,UAAS,MAAM,KAAK,OAAO,WAAW,6BAA6B;AAAA,IACvE,MAAM,IAAI,UAAU,4CAA4C;AAAA,EACjE;AAAA,EACA,IAAI,OAAO,SAAS;AAAA,IAAW,OAAO,aAAa,MAAM;AAAA,EACzD,IAAI,OAAO,SAAS;AAAA,IAAY,OAAO,cAAc,MAAM;AAAA,EAC3D,IAAI,OAAO,SAAS;AAAA,IAAS,OAAO,WAAW,MAAM;AAAA,EAErD,MAAM,IAAI,UAAU,0CAA0C;AAAA;;ACvS/D;AACA,mBAAS;AACT,iBAAS;AAmET,IAAM,yBAAyB;AAC/B,IAAM,2BAA2B;AAEjC,IAAM,qBAAqB,CAAC,aAAyC;AAAA,EACpE,2BAA2B;AAAA,KACvB,QAAQ,2BACT;AAAA,IACA,mCACC,QAAQ;AAAA,EACV,IACC,CAAC;AAAA,KACA,QAAQ,gBACT,EAAE,yCAAyC,QAAQ,cAAc,IACjE,CAAC;AAAA,KACA,QAAQ,YACT,EAAE,qCAAqC,QAAQ,UAAU,IACzD,CAAC;AAAA,KACA,QAAQ,YACT,EAAE,gCAAgC,QAAQ,UAAU,IACpD,CAAC;AACL;AAEO,IAAM,yBAAyB,OAAO,YAAoB;AAAA,EAChE,MAAM,aAAa,OAAK,SAAS,gBAAgB,QAAQ,MAAM;AAAA,EAC/D,IAAI;AAAA,IACH,MAAM,SAAO,UAAU;AAAA,IAEvB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,MAAM,IAAI,UACT,+FACD;AAAA;AAAA;AAIK,IAAM,6BAA6B,CACzC,QACA,YACyB;AAAA,EACzB,IAAI,OAAO,WAAW;AAAA,IACrB,MAAM,IAAI,UAAU,gDAAgD;AAAA,EACrE,IAAI,QAAQ,UAAU,WAAW,KAAK,QAAQ,UAAU;AAAA,IACvD,MAAM,IAAI,UACT,qDACD;AAAA,EACD,MAAM,eAAe,CAAC,QAAQ,eAAe,QAAQ,SAAS,EAAE,KAC/D,CAAC,WAAW,UAAU,IAAI,IAAI,MAAM,EAAE,aAAa,QACpD;AAAA,EACA,IAAI,gBAAgB,CAAC,QAAQ;AAAA,IAC5B,MAAM,IAAI,UACT,4EACD;AAAA,EACD,MAAM,MAAM,mBAAmB,OAAO;AAAA,EACtC,MAAM,QAAgC;AAAA,IACrC,MAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,QAAQ,SAAS;AAAA,IACzB;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACP;AAAA,EACA,MAAM,UACL,QAAQ,UAAU,WAAW,IAC1B,YACA;AAAA,IACA,MAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,UAAU,WAAW,IAC1B,QACC,QAAQ,UAAU,MAAM;AAAA,IAC7B;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACP;AAAA,EACH,MAAM,SAAS,QAAQ,UAAU,IAAI,CAAC,aAAa;AAAA,IAClD,MAAM,SACL,aAAa,YAAY,QAAQ,gBAAgB,QAAQ;AAAA,IAC1D,MAAM,UAAkC;AAAA,MACvC,MAAM;AAAA,QACL,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA,OAAO,QAAQ,SAAS;AAAA,QACxB,GAAI,SAAS,CAAC,YAAY,MAAM,IAAI,CAAC;AAAA,MACtC;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACP;AAAA,IAEA,OAAO;AAAA,GACP;AAAA,EAED,OAAO;AAAA,IACN,UAAU;AAAA,MACT,GAAI,UAAU,CAAC,OAAO,IAAI,CAAC;AAAA,MAC3B,GAAI,QAAQ,UAAU,aAAa,CAAC,IAAI,CAAC,KAAK;AAAA,MAC9C,GAAG;AAAA,IACJ;AAAA,IACA,WAAW,QAAQ;AAAA,IACnB,SAAS,OAAO;AAAA,EACjB;AAAA;AAGD,IAAM,aAAa,MAClB,IAAI,aAAa,6BAA6B,YAAY;AAE3D,IAAM,eAAe,CACpB,UACA,WACI;AAAA,EACJ,MAAM,SAAS,CAAC,WAAyC;AAAA,IACxD,IAAI,CAAC;AAAA,MAAQ;AAAA,IACb,IAAI,WAAW;AAAA,IACf,OAAO,GAAG,QAAQ,CAAC,UAAkB;AAAA,MACpC,YAAY,MAAM,SAAS,MAAM;AAAA,MACjC,IAAI,UAAU,SAAS,QAAQ;AAAA,CAAI;AAAA,MACnC,OAAO,WAAW,GAAG;AAAA,QACpB,OAAO,SAAS,MAAM,GAAG,OAAO,EAAE,QAAQ,QAAQ,EAAE,CAAC;AAAA,QACrD,WAAW,SAAS,MAAM,UAAU,CAAC;AAAA,QACrC,UAAU,SAAS,QAAQ;AAAA,CAAI;AAAA,MAChC;AAAA,KACA;AAAA,IACD,OAAO,GAAG,OAAO,MAAM;AAAA,MACtB,IAAI;AAAA,QAAU,OAAO,QAAQ;AAAA,KAC7B;AAAA;AAAA,EAEF,OAAO,SAAQ,MAAM;AAAA,EACrB,OAAO,SAAQ,MAAM;AAAA;AAGtB,IAAM,cAAc,OAAO,aAA0B;AAAA,EACpD,IAAI,SAAQ,aAAa,QAAQ,SAAQ;AAAA,IAAQ;AAAA,EACjD,SAAQ,KAAK,SAAS;AAAA,EACtB,MAAM,QAAQ,KAAK;AAAA,IAClB,IAAI,QAAc,CAAC,cAAY,SAAQ,KAAK,QAAQ,MAAM,UAAQ,CAAC,CAAC;AAAA,IACpE,IAAI,QAAc,CAAC,cAClB,WAAW,WAAS,wBAAwB,CAC7C;AAAA,EACD,CAAC;AAAA,EACD,IAAI,SAAQ,aAAa;AAAA,IAAM,SAAQ,KAAK,SAAS;AAAA;AAGtD,IAAM,cAAc,CAAC,aACpB,IAAI,QAAgB,CAAC,cAAY;AAAA,EAChC,IAAI,SAAQ,aAAa,MAAM;AAAA,IAC9B,UAAQ,SAAQ,QAAQ;AAAA,IAExB;AAAA,EACD;AAAA,EACA,SAAQ,KAAK,QAAQ,CAAC,SAAS,UAAQ,QAAQ,CAAC,CAAC;AAAA,CACjD;AAQF,IAAM,oBAAoB,OACzB,KACA,SACA,MACA,YACI;AAAA,EACJ,MAAM,QAAQ,IAAI,SAAS,MAAM;AAAA,IAChC,KAAK,QAAQ;AAAA,IACb,KAAK,QAAQ;AAAA,IACb,OAAO,CAAC,UAAU,QAAQ,MAAM;AAAA,EACjC,CAAC;AAAA,EACD,aAAa,OAAO,QAAQ,GAAG;AAAA,EAC/B,MAAM,QAAQ,MAAM,KAAK,YAAY,KAAK;AAAA,EAC1C,QAAQ,QAAQ,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;AAAA,EAC/D,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,EACxC,QAAQ,QAAQ,oBAAoB,SAAS,KAAK;AAAA,EAClD,IAAI,QAAQ,QAAQ;AAAA,IAAS,MAAM,WAAW;AAAA,EAE9C,OAAO;AAAA;AAGD,IAAM,8BAA8B,OAC1C,YACI;AAAA,EACJ,MAAM,OAAO,2BAA2B,QAAQ,QAAQ,OAAO;AAAA,EAC/D,MAAM,aACL,QAAQ,cAAe,MAAM,uBAAuB,KAAK,OAAO;AAAA,EACjE,MAAM,MAAM,QAAQ,gBAAgB;AAAA,EACpC,MAAM,MAAM,QAAQ,QAAQ,MAAG;AAAA,IAAG;AAAA;AAAA,EAClC,MAAM,UAAyD,CAAC;AAAA,EAChE,IAAI,qBAA2D;AAAA,EAC/D,MAAM,wBAAwB,YAAY;AAAA,IACzC,MAAM,SAAS;AAAA,IACf,qBAAqB;AAAA,IACrB,MAAM,QAAQ,MAAM;AAAA;AAAA,EAErB,MAAM,gBAAgB,CAAC,OAA6B,eAAuB;AAAA,IAC1E,QAAQ,UAAU,QAAQ,UAAU,KAAK;AAAA,IACzC,QAAQ,gBAAgB,EAAE,YAAY,MAAM,CAAC;AAAA;AAAA,EAE9C,MAAM,WAAW,CAAC,UAAgC;AAAA,IACjD,QAAQ,gBAAgB,KAAK;AAAA;AAAA,EAE9B,IAAI,QAAQ,QAAQ;AAAA,IAAS,MAAM,WAAW;AAAA,EAC9C,MAAM,iBAAiB,KAAK,SAAS,KACpC,CAAC,YAAY,QAAQ,SAAS,gBAC/B;AAAA,EACA,MAAM,eAAe,KAAK,SAAS,KAClC,CAAC,YAAY,QAAQ,SAAS,OAC/B;AAAA,EACA,MAAM,iBAAiB,KAAK,SAAS,OACpC,CAAC,YAAY,QAAQ,SAAS,cAC/B;AAAA,EACA,MAAM,oBAAoB,OAAO,YAAoC;AAAA,IACpE,SAAS,kBAAkB;AAAA,IAC3B,MAAM,iBAAiB,YAAY,IAAI;AAAA,IACvC,MAAM,iBAAiB,IAAI,YAAY,QAAQ,MAAM;AAAA,MACpD,KAAK,KAAK;AAAA,MACV,KAAK,KAAK,QAAQ,QAAQ,QAAQ,IAAI;AAAA,MACtC,OAAO,CAAC,UAAU,QAAQ,MAAM;AAAA,IACjC,CAAC;AAAA,IACD,aAAa,gBAAgB,CAAC,SAAS;AAAA,MACtC,IAAI;AAAA,QAAM,IAAI,cAAc,MAAM;AAAA,KAClC;AAAA,IACD,MAAM,eAAe,MAAM,KAAK,YAAY,cAAc;AAAA,IAC1D,QAAQ,QAAQ,iBAAiB,SAAS,cAAc,EAAE,MAAM,KAAK,CAAC;AAAA,IACtE,MAAM,cAAc,MAAM,YAAY,cAAc;AAAA,IACpD,QAAQ,QAAQ,oBAAoB,SAAS,YAAY;AAAA,IACzD,IAAI,QAAQ,QAAQ;AAAA,MAAS,MAAM,WAAW;AAAA,IAC9C,IAAI,gBAAgB,GAAG;AAAA,MACtB,SAAS,QAAQ;AAAA,MACjB,MAAM,IAAI,MACT,8CAA8C,cAC/C;AAAA,IACD;AAAA,IACA,cAAc,oBAAoB,YAAY,IAAI,IAAI,cAAc;AAAA;AAAA,EAErE,IAAI;AAAA,IAAgB,MAAM,kBAAkB,cAAc;AAAA,EAC1D,MAAM,eAAe,iBAAiB;AAAA,EACtC,IAAI;AAAA,IAAc,SAAS,gBAAgB;AAAA,EAC3C,MAAM,eAAe,YAAY,IAAI;AAAA,EACrC,MAAM,QAAQ,eACX,IAAI,YAAY,aAAa,MAAM;AAAA,IACnC,KAAK,KAAK;AAAA,IACV,KAAK,KAAK,QAAQ,QAAQ,aAAa,IAAI;AAAA,IAC3C,OAAO,CAAC,UAAU,QAAQ,MAAM;AAAA,EACjC,CAAC,IACA;AAAA,EACH,IAAI,aAAa;AAAA,EACjB,IAAI;AAAA,EACJ,MAAM,eAAe,IAAI,QAAc,CAAC,WAAS,WAAW;AAAA,IAC3D,IAAI,CAAC,OAAO;AAAA,MACX,UAAQ;AAAA,MAER;AAAA,IACD;AAAA,IACA,MAAM,UAAU,WAAW,MAAM;AAAA,MAChC,OACC,IAAI,MAAM,oDAAoD,CAC/D;AAAA,OACE,sBAAsB;AAAA,IACzB,eAAe,MAAM;AAAA,MACpB,aAAa,OAAO;AAAA,MACpB,UAAQ;AAAA;AAAA,IAET,MAAM,KAAK,QAAQ,CAAC,SAAS;AAAA,MAC5B,IAAI,CAAC,YAAY;AAAA,QAChB,aAAa,OAAO;AAAA,QACpB,OACC,IAAI,MAAM,iCAAiC,QAAQ,IAAI,CACxD;AAAA,MACD;AAAA,KACA;AAAA,GACD;AAAA,EACD,IAAI;AAAA,IACH,aAAa,OAAO,CAAC,SAAS;AAAA,MAC7B,IAAI;AAAA,QAAM,IAAI,WAAW,MAAM;AAAA,MAC/B,IACC,CAAC,cACD,qDAAqD,KAAK,IAAI,GAC7D;AAAA,QACD,aAAa;AAAA,QACb,eAAe;AAAA,MAChB;AAAA,KACA;AAAA,EACF,MAAM,QAAQ,MAAM;AAAA,IACnB,IAAI;AAAA,MAAY,YAAY,KAAK;AAAA;AAAA,EAElC,QAAQ,QAAQ,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;AAAA,EAC/D,MAAM,mBAAmB,OAAO,YAAoC;AAAA,IACnE,IAAI,QAAQ,QAAQ;AAAA,MAAS,MAAM,WAAW;AAAA,IAC9C,QAAQ,aAAa;AAAA,IACrB,IAAI,CAAC;AAAA,MACJ,MAAM,IAAI,UACT,kDACD;AAAA,IACD,MAAM,QACL,aAAa,YAAY,qBAAqB;AAAA,IAC/C,SAAS,KAAK;AAAA,IACd,MAAM,UAAU,YAAY,IAAI;AAAA,IAChC,MAAM,QAAQ,IAAI,YAAY,QAAQ,MAAM;AAAA,MAC3C,KAAK,KAAK;AAAA,MACV,KAAK,KAAK,QAAQ,QAAQ,QAAQ,IAAI;AAAA,MACtC,OAAO,CAAC,UAAU,QAAQ,MAAM;AAAA,IACjC,CAAC;AAAA,IACD,aAAa,OAAO,CAAC,SAAS;AAAA,MAC7B,IAAI;AAAA,QAAM,IAAI,IAAI,aAAa,MAAM;AAAA,KACrC;AAAA,IACD,MAAM,aAAa,MAAM,KAAK,YAAY,KAAK;AAAA,IAC/C,QAAQ,QAAQ,iBAAiB,SAAS,YAAY,EAAE,MAAM,KAAK,CAAC;AAAA,IACpE,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IACxC,QAAQ,QAAQ,oBAAoB,SAAS,UAAU;AAAA,IACvD,IAAI,QAAQ,QAAQ;AAAA,MAAS,MAAM,WAAW;AAAA,IAC9C,IAAI,aAAa,GAAG;AAAA,MACnB,MAAM,IAAI,MACT,QAAQ,iDAAiD,WAC1D;AAAA,IACD;AAAA,IACA,IACC,aAAa,SACb,QAAQ,4BACR,QAAQ,aACR,IAAI,IAAI,QAAQ,SAAS,EAAE,aAAa,YACxC,CAAC,QAAQ,WACR;AAAA,MACD,SAAS,iBAAiB;AAAA,MAC1B,MAAM,eAAe,YAAY,IAAI;AAAA,MACrC,MAAM,iBAA4C;AAAA,QACjD,KAAK,KAAK;AAAA,QACV,QAAQ,QAAQ;AAAA,QAChB,KAAK,CAAC,SAAiB,QAAQ,IAAI,eAAe,MAAM;AAAA,MACzD;AAAA,MACA,MAAM,YAAY,MAAM,kBACvB,KACA,SACA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,MACT,GACA,cACD;AAAA,MACA,IAAI,cAAc;AAAA,QACjB,MAAM,IAAI,MACT,8DAA8D,YAC/D;AAAA,MACD,MAAM,kBACL,KACA,SACA,CAAC,UAAU,aAAa,UAAU,QAAQ,OAAO,KAAK,GACtD,cACD;AAAA,MACA,MAAM,aAAa,MAAM,kBACxB,KACA,SACA,CAAC,UAAU,UAAU,UAAU,QAAQ,OAAO,KAAK,GACnD,cACD;AAAA,MACA,IAAI,eAAe;AAAA,QAClB,MAAM,IAAI,MACT,kDAAkD,aACnD;AAAA,MACD,IACC,6FACD;AAAA,MACA,cAAc,mBAAmB,YAAY,IAAI,IAAI,YAAY;AAAA,IAClE;AAAA,IACA,MAAM,aAAa,YAAY,IAAI,IAAI;AAAA,IACvC,QAAQ,SAAS;AAAA,IACjB,QAAQ,gBAAgB,EAAE,YAAY,OAAO,MAAM,CAAC;AAAA;AAAA,EAErD,MAAM,oBAAoB,OACzB,aACmB;AAAA,IACnB,OAAO,YAAY,aAAa;AAAA,IAChC,IAAI,CAAC;AAAA,MAAS;AAAA,IACd,MAAM,iBAAiB,OAAO;AAAA,IAC9B,MAAM,kBAAkB,SAAS;AAAA;AAAA,EAElC,MAAM,6BAA6B,YAAY;AAAA,IAC9C,IACC,CAAC,QAAQ,aACT,CAAC,QAAQ,4BACT,CAAC,QAAQ,aACT,IAAI,IAAI,QAAQ,SAAS,EAAE,aAAa,UACvC;AAAA,MACD;AAAA,IACD;AAAA,IACA,SAAS,iBAAiB;AAAA,IAC1B,MAAM,eAAe,YAAY,IAAI;AAAA,IACrC,MAAM,kBACL,QAAQ,2BACR;AAAA,IACD,qBAAqB,MAAM,gBAAgB;AAAA,MAC1C,0BAA0B,QAAQ;AAAA,MAClC,aAAa,IAAI,IAAI,QAAQ,SAAS,EAAE;AAAA,IACzC,CAAC;AAAA,IACD,IACC,2BAA2B,mBAAmB,6LAC/C;AAAA,IACA,cAAc,mBAAmB,YAAY,IAAI,IAAI,YAAY;AAAA;AAAA,EAElE,IAAI;AAAA,IACH,MAAM,2BAA2B;AAAA,IACjC,MAAM;AAAA,IACN,IAAI;AAAA,MACH,cAAc,kBAAkB,YAAY,IAAI,IAAI,YAAY;AAAA,IACjE,MAAM,kBAAkB,cAAc;AAAA,IACtC,SAAS,OAAO;AAAA,IAEhB,OAAO;AAAA,MACN,WAAW,KAAK;AAAA,MAChB,WAAW,QAAQ;AAAA,MACnB;AAAA,MACA,OAAO,YAAY;AAAA,QAClB,QAAQ,QAAQ,oBAAoB,SAAS,KAAK;AAAA,QAClD,IAAI;AAAA,UAAO,MAAM,YAAY,KAAK;AAAA,QAClC,MAAM,sBAAsB;AAAA,QAC5B,SAAS,QAAQ;AAAA;AAAA,IAEnB;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,QAAQ,oBAAoB,SAAS,KAAK;AAAA,IAClD,IAAI;AAAA,MAAO,MAAM,YAAY,KAAK;AAAA,IAClC,MAAM,sBAAsB;AAAA,IAC5B,SAAS,QAAQ;AAAA,IACjB,MAAM;AAAA;AAAA;;;AJjeR;;;AKtBA,uBAAS;AACT,mBAAS,mBAAQ,qBAAO,yBAAU;AAClC,oBAAS,sBAAS,sBAAS,uBAAU,kBAAS;AAGvC,IAAM,qCAAqC;AAuBlD,IAAM,sBAAsB;AAC5B,IAAM,qBAAqB;AAC3B,IAAM,wBAAwB,IAAI,IAAI;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,IAAM,UAAS,OAAO,SAAiB;AAAA,EACtC,IAAI;AAAA,IACH,MAAM,SAAO,IAAI;AAAA,IAEjB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,IAAM,aAAa,CAAC,UAAkB,IAAI,MAAM,WAAW,KAAK,IAAI;AAEpE,IAAM,cAAc,CACnB,aACA,OACA,QACA,UAAsC,CAAC,MACnC;AAAA,EACJ,MAAM,OAAO,UAAQ,WAAW;AAAA,EAChC,MAAM,OAAO,UAAQ,MAAM,KAAK;AAAA,EAChC,MAAM,WAAW,WAAS,MAAM,IAAI,EAAE,WAAW,MAAM,GAAG;AAAA,EAC1D,IACC,aAAa,QACb,SAAS,WAAW,KAAK,MAAK,KAC9B,SAAS,WAAW,KAAK,KACzB,aAAa,IACZ;AAAA,IACD,MAAM,IAAI,UAAU,GAAG,6CAA4C;AAAA,EACpE;AAAA,EACA,IAAI,SAAS,KAAK,QAAQ,KAAK,SAAS,WAAW,GAAG;AAAA,IACrD,MAAM,IAAI,UAAU,GAAG,iCAAgC;AAAA,EACxD,IAAI,CAAC,QAAQ,gBAAgB,CAAC,YAAW,IAAI;AAAA,IAC5C,MAAM,IAAI,UAAU,GAAG,2CAA0C;AAAA,EAElE,OAAO;AAAA;AAGR,IAAM,qBAAqB,CAAC,aAAqB,UAAmB;AAAA,EACnE,MAAM,OAAO,UAAQ,WAAW;AAAA,EAChC,MAAM,YAAY,UAAQ,MAAM,mBAAmB;AAAA,EACnD,MAAM,OAAO,UACZ,MACA,SAAS,uCACV;AAAA,EACA,MAAM,WAAW,WAAS,WAAW,IAAI;AAAA,EACzC,IACC,aAAa,QACb,SAAS,WAAW,KAAK,MAAK,KAC7B,SAAQ,IAAI,MAAM,UAAU,SAAQ,IAAI,MAAM,SAC9C;AAAA,IACD,MAAM,IAAI,UACT,kFACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,6BAA6B,CAAC,SAA4B,CAAC,MAAM;AAAA,EACtE,MAAM,QAAQ,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,EAAE,KAAK;AAAA,EACxC,WAAW,QAAQ,OAAO;AAAA,IACzB,IAAI,CAAC,oBAAoB,KAAK,IAAI;AAAA,MACjC,MAAM,IAAI,UACT,oFACD;AAAA,IACD,IACC,KAAK,WAAW,SAAS,KACzB,KAAK,WAAW,SAAS,KACzB,KAAK,WAAW,UAAU,KAC1B,sBAAsB,IAAI,IAAI,GAC7B;AAAA,MACD,MAAM,IAAI,UACT,kEAAkE,OACnE;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,0BAA0B,CAC/B,OACA,cAAc,uBAEd,MACE,IACA,CAAC,SACA,GAAG,IAAI,OAAO,WAAW,IAAI,sBAAsB,SACrD,EACC,KAAK;AAAA,CAAI;AAaZ,IAAM,sBAAqB,CAAC,YAC3B,+BAA+B,WAAW,QAAQ,cAAc,EAAE;AAAA,kCACjC,WAAW,QAAQ,cAAc;AAAA,+BACpC,WAAW,QAAQ,WAAW;AAE7D,IAAM,uBAAuB;AAAA;AAAA;AAI7B,IAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAOrB,IAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA,YAIb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YASA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeZ,IAAM,oBAAoB,CACzB,aACI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sDAMiD;AAAA,YAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeZ,IAAM,gBAAgB,CAAC,cAAiC;AAAA,EACvD,MAAM,UAAU,UAAU,WAAW,IAAI,CAAC,OAAO,GAAG,SAAS,IAAI;AAAA,EAEjE,OAAO;AAAA;AAAA;AAAA;AAAA,mBAIW,QAAQ;AAAA;AAAA,EAEzB,QAAQ,IAAI,CAAC,UAAU,eAAe,OAAO,EAAE,KAAK;AAAA,CAAI;AAAA;AAG1D,IAAM,mBAAmB,CACxB,WACA,sBACI;AAAA,EACJ,IAAI,CAAC;AAAA,IAAmB,OAAO;AAAA,EAC/B,MAAM,SAAS;AAAA,IACd;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA;AAAA;AAAA;AAAA;AAAA,EAID;AAAA,EACA,IAAI,UAAU,SAAS,SAAS;AAAA,IAC/B,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAUS;AAAA,EACtB,IAAI,UAAU,SAAS,KAAK,GAAG;AAAA,IAC9B,OAAO,KAAK;AAAA;AAAA;AAAA,qBAGO;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA,uBAIS;AAAA,EACtB;AAAA,EAEA,OAAO;AAAA,EAAK,OAAO,KAAK;AAAA,CAAI;AAAA;AAG7B,IAAM,eAAe,CAAC,aACrB,gGAAgG;AAEjG,IAAM,aAAa,CAAC,YAAgC;AAAA,EACnD,MAAM,SAAS,wBAAwB,QAAQ,aAAa;AAAA,EAC5D,MAAM,qBAAqB,QAAQ,oBAChC;AAAA;AAAA;AAAA;AAAA;AAAA,8FAMA;AAAA,EACH,MAAM,iBAAiB,QAAQ,oBAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAWA;AAAA,EACH,MAAM,cAAc,QAAQ,oBACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBASA;AAAA,EAEH,OAAO;AAAA;AAAA;AAAA;AAAA,eAIO,aAAa,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gFAY2C,qBAAqB,SAAS;AAAA,EAAK,WAAW;AAAA,EAC5H,oBAAmB,EAAE,YAAY,WAAW,gBAAgB,IAAI,aAAa,GAAG,CAAC;AAAA;AAAA,EAEjF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gEAiB8D;AAAA;AAAA;AAAA;AAAA,YAIpD;AAAA,YACA;AAAA;AAAA,EAEV,kBAAkB,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsB7B,IAAM,SAAS,CAAC,YAAgC;AAAA,EAC/C,MAAM,SAAS,wBAAwB,QAAQ,aAAa;AAAA,EAC5D,MAAM,qBAAqB,QAAQ,oBAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uFASA;AAAA,EACH,MAAM,iBAAiB,QAAQ,oBAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAcA;AAAA,EACH,MAAM,gBAAgB,QAAQ,oBAC3B;AAAA;AAAA;AAAA,gBAIA;AAAA,EACH,MAAM,iBAAiB,QAAQ,oBAC5B;AAAA;AAAA;AAAA;AAAA,gBAKA;AAAA,EAEH,OAAO;AAAA;AAAA;AAAA;AAAA,eAIO,aAAa,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sFAWqD,qBAAqB,SAAS;AAAA,EAAK,WAAW;AAAA;AAAA,EAElI,oBAAmB,EAAE,YAAY,WAAW,gBAAgB,IAAI,aAAa,GAAG,CAAC;AAAA;AAAA,EAEjF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAUW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qDAoBwC;AAAA;AAAA;AAAA;AAAA,YAIzC;AAAA,YACA;AAAA;AAAA,EAEV,kBAAkB,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBzB,IAAM,kBAAkB,CACvB,WACA,mBACA,WACI;AAAA,EACJ,GAAI,UAAU,SAAS,SAAS,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,oBACD,CAAC,oCAAoC,IACrC,CAAC;AAAA,EACL,IACC,CAAC;AAAA,EACJ,GAAI,UAAU,SAAS,KAAK,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,oBACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IACC,CAAC;AAAA,EACL,IACC,CAAC;AAAA,EACJ,GAAG;AACJ;AAEO,IAAM,qCAAqC,CACjD,YACI;AAAA,EACJ,MAAM,YAAmC;AAAA,IACxC,GAAG,QAAQ,OAAO;AAAA,EACnB,EAAE,KAAK;AAAA,EACP,MAAM,oBAAoB,QAAQ,sBAAsB;AAAA,EACxD,MAAM,gBAAgB,2BAA2B,QAAQ,iBAAiB;AAAA,EAC1E,MAAM,cAAc,YACnB,QAAQ,aACR,QAAQ,eAAe,aACvB,+BACD;AAAA,EACA,MAAM,aAAa,QAAQ,aACxB,YACA,QAAQ,aACR,QAAQ,YACR,2BACD,IACC;AAAA,EACH,MAAM,iBAAiB,YACtB,QAAQ,aACR,QAAQ,kBAAkB,qBAC1B,+BACA,EAAE,cAAc,CAAC,kBAAkB,CACpC;AAAA,EACA,MAAM,cAAc,oBAAmB;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EACD,IAAI,WAAW,wEAAwE,oBAAoB,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOzH,cAAc,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKD,iBAAiB,WAAW,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAanE;AAAA;AAAA,EAEA;AAAA,EACA,mBAAmB,UAAU,SAAS,SAAS,IAAI,WAAW,EAAE,eAAe,kBAAkB,CAAC,IAAI,KAAK,UAAU,SAAS,KAAK,IAAI,OAAO,EAAE,eAAe,kBAAkB,CAAC,IAAI;AAAA;AAAA,EAEvL,MAAM,eAAe,IAAI,IAAI;AAAA,IAC5B;AAAA,MACC;AAAA,MACA,yBAAyB,WAAW,cAAc,EAAE;AAAA,IACrD;AAAA,IACA;AAAA,MACC;AAAA,MACA,6BAA6B,WAAW,cAAc;AAAA,IACvD;AAAA,IACA;AAAA,MACC;AAAA,MACA,0BAA0B,WAAW,WAAW;AAAA,IACjD;AAAA,EACD,CAAC;AAAA,EACD,YAAY,aAAa,gBAAgB;AAAA,IACxC,WAAW,SAAS,WAAW,aAAa,WAAW;AAAA,EAExD,OAAO;AAAA,IACN,iBAAiB,gBAChB,WACA,mBACA,aACD;AAAA,IACA;AAAA,EACD;AAAA;AAGM,IAAM,oCAAoC,OAChD,YACiD;AAAA,EACjD,MAAM,OAAO,mBAAmB,QAAQ,aAAa,QAAQ,UAAU;AAAA,EACvE,MAAM,YAAY,mCAAmC,OAAO;AAAA,EAC5D,MAAM,WAAY,MAAM,QAAO,IAAI,IAChC,MAAM,WAAS,MAAM,MAAM,IAC3B;AAAA,EACH,IACC,aAAa,aACb,aAAa,UAAU,YACvB,CAAC,QAAQ;AAAA,IAET,MAAM,IAAI,UACT,GAAG,WAAS,QAAQ,aAAa,IAAI,qFACtC;AAAA,EACD,IAAI,aAAa,UAAU,UAAU;AAAA,IACpC,MAAM,QAAM,UAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,IAC9C,MAAM,YAAU,MAAM,UAAU,QAAQ;AAAA,EACzC;AAAA,EAEA,OAAO;AAAA,IACN,SAAS,aAAa,UAAU;AAAA,IAChC,QAAQ;AAAA,IACR;AAAA,IACA,WAAW,CAAC,GAAG,QAAQ,OAAO,SAAS,EAAE,KAAK;AAAA,IAC9C,YAAY,QAAQ,sBAAsB;AAAA,IAC1C,iBAAiB,UAAU;AAAA,EAC5B;AAAA;;ACzoBD,mBAAS;;;ACAT;AAYA,IAAM,oBAAoB,CACzB,UAEA,OAAO,UAAU,YACjB,UAAU,SACV,cAAc,UACd,OAAO,MAAM,aAAa,eAC1B,SAAS,UACT,OAAO,MAAM,QAAQ;AAEtB,IAAM,qBAAqB,MAAM;AAAA,EAChC,MAAM,QAAQ,QAAQ,IAAI,YAAY,oCAAoC;AAAA,EAE1E,OAAO,kBAAkB,KAAK,IAAI,QAAQ;AAAA;AAG3C,IAAM,wBAAwB,MAAM;AAAA,EACnC,MAAM,WAAW,mBAAmB;AAAA,EACpC,IAAI;AAAA,IAAU,OAAO;AAAA,EAErB,MAAM,UAAU,IAAI;AAAA,EACpB,QAAQ,IAAI,YAAY,sCAAsC,OAAO;AAAA,EAErE,OAAO;AAAA;AAGD,IAAM,gCAAgC,CAC5C,SACA,aACI,sBAAsB,EAAE,IAAI,SAAS,QAAQ;;;ADRlD,IAAM,yBAAyB,IAAI,IAAI;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AACD,CAAC;AACD,IAAM,8BAA8B,OAAO,OAAO,2BAA2B;AAC7E,IAAM,4BAA4B;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACJ,EAAE,KAAK,IAAI;AACX,IAAM,sBAAsB,IAAI,IAAI;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,IAAM,sBAAsB,CAAC,YAAqB;AAAA,EACjD,MAAM,SAAS,QAAQ,QAAQ,IAAI,QAAQ;AAAA,EAE3C,OAAO,UAAU,uBAAuB,IAAI,MAAM,IAAI,SAAS;AAAA;AAGhE,IAAM,yBAAyB,CAAC,UAAoB,WAAmB;AAAA,EACtE,SAAS,QAAQ,IAAI,oCAAoC,MAAM;AAAA,EAC/D,SAAS,QAAQ,IAAI,+BAA+B,MAAM;AAAA,EAC1D,SAAS,QAAQ,OAAO,QAAQ,QAAQ;AAAA,EAExC,OAAO;AAAA;AAGR,IAAM,yBAAyB,CAAC,SAAkB,aAAuB;AAAA,EACxE,MAAM,SAAS,oBAAoB,OAAO;AAAA,EAE1C,OAAO,SAAS,uBAAuB,UAAU,MAAM,IAAI;AAAA;AAG5D,IAAM,0BAA0B,CAAC,YAAqB;AAAA,EACrD,IAAI,QAAQ,WAAW;AAAA,IAAW;AAAA,EAClC,MAAM,SAAS,oBAAoB,OAAO;AAAA,EAC1C,IAAI,CAAC;AAAA,IAAQ;AAAA,EACb,MAAM,mBAAmB,QAAQ,QAAQ,IACxC,gCACD;AAAA,EACA,MAAM,kBACL,QAAQ,QAAQ,IAAI,+BAA+B,GAAG,YAAY,KAClE;AAAA,EACD,IAAI,CAAC,oBAAoB,IAAI,eAAe;AAAA,IAAG;AAAA,EAE/C,OAAO,IAAI,SAAS,MAAM;AAAA,IACzB,SAAS;AAAA,MACR,oCAAoC;AAAA,MACpC,gCACC,oBAAoB;AAAA,MACrB,gCAAgC,CAAC,GAAG,mBAAmB,EAAE,KAAK,IAAI;AAAA,MAClE,+BAA+B;AAAA,MAC/B,0BAA0B;AAAA,MAC1B,MAAM;AAAA,IACP;AAAA,IACA,QAAQ;AAAA,EACT,CAAC;AAAA;AAGF,IAAM,sBAAsB,CAC3B,UACA,QACA,YACI;AAAA,EACJ,QAAQ,aAAa,IAAI,IAAI,QAAQ,GAAG;AAAA,EAExC,OAAO,SAAS,OAAO,KACtB,CAAC,UACA,MAAM,WAAW,UACjB,MAAM,WAAW,QAAQ,UACzB,kCAAkC,MAAM,SAAS,QAAQ,CAC3D;AAAA;AAGD,IAAM,yBAAyB,CAC9B,iBACI;AAAA,EACJ,MAAM,YAAY,IAAI;AAAA,EAKtB,OAAO,CAAC,aAAkD;AAAA,IACzD,MAAM,SAAS,UAAU,IAAI,SAAS,SAAS;AAAA,IAC/C,IAAI;AAAA,MAAQ,OAAO;AAAA,IAEnB,MAAM,UAAU,aAAa,QAAQ,EAAE,MAAM,CAAC,UAAmB;AAAA,MAChE,UAAU,OAAO,SAAS,SAAS;AAAA,MAEnC,MAAM;AAAA,KACN;AAAA,IACD,UAAU,IAAI,SAAS,WAAW,OAAO;AAAA,IAEzC,OAAO;AAAA;AAAA;AAIF,IAAM,8CAA8C,CAC1D,YACI;AAAA,EACJ,MAAM,YAAY,2CACjB,QAAQ,SACT;AAAA,EACA,IACC,CAAC,UAAU,KACV,GAAG,gBAAgB,cAAc,QAAQ,gBAC1C,GACC;AAAA,IACD,MAAM,IAAI,UACT,mEACD;AAAA,EACD;AAAA,EACA,MAAM,kBAAkB,uBAAuB,QAAQ,YAAY;AAAA,EAEnE,OAAO,IAAI,QAAO,EAAE,MAAM,6CAA6C,CAAC,EACtE,QAAQ,SAAS,cAAc;AAAA,IAC/B,IAAI,wCAAwC;AAAA,MAAG;AAAA,IAC/C,MAAM,YAAY,wBAAwB,OAAO;AAAA,IACjD,IAAI;AAAA,MAAW,OAAO;AAAA,IACtB,MAAM,SAAS,+BAA+B,OAAO;AAAA,IACrD,IAAI,OAAO,SAAS;AAAA,MAAU;AAAA,IAE9B,MAAM,WAAW,0CAChB,OAAO,QACP,SACD;AAAA,IACA,IAAI,SAAS,SAAS,oBAAoB;AAAA,MACzC,OAAO,uBACN,SACA,oCAAoC,SAAS,MAAM,CACpD;AAAA,IACD;AAAA,IACA,IACC,CAAC,oBACA,SAAS,UACT,OAAO,OAAO,QACd,OACD,GACC;AAAA,MACD,OAAO,uBACN,SACA,2CACC,wDACD,CACD;AAAA,IACD;AAAA,IACA,IAAI,SAAS,SAAS,cAAc,QAAQ,kBAAkB;AAAA,MAC7D;AAAA,IACD;AAAA,IAEA,IAAI;AAAA,MACH,MAAM,WAAW,MAAM,gBAAgB,SAAS,QAAQ;AAAA,MAExD,MAAM,WAAW,MAAM,8BACtB;AAAA,QACC,MAAM,SAAS;AAAA,QACf,WAAW,SAAS,SAAS;AAAA,MAC9B,GACA,MAAM,SAAS,OAAO,OAAO,CAC9B;AAAA,MAEA,OAAO,uBAAuB,SAAS,QAAQ;AAAA,MAC9C,OAAO,OAAO;AAAA,MACf,QAAQ,MACP,6CAA6C,SAAS,SAAS,cAC/D,KACD;AAAA,MAEA,OAAO,uBACN,SACA,sCAAsC,OAAO,OAAO,MAAM,CAC3D;AAAA;AAAA,GAED,EACA,YAAY,UAAU,GAAG,SAAS,oBAAoB;AAAA,IACtD,MAAM,SAAS,oBAAoB,OAAO;AAAA,IAC1C,IAAI,CAAC,UAAU,EAAE,yBAAyB;AAAA,MAAW;AAAA,IAErD,uBAAuB,eAAe,MAAM;AAAA,GAC5C,EACA,GAAG,QAAQ;AAAA;;AEjOd;AAFA,mBAAS;AAIF,IAAM,+BACZ;AAED,IAAM,cAAa,CAAC,UACnB,MACE,WAAW,KAAK,OAAO,EACvB,WAAW,KAAK,MAAM,EACtB,WAAW,KAAK,MAAM,EACtB,WAAW,KAAK,QAAQ;AAE3B,IAAM,YAAW,CAAC,UACjB,OAAO,UAAU,YAAY,UAAU;AAExC,IAAM,kBAAiB,CAAC,UAA8B;AAAA,EACrD,MAAM,SAAS,IAAI,IAAI,SAAS,KAAK,0BAA0B;AAAA,EAE/D,OAAO,GAAG,OAAO,WAAW,OAAO,SAAS,OAAO;AAAA;AAG7C,IAAM,gCAAgC,CAAC,WAAyB;AAAA,EACtE,MAAM,QAAQ,gBAAe,OAAO,KAAK;AAAA,EACzC,MAAM,UAAU,OAAO,SAAS,KAAK,KAAK;AAAA,EAC1C,MAAM,OAAO,KAAK,UAAU,EAAE,SAAS,MAAM,CAAC,EAAE,WAAW,KAAK,SAAS;AAAA,EAEzE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAOC,YAAW,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2IAOgH,YAAW,OAAO;AAAA;AAAA,MAEvJ,YAAW,OAAO;AAAA;AAAA;AAAA,yHAGiG,YAAW,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAQlH;AAAA;AAAA;AAAA;AAKhB,IAAM,oCAAoC,CAChD,WACI;AAAA,EACJ,IAAI,CAAC;AAAA,IACJ,OAAO,IAAI,QAAO,EAAE,MAAM,qCAAqC,CAAC;AAAA,EAEjE,OAAO,IAAI,QAAO,EAAE,MAAM,4BAA4B,CAAC,EACrD,IACA,8BACA,MACC,IAAI,SAAS,8BAA8B,MAAM,GAAG;AAAA,IACnD,SAAS;AAAA,MACR,iBAAiB;AAAA,MACjB,2BACC;AAAA,MACD,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IACjB;AAAA,EACD,CAAC,CACH,EACC,KAAK,wCAAwC,GAAG,MAAM,aAAa;AAAA,IACnE,MAAM,QAAQ,UAAS,IAAI,IAAI,OAAO;AAAA,IACtC,MAAM,aAAa,OAAO;AAAA,IAC1B,MAAM,YAAW,OAAO;AAAA,IACxB,IACC,OAAO,eAAe,YACtB,CAAC,OAAO,SAAS,UAAU,KAC3B,aAAa,KACb,aAAa,UACZ,cAAa,aAAa,cAAa,OACvC;AAAA,MACD,OAAO,OAAO,KAAK,EAAE,OAAO,4BAA4B,CAAC;AAAA,IAC1D;AAAA,IACA,mBAAmB,wBAAwB;AAAA,MAC1C,YAAY,KAAK,MAAM,UAAU;AAAA,MACjC;AAAA,MACA,UAAU;AAAA,MACV,QAAQ;AAAA,IACT,CAAC;AAAA,IAED,OAAO,OAAO,GAAG;AAAA,GACjB;AAAA;;ACrGH,qBAAS,sBAAU,uBAAQ;AAC3B,iBAAS;AAIT,IAAM,eAAe;AACrB,IAAM,aAAa;AACnB,IAAM,mBAAmB;AACzB,IAAM,YAAY;AAElB,IAAM,YAAY,CAAC,UAClB,MACE,WAAW,KAAK,OAAO,EACvB,WAAW,KAAK,QAAQ,EACxB,WAAW,KAAK,QAAQ,EACxB,WAAW,KAAK,MAAM,EACtB,WAAW,KAAK,MAAM;AAEzB,IAAM,mBAAmB,OAAO,MAAc,WAAmB;AAAA,EAChE,MAAM,UAAU,MAAM,WAAS,MAAM,MAAM;AAAA,EAC3C,IAAI,YAAY;AAAA,IAAQ,OAAO;AAAA,EAC/B,MAAM,YAAY,GAAG,QAAQ,OAAO,WAAW;AAAA,EAC/C,MAAM,YAAU,WAAW,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,EACjD,MAAM,SAAO,WAAW,IAAI;AAAA,EAE5B,OAAO;AAAA;AAGR,IAAM,uBAAuB,CAC5B,QACA,QACA,aACI;AAAA,EACJ,MAAM,QAAQ,OAAO,QAAQ,YAAY;AAAA,EACzC,MAAM,MAAM,OAAO,QAAQ,UAAU;AAAA,EACrC,IACE,UAAU,eAAgB,QAAQ,cAClC,UAAU,aAAa,MAAM,OAC7B;AAAA,IACD,MAAM,IAAI,UACT,uDACD;AAAA,EACD;AAAA,EACA,IAAI,UAAU,WAAW;AAAA,IACxB,MAAM,YAAY,OAAO,YAAY;AAAA,GAAM,KAAK,IAAI;AAAA,IACpD,MAAM,WAAW,OAAO,QAAQ;AAAA,GAAM,MAAM,WAAW,MAAM;AAAA,IAC7D,MAAM,UAAU,aAAa,YAAY,OAAO,SAAS,WAAW;AAAA,IAEpE,OAAO,GAAG,OAAO,MAAM,GAAG,SAAS,IAAI,SAAS,OAAO,MAAM,OAAO;AAAA,EACrE;AAAA,EACA,MAAM,QAAQ,SAAS;AAAA,EACvB,IAAI,UAAU,WAAW;AAAA,IACxB,MAAM,IAAI,UACT,4EACD;AAAA,EACD;AAAA,EAEA,OAAO,GAAG,OAAO,MAAM,GAAG,KAAK,IAAI,SAAS,OAAO,MAAM,KAAK;AAAA;AAG/D,IAAM,gBAAgB,CAAC,WAA2C;AAAA,EACjE,MAAM,QAAQ,OAAO,cACnB,IACA,CAAC,UACA,8DAA8D,UAAU,KAAI,OAC9E,EACC,KAAK;AAAA,CAAI;AAAA,EACX,MAAM,eAAe,OAAO,iBACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wCAA4S,UAAU,OAAO,cAAc;AAAA,gCAC3U;AAAA,EAEH,OAAO,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,EAA0S;AAAA,8BAAsC;AAAA,cAA6B;AAAA;AAAA;AAGpY,IAAM,mBAAmB,OAAO,WAA2C;AAAA,EAC1E,MAAM,OAAO,OACZ,OAAO,wBACP,0CACD;AAAA,EACA,MAAM,SAAS,MAAM,WAAS,MAAM,MAAM;AAAA,EAC1C,MAAM,eAAe,OAAO,QAAQ,8BAA8B;AAAA,EAClE,IAAI,iBAAiB,WAAW;AAAA,IAC/B,MAAM,IAAI,UAAU,qCAAqC;AAAA,EAC1D;AAAA,EACA,MAAM,cAAc,OAAO,QAAQ,eAAe,YAAY;AAAA,EAC9D,MAAM,UAAU,qBAAqB,QAAQ,cAAc,MAAM,GAAG,MACnE,gBAAgB,YACb,YACA,OAAO,YAAY;AAAA,GAAM,WAAW,IAAI,CAC5C;AAAA,EAEA,OAAO,iBAAiB,MAAM,OAAO;AAAA;AAGtC,IAAM,kBAAkB,CAAC,WACxB,IAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAgN,UAAU,MAAM;AAAA;AAAA;AAAA;AAAA,GAA0D;AAAA;AAEhS,IAAM,mBAAmB,OAAO,WAA2C;AAAA,EAC1E,MAAM,OAAO,OAAK,OAAO,wBAAwB,wBAAwB;AAAA,EACzE,MAAM,SAAS,MAAM,WAAS,MAAM,MAAM;AAAA,EAC1C,MAAM,SAAS,OAAO,iBACnB,gBAAgB,OAAO,cAAc,IACrC,IAAK;AAAA,GAAmB;AAAA;AAAA,EAC3B,MAAM,UAAU,qBAAqB,QAAQ,QAAQ,MACpD,OAAO,YAAY,SAAS,CAC7B;AAAA,EAEA,OAAO,iBAAiB,MAAM,OAAO;AAAA;AAGtC,IAAM,wBAAwB,CAAC,WAA2C;AAAA,EACzE,MAAM,UAAU,OAAO,cACrB,IAAI,CAAC,UAAS,sBAAwB,UAAU,KAAI,YAAY,EAChE,KAAK;AAAA,CAAI;AAAA,EAEX,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMN;AAAA;AAAA;AAAA;AAAA;AAAA;AAOF,IAAM,2BAA2B,OAChC,WACI;AAAA,EACJ,MAAM,OAAO,OACZ,OAAO,wBACP,iCACD;AAAA,EACA,IAAI,UAAU;AAAA,EACd,IAAI;AAAA,IACH,UAAU,MAAM,WAAS,MAAM,MAAM;AAAA,IACpC,OAAO,OAAO;AAAA,IACf,IACC,EAAE,iBAAiB,UACnB,EAAE,UAAU,UACZ,MAAM,SAAS,UACd;AAAA,MACD,MAAM;AAAA,IACP;AAAA;AAAA,EAED,MAAM,SAAS,sBAAsB,MAAM;AAAA,EAC3C,IAAI,YAAY;AAAA,IAAQ,OAAO;AAAA,EAC/B,MAAM,YAAY,GAAG,QAAQ,OAAO,WAAW;AAAA,EAC/C,MAAM,YAAU,WAAW,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,EACjD,MAAM,SAAO,WAAW,IAAI;AAAA,EAE5B,OAAO;AAAA;AAGR,IAAM,sBAAsB,OAAO,WAA2C;AAAA,EAC7E,MAAM,OAAO,OACZ,OAAO,wBACP,uCACD;AAAA,EACA,MAAM,SAAS,MAAM,WAAS,MAAM,MAAM;AAAA,EAC1C,MAAM,eAAe;AAAA,IACpB,GAAG,OAAO,SAAS,oCAAoC;AAAA,EACxD,EAAE,IAAI,CAAC,UAAU,MAAM,EAAE;AAAA,EACzB,IAAI,aAAa,KAAK,CAAC,UAAU,UAAU,gBAAgB,GAAG;AAAA,IAC7D,MAAM,IAAI,UACT,8GACD;AAAA,EACD;AAAA,EACA,IAAI,aAAa,SAAS;AAAA,IAAG,OAAO;AAAA,EACpC,IAAI,QAAQ;AAAA,EACZ,MAAM,UAAU,OAAO,WACtB,oCACA,MAAM;AAAA,IACL,SAAS;AAAA,IAET,OAAO,4BAA4B;AAAA;AAAA,GAErC;AAAA,EACA,IAAI,UAAU,GAAG;AAAA,IAChB,MAAM,IAAI,UACT,2DACD;AAAA,EACD;AAAA,EAEA,OAAO,iBAAiB,MAAM,OAAO;AAAA;AAGtC,IAAM,eAAe,OAAO,WAA2C;AAAA,EACtE,MAAM,UAAU,MAAM,QAAQ,IAAI;AAAA,IACjC,iBAAiB,MAAM;AAAA,IACvB,yBAAyB,MAAM;AAAA,IAC/B,oBAAoB,MAAM;AAAA,EAC3B,CAAC;AAAA,EAED,OAAO,QAAQ,KAAK,OAAO;AAAA;AAGrB,IAAM,+BAA+B,OAC3C,QACA,YAAuC,OAAO,cAC1C;AAAA,EACJ,MAAM,UAAU,MAAM,QAAQ,IAC7B,UAAU,IAAI,OAAO,cAAa;AAAA,IACjC,MAAM,YACL,cAAa,YACV,MAAM,iBAAiB,MAAM,IAC7B,MAAM,aAAa,MAAM;AAAA,IAE7B,OAAO,EAAE,WAAW,oBAAS;AAAA,GAC7B,CACF;AAAA,EAEA,OAAO;AAAA,IACN,SAAS,QACP,OAAO,GAAG,gBAAgB,SAAS,EACnC,IAAI,GAAG,0BAAe,SAAQ;AAAA,EACjC;AAAA;;ACtND;AAJA,qBAAS,sBAAU,uBAAQ;AAC3B,iBAAS;AAUT,IAAM,gBAAe;AACrB,IAAM,cAAa;AACnB,IAAM,aAAY;AAClB,IAAM,6BAA6B;AACnC,IAAM,yBAAyB;AAC/B,IAAM,oBAAoB;AAC1B,IAAM,kBAAkB;AAExB,IAAM,aAAY,CAAC,UAClB,MACE,WAAW,KAAK,OAAO,EACvB,WAAW,KAAK,QAAQ,EACxB,WAAW,KAAK,QAAQ,EACxB,WAAW,KAAK,MAAM,EACtB,WAAW,KAAK,MAAM;AAEzB,IAAM,oBAAmB,OAAO,MAAc,WAAmB;AAAA,EAChE,MAAM,UAAU,MAAM,WAAS,MAAM,MAAM;AAAA,EAC3C,IAAI,YAAY;AAAA,IAAQ,OAAO;AAAA,EAC/B,MAAM,YAAY,GAAG,QAAQ,OAAO,WAAW;AAAA,EAC/C,MAAM,YAAU,WAAW,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,EACjD,MAAM,SAAO,WAAW,IAAI;AAAA,EAE5B,OAAO;AAAA;AAGR,IAAM,2BAA2B,OAAO,MAAc,WAAmB;AAAA,EACxE,MAAM,UAAU,MAAM,eAAe,IAAI;AAAA,EACzC,IAAI,YAAY;AAAA,IAAQ,OAAO;AAAA,EAC/B,IAAI,YAAY,MAAM;AAAA,IACrB,MAAM,YAAU,MAAM,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,IAE5C,OAAO;AAAA,EACR;AAAA,EAEA,OAAO,kBAAiB,MAAM,MAAM;AAAA;AAGrC,IAAM,iBAAiB,OAAO,SAAiB;AAAA,EAC9C,IAAI;AAAA,IACH,OAAO,MAAM,WAAS,MAAM,MAAM;AAAA,IACjC,OAAO,OAAO;AAAA,IACf,IACC,OAAO,UAAU,YACjB,UAAU,QACV,QAAQ,IAAI,OAAO,MAAM,MAAM;AAAA,MAE/B,OAAO;AAAA,IACR,MAAM;AAAA;AAAA;AAIR,IAAM,UAAU,CAAC,QAAgB,QAAgB,cAAsB;AAAA,EACtE,MAAM,QAAQ,OAAO,QAAQ,aAAY;AAAA,EACzC,MAAM,MAAM,OAAO,QAAQ,WAAU;AAAA,EACrC,IACE,UAAU,gBAAgB,QAAQ,eAClC,UAAU,cAAa,MAAM;AAAA,IAE9B,MAAM,IAAI,UACT,+DACD;AAAA,EACD,IAAI,UAAU,YAAW;AAAA,IACxB,MAAM,YAAY,OAAO,YAAY;AAAA,GAAM,KAAK,IAAI;AAAA,IACpD,MAAM,WAAW,OAAO,QAAQ;AAAA,GAAM,MAAM,YAAW,MAAM;AAAA,IAC7D,MAAM,UAAU,aAAa,aAAY,OAAO,SAAS,WAAW;AAAA,IAEpE,OAAO,GAAG,OAAO,MAAM,GAAG,SAAS,IAAI,SAAS,OAAO,MAAM,OAAO;AAAA,EACrE;AAAA,EACA,IAAI,OAAO,WAAW;AAAA,IAAG,OAAO;AAAA,EAChC,IAAI,cAAc;AAAA,IACjB,MAAM,IAAI,UACT,uEACD;AAAA,EAED,OAAO,GAAG,OAAO,MAAM,GAAG,SAAS,IAAI,SAAS,OAAO,MAAM,SAAS;AAAA;AAGvE,IAAM,WAAwD;AAAA,EAC7D,QAAQ;AAAA,EACR,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,qBAAqB;AACtB;AAEA,IAAM,iBAAiB,CACtB,SACA,YACI;AAAA,EACJ,IAAI,YAAY;AAAA,IACf,OAAO,GAAG;AAAA,EACX,IAAI,YAAY;AAAA,IACf,OAAO,GAAG;AAAA,EACX,IAAI,YAAY;AAAA,IACf,OAAO,GAAG;AAAA,EACX,IAAI,YAAY;AAAA,IACf,OAAO,GAAG;AAAA,EAEX,OAAO,GAAG;AAAA;AAGX,IAAM,iBAAiB,CACtB,iBAEA,aAAa,uBACX,IACA,GAAG,KAAK,cACP;AAAA;AAAA,aAAgE,WAAU,GAAG;AAAA;AAAA;AAAA,EAA0E,QACrJ,IAAI,CAAC,WAAW,eAAe,WAAU,MAAM,YAAY,EAC3D,KAAK;AAAA,CAAI;AAAA;AAAA,UACb,EACC,KAAK;AAAA,CAAI;AAEZ,IAAM,wBAAwB,CAC7B,QACA,iBACI;AAAA,EACJ,MAAM,UAAU,eAAe,YAAY;AAAA,EAC3C,MAAM,cAAc,UACjB,IAAI;AAAA;AAAA;AAAA,EAAkE;AAAA;AAAA,GAAwB;AAAA,IAC9F;AAAA,EACH,IAAI,WAAW;AAAA,IACd,OAAO,UACJ;AAAA;AAAA;AAAA;AAAA,EAAkL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAClL;AAAA,EAEJ,MAAM,QAAQ,OAAO,QAAQ,aAAY;AAAA,EACzC,IAAI,UAAU,YAAW;AAAA,IACxB,MAAM,MAAM,OAAO,QAAQ,WAAU;AAAA,IACrC,IAAI,QAAQ;AAAA,MACX,MAAM,IAAI,UACT,+DACD;AAAA,IACD,MAAM,QAAQ,OAAO,MAAM,OAAO,GAAG;AAAA,IACrC,MAAM,eAAe,MAAM,SAAS,2BAA2B;AAAA,IAC/D,IAAI,SAAS;AAAA,IACb,IAAI;AAAA,MAAc,SAAS;AAAA,IACtB,SAAI;AAAA,MACR,SAAS,KAAK;AAAA,EAAiB;AAAA,IAAc;AAAA;AAAA,IAE9C,OAAO,QAAQ,QAAQ,QAAQ,OAAO,YAAY,SAAS,CAAC;AAAA,EAC7D;AAAA,EAEA,MAAM,MAAM,OAAO,QAAQ,sCAAsC;AAAA,EACjE,IAAI,QAAQ;AAAA,IACX,OAAO,QAAQ,QAAQ,aAAa,OAAO,YAAY,SAAS,CAAC;AAAA,EAClE,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EACrB,MAAM,QAAQ,OAAO,QAAQ,WAAW,GAAG;AAAA,EAC3C,IAAI,UAAU;AAAA,IACb,MAAM,IAAI,UACT,4EACD;AAAA,EACD,MAAM,YAAY,OAAO,QAAQ;AAAA,GAAM,KAAK;AAAA,EAC5C,IAAI,cAAc;AAAA,IACjB,MAAM,IAAI,UAAU,+CAA+C;AAAA,EAEpE,OAAO,QACN,QACA,KAAK;AAAA,EAAiB;AAAA,IAAc;AAAA,GACpC,YAAY,CACb;AAAA;AAGD,IAAM,0BAA0B,OAC/B,MACA,SACA,WACI;AAAA,EACJ,IAAI,WAAW;AAAA,IAAM,OAAO;AAAA,EAC5B,IAAI,YAAY;AAAA,IAAM,OAAO,kBAAiB,MAAM,MAAM;AAAA,EAC1D,MAAM,YAAU,MAAM,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,EAE5C,OAAO;AAAA;AAGR,IAAM,6BAA6B,OAClC,QACA,iBACI;AAAA,EACJ,IAAI,aAAa,uBAAuB,WAAW;AAAA,IAAG,OAAO;AAAA,EAC7D,MAAM,eAAc,OACnB,OAAO,wBACP,uCACD;AAAA,EACA,MAAM,UAAU,MAAM,WAAS,cAAa,MAAM;AAAA,EAElD,OAAO,kBACN,cACA,8BAA8B,OAAO,CACtC;AAAA;AAGD,IAAM,gCAAgC,CAAC,WAAmB;AAAA,EACzD,MAAM,YAAY,OAAO,MACxB,8EACD;AAAA,EACA,MAAM,gBAAgB,YAAY,MAAM;AAAA,EACxC,MAAM,aAAa,OAAO,MACzB,uFACD;AAAA,EACA,MAAM,YAAY,aAAa,MAAM;AAAA,EACrC,IACE,CAAC,aAAa,OAAO,SAAS,aAAa,KAC3C,CAAC,cAAc,OAAO,SAAS,SAAS;AAAA,IAEzC,MAAM,IAAI,UACT,sDACD;AAAA,EAED,IAAI,OAAO;AAAA,EACX,IAAI,CAAC,YAAY;AAAA,IAChB,MAAM,SAAS;AAAA,IACf,MAAM,QAAQ,KAAK,QAAQ,MAAM;AAAA,IACjC,IAAI,UAAU;AAAA,MACb,MAAM,IAAI,UAAU,8CAA8C;AAAA,IACnE,OAAO,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM,uFAAuF;AAAA,EAAkD,KAAK,MAAM,KAAK;AAAA,EAC7L;AAAA,EACA,IAAI,CAAC,WAAW;AAAA,IACf,MAAM,SAAS;AAAA,IACf,MAAM,QAAQ,KAAK,QAAQ,MAAM;AAAA,IACjC,IAAI,UAAU;AAAA,MACb,MAAM,IAAI,UACT,kDACD;AAAA,IACD,OAAO,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM;AAAA,EAAgK,KAAK,MAAM,KAAK;AAAA,EACpN;AAAA,EACA,MAAM,cAAc,KAAK,QAAQ,8BAA8B;AAAA,EAC/D,MAAM,YAAY,KAAK,QAAQ,4BAA4B;AAAA,EAC3D,MAAM,SAAS,KAAK,MAAM,aAAa,SAAS;AAAA,EAChD,IAAI,CAAC,OAAO,SAAS,GAAG,2CAA2C,GAAG;AAAA,IACrE,MAAM,WAAW,OAAO,MACvB,gFACD;AAAA,IACA,IAAI,CAAC,YAAY,SAAS,UAAU;AAAA,MACnC,MAAM,IAAI,UAAU,sCAAsC;AAAA,IAC3D,MAAM,QAAQ,cAAc,SAAS,QAAQ,SAAS,GAAG;AAAA,IACzD,OAAO,GAAG,KAAK,MAAM,GAAG,KAAK,QAAQ;AAAA,EAA+C,KAAK,MAAM,KAAK;AAAA,EACrG;AAAA,EACA,MAAM,iBAAiB,KAAK,QAC3B,4CACD;AAAA,EACA,MAAM,eAAe,KAAK,QACzB,0CACD;AAAA,EACA,MAAM,YAAY,KAAK,MAAM,gBAAgB,YAAY;AAAA,EACzD,IACC,CAAC,UAAU,SACV,GAAG,oDACJ,GACC;AAAA,IACD,MAAM,QAAQ,UAAU,MACvB,kFACD;AAAA,IACA,IAAI,CAAC,SAAS,MAAM,UAAU;AAAA,MAC7B,MAAM,IAAI,UACT,+CACD;AAAA,IACD,MAAM,QAAQ,iBAAiB,MAAM,QAAQ,MAAM,GAAG;AAAA,IACtD,OAAO,GAAG,KAAK,MAAM,GAAG,KAAK,QAAQ;AAAA,EAAwD,KAAK,MAAM,KAAK;AAAA,EAC9G;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,gBAAe,OACpB,QACA,SACI;AAAA,EACJ,MAAM,OAAO,OAAK,OAAO,wBAAwB,wBAAwB;AAAA,EACzE,MAAM,SAAS,MAAM,WAAS,MAAM,MAAM;AAAA,EAC1C,MAAM,eAAe,iCAAiC,IAAI;AAAA,EAC1D,MAAM,qBAAqB,OAAO,MACjC,6EACD;AAAA,EACA,MAAM,aAAa,OAAO,QAAQ,aAAY;AAAA,EAC9C,MAAM,WAAW,OAAO,QAAQ,WAAU;AAAA,EAC1C,MAAM,iBACL,cAAc,KACd,WAAW,cACX,OACE,MAAM,YAAY,QAAQ,EAC1B,SAAS,0CAA0C;AAAA,EACtD,IACC,aAAa,iBACb,qBAAqB,OAAO,WAC5B,CAAC;AAAA,IAED,MAAM,IAAI,UACT,8EACD;AAAA,EACD,MAAM,eAAe,aAAa,qBAChC,IACA,CAAC,YACA,SAAU,SAAS;AAAA,WAA6B,WAAU,eAAe,OAAO,SAAS,OAAO,CAAC,YACnG,EACC,KAAK;AAAA,CAAI;AAAA,EACX,MAAM,oBACL,aAAa,kBACZ,uBAAuB,QAAQ,kBAC7B;AAAA,YACA;AAAA,EACJ,MAAM,UAAU,CAAC,cAAc,iBAAiB,EAC9C,OAAO,OAAO,EACd,KAAK;AAAA,CAAI;AAAA,EACX,MAAM,SAAS,UACZ,IAAK;AAAA,EAAiB;AAAA,GAAc;AAAA,IACpC;AAAA,EAEH,MAAM,cAAc,MAAM,kBACzB,MACA,QAAQ,QAAQ,QAAQ,OAAO,YAAY,SAAS,CAAC,CACtD;AAAA,EACA,MAAM,cAAc,OACnB,OAAO,wBACP,mCACD;AAAA,EACA,MAAM,iBAAiB,MAAM,eAAe,WAAW;AAAA,EACvD,MAAM,gBAAgB,sBAAsB,gBAAgB,YAAY;AAAA,EACxE,OAAO,gBAAgB,gBAAgB,eAAe,MAAM,QAAQ,IAAI;AAAA,IACvE,wBAAwB,aAAa,gBAAgB,aAAa;AAAA,IAClE,2BAA2B,QAAQ,YAAY;AAAA,IAC/C,8BAA8B,QAAQ,aAAa,oBAAoB;AAAA,EACxE,CAAC;AAAA,EAED,OAAO,eAAe,kBAAkB,kBAAkB;AAAA;AAG3D,IAAM,gCAAgC,OACrC,QACA,YACI;AAAA,EACJ,MAAM,mBAAmB,OACxB,OAAO,wBACP,iCACD;AAAA,EACA,MAAM,eAAe,MAAM,eAAe,gBAAgB;AAAA,EAC1D,IAAI,iBAAiB,QAAQ,CAAC;AAAA,IAAS,OAAO;AAAA,EAC9C,IAAI,iBAAiB;AAAA,IACpB,MAAM,IAAI,UACT,sGACD;AAAA,EACD,MAAM,oBAAoB,UACvB,SAAU;AAAA;AAAA;AAAA,QAA+F;AAAA,IACzG;AAAA,EACH,MAAM,mBAAmB,kBACxB,cACA,mBACA,aAAa,YAAY,SAAS,CACnC;AAAA,EACA,MAAM,eAAe,OACpB,OAAO,wBACP,+BACD;AAAA,EACA,MAAM,WAAW,MAAM,eAAe,YAAY;AAAA,EAClD,IAAI,aAAa,QAAQ,CAAC;AAAA,IAAS,OAAO;AAAA,EAC1C,IAAI,aAAa;AAAA,IAChB,MAAM,IAAI,UACT,oEACD;AAAA,EACD,MAAM,aAAa,SAAS,SAC3B,kDACD;AAAA,EACA,MAAM,aAAa,SAAS,SAC3B,kDACD;AAAA,EACA,IACC,WACA,eAAe,cACf,CAAC,SAAS,SAAS,iBAAiB;AAAA,IAEpC,MAAM,IAAI,UACT,uFACD;AAAA,EACD,MAAM,mBACL,WACA,cACA,cACA,SAAS,SAAS,4CAA4C,KAC9D,SAAS,SAAS,kDAAkD;AAAA,EACrE,MAAM,cACL,WAAW,CAAC,mBACT;AAAA,SAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAA8f;AAAA,IAC1gB;AAAA,EACJ,MAAM,eAAe,mBAClB,WACA,kBAAkB,UAAU,aAAa,SAAS,YAAY,GAAG,CAAC;AAAA,EACrE,MAAM,UAAU,MAAM,QAAQ,IAAI;AAAA,IACjC,kBAAiB,kBAAkB,gBAAgB;AAAA,IACnD,kBAAiB,cAAc,YAAY;AAAA,EAC5C,CAAC;AAAA,EAED,OAAO,QAAQ,KAAK,OAAO;AAAA;AAG5B,IAAM,oBAAoB,CACzB,QACA,QACA,cACI;AAAA,EACJ,MAAM,QAAQ,OAAO,QAAQ,iBAAiB;AAAA,EAC9C,MAAM,MAAM,OAAO,QAAQ,eAAe;AAAA,EAC1C,IAAI,QAAQ,MAAM,MAAM,KAAM,SAAS,KAAK,MAAM;AAAA,IACjD,MAAM,IAAI,UACT,+DACD;AAAA,EACD,IAAI,SAAS,GAAG;AAAA,IACf,MAAM,YAAY,OAAO,YAAY;AAAA,GAAM,KAAK,IAAI;AAAA,IACpD,MAAM,WAAW,OAAO,QAAQ;AAAA,GAAM,MAAM,gBAAgB,MAAM;AAAA,IAClE,MAAM,UAAU,WAAW,IAAI,OAAO,SAAS,WAAW;AAAA,IAE1D,OAAO,GAAG,OAAO,MAAM,GAAG,SAAS,IAAI,SAAS,OAAO,MAAM,OAAO;AAAA,EACrE;AAAA,EACA,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EACpB,IAAI,YAAY;AAAA,IACf,MAAM,IAAI,UACT,uEACD;AAAA,EAED,OAAO,GAAG,OAAO,MAAM,GAAG,SAAS,IAAI,SAAS,OAAO,MAAM,SAAS;AAAA;AAGvE,IAAM,oBAAmB,OACxB,QACA,SACI;AAAA,EACJ,MAAM,OAAO,OACZ,OAAO,wBACP,0CACD;AAAA,EACA,MAAM,SAAS,MAAM,WAAS,MAAM,MAAM;AAAA,EAC1C,MAAM,cACL,iCAAiC,IAAI,EAAE;AAAA,EACxC,MAAM,UAAU,YACd,IACA,CAAC,eACA,sCAAsC,WAAU,UAAU,OAC5D,EACC,KAAK;AAAA,CAAI;AAAA,EACX,MAAM,SAAS,UACZ,OAAO;AAAA,EAAiB;AAAA,MAAgB;AAAA,IACxC;AAAA,EACH,MAAM,cAAc,OAAO,QAAQ,cAAc;AAAA,EACjD,MAAM,YACL,gBAAgB,aACb,aACA,OAAO,YAAY;AAAA,GAAM,WAAW,IAAI;AAAA,EAE5C,MAAM,eAAe,QAAQ,QAAQ,QAAQ,SAAS;AAAA,EACtD,IAAI,CAAC,KAAK,aAAa,SAAS,mBAAmB;AAAA,IAClD,OAAO,kBAAiB,MAAM,YAAY;AAAA,EAC3C,MAAM,iBAAiB,MAAM,eAC5B,OAAO,6BACR;AAAA,EACA,IAAI,mBAAmB;AAAA,IACtB,MAAM,IAAI,UACT,iDAAiD,OAAO,wGACzD;AAAA,EACD,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,WAAW,KAAK,MAAM,cAAc;AAAA,IACnC,OAAO,OAAO;AAAA,IACf,MAAM,IAAI,UAAU,iDAAiD;AAAA,MACpE,OAAO;AAAA,IACR,CAAC;AAAA;AAAA,EAEF,MAAM,UACL,OAAO,aAAa,YAAY,aAAa,OAC1C,QAAQ,IAAI,UAAU,QAAQ,IAC9B;AAAA,EACJ,MAAM,aACL,MAAM,QAAQ,OAAO,KACrB,QAAQ,KAAK,CAAC,WAAW;AAAA,IACxB,MAAM,OACL,OAAO,WAAW,YAAY,WAAW,OACtC,QAAQ,IAAI,QAAQ,aAAa,IACjC;AAAA,IACJ,MAAM,UACL,OAAO,SAAS,YAAY,SAAS,OAClC,QAAQ,IAAI,MAAM,qBAAqB,IACvC;AAAA,IAEJ,OACC,OAAO,YAAY,YACnB,YAAY,QACZ,QAAQ,IAAI,SAAS,cAAc,MAAM,OAAO;AAAA,GAEjD;AAAA,EACF,IAAI,CAAC;AAAA,IACJ,MAAM,IAAI,UACT,yDAAyD,OAAO,QACjE;AAAA,EACD,OAAO,iBAAiB,mBAAmB,MAAM,QAAQ,IAAI;AAAA,IAC5D,kBAAiB,MAAM,YAAY;AAAA,IACnC,yBACC,OACC,OAAO,wBACP,kCACD,GACA,cACD;AAAA,EACD,CAAC;AAAA,EAED,OAAO,mBAAmB;AAAA;AAGpB,IAAM,wCAAwC,OACpD,aACA,QACA,YAAuC,OAAO,WAC9C,OAAO,oCAAoC,WAAW,MAClD;AAAA,EACJ,MAAM,UAAU,MAAM,QAAQ,IAC7B,UAAU,IAAI,OAAO,eAAc;AAAA,IAClC,WACC,cAAa,QACV,MAAM,cAAa,QAAQ,IAAI,IAC/B,MAAM,kBAAiB,QAAQ,IAAI;AAAA,IACvC;AAAA,EACD,EAAE,CACH;AAAA,EAEA,OAAO;AAAA,IACN,SAAS,QACP,OAAO,GAAG,gBAAgB,SAAS,EACnC,IAAI,GAAG,0BAAe,SAAQ;AAAA,EACjC;AAAA;;;AV3fD;;;AW9BA,mBAAS;AACT,uBAAS,yBAAY,uBAAU,kBAAS;AACxC,0BAAS;AAiFF,IAAM,4BAA4B,OACxC,WACA,YAMI;AAAA,EACJ,IAAI,OAAO,UAAU,sBAAsB,YAAY;AAAA,IACtD,MAAM,IAAI,UACT,4GACD;AAAA,EACD;AAAA,EACA,QAAQ,gBAAgB,MAAM,UAAU,kBAAkB,OAAO;AAAA,EACjE,IAAI,CAAC,OAAO,cAAc,WAAW,KAAK,cAAc,GAAG;AAAA,IAC1D,MAAM,IAAI,UACT,mEACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAUD,IAAM,gCAAgC,OAC5C,WACA,YACI;AAAA,EACJ,IAAI,OAAO,UAAU,0BAA0B,YAAY;AAAA,IAC1D,MAAM,IAAI,UACT,gGACD;AAAA,EACD;AAAA,EACA,MAAM,WAAW,MAAM,UAAU,sBAAsB,OAAO;AAAA,EAC9D,QAAQ,gBAAgB;AAAA,EACxB,IACC,OAAO,gBAAgB,YACvB,CAAC,OAAO,cAAc,WAAW,KACjC,cAAc,KACd,cAAc,YACb;AAAA,IACD,MAAM,IAAI,UACT,gEACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAgBR,IAAM,aAAW,CAAC,UACjB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAEpE,IAAM,cAAc,CAAC,UACpB,WAAS,KAAK,KAAK,OAAO,MAAM,YAAY;AAE7C,IAAM,sBAAsB,CAAC,aAAqB,cAAsB;AAAA,EACvE,MAAM,OAAO,UAAQ,WAAW;AAAA,EAChC,MAAM,OAAO,UAAQ,MAAM,SAAS;AAAA,EACpC,MAAM,kBAAkB,WAAS,MAAM,IAAI;AAAA,EAC3C,IACC,oBAAoB,QACpB,gBAAgB,WAAW,KAAK,MAAK,KACrC,YAAW,eAAe,GACzB;AAAA,IACD,MAAM,IAAI,UACT,2DACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGD,IAAM,qCAAqC,OACjD,aACA,wBACI;AAAA,EACJ,MAAM,aAAa,oBAAoB,aAAa,mBAAmB;AAAA,EACvE,MAAM,SAAO,UAAU,EAAE,MAAM,MAAM;AAAA,IACpC,MAAM,IAAI,UACT,kDAAkD,YACnD;AAAA,GACA;AAAA,EACD,MAAM,SAAkB,MAAa,sBAAc,UAAU,EAAE;AAAA,EAC/D,MAAM,YAAY,WAAS,MAAM,IAC7B,OAAO,WAAW,OAAO,WAC1B;AAAA,EACH,IAAI,CAAC,YAAY,SAAS,GAAG;AAAA,IAC5B,MAAM,IAAI,UACT,sFACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGD,IAAM,gCAAgC,OAC5C,YACI;AAAA,EACJ,MAAM,YAAY,MAAM,mCACvB,QAAQ,aACR,QAAQ,UACT;AAAA,EACA,MAAM,cAAc,MAAM,UAAU,QAAQ;AAAA,IAC3C,eAAe,QAAQ;AAAA,IACvB,SAAS,QAAQ;AAAA,IACjB,YAAY,QAAQ;AAAA,IACpB,aAAa,QAAQ,QAAQ;AAAA,IAC7B,QAAQ,QAAQ;AAAA,EACjB,CAAC;AAAA,EACD,MAAM,WAAW,QAAQ,QAAQ;AAAA,EACjC,MAAM,SAAS,YAAY,QAAQ;AAAA,EACnC,IACC,CAAC,UACD,OAAO,UAAU,SAAS,SAC1B,OAAO,aAAa,aACpB,OAAO,cAAc,SAAS,aAC9B,OAAO,WAAW,SAAS,UAC3B,OAAO,WAAW,SAAS,UAC3B,OAAO,gBAAgB,SAAS,eAChC,OAAO,YAAY,WAAW,WAC7B;AAAA,IACD,MAAM,IAAI,UACT,wEACD;AAAA,EACD;AAAA,EACA,IACC,QAAQ,YAAY,cACnB,YAAY,SAAS,YAAY,QAAQ,WACzC,YAAY,QAAQ,cAAc,SAAS,YAC3C;AAAA,IACD,MAAM,IAAI,UACT,gEACD;AAAA,EACD;AAAA,EACA,QAAQ,eAAe;AAAA,EACvB,IAAI,QAAQ,YAAY;AAAA,IACvB,IACC,CAAC,SAAS,eACV,CAAC,cACD,WAAW,QAAQ,aAAa,iBAChC,WAAW,QAAQ,gBAAgB,SAAS,SAC5C,WAAW,QAAQ,cAAc,SAAS,aAC1C,WAAW,QAAQ,WAAW,SAAS,UACvC,WAAW,QAAQ,UAAU,eAC7B,WAAW,QAAQ,OAAO,UAAU,QAAQ,WAAW,SACvD,OAAO,WAAW,QAAQ,gBAAgB,YAC1C,CAAC,QAAQ,KAAK,WAAW,QAAQ,WAAW,KAC5C,OAAO,WAAW,QAAQ,WAAW,MAAM,SAAS,eACpD,OAAO,WAAW,WAAW,WAC5B;AAAA,MACD,MAAM,IAAI,UACT,4EACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGD,IAAM,4BAA4B,OAAO,YAW1C;AAAA,EACL,MAAM,YAAY,MAAM,mCACvB,QAAQ,aACR,QAAQ,UACT;AAAA,EACA,MAAM,cAAc,MAAM,UAAU,QAAQ;AAAA,IAC3C,eAAe,QAAQ;AAAA,IACvB,iBAAiB,QAAQ;AAAA,IACzB,SAAS,QAAQ;AAAA,IACjB,aAAa,QAAQ,QAAQ;AAAA,IAC7B,QAAQ,QAAQ;AAAA,EACjB,CAAC;AAAA,EACD,MAAM,WAAW,QAAQ,QAAQ;AAAA,EACjC,MAAM,SAAS,YAAY,QAAQ;AAAA,EACnC,IACC,CAAC,UACD,OAAO,UAAU,SAAS,SAC1B,OAAO,aAAa,SACpB,OAAO,cAAc,SAAS,aAC9B,OAAO,WAAW,SAAS,UAC3B,OAAO,WAAW,SAAS,UAC3B,OAAO,gBAAgB,SAAS,eAChC,OAAO,qBAAqB,SAAS,oBACrC,OAAO,YAAY,WAAW,WAC7B;AAAA,IACD,MAAM,IAAI,UACT,oEACD;AAAA,EACD;AAAA,EACA,IACC,QAAQ,YAAY,cACnB,YAAY,SAAS,YAAY,QAAQ,WACzC,YAAY,QAAQ,cAAc,SAAS,YAC3C;AAAA,IACD,MAAM,IAAI,UACT,gEACD;AAAA,EACD;AAAA,EACA,IAAI,QAAQ,iBAAiB;AAAA,IAC5B,MAAM,cAAc,YAAY;AAAA,IAChC,IACC,CAAC,SAAS,eACV,CAAC,eACD,YAAY,QAAQ,aAAa,uBACjC,YAAY,QAAQ,cAAc,SAAS,aAC3C,YAAY,QAAQ,WAAW,SAAS,UACxC,YAAY,QAAQ,gBAAgB,SAAS,eAC7C,YAAY,QAAQ,qBACnB,SAAS,oBACV,CAAC,CAAC,eAAe,kBAAkB,EAAE,SACpC,YAAY,QAAQ,KACrB,KACA,KAAK,UAAU,CAAC,GAAG,YAAY,QAAQ,OAAO,MAAM,EAAE,KAAK,CAAC,MAC3D,KAAK,UACJ,CAAC,GAAI,QAAQ,gBAAgB,UAAU,CAAC,CAAE,EAAE,KAAK,CAClD,KACD,YAAY,QAAQ,OAAO,qBACzB,QAAQ,gBAAgB,mBAAmB,UAC7C,OAAO,YAAY,WAAW,WAC7B;AAAA,MACD,MAAM,IAAI,UACT,oFACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;;ACnVR,uBAAS,6BAAY;AACrB,oBAAS,sBAAS,sBAAS,uBAAU;AAErC;AAwCA,IAAM,gBAAgB,IAAI,IAAI,CAAC,OAAO,MAAM,CAAC;AAC7C,IAAM,gBAAgB;AACtB,IAAM,gBAAgB,IAAI,IAAmC;AAAA,EAC5D;AAAA,IACC;AAAA,IACA,EAAE,WAAW,QAAQ,WAAW,UAAU,eAAe,QAAQ;AAAA,EAClE;AAAA,EACA;AAAA,IACC;AAAA,IACA,EAAE,WAAW,QAAQ,WAAW,UAAU,eAAe,QAAQ;AAAA,EAClE;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,MACC,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,IACjB;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,MACC,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,cAAc;AAAA,MACd,eAAe;AAAA,IAChB;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,MACC,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,IACjB;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,MACC,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,IACjB;AAAA,EACD;AACD,CAAC;AAED,IAAM,YAAY,CAAC,UAAkB,MAAM,QAAQ,OAAO,GAAG;AAE7D,IAAM,eAAe,CAAC,OAAe,gBACpC,IAAG,eAAe,UAAQ,KAAK,GAAG,aAAY,eAAe,KAC7D,IAAG,eAAe,aAAa,aAAY,eAAe;AAE3D,IAAM,gBAAgB,CAAC,OAAe,gBAAwB;AAAA,EAC7D,MAAM,cAAa,aAAa,OAAO,WAAW;AAAA,EAClD,IAAI,CAAC,aAAY;AAAA,IAChB,OAAO,IAAG,cAAc,CAAC,KAAK,GAAG;AAAA,MAChC,SAAS;AAAA,MACT,KAAK,IAAG,QAAQ;AAAA,MAChB,QAAQ,IAAG,WAAW;AAAA,MACtB,kBAAkB,IAAG,qBAAqB;AAAA,MAC1C,QAAQ,IAAG,aAAa;AAAA,IACzB,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,IAAG,2BACjB,IAAG,eAAe,aAAY,CAAC,SAAS,cAAa,MAAM,MAAM,CAAC,EAChE,QACF,IAAG,KACH,UAAQ,WAAU,CACnB;AAAA,EACA,IAAI,CAAC,OAAO,UAAU,SAAS,KAAK;AAAA,IAAG,OAAO,UAAU,KAAK,KAAK;AAAA,EAElE,OAAO,IAAG,cAAc,OAAO,WAAW,OAAO,OAAO;AAAA;AAGzD,IAAM,eAAe,CAAC,aAA0C;AAAA,EAC/D,IAAI,EAAE,UAAU,aAAa,CAAC,SAAS;AAAA,IAAM;AAAA,EAC7C,IAAI,IAAG,aAAa,SAAS,IAAI;AAAA,IAAG,OAAO,SAAS,KAAK;AAAA,EACzD,IAAI,IAAG,oBAAoB,SAAS,IAAI;AAAA,IAAG,OAAO,SAAS,KAAK;AAAA,EAEhE;AAAA;AAGD,IAAM,2BAA2B,CAChC,SACA,SACI;AAAA,EACJ,MAAM,WAAW,QAAO,WAAW,KAClC,CAAC,cAAc,aAAa,SAAS,MAAM,IAC5C;AAAA,EACA,IAAI,YAAY,IAAG,qBAAqB,QAAQ,GAAG;AAAA,IAClD,OAAO,SAAS;AAAA,EACjB;AAAA,EACA,IAAI,YAAY,IAAG,8BAA8B,QAAQ,GAAG;AAAA,IAC3D,OAAO,SAAS;AAAA,EACjB;AAAA,EAEA;AAAA;AAGD,IAAM,gBAAgB,CACrB,MACA,SACA,YAAY,IAAI,QACH;AAAA,EACb,IAAI,KAAK,QAAQ,IAAG,UAAU;AAAA,IAAK,OAAO,EAAE,MAAM,MAAM;AAAA,EACxD,IAAI,KAAK,QAAQ,IAAG,UAAU;AAAA,IAAS,OAAO,EAAE,MAAM,UAAU;AAAA,EAChE,IAAI,KAAK,QAAQ,IAAG,UAAU;AAAA,IAAO,OAAO,EAAE,MAAM,QAAQ;AAAA,EAC5D,IAAI,KAAK,QAAQ,IAAG,UAAU;AAAA,IAAY,OAAO,EAAE,MAAM,SAAS;AAAA,EAClE,IAAI,KAAK,QAAQ,IAAG,UAAU;AAAA,IAAY,OAAO,EAAE,MAAM,SAAS;AAAA,EAClE,IAAI,KAAK,QAAQ,IAAG,UAAU;AAAA,IAAa,OAAO,EAAE,MAAM,UAAU;AAAA,EACpE,IAAI,KAAK,QAAQ,IAAG,UAAU;AAAA,IAAY,OAAO,EAAE,MAAM,SAAS;AAAA,EAClE,IAAI,KAAK,QAAQ,IAAG,UAAU;AAAA,IAAM,OAAO,EAAE,MAAM,OAAO;AAAA,EAC1D,IAAI,KAAK,QAAQ,IAAG,UAAU;AAAA,IAAW,OAAO,EAAE,MAAM,YAAY;AAAA,EACpE,IAAI,KAAK,QAAQ,GAAG;AAAA,IACnB,OAAO;AAAA,MACN,OAAO,KAAK,MACV,IAAI,CAAC,WAAW,cAAc,QAAQ,SAAS,SAAS,CAAC,EACzD,KAAK,CAAC,MAAM,UACZ,KAAK,UAAU,IAAI,EAAE,cAAc,KAAK,UAAU,KAAK,CAAC,CACzD;AAAA,IACF;AAAA,EACD;AAAA,EACA,IAAI,KAAK,eAAe,GAAG;AAAA,IAC1B,OAAO;AAAA,MACN,OAAO,KAAK,MACV,IAAI,CAAC,WAAW,cAAc,QAAQ,SAAS,SAAS,CAAC,EACzD,KAAK,CAAC,MAAM,UACZ,KAAK,UAAU,IAAI,EAAE,cAAc,KAAK,UAAU,KAAK,CAAC,CACzD;AAAA,IACF;AAAA,EACD;AAAA,EACA,IAAI,UAAU,IAAI,IAAI,GAAG;AAAA,IACxB,OAAO;AAAA,MACN,KAAK,QAAQ,aACZ,MACA,WACA,IAAG,gBAAgB,YACpB;AAAA,IACD;AAAA,EACD;AAAA,EAEA,UAAU,IAAI,IAAI;AAAA,EAClB,MAAM,eAAe,QAAQ,mBAAmB,MAAM,IAAG,UAAU,MAAM;AAAA,EACzE,MAAM,aAAa,QAAQ,oBAAoB,IAAI;AAAA,EACnD,IAAI;AAAA,EACJ,IAAI,gBAAgB,WAAW,KAAK,GAAG,WAAW,SAAS,QAAQ,GAAG;AAAA,IACrE,SAAS;AAAA,MACR,OAAO,cAAc,cAAc,SAAS,SAAS;AAAA,MACrD,MAAM;AAAA,IACP;AAAA,EACD,EAAO,SAAI,WAAW,SAAS,GAAG;AAAA,IACjC,MAAM,UAAU,WACd,OAAO,GAAG,WAAW,CAAC,KAAK,WAAW,IAAI,CAAC,EAC3C,IAAI,CAAC,aAAa;AAAA,MAClB,MAAM,cACL,SAAS,oBAAoB,SAAS,eAAe;AAAA,MACtD,MAAM,eAAe,cAClB,QAAQ,0BAA0B,UAAU,WAAW,IACvD,QAAQ,wBAAwB,QAAQ;AAAA,MAE3C,OAAO;AAAA,QACN,SAAS;AAAA,QACT;AAAA,UACC,UAAU,QACT,SAAS,QAAQ,IAAG,YAAY,QACjC;AAAA,UACA,QAAQ,cAAc,cAAc,SAAS,SAAS;AAAA,QACvD;AAAA,MACD;AAAA,KACA,EACA,KAAK,EAAE,QAAQ,WAAW,KAAK,cAAc,KAAK,CAAC;AAAA,IACrD,SAAS,EAAE,YAAY,OAAO,YAAY,OAAO,GAAG,MAAM,SAAS;AAAA,EACpE,EAAO;AAAA,IACN,SAAS;AAAA,MACR,MAAM,QAAQ,aACb,MACA,WACA,IAAG,gBAAgB,YACpB;AAAA,IACD;AAAA;AAAA,EAED,UAAU,OAAO,IAAI;AAAA,EAErB,OAAO;AAAA;AAGR,IAAM,gBAAgB,CACrB,gBACA,iBACA,YACI;AAAA,EACJ,MAAM,WAAW,QAAQ,kBAAkB,cAAc;AAAA,EACzD,OAAO,aAAa,SAAS,kBAAkB;AAAA,EAC/C,OAAO,aAAa,WAAW,cAAc,CAAC;AAAA,EAC9C,MAAM,cACL,WAAW,oBAAoB,WAAW,eAAe;AAAA,EAC1D,IAAI,aAAa,aAAa;AAAA,IAC7B,OAAO,QAAQ,0BAA0B,WAAW,WAAW;AAAA,EAChE;AAAA,EAEA,OAAO,kBACJ,QAAQ,kBAAkB,eAAe,IACzC,QAAQ,kBAAkB,cAAc;AAAA;AAG5C,IAAM,sBAAsB,CAC3B,YACA,YACA,SACA,gBACI;AAAA,EACJ,IAAI,SAAS,QAAQ,oBAAoB,UAAU;AAAA,EACnD,IAAI,QAAQ,SAAS,OAAO,QAAQ,IAAG,YAAY,OAAO;AAAA,IACzD,SAAS,QAAQ,iBAAiB,MAAM;AAAA,EACzC;AAAA,EACA,MAAM,cAAc,QAAQ,eAAe;AAAA,EAC3C,MAAM,OAAO,aAAa,cAAc,EAAE,YAAY,WAAW;AAAA,EACjE,MAAM,eAAe,QAAQ,QAAQ,WAAW,QAAQ,UAAU;AAAA,EAClE,MAAM,SAAS,UAAU,WAAS,aAAa,IAAI,CAAC;AAAA,EAEpD,OAAO,GAAG,UAAU;AAAA;AAGrB,IAAM,eAAe,CAAC,QAAmB,YAA4B;AAAA,EACpE,IAAI,EAAE,OAAO,QAAQ,IAAG,YAAY;AAAA,IAAQ,OAAO;AAAA,EAEnD,OAAO,QAAQ,iBAAiB,MAAM;AAAA;AAGvC,IAAM,WAA6B,CAClC,YACA,SACA,OAAO,IAAI,QACP;AAAA,EACJ,IAAI,CAAC;AAAA,IAAY;AAAA,EAEjB,IAAI,IAAG,aAAa,UAAU,GAAG;AAAA,IAChC,MAAM,aAAa,IAAG,8BAA8B,WAAW,MAAM,IAClE,QAAQ,kCAAkC,WAAW,MAAM,IAC3D,QAAQ,oBAAoB,UAAU;AAAA,IACzC,IAAI,CAAC;AAAA,MAAY;AAAA,IACjB,MAAM,SAAS,aAAa,YAAY,OAAO;AAAA,IAC/C,IAAI,KAAK,IAAI,MAAM;AAAA,MAAG;AAAA,IACtB,KAAK,IAAI,MAAM;AAAA,IACf,MAAM,cAAc,OAAO,oBAAoB,OAAO,eAAe;AAAA,IACrE,IAAI,CAAC,eAAe,CAAC,IAAG,sBAAsB,WAAW;AAAA,MACxD;AAAA,IAED,OAAO,SAAS,YAAY,aAAa,SAAS,IAAI;AAAA,EACvD;AAAA,EAEA,IAAI,CAAC,IAAG,iBAAiB,UAAU;AAAA,IAAG;AAAA,EACtC,IACC,CAAC,IAAG,aAAa,WAAW,UAAU,KACtC,WAAW,WAAW,SAAS,SAC9B;AAAA,IACD;AAAA,EACD;AAAA,EACA,SAAS,OAAO,WAAW;AAAA,EAE3B,OAAO,OAAO,IAAG,oBAAoB,GAAG,IAAI,IAAI,OAAO;AAAA;AAGxD,IAAM,eAAe,CACpB,YACA,aACwB;AAAA,EACxB,IAAI,IAAG,oBAAoB,UAAU;AAAA,IAAG,OAAO,WAAW;AAAA,EAC1D,IAAI,IAAG,aAAa,UAAU;AAAA,IAAG,OAAO,SAAS,IAAI,WAAW,IAAI;AAAA,EACpE,IAAI,IAAG,gCAAgC,UAAU;AAAA,IAAG,OAAO,WAAW;AAAA,EACtE,IAAI,CAAC,IAAG,qBAAqB,UAAU;AAAA,IAAG;AAAA,EAC1C,IAAI,QAAQ,WAAW,KAAK;AAAA,EAC5B,WAAW,QAAQ,WAAW,eAAe;AAAA,IAC5C,MAAM,eAAe,aAAa,KAAK,YAAY,QAAQ;AAAA,IAC3D,IAAI,iBAAiB;AAAA,MAAW;AAAA,IAChC,SAAS,eAAe,KAAK,QAAQ;AAAA,EACtC;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,uBAAuB,CAC5B,YACA,SACA,WAAwC,IAAI,QACxC;AAAA,EACJ,IAAI,CAAC;AAAA,IAAY;AAAA,EACjB,IACC,IAAG,iBAAiB,UAAU,KAC9B,IAAG,aAAa,WAAW,UAAU,KACrC,WAAW,WAAW,SAAS,SAC9B;AAAA,IACD,SAAS,OAAO,WAAW;AAAA,IAE3B,OAAO,MAAM,aAAa,KAAK,QAAQ,IAAI;AAAA,EAC5C;AAAA,EAEA,OAAO,SAAS,YAAY,OAAO;AAAA;AAGpC,IAAM,iBAAiB,CAAC,MAAyB,YAA4B;AAAA,EAC5E,MAAM,SAAS,QAAQ,oBAAoB,KAAK,UAAU;AAAA,EAC1D,MAAM,WAAW,SAAS,aAAa,QAAQ,OAAO,IAAI;AAAA,EAC1D,MAAM,cACL,UAAU,oBAAoB,UAAU,eAAe;AAAA,EACxD,IAAI;AAAA,EAKJ,IAAI,eAAe,IAAG,sBAAsB,WAAW,GAAG;AAAA,IACzD,WAAW;AAAA,EACZ,EAAO,SACN,eACA,IAAG,sBAAsB,WAAW,KACpC,YAAY,gBACX,IAAG,gBAAgB,YAAY,WAAW,KAC1C,IAAG,qBAAqB,YAAY,WAAW,IAC/C;AAAA,IACD,WAAW,YAAY;AAAA,EACxB;AAAA,EACA,IAAI,CAAC;AAAA,IAAU;AAAA,EACf,MAAM,WAAW,IAAI;AAAA,EACrB,SAAS,WAAW,QAAQ,CAAC,WAAW,UAAU;AAAA,IACjD,IAAI,CAAC,IAAG,aAAa,UAAU,IAAI;AAAA,MAAG;AAAA,IACtC,MAAM,WAAW,KAAK,UAAU;AAAA,IAChC,IAAI,CAAC;AAAA,MAAU;AAAA,IACf,MAAM,QAAQ,aAAa,UAAU,IAAI,GAAK;AAAA,IAC9C,IAAI,UAAU;AAAA,MAAW,SAAS,IAAI,UAAU,KAAK,MAAM,KAAK;AAAA,GAChE;AAAA,EACD,QAAQ,SAAS;AAAA,EACjB,IAAI,CAAC;AAAA,IAAM;AAAA,EACX,MAAM,iBAAiB,IAAG,0BAA0B,IAAI,IACrD,KAAK,aACL;AAAA,EACH,IAAI,IAAG,0BAA0B,cAAc,GAAG;AAAA,IACjD,OAAO,EAAE,UAAU,QAAQ,eAAe;AAAA,EAC3C;AAAA,EACA,IAAI,IAAG,QAAQ,IAAI,GAAG;AAAA,IACrB,MAAM,WAAW,KAAK,WAAW,KAAK,IAAG,iBAAiB,GAAG;AAAA,IAC7D,IAAI,YAAY,IAAG,0BAA0B,QAAQ,GAAG;AAAA,MACvD,OAAO,EAAE,UAAU,QAAQ,SAAS;AAAA,IACrC;AAAA,EACD;AAAA,EAEA;AAAA;AAGD,IAAM,eAAe,CACpB,YACA,SACA,aACI;AAAA,EACJ,IAAI,IAAG,0BAA0B,UAAU,GAAG;AAAA,IAC7C,OAAO,EAAE,UAAU,QAAQ,WAAW;AAAA,EACvC;AAAA,EACA,IAAI,CAAC,IAAG,iBAAiB,UAAU;AAAA,IAAG;AAAA,EAEtC,OAAO,eAAe,YAAY,OAAO;AAAA;AAG1C,IAAM,iBAAiB,CACtB,SACA,MACA,SACA,WAAwC,IAAI,QACpB;AAAA,EACxB,WAAW,YAAY,CAAC,GAAG,QAAO,UAAU,EAAE,QAAQ,GAAG;AAAA,IACxD,IACC,aAAa,QAAQ,MAAM,QAC3B,IAAG,8BAA8B,QAAQ,GACxC;AAAA,MACD,OAAO,qBAAqB,SAAS,MAAM,SAAS,QAAQ;AAAA,IAC7D;AAAA,IACA,IACC,aAAa,QAAQ,MAAM,QAC3B,IAAG,qBAAqB,QAAQ,GAC/B;AAAA,MACD,OAAO,qBACN,SAAS,aACT,SACA,QACD;AAAA,IACD;AAAA,IACA,IAAI,CAAC,IAAG,mBAAmB,QAAQ;AAAA,MAAG;AAAA,IACtC,MAAM,eAAe,aACpB,SAAS,YACT,SACA,QACD;AAAA,IACA,IAAI,CAAC;AAAA,MAAc;AAAA,IACnB,MAAM,SAAS,eACd,aAAa,QACb,MACA,SACA,aAAa,QACd;AAAA,IACA,IAAI;AAAA,MAAQ,OAAO;AAAA,EACpB;AAAA,EAEA;AAAA;AAGD,IAAM,eAAe,CAAC,UAA8B;AAAA,EACnD,IAAI;AAAA,EAGJ,MAAM,QAAQ,CAAC,cAAuB;AAAA,IACrC,IAAI;AAAA,MAAO;AAAA,IACX,IACC,IAAG,iBAAiB,SAAS,KAC7B,IAAG,aAAa,UAAU,UAAU,KACpC,cAAc,IAAI,UAAU,WAAW,IAAI,GAC1C;AAAA,MACD,MAAM,aAAa,cAAc,IAAI,UAAU,WAAW,IAAI;AAAA,MAC9D,IAAI,CAAC;AAAA,QAAY;AAAA,MACjB,QAAQ,EAAE,YAAY,MAAM,UAAU;AAAA,MAEtC;AAAA,IACD;AAAA,IACA,IAAG,aAAa,WAAW,KAAK;AAAA;AAAA,EAEjC,WAAW,QAAQ;AAAA,IAAO,MAAM,IAAI;AAAA,EAEpC,OAAO;AAAA;AAGR,IAAM,kBAAkB,CACvB,YACA,cACA,gBAEA,CAAC,WAAW,qBACZ,CAAC,aAAa,SAAS,gBAAgB,KACvC,aAAa,WAAW,GAAG,cAAc;AAE1C,IAAM,mBAAmB,CACxB,MACA,YACA,SACA,gBACI;AAAA,EACJ,MAAM,SAAS,KAAK;AAAA,EACpB,IAAI,CAAC,IAAG,2BAA2B,MAAM;AAAA,IAAG;AAAA,EAC5C,IAAI,CAAC,cAAc,IAAI,OAAO,KAAK,IAAI;AAAA,IAAG;AAAA,EAC1C,OAAO,aAAa,KAAK;AAAA,EACzB,IAAI,CAAC,aAAa,CAAC,IAAG,oBAAoB,SAAS;AAAA,IAAG;AAAA,EACtD,MAAM,gBAAgB,aAAa,KAAK,UAAU,MAAM,CAAC,CAAC;AAAA,EAC1D,MAAM,WAAW,eAAe;AAAA,EAChC,MAAM,aAAa,eAAe;AAAA,EAClC,OAAO,SAAS,UAAU,aAAa,CAAC;AAAA,EACxC,IAAI,CAAC,YAAY,CAAC,OAAO;AAAA,IACxB;AAAA,EACD;AAAA,EACA,IAAI,CAAC;AAAA,IAAY;AAAA,EACjB,IAAI,WAAW,cAAc,UAAU;AAAA,IACtC,MAAM,aAAY,SAAS,OAAO,OAAO;AAAA,IACzC,IAAI,CAAC;AAAA,MAAW;AAAA,IAChB,MAAM,UAAS,GAAG,WAAW,aAAa;AAAA,IAC1C,MAAM,mBAAkB,8BAA8B;AAAA,MACrD,YAAY,CAAC;AAAA,MACb,MAAM;AAAA,IACP,CAAC;AAAA,IAED,OAAO;AAAA,MACN,WAAW;AAAA,MACX,UAAU;AAAA,QACT;AAAA,QACA,UAAU,GAAG,WAAW,aAAa,WAAU;AAAA,QAC/C,WAAW,WAAW;AAAA,QACtB;AAAA,QACA;AAAA,MACD;AAAA,MACA,eAAe,SAAS,SAAS,UAAU;AAAA,MAC3C,eAAe,GAAG,KAAK,SAAS,UAAU,KAAK,KAAK;AAAA,IACrD;AAAA,EACD;AAAA,EACA,IAAI,CAAC,IAAG,0BAA0B,KAAK,KAAK,CAAC,WAAW,gBAAgB;AAAA,IACvE;AAAA,EACD;AAAA,EACA,MAAM,OAAO,WAAW,eACrB,yBAAyB,OAAO,WAAW,YAAY,IACvD;AAAA,EACH,MAAM,SAAS,WAAW,iBACvB,eAAe,OAAO,WAAW,gBAAgB,OAAO,IACxD;AAAA,EACH,IAAI,WAAW,gBAAgB,CAAC;AAAA,IAAM;AAAA,EACtC,IAAI,WAAW,kBAAkB,CAAC;AAAA,IAAQ;AAAA,EAC1C,MAAM,QAAQ,yBAAyB,OAAO,WAAW,aAAa;AAAA,EACtE,MAAM,YAAY,eAAe,OAAO,WAAW,gBAAgB,OAAO;AAAA,EAC1E,IAAI,CAAC;AAAA,IAAW;AAAA,EAChB,MAAM,SAAS,OACZ,oBAAoB,MAAM,YAAY,SAAS,WAAW,IAC1D,GAAG,WAAW,aAAa;AAAA,EAC9B,IAAI;AAAA,EACJ,IAAI;AAAA,IAAM,YAAY,cAAc,MAAM,OAAO,OAAO;AAAA,EACnD,SAAI;AAAA,IAAO,YAAY,QAAQ,kBAAkB,KAAK;AAAA,EAC3D,MAAM,SAAS,YACZ,cAAc,WAAW,OAAO,IAChC,EAAE,YAAY,CAAC,GAAG,MAAM,SAAS;AAAA,EACpC,MAAM,kBAAkB,8BAA8B,MAAM;AAAA,EAC5D,MAAM,WAA4C;AAAA,IACjD;AAAA,IACA,UAAU,GAAG,WAAW,aAAa,UAAU;AAAA,IAC/C,WAAW,WAAW;AAAA,IACtB;AAAA,IACA;AAAA,EACD;AAAA,EACA,MAAM,SAA2B;AAAA,IAChC,WAAW;AAAA,IACX;AAAA,IACA,eAAe,SAAS,SAAS,UAAU;AAAA,IAC3C,eAAe,GAAG,KAAK,SAAS,UAAU,KAAK,KAAK;AAAA,EACrD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,oBAAoB,CACzB,YACA,SACA,gBACI;AAAA,EACJ,MAAM,WAAyB;AAAA,IAC9B,YAAY,IAAI;AAAA,IAChB,aAAa,IAAI;AAAA,EAClB;AAAA,EACA,MAAM,QAAQ,CAAC,SAAkB;AAAA,IAChC,MAAM,SAAS,IAAG,iBAAiB,IAAI,IACpC,iBAAiB,MAAM,YAAY,SAAS,WAAW,IACvD;AAAA,IACH,IAAI,QAAQ;AAAA,MACX,SAAS,WAAW,IAAI,OAAO,eAAe,MAAM;AAAA,MACpD,SAAS,YAAY,IAAI,OAAO,eAAe,MAAM;AAAA,IACtD;AAAA,IACA,IAAG,aAAa,MAAM,KAAK;AAAA;AAAA,EAE5B,IAAG,aAAa,YAAY,KAAK;AAAA,EAEjC,OAAO;AAAA;AAGR,IAAM,iBAAiB,CAAC,SAAqB,gBAAwB;AAAA,EACpE,MAAM,UAAU,QAAQ,eAAe;AAAA,EACvC,MAAM,WAAW,IAAI;AAAA,EACrB,WAAW,cAAc,QAAQ,eAAe,GAAG;AAAA,IAClD,MAAM,eAAe,UAAQ,WAAW,QAAQ;AAAA,IAChD,IAAI,CAAC,gBAAgB,YAAY,cAAc,WAAW;AAAA,MAAG;AAAA,IAC7D,MAAM,WAAW,kBAAkB,YAAY,SAAS,WAAW;AAAA,IACnE,IAAI,SAAS,WAAW,OAAO;AAAA,MAAG,SAAS,IAAI,cAAc,QAAQ;AAAA,EACtE;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,qBAAqB,CAAC,aAC3B,IAAG,QAAQ,8BACV,OAAO,QAAQ,QAAQ,EAAE,IAAI,EAAE,KAAK,UACnC,IAAG,QAAQ,yBACV,IAAG,QAAQ,oBAAoB,GAAG,GAClC,IAAG,QAAQ,oBAAoB,IAAI,CACpC,CACD,GACA,KACD;AAED,IAAM,eAAe,CACpB,UACA,aACI;AAAA,EACJ,MAAM,SAAS,IAAG,QAAQ,8BAA8B;AAAA,IACvD,IAAG,QAAQ,yBACV,IAAG,QAAQ,oBAAoB,4BAA4B,GAC3D,mBAAmB,QAAQ,CAC5B;AAAA,EACD,CAAC;AAAA,EACD,IAAI,CAAC,UAAU;AAAA,IACd,OAAO,IAAG,QAAQ,8BAA8B;AAAA,MAC/C,IAAG,QAAQ,yBAAyB,UAAU,MAAM;AAAA,IACrD,CAAC;AAAA,EACF;AAAA,EAEA,OAAO,IAAG,QAAQ,8BAA8B;AAAA,IAC/C,IAAG,QAAQ,uBAAuB,QAAQ;AAAA,IAC1C,IAAG,QAAQ,yBACV,UACA,IAAG,QAAQ,8BAA8B;AAAA,MACxC,IAAG,QAAQ,uBACV,IAAG,QAAQ,+BACV,UACA,QACD,CACD;AAAA,MACA,IAAG,QAAQ,yBACV,IAAG,QAAQ,oBACV,4BACD,GACA,mBAAmB,QAAQ,CAC5B;AAAA,IACD,CAAC,CACF;AAAA,EACD,CAAC;AAAA;AAGF,IAAM,oBAAoB,CACzB,MACA,SACI;AAAA,EACJ,IAAI,CAAC;AAAA,IAAM;AAAA,EACX,IAAI,KAAK,cAAc,UAAU;AAAA,IAChC,OAAO,UAAU,oBAAoB,QAAQ,KAAK;AAAA,IAClD,IAAI,CAAC;AAAA,MAAU;AAAA,IACf,MAAM,UAAU,IAAG,QAAQ,8BAA8B;AAAA,MACxD,GAAI,kBACD,CAAC,IAAG,QAAQ,uBAAuB,eAAe,CAAC,IACnD,CAAC;AAAA,MACJ,IAAG,QAAQ,yBACV,oBACA,mBAAmB,KAAK,QAAQ,CACjC;AAAA,IACD,CAAC;AAAA,IAED,OAAO,IAAG,QAAQ,qBACjB,MACA,KAAK,YACL,KAAK,eACL,CAAC,UAAU,SAAS,GAAG,IAAI,CAC5B;AAAA,EACD;AAAA,EACA,OAAO,SAAS,KAAK;AAAA,EACrB,IAAI,CAAC,SAAS,CAAC,IAAG,0BAA0B,KAAK;AAAA,IAAG;AAAA,EAEpD,OAAO,IAAG,QAAQ,qBACjB,MACA,KAAK,YACL,KAAK,eACL;AAAA,IACC,IAAG,QAAQ,8BAA8B,OAAO;AAAA,MAC/C,GAAG,MAAM;AAAA,MACT,IAAG,QAAQ,yBACV,oBACA,mBAAmB,KAAK,QAAQ,CACjC;AAAA,IACD,CAAC;AAAA,IACD,GAAG,KAAK,UAAU,MAAM,CAAC;AAAA,EAC1B,CACD;AAAA;AAGD,IAAM,qBAAqB,CAC1B,MACA,UACI;AAAA,EACJ,IAAI,CAAC;AAAA,IAAO;AAAA,EACZ,OAAO,MAAM,cAAc,iBAAiB,QAAQ,KAAK;AAAA,EACzD,IAAI,CAAC,QAAQ,CAAC;AAAA,IAAc;AAAA,EAC5B,MAAM,UAAU,eAAe,eAAe;AAAA,EAC9C,MAAM,UAAU,gBAAgB;AAAA,EAEhC,OAAO,IAAG,QAAQ,qBACjB,MACA,KAAK,YACL,KAAK,eACL,CAAC,MAAM,aAAa,SAAS,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,CAC/D;AAAA;AAGD,IAAM,gBAAgB,CACrB,QACA,UACA,aACI;AAAA,EACJ,MAAM,aAAa,IAAG,iBACrB,UACA,QACA,IAAG,aAAa,QAChB,MACA,SAAS,SAAS,GAAG,IAAI,IAAG,WAAW,MAAM,IAAG,WAAW,EAC5D;AAAA,EACA,MAAM,cAAoD,CAAC,YAAY;AAAA,IACtE,MAAM,QAAoB,CAAC,SAAS;AAAA,MACnC,IAAI,CAAC,IAAG,iBAAiB,IAAI,GAAG;AAAA,QAC/B,OAAO,IAAG,eAAe,MAAM,OAAO,OAAO;AAAA,MAC9C;AAAA,MACA,MAAM,sBAAsB,IAAG,eAAe,MAAM,OAAO,OAAO;AAAA,MAClE,MAAM,OAAO,SAAS,WAAW,IAAI,KAAK,SAAS,UAAU,CAAC;AAAA,MAC9D,MAAM,kBAAkB,kBACvB,qBACA,IACD;AAAA,MACA,IAAI;AAAA,QAAiB,OAAO;AAAA,MAC5B,MAAM,QAAQ,SAAS,YAAY,IAClC,GAAG,KAAK,SAAS,UAAU,KAAK,KAAK,KACtC;AAAA,MACA,MAAM,mBAAmB,mBACxB,qBACA,KACD;AAAA,MACA,IAAI;AAAA,QAAkB,OAAO;AAAA,MAE7B,OAAO;AAAA;AAAA,IAGR,OAAO,CAAC,SAAS,IAAG,UAAU,MAAM,OAAO,IAAG,YAAY,KAAK;AAAA;AAAA,EAEhE,MAAM,SAAS,IAAG,UAAU,YAAY,CAAC,WAAW,CAAC;AAAA,EACrD,IAAI;AAAA,IACH,OAAO,eAAe,OAAO;AAAA,IAC7B,IAAI,CAAC;AAAA,MAAa,MAAM,IAAI,UAAU,gCAAgC;AAAA,IAEtE,OAAO,IAAG,cAAc,EAAE,UAAU,WAAW;AAAA,YAC9C;AAAA,IACD,OAAO,QAAQ;AAAA;AAAA;AAIV,IAAM,qCACZ;AACM,IAAM,0CAA0C,CACtD,YACe;AAAA,EACf,MAAM,cAAc,UAAQ,QAAQ,eAAe,QAAQ,IAAI,CAAC;AAAA,EAChE,MAAM,QAAQ,UAAQ,QAAQ,KAAK;AAAA,EACnC,MAAM,WAAW,eAChB,cAAc,OAAO,WAAW,GAChC,WACD;AAAA,EAEA,OAAO;AAAA,IACN,MAAM;AAAA,IACN,KAAK,CAAC,OAAO;AAAA,MACZ,MAAM,OAAO,EAAE,QAAQ,cAAc,GAAG,SAAS,WAAW;AAAA,QAC3D,MAAM,WAAW,SAAS,IAAI,UAAQ,IAAI,CAAC;AAAA,QAC3C,IAAI,CAAC;AAAA,UAAU;AAAA,QACf,MAAM,SAAS,MAAM,IAAI,KAAK,IAAI,EAAE,KAAK;AAAA,QAEzC,OAAO;AAAA,UACN,UAAU,cAAc,QAAQ,MAAM,QAAQ;AAAA,UAC9C,QAAQ,SAAQ,IAAI,EAAE,SAAS,GAAG,IAAI,QAAQ;AAAA,QAC/C;AAAA,OACA;AAAA;AAAA,EAEH;AAAA;AAEM,IAAM,qCAAqC,CACjD,YACI;AAAA,EACJ,MAAM,cAAc,UAAQ,QAAQ,eAAe,QAAQ,IAAI,CAAC;AAAA,EAChE,MAAM,QAAQ,UAAQ,QAAQ,KAAK;AAAA,EACnC,MAAM,WAAW,eAChB,cAAc,OAAO,WAAW,GAChC,WACD;AAAA,EAEA,OAAO,CAAC,GAAG,SAAS,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,cAC9C,CAAC,GAAG,SAAS,YAAY,OAAO,CAAC,EAAE,IAAI,GAAG,gBAAgB;AAAA,IACzD,MAAM,UAAU,WAAS,aAAa,IAAI,CAAC;AAAA,IAC3C;AAAA,EACD,EAAE,CACH;AAAA;;ACryBD,MAAM,0BAA0B,MAAM;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAC,MAAM,SAAS,UAAU,CAAC,GAAG;AAAA,IACvC,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA,IACZ,KAAK,QAAQ,QAAQ;AAAA,IACrB,KAAK,SAAS,QAAQ;AAAA,IACtB,KAAK,MAAM,QAAQ;AAAA;AAEvB;AAEA,IAAI,gBAAgB,IAAI,IAAI,CAAC,aAAa,SAAS,WAAW,CAAC;AAC/D,IAAI,8BAA8B,CAAC,UAAU;AAAA,EAC3C,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,MAAM,IAAI,IAAI,KAAK;AAAA,IACnB,OAAO,OAAO;AAAA,IACd,MAAM,IAAI,kBAAkB,UAAU,2BAA2B;AAAA,MAC/D;AAAA,IACF,CAAC;AAAA;AAAA,EAEH,MAAM,WAAW,IAAI,aAAa,WAAW,cAAc,IAAI,IAAI,QAAQ;AAAA,EAC3E,IAAI,IAAI,aAAa,YAAY,CAAC;AAAA,IAChC,MAAM,IAAI,kBAAkB,UAAU,0DAA0D;AAAA,EAClG,IAAI,IAAI,YAAY,IAAI,YAAY,IAAI,aAAa,OAAO,IAAI,UAAU,IAAI;AAAA,IAC5E,MAAM,IAAI,kBAAkB,UAAU,qEAAqE;AAAA,EAC7G,OAAO,IAAI;AAAA;AAEb,IAAI,yBAAyB,CAAC,QAAQ,WAAW;AAAA,EAC/C,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,MAAM,IAAI,IAAI,OAAO,MAAM,GAAG,GAAG,SAAS;AAAA,IAC1C,OAAO,OAAO;AAAA,IACd,MAAM,IAAI,kBAAkB,UAAU,gCAAgC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA;AAAA,EAEH,IAAI,IAAI,YAAY,IAAI;AAAA,IACtB,MAAM,IAAI,kBAAkB,UAAU,+CAA+C;AAAA,EACvF,IAAI,IAAI,WAAW;AAAA,IACjB,MAAM,IAAI,kBAAkB,UAAU,8EAA8E,EAAE,KAAK,IAAI,KAAK,CAAC;AAAA,EACvI,IAAI,OAAO;AAAA,EACX,OAAO;AAAA;AAIT,IAAI,8BAA8B;AAAA,EAChC,OAAO,YAAY,WAAW;AAAA,EAC9B;AAAA,EACA;AAAA,OACK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ,4BAA4B,MAAM;AAAA,EAC1C;AACF;AACA,IAAI,yBAAyB,CAAC,UAAU,CAAC,MAAM;AAAA,EAC7C,MAAM,SAAS,QAAQ,UAAU,WAAW,UAAU;AAAA,EACtD,IAAI,CAAC;AAAA,IACH,MAAM,IAAI,UAAU,sEAAsE;AAAA,EAC5F,OAAO,4BAA4B;AAAA,OAC9B,QAAQ,QAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,IAC/C;AAAA,IACA,SAAS;AAAA,EACX,CAAC;AAAA;AAIH,IAAI,mBAAmB,OAAO,IAAI,0BAA0B;AAC5D,IAAI,eAAe;AACnB,IAAI,oBAAoB,CAAC,UAAU,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,QAAQ,IAAI,OAAO,eAAe,CAAC;AACnI,IAAI,mBAAmB,MAAM;AAAA,EAC3B,MAAM,WAAW,aAAa;AAAA,EAC9B,IAAI,kBAAkB,QAAQ;AAAA,IAC5B,OAAO;AAAA,EACT,MAAM,UAAU,EAAE,eAAe,CAAC,EAAE;AAAA,EACpC,OAAO,eAAe,cAAc,kBAAkB;AAAA,IACpD,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,OAAO;AAAA,GACN;AACH,IAAI,oBAAoB,MAAM;AAAA,EAC5B,IAAI,OAAO,aAAa,eAAe,SAAS;AAAA,IAC9C,OAAO,uBAAuB;AAAA,EAChC,MAAM,IAAI,kBAAkB,kBAAkB,0EAA0E;AAAA;AAE1H,IAAI,2BAA2B,MAAM,gBAAgB,cAAc,GAAG,EAAE,GAAG,cAAc,gBAAgB,aAAa,kBAAkB;AACxI,IAAI,+BAA+B,CAAC,cAAc;AAAA,EAChD,MAAM,eAAe,EAAE,UAAU;AAAA,EACjC,gBAAgB,cAAc,KAAK,YAAY;AAAA,EAC/C,OAAO,MAAM;AAAA,IACX,MAAM,QAAQ,gBAAgB,cAAc,QAAQ,YAAY;AAAA,IAChE,IAAI,SAAS;AAAA,MACX,gBAAgB,cAAc,OAAO,OAAO,CAAC;AAAA;AAAA;AAKnD,IAAI,6BAA6B,IAAI,IAAI;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAI,eAAe,CAAC,eAAe,cAAc,yBAAyB;AAC1E,IAAI,cAAc,CAAC,UAAU;AAAA,EAC3B,MAAM,UAAU,IAAI,QAAQ,KAAK;AAAA,EACjC,WAAW,QAAQ,4BAA4B;AAAA,IAC7C,IAAI,QAAQ,IAAI,IAAI;AAAA,MAClB,MAAM,IAAI,kBAAkB,UAAU,0BAA0B,gDAAgD;AAAA,EACpH;AAAA,EACA,OAAO;AAAA;AAET,IAAI,aAAa,CAAC,QAAQ,SAAS,cAAc;AAAA,EAC/C,MAAM,SAAS,kBAAkB,UAAU,SAAS;AAAA,EACpD,MAAM,eAAe,SAAS,OAAO,MAAM;AAAA,EAC3C,MAAM,MAAM,uBAAuB,cAAc,UAAU,MAAM;AAAA,EACjE,MAAM,UAAU,YAAY,SAAS,WAAW,QAAQ,OAAO;AAAA,EAC/D,OAAO,IAAI,QAAQ,UAAU,KAAK;AAAA,OAC7B;AAAA,IACH,aAAa,UAAU,YAAY,QAAQ,gBAAgB;AAAA,IAC3D;AAAA,IACA,UAAU;AAAA,EACZ,CAAC;AAAA;AAEH,IAAI,sBAAsB,CAAC,QAAQ,QAAQ;AAAA,EACzC,IAAI,kBAAkB;AAAA,IACpB,OAAO;AAAA,EACT,IAAI,kBAAkB,iBAAiB,OAAO,SAAS,gBAAgB,OAAO,SAAS;AAAA,IACrF,OAAO,IAAI,kBAAkB,WAAW,6BAA6B;AAAA,MACnE,OAAO;AAAA,MACP;AAAA,IACF,CAAC;AAAA,EACH,OAAO,IAAI,kBAAkB,WAAW,wBAAwB;AAAA,IAC9D,OAAO;AAAA,IACP;AAAA,EACF,CAAC;AAAA;AAEH,IAAI,YAAY,CAAC,aAAa;AAAA,EAC5B,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,IAAI,kBAAkB,QAAQ,mCAAmC,SAAS,WAAW,EAAE,QAAQ,SAAS,QAAQ,KAAK,SAAS,IAAI,CAAC;AAAA,EAC3I,OAAO;AAAA;AAET,IAAI,aAAY,OAAO,aAAa;AAAA,EAClC,MAAM,QAAO,MAAM,SAAS,KAAK;AAAA,EACjC,IAAI,UAAS;AAAA,IACX;AAAA,EACF,IAAI;AAAA,IACF,OAAO,KAAK,MAAM,KAAI;AAAA,IACtB,OAAO,OAAO;AAAA,IACd,MAAM,IAAI,kBAAkB,YAAY,oCAAoC;AAAA,MAC1E;AAAA,MACA,QAAQ,SAAS;AAAA,MACjB,KAAK,SAAS;AAAA,IAChB,CAAC;AAAA;AAAA;AAGL,IAAI,cAAc,CAAC,QAAQ,MAAM,YAAY;AAAA,EAC3C,MAAM,UAAU,IAAI,QAAQ,SAAS,OAAO;AAAA,EAC5C,IAAI,SAAS,aAAa,CAAC,QAAQ,IAAI,cAAc;AAAA,IACnD,QAAQ,IAAI,gBAAgB,kBAAkB;AAAA,EAChD,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,UAAU,SAAS,YAAY,YAAY,KAAK,UAAU,IAAI;AAAA,IAC9D,OAAO,OAAO;AAAA,IACd,MAAM,IAAI,kBAAkB,QAAQ,uCAAuC;AAAA,MACzE;AAAA,IACF,CAAC;AAAA;AAAA,EAEH,OAAO,YAAY,YAAY,KAAK,SAAS,SAAS,OAAO,IAAI,KAAK,SAAS,MAAM,SAAS,SAAS,OAAO;AAAA;AAEhH,IAAI,2BAA2B,CAAC,UAAU,CAAC,MAAM;AAAA,EAC/C,MAAM,eAAe,OAAO,OAAO,SAAS;AAAA,IAC1C,MAAM,YAAY,aAAa,QAAQ,SAAS;AAAA,IAChD,MAAM,WAAW,WAAW,OAAO,MAAM,SAAS;AAAA,IAClD,IAAI;AAAA,MACF,OAAO,MAAM,UAAU,MAAM,QAAQ;AAAA,MACrC,OAAO,QAAQ;AAAA,MACf,MAAM,oBAAoB,QAAQ,SAAS,GAAG;AAAA;AAAA;AAAA,EAGlD,MAAM,UAAU,CAAC,QAAQ,mBAAmB,aAAa,QAAQ,cAAc;AAAA,EAC/E,MAAM,OAAO,OAAO,QAAQ,mBAAmB,WAAU,UAAU,MAAM,QAAQ,QAAQ,cAAc,CAAC,CAAC;AAAA,EACzG,MAAM,aAAa,CAAC,QAAQ,QAAQ,MAAM,mBAAmB,KAAK,QAAQ,YAAY,QAAQ,MAAM,cAAc,CAAC;AAAA,EACnH,OAAO;AAAA,IACL,QAAQ,CAAC,QAAQ,mBAAmB;AAAA,MAClC,QAAQ,SAAS,uBAAuB,kBAAkB,CAAC;AAAA,MAC3D,OAAO,WAAW,UAAU,QAAQ,MAAM,kBAAkB;AAAA;AAAA,IAE9D,OAAO;AAAA,IACP,KAAK,CAAC,QAAQ,mBAAmB,KAAK,QAAQ,KAAK,gBAAgB,QAAQ,MAAM,CAAC;AAAA,IAClF;AAAA,IACA,QAAQ,MAAM,aAAa,QAAQ,SAAS,EAAE;AAAA,IAC9C,OAAO,CAAC,QAAQ,MAAM,mBAAmB,WAAW,SAAS,QAAQ,MAAM,cAAc;AAAA,IACzF,MAAM,CAAC,QAAQ,MAAM,mBAAmB,WAAW,QAAQ,QAAQ,MAAM,cAAc;AAAA,IACvF,KAAK,CAAC,QAAQ,MAAM,mBAAmB,WAAW,OAAO,QAAQ,MAAM,cAAc;AAAA,IACrF;AAAA,IACA,MAAM,OAAO,QAAQ,mBAAmB,UAAU,MAAM,QAAQ,QAAQ,cAAc,CAAC,EAAE,KAAK;AAAA,EAChG;AAAA;AAEF,IAAI,OAAO,yBAAyB;;;ACxM7B,IAAM,iCAAiC,CAC7C,QACA,SAA2B,WAAW,UAEtC,6BACC,4BAA4B,EAAE,eAAO,QAAQ,SAAS,SAAS,CAAC,CACjE;",
61
+ "debugId": "735330FB398C20EB64756E2164756E21",
62
62
  "names": []
63
63
  }