@onexapis/cli 1.1.64 → 1.1.66

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/logger.ts","../src/utils/compile-theme.ts","../src/commands/init.ts","../src/utils/validators.ts","../src/utils/file-helpers.ts","../src/utils/cli-auth.ts","../src/commands/create-section.ts","../src/commands/create-block.ts","../src/commands/create-component.ts","../src/commands/list.ts","../src/commands/build.ts","../src/commands/upload.ts","../src/commands/download.ts","../src/commands/clone.ts","../src/index.ts"],"names":["Logger","logger","chalk","ora","path","fs","glob","build","subpath","cacheKey","createRequire","exports","hash","crypto","hashedName","hashedMapName","oldFiles","esbuild","context","ejs","execSync","os","inquirer","data","answers","compileStandaloneTheme","spawn","AdmZip","unwrapEnvelope","resolveLatestVersion"],"mappings":"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","file":"index.js","sourcesContent":["import chalk from \"chalk\";\nimport ora, { Ora } from \"ora\";\n\nexport class Logger {\n private spinner: Ora | null = null;\n\n success(message: string): void {\n console.log(chalk.green(\"✓\"), message);\n }\n\n error(message: string): void {\n console.log(chalk.red(\"✗\"), message);\n }\n\n warning(message: string): void {\n console.log(chalk.yellow(\"⚠\"), message);\n }\n\n info(message: string): void {\n console.log(chalk.blue(\"ℹ\"), message);\n }\n\n log(message: string): void {\n console.log(message);\n }\n\n startSpinner(message: string): void {\n this.spinner = ora(message).start();\n }\n\n stopSpinner(success: boolean = true, message?: string): void {\n if (!this.spinner) return;\n\n if (success) {\n this.spinner.succeed(message);\n } else {\n this.spinner.fail(message);\n }\n this.spinner = null;\n }\n\n updateSpinner(message: string): void {\n if (this.spinner) {\n this.spinner.text = message;\n }\n }\n\n newLine(): void {\n console.log();\n }\n\n header(message: string): void {\n console.log();\n console.log(chalk.bold.cyan(message));\n console.log(chalk.cyan(\"=\".repeat(message.length)));\n console.log();\n }\n\n section(message: string): void {\n console.log();\n console.log(chalk.bold(message));\n }\n}\n\nexport const logger = new Logger();\n","/**\n * Standalone Theme Compiler\n *\n * Compiles standalone theme source code to ESM bundles using esbuild.\n * Adapted from scripts/compile-theme.ts for use in the CLI.\n *\n * Key differences from the monorepo version:\n * - Core global plugin reads from node_modules/@onexapis/core/dist/ (not packages/core/dist/)\n * - Process shim is inlined (no external file dependency)\n * - Output goes to ./dist/ in the theme directory\n */\n\nimport * as esbuild from \"esbuild\";\nimport type { Plugin } from \"esbuild\";\nimport path from \"path\";\nimport fs from \"fs/promises\";\nimport crypto from \"crypto\";\nimport { glob } from \"glob\";\nimport { createRequire } from \"node:module\";\nimport { logger } from \"./logger\";\n\n/**\n * Generate Tailwind CSS bundle for the theme.\n * Scans theme section/component TSX files to compile all used utility classes.\n * Output: dist/bundle.css — loaded by the editor iframe as a CSS asset.\n */\nasync function generateThemeCSS(\n themePath: string,\n outDir: string\n): Promise<void> {\n try {\n // Dynamic imports so tailwindcss/postcss don't break if missing\n const postcss = (await import(\"postcss\")).default;\n const tailwindcss = (await import(\"tailwindcss\")).default;\n\n const tailwindConfig = {\n content: [\n path.join(themePath, \"sections/**/*.{ts,tsx}\"),\n path.join(themePath, \"components/**/*.{ts,tsx}\"),\n ],\n theme: { extend: {} },\n plugins: [] as any[],\n };\n\n const inputCSS =\n \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\";\n const result = await postcss([tailwindcss(tailwindConfig)]).process(\n inputCSS,\n { from: undefined }\n );\n\n await fs.writeFile(path.join(outDir, \"bundle.css\"), result.css);\n logger.info(\"Generated bundle.css\");\n } catch (err) {\n logger.warning(\n `CSS generation skipped: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n}\n\n/**\n * Inline process shim for browser environments.\n * Equivalent to scripts/process-shim.js but embedded as a string.\n */\nconst PROCESS_SHIM = `\nif (typeof process === \"undefined\") {\n globalThis.process = {\n env: {},\n browser: true,\n };\n}\n`;\n\n/**\n * Plugin to externalize React as window globals.\n * React/ReactDOM are shared via globalThis to prevent duplication.\n */\nconst reactGlobalPlugin: Plugin = {\n name: \"react-global\",\n setup(build) {\n build.onResolve({ filter: /^react$/ }, () => ({\n path: \"react-external\",\n namespace: \"react-global\",\n }));\n\n build.onResolve({ filter: /^react-dom$/ }, () => ({\n path: \"react-dom-external\",\n namespace: \"react-global\",\n }));\n\n build.onResolve({ filter: /^react\\/jsx-runtime$/ }, () => ({\n path: \"react-jsx-runtime-external\",\n namespace: \"react-global\",\n }));\n\n build.onLoad({ filter: /.*/, namespace: \"react-global\" }, (args) => {\n if (args.path === \"react-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_REACT__) {\n throw new Error('[Theme Bundle] React not initialized. Ensure globalThis.__ONEX_REACT__ is set before loading theme.');\n}\n\nconst React = globalThis.__ONEX_REACT__;\nexport default React;\n\nexport const {\n useState,\n useEffect,\n useContext,\n useReducer,\n useCallback,\n useMemo,\n useRef,\n useImperativeHandle,\n useLayoutEffect,\n useDebugValue,\n useDeferredValue,\n useTransition,\n useId,\n useSyncExternalStore,\n useInsertionEffect,\n createContext,\n forwardRef,\n lazy,\n memo,\n startTransition,\n createElement,\n cloneElement,\n isValidElement,\n Children,\n Fragment,\n Profiler,\n StrictMode,\n Suspense,\n Component,\n PureComponent,\n useActionState,\n use,\n} = React;\n `.trim(),\n loader: \"js\",\n };\n }\n\n if (args.path === \"react-dom-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_REACT_DOM__) {\n throw new Error('[Theme Bundle] ReactDOM not initialized. Ensure globalThis.__ONEX_REACT_DOM__ is set before loading theme.');\n}\n\nconst ReactDOM = globalThis.__ONEX_REACT_DOM__;\nexport default ReactDOM;\n\nexport const {\n createRoot,\n hydrateRoot,\n flushSync,\n createPortal,\n findDOMNode,\n render,\n hydrate,\n unmountComponentAtNode,\n} = ReactDOM;\n `.trim(),\n loader: \"js\",\n };\n }\n\n if (args.path === \"react-jsx-runtime-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_JSX_RUNTIME__) {\n throw new Error('[Theme Bundle] React JSX runtime not initialized. Ensure globalThis.__ONEX_JSX_RUNTIME__ is set before loading theme.');\n}\nconst _jsxRuntime = globalThis.__ONEX_JSX_RUNTIME__;\nexport const jsx = _jsxRuntime.jsx;\nexport const jsxs = _jsxRuntime.jsxs;\nexport const Fragment = _jsxRuntime.Fragment;\n `.trim(),\n loader: \"js\",\n };\n }\n\n return null;\n });\n },\n};\n\n/**\n * Plugin to externalize @tanstack/react-query as a window global.\n * Prevents the theme bundle from shipping its own copy of react-query,\n * which would create a second QueryClient instance separate from the host's.\n */\nconst reactQueryGlobalPlugin: Plugin = {\n name: \"react-query-global\",\n setup(build) {\n build.onResolve({ filter: /^@tanstack\\/react-query$/ }, () => ({\n path: \"react-query-external\",\n namespace: \"react-query-global\",\n }));\n\n build.onLoad({ filter: /.*/, namespace: \"react-query-global\" }, () => ({\n contents: `\nif (!globalThis.__REACT_QUERY__) {\n throw new Error('[Theme Bundle] @tanstack/react-query not initialized. Ensure globalThis.__REACT_QUERY__ is set before loading theme.');\n}\nconst _rq = globalThis.__REACT_QUERY__;\nexport default _rq;\nexport const {\n useQuery,\n useMutation,\n useQueryClient,\n useInfiniteQuery,\n QueryClient,\n QueryClientProvider,\n useIsFetching,\n useIsMutating,\n usePrefetchQuery,\n usePrefetchInfiniteQuery,\n} = _rq;\n `.trim(),\n loader: \"js\",\n }));\n },\n};\n\n/**\n * Resolve a file inside node_modules, searching up the directory tree.\n * Handles monorepo hoisting where deps are in a parent node_modules.\n */\nasync function resolveNodeModulesFile(\n startDir: string,\n relativePath: string\n): Promise<string | null> {\n let dir = startDir;\n while (true) {\n const candidate = path.join(dir, \"node_modules\", relativePath);\n try {\n await fs.access(candidate);\n return candidate;\n } catch {\n const parent = path.dirname(dir);\n if (parent === dir) break; // reached filesystem root\n dir = parent;\n }\n }\n return null;\n}\n\n/**\n * Scan source files in `sourceDir` for named imports/exports from `packageName`.\n * Returns a map of subpath → Set of imported names.\n * e.g. for `@onexapis/core/internal` → key \"internal\", names {\"useCart\", \"Button\"}\n * for `@onexapis/core` → key \"\" (empty string)\n */\nasync function scanImportsFromPackage(\n sourceDir: string,\n packageName: string\n): Promise<Record<string, Set<string>>> {\n const result: Record<string, Set<string>> = {};\n const escapedPkg = packageName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n // Match named imports: import { useCart, useAuth } from \"@onexapis/core/hooks\"\n const importRegex = new RegExp(\n `(?:import|export)\\\\s+(?:type\\\\s+)?\\\\{([^}]+)\\\\}\\\\s+from\\\\s+[\"']${escapedPkg}(/[\\\\w./-]+)?[\"']`,\n \"g\"\n );\n // Match namespace imports: import * as H from \"@onexapis/core/hooks\"\n const namespaceImportRegex = new RegExp(\n `import\\\\s+\\\\*\\\\s+as\\\\s+\\\\w+\\\\s+from\\\\s+[\"']${escapedPkg}(/[\\\\w./-]+)?[\"']`,\n \"g\"\n );\n\n const sourceFiles = await glob(\"**/*.{ts,tsx}\", {\n cwd: sourceDir,\n ignore: [\"node_modules/**\", \"dist/**\"],\n });\n\n for (const file of sourceFiles) {\n try {\n const content = await fs.readFile(path.join(sourceDir, file), \"utf-8\");\n // Check namespace imports first — marks subpath for full export reading\n for (const match of content.matchAll(namespaceImportRegex)) {\n const subpath = match[1] ? match[1].slice(1) : \"\";\n if (!result[subpath]) result[subpath] = new Set();\n result[subpath].add(\"*\"); // Flag: needs ALL exports from dist\n }\n // Check named imports\n for (const match of content.matchAll(importRegex)) {\n const subpath = match[2] ? match[2].slice(1) : \"\";\n if (!result[subpath]) result[subpath] = new Set();\n for (const name of match[1].split(\",\")) {\n let original = name\n .trim()\n .split(/\\s+as\\s+/)[0]\n .trim();\n if (original.startsWith(\"type \")) continue;\n if (original) result[subpath].add(original);\n }\n }\n } catch {\n // skip unreadable files\n }\n }\n\n return result;\n}\n\n/**\n * Plugin to externalize @onexapis/core as window global.\n * Scans theme source to discover imports; falls back to reading dist files.\n */\nfunction createCoreGlobalPlugin(themePath: string): Plugin {\n const exportsBySubpath: Record<string, string[]> = {};\n let scanPromise: Promise<void> | null = null;\n\n return {\n name: \"core-global\",\n setup(build) {\n build.onResolve({ filter: /^@onexapis\\/core(\\/.*)?$/ }, (args) => ({\n path: args.path,\n namespace: \"core-global\",\n }));\n\n build.onLoad({ filter: /.*/, namespace: \"core-global\" }, async (args) => {\n // On first load, scan theme source files to discover all @onexapis/core imports\n // Use a shared promise to avoid race conditions with concurrent onLoad calls\n if (!scanPromise) {\n scanPromise = scanImportsFromPackage(themePath, \"@onexapis/core\")\n .then((scanned) => {\n for (const [subpath, names] of Object.entries(scanned)) {\n const cacheKey = subpath || \"__root__\";\n exportsBySubpath[cacheKey] = [...names];\n }\n })\n .catch(() => {\n // Source scan failed, will fall back to dist-file reading\n });\n }\n await scanPromise;\n\n const match = args.path.match(/^@onexapis\\/core(\\/(.+))?$/);\n const subpath = match?.[2] || \"\";\n const moduleAccess = subpath ? `['${subpath}']` : \"\";\n\n let namedExports: string[] = [];\n const cacheKey = subpath || \"__root__\";\n const cached = exportsBySubpath[cacheKey];\n const needsAllExports = cached?.includes(\"*\");\n if (cached && cached.length > 0 && !needsAllExports) {\n // Deduplicate (multiple sections may import same hook)\n namedExports = [...new Set(cached)];\n } else {\n // Fallback: read dist files when source scan found nothing for this subpath\n const distFileName = subpath ? `${subpath}.mjs` : \"index.mjs\";\n let distPath = await resolveNodeModulesFile(\n themePath,\n path.join(\"@onexapis\", \"core\", \"dist\", distFileName)\n );\n if (!distPath) {\n distPath = await resolveNodeModulesFile(\n __dirname,\n path.join(\"@onexapis\", \"core\", \"dist\", distFileName)\n );\n }\n try {\n if (!distPath) throw new Error(\"not found\");\n const distContent = await fs.readFile(distPath, \"utf-8\");\n const exportMatches = distContent.matchAll(/export\\s*\\{([^}]+)\\}/g);\n for (const m of exportMatches) {\n const names = m[1]\n .split(\",\")\n .map((n) => {\n const parts = n.trim().split(/\\s+as\\s+/);\n return (parts[1] || parts[0]).trim();\n })\n .filter((n) => n.length > 0);\n namedExports.push(...names);\n }\n // Merge with any named imports from source scan (remove \"*\" flag)\n if (cached && cached.length > 0) {\n for (const n of cached) {\n if (n !== \"*\") namedExports.push(n);\n }\n }\n namedExports = [...new Set(namedExports)];\n } catch {\n // dist file not found - fall back to default-only export\n }\n exportsBySubpath[cacheKey] = namedExports;\n }\n\n const namedExportLines =\n namedExports.length > 0\n ? `\\nexport const {\\n ${namedExports.join(\",\\n \")}\\n} = _module;\\n`\n : \"\";\n\n return {\n contents: `\nif (!globalThis.__ONEX_CORE__) {\n throw new Error('[Theme Bundle] @onexapis/core not initialized. Ensure globalThis.__ONEX_CORE__ is set before loading theme.');\n}\n\nconst _module = globalThis.__ONEX_CORE__${moduleAccess};\nif (!_module) {\n const subpath = ${subpath ? `'${subpath}'` : \"null\"};\n const modulePath = subpath ? '/' + subpath : '';\n const moduleKey = subpath ? '[\"' + subpath + '\"]' : '';\n throw new Error('[Theme Bundle] @onexapis/core' + modulePath + ' not available in globalThis.__ONEX_CORE__' + moduleKey);\n}\n\nexport default _module;\n${namedExportLines}\n `.trim(),\n loader: \"js\",\n };\n });\n },\n };\n}\n\n/**\n * Plugin to stub common theme dependencies (next/*, framer-motion, lucide-react, etc.)\n * for standalone theme compilation. Tries to resolve from node_modules first;\n * only stubs if the package is not installed.\n */\nfunction createThemeDepsStubPlugin(themePath: string): Plugin {\n return {\n name: \"theme-deps-stub\",\n setup(build) {\n // Helper: try resolve, stub if missing\n const tryResolveOrStub = (filter: RegExp, namespace: string) => {\n build.onResolve({ filter }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n // Try resolving from theme directory\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir || themePath,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n // Try resolving via CLI's node_modules (monorepo)\n try {\n const req = createRequire(import.meta.url || __filename);\n const resolved = req.resolve(args.path);\n if (resolved) return { path: resolved, namespace: \"file\" };\n } catch {}\n return { path: args.path, namespace };\n });\n };\n\n // --- Next.js ---\n tryResolveOrStub(/^next\\//, \"next-stub\");\n build.onLoad({ filter: /.*/, namespace: \"next-stub\" }, (args) => {\n const stubs: Record<string, string> = {\n \"next/image\": `\nimport React from 'react';\nconst Image = React.forwardRef((props, ref) => {\n const { src, alt, width, height, fill, priority, sizes, quality, placeholder, blurDataURL, onLoad, onError, style, className, ...rest } = props;\n const imgSrc = typeof src === 'object' ? src.src : src;\n const fillStyle = fill ? { position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: style?.objectFit || 'cover', display: 'block' } : {};\n const mergedStyle = { ...fillStyle, ...style };\n return React.createElement('img', {\n ref, src: imgSrc, alt,\n width: fill ? undefined : width, height: fill ? undefined : height,\n loading: priority ? 'eager' : 'lazy',\n style: Object.keys(mergedStyle).length > 0 ? mergedStyle : undefined,\n className, onLoad, onError, ...rest,\n });\n});\nexport default Image;\n `,\n \"next/link\": `\nimport React from 'react';\nconst Link = ({ href, children, ...rest }) => React.createElement('a', { href, ...rest }, children);\nexport default Link;\n `,\n \"next/navigation\": `\nexport function useRouter() { return { push(u){window.location.href=u}, replace(u){window.location.href=u}, back(){window.history.back()}, forward(){window.history.forward()}, refresh(){window.location.reload()}, prefetch(){} }; }\nexport function usePathname() { return window.location.pathname; }\nexport function useSearchParams() { return new URLSearchParams(window.location.search); }\nexport function useParams() { return {}; }\nexport function redirect(url) { window.location.href = url; }\nexport function notFound() { throw new Error('Not Found'); }\n `,\n \"next/headers\": `\nexport function cookies() { return { get(){}, getAll(){ return []; }, set(){}, delete(){}, has(){ return false; } }; }\nexport function headers() { return new Headers(); }\n `,\n };\n return {\n contents: stubs[args.path] || \"export default {};\",\n loader: \"jsx\",\n resolveDir: themePath,\n };\n });\n\n // --- lucide-react ---\n // Collect all imported icon names from the theme source at resolve time,\n // then generate a stub that exports every one of them.\n const lucideImports = new Set<string>();\n let lucideThemeScanned = false;\n tryResolveOrStub(/^lucide-react/, \"lucide-stub\");\n build.onLoad({ filter: /.*/, namespace: \"lucide-stub\" }, async () => {\n // Scan theme source files for lucide-react imports to discover all icon names\n if (!lucideThemeScanned) {\n lucideThemeScanned = true;\n try {\n const scanned = await scanImportsFromPackage(\n themePath,\n \"lucide-react\"\n );\n for (const names of Object.values(scanned)) {\n for (const name of names) lucideImports.add(name);\n }\n } catch {}\n }\n const iconNames = [...lucideImports];\n const exports = iconNames.map((n) => `icon as ${n}`).join(\", \");\n return {\n contents: `\nconst icon = (props) => null;\nexport { ${exports} };\nexport default new Proxy({}, { get: (_, name) => name === '__esModule' ? true : icon });\n `.trim(),\n loader: \"jsx\",\n };\n });\n\n // --- framer-motion ---\n tryResolveOrStub(/^framer-motion/, \"motion-stub\");\n build.onLoad({ filter: /.*/, namespace: \"motion-stub\" }, () => ({\n contents: `\nimport React from 'react';\nconst handler = { get: (_, name) => {\n if (name === '__esModule') return true;\n return React.forwardRef((props, ref) => React.createElement(name, { ...props, ref }));\n}};\nexport const motion = new Proxy({}, handler);\nexport const AnimatePresence = ({ children }) => children || null;\nexport function useInView() { return true; }\nexport default { motion, AnimatePresence, useInView };\n `.trim(),\n loader: \"jsx\",\n resolveDir: themePath,\n }));\n\n // --- sonner ---\n tryResolveOrStub(/^sonner$/, \"sonner-stub\");\n build.onLoad({ filter: /.*/, namespace: \"sonner-stub\" }, () => ({\n contents: `\nexport const toast = new Proxy(() => {}, { get: () => () => {} });\nexport const Toaster = () => null;\nexport default { toast, Toaster };\n `.trim(),\n loader: \"jsx\",\n }));\n\n // --- react-hook-form ---\n tryResolveOrStub(/^react-hook-form$/, \"rhf-stub\");\n build.onLoad({ filter: /.*/, namespace: \"rhf-stub\" }, () => ({\n contents: `\nexport function useForm() {\n return {\n register: () => ({}),\n handleSubmit: (fn) => (e) => { e?.preventDefault?.(); fn({}); },\n formState: { errors: {}, isSubmitting: false, isValid: true },\n watch: () => undefined,\n setValue: () => {},\n reset: () => {},\n control: {},\n };\n}\nexport function useController() { return { field: {}, fieldState: {} }; }\nexport function useFormContext() { return useForm(); }\n `.trim(),\n loader: \"js\",\n }));\n\n // --- @hookform/resolvers ---\n tryResolveOrStub(/^@hookform\\/resolvers/, \"hookform-resolvers-stub\");\n build.onLoad(\n { filter: /.*/, namespace: \"hookform-resolvers-stub\" },\n () => ({\n contents: `export function zodResolver() { return () => ({ values: {}, errors: {} }); }`,\n loader: \"js\",\n })\n );\n\n // --- next-intl ---\n tryResolveOrStub(/^next-intl$/, \"next-intl-stub\");\n build.onLoad({ filter: /.*/, namespace: \"next-intl-stub\" }, () => ({\n contents: `\nexport function useTranslations(ns) {\n return (key) => ns ? ns + '.' + key : key;\n}\nexport function useLocale() { return 'en'; }\nexport function useMessages() { return {}; }\n `.trim(),\n loader: \"js\",\n }));\n\n // --- zod (often used with hookform) ---\n tryResolveOrStub(/^zod$/, \"zod-stub\");\n build.onLoad({ filter: /.*/, namespace: \"zod-stub\" }, () => ({\n contents: `\nconst schema = () => ({ parse: (v) => v, safeParse: (v) => ({ success: true, data: v }), optional: schema, min: schema, max: schema, email: schema, url: schema, regex: schema, refine: schema, transform: schema });\nexport const z = { string: schema, number: schema, boolean: schema, object: (s) => ({ ...schema(), shape: s }), array: schema, enum: schema, union: schema, literal: schema, infer: undefined };\nexport default z;\n `.trim(),\n loader: \"js\",\n }));\n },\n };\n}\n\n/**\n * Generate theme-data.json from theme source files using jiti.\n * This provides a server-side fallback for themes without API data.\n */\nasync function generateThemeData(\n themePath: string,\n outputDir: string,\n themeId: string\n): Promise<void> {\n const { createJiti } = await import(\"jiti\");\n const jiti = createJiti(import.meta.url);\n\n let themeConfig: any = null;\n let layoutConfig: any = null;\n const pages: Record<string, any> = {};\n\n // Load theme config\n for (const ext of [\".ts\", \".js\"]) {\n try {\n const mod = await jiti.import(path.join(themePath, `theme.config${ext}`));\n themeConfig = (mod as any).default || mod;\n break;\n } catch {}\n }\n\n // Load layout\n for (const ext of [\".ts\", \".js\"]) {\n try {\n const mod = await jiti.import(path.join(themePath, `theme.layout${ext}`));\n layoutConfig = (mod as any).default || mod;\n break;\n } catch {}\n }\n\n // Load schemas (to merge defaults into page sections)\n const schemas: Record<string, any> = {};\n const sectionsDir = path.join(themePath, \"sections\");\n try {\n const sectionDirs = await fs.readdir(sectionsDir);\n for (const dir of sectionDirs) {\n const schemaFile = path.join(sectionsDir, dir, `${dir}.schema.ts`);\n try {\n await fs.access(schemaFile);\n const mod = await jiti.import(schemaFile);\n // Find the schema export (ends with \"Schema\")\n for (const [key, value] of Object.entries(mod as Record<string, any>)) {\n if (\n key.endsWith(\"Schema\") &&\n value &&\n typeof value === \"object\" &&\n (value as any).type\n ) {\n schemas[(value as any).type] = value;\n }\n }\n } catch {}\n }\n } catch {}\n\n // Load pages\n const pagesDir = path.join(themePath, \"pages\");\n try {\n const files = await fs.readdir(pagesDir);\n for (const file of files) {\n if (!file.match(/\\.(ts|js)$/)) continue;\n const name = file.replace(/\\.(ts|js)$/, \"\");\n try {\n const mod = await jiti.import(path.join(pagesDir, file));\n const config = (mod as any).default || mod;\n\n // Merge schema defaults (components/blocks) into sections\n const sections = (config.sections || []).map((section: any) => {\n const schema = schemas[section.type];\n if (!schema?.defaults) return section;\n return {\n ...section,\n components:\n section.components?.length > 0\n ? section.components\n : schema.defaults.components || [],\n blocks:\n section.blocks?.length > 0\n ? section.blocks\n : schema.defaults.blocks || [],\n settings: {\n ...(schema.defaults.settings || {}),\n ...section.settings,\n },\n };\n });\n\n pages[name] = {\n id: name,\n name: config.title || name,\n path: config.path || `/${name}`,\n config: { id: name, ...config, sections },\n sections,\n seo: config.seo,\n };\n } catch {}\n }\n } catch {}\n\n await fs.writeFile(\n path.join(outputDir, \"theme-data.json\"),\n JSON.stringify(\n {\n themeId,\n theme: {\n id: themeId,\n name: themeConfig?.name || themeId,\n config: themeConfig,\n layout: {\n header: layoutConfig?.headerSections || [],\n footer: layoutConfig?.footerSections || [],\n },\n pages: Object.keys(pages),\n },\n pages,\n },\n null,\n 2\n )\n );\n logger.info(`Generated theme-data.json (${Object.keys(pages).length} pages)`);\n}\n\n/**\n * Content-hash the bundle entry point for cache busting.\n * Renames bundle-entry.js -> bundle-entry-{hash}.js\n */\nasync function contentHashEntry(outputDir: string): Promise<void> {\n const entryPath = path.join(outputDir, \"bundle-entry.js\");\n const mapPath = path.join(outputDir, \"bundle-entry.js.map\");\n\n // Read the entry file BEFORE cleaning old hashed files.\n // bundle-entry.js may be a symlink pointing at the previous hashed file —\n // deleting that target first would leave a broken symlink and make the\n // subsequent readFile fail with ENOENT.\n let entryContent: string;\n try {\n entryContent = await fs.readFile(entryPath, \"utf-8\");\n } catch {\n // bundle-entry.js not found, try index.js\n const indexPath = path.join(outputDir, \"index.js\");\n try {\n entryContent = await fs.readFile(indexPath, \"utf-8\");\n } catch {\n logger.warning(\"No entry file found in output, skipping content hash\");\n return;\n }\n // For index.ts entry, rename index.js -> bundle-entry-{hash}.js\n const hash = crypto\n .createHash(\"sha256\")\n .update(entryContent)\n .digest(\"hex\")\n .slice(0, 8);\n\n const hashedName = `bundle-entry-${hash}.js`;\n const indexMapPath = path.join(outputDir, \"index.js.map\");\n const hashedMapName = `bundle-entry-${hash}.js.map`;\n\n entryContent = entryContent.replace(\n /\\/\\/# sourceMappingURL=index\\.js\\.map/,\n `//# sourceMappingURL=${hashedMapName}`\n );\n\n // Clean old hashed files now that we have the content safely in memory\n const oldFiles = await glob(\"bundle-entry-*.js*\", { cwd: outputDir });\n for (const f of oldFiles) {\n await fs.unlink(path.join(outputDir, f));\n }\n\n await fs.writeFile(path.join(outputDir, hashedName), entryContent);\n await fs.unlink(indexPath);\n // Remove existing file/symlink then write a real copy so archiver\n // includes actual JS content in the zip (symlinks store only the target path).\n try {\n await fs.unlink(entryPath);\n } catch {\n /* may not exist */\n }\n await fs.writeFile(entryPath, entryContent);\n\n try {\n await fs.access(indexMapPath);\n await fs.rename(indexMapPath, path.join(outputDir, hashedMapName));\n } catch {\n // No source map\n }\n\n logger.info(`Entry hashed: ${hashedName}`);\n return;\n }\n\n const hash = crypto\n .createHash(\"sha256\")\n .update(entryContent)\n .digest(\"hex\")\n .slice(0, 8);\n\n const hashedName = `bundle-entry-${hash}.js`;\n const hashedMapName = `bundle-entry-${hash}.js.map`;\n\n entryContent = entryContent.replace(\n /\\/\\/# sourceMappingURL=bundle-entry\\.js\\.map/,\n `//# sourceMappingURL=${hashedMapName}`\n );\n\n // Clean old hashed files now that content is safely in memory\n const oldFiles = await glob(\"bundle-entry-*.js*\", { cwd: outputDir });\n for (const f of oldFiles) {\n await fs.unlink(path.join(outputDir, f));\n }\n\n await fs.writeFile(path.join(outputDir, hashedName), entryContent);\n // Remove existing file/symlink then write a real copy so archiver\n // includes actual JS content in the zip (symlinks store only the target path).\n try {\n await fs.unlink(entryPath);\n } catch {\n /* may not exist */\n }\n await fs.writeFile(entryPath, entryContent);\n\n try {\n await fs.access(mapPath);\n await fs.rename(mapPath, path.join(outputDir, hashedMapName));\n } catch {\n // No source map\n }\n\n logger.info(`Entry hashed: ${hashedName}`);\n}\n\n/**\n * Extract dataRequirements from section schema files using jiti.\n * Same pattern as generateThemeData() — jiti handles TypeScript natively.\n * Returns a map of sectionType → dataRequirements object.\n */\nasync function extractDataRequirements(\n themePath: string\n): Promise<Record<string, Record<string, boolean>>> {\n const { createJiti } = await import(\"jiti\");\n const jiti = createJiti(import.meta.url);\n\n const schemaFiles = await glob(\"sections/**/*.schema.ts\", { cwd: themePath });\n const requirements: Record<string, Record<string, boolean>> = {};\n\n for (const file of schemaFiles) {\n try {\n const mod = await jiti.import(path.join(themePath, file));\n const exports = mod as Record<string, any>;\n\n // Find schema exports: look for objects with .type (string) + .dataRequirements\n for (const value of Object.values(exports)) {\n if (\n value &&\n typeof value === \"object\" &&\n typeof value.type === \"string\" &&\n value.dataRequirements &&\n typeof value.dataRequirements === \"object\"\n ) {\n requirements[value.type] = value.dataRequirements;\n }\n }\n } catch (err) {\n logger.warning(\n `Could not load schema ${file}: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n }\n\n return requirements;\n}\n\n/**\n * Generate manifest.json with theme metadata.\n */\nexport async function generateManifest(\n themeName: string,\n themePath: string,\n outputDir: string\n): Promise<void> {\n // Read version and themeId from package.json\n let version = \"1.0.0\";\n let themeId = themeName;\n try {\n const pkgContent = await fs.readFile(\n path.join(themePath, \"package.json\"),\n \"utf-8\"\n );\n const pkg = JSON.parse(pkgContent);\n version = pkg.version || version;\n // Derive themeId from package name: \"@onex-themes/simple\" → \"simple\"\n if (pkg.name) {\n themeId = pkg.name.replace(/^@onex-themes\\//, \"\");\n }\n } catch {\n // Use defaults\n }\n\n const [sectionFiles, blockFiles, schemaFiles] = await Promise.all([\n glob(\"sections/**/index.ts\", { cwd: themePath }),\n glob(\"blocks/**/index.ts\", { cwd: themePath }),\n glob(\"**/*.schema.ts\", { cwd: themePath }),\n ]);\n\n // Extract dataRequirements declared in section schemas\n const dataRequirements = await extractDataRequirements(themePath);\n\n let hasThemeConfig = false;\n try {\n await fs.access(path.join(themePath, \"theme.config.ts\"));\n hasThemeConfig = true;\n } catch {\n // No theme config\n }\n\n const allFiles = await glob(\"**/*\", { cwd: outputDir, nodir: true });\n const jsFiles = allFiles.filter((f) => f.endsWith(\".js\"));\n const cssFiles = allFiles.filter((f) => f.endsWith(\".css\"));\n\n const entryFile =\n jsFiles.find((f) => f.includes(\"bundle-entry\")) || \"bundle-entry.js\";\n\n const manifest = {\n themeId,\n version,\n name: themeId.charAt(0).toUpperCase() + themeId.slice(1),\n compiledAt: new Date().toISOString(),\n format: \"esm\",\n platform: \"browser\",\n target: \"es2020\",\n\n counts: {\n sections: sectionFiles.length,\n blocks: blockFiles.length,\n schemas: schemaFiles.length,\n },\n\n output: {\n entry: entryFile,\n chunks: jsFiles.filter((f) => f !== entryFile && !f.endsWith(\".map\")),\n assets: allFiles.filter((f) =>\n [\".png\", \".jpg\", \".jpeg\", \".svg\", \".gif\", \".webp\"].some((ext) =>\n f.endsWith(ext)\n )\n ),\n stylesheets: cssFiles,\n },\n\n external: [\"react\", \"react-dom\", \"@onexapis/core\"],\n\n source: {\n sections: sectionFiles,\n blocks: blockFiles,\n schemas: schemaFiles,\n hasThemeConfig,\n },\n\n // Section data requirements for server-side prefetching (keyed by section type)\n dataRequirements,\n };\n\n await fs.writeFile(\n path.join(outputDir, \"manifest.json\"),\n JSON.stringify(manifest, null, 2)\n );\n}\n\n/**\n * Compile a standalone theme using esbuild.\n * Produces ESM bundles with React/core externalized to globals.\n *\n * @returns true if build succeeded\n */\nexport async function compileStandaloneTheme(\n themePath: string,\n themeName: string\n): Promise<boolean> {\n const outputDir = path.join(themePath, \"dist\");\n\n // Detect entry point: bundle-entry.ts preferred, fallback to index.ts\n const bundleEntry = path.join(themePath, \"bundle-entry.ts\");\n const indexEntry = path.join(themePath, \"index.ts\");\n\n let entryPoint = indexEntry;\n try {\n await fs.access(bundleEntry);\n entryPoint = bundleEntry;\n } catch {\n // Use index.ts\n }\n\n // Write process shim to a temp file (esbuild inject requires a file path)\n const shimPath = path.join(outputDir, \".process-shim.js\");\n await fs.mkdir(outputDir, { recursive: true });\n await fs.writeFile(shimPath, PROCESS_SHIM);\n\n const buildOptions: esbuild.BuildOptions = {\n entryPoints: [entryPoint],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outdir: outputDir,\n splitting: false,\n chunkNames: \"[name]-[hash]\",\n banner: {\n js: '\"use client\";',\n },\n\n plugins: [\n reactGlobalPlugin,\n reactQueryGlobalPlugin,\n createCoreGlobalPlugin(themePath),\n createThemeDepsStubPlugin(themePath),\n ],\n\n external: [],\n\n alias: {\n events: \"events/\",\n buffer: \"buffer/\",\n },\n\n inject: [shimPath],\n\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"production\"),\n global: \"globalThis\",\n },\n\n minify: true,\n sourcemap: true,\n logLevel: \"warning\",\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n\n loader: {\n \".tsx\": \"tsx\",\n \".ts\": \"ts\",\n \".jpg\": \"file\",\n \".jpeg\": \"file\",\n \".png\": \"file\",\n \".gif\": \"file\",\n \".svg\": \"file\",\n \".webp\": \"file\",\n },\n\n assetNames: \"assets/[name]-[hash]\",\n publicPath: \"./\",\n metafile: true,\n };\n\n try {\n const result = await esbuild.build(buildOptions);\n\n // Clean up temp shim file\n try {\n await fs.unlink(shimPath);\n } catch {\n // Ignore\n }\n\n // Content-hash the entry point\n await contentHashEntry(outputDir);\n\n // Copy static assets (logos, banners, etc.) into dist/theme-assets/\n // so they are included in the published bundle zip.\n // Theme settings reference these as /assets/<themeId>/path.\n const themeAssetsDir = path.join(themePath, \"assets\");\n const distThemeAssets = path.join(outputDir, \"theme-assets\");\n try {\n await fs.access(themeAssetsDir);\n await fs.cp(themeAssetsDir, distThemeAssets, { recursive: true });\n logger.info(\"Copied static assets to dist/theme-assets/\");\n } catch {\n // No assets directory — skip\n }\n\n // Generate manifest\n await generateManifest(themeName, themePath, outputDir);\n\n // Generate theme-data.json for server-side fallback\n await generateThemeData(themePath, outputDir, themeName);\n\n // Generate bundle.css with all Tailwind classes used by the theme\n // This is injected into the editor preview iframe so it matches the storefront\n await generateThemeCSS(themePath, outputDir);\n\n // Log bundle analysis\n if (result.metafile) {\n const outputs = result.metafile.outputs;\n let totalSize = 0;\n for (const output of Object.values(outputs)) {\n totalSize += output.bytes;\n }\n const totalKB = (totalSize / 1024).toFixed(2);\n logger.info(`Bundle size: ${totalKB} KB`);\n }\n\n return true;\n } catch (error) {\n // Clean up temp shim file on failure\n try {\n await fs.unlink(shimPath);\n } catch {\n // Ignore\n }\n\n logger.error(`esbuild compilation failed: ${error}`);\n return false;\n }\n}\n\n/**\n * Compile standalone theme in dev mode with incremental rebuilds.\n * Differences from production compileStandaloneTheme:\n * - Uses esbuild.context() for incremental rebuilds\n * - No minification, no content-hash (stable bundle-entry.js filename)\n * - Returns the build context for subsequent rebuilds\n */\nexport async function compileStandaloneThemeDev(\n themePath: string,\n themeName: string\n): Promise<{ context: esbuild.BuildContext; outputDir: string }> {\n const outputDir = path.join(themePath, \"dist\");\n\n // Detect entry point (same as production build)\n const bundleEntry = path.join(themePath, \"bundle-entry.ts\");\n const indexEntry = path.join(themePath, \"index.ts\");\n let entryPoint = indexEntry;\n try {\n await fs.access(bundleEntry);\n entryPoint = bundleEntry;\n } catch {\n // Use index.ts\n }\n\n // Write process shim\n const shimPath = path.join(outputDir, \".process-shim.js\");\n await fs.mkdir(outputDir, { recursive: true });\n await fs.writeFile(shimPath, PROCESS_SHIM);\n\n const buildOptions: esbuild.BuildOptions = {\n entryPoints: [entryPoint],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outdir: outputDir,\n splitting: false,\n banner: {\n js: '\"use client\";',\n },\n\n plugins: [\n reactGlobalPlugin,\n reactQueryGlobalPlugin,\n createCoreGlobalPlugin(themePath),\n createThemeDepsStubPlugin(themePath),\n ],\n external: [],\n\n alias: {\n events: \"events/\",\n buffer: \"buffer/\",\n },\n\n inject: [shimPath],\n\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"development\"),\n global: \"globalThis\",\n },\n\n minify: false,\n sourcemap: true,\n logLevel: \"warning\",\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n\n loader: {\n \".tsx\": \"tsx\",\n \".ts\": \"ts\",\n \".jpg\": \"file\",\n \".jpeg\": \"file\",\n \".png\": \"file\",\n \".gif\": \"file\",\n \".svg\": \"file\",\n \".webp\": \"file\",\n },\n\n assetNames: \"assets/[name]-[hash]\",\n publicPath: \"./\",\n metafile: true,\n };\n\n const context = await esbuild.context(buildOptions);\n\n // Initial build\n await context.rebuild();\n\n // NOTE: Do NOT delete shimPath here — incremental rebuilds need it.\n // It will be cleaned up when context.dispose() is called.\n\n // Generate manifest (no content-hash step for dev)\n await generateManifest(themeName, themePath, outputDir);\n\n // Generate theme-data.json for server-side fallback\n await generateThemeData(themePath, outputDir, themeName);\n\n return { context, outputDir };\n}\n\n/**\n * Compile the preview runtime (React + @onexapis/core bundled in).\n * One-time compilation on dev server startup.\n * React and core are bundled INTO the output (not externalized) because\n * the preview runtime IS the host that provides these globals.\n */\nexport async function compilePreviewRuntime(\n themePath: string\n): Promise<string> {\n const outputDir = path.join(themePath, \"dist\");\n await fs.mkdir(outputDir, { recursive: true });\n\n const outputPath = path.join(outputDir, \"preview-runtime.js\");\n\n // Resolve the preview-app.tsx source from CLI package\n // In dev: src/preview/preview-app.tsx\n // In dist: preview/preview-app.tsx (copied by tsup config)\n const locations = [\n path.join(__dirname, \"..\", \"preview\", \"preview-app.tsx\"),\n path.join(__dirname, \"preview\", \"preview-app.tsx\"),\n path.join(__dirname, \"..\", \"..\", \"src\", \"preview\", \"preview-app.tsx\"),\n ];\n\n let previewEntryPath: string | null = null;\n for (const loc of locations) {\n try {\n await fs.access(loc);\n previewEntryPath = loc;\n break;\n } catch {\n // Try next location\n }\n }\n\n if (!previewEntryPath) {\n throw new Error(\n `Preview app source not found. Searched:\\n${locations.join(\"\\n\")}`\n );\n }\n\n // Plugin to stub out server-only packages that leak from @onexapis/core chunks\n const serverStubPlugin: Plugin = {\n name: \"server-stub\",\n setup(build) {\n // Stub server-only marker package\n build.onResolve({ filter: /^server-only$/ }, () => ({\n path: \"server-only\",\n namespace: \"server-stub\",\n }));\n build.onLoad({ filter: /.*/, namespace: \"server-stub\" }, () => ({\n contents: \"// server-only stub for browser\",\n loader: \"js\",\n }));\n\n // Stub Node.js built-ins that leak from server chunks\n const nodeBuiltins = [\n \"fs\",\n \"fs/promises\",\n \"path\",\n \"os\",\n \"crypto\",\n \"stream\",\n \"url\",\n \"http\",\n \"https\",\n \"net\",\n \"tls\",\n \"child_process\",\n \"util\",\n \"events\",\n \"buffer\",\n \"querystring\",\n \"zlib\",\n ];\n for (const mod of nodeBuiltins) {\n build.onResolve(\n { filter: new RegExp(`^${mod.replace(\"/\", \"\\\\/\")}$`) },\n () => ({\n path: mod,\n namespace: \"node-stub\",\n })\n );\n }\n build.onLoad({ filter: /.*/, namespace: \"node-stub\" }, (args) => {\n const stubs: Record<string, string> = {\n events:\n \"export class EventEmitter { on(){return this} off(){return this} emit(){return false} addListener(){return this} removeListener(){return this} } export default { EventEmitter };\",\n path: \"export function join(){return ''} export function resolve(){return ''} export function dirname(){return ''} export function basename(){return ''} export function extname(){return ''} export default {};\",\n fs: \"export const promises = {}; export function readFileSync(){return ''} export function existsSync(){return false} export default {};\",\n };\n return {\n contents: stubs[args.path] || \"export default {};\",\n loader: \"js\",\n };\n });\n\n // Stub optional UI dependencies that may not be installed in standalone themes.\n // First try to resolve normally; only stub if the package is missing.\n const lucideIconNames = new Set<string>();\n let lucideScanned = false;\n build.onResolve({ filter: /^lucide-react/ }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n return { path: args.path, namespace: \"lucide-stub\" };\n });\n build.onLoad({ filter: /.*/, namespace: \"lucide-stub\" }, async () => {\n // Dynamically scan @onexapis/core source for lucide-react imports\n if (!lucideScanned) {\n lucideScanned = true;\n // Try multiple locations to find @onexapis/core source\n const coreSrcCandidates = [\n path.join(themePath, \"node_modules\", \"@onexapis\", \"core\", \"src\"),\n path.join(themePath, \"..\", \"..\", \"packages\", \"core\", \"src\"), // monorepo sibling\n path.join(\n __dirname,\n \"..\",\n \"..\",\n \"..\",\n \"..\",\n \"packages\",\n \"core\",\n \"src\"\n ), // from CLI src\n ];\n let coreSourceDir: string | null = null;\n for (const candidate of coreSrcCandidates) {\n try {\n await fs.access(candidate);\n coreSourceDir = candidate;\n break;\n } catch {}\n }\n if (coreSourceDir) {\n try {\n const scanned = await scanImportsFromPackage(\n coreSourceDir,\n \"lucide-react\"\n );\n for (const names of Object.values(scanned)) {\n for (const name of names) lucideIconNames.add(name);\n }\n } catch {}\n } else {\n // No source dir found (e.g. global install) — scan core dist .mjs files\n const coreDistCandidates: string[] = [\n path.join(themePath, \"node_modules\", \"@onexapis\", \"core\", \"dist\"),\n ];\n const resolvedDist = await resolveNodeModulesFile(\n __dirname,\n path.join(\"@onexapis\", \"core\", \"dist\")\n );\n if (resolvedDist) coreDistCandidates.push(resolvedDist);\n\n for (const candidate of coreDistCandidates) {\n try {\n await fs.access(candidate);\n const mjsFiles = await glob(\"*.mjs\", { cwd: candidate });\n const importRegex =\n /import\\s*\\{([^}]+)\\}\\s*from\\s*[\"']lucide-react[\"']/g;\n for (const file of mjsFiles) {\n const content = await fs.readFile(\n path.join(candidate, file),\n \"utf-8\"\n );\n for (const match of content.matchAll(importRegex)) {\n for (const name of match[1].split(\",\")) {\n const original = name\n .trim()\n .split(/\\s+as\\s+/)[0]\n .trim();\n if (original && !original.startsWith(\"type \")) {\n lucideIconNames.add(original);\n }\n }\n }\n }\n break; // found and scanned dist dir\n } catch {}\n }\n }\n // Also scan theme source files\n try {\n const scanned = await scanImportsFromPackage(\n themePath,\n \"lucide-react\"\n );\n for (const names of Object.values(scanned)) {\n for (const name of names) lucideIconNames.add(name);\n }\n } catch {}\n }\n\n const iconExports = [...lucideIconNames]\n .map((n) => `icon as ${n}`)\n .join(\", \");\n return {\n contents: `\nconst icon = (props) => null;\nexport { ${iconExports} };\nexport default new Proxy({}, { get: (_, name) => name === '__esModule' ? true : icon });\n `.trim(),\n loader: \"jsx\",\n };\n });\n\n build.onResolve({ filter: /^framer-motion/ }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n // Try resolving from theme directory first\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n // Try resolving via createRequire (works in bundled CLI / monorepo)\n try {\n const req = createRequire(import.meta.url || __filename);\n const cjsPath = req.resolve(\"framer-motion\");\n // Navigate to package root and use ESM entry for browser bundling\n const pkgDir = cjsPath.replace(/[/\\\\]dist[/\\\\].*$/, \"\");\n const esmEntry = path.join(pkgDir, \"dist\", \"es\", \"index.mjs\");\n const { existsSync } = await import(\"fs\");\n if (existsSync(esmEntry)) {\n return { path: esmEntry, namespace: \"file\" };\n }\n // Fallback: use the resolved path as-is\n return { path: cjsPath, namespace: \"file\" };\n } catch {}\n return { path: args.path, namespace: \"motion-stub\" };\n });\n build.onLoad({ filter: /.*/, namespace: \"motion-stub\" }, () => ({\n contents: `\nimport React from 'react';\nconst MotionComponent = React.forwardRef((props, ref) => {\n const { initial, animate, exit, variants, transition, whileInView, whileHover, whileTap, viewport, onAnimationComplete, layout, layoutId, style, className, ...rest } = props;\n return React.createElement(rest.as || 'div', { ref, style, className, ...rest }, rest.children);\n});\nconst handler = { get: (_, name) => {\n if (name === '__esModule') return true;\n if (name === 'create') return () => new Proxy({}, handler);\n return MotionComponent;\n}};\nexport const motion = new Proxy({}, handler);\nexport const AnimatePresence = (props) => props.children || null;\nexport const useInView = () => true;\nexport const useAnimation = () => ({ start: () => {}, stop: () => {}, set: () => {} });\nexport const useMotionValue = (v) => ({ get: () => v, set: () => {}, onChange: () => () => {} });\nexport const useTransform = (v) => v;\nexport const useScroll = () => ({ scrollY: { get: () => 0, onChange: () => () => {} }, scrollYProgress: { get: () => 0, onChange: () => () => {} } });\nexport default { motion, AnimatePresence };\n `.trim(),\n loader: \"jsx\",\n }));\n\n // Stub Next.js modules (not installed in standalone themes)\n build.onResolve({ filter: /^next\\// }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n return { path: args.path, namespace: \"next-stub\" };\n });\n build.onLoad({ filter: /.*/, namespace: \"next-stub\" }, (args) => {\n const stubs: Record<string, string> = {\n \"next/image\": `\nimport React from 'react';\nconst Image = React.forwardRef((props, ref) => {\n const { src, alt, width, height, fill, priority, sizes, quality, placeholder, blurDataURL, onLoad, onError, style, className, ...rest } = props;\n const imgSrc = typeof src === 'object' ? src.src : src;\n const fillStyle = fill ? { position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: style?.objectFit || 'cover', display: 'block' } : {};\n const mergedStyle = { ...fillStyle, ...style };\n return React.createElement('img', {\n ref,\n src: imgSrc,\n alt,\n width: fill ? undefined : width,\n height: fill ? undefined : height,\n loading: priority ? 'eager' : 'lazy',\n style: Object.keys(mergedStyle).length > 0 ? mergedStyle : undefined,\n className,\n onLoad,\n onError,\n ...rest,\n });\n});\nexport default Image;\n `,\n \"next/link\": `\nconst Link = ({ href, children, ...rest }) => React.createElement('a', { href, ...rest }, children);\nimport React from 'react';\nexport default Link;\n `,\n \"next/navigation\": `\nexport function useRouter() { return { push(u){window.location.href=u}, replace(u){window.location.href=u}, back(){window.history.back()}, forward(){window.history.forward()}, refresh(){window.location.reload()}, prefetch(){} }; }\nexport function usePathname() { return window.location.pathname; }\nexport function useSearchParams() { return new URLSearchParams(window.location.search); }\nexport function useParams() { return {}; }\nexport function redirect(url) { window.location.href = url; }\nexport function notFound() { throw new Error('Not Found'); }\n `,\n \"next/headers\": `\nexport function cookies() { return { get(){}, getAll(){ return []; }, set(){}, delete(){}, has(){ return false; } }; }\nexport function headers() { return new Headers(); }\n `,\n };\n return {\n contents: stubs[args.path] || \"export default {};\",\n loader: \"jsx\",\n resolveDir: themePath,\n };\n });\n },\n };\n\n // Write process shim for preview runtime (CJS code paths may reference `process`)\n const shimPath = path.join(outputDir, \".process-shim-preview.js\");\n await fs.writeFile(shimPath, PROCESS_SHIM);\n\n await esbuild.build({\n entryPoints: [previewEntryPath],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outfile: outputPath,\n // Bundle React + core INTO the output (NOT externalized)\n external: [],\n plugins: [serverStubPlugin],\n inject: [shimPath],\n minify: false,\n sourcemap: true,\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"development\"),\n \"process.env.NEXT_PUBLIC_API_URL\": JSON.stringify(\n process.env.NEXT_PUBLIC_API_URL || \"\"\n ),\n \"process.env.NEXT_PUBLIC_COMPANY_ID\": JSON.stringify(\n process.env.NEXT_PUBLIC_COMPANY_ID || \"\"\n ),\n global: \"globalThis\",\n },\n loader: { \".tsx\": \"tsx\", \".ts\": \"ts\" },\n // Force CJS resolution to avoid sideEffects:false dropping ESM chunk imports\n conditions: [\"require\", \"default\"],\n mainFields: [\"main\"],\n logOverride: {\n \"ignored-bare-import\": \"silent\",\n },\n });\n\n // Clean up temp shim file\n try {\n await fs.unlink(shimPath);\n } catch {\n // Ignore\n }\n\n return outputPath;\n}\n","import path from \"path\";\nimport fs from \"fs\";\nimport { execSync } from \"child_process\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport {\n validateThemeName,\n toKebabCase,\n toPascalCase,\n} from \"../utils/validators\";\nimport {\n writeFile,\n copyTemplate,\n detectPackageManager,\n installDependencies,\n} from \"../utils/file-helpers\";\nimport { getApiUrl } from \"../utils/cli-auth\";\n\ninterface InitOptions {\n template?: string;\n noInstall?: boolean;\n git?: boolean;\n yes?: boolean;\n}\n\nexport async function initCommand(\n projectName?: string,\n options: InitOptions = {}\n): Promise<void> {\n logger.header(\"Create New OneX Theme Project\");\n\n // Validate project name or prompt for it\n let name: string;\n\n if (!projectName) {\n const { inputName } = await inquirer.prompt([\n {\n type: \"input\",\n name: \"inputName\",\n message: \"Project name (kebab-case):\",\n validate: (input: string) => {\n if (!input) return \"Project name is required\";\n const kebabName = toKebabCase(input);\n if (!validateThemeName(kebabName)) {\n return \"Invalid project name. Use lowercase letters, numbers, and hyphens only.\";\n }\n if (fs.existsSync(path.join(process.cwd(), kebabName))) {\n return `Directory \"${kebabName}\" already exists`;\n }\n return true;\n },\n },\n ]);\n name = toKebabCase(inputName);\n } else {\n name = toKebabCase(projectName);\n }\n\n // Check if directory already exists\n const projectPath = path.join(process.cwd(), name);\n if (fs.existsSync(projectPath)) {\n logger.error(`Directory \"${name}\" already exists.`);\n process.exit(1);\n }\n\n // Check if theme ID is already registered (non-blocking — works offline)\n if (!options.yes) {\n try {\n const apiUrl = getApiUrl();\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 3000);\n const response = await fetch(\n `${apiUrl}/website-api/themes/${encodeURIComponent(name)}/exists`,\n { signal: controller.signal }\n );\n clearTimeout(timeout);\n if (response.ok) {\n const data = await response.json();\n const body = data.statusCode ? data.body : data;\n if (body.exists && body.owner === \"other\") {\n logger.warning(\n `Theme ID \"${name}\" is already registered by another developer.\\n` +\n ` You can still create this locally, but publishing will fail.\\n` +\n ` Consider using a different name.`\n );\n const { proceed } = await inquirer.prompt([\n {\n type: \"confirm\",\n name: \"proceed\",\n message: \"Continue anyway?\",\n default: false,\n },\n ]);\n if (!proceed) {\n process.exit(0);\n }\n }\n }\n } catch {\n // Offline or API unreachable — skip check silently\n }\n }\n\n // Skip prompts if --yes flag is provided\n let displayName: string;\n let description: string;\n let author: string;\n let template: string;\n\n if (options.yes) {\n displayName = toPascalCase(name)\n .replace(/([A-Z])/g, \" $1\")\n .trim();\n description = \"A custom OneX theme\";\n author = \"\";\n template = options.template || \"default\";\n } else {\n const answers = await inquirer.prompt([\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name:\",\n default: toPascalCase(name)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Theme description:\",\n default: \"A custom OneX theme\",\n },\n {\n type: \"input\",\n name: \"author\",\n message: \"Author name:\",\n default: \"\",\n },\n {\n type: \"list\",\n name: \"template\",\n message: \"Template to use:\",\n choices: [\n { name: \"Default (basic theme structure)\", value: \"default\" },\n { name: \"Minimal (bare minimum)\", value: \"minimal\" },\n ],\n default: options.template || \"default\",\n },\n ]);\n\n displayName = answers.displayName;\n description = answers.description;\n author = answers.author;\n template = answers.template;\n }\n\n const data = {\n projectName: name,\n themeName: name,\n themeNamePascal: toPascalCase(name),\n displayName,\n description,\n author,\n template,\n };\n\n // Prompt for Figma API key (optional, skip if --yes)\n let figmaApiKey = \"\";\n if (!options.yes) {\n const figmaAnswer = await inquirer.prompt([\n {\n type: \"password\",\n name: \"figmaApiKey\",\n message:\n \"Figma API Key (optional, for Figma-to-code MCP — press Enter to skip):\",\n },\n ]);\n figmaApiKey = figmaAnswer.figmaApiKey || \"\";\n }\n\n logger.startSpinner(\"Creating project structure...\");\n\n try {\n // Create project directory\n fs.mkdirSync(projectPath, { recursive: true });\n\n // Copy template files (real theme source — no EJS)\n await copyTemplate(template, projectPath, data);\n\n // Rename theme ID/name in copied files\n await renameThemeInFiles(\n projectPath,\n name,\n displayName,\n description,\n author\n );\n\n // Patch .mcp.json with Figma API key (or remove figma server if no key)\n const mcpJsonPath = path.join(projectPath, \".mcp.json\");\n if (fs.existsSync(mcpJsonPath)) {\n let mcpContent = fs.readFileSync(mcpJsonPath, \"utf-8\");\n if (figmaApiKey) {\n mcpContent = mcpContent.replace(\"__FIGMA_API_KEY__\", figmaApiKey);\n } else {\n // Remove figma server entry if no key provided\n try {\n const mcpJson = JSON.parse(mcpContent);\n delete mcpJson.mcpServers.figma;\n mcpContent = JSON.stringify(mcpJson, null, 2) + \"\\n\";\n } catch {}\n }\n fs.writeFileSync(mcpJsonPath, mcpContent, \"utf-8\");\n }\n\n logger.stopSpinner(true, \"Project structure created!\");\n\n // Initialize git if requested\n if (options.git) {\n logger.startSpinner(\"Initializing git repository...\");\n try {\n execSync(\"git init\", { cwd: projectPath, stdio: \"ignore\" });\n execSync(\"git add .\", { cwd: projectPath, stdio: \"ignore\" });\n execSync('git commit -m \"Initial commit from onexthm init\"', {\n cwd: projectPath,\n stdio: \"ignore\",\n });\n logger.stopSpinner(true, \"Git repository initialized!\");\n } catch {\n logger.stopSpinner(false, \"Failed to initialize git\");\n }\n }\n\n // Install dependencies\n if (!options.noInstall) {\n logger.newLine();\n const packageManager = detectPackageManager();\n logger.startSpinner(`Installing dependencies with ${packageManager}...`);\n try {\n await installDependencies(projectPath, packageManager);\n logger.stopSpinner(true, \"Dependencies installed!\");\n } catch {\n logger.stopSpinner(false, \"Failed to install dependencies\");\n logger.info(\n \"You can install dependencies manually by running: cd \" +\n name +\n \" && npm install\"\n );\n }\n }\n\n // Print success message and next steps\n logger.newLine();\n logger.section(\"Success! 🎉\");\n logger.newLine();\n logger.info(`Created OneX theme project at: ${projectPath}`);\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(` cd ${name}`);\n if (options.noInstall) {\n logger.log(` npm install`);\n }\n logger.log(` npm run build # Build your theme`);\n logger.log(` npm run dev # Start development mode`);\n logger.newLine();\n logger.section(\"Theme structure:\");\n logger.log(\" bundle-entry.ts - Theme manifest and exports\");\n logger.log(\n \" theme.config.ts - Design tokens (colors, typography, etc.)\"\n );\n logger.log(\" theme.layout.ts - Header and footer configuration\");\n logger.log(\" sections/ - Custom sections for your theme\");\n logger.log(\" pages/ - Page configurations\");\n logger.log(\" CLAUDE.md - AI assistant context\");\n logger.newLine();\n logger.success(`Happy theming! 🎨`);\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create project\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n // Clean up on failure\n if (fs.existsSync(projectPath)) {\n fs.rmSync(projectPath, { recursive: true, force: true });\n }\n process.exit(1);\n }\n}\n\n/**\n * Rename theme ID/name in copied template files.\n * Replaces \"simple\"/\"My Simple Theme\" with the user's theme name.\n */\nasync function renameThemeInFiles(\n projectPath: string,\n themeName: string,\n displayName: string,\n description: string,\n author: string\n): Promise<void> {\n // Only rename in metadata files — NOT in sections/pages (section type IDs must stay)\n // theme.config.ts — update id, name, description\n const configPath = path.join(projectPath, \"theme.config.ts\");\n if (fs.existsSync(configPath)) {\n let content = fs.readFileSync(configPath, \"utf-8\");\n // Keep id as \"my-simple\" — section types depend on it for prefix stripping\n content = content.replace(\n /name: \"My Simple Theme\"/,\n `name: \"${displayName}\"`\n );\n content = content.replace(\n /description: \".*?\"/,\n `description: \"${description}\"`\n );\n fs.writeFileSync(configPath, content, \"utf-8\");\n }\n\n // package.json — update name, description\n const pkgPath = path.join(projectPath, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n let content = fs.readFileSync(pkgPath, \"utf-8\");\n content = content.replace(\n /@onex-themes\\/my-simple/g,\n `@onex-themes/${themeName}`\n );\n content = content.replace(\n /\"description\": \".*?\"/,\n `\"description\": \"${description}\"`\n );\n fs.writeFileSync(pkgPath, content, \"utf-8\");\n }\n}\n\nfunction toCamelCase(str: string): string {\n return str.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n}\n\n// Legacy generator functions (kept for backward compat, unused with new template)\nfunction generateManifest(data: {\n themeName: string;\n displayName: string;\n description: string;\n author: string;\n}): string {\n return `import type { ThemeExport } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Theme Manifest\n * ${data.description}\n */\nexport const manifest: ThemeExport = {\n id: \"${data.themeName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n version: \"1.0.0\",\n author: \"${data.author}\",\n\n // Theme configuration\n config: () => import(\"./config\").then((m) => m.themeConfig),\n\n // Theme layout (header/footer sections)\n layout: () => import(\"./layout\").then((m) => m.themeLayout),\n\n // Available sections in this theme\n sections: {\n // Example: hero: () => import(\"./sections/hero\").then((m) => m.heroSchema),\n },\n\n // Available blocks in this theme\n blocks: {\n // Example: productCard: () => import(\"./blocks/product-card\").then((m) => m.productCardDefinition),\n },\n\n // Default pages\n pages: {\n home: () => import(\"./pages/home\").then((m) => m.homePageConfig),\n },\n\n // Supported page types\n supportedPageTypes: [\"home\", \"about\", \"contact\", \"custom\"],\n\n // Preview image (optional)\n preview: undefined,\n\n // Tags for categorization (optional)\n tags: [\"custom\"],\n};\n\nexport default manifest;\n`;\n}\n\nfunction generateThemeConfig(data: {\n themeName: string;\n displayName: string;\n}): string {\n return `import type { ThemeConfig } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Theme Configuration\n * Design tokens: colors, typography, spacing, etc.\n */\nexport const themeConfig: ThemeConfig = {\n // Color palette\n colors: {\n primary: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n },\n secondary: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n },\n accent: {\n 50: \"#fdf4ff\",\n 100: \"#fae8ff\",\n 200: \"#f5d0fe\",\n 300: \"#f0abfc\",\n 400: \"#e879f9\",\n 500: \"#d946ef\",\n 600: \"#c026d3\",\n 700: \"#a21caf\",\n 800: \"#86198f\",\n 900: \"#701a75\",\n },\n },\n\n // Typography\n typography: {\n fontFamily: {\n sans: [\"Inter\", \"system-ui\", \"sans-serif\"],\n serif: [\"Georgia\", \"serif\"],\n mono: [\"Monaco\", \"monospace\"],\n },\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n },\n },\n\n // Spacing\n spacing: {\n xs: \"0.5rem\",\n sm: \"1rem\",\n md: \"1.5rem\",\n lg: \"2rem\",\n xl: \"3rem\",\n \"2xl\": \"4rem\",\n \"3xl\": \"6rem\",\n \"4xl\": \"8rem\",\n },\n\n // Border radius\n borderRadius: {\n none: \"0\",\n sm: \"0.125rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n full: \"9999px\",\n },\n\n // Breakpoints\n breakpoints: {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n },\n};\n`;\n}\n\nfunction generateThemeLayout(data: { themeName: string }): string {\n return `import type { ThemeLayoutConfig } from \"@onexapis/core\";\n\n/**\n * ${data.themeName} Theme Layout\n * Define header and footer sections\n */\nexport const themeLayout: ThemeLayoutConfig = {\n // Header section configuration\n header: undefined,\n // Example:\n // header: {\n // type: \"header\",\n // template: \"default\",\n // enabled: true,\n // settings: {},\n // },\n\n // Footer section configuration\n footer: undefined,\n // Example:\n // footer: {\n // type: \"footer\",\n // template: \"default\",\n // enabled: true,\n // settings: {},\n // },\n};\n`;\n}\n\nfunction generateThemeIndex(data: {\n themeName: string;\n themeNamePascal: string;\n}): string {\n return `/**\n * ${data.themeNamePascal} Theme\n */\n\nexport { manifest as ${data.themeNamePascal}Manifest } from \"./manifest\";\nexport { themeConfig as ${data.themeNamePascal}Config } from \"./config\";\nexport { themeLayout as ${data.themeNamePascal}Layout } from \"./layout\";\n`;\n}\n\nfunction generateHomePage(data: { displayName: string }): string {\n return `import type { PageConfig } from \"@onexapis/core\";\n\n/**\n * Home Page Configuration\n */\nexport const homePageConfig: PageConfig = {\n type: \"home\",\n title: \"${data.displayName}\",\n description: \"Welcome to ${data.displayName}\",\n\n // SEO metadata\n seo: {\n title: \"${data.displayName} - Home\",\n description: \"Welcome to ${data.displayName}\",\n keywords: [],\n ogImage: undefined,\n },\n\n // Page sections\n sections: [\n // Add your sections here\n // Example:\n // {\n // id: \"hero-1\",\n // type: \"hero\",\n // template: \"default\",\n // order: 0,\n // enabled: true,\n // settings: {},\n // components: [],\n // blocks: [],\n // },\n ],\n};\n`;\n}\n","/**\n * Validation utilities for CLI inputs\n */\n\n/**\n * Validate component/section/block name\n * Must be kebab-case and alphanumeric\n */\nexport function validateName(name: string): boolean {\n return /^[a-z0-9]+(-[a-z0-9]+)*$/.test(name);\n}\n\n/**\n * Convert string to kebab-case\n */\nexport function toKebabCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n}\n\n/**\n * Convert string to PascalCase\n */\nexport function toPascalCase(str: string): string {\n return str\n .split(/[-_\\s]+/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(\"\");\n}\n\n/**\n * Convert string to camelCase\n */\nexport function toCamelCase(str: string): string {\n const pascal = toPascalCase(str);\n return pascal.charAt(0).toLowerCase() + pascal.slice(1);\n}\n\n/**\n * Validate theme name\n */\nexport function validateThemeName(name: string): boolean {\n return /^[a-z][a-z0-9-]*$/.test(name);\n}\n\n/**\n * Check if path exists\n */\nexport function pathExists(filePath: string): boolean {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const fs = require(\"fs-extra\");\n return fs.existsSync(filePath);\n}\n\n/**\n * Validate section category\n */\nexport function validateCategory(category: string): boolean {\n const validCategories = [\n \"headers\",\n \"heroes\",\n \"content\",\n \"features\",\n \"testimonials\",\n \"galleries\",\n \"cta\",\n \"footers\",\n \"ecommerce\",\n \"blog\",\n \"contact\",\n ];\n return validCategories.includes(category);\n}\n\n/**\n * Get valid categories\n */\nexport function getValidCategories(): string[] {\n return [\n \"headers\",\n \"heroes\",\n \"content\",\n \"features\",\n \"testimonials\",\n \"galleries\",\n \"cta\",\n \"footers\",\n \"ecommerce\",\n \"blog\",\n \"contact\",\n ];\n}\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport ejs from \"ejs\";\nimport { execSync } from \"child_process\";\nimport { logger } from \"./logger\";\n\n/**\n * Render a template file with EJS\n */\nexport async function renderTemplate(\n templatePath: string,\n data: Record<string, unknown>\n): Promise<string> {\n const template = await fs.readFile(templatePath, \"utf-8\");\n return ejs.render(template, data);\n}\n\n/**\n * Write a file with directory creation\n */\nexport async function writeFile(\n filePath: string,\n content: string\n): Promise<void> {\n await fs.ensureDir(path.dirname(filePath));\n await fs.writeFile(filePath, content, \"utf-8\");\n}\n\n/**\n * Get the templates directory\n * Works in both development and production (bundled) environments\n */\nexport function getTemplatesDir(): string {\n // Try common locations\n const locations = [\n path.join(__dirname, \"../../templates\"), // Development\n path.join(__dirname, \"../templates\"), // Production (dist/)\n path.join(process.cwd(), \"templates\"), // Fallback\n path.join(process.cwd(), \"packages/cli/templates\"), // Monorepo\n ];\n\n for (const location of locations) {\n if (fs.existsSync(location)) {\n return location;\n }\n }\n\n throw new Error(\"Templates directory not found\");\n}\n\n/**\n * Copy template directory\n */\nexport async function copyTemplate(\n templateName: string,\n targetDir: string,\n data: Record<string, unknown>\n): Promise<void> {\n // Get template directory from CLI package\n const templatesDir = getTemplatesDir();\n const templateDir = path.join(templatesDir, templateName);\n\n if (!fs.existsSync(templateDir)) {\n throw new Error(\n `Template \"${templateName}\" not found at ${templateDir}. Available templates: ${fs.readdirSync(templatesDir).join(\", \")}`\n );\n }\n\n await fs.ensureDir(targetDir);\n\n const files = await fs.readdir(templateDir);\n\n for (const file of files) {\n const templatePath = path.join(templateDir, file);\n const targetPath = path.join(targetDir, file);\n\n const stat = await fs.stat(templatePath);\n\n if (stat.isDirectory()) {\n // Recursively copy directories\n await copyTemplateDir(templatePath, targetPath, data);\n } else if (file.endsWith(\".ejs\")) {\n // Render EJS template\n const content = await renderTemplate(templatePath, data);\n const outputPath = targetPath.replace(/\\.ejs$/, \"\");\n await writeFile(outputPath, content);\n } else {\n // Copy file as-is\n await fs.copy(templatePath, targetPath);\n }\n }\n}\n\n/**\n * Internal helper to copy a template directory recursively\n */\nasync function copyTemplateDir(\n templateDir: string,\n targetDir: string,\n data: Record<string, unknown>\n): Promise<void> {\n await fs.ensureDir(targetDir);\n\n const files = await fs.readdir(templateDir);\n\n for (const file of files) {\n const templatePath = path.join(templateDir, file);\n const targetPath = path.join(targetDir, file);\n\n const stat = await fs.stat(templatePath);\n\n if (stat.isDirectory()) {\n await copyTemplateDir(templatePath, targetPath, data);\n } else if (file.endsWith(\".ejs\")) {\n // Render EJS template\n const content = await renderTemplate(templatePath, data);\n const outputPath = targetPath.replace(/\\.ejs$/, \"\");\n await writeFile(outputPath, content);\n } else {\n // Copy file as-is\n await fs.copy(templatePath, targetPath);\n }\n }\n}\n\n/**\n * Get project root directory\n */\nexport function getProjectRoot(): string {\n let currentDir = process.cwd();\n\n // Look for package.json with workspace config or themes directory\n while (currentDir !== path.parse(currentDir).root) {\n const packageJsonPath = path.join(currentDir, \"package.json\");\n\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = fs.readJsonSync(packageJsonPath);\n\n // Check if this is the root (has workspaces, src/themes, or themes)\n if (\n packageJson.workspaces ||\n fs.existsSync(path.join(currentDir, \"src/themes\")) ||\n fs.existsSync(path.join(currentDir, \"themes\"))\n ) {\n return currentDir;\n }\n }\n\n currentDir = path.dirname(currentDir);\n }\n\n return process.cwd();\n}\n\n/**\n * Get themes directory\n */\nexport function getThemesDir(): string {\n const root = getProjectRoot();\n if (fs.existsSync(path.join(root, \"themes\")))\n return path.join(root, \"themes\");\n if (fs.existsSync(path.join(root, \"src/themes\")))\n return path.join(root, \"src/themes\");\n // Standalone theme: parent dir acts as themes dir\n return path.dirname(root);\n}\n\n/**\n * Get features directory\n */\nexport function getFeaturesDir(): string {\n return path.join(getProjectRoot(), \"src/features\");\n}\n\n/**\n * Check if running in OneX project\n */\nexport function isOneXProject(): boolean {\n const root = getProjectRoot();\n return (\n fs.existsSync(path.join(root, \"themes\")) ||\n fs.existsSync(path.join(root, \"src/themes\")) ||\n fs.existsSync(path.join(root, \"theme.config.ts\")) ||\n fs.existsSync(path.join(root, \"bundle-entry.ts\"))\n );\n}\n\n/**\n * Ensure running in OneX project\n */\nexport function ensureOneXProject(): void {\n if (!isOneXProject()) {\n logger.error(\n \"Not in a OneX project. Please run this command from a OneX project root.\"\n );\n process.exit(1);\n }\n}\n\n/**\n * List available themes\n */\nexport function listThemes(): string[] {\n const themesDir = getThemesDir();\n\n if (!fs.existsSync(themesDir)) {\n return [];\n }\n\n return fs.readdirSync(themesDir).filter((name) => {\n const themePath = path.join(themesDir, name);\n return (\n fs.statSync(themePath).isDirectory() &&\n (fs.existsSync(path.join(themePath, \"theme.config.ts\")) ||\n fs.existsSync(path.join(themePath, \"bundle-entry.ts\")) ||\n fs.existsSync(path.join(themePath, \"manifest.ts\")))\n );\n });\n}\n\n/**\n * Check if theme exists\n */\nexport function themeExists(themeName: string): boolean {\n const themePath = path.join(getThemesDir(), themeName);\n return (\n fs.existsSync(themePath) &&\n (fs.existsSync(path.join(themePath, \"theme.config.ts\")) ||\n fs.existsSync(path.join(themePath, \"bundle-entry.ts\")) ||\n fs.existsSync(path.join(themePath, \"manifest.ts\")))\n );\n}\n\n/**\n * Detect package manager (npm, yarn, pnpm, bun)\n */\nexport function detectPackageManager(): \"npm\" | \"yarn\" | \"pnpm\" | \"bun\" {\n // Check if running with specific package manager\n const userAgent = process.env.npm_config_user_agent || \"\";\n\n if (userAgent.includes(\"pnpm\")) return \"pnpm\";\n if (userAgent.includes(\"yarn\")) return \"yarn\";\n if (userAgent.includes(\"bun\")) return \"bun\";\n\n // Check for lock files in cwd\n const cwd = process.cwd();\n if (fs.existsSync(path.join(cwd, \"pnpm-lock.yaml\"))) return \"pnpm\";\n if (fs.existsSync(path.join(cwd, \"yarn.lock\"))) return \"yarn\";\n if (fs.existsSync(path.join(cwd, \"bun.lockb\"))) return \"bun\";\n\n // Default to npm\n return \"npm\";\n}\n\n/**\n * Install dependencies in a directory\n */\nexport async function installDependencies(\n projectPath: string,\n packageManager: \"npm\" | \"yarn\" | \"pnpm\" | \"bun\" = \"npm\"\n): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n const installCmd =\n packageManager === \"yarn\" ? \"yarn\" : `${packageManager} install`;\n\n execSync(installCmd, {\n cwd: projectPath,\n stdio: \"inherit\",\n });\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n","/**\n * CLI Auth Utilities\n * Token storage, refresh, and API authentication for onexthm CLI.\n */\n\nimport fs from \"fs-extra\";\nimport path from \"path\";\nimport os from \"os\";\nimport crypto from \"crypto\";\n\nconst AUTH_DIR = path.join(os.homedir(), \".onexthm\");\nconst AUTH_FILE = path.join(AUTH_DIR, \"auth.json\");\n\nexport interface AuthTokens {\n accessToken: string;\n idToken: string;\n refreshToken: string;\n expiresAt: number; // Unix timestamp (seconds)\n user: {\n email: string;\n name?: string;\n companyId?: string;\n userId?: string;\n };\n}\n\n/**\n * Get the Platform API base URL for auth/login.\n * Only ONEXTHM_API_URL is honoured — NEXT_PUBLIC_API_URL is a theme-facing\n * variable (storefront / preview) and must never bleed into CLI platform calls.\n */\nexport function getApiUrl(): string {\n return process.env.ONEXTHM_API_URL || \"https://platform-dev.onexeos.com\";\n}\n\n/**\n * Save auth tokens to disk.\n */\nexport async function saveAuthTokens(tokens: AuthTokens): Promise<void> {\n await fs.ensureDir(AUTH_DIR);\n\n // Simple encryption using machine-specific key\n const key = getMachineKey();\n const data = JSON.stringify(tokens);\n const encrypted = encrypt(data, key);\n\n await fs.writeFile(AUTH_FILE, encrypted, \"utf-8\");\n}\n\n/**\n * Load auth tokens from disk. Returns null if not logged in or expired.\n */\nexport function loadAuthTokens(): AuthTokens | null {\n try {\n if (!fs.existsSync(AUTH_FILE)) return null;\n\n const encrypted = fs.readFileSync(AUTH_FILE, \"utf-8\");\n const key = getMachineKey();\n const data = decrypt(encrypted, key);\n\n return JSON.parse(data) as AuthTokens;\n } catch {\n return null;\n }\n}\n\n/**\n * Clear stored auth tokens.\n */\nexport async function clearAuthTokens(): Promise<void> {\n try {\n await fs.remove(AUTH_FILE);\n } catch {\n // Ignore if file doesn't exist\n }\n}\n\n/**\n * Check if tokens are expired (with 5-minute buffer so long operations\n * like large uploads don't race to the expiry boundary).\n */\nexport function isTokenExpired(tokens: AuthTokens): boolean {\n return Date.now() / 1000 > tokens.expiresAt - 300;\n}\n\n/**\n * Get valid tokens — auto-refreshes if expired.\n */\nexport async function getValidTokens(): Promise<AuthTokens | null> {\n const tokens = loadAuthTokens();\n if (!tokens) return null;\n\n if (!isTokenExpired(tokens)) return tokens;\n\n // Try to refresh\n try {\n const apiUrl = getApiUrl();\n const response = await fetch(`${apiUrl}/auth/refresh`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ refresh_token: tokens.refreshToken }),\n });\n\n if (!response.ok) {\n // Refresh failed — clear tokens\n await clearAuthTokens();\n return null;\n }\n\n const data = await response.json();\n // Unwrap gateway envelope\n const body = data.statusCode ? data.body : data;\n\n // If the refresh response has no new IdToken the session is dead — force re-login\n if (!body.IdToken) {\n await clearAuthTokens();\n return null;\n }\n\n const refreshed: AuthTokens = {\n ...tokens,\n accessToken: body.AccessToken || tokens.accessToken,\n idToken: body.IdToken,\n expiresAt: Math.floor(Date.now() / 1000) + (body.ExpiresIn || 3600),\n };\n\n await saveAuthTokens(refreshed);\n return refreshed;\n } catch {\n await clearAuthTokens();\n return null;\n }\n}\n\n/**\n * Make an authenticated API request.\n */\nexport async function authenticatedFetch(\n url: string,\n init?: RequestInit\n): Promise<Response> {\n const tokens = await getValidTokens();\n if (!tokens) {\n throw new Error(\"Not logged in. Run: onexthm login\");\n }\n\n const headers = new Headers(init?.headers);\n headers.set(\"Authorization\", `Bearer ${tokens.idToken}`);\n headers.set(\"Content-Type\", \"application/json\");\n\n return fetch(url, { ...init, headers });\n}\n\n// ─── Machine-specific encryption ─────────────────────────────────\n\nfunction getMachineKey(): Buffer {\n let seed: string;\n\n if (process.platform === \"darwin\") {\n // macOS: hostname + username (lightweight, no subprocess)\n seed = `onexthm:${os.hostname()}:${os.userInfo().username}`;\n } else if (process.platform === \"linux\") {\n try {\n seed = `onexthm:${fs.readFileSync(\"/etc/machine-id\", \"utf-8\").trim()}`;\n } catch {\n seed = `onexthm:${os.hostname()}:${os.userInfo().username}`;\n }\n } else {\n seed = `onexthm:${os.hostname()}:${os.userInfo().username}`;\n }\n\n return crypto.createHash(\"sha256\").update(seed).digest();\n}\n\nfunction encrypt(text: string, key: Buffer): string {\n const iv = crypto.randomBytes(16);\n const cipher = crypto.createCipheriv(\"aes-256-gcm\", key, iv);\n let encrypted = cipher.update(text, \"utf-8\", \"hex\");\n encrypted += cipher.final(\"hex\");\n const tag = cipher.getAuthTag();\n return `${iv.toString(\"hex\")}:${tag.toString(\"hex\")}:${encrypted}`;\n}\n\nfunction decrypt(text: string, key: Buffer): string {\n const [ivHex, tagHex, encrypted] = text.split(\":\");\n const iv = Buffer.from(ivHex, \"hex\");\n const tag = Buffer.from(tagHex, \"hex\");\n const decipher = crypto.createDecipheriv(\"aes-256-gcm\", key, iv);\n decipher.setAuthTag(tag);\n let decrypted = decipher.update(encrypted, \"hex\", \"utf-8\");\n decrypted += decipher.final(\"utf-8\");\n return decrypted;\n}\n\n/**\n * Parse JWT claims from an IdToken.\n */\nexport function parseJwtClaims(idToken: string): Record<string, unknown> {\n try {\n const payload = idToken.split(\".\")[1];\n const decoded = Buffer.from(payload, \"base64url\").toString(\"utf-8\");\n return JSON.parse(decoded);\n } catch {\n return {};\n }\n}\n","import path from \"path\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport {\n validateName,\n toKebabCase,\n toPascalCase,\n getValidCategories,\n} from \"../utils/validators\";\nimport fs from \"fs-extra\";\nimport {\n ensureOneXProject,\n getThemesDir,\n listThemes,\n themeExists,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateSectionOptions {\n theme?: string;\n category?: string;\n template?: string;\n}\n\nexport async function createSectionCommand(\n name: string,\n options: CreateSectionOptions\n): Promise<void> {\n logger.header(\"Create New Section\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Auto-detect theme in standalone theme directory\n if (!options.theme) {\n const isStandaloneTheme = [\"theme.config.ts\", \"bundle-entry.ts\"].some((f) =>\n fs.existsSync(path.join(process.cwd(), f))\n );\n if (isStandaloneTheme) {\n options.theme = path.basename(process.cwd());\n }\n }\n\n // Validate and normalize name\n const sectionName = toKebabCase(name);\n if (!validateName(sectionName)) {\n logger.error(\n `Invalid section name: ${sectionName}. Use kebab-case (e.g., hero, featured-products)`\n );\n process.exit(1);\n }\n\n // Prompt for missing options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"theme\",\n message: \"Which theme should this section belong to?\",\n choices: listThemes(),\n when: !options.theme,\n },\n {\n type: \"list\",\n name: \"category\",\n message: \"What category is this section?\",\n choices: getValidCategories(),\n when: !options.category,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this section:\",\n default: toPascalCase(sectionName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Section description:\",\n default: `${toPascalCase(sectionName)} section`,\n },\n {\n type: \"confirm\",\n name: \"createTemplate\",\n message: \"Create a default template variant?\",\n default: true,\n },\n ]);\n\n const themeName = options.theme || answers.theme;\n const category = options.category || answers.category;\n const displayName = answers.displayName;\n const description = answers.description;\n const createTemplate = answers.createTemplate;\n\n // Validate theme exists\n if (!themeExists(themeName)) {\n logger.error(`Theme \"${themeName}\" does not exist.`);\n process.exit(1);\n }\n\n // Prepare data for templates\n const data = {\n sectionName,\n sectionNamePascal: toPascalCase(sectionName),\n themeName,\n category,\n displayName,\n description,\n };\n\n logger.startSpinner(\"Creating section files...\");\n\n try {\n const themePath = path.join(getThemesDir(), themeName);\n const sectionPath = path.join(themePath, \"sections\", sectionName);\n\n // Create section schema file\n const schemaContent = generateSectionSchema(data);\n await writeFile(\n path.join(sectionPath, `${sectionName}.schema.ts`),\n schemaContent\n );\n\n // Create default template if requested\n if (createTemplate) {\n const templateContent = generateSectionTemplate(data);\n await writeFile(\n path.join(sectionPath, `${sectionName}-default.tsx`),\n templateContent\n );\n }\n\n // Create index file\n const indexContent = generateSectionIndex(data, createTemplate);\n await writeFile(path.join(sectionPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Section files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(sectionPath, `${sectionName}.schema.ts`))}`\n );\n if (createTemplate) {\n logger.log(\n ` 2. Edit template: ${path.relative(process.cwd(), path.join(sectionPath, `${sectionName}-default.tsx`))}`\n );\n }\n logger.log(\n ` 3. Add to theme manifest: ${path.relative(process.cwd(), path.join(themePath, \"manifest.ts\"))}`\n );\n logger.newLine();\n logger.success(\"Section created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create section\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateSectionSchema(data: {\n sectionName: string;\n sectionNamePascal: string;\n category: string;\n displayName: string;\n description: string;\n}): string {\n return `import type { SectionSchema } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Section Schema\n * ${data.description}\n */\nexport const ${data.sectionName}Schema: SectionSchema = {\n type: \"${data.sectionName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n category: \"${data.category}\",\n icon: \"layout\",\n\n // Available template variants\n templates: [\n {\n id: \"default\",\n name: \"Default\",\n description: \"Default ${data.sectionName} layout\",\n isDefault: true,\n },\n ],\n\n // Section-level settings\n settings: [\n {\n id: \"backgroundColor\",\n type: \"color\",\n label: \"Background Color\",\n category: \"style\",\n },\n {\n id: \"padding\",\n type: \"select\",\n label: \"Padding\",\n category: \"style\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n defaultValue: \"md\",\n },\n ],\n\n // Default settings values\n defaults: {\n backgroundColor: \"#ffffff\",\n padding: \"md\",\n },\n\n // Allowed blocks (optional)\n allowedBlocks: [],\n\n // Maximum number of instances on a page (optional)\n maxInstances: undefined,\n};\n`;\n}\n\nfunction generateSectionTemplate(data: {\n sectionName: string;\n sectionNamePascal: string;\n displayName: string;\n}): string {\n return `import React from \"react\";\nimport type { SectionComponentProps } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} - Default Template\n */\nexport function ${data.sectionNamePascal}Default({\n section,\n isEditing = false,\n}: SectionComponentProps) {\n const { settings = {} } = section;\n const backgroundColor = settings.backgroundColor as string || \"#ffffff\";\n const padding = settings.padding as string || \"md\";\n\n // Map padding values to Tailwind classes\n const paddingClasses = {\n none: \"\",\n sm: \"py-8\",\n md: \"py-16\",\n lg: \"py-24\",\n };\n\n return (\n <section\n className={\\`${data.sectionName}-section \\${paddingClasses[padding as keyof typeof paddingClasses] || paddingClasses.md}\\`}\n style={{ backgroundColor }}\n data-section-id={section.id}\n data-section-type={section.type}\n >\n <div className=\"container mx-auto px-4\">\n {/* TODO: Implement section content */}\n <div className=\"text-center\">\n <h2 className=\"text-3xl font-bold\">${data.displayName}</h2>\n <p className=\"mt-4 text-gray-600\">\n Start building your section here\n </p>\n </div>\n\n {/* Render blocks if any */}\n {section.blocks && section.blocks.length > 0 && (\n <div className=\"mt-8\">\n {/* TODO: Render blocks */}\n </div>\n )}\n\n {/* Render components if any */}\n {section.components && section.components.length > 0 && (\n <div className=\"mt-8\">\n {/* TODO: Render components */}\n </div>\n )}\n </div>\n </section>\n );\n}\n`;\n}\n\nfunction generateSectionIndex(\n data: { sectionName: string; sectionNamePascal: string },\n hasTemplate: boolean\n): string {\n return `/**\n * ${data.sectionNamePascal} Section\n */\n\nexport { ${data.sectionName}Schema } from \"./${data.sectionName}.schema\";\n${hasTemplate ? `export { ${data.sectionNamePascal}Default } from \"./${data.sectionName}-default\";` : \"\"}\n`;\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport { validateName, toKebabCase, toPascalCase } from \"../utils/validators\";\nimport {\n ensureOneXProject,\n getFeaturesDir,\n getThemesDir,\n listThemes,\n themeExists,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateBlockOptions {\n theme?: string;\n}\n\nexport async function createBlockCommand(\n name: string,\n options: CreateBlockOptions\n): Promise<void> {\n logger.header(\"Create New Block\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Auto-detect theme in standalone theme directory\n if (!options.theme) {\n const isStandaloneTheme = [\"theme.config.ts\", \"bundle-entry.ts\"].some((f) =>\n fs.existsSync(path.join(process.cwd(), f))\n );\n if (isStandaloneTheme) {\n options.theme = path.basename(process.cwd());\n }\n }\n\n // Validate and normalize name\n const blockName = toKebabCase(name);\n if (!validateName(blockName)) {\n logger.error(\n `Invalid block name: ${blockName}. Use kebab-case (e.g., product-card, testimonial-item)`\n );\n process.exit(1);\n }\n\n // Prompt for options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"scope\",\n message: \"Block scope:\",\n choices: [\n { name: \"Shared (available to all themes)\", value: \"shared\" },\n { name: \"Theme-specific\", value: \"theme\" },\n ],\n default: \"shared\",\n },\n {\n type: \"list\",\n name: \"theme\",\n message: \"Which theme?\",\n choices: listThemes(),\n when: (answers) => answers.scope === \"theme\" && !options.theme,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this block:\",\n default: toPascalCase(blockName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Block description:\",\n default: `${toPascalCase(blockName)} block`,\n },\n {\n type: \"confirm\",\n name: \"hasComponents\",\n message: \"Does this block contain components?\",\n default: true,\n },\n {\n type: \"confirm\",\n name: \"hasNestedBlocks\",\n message: \"Does this block support nested blocks?\",\n default: false,\n },\n ]);\n\n const scope = answers.scope;\n const themeName = options.theme || answers.theme;\n const displayName = answers.displayName;\n const description = answers.description;\n const hasComponents = answers.hasComponents;\n const hasNestedBlocks = answers.hasNestedBlocks;\n\n // Validate theme if theme-specific\n if (scope === \"theme\" && !themeExists(themeName)) {\n logger.error(`Theme \"${themeName}\" does not exist.`);\n process.exit(1);\n }\n\n // Prepare data for templates\n const data = {\n blockName,\n blockNamePascal: toPascalCase(blockName),\n displayName,\n description,\n hasComponents,\n hasNestedBlocks,\n scope,\n themeName,\n };\n\n logger.startSpinner(\"Creating block files...\");\n\n try {\n const blockPath =\n scope === \"shared\"\n ? path.join(getFeaturesDir(), \"blocks\", blockName)\n : path.join(getThemesDir(), themeName, \"blocks\", blockName);\n\n // Create block schema file\n const schemaContent = generateBlockSchema(data);\n await writeFile(\n path.join(blockPath, `${blockName}.schema.ts`),\n schemaContent\n );\n\n // Create block component file\n const componentContent = generateBlockComponent(data);\n await writeFile(path.join(blockPath, `${blockName}.tsx`), componentContent);\n\n // Create index file\n const indexContent = generateBlockIndex(data);\n await writeFile(path.join(blockPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Block files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(blockPath, `${blockName}.schema.ts`))}`\n );\n logger.log(\n ` 2. Edit component: ${path.relative(process.cwd(), path.join(blockPath, `${blockName}.tsx`))}`\n );\n logger.log(\n ` 3. Register in block registry: src/lib/registry/block-registry.ts`\n );\n logger.newLine();\n logger.success(\"Block created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create block\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateBlockSchema(data: {\n blockName: string;\n blockNamePascal: string;\n displayName: string;\n description: string;\n hasComponents: boolean;\n hasNestedBlocks: boolean;\n}): string {\n return `import type { BlockDefinition } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Block Schema\n * ${data.description}\n */\nexport const ${data.blockName}Definition: BlockDefinition = {\n type: \"${data.blockName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n icon: \"square\",\n\n // Block settings\n settings: [\n {\n id: \"title\",\n type: \"text\",\n label: \"Title\",\n category: \"content\",\n },\n {\n id: \"alignment\",\n type: \"select\",\n label: \"Alignment\",\n category: \"style\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n { label: \"Right\", value: \"right\" },\n ],\n defaultValue: \"left\",\n },\n ],\n\n // Default settings values\n defaults: {\n title: \"${data.displayName}\",\n alignment: \"left\",\n },\n\n ${data.hasComponents ? `// This block can contain components\\n allowsComponents: true,` : \"\"}\n ${data.hasNestedBlocks ? `// This block can contain nested blocks\\n allowsNestedBlocks: true,` : \"\"}\n};\n`;\n}\n\nfunction generateBlockComponent(data: {\n blockName: string;\n blockNamePascal: string;\n displayName: string;\n hasComponents: boolean;\n hasNestedBlocks: boolean;\n}): string {\n return `import React from \"react\";\nimport type { BlockComponentProps } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Block Component\n */\nexport function ${data.blockNamePascal}({\n block,\n isEditing = false,\n}: BlockComponentProps) {\n const { settings = {} } = block;\n const title = settings.title as string || \"${data.displayName}\";\n const alignment = settings.alignment as string || \"left\";\n\n const alignmentClasses = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n };\n\n return (\n <div\n className={\\`${data.blockName}-block \\${alignmentClasses[alignment as keyof typeof alignmentClasses]}\\`}\n data-block-id={block.id}\n data-block-type={block.type}\n >\n {title && <h3 className=\"text-xl font-semibold mb-4\">{title}</h3>}\n\n {/* TODO: Implement block content */}\n <div className=\"block-content\">\n <p className=\"text-gray-600\">Block content goes here</p>\n </div>\n\n ${\n data.hasComponents\n ? `{/* Render components if any */}\n {block.components && block.components.length > 0 && (\n <div className=\"block-components mt-4\">\n {/* TODO: Render components using ComponentRenderer */}\n </div>\n )}`\n : \"\"\n }\n\n ${\n data.hasNestedBlocks\n ? `{/* Render nested blocks if any */}\n {block.blocks && block.blocks.length > 0 && (\n <div className=\"nested-blocks mt-4\">\n {/* TODO: Render nested blocks using BlockRenderer */}\n </div>\n )}`\n : \"\"\n }\n </div>\n );\n}\n`;\n}\n\nfunction generateBlockIndex(data: {\n blockName: string;\n blockNamePascal: string;\n}): string {\n return `/**\n * ${data.blockNamePascal} Block\n */\n\nexport { ${data.blockName}Definition } from \"./${data.blockName}.schema\";\nexport { ${data.blockNamePascal} } from \"./${data.blockName}\";\n`;\n}\n","import path from \"path\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport { validateName, toKebabCase, toPascalCase } from \"../utils/validators\";\nimport {\n ensureOneXProject,\n getFeaturesDir,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateComponentOptions {\n type?: string;\n}\n\nexport async function createComponentCommand(\n name: string,\n options: CreateComponentOptions\n): Promise<void> {\n logger.header(\"Create New Component\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Validate and normalize name\n const componentName = toKebabCase(name);\n if (!validateName(componentName)) {\n logger.error(\n `Invalid component name: ${componentName}. Use kebab-case (e.g., button, icon-badge)`\n );\n process.exit(1);\n }\n\n // Prompt for options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"componentType\",\n message: \"Component type:\",\n choices: [\n { name: \"UI Component (button, badge, etc.)\", value: \"ui\" },\n { name: \"Form Component (input, select, etc.)\", value: \"form\" },\n { name: \"Layout Component (container, grid, etc.)\", value: \"layout\" },\n {\n name: \"Content Component (heading, paragraph, etc.)\",\n value: \"content\",\n },\n ],\n when: !options.type,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this component:\",\n default: toPascalCase(componentName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Component description:\",\n default: `${toPascalCase(componentName)} component`,\n },\n ]);\n\n const componentType = options.type || answers.componentType;\n const displayName = answers.displayName;\n const description = answers.description;\n\n // Prepare data for templates\n const data = {\n componentName,\n componentNamePascal: toPascalCase(componentName),\n componentType,\n displayName,\n description,\n };\n\n logger.startSpinner(\"Creating component files...\");\n\n try {\n const componentPath = path.join(\n getFeaturesDir(),\n \"components\",\n componentName\n );\n\n // Create component schema file\n const schemaContent = generateComponentSchema(data);\n await writeFile(\n path.join(componentPath, `${componentName}.schema.ts`),\n schemaContent\n );\n\n // Create component file\n const componentContent = generateComponent(data);\n await writeFile(\n path.join(componentPath, `${componentName}.tsx`),\n componentContent\n );\n\n // Create index file\n const indexContent = generateComponentIndex(data);\n await writeFile(path.join(componentPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Component files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(componentPath, `${componentName}.schema.ts`))}`\n );\n logger.log(\n ` 2. Edit component: ${path.relative(process.cwd(), path.join(componentPath, `${componentName}.tsx`))}`\n );\n logger.log(\n ` 3. Register in component registry: src/lib/registry/component-registry.ts`\n );\n logger.newLine();\n logger.success(\"Component created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create component\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateComponentSchema(data: {\n componentName: string;\n displayName: string;\n description: string;\n componentType: string;\n}): string {\n return `import type { ComponentDefinition } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Component Schema\n * ${data.description}\n */\nexport const ${data.componentName}Definition: ComponentDefinition = {\n type: \"${data.componentName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n category: \"${data.componentType}\",\n icon: \"square\",\n\n // Content fields (what the component displays)\n contentFields: [\n {\n id: \"text\",\n type: \"text\",\n label: \"Text\",\n defaultValue: \"${data.displayName}\",\n },\n ],\n\n // Style fields (how the component looks)\n styleFields: [\n {\n id: \"variant\",\n type: \"select\",\n label: \"Variant\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Primary\", value: \"primary\" },\n { label: \"Secondary\", value: \"secondary\" },\n ],\n defaultValue: \"default\",\n },\n {\n id: \"size\",\n type: \"select\",\n label: \"Size\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n defaultValue: \"md\",\n },\n ],\n\n // Default content values\n defaultContent: {\n text: \"${data.displayName}\",\n },\n\n // Default style values\n defaultStyle: {\n variant: \"default\",\n size: \"md\",\n },\n};\n`;\n}\n\nfunction generateComponent(data: {\n componentName: string;\n componentNamePascal: string;\n displayName: string;\n}): string {\n return `import React from \"react\";\nimport type { ComponentProps } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Component\n */\nexport function ${data.componentNamePascal}({\n component,\n isEditing = false,\n}: ComponentProps) {\n const { content = {}, style = {} } = component;\n const text = content.text as string || \"${data.displayName}\";\n const variant = style.variant as string || \"default\";\n const size = style.size as string || \"md\";\n\n // Variant classes\n const variantClasses = {\n default: \"bg-gray-100 text-gray-900\",\n primary: \"bg-blue-600 text-white\",\n secondary: \"bg-gray-600 text-white\",\n };\n\n // Size classes\n const sizeClasses = {\n sm: \"text-sm px-3 py-1\",\n md: \"text-base px-4 py-2\",\n lg: \"text-lg px-6 py-3\",\n };\n\n return (\n <div\n className={\\`${data.componentName} \\${variantClasses[variant as keyof typeof variantClasses]} \\${sizeClasses[size as keyof typeof sizeClasses]} inline-block rounded\\`}\n data-component-id={component.id}\n data-component-type={component.type}\n >\n {text}\n </div>\n );\n}\n`;\n}\n\nfunction generateComponentIndex(data: {\n componentName: string;\n componentNamePascal: string;\n}): string {\n return `/**\n * ${data.componentNamePascal} Component\n */\n\nexport { ${data.componentName}Definition } from \"./${data.componentName}.schema\";\nexport { ${data.componentNamePascal} } from \"./${data.componentName}\";\n`;\n}\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport chalk from \"chalk\";\nimport { logger } from \"../utils/logger\";\nimport {\n ensureOneXProject,\n getThemesDir,\n getFeaturesDir,\n listThemes,\n} from \"../utils/file-helpers\";\n\ninterface ListOptions {\n sections?: boolean;\n blocks?: boolean;\n components?: boolean;\n theme?: string;\n}\n\nexport async function listCommand(options: ListOptions): Promise<void> {\n logger.header(\"OneX Project Inventory\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n const showAll = !options.sections && !options.blocks && !options.components;\n\n if (showAll || options.sections) {\n await listSections(options.theme);\n }\n\n if (showAll || options.blocks) {\n await listBlocks(options.theme);\n }\n\n if (showAll || options.components) {\n await listComponents();\n }\n\n if (showAll) {\n await listThemesInfo();\n }\n}\n\nasync function listSections(themeFilter?: string): Promise<void> {\n logger.section(\"📄 Sections\");\n\n const themes = themeFilter ? [themeFilter] : listThemes();\n\n if (themes.length === 0) {\n logger.warning(\"No themes found\");\n return;\n }\n\n for (const theme of themes) {\n const sectionsDir = path.join(getThemesDir(), theme, \"sections\");\n\n if (!fs.existsSync(sectionsDir)) {\n continue;\n }\n\n const sections = fs.readdirSync(sectionsDir).filter((name) => {\n const sectionPath = path.join(sectionsDir, name);\n return (\n fs.statSync(sectionPath).isDirectory() &&\n fs.existsSync(path.join(sectionPath, \"index.ts\"))\n );\n });\n\n if (sections.length > 0) {\n logger.log(chalk.cyan(`\\n ${theme}:`));\n sections.forEach((section) => {\n logger.log(` • ${section}`);\n });\n }\n }\n\n logger.newLine();\n}\n\nasync function listBlocks(themeFilter?: string): Promise<void> {\n logger.section(\"🧱 Blocks\");\n\n // List shared blocks\n const sharedBlocksDir = path.join(getFeaturesDir(), \"blocks\");\n if (fs.existsSync(sharedBlocksDir)) {\n const sharedBlocks = fs.readdirSync(sharedBlocksDir).filter((name) => {\n const blockPath = path.join(sharedBlocksDir, name);\n return (\n fs.statSync(blockPath).isDirectory() &&\n fs.existsSync(path.join(blockPath, \"index.ts\"))\n );\n });\n\n if (sharedBlocks.length > 0) {\n logger.log(chalk.cyan(\"\\n Shared:\"));\n sharedBlocks.forEach((block) => {\n logger.log(` • ${block}`);\n });\n }\n }\n\n // List theme-specific blocks\n const themes = themeFilter ? [themeFilter] : listThemes();\n\n for (const theme of themes) {\n const blocksDir = path.join(getThemesDir(), theme, \"blocks\");\n\n if (!fs.existsSync(blocksDir)) {\n continue;\n }\n\n const blocks = fs.readdirSync(blocksDir).filter((name) => {\n const blockPath = path.join(blocksDir, name);\n return (\n fs.statSync(blockPath).isDirectory() &&\n fs.existsSync(path.join(blockPath, \"index.ts\"))\n );\n });\n\n if (blocks.length > 0) {\n logger.log(chalk.cyan(`\\n ${theme}:`));\n blocks.forEach((block) => {\n logger.log(` • ${block}`);\n });\n }\n }\n\n logger.newLine();\n}\n\nasync function listComponents(): Promise<void> {\n logger.section(\"⚙️ Components\");\n\n const componentsDir = path.join(getFeaturesDir(), \"components\");\n\n if (!fs.existsSync(componentsDir)) {\n logger.warning(\"No components directory found\");\n return;\n }\n\n const components = fs.readdirSync(componentsDir).filter((name) => {\n const componentPath = path.join(componentsDir, name);\n return (\n fs.statSync(componentPath).isDirectory() &&\n fs.existsSync(path.join(componentPath, \"index.ts\"))\n );\n });\n\n if (components.length === 0) {\n logger.warning(\"No components found\");\n return;\n }\n\n logger.log(\"\");\n components.forEach((component) => {\n logger.log(` • ${component}`);\n });\n\n logger.newLine();\n}\n\nasync function listThemesInfo(): Promise<void> {\n logger.section(\"🎨 Themes\");\n\n const themes = listThemes();\n\n if (themes.length === 0) {\n logger.warning(\"No themes found\");\n return;\n }\n\n logger.log(\"\");\n\n for (const theme of themes) {\n const themeDir = path.join(getThemesDir(), theme);\n const candidates = [\"theme.config.ts\", \"bundle-entry.ts\", \"manifest.ts\"];\n let manifestContent = \"\";\n for (const candidate of candidates) {\n const candidatePath = path.join(themeDir, candidate);\n if (fs.existsSync(candidatePath)) {\n manifestContent = fs.readFileSync(candidatePath, \"utf-8\");\n break;\n }\n }\n\n // Try to extract theme info from manifest\n const nameMatch = manifestContent.match(/name:\\s*[\"'](.+)[\"']/);\n const versionMatch = manifestContent.match(/version:\\s*[\"'](.+)[\"']/);\n const descMatch = manifestContent.match(/description:\\s*[\"'](.+)[\"']/);\n\n const displayName = nameMatch ? nameMatch[1] : theme;\n const version = versionMatch ? versionMatch[1] : \"unknown\";\n const description = descMatch ? descMatch[1] : \"\";\n\n logger.log(chalk.cyan(` ${displayName}`) + chalk.gray(` (v${version})`));\n if (description) {\n logger.log(chalk.gray(` ${description}`));\n }\n }\n\n logger.newLine();\n}\n","import { spawn } from \"child_process\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport { logger } from \"../utils/logger\";\nimport { getThemesDir } from \"../utils/file-helpers\";\n\ninterface BuildOptions {\n theme?: string;\n production?: boolean;\n watch?: boolean;\n}\n\nexport async function buildCommand(options: BuildOptions): Promise<void> {\n logger.header(\"Build Theme\");\n\n let themePath: string;\n let themeName: string;\n\n // Determine theme to build\n if (options.theme) {\n themeName = options.theme;\n // Try to find theme in workspace first, otherwise use current directory\n try {\n const workspaceThemePath = path.join(getThemesDir(), themeName);\n if (fs.existsSync(workspaceThemePath)) {\n themePath = workspaceThemePath;\n } else {\n themePath = path.join(process.cwd(), themeName);\n }\n } catch {\n // Not in a workspace, use current directory\n themePath = path.join(process.cwd(), themeName);\n }\n\n if (!fs.existsSync(themePath)) {\n logger.error(`Theme \"${themeName}\" not found.`);\n process.exit(1);\n }\n } else {\n // Check if we're in a theme directory\n const isThemeDir = [\n \"theme.config.ts\",\n \"bundle-entry.ts\",\n \"manifest.ts\",\n ].some((f) => fs.existsSync(path.join(process.cwd(), f)));\n if (isThemeDir) {\n themePath = process.cwd();\n themeName = path.basename(themePath);\n logger.info(`Building current theme: ${themeName}`);\n } else {\n logger.error(\n \"Not in a theme directory and no --theme specified. Run from theme root or use --theme flag.\"\n );\n process.exit(1);\n }\n }\n\n const packageJsonPath = path.join(themePath, \"package.json\");\n const hasPkgJson = fs.existsSync(packageJsonPath);\n\n if (!hasPkgJson) {\n logger.warning(\n \"No package.json found in theme. Skipping build (themes in monorepo are built via turbo).\"\n );\n logger.newLine();\n logger.info(\"To build all packages, run:\");\n logger.log(\" pnpm turbo build\");\n logger.newLine();\n logger.info(\"To build specific theme components:\");\n logger.log(\" pnpm turbo build --filter=./src/themes/*\");\n return;\n }\n\n // Run build steps\n logger.newLine();\n logger.section(\"Build Steps\");\n\n // Step 1: Type Check\n logger.startSpinner(\"Running type check...\");\n const typeCheckSuccess = await runCommand(\"pnpm\", [\"type-check\"], themePath);\n\n if (!typeCheckSuccess) {\n logger.stopSpinner(false, \"Type check failed\");\n logger.error(\"Fix type errors before building.\");\n process.exit(1);\n }\n logger.stopSpinner(true, \"Type check passed\");\n\n // Step 2: Lint\n logger.startSpinner(\"Running linter...\");\n const lintSuccess = await runCommand(\"pnpm\", [\"lint\"], themePath);\n\n if (!lintSuccess) {\n logger.stopSpinner(false, \"Lint failed\");\n logger.error(\"Fix lint errors before building.\");\n process.exit(1);\n }\n logger.stopSpinner(true, \"Lint passed\");\n\n // Step 3: Build\n // Detect if theme's build script would cause recursion (e.g., \"onexthm build\")\n const pkgJson = fs.readJsonSync(packageJsonPath);\n const buildScript = pkgJson.scripts?.build || \"\";\n const isRecursive =\n buildScript.includes(\"onexthm build\") ||\n buildScript.includes(\"onex build\") ||\n buildScript.includes(\"onex-cli build\");\n\n logger.startSpinner(\n options.watch ? \"Building (watch mode)...\" : \"Building...\"\n );\n\n let buildSuccess: boolean;\n\n if (isRecursive) {\n // Standalone theme: use embedded esbuild compilation\n const { compileStandaloneTheme } = await import(\"../utils/compile-theme\");\n buildSuccess = await compileStandaloneTheme(themePath, themeName);\n } else {\n // Monorepo: use existing pnpm build\n const buildArgs = options.watch ? [\"build\", \"--watch\"] : [\"build\"];\n buildSuccess = await runCommand(\"pnpm\", buildArgs, themePath);\n }\n\n if (!buildSuccess && !options.watch) {\n logger.stopSpinner(false, \"Build failed\");\n process.exit(1);\n }\n\n if (!options.watch) {\n logger.stopSpinner(true, \"Build complete\");\n\n // Show output location\n logger.newLine();\n logger.success(\"✓ Theme built successfully!\");\n logger.newLine();\n logger.info(`Theme: ${themeName}`);\n\n const distPath = path.join(themePath, \"dist\");\n if (fs.existsSync(distPath)) {\n logger.log(`Output: ${path.relative(process.cwd(), distPath)}`);\n\n // Show build stats\n const files = fs.readdirSync(distPath);\n logger.log(`Files: ${files.length}`);\n }\n }\n}\n\n/**\n * Run a command and return success status\n */\nfunction runCommand(\n command: string,\n args: string[],\n cwd: string\n): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn(command, args, {\n cwd,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n shell: true,\n });\n\n let stdout = \"\";\n let stderr = \"\";\n\n proc.stdout.on(\"data\", (data) => {\n stdout += data.toString();\n });\n proc.stderr.on(\"data\", (data) => {\n stderr += data.toString();\n });\n\n proc.on(\"close\", (code) => {\n if (code !== 0) {\n // Show actual errors to the developer\n const output = (stderr + stdout).trim();\n if (output) {\n logger.newLine();\n for (const line of output.split(\"\\n\")) {\n const t = line.trim();\n if (!t) continue;\n if (\n t.includes(\"error\") ||\n t.includes(\"Error\") ||\n t.includes(\"TS\")\n ) {\n logger.log(` ❌ ${t}`);\n } else if (t.includes(\"warning\") || t.includes(\"Warning\")) {\n logger.log(` ⚠️ ${t}`);\n } else {\n logger.log(` ${t}`);\n }\n }\n }\n }\n resolve(code === 0);\n });\n\n proc.on(\"error\", () => {\n resolve(false);\n });\n });\n}\n","/**\n * `onexthm upload` is deprecated.\n *\n * It used to push bundle.zip / source.zip / latest.json directly to S3 via\n * the AWS SDK. The platform no longer exposes themes via direct S3 access,\n * so this path is broken by construction. The canonical replacement is\n * `onexthm publish`, which:\n *\n * 1. Authenticates against the platform (`onexthm login`)\n * 2. Registers the theme + version through the API\n * 3. Receives presigned PUT URLs for bundle.zip, source.zip, and any\n * content-hashed assets\n * 4. Uploads everything via HTTP and confirms the publish\n *\n * This file is kept (rather than deleted) so existing CI scripts that call\n * `onexthm upload` get a clear migration message instead of \"command not\n * found\". After all consumers migrate, the command can be removed from\n * cli.ts entirely.\n */\n\nimport chalk from \"chalk\";\nimport { logger } from \"../utils/logger\";\n\ninterface UploadOptions {\n theme?: string;\n bucket?: string;\n version?: string;\n environment?: \"staging\" | \"production\";\n dryRun?: boolean;\n skipSource?: boolean;\n sourceDir?: string;\n}\n\nexport async function uploadCommand(_options: UploadOptions): Promise<void> {\n logger.header(\"Upload Theme to S3 — DEPRECATED\");\n console.log();\n console.log(\n chalk.yellow.bold(\n \"`onexthm upload` is deprecated and no longer functional.\"\n )\n );\n console.log();\n console.log(\n \"The platform no longer exposes themes via direct S3 access, so this\"\n );\n console.log(\n \"command can no longer reach the bucket. Use `onexthm publish` instead:\"\n );\n console.log();\n console.log(chalk.cyan(\" cd themes/your-theme\"));\n console.log(chalk.cyan(\" onexthm login # one-time, refreshes JWT\"));\n console.log(\n chalk.cyan(\" onexthm publish # builds + uploads + confirms\")\n );\n console.log();\n console.log(\n \"`publish` does everything this command did (build, version bump,\"\n );\n console.log(\n \"bundle + source upload) plus content-hashed asset upload, security\"\n );\n console.log(\"scanning, and atomic version registration in one step.\");\n console.log();\n process.exit(1);\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport AdmZip from \"adm-zip\";\nimport { logger } from \"../utils/logger\";\nimport { getApiUrl } from \"../utils/cli-auth\";\n\ninterface DownloadOptions {\n themeId?: string;\n version?: string;\n output?: string;\n /** @deprecated kept for backwards-compat with older scripts; ignored. */\n bucket?: string;\n /** @deprecated kept for backwards-compat with older scripts; ignored. */\n environment?: \"staging\" | \"production\";\n}\n\ninterface ThemeManifest {\n themeId: string;\n version: string;\n compiledAt: string;\n counts: {\n sections: number;\n blocks: number;\n schemas: number;\n };\n output: {\n entry: string;\n chunks: string[];\n assets: string[];\n };\n [key: string]: any;\n}\n\n/**\n * Unwrap an API Gateway envelope `{ statusCode, body }` into the inner body.\n * Returns the input unchanged if it's not an envelope.\n */\nfunction unwrapEnvelope<T = any>(raw: any): T {\n if (raw && typeof raw === \"object\" && \"statusCode\" in raw && \"body\" in raw) {\n return raw.body as T;\n }\n return raw as T;\n}\n\n/**\n * Resolve the latest version for a theme by calling the public website-api\n * `/versions` Lambda. Used when the caller passes `version=latest` (the\n * default for `pnpm dev` / CI scripts that don't pin a specific version).\n *\n * Replaces the legacy direct-S3 read of `themes/{themeId}/latest.json`.\n */\nasync function resolveLatestVersion(\n apiUrl: string,\n themeId: string\n): Promise<string> {\n const url = `${apiUrl}/website-api/themes/${encodeURIComponent(themeId)}/versions`;\n let response: Response;\n try {\n response = await fetch(url, { cache: \"no-store\" });\n } catch (err) {\n throw new Error(\n `Network error contacting ${url}: ${err instanceof Error ? err.message : \"unknown\"}`\n );\n }\n if (!response.ok) {\n throw new Error(\n `Version lookup failed for \"${themeId}\" (HTTP ${response.status})`\n );\n }\n const raw = await response.json();\n const data = unwrapEnvelope<{ latest_version?: string }>(raw);\n const latest = data?.latest_version;\n if (typeof latest !== \"string\" || latest.length === 0) {\n throw new Error(\n `Theme \"${themeId}\" has no published versions yet (no latest_version in response)`\n );\n }\n return latest;\n}\n\n/**\n * Download bundle.zip via the public website-api `/download` Lambda.\n * The response is either raw `application/zip` bytes or a JSON envelope\n * `{ statusCode, headers, body: <base64>, isBase64Encoded: true }`.\n * Both shapes are normalised here, mirroring the editor's bundle-loader.\n */\nasync function downloadBundleZip(\n apiUrl: string,\n themeId: string,\n version: string\n): Promise<Buffer> {\n const url = `${apiUrl}/website-api/themes/${encodeURIComponent(themeId)}/${encodeURIComponent(version)}/download`;\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `Bundle download failed for \"${themeId}@${version}\" (HTTP ${response.status})`\n );\n }\n\n const contentType = response.headers.get(\"content-type\") || \"\";\n\n if (contentType.includes(\"application/json\")) {\n // Gateway-wrapped envelope: { statusCode, headers, body: base64, isBase64Encoded }\n const raw = await response.json();\n const envelope =\n raw && typeof raw === \"object\" && \"statusCode\" in raw\n ? raw\n : { body: raw };\n const body = envelope.body;\n if (typeof body !== \"string\") {\n throw new Error(\n \"Unexpected /download response shape: expected base64 string in body\"\n );\n }\n return Buffer.from(body, \"base64\");\n }\n\n // Raw binary path\n const arrayBuffer = await response.arrayBuffer();\n return Buffer.from(arrayBuffer);\n}\n\n/**\n * Create compatibility files for module resolution.\n *\n * Creates sections-registry.js that re-exports from the bundle entry file\n * and a stable bundle-entry.js alias if the entry is content-hashed.\n */\nasync function createCompatibilityFiles(\n outputDir: string,\n manifest: ThemeManifest\n): Promise<void> {\n const entryFile = manifest.output?.entry || \"bundle-entry.js\";\n\n // If entry is content-hashed (e.g., bundle-entry-2d936738.js),\n // create a stable bundle-entry.js copy for import compatibility\n if (\n entryFile !== \"bundle-entry.js\" &&\n entryFile.startsWith(\"bundle-entry-\")\n ) {\n const hashedPath = path.join(outputDir, entryFile);\n const stablePath = path.join(outputDir, \"bundle-entry.js\");\n if (await fs.pathExists(hashedPath)) {\n await fs.copy(hashedPath, stablePath);\n // Also copy source map if it exists\n const mapPath = hashedPath + \".map\";\n if (await fs.pathExists(mapPath)) {\n await fs.copy(mapPath, stablePath + \".map\");\n }\n }\n }\n\n // Create sections-registry.js pointing to stable bundle-entry.js\n const sectionsRegistryPath = path.join(outputDir, \"sections-registry.js\");\n const content = `// Re-export all sections from bundle-entry\\n// This file exists to maintain compatibility with the import path\\nexport * from './bundle-entry.js';\\n`;\n await fs.writeFile(sectionsRegistryPath, content, \"utf-8\");\n\n // Create package.json with \"type\": \"module\" for ESM support\n const pkgJsonPath = path.join(outputDir, \"package.json\");\n await fs.writeFile(pkgJsonPath, '{\\n \"type\": \"module\"\\n}\\n', \"utf-8\");\n}\n\n/**\n * Show helpful error message when the download fails.\n * The new flow has zero AWS surface — most failures are network /\n * config / \"theme not yet published\" issues.\n */\nfunction showDownloadFailureHelp(themeId: string, apiUrl: string): void {\n console.log();\n logger.error(chalk.red.bold(\"Theme download failed\"));\n console.log();\n console.log(chalk.yellow(\"Possible reasons:\"));\n console.log(\n chalk.gray(\" 1. Theme has not been published yet (run `onexthm publish`)\")\n );\n console.log(\n chalk.gray(\n \" 2. Theme ID is wrong (typo in --theme-id or THEME_ID env var)\"\n )\n );\n console.log(\n chalk.gray(\" 3. API base URL is wrong or the website-api is unreachable\")\n );\n console.log();\n console.log(chalk.cyan.bold(\"To fix this:\"));\n console.log();\n console.log(chalk.white(\"1. Verify the theme is published:\"));\n console.log(\n chalk.gray(\n ` curl -s ${apiUrl}/website-api/themes/${themeId}/versions | jq .latest_version`\n )\n );\n console.log();\n console.log(chalk.white(\"2. Check API URL configuration:\"));\n console.log(chalk.gray(` Current API URL: ${apiUrl}`));\n console.log(\n chalk.gray(\" Override with NEXT_PUBLIC_API_URL or ONEXTHM_API_URL\")\n );\n console.log();\n console.log(chalk.white(\"3. Pin a specific version (CI/production):\"));\n console.log(\n chalk.gray(` THEME_VERSION=1.2.3 onexthm download --theme-id ${themeId}`)\n );\n console.log();\n}\n\n/**\n * Download a published theme via the website-api Lambda endpoints.\n *\n * This command no longer talks to S3 directly — the platform now serves\n * theme content through HTTP-only endpoints, so AWS credentials, bucket\n * names, and region settings are no longer required. The legacy\n * `--bucket` and `--environment` flags are accepted but ignored for\n * backwards compatibility with existing scripts.\n */\nexport async function downloadCommand(options: DownloadOptions): Promise<void> {\n logger.header(\"Download Theme\");\n\n const spinner = ora(\"Initializing download...\").start();\n\n // Warn about deprecated flags but don't fail — keeps scripts working.\n if (options.bucket || options.environment) {\n spinner.stop();\n logger.warning(\n \"--bucket and --environment are deprecated and ignored. Themes are \" +\n \"now served via HTTP from the website-api Lambda.\"\n );\n spinner.start();\n }\n\n const apiUrl = getApiUrl();\n\n try {\n // 1. Resolve theme ID and target version\n const themeId =\n options.themeId ||\n process.env.NEXT_PUBLIC_THEME_ID ||\n process.env.THEME_ID;\n const requestedVersion =\n options.version || process.env.THEME_VERSION || \"latest\";\n const outputDir = options.output || \"./active-theme\";\n\n if (!themeId) {\n spinner.fail(\n chalk.red(\n \"Theme ID not specified. Use --theme-id or set NEXT_PUBLIC_THEME_ID environment variable.\"\n )\n );\n process.exit(1);\n }\n\n spinner.text = `Resolving ${themeId}@${requestedVersion}...`;\n\n // 2. Resolve \"latest\" via /versions if needed\n let resolvedVersion = requestedVersion;\n if (requestedVersion === \"latest\") {\n resolvedVersion = await resolveLatestVersion(apiUrl, themeId);\n spinner.succeed(\n `Resolved latest version: ${chalk.cyan(resolvedVersion)}`\n );\n\n // Warn in CI/production environments — should pin to specific version\n const isCI = !!(\n process.env.CI ||\n process.env.GITHUB_ACTIONS ||\n process.env.VERCEL\n );\n if (isCI) {\n console.log(\n chalk.yellow(\n `\\n Warning: Resolved \"latest\" to ${resolvedVersion} in CI environment.\\n` +\n ` For reproducible builds, pin to a specific version:\\n` +\n ` THEME_VERSION=${resolvedVersion}\\n`\n )\n );\n }\n } else {\n spinner.succeed(`Using version: ${chalk.cyan(resolvedVersion)}`);\n }\n\n // 3. Download bundle.zip via the API\n spinner.start(\n `Downloading bundle.zip for ${themeId}@${resolvedVersion}...`\n );\n const zipBuffer = await downloadBundleZip(apiUrl, themeId, resolvedVersion);\n const sizeMB = (zipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Downloaded bundle.zip (${sizeMB} MB)`);\n\n // 4. Extract to output directory\n spinner.start(\"Extracting bundle...\");\n await fs.remove(outputDir);\n await fs.ensureDir(outputDir);\n\n const zip = new AdmZip(zipBuffer);\n zip.extractAllTo(outputDir, true);\n\n const entries = zip.getEntries().filter((e) => !e.isDirectory);\n spinner.succeed(`Extracted ${entries.length} files to ${outputDir}`);\n\n // 5. Create compatibility files (stable bundle-entry alias, etc.)\n const manifestPath = path.join(outputDir, \"manifest.json\");\n const manifest: ThemeManifest = await fs.readJson(manifestPath);\n await createCompatibilityFiles(outputDir, manifest);\n\n // 6. Success message\n console.log();\n logger.success(chalk.green.bold(\"Theme downloaded successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Theme: \") + chalk.white(`${themeId}@${resolvedVersion}`)\n );\n console.log(chalk.cyan(\" Source: \") + chalk.white(apiUrl));\n console.log(chalk.cyan(\" Output: \") + chalk.white(outputDir));\n console.log(chalk.cyan(\" Files: \") + chalk.white(entries.length));\n if (manifest.counts) {\n console.log(\n chalk.cyan(\" Sections:\") + chalk.white(` ${manifest.counts.sections}`)\n );\n }\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(\"Download failed\"));\n logger.error(error.message);\n\n const themeId =\n options.themeId ||\n process.env.NEXT_PUBLIC_THEME_ID ||\n process.env.THEME_ID ||\n \"unknown\";\n\n showDownloadFailureHelp(themeId, apiUrl);\n process.exit(1);\n }\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport { spawn } from \"child_process\";\nimport AdmZip from \"adm-zip\";\nimport { logger } from \"../utils/logger\";\nimport { glob } from \"glob\";\nimport {\n getApiUrl,\n getValidTokens,\n authenticatedFetch,\n} from \"../utils/cli-auth\";\n\ninterface CloneOptions {\n version?: string;\n output?: string;\n /** @deprecated kept for backwards-compat with older scripts; ignored. */\n bucket?: string;\n /** @deprecated kept for backwards-compat with older scripts; ignored. */\n environment?: \"staging\" | \"production\";\n install?: boolean;\n name?: string;\n}\n\n/**\n * Unwrap an API Gateway envelope `{ statusCode, body }` into the inner body.\n */\nfunction unwrapEnvelope<T = any>(raw: any): T {\n if (raw && typeof raw === \"object\" && \"statusCode\" in raw && \"body\" in raw) {\n return raw.body as T;\n }\n return raw as T;\n}\n\n/**\n * Resolve the latest version of a theme via the public website-api\n * `/versions` Lambda. Replaces the legacy direct-S3 read of\n * `themes/{themeId}/latest.json`.\n *\n * Note: this endpoint is public — no auth needed for version listing.\n */\nasync function resolveLatestVersion(\n apiUrl: string,\n themeId: string\n): Promise<string> {\n const url = `${apiUrl}/website-api/themes/${encodeURIComponent(themeId)}/versions`;\n const response = await fetch(url, { cache: \"no-store\" });\n if (!response.ok) {\n throw new Error(\n `Version lookup failed for \"${themeId}\" (HTTP ${response.status})`\n );\n }\n const raw = await response.json();\n const data = unwrapEnvelope<{ latest_version?: string }>(raw);\n const latest = data?.latest_version;\n if (typeof latest !== \"string\" || latest.length === 0) {\n throw new Error(`Theme \"${themeId}\" has no published versions yet`);\n }\n return latest;\n}\n\n/**\n * Fetch source.zip via the authenticated `/source` Lambda, which returns\n * a presigned S3 GET URL. We then fetch that URL to get the actual bytes.\n *\n * The /source endpoint requires a Bearer token (`public: false`) — clone\n * is a developer action, not a public consumer one.\n */\nasync function fetchSourceZip(\n apiUrl: string,\n themeId: string,\n version: string\n): Promise<Buffer> {\n // Step 1: ask the API for a presigned download URL\n const url = `${apiUrl}/website-api/themes/${encodeURIComponent(themeId)}/source?version=${encodeURIComponent(version)}`;\n const response = await authenticatedFetch(url, {\n method: \"GET\",\n });\n if (!response.ok) {\n if (response.status === 404) {\n throw new Error(\n `Source not found for ${themeId}@${version}. The theme may not have been published with source upload enabled.`\n );\n }\n if (response.status === 401 || response.status === 403) {\n throw new Error(\n `Not authorized to download source for \"${themeId}\". Run \\`onexthm login\\` first.`\n );\n }\n throw new Error(\n `Source URL request failed for \"${themeId}@${version}\" (HTTP ${response.status})`\n );\n }\n const raw = await response.json();\n const data = unwrapEnvelope<{ download_url?: string }>(raw);\n const presignedUrl = data?.download_url;\n if (typeof presignedUrl !== \"string\" || presignedUrl.length === 0) {\n throw new Error(\"Unexpected /source response shape: missing download_url\");\n }\n\n // Step 2: fetch the presigned URL to get the actual zip bytes\n const zipResponse = await fetch(presignedUrl);\n if (!zipResponse.ok) {\n throw new Error(\n `Presigned source download failed (HTTP ${zipResponse.status})`\n );\n }\n const arrayBuffer = await zipResponse.arrayBuffer();\n return Buffer.from(arrayBuffer);\n}\n\n/**\n * Run pnpm install in a directory\n */\nfunction runInstall(cwd: string): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn(\"pnpm\", [\"install\"], {\n cwd,\n stdio: \"inherit\",\n shell: true,\n });\n proc.on(\"close\", (code) => resolve(code === 0));\n proc.on(\"error\", () => resolve(false));\n });\n}\n\n/**\n * Prompt user for new theme name using inquirer\n */\nasync function promptThemeName(originalName: string): Promise<string> {\n const { default: inquirer } = await import(\"inquirer\");\n const { themeName } = await inquirer.prompt([\n {\n type: \"input\",\n name: \"themeName\",\n message: \"New theme name (kebab-case):\",\n default: `my-${originalName}`,\n validate: (input: string) => {\n if (!/^[a-z][a-z0-9-]*$/.test(input)) {\n return \"Theme name must be kebab-case (lowercase letters, numbers, hyphens)\";\n }\n if (input === originalName) {\n return `Name must differ from the original theme \"${originalName}\"`;\n }\n return true;\n },\n },\n ]);\n return themeName;\n}\n\n/**\n * Rename all theme references in the cloned source.\n *\n * Updates:\n * - package.json (name, description)\n * - theme.config.ts (id, name)\n * - theme.layout.ts (id, name)\n * - sections schemas (type: \"old-hero\" → \"new-hero\")\n * - pages configs (type references)\n */\nasync function renameTheme(\n themeDir: string,\n oldName: string,\n newName: string\n): Promise<void> {\n const oldPrefix = `${oldName}-`;\n const newPrefix = `${newName}-`;\n const newDisplayName = newName\n .split(\"-\")\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(\" \");\n\n // 1. package.json\n const pkgPath = path.join(themeDir, \"package.json\");\n if (await fs.pathExists(pkgPath)) {\n const pkg = await fs.readJson(pkgPath);\n pkg.name = `@onex-themes/${newName}`;\n if (pkg.description) {\n pkg.description = pkg.description.replace(\n new RegExp(oldName, \"gi\"),\n newDisplayName\n );\n }\n pkg.version = \"1.0.0\";\n\n // Remove @onexapis/cli from devDependencies — it's a global CLI tool,\n // not a theme dependency. Including it causes workspace:* resolution errors.\n if (pkg.devDependencies?.[\"@onexapis/cli\"]) {\n delete pkg.devDependencies[\"@onexapis/cli\"];\n }\n\n await fs.writeJson(pkgPath, pkg, { spaces: 2 });\n }\n\n // 2. theme.config.ts\n const configPath = path.join(themeDir, \"theme.config.ts\");\n if (await fs.pathExists(configPath)) {\n let content = await fs.readFile(configPath, \"utf-8\");\n content = content.replace(/id:\\s*\"[^\"]*\"/, `id: \"${newName}\"`);\n content = content.replace(\n /name:\\s*\"[^\"]*Theme\"/,\n `name: \"${newDisplayName} Theme\"`\n );\n await fs.writeFile(configPath, content);\n }\n\n // 3. theme.layout.ts\n const layoutPath = path.join(themeDir, \"theme.layout.ts\");\n if (await fs.pathExists(layoutPath)) {\n let content = await fs.readFile(layoutPath, \"utf-8\");\n content = content.replace(/id:\\s*\"[^\"]*\"/, `id: \"${newName}\"`);\n content = content.replace(\n /name:\\s*\"[^\"]*Theme\"/,\n `name: \"${newDisplayName} Theme\"`\n );\n await fs.writeFile(layoutPath, content);\n }\n\n // 4. All .ts files: replace theme references\n const oldDisplayName = oldName\n .split(\"-\")\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(\" \");\n\n const tsFiles = await glob(\"**/*.ts\", { cwd: themeDir, nodir: true });\n for (const file of tsFiles) {\n const filePath = path.join(themeDir, file);\n let content = await fs.readFile(filePath, \"utf-8\");\n const original = content;\n\n // Replace section type strings: \"simple-hero\" → \"mytheme-hero\"\n content = content.replace(\n new RegExp(`\"${oldPrefix}`, \"g\"),\n `\"${newPrefix}`\n );\n\n // Replace themeId: \"simple\" → \"mytheme\"\n content = content.replace(\n new RegExp(`themeId:\\\\s*\"${oldName}\"`, \"g\"),\n `themeId: \"${newName}\"`\n );\n\n // Replace display names in titles/comments: \"Simple Theme\" → \"My Theme\"\n content = content.replace(\n new RegExp(`${oldDisplayName} Theme`, \"g\"),\n `${newDisplayName} Theme`\n );\n\n if (content !== original) {\n await fs.writeFile(filePath, content);\n }\n }\n}\n\n/**\n * Clone theme source code via the website-api.\n *\n * Calls the authenticated `/source` Lambda to get a presigned S3 URL,\n * downloads the source.zip, and extracts it to a local directory. Asks\n * the user for a new theme name to differentiate from the original.\n *\n * Requires login (`onexthm login`) — the source endpoint is JWT-gated\n * because cloning grants access to a developer's full theme source.\n */\nexport async function cloneCommand(\n themeName: string,\n options: CloneOptions\n): Promise<void> {\n logger.header(\"Clone Theme Source\");\n\n // Warn about deprecated flags but don't fail.\n if (options.bucket || options.environment) {\n logger.warning(\n \"--bucket and --environment are deprecated and ignored. Source is \" +\n \"now fetched via HTTP from the website-api Lambda.\"\n );\n }\n\n // Verify auth before doing anything user-facing (so we don't prompt\n // for a name and then fail).\n const tokens = await getValidTokens();\n if (!tokens) {\n logger.error(\"Not logged in. Run: onexthm login\");\n process.exit(1);\n }\n\n // Prompt for new theme name (unless --name was provided)\n let newName = options.name;\n if (!newName) {\n newName = await promptThemeName(themeName);\n }\n\n const spinner = ora(\"Initializing clone...\").start();\n\n try {\n const apiUrl = getApiUrl();\n const outputDir = options.output || path.resolve(process.cwd(), newName);\n\n // Check if output directory already exists\n if (await fs.pathExists(outputDir)) {\n spinner.fail(chalk.red(`Directory already exists: ${outputDir}`));\n logger.info(\n chalk.gray(\n \"Use -o to specify a different output directory, or remove the existing directory.\"\n )\n );\n process.exit(1);\n }\n\n // Resolve version\n let version = options.version || \"latest\";\n if (version === \"latest\") {\n spinner.text = \"Resolving latest version...\";\n version = await resolveLatestVersion(apiUrl, themeName);\n spinner.succeed(`Resolved latest version: ${chalk.cyan(version)}`);\n }\n\n // Download source.zip via the API (returns presigned URL → fetch bytes)\n spinner.start(`Downloading source.zip for ${themeName}@${version}...`);\n let zipBuffer: Buffer;\n try {\n zipBuffer = await fetchSourceZip(apiUrl, themeName, version);\n } catch (error: any) {\n spinner.fail(chalk.red(error.message));\n console.log();\n console.log(\n chalk.gray(\n `Verify the theme is published: curl -s ${apiUrl}/website-api/themes/${themeName}/versions`\n )\n );\n console.log();\n process.exit(1);\n }\n\n const sizeMB = (zipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Downloaded source.zip (${sizeMB} MB)`);\n\n // Extract to output directory\n spinner.start(`Extracting to ${outputDir}...`);\n await fs.ensureDir(outputDir);\n\n const zip = new AdmZip(zipBuffer);\n zip.extractAllTo(outputDir, true);\n\n const entries = zip.getEntries().filter((e) => !e.isDirectory);\n spinner.succeed(`Extracted ${entries.length} files`);\n\n // Rename theme references\n spinner.start(\n `Renaming theme: ${chalk.gray(themeName)} → ${chalk.cyan(newName)}...`\n );\n await renameTheme(outputDir, themeName, newName);\n spinner.succeed(\n `Renamed theme: ${chalk.gray(themeName)} → ${chalk.cyan(newName)}`\n );\n\n // Generate .env.example if not already in the zip\n const envExamplePath = path.join(outputDir, \".env.example\");\n if (!(await fs.pathExists(envExamplePath))) {\n await fs.writeFile(\n envExamplePath,\n [\n \"# API Configuration (enables real data in preview)\",\n \"# Get your Company ID from the OneX dashboard\",\n \"NEXT_PUBLIC_API_URL=https://platform-dev.onexeos.com\",\n \"NEXT_PUBLIC_COMPANY_ID=\",\n \"\",\n ].join(\"\\n\")\n );\n }\n\n // Prompt for Figma API key and patch .mcp.json\n const mcpJsonPath = path.join(outputDir, \".mcp.json\");\n if (await fs.pathExists(mcpJsonPath)) {\n const { default: inquirerMod } = await import(\"inquirer\");\n const { figmaApiKey } = await inquirerMod.prompt([\n {\n type: \"password\",\n name: \"figmaApiKey\",\n message:\n \"Figma API Key (optional, for Figma-to-code MCP — press Enter to skip):\",\n },\n ]);\n let mcpContent = await fs.readFile(mcpJsonPath, \"utf-8\");\n if (figmaApiKey) {\n mcpContent = mcpContent.replace(\"__FIGMA_API_KEY__\", figmaApiKey);\n } else {\n try {\n const mcpJson = JSON.parse(mcpContent);\n delete mcpJson.mcpServers?.figma;\n mcpContent = JSON.stringify(mcpJson, null, 2) + \"\\n\";\n } catch {}\n }\n await fs.writeFile(mcpJsonPath, mcpContent, \"utf-8\");\n }\n\n // Optionally install dependencies\n if (options.install !== false) {\n const hasPkgJson = await fs.pathExists(\n path.join(outputDir, \"package.json\")\n );\n if (hasPkgJson) {\n spinner.start(\"Installing dependencies...\");\n const success = await runInstall(outputDir);\n if (success) {\n spinner.succeed(\"Dependencies installed\");\n } else {\n spinner.warn(\n chalk.yellow(\n \"Failed to install dependencies — run 'pnpm install' manually\"\n )\n );\n }\n }\n }\n\n // Success message\n console.log();\n logger.success(chalk.green.bold(\"Theme cloned successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Source: \") + chalk.gray(`${themeName}@${version}`)\n );\n console.log(chalk.cyan(\" Theme: \") + chalk.white(newName));\n console.log(chalk.cyan(\" Location: \") + chalk.white(outputDir));\n console.log(chalk.cyan(\" Files: \") + chalk.white(entries.length));\n console.log();\n console.log(chalk.cyan(\"Next steps:\"));\n console.log(chalk.gray(` cd ${path.relative(process.cwd(), outputDir)}`));\n console.log(\n chalk.gray(\" cp .env.example .env # then add your Company ID\")\n );\n if (options.install === false) {\n console.log(chalk.gray(\" pnpm install\"));\n }\n console.log(chalk.gray(\" onexthm build\"));\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(`Clone failed: ${error.message}`));\n logger.error(error.stack || error.message);\n process.exit(1);\n }\n}\n","/**\n * @onex/cli - CLI Tool for OneX Theme Development\n * Scaffolding and development tools for themes, sections, blocks, and components\n */\n\nexport { initCommand } from \"./commands/init\";\nexport { createSectionCommand } from \"./commands/create-section\";\nexport { createBlockCommand } from \"./commands/create-block\";\nexport { createComponentCommand } from \"./commands/create-component\";\nexport { listCommand } from \"./commands/list\";\nexport { buildCommand } from \"./commands/build\";\nexport { uploadCommand } from \"./commands/upload\";\nexport { downloadCommand } from \"./commands/download\";\nexport { cloneCommand } from \"./commands/clone\";\n\nexport * from \"./utils/logger\";\nexport * from \"./utils/file-helpers\";\nexport * from \"./utils/validators\";\n"]}
1
+ {"version":3,"sources":["../src/utils/logger.ts","../src/utils/extract-schemas.ts","../src/utils/scan-theme-assets.ts","../src/utils/compile-theme.ts","../src/commands/init.ts","../src/utils/validators.ts","../src/utils/file-helpers.ts","../src/utils/cli-auth.ts","../src/commands/create-section.ts","../src/commands/create-block.ts","../src/commands/create-component.ts","../src/commands/list.ts","../src/commands/build.ts","../src/commands/upload.ts","../src/commands/download.ts","../src/commands/clone.ts","../src/index.ts"],"names":["Logger","logger","chalk","ora","glob","path","exports","fs","crypto","build","subpath","cacheKey","createRequire","hash","hashedName","hashedMapName","oldFiles","esbuild","context","ejs","execSync","os","inquirer","data","answers","compileStandaloneTheme","spawn","AdmZip","unwrapEnvelope","resolveLatestVersion"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGaA,uBAAA,CAAA,CA6DAC;AAhEb,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qBAAA,GAAA;AAGO,IAAMD,iBAAN,MAAa;AAAA,MAAb,WAAA,GAAA;AACL,QAAA,IAAA,CAAQ,OAAA,GAAsB,IAAA;AAAA,MAAA;AAAA,MAE9B,QAAQ,OAAA,EAAuB;AAC7B,QAAA,OAAA,CAAQ,GAAA,CAAIE,uBAAA,CAAM,KAAA,CAAM,QAAG,GAAG,OAAO,CAAA;AAAA,MACvC;AAAA,MAEA,MAAM,OAAA,EAAuB;AAC3B,QAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAA,CAAM,GAAA,CAAI,QAAG,GAAG,OAAO,CAAA;AAAA,MACrC;AAAA,MAEA,QAAQ,OAAA,EAAuB;AAC7B,QAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAA,CAAM,MAAA,CAAO,QAAG,GAAG,OAAO,CAAA;AAAA,MACxC;AAAA,MAEA,KAAK,OAAA,EAAuB;AAC1B,QAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAA,CAAM,IAAA,CAAK,QAAG,GAAG,OAAO,CAAA;AAAA,MACtC;AAAA,MAEA,IAAI,OAAA,EAAuB;AACzB,QAAA,OAAA,CAAQ,IAAI,OAAO,CAAA;AAAA,MACrB;AAAA,MAEA,aAAa,OAAA,EAAuB;AAClC,QAAA,IAAA,CAAK,OAAA,GAAUC,oBAAA,CAAI,OAAO,CAAA,CAAE,KAAA,EAAM;AAAA,MACpC;AAAA,MAEA,WAAA,CAAY,OAAA,GAAmB,IAAA,EAAM,OAAA,EAAwB;AAC3D,QAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AAEnB,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,IAAA,CAAK,OAAA,CAAQ,QAAQ,OAAO,CAAA;AAAA,QAC9B,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,OAAO,CAAA;AAAA,QAC3B;AACA,QAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AAAA,MACjB;AAAA,MAEA,cAAc,OAAA,EAAuB;AACnC,QAAA,IAAI,KAAK,OAAA,EAAS;AAChB,UAAA,IAAA,CAAK,QAAQ,IAAA,GAAO,OAAA;AAAA,QACtB;AAAA,MACF;AAAA,MAEA,OAAA,GAAgB;AACd,QAAA,OAAA,CAAQ,GAAA,EAAI;AAAA,MACd;AAAA,MAEA,OAAO,OAAA,EAAuB;AAC5B,QAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,QAAA,OAAA,CAAQ,GAAA,CAAID,uBAAA,CAAM,IAAA,CAAK,IAAA,CAAK,OAAO,CAAC,CAAA;AACpC,QAAA,OAAA,CAAQ,GAAA,CAAIA,wBAAM,IAAA,CAAK,GAAA,CAAI,OAAO,OAAA,CAAQ,MAAM,CAAC,CAAC,CAAA;AAClD,QAAA,OAAA,CAAQ,GAAA,EAAI;AAAA,MACd;AAAA,MAEA,QAAQ,OAAA,EAAuB;AAC7B,QAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,QAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAA,CAAM,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,MACjC;AAAA,KACF;AAEO,IAAMD,cAAA,GAAS,IAAID,cAAA,EAAO;AAAA,EAAA;AAAA,CAAA,CAAA;ACOjC,SAAS,WAAc,KAAA,EAAa;AAClC,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,OAAO,MAAM,GAAA,CAAI,CAAC,CAAA,KAAM,UAAA,CAAW,CAAC,CAAC,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AACtC,IAAA,MAAM,SAAkC,EAAC;AACzC,IAAA,KAAA,MAAW,OAAO,MAAA,CAAO,IAAA,CAAK,KAAgC,CAAA,CAAE,MAAK,EAAG;AACtE,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,UAAA,CAAY,KAAA,CAAkC,GAAG,CAAC,CAAA;AAAA,IAClE;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA;AACT;AAGA,SAAS,eAAe,GAAA,EAA0B;AAChD,EAAA,MAAM,GAAA,GAAsB;AAAA,IAC1B,EAAA,EAAI,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA;AAAA,IACjB,IAAA,EAAM,MAAA,CAAO,GAAA,CAAI,IAAI;AAAA,GACvB;AACA,EAAA,IAAI,GAAA,CAAI,QAAA,KAAa,IAAA,EAAM,GAAA,CAAI,QAAA,GAAW,IAAA;AAC1C,EAAA,IAAI,GAAA,CAAI,OAAA,KAAY,MAAA,EAAW,GAAA,CAAI,UAAU,GAAA,CAAI,OAAA;AACjD,EAAA,IAAI,KAAA,CAAM,QAAQ,GAAA,CAAI,OAAO,KAAK,GAAA,CAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACxD,IAAA,GAAA,CAAI,OAAA,GAAU,CAAC,GAAG,GAAA,CAAI,OAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA,CAAE,IAAA,EAAK;AAAA,EAClD;AACA,EAAA,IAAI,OAAO,GAAA,CAAI,SAAA,KAAc,QAAA,EAAU,GAAA,CAAI,YAAY,GAAA,CAAI,SAAA;AAC3D,EAAA,IAAI,OAAO,GAAA,CAAI,GAAA,KAAQ,QAAA,EAAU,GAAA,CAAI,MAAM,GAAA,CAAI,GAAA;AAC/C,EAAA,IAAI,OAAO,GAAA,CAAI,GAAA,KAAQ,QAAA,EAAU,GAAA,CAAI,MAAM,GAAA,CAAI,GAAA;AAC/C,EAAA,IAAI,OAAO,GAAA,CAAI,IAAA,KAAS,QAAA,EAAU,GAAA,CAAI,OAAO,GAAA,CAAI,IAAA;AACjD,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA,EAAG;AAC7B,IAAA,GAAA,CAAI,MAAA,GAAS,CAAC,GAAG,GAAA,CAAI,MAAM,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA,CAAE,IAAA,EAAK;AAAA,EAChD;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,OAAO,CAAA,EAAG;AAC9B,IAAA,GAAA,CAAI,OAAA,GAAU,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAW,MAAA,CAAO,CAAA,EAAG,KAAA,IAAS,CAAC,CAAC,CAAA,CAAE,IAAA,EAAK;AAAA,EACxE;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,eAAe,GAAA,EAA0B;AAChD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AAAA,IACrB,QAAA,EAAU,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA,GAChC,GAAA,CAAI,QAAA,CAAS,GAAA,CAAI,cAAc,CAAA,CAAE,IAAA,CAAK,cAAc,IACpD,EAAC;AAAA,IACL,QAAA,EACE,GAAA,CAAI,QAAA,IAAY,OAAO,GAAA,CAAI,QAAA,KAAa,QAAA,GACpC,UAAA,CAAW,GAAA,CAAI,QAAQ,CAAA,GACvB,EAAC;AAAA,IACP,GAAI,OAAO,GAAA,CAAI,KAAA,KAAU,QAAA,GAAW,EAAE,KAAA,EAAO,GAAA,CAAI,KAAA,EAAM,GAAI,EAAC;AAAA,IAC5D,GAAI,OAAO,GAAA,CAAI,GAAA,KAAQ,QAAA,GAAW,EAAE,GAAA,EAAK,GAAA,CAAI,GAAA,EAAI,GAAI,EAAC;AAAA,IACtD,GAAI,IAAI,QAAA,KAAa,IAAA,GAAO,EAAE,QAAA,EAAU,IAAA,KAAS,EAAC;AAAA,IAClD,GAAI,GAAA,CAAI,QAAA,GAAW,EAAE,QAAA,EAAU,OAAO,GAAA,CAAI,QAAQ,CAAA,EAAE,GAAI;AAAC,GAC3D;AACF;AAEA,SAAS,kBAAkB,GAAA,EAA6B;AACtD,EAAA,MAAM,MAAyB,EAAE,EAAA,EAAI,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA,EAAE;AACpD,EAAA,IAAI,GAAA,CAAI,SAAA,KAAc,IAAA,EAAM,GAAA,CAAI,SAAA,GAAY,IAAA;AAC5C,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA,EAAG;AAC/B,IAAA,GAAA,CAAI,WAAW,GAAA,CAAI,QAAA,CAAS,IAAI,cAAc,CAAA,CAAE,KAAK,cAAc,CAAA;AAAA,EACrE;AACA,EAAA,IAAI,GAAA,CAAI,QAAA,IAAY,OAAO,GAAA,CAAI,aAAa,QAAA,EAAU;AACpD,IAAA,GAAA,CAAI,QAAA,GAAW,UAAA,CAAW,GAAA,CAAI,QAAQ,CAAA;AAAA,EACxC;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,cAAA,CAAe,GAAmB,CAAA,EAA2B;AACpE,EAAA,OAAO,CAAA,CAAE,EAAA,CAAG,aAAA,CAAc,CAAA,CAAE,EAAE,CAAA;AAChC;AAEA,SAAS,UAAA,CAAW,GAAqB,CAAA,EAA6B;AACpE,EAAA,OAAO,CAAA,CAAE,IAAA,CAAK,aAAA,CAAc,CAAA,CAAE,IAAI,CAAA;AACpC;AAEA,SAAS,iBAAiB,GAAA,EAA4B;AACpD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AAAA,IACrB,QAAA,EAAU,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA,GAChC,GAAA,CAAI,QAAA,CAAS,GAAA,CAAI,cAAc,CAAA,CAAE,IAAA,CAAK,cAAc,IACpD,EAAC;AAAA,IACL,QAAA,EACE,GAAA,CAAI,QAAA,IAAY,OAAO,GAAA,CAAI,QAAA,KAAa,QAAA,GACpC,UAAA,CAAW,GAAA,CAAI,QAAQ,CAAA,GACvB,EAAC;AAAA,IACP,MAAA,EAAQ,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA,GAC5B,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,cAAc,CAAA,CAAE,IAAA,CAAK,UAAU,IAC9C,EAAC;AAAA,IACL,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,SAAS,CAAA,GAClC,GAAA,CAAI,SAAA,CAAU,GAAA,CAAI,iBAAiB,CAAA,CAAE,IAAA,CAAK,cAAc,IACxD,EAAC;AAAA,IACL,gBAAA,EACE,GAAA,CAAI,gBAAA,IAAoB,OAAO,GAAA,CAAI,qBAAqB,QAAA,GACnD,UAAA,CAAW,GAAA,CAAI,gBAAgB,CAAA,GAChC,IAAA;AAAA,IACN,GAAI,IAAI,MAAA,KAAW,IAAA,GAAO,EAAE,MAAA,EAAQ,IAAA,KAAS,EAAC;AAAA,IAC9C,GAAI,OAAO,GAAA,CAAI,SAAA,KAAc,QAAA,GAAW,EAAE,SAAA,EAAW,GAAA,CAAI,SAAA,EAAU,GAAI;AAAC,GAC1E;AACF;AAOA,eAAsB,eACpB,SAAA,EACyB;AACzB,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,MAAM,OAAO,MAAM,CAAA;AAC1C,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,0PAAe,CAAA;AAEvC,EAAA,MAAM,cAAc,MAAMI,SAAA,CAAK,2BAA2B,EAAE,GAAA,EAAK,WAAW,CAAA;AAC5E,EAAA,MAAM,WAA6C,EAAC;AAEpD,EAAA,KAAA,MAAW,QAAQ,WAAA,EAAa;AAC9B,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,MAAA,CAAOC,wBAAK,IAAA,CAAK,SAAA,EAAW,IAAI,CAAC,CAAA;AACxD,MAAA,MAAMC,SAAA,GAAU,GAAA;AAGhB,MAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,MAAA,CAAOA,SAAO,CAAA,EAAG;AAC1C,QAAA,IACE,KAAA,IACA,OAAO,KAAA,KAAU,QAAA,IACjB,OAAQ,KAAA,CAAc,IAAA,KAAS,QAAA,IAC/B,KAAA,CAAM,OAAA,CAAS,KAAA,CAAc,QAAQ,CAAA,EACrC;AACA,UAAA,MAAM,OAAA,GAAU,iBAAiB,KAAK,CAAA;AACtC,UAAA,QAAA,CAAS,OAAA,CAAQ,IAAI,CAAA,GAAI,OAAA;AAAA,QAC3B;AAAA,MACF;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAGR;AAAA,EACF;AAEA,EAAA,MAAM,QAAA,GAA2B;AAAA,IAC/B,eAAA,EAAiB,CAAA;AAAA,IACjB,UAAU;AAAC,GACb;AACA,EAAA,KAAA,MAAW,QAAQ,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAK,EAAG;AAC/C,IAAA,QAAA,CAAS,QAAA,CAAS,IAAI,CAAA,GAAI,QAAA,CAAS,IAAI,CAAA;AAAA,EACzC;AACA,EAAA,OAAO,QAAA;AACT;AAMO,SAAS,kBAAkB,QAAA,EAAkC;AAClE,EAAA,OAAO,KAAK,SAAA,CAAU,UAAA,CAAW,QAAQ,CAAA,EAAG,MAAM,CAAC,CAAA;AACrD;AAhOA,IAAA,oBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,8BAAA,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC2EA,SAAS,QAAQ,QAAA,EAA0B;AACzC,EAAA,MAAM,GAAA,GAAMD,uBAAAA,CAAK,OAAA,CAAQ,QAAQ,EAAE,WAAA,EAAY;AAC/C,EAAA,OAAO,QAAA,CAAS,GAAG,CAAA,IAAK,0BAAA;AAC1B;AAEA,eAAe,YAAA,CAAa,SAAiB,GAAA,EAA8B;AACzE,EAAA,MAAM,GAAA,GAAM,MAAME,mBAAAA,CAAG,QAAA,CAAS,OAAO,CAAA;AACrC,EAAA,OAAOC,uBAAAA,CAAO,UAAA,CAAW,QAAQ,CAAA,CAAE,MAAA,CAAO,GAAG,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA;AAC3E;AAMA,SAAS,kBAAA,CAAmB,SAAiB,IAAA,EAAsB;AACjE,EAAA,MAAM,GAAA,GAAMH,uBAAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA;AACtC,EAAA,MAAM,IAAA,GAAOA,uBAAAA,CAAK,KAAA,CAAM,QAAA,CAAS,OAAO,CAAA;AACxC,EAAA,MAAM,GAAA,GAAMA,uBAAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA;AACnC,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,KAAA,CAAM,GAAG,CAAC,GAAA,CAAI,MAAM,CAAA,GAAI,IAAA;AAChD,EAAA,MAAM,SAAS,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,IAAI,GAAG,GAAG,CAAA,CAAA;AACpC,EAAA,OAAO,QAAQ,GAAA,GAAM,MAAA,GAAS,CAAA,EAAG,GAAG,IAAI,MAAM,CAAA,CAAA;AAChD;AAQA,eAAsB,gBACpB,OAAA,EAC6B;AAC7B,EAAA,MAAM,SAAA,GAAYA,uBAAAA,CAAK,IAAA,CAAK,OAAA,EAAS,cAAc,CAAA;AACnD,EAAA,IAAI,CAAE,MAAME,mBAAAA,CAAG,WAAW,SAAS,CAAA,SAAW,EAAC;AAE/C,EAAA,MAAM,KAAA,GAAQ,MAAMH,SAAAA,CAAK,MAAA,EAAQ;AAAA,IAC/B,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,IAAA;AAAA,IACP,GAAA,EAAK;AAAA,GACN,CAAA;AAED,EAAA,MAAM,UAA8B,EAAC;AACrC,EAAA,KAAA,MAAW,OAAO,KAAA,EAAO;AACvB,IAAA,MAAM,OAAA,GAAUC,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,GAAG,CAAA;AACxC,IAAA,MAAM,IAAA,GAAO,MAAME,mBAAAA,CAAG,IAAA,CAAK,OAAO,CAAA;AAClC,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,EAAO,EAAG;AAGpB,IAAA,MAAM,eAAe,GAAA,CAAI,KAAA,CAAMF,wBAAK,GAAG,CAAA,CAAE,KAAK,GAAG,CAAA;AACjD,IAAA,MAAM,IAAA,GAAO,MAAM,YAAA,CAAa,OAAA,EAAS,QAAQ,CAAA;AACjD,IAAA,MAAM,UAAA,GAAa,kBAAA,CAAmB,YAAA,EAAc,IAAI,CAAA;AACxD,IAAA,MAAM,WAAA,GAAc,QAAQ,GAAG,CAAA;AAE/B,IAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,MACX,YAAA;AAAA,MACA,UAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,WAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAGA,EAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,EAAE,YAAA,CAAa,aAAA,CAAc,CAAA,CAAE,YAAY,CAAC,CAAA;AACnE,EAAA,OAAO,OAAA;AACT;AA7IA,IAiBM,QAAA,EAuBA,QAAA;AAxCN,IAAA,sBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,gCAAA,GAAA;AAiBA,IAAM,QAAA,GAAmC;AAAA,MACvC,MAAA,EAAQ,WAAA;AAAA,MACR,MAAA,EAAQ,YAAA;AAAA,MACR,OAAA,EAAS,YAAA;AAAA,MACT,MAAA,EAAQ,WAAA;AAAA,MACR,OAAA,EAAS,YAAA;AAAA,MACT,OAAA,EAAS,YAAA;AAAA,MACT,MAAA,EAAQ,eAAA;AAAA,MACR,MAAA,EAAQ,cAAA;AAAA,MACR,MAAA,EAAQ,WAAA;AAAA,MACR,OAAA,EAAS,WAAA;AAAA,MACT,QAAA,EAAU,YAAA;AAAA,MACV,MAAA,EAAQ,UAAA;AAAA,MACR,MAAA,EAAQ,UAAA;AAAA,MACR,MAAA,EAAQ,+BAAA;AAAA,MACR,MAAA,EAAQ,WAAA;AAAA,MACR,OAAA,EAAS,YAAA;AAAA,MACT,MAAA,EAAQ,iBAAA;AAAA,MACR,MAAA,EAAQ,WAAA;AAAA,MACR,OAAA,EAAS;AAAA,KACX;AAGA,IAAM,QAAA,GAAW,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACxCjB,IAAA,qBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,qBAAA,EAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,yBAAA,EAAA,MAAA,yBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AA4BA,eAAe,gBAAA,CACb,WACA,MAAA,EACe;AACf,EAAA,IAAI;AAEF,IAAA,MAAM,OAAA,GAAA,CAAW,MAAM,OAAO,SAAS,CAAA,EAAG,OAAA;AAC1C,IAAA,MAAM,WAAA,GAAA,CAAe,MAAM,OAAO,aAAa,CAAA,EAAG,OAAA;AAElD,IAAA,MAAM,cAAA,GAAiB;AAAA,MACrB,OAAA,EAAS;AAAA,QACPA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,wBAAwB,CAAA;AAAA,QAC7CA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,0BAA0B;AAAA,OACjD;AAAA,MACA,KAAA,EAAO,EAAE,MAAA,EAAQ,EAAC,EAAE;AAAA,MACpB,SAAS;AAAC,KACZ;AAEA,IAAA,MAAM,QAAA,GACJ,8DAAA;AACF,IAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,CAAC,YAAY,cAAc,CAAC,CAAC,CAAA,CAAE,OAAA;AAAA,MAC1D,QAAA;AAAA,MACA,EAAE,MAAM,KAAA,CAAA;AAAU,KACpB;AAEA,IAAA,MAAME,oBAAAA,CAAG,UAAUF,uBAAAA,CAAK,IAAA,CAAK,QAAQ,YAAY,CAAA,EAAG,OAAO,GAAG,CAAA;AAC9D,IAAAJ,cAAA,CAAO,KAAK,sBAAsB,CAAA;AAAA,EACpC,SAAS,GAAA,EAAK;AACZ,IAAAA,cAAA,CAAO,OAAA;AAAA,MACL,2BAA2B,GAAA,YAAe,KAAA,GAAQ,IAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,KAC7E;AAAA,EACF;AACF;AA8KA,eAAe,sBAAA,CACb,UACA,YAAA,EACwB;AACxB,EAAA,IAAI,GAAA,GAAM,QAAA;AACV,EAAA,OAAO,IAAA,EAAM;AACX,IAAA,MAAM,SAAA,GAAYI,uBAAAA,CAAK,IAAA,CAAK,GAAA,EAAK,gBAAgB,YAAY,CAAA;AAC7D,IAAA,IAAI;AACF,MAAA,MAAME,oBAAAA,CAAG,OAAO,SAAS,CAAA;AACzB,MAAA,OAAO,SAAA;AAAA,IACT,CAAA,CAAA,MAAQ;AACN,MAAA,MAAM,MAAA,GAASF,uBAAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC/B,MAAA,IAAI,WAAW,GAAA,EAAK;AACpB,MAAA,GAAA,GAAM,MAAA;AAAA,IACR;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AAQA,eAAe,sBAAA,CACb,WACA,WAAA,EACsC;AACtC,EAAA,MAAM,SAAsC,EAAC;AAC7C,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,OAAA,CAAQ,qBAAA,EAAuB,MAAM,CAAA;AAEpE,EAAA,MAAM,cAAc,IAAI,MAAA;AAAA,IACtB,kEAAkE,UAAU,CAAA,iBAAA,CAAA;AAAA,IAC5E;AAAA,GACF;AAEA,EAAA,MAAM,uBAAuB,IAAI,MAAA;AAAA,IAC/B,8CAA8C,UAAU,CAAA,iBAAA,CAAA;AAAA,IACxD;AAAA,GACF;AAEA,EAAA,MAAM,WAAA,GAAc,MAAMD,SAAAA,CAAK,eAAA,EAAiB;AAAA,IAC9C,GAAA,EAAK,SAAA;AAAA,IACL,MAAA,EAAQ,CAAC,iBAAA,EAAmB,SAAS;AAAA,GACtC,CAAA;AAED,EAAA,KAAA,MAAW,QAAQ,WAAA,EAAa;AAC9B,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,MAAMG,oBAAAA,CAAG,QAAA,CAASF,wBAAK,IAAA,CAAK,SAAA,EAAW,IAAI,CAAA,EAAG,OAAO,CAAA;AAErE,MAAA,KAAA,MAAW,KAAA,IAAS,OAAA,CAAQ,QAAA,CAAS,oBAAoB,CAAA,EAAG;AAC1D,QAAA,MAAM,OAAA,GAAU,MAAM,CAAC,CAAA,GAAI,MAAM,CAAC,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,GAAI,EAAA;AAC/C,QAAA,IAAI,CAAC,OAAO,OAAO,CAAA,SAAU,OAAO,CAAA,uBAAQ,GAAA,EAAI;AAChD,QAAA,MAAA,CAAO,OAAO,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA;AAAA,MACzB;AAEA,MAAA,KAAA,MAAW,KAAA,IAAS,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA,EAAG;AACjD,QAAA,MAAM,OAAA,GAAU,MAAM,CAAC,CAAA,GAAI,MAAM,CAAC,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,GAAI,EAAA;AAC/C,QAAA,IAAI,CAAC,OAAO,OAAO,CAAA,SAAU,OAAO,CAAA,uBAAQ,GAAA,EAAI;AAChD,QAAA,KAAA,MAAW,QAAQ,KAAA,CAAM,CAAC,CAAA,CAAE,KAAA,CAAM,GAAG,CAAA,EAAG;AACtC,UAAA,IAAI,QAAA,GAAW,KACZ,IAAA,EAAK,CACL,MAAM,UAAU,CAAA,CAAE,CAAC,CAAA,CACnB,IAAA,EAAK;AACR,UAAA,IAAI,QAAA,CAAS,UAAA,CAAW,OAAO,CAAA,EAAG;AAClC,UAAA,IAAI,QAAA,EAAU,MAAA,CAAO,OAAO,CAAA,CAAE,IAAI,QAAQ,CAAA;AAAA,QAC5C;AAAA,MACF;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAMA,SAAS,uBAAuB,SAAA,EAA2B;AACzD,EAAA,MAAM,mBAA6C,EAAC;AACpD,EAAA,IAAI,WAAA,GAAoC,IAAA;AAExC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,aAAA;AAAA,IACN,MAAMI,MAAAA,EAAO;AACX,MAAAA,OAAM,SAAA,CAAU,EAAE,QAAQ,0BAAA,EAA2B,EAAG,CAAC,IAAA,MAAU;AAAA,QACjE,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,SAAA,EAAW;AAAA,OACb,CAAE,CAAA;AAEF,MAAAA,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,aAAA,EAAc,EAAG,OAAO,IAAA,KAAS;AAGvE,QAAA,IAAI,CAAC,WAAA,EAAa;AAChB,UAAA,WAAA,GAAc,uBAAuB,SAAA,EAAW,gBAAgB,CAAA,CAC7D,IAAA,CAAK,CAAC,OAAA,KAAY;AACjB,YAAA,KAAA,MAAW,CAACC,QAAAA,EAAS,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AACtD,cAAA,MAAMC,YAAWD,QAAAA,IAAW,UAAA;AAC5B,cAAA,gBAAA,CAAiBC,SAAQ,CAAA,GAAI,CAAC,GAAG,KAAK,CAAA;AAAA,YACxC;AAAA,UACF,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AAAA,UAEb,CAAC,CAAA;AAAA,QACL;AACA,QAAA,MAAM,WAAA;AAEN,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,4BAA4B,CAAA;AAC1D,QAAA,MAAM,OAAA,GAAU,KAAA,GAAQ,CAAC,CAAA,IAAK,EAAA;AAC9B,QAAA,MAAM,YAAA,GAAe,OAAA,GAAU,CAAA,EAAA,EAAK,OAAO,CAAA,EAAA,CAAA,GAAO,EAAA;AAElD,QAAA,IAAI,eAAyB,EAAC;AAC9B,QAAA,MAAM,WAAW,OAAA,IAAW,UAAA;AAC5B,QAAA,MAAM,MAAA,GAAS,iBAAiB,QAAQ,CAAA;AACxC,QAAA,MAAM,eAAA,GAAkB,MAAA,EAAQ,QAAA,CAAS,GAAG,CAAA;AAC5C,QAAA,IAAI,MAAA,IAAU,MAAA,CAAO,MAAA,GAAS,CAAA,IAAK,CAAC,eAAA,EAAiB;AAEnD,UAAA,YAAA,GAAe,CAAC,GAAG,IAAI,GAAA,CAAI,MAAM,CAAC,CAAA;AAAA,QACpC,CAAA,MAAO;AAEL,UAAA,MAAM,YAAA,GAAe,OAAA,GAAU,CAAA,EAAG,OAAO,CAAA,IAAA,CAAA,GAAS,WAAA;AAClD,UAAA,IAAI,WAAW,MAAM,sBAAA;AAAA,YACnB,SAAA;AAAA,YACAN,uBAAAA,CAAK,IAAA,CAAK,WAAA,EAAa,MAAA,EAAQ,QAAQ,YAAY;AAAA,WACrD;AACA,UAAA,IAAI,CAAC,QAAA,EAAU;AACb,YAAA,QAAA,GAAW,MAAM,sBAAA;AAAA,cACf,SAAA;AAAA,cACAA,uBAAAA,CAAK,IAAA,CAAK,WAAA,EAAa,MAAA,EAAQ,QAAQ,YAAY;AAAA,aACrD;AAAA,UACF;AACA,UAAA,IAAI;AACF,YAAA,IAAI,CAAC,QAAA,EAAU,MAAM,IAAI,MAAM,WAAW,CAAA;AAC1C,YAAA,MAAM,WAAA,GAAc,MAAME,oBAAAA,CAAG,QAAA,CAAS,UAAU,OAAO,CAAA;AACvD,YAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,QAAA,CAAS,uBAAuB,CAAA;AAClE,YAAA,KAAA,MAAW,KAAK,aAAA,EAAe;AAC7B,cAAA,MAAM,KAAA,GAAQ,EAAE,CAAC,CAAA,CACd,MAAM,GAAG,CAAA,CACT,GAAA,CAAI,CAAC,CAAA,KAAM;AACV,gBAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,IAAA,EAAK,CAAE,MAAM,UAAU,CAAA;AACvC,gBAAA,OAAA,CAAQ,MAAM,CAAC,CAAA,IAAK,KAAA,CAAM,CAAC,GAAG,IAAA,EAAK;AAAA,cACrC,CAAC,CAAA,CACA,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,CAAC,CAAA;AAC7B,cAAA,YAAA,CAAa,IAAA,CAAK,GAAG,KAAK,CAAA;AAAA,YAC5B;AAEA,YAAA,IAAI,MAAA,IAAU,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG;AAC/B,cAAA,KAAA,MAAW,KAAK,MAAA,EAAQ;AACtB,gBAAA,IAAI,CAAA,KAAM,GAAA,EAAK,YAAA,CAAa,IAAA,CAAK,CAAC,CAAA;AAAA,cACpC;AAAA,YACF;AACA,YAAA,YAAA,GAAe,CAAC,GAAG,IAAI,GAAA,CAAI,YAAY,CAAC,CAAA;AAAA,UAC1C,CAAA,CAAA,MAAQ;AAAA,UAER;AACA,UAAA,gBAAA,CAAiB,QAAQ,CAAA,GAAI,YAAA;AAAA,QAC/B;AAEA,QAAA,MAAM,gBAAA,GACJ,YAAA,CAAa,MAAA,GAAS,CAAA,GAClB;AAAA;AAAA,EAAA,EAAuB,YAAA,CAAa,IAAA,CAAK,OAAO,CAAC;AAAA;AAAA,CAAA,GACjD,EAAA;AAEN,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA;AAAA;AAAA;;AAAA,wCAAA,EAKsB,YAAY,CAAA;AAAA;AAAA,kBAAA,EAElC,OAAA,GAAU,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,CAAA,GAAM,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,EAOnD,gBAAgB;AAAA,YAAA,CAAA,CACJ,IAAA,EAAK;AAAA,UACT,MAAA,EAAQ;AAAA,SACV;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AAAA,GACF;AACF;AAOA,SAAS,0BAA0B,SAAA,EAA2B;AAC5D,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,iBAAA;AAAA,IACN,MAAME,MAAAA,EAAO;AAEX,MAAA,MAAM,gBAAA,GAAmB,CAAC,MAAA,EAAgB,SAAA,KAAsB;AAC9D,QAAAA,OAAM,SAAA,CAAU,EAAE,MAAA,EAAO,EAAG,OAAO,IAAA,KAAS;AAC1C,UAAA,IAAI,IAAA,CAAK,UAAA,EAAY,QAAA,EAAU,OAAO,MAAA;AAEtC,UAAA,IAAI;AACF,YAAA,MAAM,MAAA,GAAS,MAAMA,MAAAA,CAAM,OAAA,CAAQ,KAAK,IAAA,EAAM;AAAA,cAC5C,MAAM,IAAA,CAAK,IAAA;AAAA,cACX,UAAA,EAAY,KAAK,UAAA,IAAc,SAAA;AAAA,cAC/B,UAAU,IAAA,CAAK,QAAA;AAAA,cACf,SAAA,EAAW,MAAA;AAAA,cACX,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA;AAAK,aAC9B,CAAA;AACD,YAAA,IAAI,CAAC,MAAA,CAAO,MAAA,CAAO,MAAA,EAAQ,OAAO,MAAA;AAAA,UACpC,CAAA,CAAA,MAAQ;AAAA,UAAC;AAET,UAAA,IAAI;AACF,YAAA,MAAM,GAAA,GAAMG,sBAAA,CAAc,0PAAY,IAAO,UAAU,CAAA;AACvD,YAAA,MAAM,QAAA,GAAW,GAAA,CAAI,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA;AACtC,YAAA,IAAI,UAAU,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,WAAW,MAAA,EAAO;AAAA,UAC3D,CAAA,CAAA,MAAQ;AAAA,UAAC;AACT,UAAA,OAAO,EAAE,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,SAAA,EAAU;AAAA,QACtC,CAAC,CAAA;AAAA,MACH,CAAA;AAGA,MAAA,gBAAA,CAAiB,WAAW,WAAW,CAAA;AACvC,MAAAH,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,WAAA,EAAY,EAAG,CAAC,IAAA,KAAS;AAC/D,QAAA,MAAM,KAAA,GAAgC;AAAA,UACpC,YAAA,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA,CAAA;AAAA,UAiBd,WAAA,EAAa;AAAA;AAAA;AAAA;AAAA,UAAA,CAAA;AAAA,UAKb,iBAAA,EAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA,CAAA;AAAA,UAQnB,cAAA,EAAgB;AAAA;AAAA;AAAA,UAAA;AAAA,SAIlB;AACA,QAAA,OAAO;AAAA,UACL,QAAA,EAAU,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,IAAK,oBAAA;AAAA,UAC9B,MAAA,EAAQ,KAAA;AAAA,UACR,UAAA,EAAY;AAAA,SACd;AAAA,MACF,CAAC,CAAA;AAKD,MAAA,MAAM,aAAA,uBAAoB,GAAA,EAAY;AACtC,MAAA,IAAI,kBAAA,GAAqB,KAAA;AACzB,MAAA,gBAAA,CAAiB,iBAAiB,aAAa,CAAA;AAC/C,MAAAA,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,aAAA,IAAiB,YAAY;AAEnE,QAAA,IAAI,CAAC,kBAAA,EAAoB;AACvB,UAAA,kBAAA,GAAqB,IAAA;AACrB,UAAA,IAAI;AACF,YAAA,MAAM,UAAU,MAAM,sBAAA;AAAA,cACpB,SAAA;AAAA,cACA;AAAA,aACF;AACA,YAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA,EAAG;AAC1C,cAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,EAAO,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA;AAAA,YAClD;AAAA,UACF,CAAA,CAAA,MAAQ;AAAA,UAAC;AAAA,QACX;AACA,QAAA,MAAM,SAAA,GAAY,CAAC,GAAG,aAAa,CAAA;AACnC,QAAA,MAAMH,SAAA,GAAU,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,KAAM,WAAW,CAAC,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAC9D,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA;AAAA,SAAA,EAETA,SAAO,CAAA;AAAA;AAAA,UAAA,CAAA,CAEN,IAAA,EAAK;AAAA,UACP,MAAA,EAAQ;AAAA,SACV;AAAA,MACF,CAAC,CAAA;AAGD,MAAA,gBAAA,CAAiB,kBAAkB,aAAa,CAAA;AAChD,MAAAG,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,aAAA,IAAiB,OAAO;AAAA,QAC9D,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA,CAUR,IAAA,EAAK;AAAA,QACP,MAAA,EAAQ,KAAA;AAAA,QACR,UAAA,EAAY;AAAA,OACd,CAAE,CAAA;AAGF,MAAA,gBAAA,CAAiB,YAAY,aAAa,CAAA;AAC1C,MAAAA,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,aAAA,IAAiB,OAAO;AAAA,QAC9D,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA,CAIR,IAAA,EAAK;AAAA,QACP,MAAA,EAAQ;AAAA,OACV,CAAE,CAAA;AAGF,MAAA,gBAAA,CAAiB,qBAAqB,UAAU,CAAA;AAChD,MAAAA,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,UAAA,IAAc,OAAO;AAAA,QAC3D,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA,CAcR,IAAA,EAAK;AAAA,QACP,MAAA,EAAQ;AAAA,OACV,CAAE,CAAA;AAGF,MAAA,gBAAA,CAAiB,yBAAyB,yBAAyB,CAAA;AACnE,MAAAA,MAAAA,CAAM,MAAA;AAAA,QACJ,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,yBAAA,EAA0B;AAAA,QACrD,OAAO;AAAA,UACL,QAAA,EAAU,CAAA,4EAAA,CAAA;AAAA,UACV,MAAA,EAAQ;AAAA,SACV;AAAA,OACF;AAGA,MAAA,gBAAA,CAAiB,eAAe,gBAAgB,CAAA;AAChD,MAAAA,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,gBAAA,IAAoB,OAAO;AAAA,QACjE,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA,CAMR,IAAA,EAAK;AAAA,QACP,MAAA,EAAQ;AAAA,OACV,CAAE,CAAA;AAGF,MAAA,gBAAA,CAAiB,SAAS,UAAU,CAAA;AACpC,MAAAA,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,UAAA,IAAc,OAAO;AAAA,QAC3D,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA,CAIR,IAAA,EAAK;AAAA,QACP,MAAA,EAAQ;AAAA,OACV,CAAE,CAAA;AAAA,IACJ;AAAA,GACF;AACF;AAMA,eAAe,iBAAA,CACb,SAAA,EACA,SAAA,EACA,OAAA,EACe;AACf,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,MAAM,OAAO,MAAM,CAAA;AAC1C,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,0PAAe,CAAA;AAEvC,EAAA,IAAI,WAAA,GAAmB,IAAA;AACvB,EAAA,IAAI,YAAA,GAAoB,IAAA;AACxB,EAAA,MAAM,QAA6B,EAAC;AAGpC,EAAA,KAAA,MAAW,GAAA,IAAO,CAAC,KAAA,EAAO,KAAK,CAAA,EAAG;AAChC,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,MAAA,CAAOJ,uBAAAA,CAAK,KAAK,SAAA,EAAW,CAAA,YAAA,EAAe,GAAG,CAAA,CAAE,CAAC,CAAA;AACxE,MAAA,WAAA,GAAe,IAAY,OAAA,IAAW,GAAA;AACtC,MAAA;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAAC;AAAA,EACX;AAGA,EAAA,KAAA,MAAW,GAAA,IAAO,CAAC,KAAA,EAAO,KAAK,CAAA,EAAG;AAChC,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,MAAA,CAAOA,uBAAAA,CAAK,KAAK,SAAA,EAAW,CAAA,YAAA,EAAe,GAAG,CAAA,CAAE,CAAC,CAAA;AACxE,MAAA,YAAA,GAAgB,IAAY,OAAA,IAAW,GAAA;AACvC,MAAA;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAAC;AAAA,EACX;AAGA,EAAA,MAAM,UAA+B,EAAC;AACtC,EAAA,MAAM,WAAA,GAAcA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,UAAU,CAAA;AACnD,EAAA,IAAI;AACF,IAAA,MAAM,WAAA,GAAc,MAAME,oBAAAA,CAAG,OAAA,CAAQ,WAAW,CAAA;AAChD,IAAA,KAAA,MAAW,OAAO,WAAA,EAAa;AAC7B,MAAA,MAAM,aAAaF,uBAAAA,CAAK,IAAA,CAAK,aAAa,GAAA,EAAK,CAAA,EAAG,GAAG,CAAA,UAAA,CAAY,CAAA;AACjE,MAAA,IAAI;AACF,QAAA,MAAME,oBAAAA,CAAG,OAAO,UAAU,CAAA;AAC1B,QAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA;AAExC,QAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,GAA0B,CAAA,EAAG;AACrE,UAAA,IACE,GAAA,CAAI,SAAS,QAAQ,CAAA,IACrB,SACA,OAAO,KAAA,KAAU,QAAA,IAChB,KAAA,CAAc,IAAA,EACf;AACA,YAAA,OAAA,CAAS,KAAA,CAAc,IAAI,CAAA,GAAI,KAAA;AAAA,UACjC;AAAA,QACF;AAAA,MACF,CAAA,CAAA,MAAQ;AAAA,MAAC;AAAA,IACX;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAAC;AAGT,EAAA,MAAM,QAAA,GAAWF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,OAAO,CAAA;AAC7C,EAAA,IAAI;AACF,IAAA,MAAM,KAAA,GAAQ,MAAME,oBAAAA,CAAG,OAAA,CAAQ,QAAQ,CAAA;AACvC,IAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,MAAA,IAAI,CAAC,IAAA,CAAK,KAAA,CAAM,YAAY,CAAA,EAAG;AAC/B,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,YAAA,EAAc,EAAE,CAAA;AAC1C,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,MAAA,CAAOF,wBAAK,IAAA,CAAK,QAAA,EAAU,IAAI,CAAC,CAAA;AACvD,QAAA,MAAM,MAAA,GAAU,IAAY,OAAA,IAAW,GAAA;AAGvC,QAAA,MAAM,YAAY,MAAA,CAAO,QAAA,IAAY,EAAC,EAAG,GAAA,CAAI,CAAC,OAAA,KAAiB;AAC7D,UAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,IAAI,CAAA;AACnC,UAAA,IAAI,CAAC,MAAA,EAAQ,QAAA,EAAU,OAAO,OAAA;AAC9B,UAAA,OAAO;AAAA,YACL,GAAG,OAAA;AAAA,YACH,UAAA,EACE,OAAA,CAAQ,UAAA,EAAY,MAAA,GAAS,CAAA,GACzB,QAAQ,UAAA,GACR,MAAA,CAAO,QAAA,CAAS,UAAA,IAAc,EAAC;AAAA,YACrC,MAAA,EACE,OAAA,CAAQ,MAAA,EAAQ,MAAA,GAAS,CAAA,GACrB,QAAQ,MAAA,GACR,MAAA,CAAO,QAAA,CAAS,MAAA,IAAU,EAAC;AAAA,YACjC,QAAA,EAAU;AAAA,cACR,GAAI,MAAA,CAAO,QAAA,CAAS,QAAA,IAAY,EAAC;AAAA,cACjC,GAAG,OAAA,CAAQ;AAAA;AACb,WACF;AAAA,QACF,CAAC,CAAA;AAED,QAAA,KAAA,CAAM,IAAI,CAAA,GAAI;AAAA,UACZ,EAAA,EAAI,IAAA;AAAA,UACJ,IAAA,EAAM,OAAO,KAAA,IAAS,IAAA;AAAA,UACtB,IAAA,EAAM,MAAA,CAAO,IAAA,IAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA;AAAA,UAC7B,QAAQ,EAAE,EAAA,EAAI,IAAA,EAAM,GAAG,QAAQ,QAAA,EAAS;AAAA,UACxC,QAAA;AAAA,UACA,KAAK,MAAA,CAAO;AAAA,SACd;AAAA,MACF,CAAA,CAAA,MAAQ;AAAA,MAAC;AAAA,IACX;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAAC;AAET,EAAA,MAAME,oBAAAA,CAAG,SAAA;AAAA,IACPF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,iBAAiB,CAAA;AAAA,IACtC,IAAA,CAAK,SAAA;AAAA,MACH;AAAA,QACE,OAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACL,EAAA,EAAI,OAAA;AAAA,UACJ,IAAA,EAAM,aAAa,IAAA,IAAQ,OAAA;AAAA,UAC3B,MAAA,EAAQ,WAAA;AAAA,UACR,MAAA,EAAQ;AAAA,YACN,MAAA,EAAQ,YAAA,EAAc,cAAA,IAAkB,EAAC;AAAA,YACzC,MAAA,EAAQ,YAAA,EAAc,cAAA,IAAkB;AAAC,WAC3C;AAAA,UACA,KAAA,EAAO,MAAA,CAAO,IAAA,CAAK,KAAK;AAAA,SAC1B;AAAA,QACA;AAAA,OACF;AAAA,MACA,IAAA;AAAA,MACA;AAAA;AACF,GACF;AACA,EAAAJ,cAAA,CAAO,KAAK,CAAA,2BAAA,EAA8B,MAAA,CAAO,KAAK,KAAK,CAAA,CAAE,MAAM,CAAA,OAAA,CAAS,CAAA;AAC9E;AAMA,eAAe,iBAAiB,SAAA,EAAkC;AAChE,EAAA,MAAM,SAAA,GAAYI,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,iBAAiB,CAAA;AACxD,EAAA,MAAM,OAAA,GAAUA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,qBAAqB,CAAA;AAM1D,EAAA,IAAI,YAAA;AACJ,EAAA,IAAI;AACF,IAAA,YAAA,GAAe,MAAME,oBAAAA,CAAG,QAAA,CAAS,SAAA,EAAW,OAAO,CAAA;AAAA,EACrD,CAAA,CAAA,MAAQ;AAEN,IAAA,MAAM,SAAA,GAAYF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,UAAU,CAAA;AACjD,IAAA,IAAI;AACF,MAAA,YAAA,GAAe,MAAME,oBAAAA,CAAG,QAAA,CAAS,SAAA,EAAW,OAAO,CAAA;AAAA,IACrD,CAAA,CAAA,MAAQ;AACN,MAAAN,cAAA,CAAO,QAAQ,sDAAsD,CAAA;AACrE,MAAA;AAAA,IACF;AAEA,IAAA,MAAMY,KAAAA,GAAOL,uBAAAA,CACV,UAAA,CAAW,QAAQ,CAAA,CACnB,MAAA,CAAO,YAAY,CAAA,CACnB,MAAA,CAAO,KAAK,CAAA,CACZ,KAAA,CAAM,GAAG,CAAC,CAAA;AAEb,IAAA,MAAMM,WAAAA,GAAa,gBAAgBD,KAAI,CAAA,GAAA,CAAA;AACvC,IAAA,MAAM,YAAA,GAAeR,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,cAAc,CAAA;AACxD,IAAA,MAAMU,cAAAA,GAAgB,gBAAgBF,KAAI,CAAA,OAAA,CAAA;AAE1C,IAAA,YAAA,GAAe,YAAA,CAAa,OAAA;AAAA,MAC1B,uCAAA;AAAA,MACA,wBAAwBE,cAAa,CAAA;AAAA,KACvC;AAGA,IAAA,MAAMC,YAAW,MAAMZ,SAAAA,CAAK,sBAAsB,EAAE,GAAA,EAAK,WAAW,CAAA;AACpE,IAAA,KAAA,MAAW,KAAKY,SAAAA,EAAU;AACxB,MAAA,MAAMT,qBAAG,MAAA,CAAOF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,CAAC,CAAC,CAAA;AAAA,IACzC;AAEA,IAAA,MAAME,qBAAG,SAAA,CAAUF,uBAAAA,CAAK,KAAK,SAAA,EAAWS,WAAU,GAAG,YAAY,CAAA;AACjE,IAAA,MAAMP,oBAAAA,CAAG,OAAO,SAAS,CAAA;AAGzB,IAAA,IAAI;AACF,MAAA,MAAMA,oBAAAA,CAAG,OAAO,SAAS,CAAA;AAAA,IAC3B,CAAA,CAAA,MAAQ;AAAA,IAER;AACA,IAAA,MAAMA,oBAAAA,CAAG,SAAA,CAAU,SAAA,EAAW,YAAY,CAAA;AAE1C,IAAA,IAAI;AACF,MAAA,MAAMA,oBAAAA,CAAG,OAAO,YAAY,CAAA;AAC5B,MAAA,MAAMA,qBAAG,MAAA,CAAO,YAAA,EAAcF,wBAAK,IAAA,CAAK,SAAA,EAAWU,cAAa,CAAC,CAAA;AAAA,IACnE,CAAA,CAAA,MAAQ;AAAA,IAER;AAEA,IAAAd,cAAA,CAAO,IAAA,CAAK,CAAA,cAAA,EAAiBa,WAAU,CAAA,CAAE,CAAA;AACzC,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,IAAA,GAAON,uBAAAA,CACV,UAAA,CAAW,QAAQ,CAAA,CACnB,MAAA,CAAO,YAAY,CAAA,CACnB,MAAA,CAAO,KAAK,CAAA,CACZ,KAAA,CAAM,GAAG,CAAC,CAAA;AAEb,EAAA,MAAM,UAAA,GAAa,gBAAgB,IAAI,CAAA,GAAA,CAAA;AACvC,EAAA,MAAM,aAAA,GAAgB,gBAAgB,IAAI,CAAA,OAAA,CAAA;AAE1C,EAAA,YAAA,GAAe,YAAA,CAAa,OAAA;AAAA,IAC1B,8CAAA;AAAA,IACA,wBAAwB,aAAa,CAAA;AAAA,GACvC;AAGA,EAAA,MAAM,WAAW,MAAMJ,SAAAA,CAAK,sBAAsB,EAAE,GAAA,EAAK,WAAW,CAAA;AACpE,EAAA,KAAA,MAAW,KAAK,QAAA,EAAU;AACxB,IAAA,MAAMG,qBAAG,MAAA,CAAOF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,CAAC,CAAC,CAAA;AAAA,EACzC;AAEA,EAAA,MAAME,qBAAG,SAAA,CAAUF,uBAAAA,CAAK,KAAK,SAAA,EAAW,UAAU,GAAG,YAAY,CAAA;AAGjE,EAAA,IAAI;AACF,IAAA,MAAME,oBAAAA,CAAG,OAAO,SAAS,CAAA;AAAA,EAC3B,CAAA,CAAA,MAAQ;AAAA,EAER;AACA,EAAA,MAAMA,oBAAAA,CAAG,SAAA,CAAU,SAAA,EAAW,YAAY,CAAA;AAE1C,EAAA,IAAI;AACF,IAAA,MAAMA,oBAAAA,CAAG,OAAO,OAAO,CAAA;AACvB,IAAA,MAAMA,qBAAG,MAAA,CAAO,OAAA,EAASF,wBAAK,IAAA,CAAK,SAAA,EAAW,aAAa,CAAC,CAAA;AAAA,EAC9D,CAAA,CAAA,MAAQ;AAAA,EAER;AAEA,EAAAJ,cAAA,CAAO,IAAA,CAAK,CAAA,cAAA,EAAiB,UAAU,CAAA,CAAE,CAAA;AAC3C;AAOA,eAAe,wBACb,SAAA,EACkD;AAClD,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,MAAM,OAAO,MAAM,CAAA;AAC1C,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,0PAAe,CAAA;AAEvC,EAAA,MAAM,cAAc,MAAMG,SAAAA,CAAK,2BAA2B,EAAE,GAAA,EAAK,WAAW,CAAA;AAC5E,EAAA,MAAM,eAAwD,EAAC;AAE/D,EAAA,KAAA,MAAW,QAAQ,WAAA,EAAa;AAC9B,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,MAAA,CAAOC,wBAAK,IAAA,CAAK,SAAA,EAAW,IAAI,CAAC,CAAA;AACxD,MAAA,MAAMC,SAAA,GAAU,GAAA;AAGhB,MAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,MAAA,CAAOA,SAAO,CAAA,EAAG;AAC1C,QAAA,IACE,KAAA,IACA,OAAO,KAAA,KAAU,QAAA,IACjB,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IACtB,KAAA,CAAM,gBAAA,IACN,OAAO,KAAA,CAAM,qBAAqB,QAAA,EAClC;AACA,UAAA,YAAA,CAAa,KAAA,CAAM,IAAI,CAAA,GAAI,KAAA,CAAM,gBAAA;AAAA,QACnC;AAAA,MACF;AAAA,IACF,SAAS,GAAA,EAAK;AACZ,MAAAL,cAAA,CAAO,OAAA;AAAA,QACL,CAAA,sBAAA,EAAyB,IAAI,CAAA,EAAA,EAAK,GAAA,YAAe,QAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,OACpF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,YAAA;AACT;AAMA,eAAe,kBAAA,CACb,WACA,SAAA,EACe;AACf,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,MAAM,cAAA,CAAe,SAAS,CAAA;AAC9C,IAAA,MAAMM,oBAAAA,CAAG,SAAA;AAAA,MACPF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,cAAc,CAAA;AAAA,MACnC,kBAAkB,OAAO;AAAA,KAC3B;AACA,IAAAJ,cAAA,CAAO,IAAA;AAAA,MACL,2BAA2B,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,QAAQ,EAAE,MAAM,CAAA,UAAA;AAAA,KACjE;AAAA,EACF,SAAS,GAAA,EAAK;AACZ,IAAAA,cAAA,CAAO,OAAA;AAAA,MACL,6BAA6B,GAAA,YAAe,KAAA,GAAQ,IAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,KAC/E;AAAA,EACF;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,MAAM,eAAA,CAAgB,SAAS,CAAA;AAC/C,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACjC,MAAM,CAAA,CAAE,YAAA;AAAA,MACR,MAAM,CAAA,CAAE,IAAA;AAAA,MACR,MAAM,CAAA,CAAE,IAAA;AAAA,MACR,aAAa,CAAA,CAAE;AAAA,KACjB,CAAE,CAAA;AACF,IAAA,MAAMM,oBAAAA,CAAG,SAAA;AAAA,MACPF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,qBAAqB,CAAA;AAAA,MAC1C,IAAA,CAAK,UAAU,EAAE,eAAA,EAAiB,GAAG,MAAA,EAAO,EAAG,MAAM,CAAC;AAAA,KACxD;AACA,IAAAJ,cAAA,CAAO,IAAA,CAAK,CAAA,+BAAA,EAAkC,MAAA,CAAO,MAAM,CAAA,QAAA,CAAU,CAAA;AAAA,EACvE,SAAS,GAAA,EAAK;AACZ,IAAAA,cAAA,CAAO,OAAA;AAAA,MACL,oCAAoC,GAAA,YAAe,KAAA,GAAQ,IAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,KACtF;AAAA,EACF;AACF;AAKA,eAAsB,gBAAA,CACpB,SAAA,EACA,SAAA,EACA,SAAA,EACe;AAEf,EAAA,IAAI,OAAA,GAAU,OAAA;AACd,EAAA,IAAI,OAAA,GAAU,SAAA;AACd,EAAA,IAAI;AACF,IAAA,MAAM,UAAA,GAAa,MAAMM,oBAAAA,CAAG,QAAA;AAAA,MAC1BF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,cAAc,CAAA;AAAA,MACnC;AAAA,KACF;AACA,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,UAAU,CAAA;AACjC,IAAA,OAAA,GAAU,IAAI,OAAA,IAAW,OAAA;AAEzB,IAAA,IAAI,IAAI,IAAA,EAAM;AACZ,MAAA,OAAA,GAAU,GAAA,CAAI,IAAA,CAAK,OAAA,CAAQ,iBAAA,EAAmB,EAAE,CAAA;AAAA,IAClD;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAER;AAEA,EAAA,MAAM,CAAC,YAAA,EAAc,UAAA,EAAY,WAAW,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,IAChED,SAAAA,CAAK,sBAAA,EAAwB,EAAE,GAAA,EAAK,WAAW,CAAA;AAAA,IAC/CA,SAAAA,CAAK,oBAAA,EAAsB,EAAE,GAAA,EAAK,WAAW,CAAA;AAAA,IAC7CA,SAAAA,CAAK,gBAAA,EAAkB,EAAE,GAAA,EAAK,WAAW;AAAA,GAC1C,CAAA;AAGD,EAAA,MAAM,gBAAA,GAAmB,MAAM,uBAAA,CAAwB,SAAS,CAAA;AAEhE,EAAA,IAAI,cAAA,GAAiB,KAAA;AACrB,EAAA,IAAI;AACF,IAAA,MAAMG,qBAAG,MAAA,CAAOF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,iBAAiB,CAAC,CAAA;AACvD,IAAA,cAAA,GAAiB,IAAA;AAAA,EACnB,CAAA,CAAA,MAAQ;AAAA,EAER;AAEA,EAAA,MAAM,QAAA,GAAW,MAAMD,SAAAA,CAAK,MAAA,EAAQ,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,IAAA,EAAM,CAAA;AACnE,EAAA,MAAM,OAAA,GAAU,SAAS,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,QAAA,CAAS,KAAK,CAAC,CAAA;AACxD,EAAA,MAAM,QAAA,GAAW,SAAS,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,QAAA,CAAS,MAAM,CAAC,CAAA;AAE1D,EAAA,MAAM,SAAA,GACJ,QAAQ,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,QAAA,CAAS,cAAc,CAAC,CAAA,IAAK,iBAAA;AAErD,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,OAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA,EAAM,QAAQ,MAAA,CAAO,CAAC,EAAE,WAAA,EAAY,GAAI,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAA;AAAA,IACvD,UAAA,EAAA,iBAAY,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,IACnC,MAAA,EAAQ,KAAA;AAAA,IACR,QAAA,EAAU,SAAA;AAAA,IACV,MAAA,EAAQ,QAAA;AAAA,IAER,MAAA,EAAQ;AAAA,MACN,UAAU,YAAA,CAAa,MAAA;AAAA,MACvB,QAAQ,UAAA,CAAW,MAAA;AAAA,MACnB,SAAS,WAAA,CAAY;AAAA,KACvB;AAAA,IAEA,MAAA,EAAQ;AAAA,MACN,KAAA,EAAO,SAAA;AAAA,MACP,MAAA,EAAQ,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,SAAA,IAAa,CAAC,CAAA,CAAE,QAAA,CAAS,MAAM,CAAC,CAAA;AAAA,MACpE,QAAQ,QAAA,CAAS,MAAA;AAAA,QAAO,CAAC,MACvB,CAAC,MAAA,EAAQ,QAAQ,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAQ,OAAO,CAAA,CAAE,IAAA;AAAA,UAAK,CAAC,GAAA,KACvD,CAAA,CAAE,QAAA,CAAS,GAAG;AAAA;AAChB,OACF;AAAA,MACA,WAAA,EAAa;AAAA,KACf;AAAA,IAEA,QAAA,EAAU,CAAC,OAAA,EAAS,WAAA,EAAa,gBAAgB,CAAA;AAAA,IAEjD,MAAA,EAAQ;AAAA,MACN,QAAA,EAAU,YAAA;AAAA,MACV,MAAA,EAAQ,UAAA;AAAA,MACR,OAAA,EAAS,WAAA;AAAA,MACT;AAAA,KACF;AAAA;AAAA,IAGA;AAAA,GACF;AAEA,EAAA,MAAMG,oBAAAA,CAAG,SAAA;AAAA,IACPF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,eAAe,CAAA;AAAA,IACpC,IAAA,CAAK,SAAA,CAAU,QAAA,EAAU,IAAA,EAAM,CAAC;AAAA,GAClC;AACF;AAQA,eAAsB,sBAAA,CACpB,WACA,SAAA,EACkB;AAClB,EAAA,MAAM,SAAA,GAAYA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,MAAM,CAAA;AAG7C,EAAA,MAAM,WAAA,GAAcA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,iBAAiB,CAAA;AAC1D,EAAA,MAAM,UAAA,GAAaA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,UAAU,CAAA;AAElD,EAAA,IAAI,UAAA,GAAa,UAAA;AACjB,EAAA,IAAI;AACF,IAAA,MAAME,oBAAAA,CAAG,OAAO,WAAW,CAAA;AAC3B,IAAA,UAAA,GAAa,WAAA;AAAA,EACf,CAAA,CAAA,MAAQ;AAAA,EAER;AAGA,EAAA,MAAM,QAAA,GAAWF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,kBAAkB,CAAA;AACxD,EAAA,MAAME,qBAAG,KAAA,CAAM,SAAA,EAAW,EAAE,SAAA,EAAW,MAAM,CAAA;AAC7C,EAAA,MAAMA,oBAAAA,CAAG,SAAA,CAAU,QAAA,EAAU,YAAY,CAAA;AAEzC,EAAA,MAAM,YAAA,GAAqC;AAAA,IACzC,WAAA,EAAa,CAAC,UAAU,CAAA;AAAA,IACxB,MAAA,EAAQ,IAAA;AAAA,IACR,QAAA,EAAU,SAAA;AAAA,IACV,MAAA,EAAQ,KAAA;AAAA,IACR,MAAA,EAAQ,SAAA;AAAA,IACR,SAAA,EAAW,KAAA;AAAA,IACX,UAAA,EAAY,eAAA;AAAA,IACZ,MAAA,EAAQ;AAAA,MACN,EAAA,EAAI;AAAA,KACN;AAAA,IAEA,OAAA,EAAS;AAAA,MACP,iBAAA;AAAA,MACA,sBAAA;AAAA,MACA,uBAAuB,SAAS,CAAA;AAAA,MAChC,0BAA0B,SAAS;AAAA,KACrC;AAAA,IAEA,UAAU,EAAC;AAAA,IAEX,KAAA,EAAO;AAAA,MACL,MAAA,EAAQ,SAAA;AAAA,MACR,MAAA,EAAQ;AAAA,KACV;AAAA,IAEA,MAAA,EAAQ,CAAC,QAAQ,CAAA;AAAA,IAEjB,MAAA,EAAQ;AAAA,MACN,sBAAA,EAAwB,IAAA,CAAK,SAAA,CAAU,YAAY,CAAA;AAAA,MACnD,MAAA,EAAQ;AAAA,KACV;AAAA,IAEA,MAAA,EAAQ,IAAA;AAAA,IACR,SAAA,EAAW,IAAA;AAAA,IACX,QAAA,EAAU,SAAA;AAAA,IACV,MAAA,EAAQ,QAAA;AAAA,IACR,GAAA,EAAK,WAAA;AAAA,IACL,eAAA,EAAiB,OAAA;AAAA,IAEjB,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,KAAA,EAAO,IAAA;AAAA,MACP,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,MAAA;AAAA,MACT,MAAA,EAAQ,MAAA;AAAA,MACR,MAAA,EAAQ,MAAA;AAAA,MACR,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS;AAAA,KACX;AAAA,IAEA,UAAA,EAAY,sBAAA;AAAA,IACZ,UAAA,EAAY,IAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACZ;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,MAAcU,kBAAA,CAAA,KAAA,CAAM,YAAY,CAAA;AAG/C,IAAA,IAAI;AACF,MAAA,MAAMV,oBAAAA,CAAG,OAAO,QAAQ,CAAA;AAAA,IAC1B,CAAA,CAAA,MAAQ;AAAA,IAER;AAGA,IAAA,MAAM,iBAAiB,SAAS,CAAA;AAKhC,IAAA,MAAM,cAAA,GAAiBF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,QAAQ,CAAA;AACpD,IAAA,MAAM,eAAA,GAAkBA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,cAAc,CAAA;AAC3D,IAAA,IAAI;AACF,MAAA,MAAME,oBAAAA,CAAG,OAAO,cAAc,CAAA;AAC9B,MAAA,MAAMA,qBAAG,EAAA,CAAG,cAAA,EAAgB,iBAAiB,EAAE,SAAA,EAAW,MAAM,CAAA;AAChE,MAAAN,cAAA,CAAO,KAAK,4CAA4C,CAAA;AAAA,IAC1D,CAAA,CAAA,MAAQ;AAAA,IAER;AAGA,IAAA,MAAM,gBAAA,CAAiB,SAAA,EAAW,SAAA,EAAW,SAAS,CAAA;AAKtD,IAAA,MAAM,kBAAA,CAAmB,WAAW,SAAS,CAAA;AAG7C,IAAA,MAAM,iBAAA,CAAkB,SAAA,EAAW,SAAA,EAAW,SAAS,CAAA;AAIvD,IAAA,MAAM,gBAAA,CAAiB,WAAW,SAAS,CAAA;AAG3C,IAAA,IAAI,OAAO,QAAA,EAAU;AACnB,MAAA,MAAM,OAAA,GAAU,OAAO,QAAA,CAAS,OAAA;AAChC,MAAA,IAAI,SAAA,GAAY,CAAA;AAChB,MAAA,KAAA,MAAW,MAAA,IAAU,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA,EAAG;AAC3C,QAAA,SAAA,IAAa,MAAA,CAAO,KAAA;AAAA,MACtB;AACA,MAAA,MAAM,OAAA,GAAA,CAAW,SAAA,GAAY,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAA;AAC5C,MAAAA,cAAA,CAAO,IAAA,CAAK,CAAA,aAAA,EAAgB,OAAO,CAAA,GAAA,CAAK,CAAA;AAAA,IAC1C;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,KAAA,EAAO;AAEd,IAAA,IAAI;AACF,MAAA,MAAMM,oBAAAA,CAAG,OAAO,QAAQ,CAAA;AAAA,IAC1B,CAAA,CAAA,MAAQ;AAAA,IAER;AAEA,IAAAN,cAAA,CAAO,KAAA,CAAM,CAAA,4BAAA,EAA+B,KAAK,CAAA,CAAE,CAAA;AACnD,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AASA,eAAsB,yBAAA,CACpB,WACA,SAAA,EAC+D;AAC/D,EAAA,MAAM,SAAA,GAAYI,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,MAAM,CAAA;AAG7C,EAAA,MAAM,WAAA,GAAcA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,iBAAiB,CAAA;AAC1D,EAAA,MAAM,UAAA,GAAaA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,UAAU,CAAA;AAClD,EAAA,IAAI,UAAA,GAAa,UAAA;AACjB,EAAA,IAAI;AACF,IAAA,MAAME,oBAAAA,CAAG,OAAO,WAAW,CAAA;AAC3B,IAAA,UAAA,GAAa,WAAA;AAAA,EACf,CAAA,CAAA,MAAQ;AAAA,EAER;AAGA,EAAA,MAAM,QAAA,GAAWF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,kBAAkB,CAAA;AACxD,EAAA,MAAME,qBAAG,KAAA,CAAM,SAAA,EAAW,EAAE,SAAA,EAAW,MAAM,CAAA;AAC7C,EAAA,MAAMA,oBAAAA,CAAG,SAAA,CAAU,QAAA,EAAU,YAAY,CAAA;AAEzC,EAAA,MAAM,YAAA,GAAqC;AAAA,IACzC,WAAA,EAAa,CAAC,UAAU,CAAA;AAAA,IACxB,MAAA,EAAQ,IAAA;AAAA,IACR,QAAA,EAAU,SAAA;AAAA,IACV,MAAA,EAAQ,KAAA;AAAA,IACR,MAAA,EAAQ,SAAA;AAAA,IACR,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN,EAAA,EAAI;AAAA,KACN;AAAA,IAEA,OAAA,EAAS;AAAA,MACP,iBAAA;AAAA,MACA,sBAAA;AAAA,MACA,uBAAuB,SAAS,CAAA;AAAA,MAChC,0BAA0B,SAAS;AAAA,KACrC;AAAA,IACA,UAAU,EAAC;AAAA,IAEX,KAAA,EAAO;AAAA,MACL,MAAA,EAAQ,SAAA;AAAA,MACR,MAAA,EAAQ;AAAA,KACV;AAAA,IAEA,MAAA,EAAQ,CAAC,QAAQ,CAAA;AAAA,IAEjB,MAAA,EAAQ;AAAA,MACN,sBAAA,EAAwB,IAAA,CAAK,SAAA,CAAU,aAAa,CAAA;AAAA,MACpD,MAAA,EAAQ;AAAA,KACV;AAAA,IAEA,MAAA,EAAQ,KAAA;AAAA,IACR,SAAA,EAAW,IAAA;AAAA,IACX,QAAA,EAAU,SAAA;AAAA,IACV,MAAA,EAAQ,QAAA;AAAA,IACR,GAAA,EAAK,WAAA;AAAA,IACL,eAAA,EAAiB,OAAA;AAAA,IAEjB,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,KAAA,EAAO,IAAA;AAAA,MACP,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,MAAA;AAAA,MACT,MAAA,EAAQ,MAAA;AAAA,MACR,MAAA,EAAQ,MAAA;AAAA,MACR,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS;AAAA,KACX;AAAA,IAEA,UAAA,EAAY,sBAAA;AAAA,IACZ,UAAA,EAAY,IAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACZ;AAEA,EAAA,MAAMW,QAAAA,GAAU,MAAcD,kBAAA,CAAA,OAAA,CAAQ,YAAY,CAAA;AAGlD,EAAA,MAAMC,SAAQ,OAAA,EAAQ;AAMtB,EAAA,MAAM,gBAAA,CAAiB,SAAA,EAAW,SAAA,EAAW,SAAS,CAAA;AAGtD,EAAA,MAAM,iBAAA,CAAkB,SAAA,EAAW,SAAA,EAAW,SAAS,CAAA;AAEvD,EAAA,OAAO,EAAE,OAAA,EAAAA,QAAAA,EAAS,SAAA,EAAU;AAC9B;AAQA,eAAsB,sBACpB,SAAA,EACiB;AACjB,EAAA,MAAM,SAAA,GAAYb,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,MAAM,CAAA;AAC7C,EAAA,MAAME,qBAAG,KAAA,CAAM,SAAA,EAAW,EAAE,SAAA,EAAW,MAAM,CAAA;AAE7C,EAAA,MAAM,UAAA,GAAaF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,oBAAoB,CAAA;AAK5D,EAAA,MAAM,SAAA,GAAY;AAAA,IAChBA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,IAAA,EAAM,WAAW,iBAAiB,CAAA;AAAA,IACvDA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,SAAA,EAAW,iBAAiB,CAAA;AAAA,IACjDA,wBAAK,IAAA,CAAK,SAAA,EAAW,MAAM,IAAA,EAAM,KAAA,EAAO,WAAW,iBAAiB;AAAA,GACtE;AAEA,EAAA,IAAI,gBAAA,GAAkC,IAAA;AACtC,EAAA,KAAA,MAAW,OAAO,SAAA,EAAW;AAC3B,IAAA,IAAI;AACF,MAAA,MAAME,oBAAAA,CAAG,OAAO,GAAG,CAAA;AACnB,MAAA,gBAAA,GAAmB,GAAA;AACnB,MAAA;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA;AAAA,EAA4C,SAAA,CAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,KAClE;AAAA,EACF;AAUA,EAAA,MAAM,gBAAA,GAA2B;AAAA,IAC/B,IAAA,EAAM,aAAA;AAAA,IACN,MAAME,MAAAA,EAAO;AAEX,MAAAA,OAAM,SAAA,CAAU,EAAE,MAAA,EAAQ,eAAA,IAAmB,OAAO;AAAA,QAClD,IAAA,EAAM,aAAA;AAAA,QACN,SAAA,EAAW;AAAA,OACb,CAAE,CAAA;AACF,MAAAA,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,aAAA,IAAiB,OAAO;AAAA,QAC9D,QAAA,EAAU,iCAAA;AAAA,QACV,MAAA,EAAQ;AAAA,OACV,CAAE,CAAA;AAGF,MAAA,MAAM,YAAA,GAAe;AAAA,QACnB,IAAA;AAAA,QACA,aAAA;AAAA,QACA,MAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,eAAA;AAAA,QACA,MAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,aAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,KAAA,MAAW,OAAO,YAAA,EAAc;AAC9B,QAAAA,MAAAA,CAAM,SAAA;AAAA,UACJ,EAAE,MAAA,EAAQ,IAAI,MAAA,CAAO,CAAA,CAAA,EAAI,GAAA,CAAI,OAAA,CAAQ,GAAA,EAAK,KAAK,CAAC,CAAA,CAAA,CAAG,CAAA,EAAE;AAAA,UACrD,OAAO;AAAA,YACL,IAAA,EAAM,GAAA;AAAA,YACN,SAAA,EAAW;AAAA,WACb;AAAA,SACF;AAAA,MACF;AACA,MAAAA,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,WAAA,EAAY,EAAG,CAAC,IAAA,KAAS;AAC/D,QAAA,MAAM,KAAA,GAAgC;AAAA,UACpC,MAAA,EACE,mLAAA;AAAA,UACF,IAAA,EAAM,2MAAA;AAAA,UACN,EAAA,EAAI;AAAA,SACN;AACA,QAAA,OAAO;AAAA,UACL,QAAA,EAAU,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,IAAK,oBAAA;AAAA,UAC9B,MAAA,EAAQ;AAAA,SACV;AAAA,MACF,CAAC,CAAA;AAID,MAAA,MAAM,eAAA,uBAAsB,GAAA,EAAY;AACxC,MAAA,IAAI,aAAA,GAAgB,KAAA;AACpB,MAAAA,OAAM,SAAA,CAAU,EAAE,QAAQ,eAAA,EAAgB,EAAG,OAAO,IAAA,KAAS;AAC3D,QAAA,IAAI,IAAA,CAAK,UAAA,EAAY,QAAA,EAAU,OAAO,MAAA;AACtC,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAMA,MAAAA,CAAM,OAAA,CAAQ,KAAK,IAAA,EAAM;AAAA,YAC5C,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,YAAY,IAAA,CAAK,UAAA;AAAA,YACjB,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,SAAA,EAAW,MAAA;AAAA,YACX,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA;AAAK,WAC9B,CAAA;AACD,UAAA,IAAI,CAAC,MAAA,CAAO,MAAA,CAAO,MAAA,EAAQ,OAAO,MAAA;AAAA,QACpC,CAAA,CAAA,MAAQ;AAAA,QAAC;AACT,QAAA,OAAO,EAAE,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,WAAW,aAAA,EAAc;AAAA,MACrD,CAAC,CAAA;AACD,MAAAA,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,aAAA,IAAiB,YAAY;AAEnE,QAAA,IAAI,CAAC,aAAA,EAAe;AAClB,UAAA,aAAA,GAAgB,IAAA;AAEhB,UAAA,MAAM,iBAAA,GAAoB;AAAA,YACxBJ,wBAAK,IAAA,CAAK,SAAA,EAAW,cAAA,EAAgB,WAAA,EAAa,QAAQ,KAAK,CAAA;AAAA,YAC/DA,wBAAK,IAAA,CAAK,SAAA,EAAW,MAAM,IAAA,EAAM,UAAA,EAAY,QAAQ,KAAK,CAAA;AAAA;AAAA,YAC1DA,uBAAAA,CAAK,IAAA;AAAA,cACH,SAAA;AAAA,cACA,IAAA;AAAA,cACA,IAAA;AAAA,cACA,IAAA;AAAA,cACA,IAAA;AAAA,cACA,UAAA;AAAA,cACA,MAAA;AAAA,cACA;AAAA;AACF;AAAA,WACF;AACA,UAAA,IAAI,aAAA,GAA+B,IAAA;AACnC,UAAA,KAAA,MAAW,aAAa,iBAAA,EAAmB;AACzC,YAAA,IAAI;AACF,cAAA,MAAME,oBAAAA,CAAG,OAAO,SAAS,CAAA;AACzB,cAAA,aAAA,GAAgB,SAAA;AAChB,cAAA;AAAA,YACF,CAAA,CAAA,MAAQ;AAAA,YAAC;AAAA,UACX;AACA,UAAA,IAAI,aAAA,EAAe;AACjB,YAAA,IAAI;AACF,cAAA,MAAM,UAAU,MAAM,sBAAA;AAAA,gBACpB,aAAA;AAAA,gBACA;AAAA,eACF;AACA,cAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA,EAAG;AAC1C,gBAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,EAAO,eAAA,CAAgB,GAAA,CAAI,IAAI,CAAA;AAAA,cACpD;AAAA,YACF,CAAA,CAAA,MAAQ;AAAA,YAAC;AAAA,UACX,CAAA,MAAO;AAEL,YAAA,MAAM,kBAAA,GAA+B;AAAA,cACnCF,wBAAK,IAAA,CAAK,SAAA,EAAW,cAAA,EAAgB,WAAA,EAAa,QAAQ,MAAM;AAAA,aAClE;AACA,YAAA,MAAM,eAAe,MAAM,sBAAA;AAAA,cACzB,SAAA;AAAA,cACAA,uBAAAA,CAAK,IAAA,CAAK,WAAA,EAAa,MAAA,EAAQ,MAAM;AAAA,aACvC;AACA,YAAA,IAAI,YAAA,EAAc,kBAAA,CAAmB,IAAA,CAAK,YAAY,CAAA;AAEtD,YAAA,KAAA,MAAW,aAAa,kBAAA,EAAoB;AAC1C,cAAA,IAAI;AACF,gBAAA,MAAME,oBAAAA,CAAG,OAAO,SAAS,CAAA;AACzB,gBAAA,MAAM,WAAW,MAAMH,SAAAA,CAAK,SAAS,EAAE,GAAA,EAAK,WAAW,CAAA;AACvD,gBAAA,MAAM,WAAA,GACJ,qDAAA;AACF,gBAAA,KAAA,MAAW,QAAQ,QAAA,EAAU;AAC3B,kBAAA,MAAM,OAAA,GAAU,MAAMG,oBAAAA,CAAG,QAAA;AAAA,oBACvBF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,IAAI,CAAA;AAAA,oBACzB;AAAA,mBACF;AACA,kBAAA,KAAA,MAAW,KAAA,IAAS,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA,EAAG;AACjD,oBAAA,KAAA,MAAW,QAAQ,KAAA,CAAM,CAAC,CAAA,CAAE,KAAA,CAAM,GAAG,CAAA,EAAG;AACtC,sBAAA,MAAM,QAAA,GAAW,KACd,IAAA,EAAK,CACL,MAAM,UAAU,CAAA,CAAE,CAAC,CAAA,CACnB,IAAA,EAAK;AACR,sBAAA,IAAI,QAAA,IAAY,CAAC,QAAA,CAAS,UAAA,CAAW,OAAO,CAAA,EAAG;AAC7C,wBAAA,eAAA,CAAgB,IAAI,QAAQ,CAAA;AAAA,sBAC9B;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AACA,gBAAA;AAAA,cACF,CAAA,CAAA,MAAQ;AAAA,cAAC;AAAA,YACX;AAAA,UACF;AAEA,UAAA,IAAI;AACF,YAAA,MAAM,UAAU,MAAM,sBAAA;AAAA,cACpB,SAAA;AAAA,cACA;AAAA,aACF;AACA,YAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA,EAAG;AAC1C,cAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,EAAO,eAAA,CAAgB,GAAA,CAAI,IAAI,CAAA;AAAA,YACpD;AAAA,UACF,CAAA,CAAA,MAAQ;AAAA,UAAC;AAAA,QACX;AAEA,QAAA,MAAM,WAAA,GAAc,CAAC,GAAG,eAAe,CAAA,CACpC,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,QAAA,EAAW,CAAC,CAAA,CAAE,CAAA,CACzB,KAAK,IAAI,CAAA;AACZ,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA;AAAA,SAAA,EAET,WAAW,CAAA;AAAA;AAAA,UAAA,CAAA,CAEV,IAAA,EAAK;AAAA,UACP,MAAA,EAAQ;AAAA,SACV;AAAA,MACF,CAAC,CAAA;AAED,MAAAI,OAAM,SAAA,CAAU,EAAE,QAAQ,gBAAA,EAAiB,EAAG,OAAO,IAAA,KAAS;AAC5D,QAAA,IAAI,IAAA,CAAK,UAAA,EAAY,QAAA,EAAU,OAAO,MAAA;AAEtC,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAMA,MAAAA,CAAM,OAAA,CAAQ,KAAK,IAAA,EAAM;AAAA,YAC5C,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,YAAY,IAAA,CAAK,UAAA;AAAA,YACjB,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,SAAA,EAAW,MAAA;AAAA,YACX,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA;AAAK,WAC9B,CAAA;AACD,UAAA,IAAI,CAAC,MAAA,CAAO,MAAA,CAAO,MAAA,EAAQ,OAAO,MAAA;AAAA,QACpC,CAAA,CAAA,MAAQ;AAAA,QAAC;AAET,QAAA,IAAI;AACF,UAAA,MAAM,GAAA,GAAMG,sBAAA,CAAc,0PAAY,IAAO,UAAU,CAAA;AACvD,UAAA,MAAM,OAAA,GAAU,GAAA,CAAI,OAAA,CAAQ,eAAe,CAAA;AAE3C,UAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,mBAAA,EAAqB,EAAE,CAAA;AACtD,UAAA,MAAM,WAAWP,uBAAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,MAAA,EAAQ,MAAM,WAAW,CAAA;AAC5D,UAAA,MAAM,EAAE,UAAA,EAAW,GAAI,MAAM,OAAO,IAAI,CAAA;AACxC,UAAA,IAAI,UAAA,CAAW,QAAQ,CAAA,EAAG;AACxB,YAAA,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,MAAA,EAAO;AAAA,UAC7C;AAEA,UAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,MAAA,EAAO;AAAA,QAC5C,CAAA,CAAA,MAAQ;AAAA,QAAC;AACT,QAAA,OAAO,EAAE,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,WAAW,aAAA,EAAc;AAAA,MACrD,CAAC,CAAA;AACD,MAAAI,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,aAAA,IAAiB,OAAO;AAAA,QAC9D,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA,CAmBR,IAAA,EAAK;AAAA,QACP,MAAA,EAAQ;AAAA,OACV,CAAE,CAAA;AAGF,MAAAA,OAAM,SAAA,CAAU,EAAE,QAAQ,SAAA,EAAU,EAAG,OAAO,IAAA,KAAS;AACrD,QAAA,IAAI,IAAA,CAAK,UAAA,EAAY,QAAA,EAAU,OAAO,MAAA;AACtC,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAMA,MAAAA,CAAM,OAAA,CAAQ,KAAK,IAAA,EAAM;AAAA,YAC5C,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,YAAY,IAAA,CAAK,UAAA;AAAA,YACjB,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,SAAA,EAAW,MAAA;AAAA,YACX,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA;AAAK,WAC9B,CAAA;AACD,UAAA,IAAI,CAAC,MAAA,CAAO,MAAA,CAAO,MAAA,EAAQ,OAAO,MAAA;AAAA,QACpC,CAAA,CAAA,MAAQ;AAAA,QAAC;AACT,QAAA,OAAO,EAAE,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,WAAW,WAAA,EAAY;AAAA,MACnD,CAAC,CAAA;AACD,MAAAA,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,WAAA,EAAY,EAAG,CAAC,IAAA,KAAS;AAC/D,QAAA,MAAM,KAAA,GAAgC;AAAA,UACpC,YAAA,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA,CAAA;AAAA,UAuBd,WAAA,EAAa;AAAA;AAAA;AAAA;AAAA,UAAA,CAAA;AAAA,UAKb,iBAAA,EAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA,CAAA;AAAA,UAQnB,cAAA,EAAgB;AAAA;AAAA;AAAA,UAAA;AAAA,SAIlB;AACA,QAAA,OAAO;AAAA,UACL,QAAA,EAAU,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,IAAK,oBAAA;AAAA,UAC9B,MAAA,EAAQ,KAAA;AAAA,UACR,UAAA,EAAY;AAAA,SACd;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AAAA,GACF;AAGA,EAAA,MAAM,QAAA,GAAWJ,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,0BAA0B,CAAA;AAChE,EAAA,MAAME,oBAAAA,CAAG,SAAA,CAAU,QAAA,EAAU,YAAY,CAAA;AAEzC,EAAA,MAAcU,kBAAA,CAAA,KAAA,CAAM;AAAA,IAClB,WAAA,EAAa,CAAC,gBAAgB,CAAA;AAAA,IAC9B,MAAA,EAAQ,IAAA;AAAA,IACR,QAAA,EAAU,SAAA;AAAA,IACV,MAAA,EAAQ,KAAA;AAAA,IACR,OAAA,EAAS,UAAA;AAAA;AAAA,IAET,UAAU,EAAC;AAAA,IACX,OAAA,EAAS,CAAC,gBAAgB,CAAA;AAAA,IAC1B,MAAA,EAAQ,CAAC,QAAQ,CAAA;AAAA,IACjB,MAAA,EAAQ,KAAA;AAAA,IACR,SAAA,EAAW,IAAA;AAAA,IACX,MAAA,EAAQ,QAAA;AAAA,IACR,GAAA,EAAK,WAAA;AAAA,IACL,eAAA,EAAiB,OAAA;AAAA,IACjB,MAAA,EAAQ;AAAA,MACN,sBAAA,EAAwB,IAAA,CAAK,SAAA,CAAU,aAAa,CAAA;AAAA,MACpD,mCAAmC,IAAA,CAAK,SAAA;AAAA,QACtC,OAAA,CAAQ,IAAI,mBAAA,IAAuB;AAAA,OACrC;AAAA,MACA,sCAAsC,IAAA,CAAK,SAAA;AAAA,QACzC,OAAA,CAAQ,IAAI,sBAAA,IAA0B;AAAA,OACxC;AAAA,MACA,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,MAAA,EAAQ,EAAE,MAAA,EAAQ,KAAA,EAAO,OAAO,IAAA,EAAK;AAAA;AAAA,IAErC,UAAA,EAAY,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IACjC,UAAA,EAAY,CAAC,MAAM,CAAA;AAAA,IACnB,WAAA,EAAa;AAAA,MACX,qBAAA,EAAuB;AAAA;AACzB,GACD,CAAA;AAGD,EAAA,IAAI;AACF,IAAA,MAAMV,oBAAAA,CAAG,OAAO,QAAQ,CAAA;AAAA,EAC1B,CAAA,CAAA,MAAQ;AAAA,EAER;AAEA,EAAA,OAAO,UAAA;AACT;AA3oDA,IAkEM,cAaA,iBAAA,EAsHA,sBAAA;AArMN,IAAA,kBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4BAAA,GAAA;AAmBA,IAAA,WAAA,EAAA;AACA,IAAA,oBAAA,EAAA;AACA,IAAA,sBAAA,EAAA;AA6CA,IAAM,YAAA,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAarB,IAAM,iBAAA,GAA4B;AAAA,MAChC,IAAA,EAAM,cAAA;AAAA,MACN,MAAME,MAAAA,EAAO;AACX,QAAAA,OAAM,SAAA,CAAU,EAAE,MAAA,EAAQ,SAAA,IAAa,OAAO;AAAA,UAC5C,IAAA,EAAM,gBAAA;AAAA,UACN,SAAA,EAAW;AAAA,SACb,CAAE,CAAA;AAEF,QAAAA,OAAM,SAAA,CAAU,EAAE,MAAA,EAAQ,aAAA,IAAiB,OAAO;AAAA,UAChD,IAAA,EAAM,oBAAA;AAAA,UACN,SAAA,EAAW;AAAA,SACb,CAAE,CAAA;AAEF,QAAAA,OAAM,SAAA,CAAU,EAAE,MAAA,EAAQ,sBAAA,IAA0B,OAAO;AAAA,UACzD,IAAA,EAAM,4BAAA;AAAA,UACN,SAAA,EAAW;AAAA,SACb,CAAE,CAAA;AAEF,QAAAA,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,cAAA,EAAe,EAAG,CAAC,IAAA,KAAS;AAClE,UAAA,IAAI,IAAA,CAAK,SAAS,gBAAA,EAAkB;AAClC,YAAA,OAAO;AAAA,cACL,QAAA,EAAU;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,UAAA,CAAA,CA0CR,IAAA,EAAK;AAAA,cACP,MAAA,EAAQ;AAAA,aACV;AAAA,UACF;AAEA,UAAA,IAAI,IAAA,CAAK,SAAS,oBAAA,EAAsB;AACtC,YAAA,OAAO;AAAA,cACL,QAAA,EAAU;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA,CAAA,CAkBR,IAAA,EAAK;AAAA,cACP,MAAA,EAAQ;AAAA,aACV;AAAA,UACF;AAEA,UAAA,IAAI,IAAA,CAAK,SAAS,4BAAA,EAA8B;AAC9C,YAAA,OAAO;AAAA,cACL,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA,CAAA,CAQR,IAAA,EAAK;AAAA,cACP,MAAA,EAAQ;AAAA,aACV;AAAA,UACF;AAEA,UAAA,OAAO,IAAA;AAAA,QACT,CAAC,CAAA;AAAA,MACH;AAAA,KACF;AAOA,IAAM,sBAAA,GAAiC;AAAA,MACrC,IAAA,EAAM,oBAAA;AAAA,MACN,MAAMA,MAAAA,EAAO;AACX,QAAAA,OAAM,SAAA,CAAU,EAAE,MAAA,EAAQ,0BAAA,IAA8B,OAAO;AAAA,UAC7D,IAAA,EAAM,sBAAA;AAAA,UACN,SAAA,EAAW;AAAA,SACb,CAAE,CAAA;AAEF,QAAAA,MAAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,oBAAA,IAAwB,OAAO;AAAA,UACrE,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,CAkBR,IAAA,EAAK;AAAA,UACP,MAAA,EAAQ;AAAA,SACV,CAAE,CAAA;AAAA,MACJ;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChOA,WAAA,EAAA;;;ACIO,SAAS,aAAa,IAAA,EAAuB;AAClD,EAAA,OAAO,0BAAA,CAA2B,KAAK,IAAI,CAAA;AAC7C;AAKO,SAAS,YAAY,GAAA,EAAqB;AAC/C,EAAA,OAAO,GAAA,CACJ,QAAQ,iBAAA,EAAmB,OAAO,EAClC,OAAA,CAAQ,SAAA,EAAW,GAAG,CAAA,CACtB,WAAA,EAAY;AACjB;AAKO,SAAS,aAAa,GAAA,EAAqB;AAChD,EAAA,OAAO,GAAA,CACJ,MAAM,SAAS,CAAA,CACf,IAAI,CAAC,IAAA,KAAS,KAAK,MAAA,CAAO,CAAC,EAAE,WAAA,EAAY,GAAI,KAAK,KAAA,CAAM,CAAC,EAAE,WAAA,EAAa,CAAA,CACxE,IAAA,CAAK,EAAE,CAAA;AACZ;AAKO,SAAS,YAAY,GAAA,EAAqB;AAC/C,EAAA,MAAM,MAAA,GAAS,aAAa,GAAG,CAAA;AAC/B,EAAA,OAAO,MAAA,CAAO,OAAO,CAAC,CAAA,CAAE,aAAY,GAAI,MAAA,CAAO,MAAM,CAAC,CAAA;AACxD;AAKO,SAAS,kBAAkB,IAAA,EAAuB;AACvD,EAAA,OAAO,mBAAA,CAAoB,KAAK,IAAI,CAAA;AACtC;AAKO,SAAS,WAAW,QAAA,EAA2B;AAEpD,EAAA,MAAMF,IAAAA,GAAK,UAAQ,UAAU,CAAA;AAC7B,EAAA,OAAOA,IAAAA,CAAG,WAAW,QAAQ,CAAA;AAC/B;AAKO,SAAS,iBAAiB,QAAA,EAA2B;AAC1D,EAAA,MAAM,eAAA,GAAkB;AAAA,IACtB,SAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,OAAO,eAAA,CAAgB,SAAS,QAAQ,CAAA;AAC1C;AAKO,SAAS,kBAAA,GAA+B;AAC7C,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AACF;;;ACzFA,WAAA,EAAA;AAKA,eAAsB,cAAA,CACpB,cACA,IAAA,EACiB;AACjB,EAAA,MAAM,QAAA,GAAW,MAAMA,mBAAA,CAAG,QAAA,CAAS,cAAc,OAAO,CAAA;AACxD,EAAA,OAAOY,oBAAA,CAAI,MAAA,CAAO,QAAA,EAAU,IAAI,CAAA;AAClC;AAKA,eAAsB,SAAA,CACpB,UACA,OAAA,EACe;AACf,EAAA,MAAMZ,mBAAA,CAAG,SAAA,CAAUF,uBAAA,CAAK,OAAA,CAAQ,QAAQ,CAAC,CAAA;AACzC,EAAA,MAAME,mBAAA,CAAG,SAAA,CAAU,QAAA,EAAU,OAAA,EAAS,OAAO,CAAA;AAC/C;AAMO,SAAS,eAAA,GAA0B;AAExC,EAAA,MAAM,SAAA,GAAY;AAAA,IAChBF,uBAAA,CAAK,IAAA,CAAK,SAAA,EAAW,iBAAiB,CAAA;AAAA;AAAA,IACtCA,uBAAA,CAAK,IAAA,CAAK,SAAA,EAAW,cAAc,CAAA;AAAA;AAAA,IACnCA,uBAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,IAAO,WAAW,CAAA;AAAA;AAAA,IACpCA,uBAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,IAAO,wBAAwB;AAAA;AAAA,GACnD;AAEA,EAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,IAAA,IAAIE,mBAAA,CAAG,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC3B,MAAA,OAAO,QAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,MAAM,IAAI,MAAM,+BAA+B,CAAA;AACjD;AAKA,eAAsB,YAAA,CACpB,YAAA,EACA,SAAA,EACA,IAAA,EACe;AAEf,EAAA,MAAM,eAAe,eAAA,EAAgB;AACrC,EAAA,MAAM,WAAA,GAAcF,uBAAA,CAAK,IAAA,CAAK,YAAA,EAAc,YAAY,CAAA;AAExD,EAAA,IAAI,CAACE,mBAAA,CAAG,UAAA,CAAW,WAAW,CAAA,EAAG;AAC/B,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,UAAA,EAAa,YAAY,CAAA,eAAA,EAAkB,WAAW,CAAA,uBAAA,EAA0BA,mBAAA,CAAG,WAAA,CAAY,YAAY,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,KACzH;AAAA,EACF;AAEA,EAAA,MAAMA,mBAAA,CAAG,UAAU,SAAS,CAAA;AAE5B,EAAA,MAAM,KAAA,GAAQ,MAAMA,mBAAA,CAAG,OAAA,CAAQ,WAAW,CAAA;AAE1C,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,YAAA,GAAeF,uBAAA,CAAK,IAAA,CAAK,WAAA,EAAa,IAAI,CAAA;AAChD,IAAA,MAAM,UAAA,GAAaA,uBAAA,CAAK,IAAA,CAAK,SAAA,EAAW,IAAI,CAAA;AAE5C,IAAA,MAAM,IAAA,GAAO,MAAME,mBAAA,CAAG,IAAA,CAAK,YAAY,CAAA;AAEvC,IAAA,IAAI,IAAA,CAAK,aAAY,EAAG;AAEtB,MAAA,MAAM,eAAA,CAAgB,YAAA,EAAc,UAAA,EAAY,IAAI,CAAA;AAAA,IACtD,CAAA,MAAA,IAAW,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,EAAG;AAEhC,MAAA,MAAM,OAAA,GAAU,MAAM,cAAA,CAAe,YAAA,EAAc,IAAI,CAAA;AACvD,MAAA,MAAM,UAAA,GAAa,UAAA,CAAW,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AAClD,MAAA,MAAM,SAAA,CAAU,YAAY,OAAO,CAAA;AAAA,IACrC,CAAA,MAAO;AAEL,MAAA,MAAMA,mBAAA,CAAG,IAAA,CAAK,YAAA,EAAc,UAAU,CAAA;AAAA,IACxC;AAAA,EACF;AACF;AAKA,eAAe,eAAA,CACb,WAAA,EACA,SAAA,EACA,IAAA,EACe;AACf,EAAA,MAAMA,mBAAA,CAAG,UAAU,SAAS,CAAA;AAE5B,EAAA,MAAM,KAAA,GAAQ,MAAMA,mBAAA,CAAG,OAAA,CAAQ,WAAW,CAAA;AAE1C,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,YAAA,GAAeF,uBAAA,CAAK,IAAA,CAAK,WAAA,EAAa,IAAI,CAAA;AAChD,IAAA,MAAM,UAAA,GAAaA,uBAAA,CAAK,IAAA,CAAK,SAAA,EAAW,IAAI,CAAA;AAE5C,IAAA,MAAM,IAAA,GAAO,MAAME,mBAAA,CAAG,IAAA,CAAK,YAAY,CAAA;AAEvC,IAAA,IAAI,IAAA,CAAK,aAAY,EAAG;AACtB,MAAA,MAAM,eAAA,CAAgB,YAAA,EAAc,UAAA,EAAY,IAAI,CAAA;AAAA,IACtD,CAAA,MAAA,IAAW,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,EAAG;AAEhC,MAAA,MAAM,OAAA,GAAU,MAAM,cAAA,CAAe,YAAA,EAAc,IAAI,CAAA;AACvD,MAAA,MAAM,UAAA,GAAa,UAAA,CAAW,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AAClD,MAAA,MAAM,SAAA,CAAU,YAAY,OAAO,CAAA;AAAA,IACrC,CAAA,MAAO;AAEL,MAAA,MAAMA,mBAAA,CAAG,IAAA,CAAK,YAAA,EAAc,UAAU,CAAA;AAAA,IACxC;AAAA,EACF;AACF;AAKO,SAAS,cAAA,GAAyB;AACvC,EAAA,IAAI,UAAA,GAAa,QAAQ,GAAA,EAAI;AAG7B,EAAA,OAAO,UAAA,KAAeF,uBAAA,CAAK,KAAA,CAAM,UAAU,EAAE,IAAA,EAAM;AACjD,IAAA,MAAM,eAAA,GAAkBA,uBAAA,CAAK,IAAA,CAAK,UAAA,EAAY,cAAc,CAAA;AAE5D,IAAA,IAAIE,mBAAA,CAAG,UAAA,CAAW,eAAe,CAAA,EAAG;AAClC,MAAA,MAAM,WAAA,GAAcA,mBAAA,CAAG,YAAA,CAAa,eAAe,CAAA;AAGnD,MAAA,IACE,YAAY,UAAA,IACZA,mBAAA,CAAG,UAAA,CAAWF,uBAAA,CAAK,KAAK,UAAA,EAAY,YAAY,CAAC,CAAA,IACjDE,oBAAG,UAAA,CAAWF,uBAAA,CAAK,KAAK,UAAA,EAAY,QAAQ,CAAC,CAAA,EAC7C;AACA,QAAA,OAAO,UAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,UAAA,GAAaA,uBAAA,CAAK,QAAQ,UAAU,CAAA;AAAA,EACtC;AAEA,EAAA,OAAO,QAAQ,GAAA,EAAI;AACrB;AAKO,SAAS,YAAA,GAAuB;AACrC,EAAA,MAAM,OAAO,cAAA,EAAe;AAC5B,EAAA,IAAIE,oBAAG,UAAA,CAAWF,uBAAA,CAAK,IAAA,CAAK,IAAA,EAAM,QAAQ,CAAC,CAAA;AACzC,IAAA,OAAOA,uBAAA,CAAK,IAAA,CAAK,IAAA,EAAM,QAAQ,CAAA;AACjC,EAAA,IAAIE,oBAAG,UAAA,CAAWF,uBAAA,CAAK,IAAA,CAAK,IAAA,EAAM,YAAY,CAAC,CAAA;AAC7C,IAAA,OAAOA,uBAAA,CAAK,IAAA,CAAK,IAAA,EAAM,YAAY,CAAA;AAErC,EAAA,OAAOA,uBAAA,CAAK,QAAQ,IAAI,CAAA;AAC1B;AAKO,SAAS,cAAA,GAAyB;AACvC,EAAA,OAAOA,uBAAA,CAAK,IAAA,CAAK,cAAA,EAAe,EAAG,cAAc,CAAA;AACnD;AAKO,SAAS,aAAA,GAAyB;AACvC,EAAA,MAAM,OAAO,cAAA,EAAe;AAC5B,EAAA,OACEE,mBAAA,CAAG,UAAA,CAAWF,uBAAA,CAAK,IAAA,CAAK,IAAA,EAAM,QAAQ,CAAC,CAAA,IACvCE,mBAAA,CAAG,UAAA,CAAWF,uBAAA,CAAK,IAAA,CAAK,MAAM,YAAY,CAAC,CAAA,IAC3CE,mBAAA,CAAG,UAAA,CAAWF,uBAAA,CAAK,IAAA,CAAK,IAAA,EAAM,iBAAiB,CAAC,CAAA,IAChDE,mBAAA,CAAG,UAAA,CAAWF,uBAAA,CAAK,IAAA,CAAK,IAAA,EAAM,iBAAiB,CAAC,CAAA;AAEpD;AAKO,SAAS,iBAAA,GAA0B;AACxC,EAAA,IAAI,CAAC,eAAc,EAAG;AACpB,IAAAJ,cAAA,CAAO,KAAA;AAAA,MACL;AAAA,KACF;AACA,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACF;AAKO,SAAS,UAAA,GAAuB;AACrC,EAAA,MAAM,YAAY,YAAA,EAAa;AAE/B,EAAA,IAAI,CAACM,mBAAA,CAAG,UAAA,CAAW,SAAS,CAAA,EAAG;AAC7B,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,OAAOA,oBAAG,WAAA,CAAY,SAAS,CAAA,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS;AAChD,IAAA,MAAM,SAAA,GAAYF,uBAAA,CAAK,IAAA,CAAK,SAAA,EAAW,IAAI,CAAA;AAC3C,IAAA,OACEE,mBAAA,CAAG,QAAA,CAAS,SAAS,CAAA,CAAE,WAAA,EAAY,KAClCA,mBAAA,CAAG,UAAA,CAAWF,uBAAA,CAAK,IAAA,CAAK,SAAA,EAAW,iBAAiB,CAAC,CAAA,IACpDE,mBAAA,CAAG,UAAA,CAAWF,uBAAA,CAAK,IAAA,CAAK,SAAA,EAAW,iBAAiB,CAAC,CAAA,IACrDE,mBAAA,CAAG,UAAA,CAAWF,uBAAA,CAAK,IAAA,CAAK,SAAA,EAAW,aAAa,CAAC,CAAA,CAAA;AAAA,EAEvD,CAAC,CAAA;AACH;AAKO,SAAS,YAAY,SAAA,EAA4B;AACtD,EAAA,MAAM,SAAA,GAAYA,uBAAA,CAAK,IAAA,CAAK,YAAA,IAAgB,SAAS,CAAA;AACrD,EAAA,OACEE,mBAAA,CAAG,UAAA,CAAW,SAAS,CAAA,KACtBA,mBAAA,CAAG,UAAA,CAAWF,uBAAA,CAAK,IAAA,CAAK,SAAA,EAAW,iBAAiB,CAAC,CAAA,IACpDE,mBAAA,CAAG,WAAWF,uBAAA,CAAK,IAAA,CAAK,SAAA,EAAW,iBAAiB,CAAC,CAAA,IACrDE,mBAAA,CAAG,UAAA,CAAWF,uBAAA,CAAK,IAAA,CAAK,SAAA,EAAW,aAAa,CAAC,CAAA,CAAA;AAEvD;AAKO,SAAS,oBAAA,GAAwD;AAEtE,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,GAAA,CAAI,qBAAA,IAAyB,EAAA;AAEvD,EAAA,IAAI,SAAA,CAAU,QAAA,CAAS,MAAM,CAAA,EAAG,OAAO,MAAA;AACvC,EAAA,IAAI,SAAA,CAAU,QAAA,CAAS,MAAM,CAAA,EAAG,OAAO,MAAA;AACvC,EAAA,IAAI,SAAA,CAAU,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,KAAA;AAGtC,EAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,EAAI;AACxB,EAAA,IAAIE,mBAAA,CAAG,WAAWF,uBAAA,CAAK,IAAA,CAAK,KAAK,gBAAgB,CAAC,GAAG,OAAO,MAAA;AAC5D,EAAA,IAAIE,mBAAA,CAAG,WAAWF,uBAAA,CAAK,IAAA,CAAK,KAAK,WAAW,CAAC,GAAG,OAAO,MAAA;AACvD,EAAA,IAAIE,mBAAA,CAAG,WAAWF,uBAAA,CAAK,IAAA,CAAK,KAAK,WAAW,CAAC,GAAG,OAAO,KAAA;AAGvD,EAAA,OAAO,KAAA;AACT;AAKA,eAAsB,mBAAA,CACpB,WAAA,EACA,cAAA,GAAkD,KAAA,EACnC;AACf,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,IAAA,IAAI;AACF,MAAA,MAAM,UAAA,GACJ,cAAA,KAAmB,MAAA,GAAS,MAAA,GAAS,GAAG,cAAc,CAAA,QAAA,CAAA;AAExD,MAAAe,sBAAA,CAAS,UAAA,EAAY;AAAA,QACnB,GAAA,EAAK,WAAA;AAAA,QACL,KAAA,EAAO;AAAA,OACR,CAAA;AAED,MAAA,OAAA,EAAQ;AAAA,IACV,SAAS,KAAA,EAAO;AACd,MAAA,MAAA,CAAO,KAAK,CAAA;AAAA,IACd;AAAA,EACF,CAAC,CAAA;AACH;AC1QA,IAAM,WAAWf,uBAAAA,CAAK,IAAA,CAAKgB,mBAAA,CAAG,OAAA,IAAW,UAAU,CAAA;AAMnD,IAAM,QAAA,GAAgC;AAAA,EACpC,GAAA,EAAK,kCAAA;AAAA,EACL,OAAA,EAAS,sCAAA;AAAA,EACT,IAAA,EAAM;AACR,CAAA;AAOA,SAAS,WAAA,CAAY,MAAW,KAAA,EAAe;AAC7C,EAAA,MAAM,UAAUhB,uBAAAA,CAAK,IAAA,CAAK,QAAA,EAAU,CAAA,KAAA,EAAQ,GAAG,CAAA,KAAA,CAAO,CAAA;AAGtD,EAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,IAAA,MAAM,UAAA,GAAaA,uBAAAA,CAAK,IAAA,CAAK,QAAA,EAAU,WAAW,CAAA;AAClD,IAAA,IAAIE,mBAAAA,CAAG,WAAW,UAAU,CAAA,IAAK,CAACA,mBAAAA,CAAG,UAAA,CAAW,OAAO,CAAA,EAAG;AACxD,MAAA,IAAI;AACF,QAAAA,mBAAAA,CAAG,QAAA,CAAS,UAAA,EAAY,OAAO,CAAA;AAAA,MACjC,CAAA,CAAA,MAAQ;AAEN,QAAA,IAAI;AACF,UAAAA,mBAAAA,CAAG,QAAA,CAAS,UAAA,EAAY,OAAO,CAAA;AAC/B,UAAAA,mBAAAA,CAAG,WAAW,UAAU,CAAA;AAAA,QAC1B,CAAA,CAAA,MAAQ;AAAA,QAER;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,OAAA;AACT;AAqBO,SAAS,SAAA,CAAU,MAAW,KAAA,EAAe;AAClD,EAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,eAAA,IAAmB,QAAA,CAAS,GAAG,CAAA;AACpD;AAKA,eAAsB,cAAA,CACpB,MAAA,EACA,GAAA,GAAW,KAAA,EACI;AACf,EAAA,MAAMA,mBAAAA,CAAG,UAAU,QAAQ,CAAA;AAE3B,EAAA,MAAM,MAAM,aAAA,EAAc;AAC1B,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA;AAClC,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA;AAEnC,EAAA,MAAMA,oBAAG,SAAA,CAAU,WAAA,CAAY,GAAG,CAAA,EAAG,WAAW,OAAO,CAAA;AACzD;AAMO,SAAS,cAAA,CAAe,MAAW,KAAA,EAA0B;AAClE,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,YAAY,GAAG,CAAA;AAC5B,IAAA,IAAI,CAACA,mBAAAA,CAAG,UAAA,CAAW,IAAI,GAAG,OAAO,IAAA;AAEjC,IAAA,MAAM,SAAA,GAAYA,mBAAAA,CAAG,YAAA,CAAa,IAAA,EAAM,OAAO,CAAA;AAC/C,IAAA,MAAM,MAAM,aAAA,EAAc;AAC1B,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,SAAA,EAAW,GAAG,CAAA;AAEnC,IAAA,OAAO,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,EACxB,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAKA,eAAsB,eAAA,CAAgB,MAAW,KAAA,EAAsB;AACrE,EAAA,IAAI;AACF,IAAA,MAAMA,mBAAAA,CAAG,MAAA,CAAO,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,EAClC,CAAA,CAAA,MAAQ;AAAA,EAER;AACF;AAMO,SAAS,eAAe,MAAA,EAA6B;AAC1D,EAAA,OAAO,IAAA,CAAK,GAAA,EAAI,GAAI,GAAA,GAAO,OAAO,SAAA,GAAY,GAAA;AAChD;AAKA,eAAsB,cAAA,CACpB,MAAW,KAAA,EACiB;AAC5B,EAAA,MAAM,MAAA,GAAS,eAAe,GAAG,CAAA;AACjC,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,EAAA,IAAI,CAAC,cAAA,CAAe,MAAM,CAAA,EAAG,OAAO,MAAA;AAGpC,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,UAAU,GAAG,CAAA;AAC5B,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,CAAA,EAAG,MAAM,CAAA,aAAA,CAAA,EAAiB;AAAA,MACrD,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA,EAAmB;AAAA,MAC9C,MAAM,IAAA,CAAK,SAAA,CAAU,EAAE,aAAA,EAAe,MAAA,CAAO,cAAc;AAAA,KAC5D,CAAA;AAED,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,gBAAgB,GAAG,CAAA;AACzB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,IAAA,GAAO,IAAA;AAE3C,IAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,MAAA,MAAM,gBAAgB,GAAG,CAAA;AACzB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,SAAA,GAAwB;AAAA,MAC5B,GAAG,MAAA;AAAA,MACH,WAAA,EAAa,IAAA,CAAK,WAAA,IAAe,MAAA,CAAO,WAAA;AAAA,MACxC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,SAAA,EAAW,KAAK,KAAA,CAAM,IAAA,CAAK,KAAI,GAAI,GAAI,CAAA,IAAK,IAAA,CAAK,SAAA,IAAa,IAAA;AAAA,KAChE;AAEA,IAAA,MAAM,cAAA,CAAe,WAAW,GAAG,CAAA;AACnC,IAAA,OAAO,SAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,MAAM,gBAAgB,GAAG,CAAA;AACzB,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAKA,eAAsB,kBAAA,CACpB,GAAA,EACA,IAAA,EACA,GAAA,GAAW,KAAA,EACQ;AACnB,EAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe,GAAG,CAAA;AACvC,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,iBAAA,EAAoB,GAAG,CAAA,uCAAA,EAA0C,GAAG,CAAA;AAAA,KACtE;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA;AACzC,EAAA,OAAA,CAAQ,GAAA,CAAI,eAAA,EAAiB,CAAA,OAAA,EAAU,MAAA,CAAO,OAAO,CAAA,CAAE,CAAA;AACvD,EAAA,OAAA,CAAQ,GAAA,CAAI,gBAAgB,kBAAkB,CAAA;AAE9C,EAAA,OAAO,MAAM,GAAA,EAAK,EAAE,GAAG,IAAA,EAAM,SAAS,CAAA;AACxC;AAIA,SAAS,aAAA,GAAwB;AAC/B,EAAA,IAAI,IAAA;AAEJ,EAAA,IAAI,OAAA,CAAQ,aAAa,QAAA,EAAU;AACjC,IAAA,IAAA,GAAO,CAAA,QAAA,EAAWc,oBAAG,QAAA,EAAU,IAAIA,mBAAA,CAAG,QAAA,GAAW,QAAQ,CAAA,CAAA;AAAA,EAC3D,CAAA,MAAA,IAAW,OAAA,CAAQ,QAAA,KAAa,OAAA,EAAS;AACvC,IAAA,IAAI;AACF,MAAA,IAAA,GAAO,WAAWd,mBAAAA,CAAG,YAAA,CAAa,mBAAmB,OAAO,CAAA,CAAE,MAAM,CAAA,CAAA;AAAA,IACtE,CAAA,CAAA,MAAQ;AACN,MAAA,IAAA,GAAO,CAAA,QAAA,EAAWc,oBAAG,QAAA,EAAU,IAAIA,mBAAA,CAAG,QAAA,GAAW,QAAQ,CAAA,CAAA;AAAA,IAC3D;AAAA,EACF,CAAA,MAAO;AACL,IAAA,IAAA,GAAO,CAAA,QAAA,EAAWA,oBAAG,QAAA,EAAU,IAAIA,mBAAA,CAAG,QAAA,GAAW,QAAQ,CAAA,CAAA;AAAA,EAC3D;AAEA,EAAA,OAAOb,wBAAO,UAAA,CAAW,QAAQ,EAAE,MAAA,CAAO,IAAI,EAAE,MAAA,EAAO;AACzD;AAEA,SAAS,OAAA,CAAQ,MAAc,GAAA,EAAqB;AAClD,EAAA,MAAM,EAAA,GAAKA,uBAAA,CAAO,WAAA,CAAY,EAAE,CAAA;AAChC,EAAA,MAAM,MAAA,GAASA,uBAAA,CAAO,cAAA,CAAe,aAAA,EAAe,KAAK,EAAE,CAAA;AAC3D,EAAA,IAAI,SAAA,GAAY,MAAA,CAAO,MAAA,CAAO,IAAA,EAAM,SAAS,KAAK,CAAA;AAClD,EAAA,SAAA,IAAa,MAAA,CAAO,MAAM,KAAK,CAAA;AAC/B,EAAA,MAAM,GAAA,GAAM,OAAO,UAAA,EAAW;AAC9B,EAAA,OAAO,CAAA,EAAG,EAAA,CAAG,QAAA,CAAS,KAAK,CAAC,CAAA,CAAA,EAAI,GAAA,CAAI,QAAA,CAAS,KAAK,CAAC,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AAClE;AAEA,SAAS,OAAA,CAAQ,MAAc,GAAA,EAAqB;AAClD,EAAA,MAAM,CAAC,KAAA,EAAO,MAAA,EAAQ,SAAS,CAAA,GAAI,IAAA,CAAK,MAAM,GAAG,CAAA;AACjD,EAAA,MAAM,EAAA,GAAK,MAAA,CAAO,IAAA,CAAK,KAAA,EAAO,KAAK,CAAA;AACnC,EAAA,MAAM,GAAA,GAAM,MAAA,CAAO,IAAA,CAAK,MAAA,EAAQ,KAAK,CAAA;AACrC,EAAA,MAAM,QAAA,GAAWA,uBAAA,CAAO,gBAAA,CAAiB,aAAA,EAAe,KAAK,EAAE,CAAA;AAC/D,EAAA,QAAA,CAAS,WAAW,GAAG,CAAA;AACvB,EAAA,IAAI,SAAA,GAAY,QAAA,CAAS,MAAA,CAAO,SAAA,EAAW,OAAO,OAAO,CAAA;AACzD,EAAA,SAAA,IAAa,QAAA,CAAS,MAAM,OAAO,CAAA;AACnC,EAAA,OAAO,SAAA;AACT;;;AHlNA,eAAsB,WAAA,CACpB,WAAA,EACA,OAAA,GAAuB,EAAC,EACT;AACf,EAAAP,cAAA,CAAO,OAAO,+BAA+B,CAAA;AAG7C,EAAA,IAAI,IAAA;AAEJ,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,MAAM,EAAE,SAAA,EAAU,GAAI,MAAMqB,0BAAS,MAAA,CAAO;AAAA,MAC1C;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM,WAAA;AAAA,QACN,OAAA,EAAS,4BAAA;AAAA,QACT,QAAA,EAAU,CAAC,KAAA,KAAkB;AAC3B,UAAA,IAAI,CAAC,OAAO,OAAO,0BAAA;AACnB,UAAA,MAAM,SAAA,GAAY,YAAY,KAAK,CAAA;AACnC,UAAA,IAAI,CAAC,iBAAA,CAAkB,SAAS,CAAA,EAAG;AACjC,YAAA,OAAO,yEAAA;AAAA,UACT;AACA,UAAA,IAAIf,oBAAAA,CAAG,WAAWF,uBAAAA,CAAK,IAAA,CAAK,QAAQ,GAAA,EAAI,EAAG,SAAS,CAAC,CAAA,EAAG;AACtD,YAAA,OAAO,cAAc,SAAS,CAAA,gBAAA,CAAA;AAAA,UAChC;AACA,UAAA,OAAO,IAAA;AAAA,QACT;AAAA;AACF,KACD,CAAA;AACD,IAAA,IAAA,GAAO,YAAY,SAAS,CAAA;AAAA,EAC9B,CAAA,MAAO;AACL,IAAA,IAAA,GAAO,YAAY,WAAW,CAAA;AAAA,EAChC;AAGA,EAAA,MAAM,cAAcA,uBAAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,IAAO,IAAI,CAAA;AACjD,EAAA,IAAIE,oBAAAA,CAAG,UAAA,CAAW,WAAW,CAAA,EAAG;AAC9B,IAAAN,cAAA,CAAO,KAAA,CAAM,CAAA,WAAA,EAAc,IAAI,CAAA,iBAAA,CAAmB,CAAA;AAClD,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAGA,EAAA,IAAI,CAAC,QAAQ,GAAA,EAAK;AAChB,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,SAAA,CAAU,OAAA,CAAQ,GAAA,IAAO,KAAK,CAAA;AAC7C,MAAA,MAAM,UAAA,GAAa,IAAI,eAAA,EAAgB;AACvC,MAAA,MAAM,UAAU,UAAA,CAAW,MAAM,UAAA,CAAW,KAAA,IAAS,GAAI,CAAA;AACzD,MAAA,MAAM,WAAW,MAAM,KAAA;AAAA,QACrB,CAAA,EAAG,MAAM,CAAA,oBAAA,EAAuB,kBAAA,CAAmB,IAAI,CAAC,CAAA,OAAA,CAAA;AAAA,QACxD,EAAE,MAAA,EAAQ,UAAA,CAAW,MAAA;AAAO,OAC9B;AACA,MAAA,YAAA,CAAa,OAAO,CAAA;AACpB,MAAA,IAAI,SAAS,EAAA,EAAI;AACf,QAAA,MAAMsB,KAAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,QAAA,MAAM,IAAA,GAAOA,KAAAA,CAAK,UAAA,GAAaA,KAAAA,CAAK,IAAA,GAAOA,KAAAA;AAC3C,QAAA,IAAI,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,KAAA,KAAU,OAAA,EAAS;AACzC,UAAAtB,cAAA,CAAO,OAAA;AAAA,YACL,aAAa,IAAI,CAAA;AAAA;AAAA,kCAAA;AAAA,WAGnB;AACA,UAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAMqB,0BAAS,MAAA,CAAO;AAAA,YACxC;AAAA,cACE,IAAA,EAAM,SAAA;AAAA,cACN,IAAA,EAAM,SAAA;AAAA,cACN,OAAA,EAAS,kBAAA;AAAA,cACT,OAAA,EAAS;AAAA;AACX,WACD,CAAA;AACD,UAAA,IAAI,CAAC,OAAA,EAAS;AACZ,YAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AAGA,EAAA,IAAI,WAAA;AACJ,EAAA,IAAI,WAAA;AACJ,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI,QAAA;AAEJ,EAAA,IAAI,QAAQ,GAAA,EAAK;AACf,IAAA,WAAA,GAAc,aAAa,IAAI,CAAA,CAC5B,QAAQ,UAAA,EAAY,KAAK,EACzB,IAAA,EAAK;AACR,IAAA,WAAA,GAAc,qBAAA;AACd,IAAA,MAAA,GAAS,EAAA;AACT,IAAA,QAAA,GAAW,QAAQ,QAAA,IAAY,SAAA;AAAA,EACjC,CAAA,MAAO;AACL,IAAA,MAAM,OAAA,GAAU,MAAMA,yBAAA,CAAS,MAAA,CAAO;AAAA,MACpC;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM,aAAA;AAAA,QACN,OAAA,EAAS,eAAA;AAAA,QACT,OAAA,EAAS,aAAa,IAAI,CAAA,CACvB,QAAQ,UAAA,EAAY,KAAK,EACzB,IAAA;AAAK,OACV;AAAA,MACA;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM,aAAA;AAAA,QACN,OAAA,EAAS,oBAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM,QAAA;AAAA,QACN,OAAA,EAAS,cAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,UAAA;AAAA,QACN,OAAA,EAAS,kBAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,IAAA,EAAM,iCAAA,EAAmC,KAAA,EAAO,SAAA,EAAU;AAAA,UAC5D,EAAE,IAAA,EAAM,wBAAA,EAA0B,KAAA,EAAO,SAAA;AAAU,SACrD;AAAA,QACA,OAAA,EAAS,QAAQ,QAAA,IAAY;AAAA;AAC/B,KACD,CAAA;AAED,IAAA,WAAA,GAAc,OAAA,CAAQ,WAAA;AACtB,IAAA,WAAA,GAAc,OAAA,CAAQ,WAAA;AACtB,IAAA,MAAA,GAAS,OAAA,CAAQ,MAAA;AACjB,IAAA,QAAA,GAAW,OAAA,CAAQ,QAAA;AAAA,EACrB;AAEA,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,WAAA,EAAa,IAAA;AAAA,IACb,SAAA,EAAW,IAAA;AAAA,IACX,eAAA,EAAiB,aAAa,IAAI,CAAA;AAAA,IAClC,WAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AAGA,EAAA,IAAI,WAAA,GAAc,EAAA;AAClB,EAAA,IAAI,CAAC,QAAQ,GAAA,EAAK;AAChB,IAAA,MAAM,WAAA,GAAc,MAAMA,yBAAA,CAAS,MAAA,CAAO;AAAA,MACxC;AAAA,QACE,IAAA,EAAM,UAAA;AAAA,QACN,IAAA,EAAM,aAAA;AAAA,QACN,OAAA,EACE;AAAA;AACJ,KACD,CAAA;AACD,IAAA,WAAA,GAAc,YAAY,WAAA,IAAe,EAAA;AAAA,EAC3C;AAEA,EAAArB,cAAA,CAAO,aAAa,+BAA+B,CAAA;AAEnD,EAAA,IAAI;AAEF,IAAAM,qBAAG,SAAA,CAAU,WAAA,EAAa,EAAE,SAAA,EAAW,MAAM,CAAA;AAG7C,IAAA,MAAM,YAAA,CAAa,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AAG9C,IAAA,MAAM,kBAAA;AAAA,MACJ,WAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF;AAGA,IAAA,MAAM,WAAA,GAAcF,uBAAAA,CAAK,IAAA,CAAK,WAAA,EAAa,WAAW,CAAA;AACtD,IAAA,IAAIE,oBAAAA,CAAG,UAAA,CAAW,WAAW,CAAA,EAAG;AAC9B,MAAA,IAAI,UAAA,GAAaA,oBAAAA,CAAG,YAAA,CAAa,WAAA,EAAa,OAAO,CAAA;AACrD,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,UAAA,GAAa,UAAA,CAAW,OAAA,CAAQ,mBAAA,EAAqB,WAAW,CAAA;AAAA,MAClE,CAAA,MAAO;AAEL,QAAA,IAAI;AACF,UAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,UAAU,CAAA;AACrC,UAAA,OAAO,QAAQ,UAAA,CAAW,KAAA;AAC1B,UAAA,UAAA,GAAa,IAAA,CAAK,SAAA,CAAU,OAAA,EAAS,IAAA,EAAM,CAAC,CAAA,GAAI,IAAA;AAAA,QAClD,CAAA,CAAA,MAAQ;AAAA,QAAC;AAAA,MACX;AACA,MAAAA,oBAAAA,CAAG,aAAA,CAAc,WAAA,EAAa,UAAA,EAAY,OAAO,CAAA;AAAA,IACnD;AAEA,IAAAN,cAAA,CAAO,WAAA,CAAY,MAAM,4BAA4B,CAAA;AAGrD,IAAA,IAAI,QAAQ,GAAA,EAAK;AACf,MAAAA,cAAA,CAAO,aAAa,gCAAgC,CAAA;AACpD,MAAA,IAAI;AACF,QAAAmB,uBAAS,UAAA,EAAY,EAAE,KAAK,WAAA,EAAa,KAAA,EAAO,UAAU,CAAA;AAC1D,QAAAA,uBAAS,WAAA,EAAa,EAAE,KAAK,WAAA,EAAa,KAAA,EAAO,UAAU,CAAA;AAC3D,QAAAA,uBAAS,kDAAA,EAAoD;AAAA,UAC3D,GAAA,EAAK,WAAA;AAAA,UACL,KAAA,EAAO;AAAA,SACR,CAAA;AACD,QAAAnB,cAAA,CAAO,WAAA,CAAY,MAAM,6BAA6B,CAAA;AAAA,MACxD,CAAA,CAAA,MAAQ;AACN,QAAAA,cAAA,CAAO,WAAA,CAAY,OAAO,0BAA0B,CAAA;AAAA,MACtD;AAAA,IACF;AAGA,IAAA,IAAI,CAAC,QAAQ,SAAA,EAAW;AACtB,MAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,MAAA,MAAM,iBAAiB,oBAAA,EAAqB;AAC5C,MAAAA,cAAA,CAAO,YAAA,CAAa,CAAA,6BAAA,EAAgC,cAAc,CAAA,GAAA,CAAK,CAAA;AACvE,MAAA,IAAI;AACF,QAAA,MAAM,mBAAA,CAAoB,aAAa,cAAc,CAAA;AACrD,QAAAA,cAAA,CAAO,WAAA,CAAY,MAAM,yBAAyB,CAAA;AAAA,MACpD,CAAA,CAAA,MAAQ;AACN,QAAAA,cAAA,CAAO,WAAA,CAAY,OAAO,gCAAgC,CAAA;AAC1D,QAAAA,cAAA,CAAO,IAAA;AAAA,UACL,0DACE,IAAA,GACA;AAAA,SACJ;AAAA,MACF;AAAA,IACF;AAGA,IAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,QAAQ,oBAAa,CAAA;AAC5B,IAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,IAAA,CAAK,CAAA,+BAAA,EAAkC,WAAW,CAAA,CAAE,CAAA;AAC3D,IAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,QAAQ,aAAa,CAAA;AAC5B,IAAAA,cAAA,CAAO,GAAA,CAAI,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,CAAA;AACzB,IAAA,IAAI,QAAQ,SAAA,EAAW;AACrB,MAAAA,cAAA,CAAO,IAAI,CAAA,aAAA,CAAe,CAAA;AAAA,IAC5B;AACA,IAAAA,cAAA,CAAO,IAAI,CAAA,uCAAA,CAAyC,CAAA;AACpD,IAAAA,cAAA,CAAO,IAAI,CAAA,6CAAA,CAA+C,CAAA;AAC1D,IAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,QAAQ,kBAAkB,CAAA;AACjC,IAAAA,cAAA,CAAO,IAAI,mDAAmD,CAAA;AAC9D,IAAAA,cAAA,CAAO,GAAA;AAAA,MACL;AAAA,KACF;AACA,IAAAA,cAAA,CAAO,IAAI,wDAAwD,CAAA;AACnE,IAAAA,cAAA,CAAO,IAAI,uDAAuD,CAAA;AAClE,IAAAA,cAAA,CAAO,IAAI,4CAA4C,CAAA;AACvD,IAAAA,cAAA,CAAO,IAAI,6CAA6C,CAAA;AACxD,IAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,QAAQ,CAAA,wBAAA,CAAmB,CAAA;AAAA,EACpC,SAAS,KAAA,EAAO;AACd,IAAAA,cAAA,CAAO,WAAA,CAAY,OAAO,0BAA0B,CAAA;AACpD,IAAAA,cAAA,CAAO,KAAA;AAAA,MACL,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU;AAAA,KAC3C;AAEA,IAAA,IAAIM,oBAAAA,CAAG,UAAA,CAAW,WAAW,CAAA,EAAG;AAC9B,MAAAA,oBAAAA,CAAG,OAAO,WAAA,EAAa,EAAE,WAAW,IAAA,EAAM,KAAA,EAAO,MAAM,CAAA;AAAA,IACzD;AACA,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACF;AAMA,eAAe,kBAAA,CACb,WAAA,EACA,SAAA,EACA,WAAA,EACA,aACA,MAAA,EACe;AAGf,EAAA,MAAM,UAAA,GAAaF,uBAAAA,CAAK,IAAA,CAAK,WAAA,EAAa,iBAAiB,CAAA;AAC3D,EAAA,IAAIE,oBAAAA,CAAG,UAAA,CAAW,UAAU,CAAA,EAAG;AAC7B,IAAA,IAAI,OAAA,GAAUA,oBAAAA,CAAG,YAAA,CAAa,UAAA,EAAY,OAAO,CAAA;AAEjD,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA;AAAA,MAChB,yBAAA;AAAA,MACA,UAAU,WAAW,CAAA,CAAA;AAAA,KACvB;AACA,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA;AAAA,MAChB,oBAAA;AAAA,MACA,iBAAiB,WAAW,CAAA,CAAA;AAAA,KAC9B;AACA,IAAAA,oBAAAA,CAAG,aAAA,CAAc,UAAA,EAAY,OAAA,EAAS,OAAO,CAAA;AAAA,EAC/C;AAGA,EAAA,MAAM,OAAA,GAAUF,uBAAAA,CAAK,IAAA,CAAK,WAAA,EAAa,cAAc,CAAA;AACrD,EAAA,IAAIE,oBAAAA,CAAG,UAAA,CAAW,OAAO,CAAA,EAAG;AAC1B,IAAA,IAAI,OAAA,GAAUA,oBAAAA,CAAG,YAAA,CAAa,OAAA,EAAS,OAAO,CAAA;AAC9C,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA;AAAA,MAChB,0BAAA;AAAA,MACA,gBAAgB,SAAS,CAAA;AAAA,KAC3B;AACA,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA;AAAA,MAChB,sBAAA;AAAA,MACA,mBAAmB,WAAW,CAAA,CAAA;AAAA,KAChC;AACA,IAAAA,oBAAAA,CAAG,aAAA,CAAc,OAAA,EAAS,OAAA,EAAS,OAAO,CAAA;AAAA,EAC5C;AACF;;;AI1UA,WAAA,EAAA;AAsBA,eAAsB,oBAAA,CACpB,MACA,OAAA,EACe;AACf,EAAAN,cAAA,CAAO,OAAO,oBAAoB,CAAA;AAGlC,EAAA,iBAAA,EAAkB;AAGlB,EAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAClB,IAAA,MAAM,iBAAA,GAAoB,CAAC,iBAAA,EAAmB,iBAAiB,CAAA,CAAE,IAAA;AAAA,MAAK,CAAC,CAAA,KACrEM,mBAAAA,CAAG,UAAA,CAAWF,uBAAAA,CAAK,KAAK,OAAA,CAAQ,GAAA,EAAI,EAAG,CAAC,CAAC;AAAA,KAC3C;AACA,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,OAAA,CAAQ,KAAA,GAAQA,uBAAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAA;AAAA,IAC7C;AAAA,EACF;AAGA,EAAA,MAAM,WAAA,GAAc,YAAY,IAAI,CAAA;AACpC,EAAA,IAAI,CAAC,YAAA,CAAa,WAAW,CAAA,EAAG;AAC9B,IAAAJ,cAAA,CAAO,KAAA;AAAA,MACL,yBAAyB,WAAW,CAAA,gDAAA;AAAA,KACtC;AACA,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAGA,EAAA,MAAM,OAAA,GAAU,MAAMqB,yBAAAA,CAAS,MAAA,CAAO;AAAA,IACpC;AAAA,MACE,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,OAAA;AAAA,MACN,OAAA,EAAS,4CAAA;AAAA,MACT,SAAS,UAAA,EAAW;AAAA,MACpB,IAAA,EAAM,CAAC,OAAA,CAAQ;AAAA,KACjB;AAAA,IACA;AAAA,MACE,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,UAAA;AAAA,MACN,OAAA,EAAS,gCAAA;AAAA,MACT,SAAS,kBAAA,EAAmB;AAAA,MAC5B,IAAA,EAAM,CAAC,OAAA,CAAQ;AAAA,KACjB;AAAA,IACA;AAAA,MACE,IAAA,EAAM,OAAA;AAAA,MACN,IAAA,EAAM,aAAA;AAAA,MACN,OAAA,EAAS,gCAAA;AAAA,MACT,OAAA,EAAS,aAAa,WAAW,CAAA,CAC9B,QAAQ,UAAA,EAAY,KAAK,EACzB,IAAA;AAAK,KACV;AAAA,IACA;AAAA,MACE,IAAA,EAAM,OAAA;AAAA,MACN,IAAA,EAAM,aAAA;AAAA,MACN,OAAA,EAAS,sBAAA;AAAA,MACT,OAAA,EAAS,CAAA,EAAG,YAAA,CAAa,WAAW,CAAC,CAAA,QAAA;AAAA,KACvC;AAAA,IACA;AAAA,MACE,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EAAS,oCAAA;AAAA,MACT,OAAA,EAAS;AAAA;AACX,GACD,CAAA;AAED,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,KAAA,IAAS,OAAA,CAAQ,KAAA;AAC3C,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,QAAA,IAAY,OAAA,CAAQ,QAAA;AAC7C,EAAA,MAAM,cAAc,OAAA,CAAQ,WAAA;AAC5B,EAAA,MAAM,cAAc,OAAA,CAAQ,WAAA;AAC5B,EAAA,MAAM,iBAAiB,OAAA,CAAQ,cAAA;AAG/B,EAAA,IAAI,CAAC,WAAA,CAAY,SAAS,CAAA,EAAG;AAC3B,IAAArB,cAAA,CAAO,KAAA,CAAM,CAAA,OAAA,EAAU,SAAS,CAAA,iBAAA,CAAmB,CAAA;AACnD,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAGA,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,WAAA;AAAA,IACA,iBAAA,EAAmB,aAAa,WAAW,CAAA;AAAA,IAC3C,SAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAAA,cAAA,CAAO,aAAa,2BAA2B,CAAA;AAE/C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAYI,uBAAAA,CAAK,IAAA,CAAK,YAAA,IAAgB,SAAS,CAAA;AACrD,IAAA,MAAM,WAAA,GAAcA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,YAAY,WAAW,CAAA;AAGhE,IAAA,MAAM,aAAA,GAAgB,sBAAsB,IAAI,CAAA;AAChD,IAAA,MAAM,SAAA;AAAA,MACJA,uBAAAA,CAAK,IAAA,CAAK,WAAA,EAAa,CAAA,EAAG,WAAW,CAAA,UAAA,CAAY,CAAA;AAAA,MACjD;AAAA,KACF;AAGA,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,MAAM,eAAA,GAAkB,wBAAwB,IAAI,CAAA;AACpD,MAAA,MAAM,SAAA;AAAA,QACJA,uBAAAA,CAAK,IAAA,CAAK,WAAA,EAAa,CAAA,EAAG,WAAW,CAAA,YAAA,CAAc,CAAA;AAAA,QACnD;AAAA,OACF;AAAA,IACF;AAGA,IAAA,MAAM,YAAA,GAAe,oBAAA,CAAqB,IAAA,EAAM,cAAc,CAAA;AAC9D,IAAA,MAAM,UAAUA,uBAAAA,CAAK,IAAA,CAAK,WAAA,EAAa,UAAU,GAAG,YAAY,CAAA;AAEhE,IAAAJ,cAAA,CAAO,WAAA,CAAY,MAAM,qCAAqC,CAAA;AAG9D,IAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,QAAQ,aAAa,CAAA;AAC5B,IAAAA,cAAA,CAAO,GAAA;AAAA,MACL,CAAA,kBAAA,EAAqBI,uBAAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,EAAI,EAAGA,uBAAAA,CAAK,IAAA,CAAK,WAAA,EAAa,CAAA,EAAG,WAAW,CAAA,UAAA,CAAY,CAAC,CAAC,CAAA;AAAA,KACvG;AACA,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAAJ,cAAA,CAAO,GAAA;AAAA,QACL,CAAA,oBAAA,EAAuBI,uBAAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,EAAI,EAAGA,uBAAAA,CAAK,IAAA,CAAK,WAAA,EAAa,CAAA,EAAG,WAAW,CAAA,YAAA,CAAc,CAAC,CAAC,CAAA;AAAA,OAC3G;AAAA,IACF;AACA,IAAAJ,cAAA,CAAO,GAAA;AAAA,MACL,CAAA,4BAAA,EAA+BI,uBAAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,EAAI,EAAGA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,aAAa,CAAC,CAAC,CAAA;AAAA,KAClG;AACA,IAAAJ,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,QAAQ,+BAA+B,CAAA;AAAA,EAChD,SAAS,KAAA,EAAO;AACd,IAAAA,cAAA,CAAO,WAAA,CAAY,OAAO,0BAA0B,CAAA;AACpD,IAAAA,cAAA,CAAO,KAAA;AAAA,MACL,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU;AAAA,KAC3C;AACA,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACF;AAEA,SAAS,sBAAsB,IAAA,EAMpB;AACT,EAAA,OAAO,CAAA;;AAAA;AAAA,GAAA,EAGJ,KAAK,WAAW,CAAA;AAAA,GAAA,EAChB,KAAK,WAAW;AAAA;AAAA,aAAA,EAEN,KAAK,WAAW,CAAA;AAAA,SAAA,EACpB,KAAK,WAAW,CAAA;AAAA,SAAA,EAChB,KAAK,WAAW,CAAA;AAAA,gBAAA,EACT,KAAK,WAAW,CAAA;AAAA,aAAA,EACnB,KAAK,QAAQ,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAA,EAQE,KAAK,WAAW,CAAA;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,CAAA;AAyC9C;AAEA,SAAS,wBAAwB,IAAA,EAItB;AACT,EAAA,OAAO,CAAA;AAAA;;AAAA;AAAA,GAAA,EAIJ,KAAK,WAAW,CAAA;AAAA;AAAA,gBAAA,EAEH,KAAK,iBAAiB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,mBAAA,EAkBnB,KAAK,WAAW,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6CAAA,EAQU,KAAK,WAAW,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAwB/D;AAEA,SAAS,oBAAA,CACP,MACA,WAAA,EACQ;AACR,EAAA,OAAO,CAAA;AAAA,GAAA,EACJ,KAAK,iBAAiB,CAAA;AAAA;;AAAA,SAAA,EAGhB,IAAA,CAAK,WAAW,CAAA,iBAAA,EAAoB,IAAA,CAAK,WAAW,CAAA;AAAA,EAC7D,WAAA,GAAc,YAAY,IAAA,CAAK,iBAAiB,qBAAqB,IAAA,CAAK,WAAW,eAAe,EAAE;AAAA,CAAA;AAExG;;;AChTA,WAAA,EAAA;AAeA,eAAsB,kBAAA,CACpB,MACA,OAAA,EACe;AACf,EAAAA,cAAA,CAAO,OAAO,kBAAkB,CAAA;AAGhC,EAAA,iBAAA,EAAkB;AAGlB,EAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAClB,IAAA,MAAM,iBAAA,GAAoB,CAAC,iBAAA,EAAmB,iBAAiB,CAAA,CAAE,IAAA;AAAA,MAAK,CAAC,CAAA,KACrEM,mBAAAA,CAAG,UAAA,CAAWF,uBAAAA,CAAK,KAAK,OAAA,CAAQ,GAAA,EAAI,EAAG,CAAC,CAAC;AAAA,KAC3C;AACA,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,OAAA,CAAQ,KAAA,GAAQA,uBAAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAA;AAAA,IAC7C;AAAA,EACF;AAGA,EAAA,MAAM,SAAA,GAAY,YAAY,IAAI,CAAA;AAClC,EAAA,IAAI,CAAC,YAAA,CAAa,SAAS,CAAA,EAAG;AAC5B,IAAAJ,cAAA,CAAO,KAAA;AAAA,MACL,uBAAuB,SAAS,CAAA,uDAAA;AAAA,KAClC;AACA,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAGA,EAAA,MAAM,OAAA,GAAU,MAAMqB,yBAAAA,CAAS,MAAA,CAAO;AAAA,IACpC;AAAA,MACE,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,OAAA;AAAA,MACN,OAAA,EAAS,cAAA;AAAA,MACT,OAAA,EAAS;AAAA,QACP,EAAE,IAAA,EAAM,kCAAA,EAAoC,KAAA,EAAO,QAAA,EAAS;AAAA,QAC5D,EAAE,IAAA,EAAM,gBAAA,EAAkB,KAAA,EAAO,OAAA;AAAQ,OAC3C;AAAA,MACA,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,OAAA;AAAA,MACN,OAAA,EAAS,cAAA;AAAA,MACT,SAAS,UAAA,EAAW;AAAA,MACpB,MAAM,CAACE,QAAAA,KAAYA,SAAQ,KAAA,KAAU,OAAA,IAAW,CAAC,OAAA,CAAQ;AAAA,KAC3D;AAAA,IACA;AAAA,MACE,IAAA,EAAM,OAAA;AAAA,MACN,IAAA,EAAM,aAAA;AAAA,MACN,OAAA,EAAS,8BAAA;AAAA,MACT,OAAA,EAAS,aAAa,SAAS,CAAA,CAC5B,QAAQ,UAAA,EAAY,KAAK,EACzB,IAAA;AAAK,KACV;AAAA,IACA;AAAA,MACE,IAAA,EAAM,OAAA;AAAA,MACN,IAAA,EAAM,aAAA;AAAA,MACN,OAAA,EAAS,oBAAA;AAAA,MACT,OAAA,EAAS,CAAA,EAAG,YAAA,CAAa,SAAS,CAAC,CAAA,MAAA;AAAA,KACrC;AAAA,IACA;AAAA,MACE,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM,eAAA;AAAA,MACN,OAAA,EAAS,qCAAA;AAAA,MACT,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM,iBAAA;AAAA,MACN,OAAA,EAAS,wCAAA;AAAA,MACT,OAAA,EAAS;AAAA;AACX,GACD,CAAA;AAED,EAAA,MAAM,QAAQ,OAAA,CAAQ,KAAA;AACtB,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,KAAA,IAAS,OAAA,CAAQ,KAAA;AAC3C,EAAA,MAAM,cAAc,OAAA,CAAQ,WAAA;AAC5B,EAAA,MAAM,cAAc,OAAA,CAAQ,WAAA;AAC5B,EAAA,MAAM,gBAAgB,OAAA,CAAQ,aAAA;AAC9B,EAAA,MAAM,kBAAkB,OAAA,CAAQ,eAAA;AAGhC,EAAA,IAAI,KAAA,KAAU,OAAA,IAAW,CAAC,WAAA,CAAY,SAAS,CAAA,EAAG;AAChD,IAAAvB,cAAA,CAAO,KAAA,CAAM,CAAA,OAAA,EAAU,SAAS,CAAA,iBAAA,CAAmB,CAAA;AACnD,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAGA,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,SAAA;AAAA,IACA,eAAA,EAAiB,aAAa,SAAS,CAAA;AAAA,IACvC,WAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAAA,cAAA,CAAO,aAAa,yBAAyB,CAAA;AAE7C,EAAA,IAAI;AACF,IAAA,MAAM,YACJ,KAAA,KAAU,QAAA,GACNI,uBAAAA,CAAK,IAAA,CAAK,gBAAe,EAAG,QAAA,EAAU,SAAS,CAAA,GAC/CA,wBAAK,IAAA,CAAK,YAAA,EAAa,EAAG,SAAA,EAAW,UAAU,SAAS,CAAA;AAG9D,IAAA,MAAM,aAAA,GAAgB,oBAAoB,IAAI,CAAA;AAC9C,IAAA,MAAM,SAAA;AAAA,MACJA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,CAAA,EAAG,SAAS,CAAA,UAAA,CAAY,CAAA;AAAA,MAC7C;AAAA,KACF;AAGA,IAAA,MAAM,gBAAA,GAAmB,uBAAuB,IAAI,CAAA;AACpD,IAAA,MAAM,SAAA,CAAUA,wBAAK,IAAA,CAAK,SAAA,EAAW,GAAG,SAAS,CAAA,IAAA,CAAM,GAAG,gBAAgB,CAAA;AAG1E,IAAA,MAAM,YAAA,GAAe,mBAAmB,IAAI,CAAA;AAC5C,IAAA,MAAM,UAAUA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,UAAU,GAAG,YAAY,CAAA;AAE9D,IAAAJ,cAAA,CAAO,WAAA,CAAY,MAAM,mCAAmC,CAAA;AAG5D,IAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,QAAQ,aAAa,CAAA;AAC5B,IAAAA,cAAA,CAAO,GAAA;AAAA,MACL,CAAA,kBAAA,EAAqBI,uBAAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,EAAI,EAAGA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,CAAA,EAAG,SAAS,CAAA,UAAA,CAAY,CAAC,CAAC,CAAA;AAAA,KACnG;AACA,IAAAJ,cAAA,CAAO,GAAA;AAAA,MACL,CAAA,qBAAA,EAAwBI,uBAAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,EAAI,EAAGA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,CAAA,EAAG,SAAS,CAAA,IAAA,CAAM,CAAC,CAAC,CAAA;AAAA,KAChG;AACA,IAAAJ,cAAA,CAAO,GAAA;AAAA,MACL,CAAA,mEAAA;AAAA,KACF;AACA,IAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,QAAQ,6BAA6B,CAAA;AAAA,EAC9C,SAAS,KAAA,EAAO;AACd,IAAAA,cAAA,CAAO,WAAA,CAAY,OAAO,wBAAwB,CAAA;AAClD,IAAAA,cAAA,CAAO,KAAA;AAAA,MACL,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU;AAAA,KAC3C;AACA,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACF;AAEA,SAAS,oBAAoB,IAAA,EAOlB;AACT,EAAA,OAAO,CAAA;;AAAA;AAAA,GAAA,EAGJ,KAAK,WAAW,CAAA;AAAA,GAAA,EAChB,KAAK,WAAW;AAAA;AAAA,aAAA,EAEN,KAAK,SAAS,CAAA;AAAA,SAAA,EAClB,KAAK,SAAS,CAAA;AAAA,SAAA,EACd,KAAK,WAAW,CAAA;AAAA,gBAAA,EACT,KAAK,WAAW,CAAA;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,YAAA,EA2BpB,KAAK,WAAW,CAAA;AAAA;AAAA;;AAAA,EAAA,EAI1B,KAAK,aAAA,GAAgB,CAAA;AAAA,yBAAA,CAAA,GAAoE,EAAE;AAAA,EAAA,EAC3F,KAAK,eAAA,GAAkB,CAAA;AAAA,2BAAA,CAAA,GAAyE,EAAE;AAAA;AAAA,CAAA;AAGtG;AAEA,SAAS,uBAAuB,IAAA,EAMrB;AACT,EAAA,OAAO,CAAA;AAAA;;AAAA;AAAA,GAAA,EAIJ,KAAK,WAAW,CAAA;AAAA;AAAA,gBAAA,EAEH,KAAK,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6CAAA,EAKS,KAAK,WAAW,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,mBAAA,EAW1C,KAAK,SAAS,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA,MAAA,EAY3B,KAAK,aAAA,GACD,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA,GAMA,EACN;;AAAA,MAAA,EAGE,KAAK,eAAA,GACD,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA,GAMA,EACN;AAAA;AAAA;AAAA;AAAA,CAAA;AAKN;AAEA,SAAS,mBAAmB,IAAA,EAGjB;AACT,EAAA,OAAO,CAAA;AAAA,GAAA,EACJ,KAAK,eAAe,CAAA;AAAA;;AAAA,SAAA,EAGd,IAAA,CAAK,SAAS,CAAA,qBAAA,EAAwB,IAAA,CAAK,SAAS,CAAA;AAAA,SAAA,EACpD,IAAA,CAAK,eAAe,CAAA,WAAA,EAAc,IAAA,CAAK,SAAS,CAAA;AAAA,CAAA;AAE3D;;;ACxSA,WAAA,EAAA;AAYA,eAAsB,sBAAA,CACpB,MACA,OAAA,EACe;AACf,EAAAA,cAAA,CAAO,OAAO,sBAAsB,CAAA;AAGpC,EAAA,iBAAA,EAAkB;AAGlB,EAAA,MAAM,aAAA,GAAgB,YAAY,IAAI,CAAA;AACtC,EAAA,IAAI,CAAC,YAAA,CAAa,aAAa,CAAA,EAAG;AAChC,IAAAA,cAAA,CAAO,KAAA;AAAA,MACL,2BAA2B,aAAa,CAAA,2CAAA;AAAA,KAC1C;AACA,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAGA,EAAA,MAAM,OAAA,GAAU,MAAMqB,yBAAAA,CAAS,MAAA,CAAO;AAAA,IACpC;AAAA,MACE,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,eAAA;AAAA,MACN,OAAA,EAAS,iBAAA;AAAA,MACT,OAAA,EAAS;AAAA,QACP,EAAE,IAAA,EAAM,oCAAA,EAAsC,KAAA,EAAO,IAAA,EAAK;AAAA,QAC1D,EAAE,IAAA,EAAM,sCAAA,EAAwC,KAAA,EAAO,MAAA,EAAO;AAAA,QAC9D,EAAE,IAAA,EAAM,0CAAA,EAA4C,KAAA,EAAO,QAAA,EAAS;AAAA,QACpE;AAAA,UACE,IAAA,EAAM,8CAAA;AAAA,UACN,KAAA,EAAO;AAAA;AACT,OACF;AAAA,MACA,IAAA,EAAM,CAAC,OAAA,CAAQ;AAAA,KACjB;AAAA,IACA;AAAA,MACE,IAAA,EAAM,OAAA;AAAA,MACN,IAAA,EAAM,aAAA;AAAA,MACN,OAAA,EAAS,kCAAA;AAAA,MACT,OAAA,EAAS,aAAa,aAAa,CAAA,CAChC,QAAQ,UAAA,EAAY,KAAK,EACzB,IAAA;AAAK,KACV;AAAA,IACA;AAAA,MACE,IAAA,EAAM,OAAA;AAAA,MACN,IAAA,EAAM,aAAA;AAAA,MACN,OAAA,EAAS,wBAAA;AAAA,MACT,OAAA,EAAS,CAAA,EAAG,YAAA,CAAa,aAAa,CAAC,CAAA,UAAA;AAAA;AACzC,GACD,CAAA;AAED,EAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,IAAA,IAAQ,OAAA,CAAQ,aAAA;AAC9C,EAAA,MAAM,cAAc,OAAA,CAAQ,WAAA;AAC5B,EAAA,MAAM,cAAc,OAAA,CAAQ,WAAA;AAG5B,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,aAAA;AAAA,IACA,mBAAA,EAAqB,aAAa,aAAa,CAAA;AAAA,IAC/C,aAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAArB,cAAA,CAAO,aAAa,6BAA6B,CAAA;AAEjD,EAAA,IAAI;AACF,IAAA,MAAM,gBAAgBI,uBAAAA,CAAK,IAAA;AAAA,MACzB,cAAA,EAAe;AAAA,MACf,YAAA;AAAA,MACA;AAAA,KACF;AAGA,IAAA,MAAM,aAAA,GAAgB,wBAAwB,IAAI,CAAA;AAClD,IAAA,MAAM,SAAA;AAAA,MACJA,uBAAAA,CAAK,IAAA,CAAK,aAAA,EAAe,CAAA,EAAG,aAAa,CAAA,UAAA,CAAY,CAAA;AAAA,MACrD;AAAA,KACF;AAGA,IAAA,MAAM,gBAAA,GAAmB,kBAAkB,IAAI,CAAA;AAC/C,IAAA,MAAM,SAAA;AAAA,MACJA,uBAAAA,CAAK,IAAA,CAAK,aAAA,EAAe,CAAA,EAAG,aAAa,CAAA,IAAA,CAAM,CAAA;AAAA,MAC/C;AAAA,KACF;AAGA,IAAA,MAAM,YAAA,GAAe,uBAAuB,IAAI,CAAA;AAChD,IAAA,MAAM,UAAUA,uBAAAA,CAAK,IAAA,CAAK,aAAA,EAAe,UAAU,GAAG,YAAY,CAAA;AAElE,IAAAJ,cAAA,CAAO,WAAA,CAAY,MAAM,uCAAuC,CAAA;AAGhE,IAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,QAAQ,aAAa,CAAA;AAC5B,IAAAA,cAAA,CAAO,GAAA;AAAA,MACL,CAAA,kBAAA,EAAqBI,uBAAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,EAAI,EAAGA,uBAAAA,CAAK,IAAA,CAAK,aAAA,EAAe,CAAA,EAAG,aAAa,CAAA,UAAA,CAAY,CAAC,CAAC,CAAA;AAAA,KAC3G;AACA,IAAAJ,cAAA,CAAO,GAAA;AAAA,MACL,CAAA,qBAAA,EAAwBI,uBAAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,EAAI,EAAGA,uBAAAA,CAAK,IAAA,CAAK,aAAA,EAAe,CAAA,EAAG,aAAa,CAAA,IAAA,CAAM,CAAC,CAAC,CAAA;AAAA,KACxG;AACA,IAAAJ,cAAA,CAAO,GAAA;AAAA,MACL,CAAA,2EAAA;AAAA,KACF;AACA,IAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,QAAQ,iCAAiC,CAAA;AAAA,EAClD,SAAS,KAAA,EAAO;AACd,IAAAA,cAAA,CAAO,WAAA,CAAY,OAAO,4BAA4B,CAAA;AACtD,IAAAA,cAAA,CAAO,KAAA;AAAA,MACL,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU;AAAA,KAC3C;AACA,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACF;AAEA,SAAS,wBAAwB,IAAA,EAKtB;AACT,EAAA,OAAO,CAAA;;AAAA;AAAA,GAAA,EAGJ,KAAK,WAAW,CAAA;AAAA,GAAA,EAChB,KAAK,WAAW;AAAA;AAAA,aAAA,EAEN,KAAK,aAAa,CAAA;AAAA,SAAA,EACtB,KAAK,aAAa,CAAA;AAAA,SAAA,EAClB,KAAK,WAAW,CAAA;AAAA,gBAAA,EACT,KAAK,WAAW,CAAA;AAAA,aAAA,EACnB,KAAK,aAAa,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAA,EASV,KAAK,WAAW,CAAA;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,WAAA,EAgC1B,KAAK,WAAW,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAU7B;AAEA,SAAS,kBAAkB,IAAA,EAIhB;AACT,EAAA,OAAO,CAAA;AAAA;;AAAA;AAAA,GAAA,EAIJ,KAAK,WAAW,CAAA;AAAA;AAAA,gBAAA,EAEH,KAAK,mBAAmB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0CAAA,EAKE,KAAK,WAAW,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,mBAAA,EAoBvC,KAAK,aAAa,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AASvC;AAEA,SAAS,uBAAuB,IAAA,EAGrB;AACT,EAAA,OAAO,CAAA;AAAA,GAAA,EACJ,KAAK,mBAAmB,CAAA;AAAA;;AAAA,SAAA,EAGlB,IAAA,CAAK,aAAa,CAAA,qBAAA,EAAwB,IAAA,CAAK,aAAa,CAAA;AAAA,SAAA,EAC5D,IAAA,CAAK,mBAAmB,CAAA,WAAA,EAAc,IAAA,CAAK,aAAa,CAAA;AAAA,CAAA;AAEnE;;;AC9PA,WAAA,EAAA;AAeA,eAAsB,YAAY,OAAA,EAAqC;AACrE,EAAAA,cAAA,CAAO,OAAO,wBAAwB,CAAA;AAGtC,EAAA,iBAAA,EAAkB;AAElB,EAAA,MAAM,OAAA,GAAU,CAAC,OAAA,CAAQ,QAAA,IAAY,CAAC,OAAA,CAAQ,MAAA,IAAU,CAAC,OAAA,CAAQ,UAAA;AAEjE,EAAA,IAAI,OAAA,IAAW,QAAQ,QAAA,EAAU;AAC/B,IAAA,MAAM,YAAA,CAAa,QAAQ,KAAK,CAAA;AAAA,EAClC;AAEA,EAAA,IAAI,OAAA,IAAW,QAAQ,MAAA,EAAQ;AAC7B,IAAA,MAAM,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA,EAChC;AAEA,EAAA,IAAI,OAAA,IAAW,QAAQ,UAAA,EAAY;AACjC,IAAA,MAAM,cAAA,EAAe;AAAA,EACvB;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,MAAM,cAAA,EAAe;AAAA,EACvB;AACF;AAEA,eAAe,aAAa,WAAA,EAAqC;AAC/D,EAAAA,cAAA,CAAO,QAAQ,oBAAa,CAAA;AAE5B,EAAA,MAAM,MAAA,GAAS,WAAA,GAAc,CAAC,WAAW,IAAI,UAAA,EAAW;AAExD,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAAA,cAAA,CAAO,QAAQ,iBAAiB,CAAA;AAChC,IAAA;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,MAAM,cAAcI,uBAAAA,CAAK,IAAA,CAAK,YAAA,EAAa,EAAG,OAAO,UAAU,CAAA;AAE/D,IAAA,IAAI,CAACE,mBAAAA,CAAG,UAAA,CAAW,WAAW,CAAA,EAAG;AAC/B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,WAAWA,mBAAAA,CAAG,WAAA,CAAY,WAAW,CAAA,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS;AAC5D,MAAA,MAAM,WAAA,GAAcF,uBAAAA,CAAK,IAAA,CAAK,WAAA,EAAa,IAAI,CAAA;AAC/C,MAAA,OACEE,mBAAAA,CAAG,QAAA,CAAS,WAAW,CAAA,CAAE,WAAA,EAAY,IACrCA,mBAAAA,CAAG,UAAA,CAAWF,uBAAAA,CAAK,IAAA,CAAK,WAAA,EAAa,UAAU,CAAC,CAAA;AAAA,IAEpD,CAAC,CAAA;AAED,IAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,MAAAJ,cAAA,CAAO,GAAA,CAAIC,wBAAM,IAAA,CAAK;AAAA,EAAA,EAAO,KAAK,GAAG,CAAC,CAAA;AACtC,MAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC5B,QAAAD,cAAA,CAAO,GAAA,CAAI,CAAA,WAAA,EAAS,OAAO,CAAA,CAAE,CAAA;AAAA,MAC/B,CAAC,CAAA;AAAA,IACH;AAAA,EACF;AAEA,EAAAA,cAAA,CAAO,OAAA,EAAQ;AACjB;AAEA,eAAe,WAAW,WAAA,EAAqC;AAC7D,EAAAA,cAAA,CAAO,QAAQ,kBAAW,CAAA;AAG1B,EAAA,MAAM,eAAA,GAAkBI,uBAAAA,CAAK,IAAA,CAAK,cAAA,IAAkB,QAAQ,CAAA;AAC5D,EAAA,IAAIE,mBAAAA,CAAG,UAAA,CAAW,eAAe,CAAA,EAAG;AAClC,IAAA,MAAM,eAAeA,mBAAAA,CAAG,WAAA,CAAY,eAAe,CAAA,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS;AACpE,MAAA,MAAM,SAAA,GAAYF,uBAAAA,CAAK,IAAA,CAAK,eAAA,EAAiB,IAAI,CAAA;AACjD,MAAA,OACEE,mBAAAA,CAAG,QAAA,CAAS,SAAS,CAAA,CAAE,WAAA,EAAY,IACnCA,mBAAAA,CAAG,UAAA,CAAWF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,UAAU,CAAC,CAAA;AAAA,IAElD,CAAC,CAAA;AAED,IAAA,IAAI,YAAA,CAAa,SAAS,CAAA,EAAG;AAC3B,MAAAJ,cAAA,CAAO,GAAA,CAAIC,uBAAAA,CAAM,IAAA,CAAK,aAAa,CAAC,CAAA;AACpC,MAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC9B,QAAAD,cAAA,CAAO,GAAA,CAAI,CAAA,WAAA,EAAS,KAAK,CAAA,CAAE,CAAA;AAAA,MAC7B,CAAC,CAAA;AAAA,IACH;AAAA,EACF;AAGA,EAAA,MAAM,MAAA,GAAS,WAAA,GAAc,CAAC,WAAW,IAAI,UAAA,EAAW;AAExD,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,MAAM,YAAYI,uBAAAA,CAAK,IAAA,CAAK,YAAA,EAAa,EAAG,OAAO,QAAQ,CAAA;AAE3D,IAAA,IAAI,CAACE,mBAAAA,CAAG,UAAA,CAAW,SAAS,CAAA,EAAG;AAC7B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,SAASA,mBAAAA,CAAG,WAAA,CAAY,SAAS,CAAA,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS;AACxD,MAAA,MAAM,SAAA,GAAYF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,IAAI,CAAA;AAC3C,MAAA,OACEE,mBAAAA,CAAG,QAAA,CAAS,SAAS,CAAA,CAAE,WAAA,EAAY,IACnCA,mBAAAA,CAAG,UAAA,CAAWF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,UAAU,CAAC,CAAA;AAAA,IAElD,CAAC,CAAA;AAED,IAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,MAAAJ,cAAA,CAAO,GAAA,CAAIC,wBAAM,IAAA,CAAK;AAAA,EAAA,EAAO,KAAK,GAAG,CAAC,CAAA;AACtC,MAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,KAAU;AACxB,QAAAD,cAAA,CAAO,GAAA,CAAI,CAAA,WAAA,EAAS,KAAK,CAAA,CAAE,CAAA;AAAA,MAC7B,CAAC,CAAA;AAAA,IACH;AAAA,EACF;AAEA,EAAAA,cAAA,CAAO,OAAA,EAAQ;AACjB;AAEA,eAAe,cAAA,GAAgC;AAC7C,EAAAA,cAAA,CAAO,QAAQ,0BAAgB,CAAA;AAE/B,EAAA,MAAM,aAAA,GAAgBI,uBAAAA,CAAK,IAAA,CAAK,cAAA,IAAkB,YAAY,CAAA;AAE9D,EAAA,IAAI,CAACE,mBAAAA,CAAG,UAAA,CAAW,aAAa,CAAA,EAAG;AACjC,IAAAN,cAAA,CAAO,QAAQ,+BAA+B,CAAA;AAC9C,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,aAAaM,mBAAAA,CAAG,WAAA,CAAY,aAAa,CAAA,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS;AAChE,IAAA,MAAM,aAAA,GAAgBF,uBAAAA,CAAK,IAAA,CAAK,aAAA,EAAe,IAAI,CAAA;AACnD,IAAA,OACEE,mBAAAA,CAAG,QAAA,CAAS,aAAa,CAAA,CAAE,WAAA,EAAY,IACvCA,mBAAAA,CAAG,UAAA,CAAWF,uBAAAA,CAAK,IAAA,CAAK,aAAA,EAAe,UAAU,CAAC,CAAA;AAAA,EAEtD,CAAC,CAAA;AAED,EAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC3B,IAAAJ,cAAA,CAAO,QAAQ,qBAAqB,CAAA;AACpC,IAAA;AAAA,EACF;AAEA,EAAAA,cAAA,CAAO,IAAI,EAAE,CAAA;AACb,EAAA,UAAA,CAAW,OAAA,CAAQ,CAAC,SAAA,KAAc;AAChC,IAAAA,cAAA,CAAO,GAAA,CAAI,CAAA,SAAA,EAAO,SAAS,CAAA,CAAE,CAAA;AAAA,EAC/B,CAAC,CAAA;AAED,EAAAA,cAAA,CAAO,OAAA,EAAQ;AACjB;AAEA,eAAe,cAAA,GAAgC;AAC7C,EAAAA,cAAA,CAAO,QAAQ,kBAAW,CAAA;AAE1B,EAAA,MAAM,SAAS,UAAA,EAAW;AAE1B,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAAA,cAAA,CAAO,QAAQ,iBAAiB,CAAA;AAChC,IAAA;AAAA,EACF;AAEA,EAAAA,cAAA,CAAO,IAAI,EAAE,CAAA;AAEb,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,MAAM,QAAA,GAAWI,uBAAAA,CAAK,IAAA,CAAK,YAAA,IAAgB,KAAK,CAAA;AAChD,IAAA,MAAM,UAAA,GAAa,CAAC,iBAAA,EAAmB,iBAAA,EAAmB,aAAa,CAAA;AACvE,IAAA,IAAI,eAAA,GAAkB,EAAA;AACtB,IAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,MAAA,MAAM,aAAA,GAAgBA,uBAAAA,CAAK,IAAA,CAAK,QAAA,EAAU,SAAS,CAAA;AACnD,MAAA,IAAIE,mBAAAA,CAAG,UAAA,CAAW,aAAa,CAAA,EAAG;AAChC,QAAA,eAAA,GAAkBA,mBAAAA,CAAG,YAAA,CAAa,aAAA,EAAe,OAAO,CAAA;AACxD,QAAA;AAAA,MACF;AAAA,IACF;AAGA,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,KAAA,CAAM,sBAAsB,CAAA;AAC9D,IAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,KAAA,CAAM,yBAAyB,CAAA;AACpE,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,KAAA,CAAM,6BAA6B,CAAA;AAErE,IAAA,MAAM,WAAA,GAAc,SAAA,GAAY,SAAA,CAAU,CAAC,CAAA,GAAI,KAAA;AAC/C,IAAA,MAAM,OAAA,GAAU,YAAA,GAAe,YAAA,CAAa,CAAC,CAAA,GAAI,SAAA;AACjD,IAAA,MAAM,WAAA,GAAc,SAAA,GAAY,SAAA,CAAU,CAAC,CAAA,GAAI,EAAA;AAE/C,IAAAN,cAAA,CAAO,GAAA,CAAIC,uBAAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,WAAW,CAAA,CAAE,CAAA,GAAIA,uBAAAA,CAAM,IAAA,CAAK,CAAA,GAAA,EAAM,OAAO,CAAA,CAAA,CAAG,CAAC,CAAA;AACxE,IAAA,IAAI,WAAA,EAAa;AACf,MAAAD,cAAA,CAAO,IAAIC,uBAAAA,CAAM,IAAA,CAAK,CAAA,IAAA,EAAO,WAAW,EAAE,CAAC,CAAA;AAAA,IAC7C;AAAA,EACF;AAEA,EAAAD,cAAA,CAAO,OAAA,EAAQ;AACjB;;;ACtMA,WAAA,EAAA;AASA,eAAsB,aAAa,OAAA,EAAsC;AACvE,EAAAA,cAAA,CAAO,OAAO,aAAa,CAAA;AAE3B,EAAA,IAAI,SAAA;AACJ,EAAA,IAAI,SAAA;AAGJ,EAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,IAAA,SAAA,GAAY,OAAA,CAAQ,KAAA;AAEpB,IAAA,IAAI;AACF,MAAA,MAAM,kBAAA,GAAqBI,uBAAAA,CAAK,IAAA,CAAK,YAAA,IAAgB,SAAS,CAAA;AAC9D,MAAA,IAAIE,mBAAAA,CAAG,UAAA,CAAW,kBAAkB,CAAA,EAAG;AACrC,QAAA,SAAA,GAAY,kBAAA;AAAA,MACd,CAAA,MAAO;AACL,QAAA,SAAA,GAAYF,uBAAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,IAAO,SAAS,CAAA;AAAA,MAChD;AAAA,IACF,CAAA,CAAA,MAAQ;AAEN,MAAA,SAAA,GAAYA,uBAAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,IAAO,SAAS,CAAA;AAAA,IAChD;AAEA,IAAA,IAAI,CAACE,mBAAAA,CAAG,UAAA,CAAW,SAAS,CAAA,EAAG;AAC7B,MAAAN,cAAA,CAAO,KAAA,CAAM,CAAA,OAAA,EAAU,SAAS,CAAA,YAAA,CAAc,CAAA;AAC9C,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF,CAAA,MAAO;AAEL,IAAA,MAAM,UAAA,GAAa;AAAA,MACjB,iBAAA;AAAA,MACA,iBAAA;AAAA,MACA;AAAA,KACF,CAAE,IAAA,CAAK,CAAC,CAAA,KAAMM,mBAAAA,CAAG,UAAA,CAAWF,uBAAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAI,EAAG,CAAC,CAAC,CAAC,CAAA;AACxD,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,SAAA,GAAY,QAAQ,GAAA,EAAI;AACxB,MAAA,SAAA,GAAYA,uBAAAA,CAAK,SAAS,SAAS,CAAA;AACnC,MAAAJ,cAAA,CAAO,IAAA,CAAK,CAAA,wBAAA,EAA2B,SAAS,CAAA,CAAE,CAAA;AAAA,IACpD,CAAA,MAAO;AACL,MAAAA,cAAA,CAAO,KAAA;AAAA,QACL;AAAA,OACF;AACA,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF;AAEA,EAAA,MAAM,eAAA,GAAkBI,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,cAAc,CAAA;AAC3D,EAAA,MAAM,UAAA,GAAaE,mBAAAA,CAAG,UAAA,CAAW,eAAe,CAAA;AAEhD,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAAN,cAAA,CAAO,OAAA;AAAA,MACL;AAAA,KACF;AACA,IAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,KAAK,6BAA6B,CAAA;AACzC,IAAAA,cAAA,CAAO,IAAI,oBAAoB,CAAA;AAC/B,IAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,KAAK,qCAAqC,CAAA;AACjD,IAAAA,cAAA,CAAO,IAAI,4CAA4C,CAAA;AACvD,IAAA;AAAA,EACF;AAGA,EAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,EAAAA,cAAA,CAAO,QAAQ,aAAa,CAAA;AAG5B,EAAAA,cAAA,CAAO,aAAa,uBAAuB,CAAA;AAC3C,EAAA,MAAM,mBAAmB,MAAM,UAAA,CAAW,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAA;AAE3E,EAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,IAAAA,cAAA,CAAO,WAAA,CAAY,OAAO,mBAAmB,CAAA;AAC7C,IAAAA,cAAA,CAAO,MAAM,kCAAkC,CAAA;AAC/C,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACA,EAAAA,cAAA,CAAO,WAAA,CAAY,MAAM,mBAAmB,CAAA;AAG5C,EAAAA,cAAA,CAAO,aAAa,mBAAmB,CAAA;AACvC,EAAA,MAAM,cAAc,MAAM,UAAA,CAAW,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAA;AAEhE,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAAA,cAAA,CAAO,WAAA,CAAY,OAAO,aAAa,CAAA;AACvC,IAAAA,cAAA,CAAO,MAAM,kCAAkC,CAAA;AAC/C,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACA,EAAAA,cAAA,CAAO,WAAA,CAAY,MAAM,aAAa,CAAA;AAItC,EAAA,MAAM,OAAA,GAAUM,mBAAAA,CAAG,YAAA,CAAa,eAAe,CAAA;AAC/C,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,OAAA,EAAS,KAAA,IAAS,EAAA;AAC9C,EAAA,MAAM,WAAA,GACJ,WAAA,CAAY,QAAA,CAAS,eAAe,CAAA,IACpC,WAAA,CAAY,QAAA,CAAS,YAAY,CAAA,IACjC,WAAA,CAAY,QAAA,CAAS,gBAAgB,CAAA;AAEvC,EAAAN,cAAA,CAAO,YAAA;AAAA,IACL,OAAA,CAAQ,QAAQ,0BAAA,GAA6B;AAAA,GAC/C;AAEA,EAAA,IAAI,YAAA;AAEJ,EAAA,IAAI,WAAA,EAAa;AAEf,IAAA,MAAM,EAAE,sBAAA,EAAAwB,uBAAAA,EAAuB,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,kBAAA,EAAA,EAAA,qBAAA,CAAA,CAAA;AACzC,IAAA,YAAA,GAAe,MAAMA,uBAAAA,CAAuB,SAAA,EAAW,SAAS,CAAA;AAAA,EAClE,CAAA,MAAO;AAEL,IAAA,MAAM,SAAA,GAAY,QAAQ,KAAA,GAAQ,CAAC,SAAS,SAAS,CAAA,GAAI,CAAC,OAAO,CAAA;AACjE,IAAA,YAAA,GAAe,MAAM,UAAA,CAAW,MAAA,EAAQ,SAAA,EAAW,SAAS,CAAA;AAAA,EAC9D;AAEA,EAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,OAAA,CAAQ,KAAA,EAAO;AACnC,IAAAxB,cAAA,CAAO,WAAA,CAAY,OAAO,cAAc,CAAA;AACxC,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAEA,EAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAClB,IAAAA,cAAA,CAAO,WAAA,CAAY,MAAM,gBAAgB,CAAA;AAGzC,IAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,QAAQ,kCAA6B,CAAA;AAC5C,IAAAA,cAAA,CAAO,OAAA,EAAQ;AACf,IAAAA,cAAA,CAAO,IAAA,CAAK,CAAA,OAAA,EAAU,SAAS,CAAA,CAAE,CAAA;AAEjC,IAAA,MAAM,QAAA,GAAWI,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,MAAM,CAAA;AAC5C,IAAA,IAAIE,mBAAAA,CAAG,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC3B,MAAAN,cAAA,CAAO,GAAA,CAAI,WAAWI,uBAAAA,CAAK,QAAA,CAAS,QAAQ,GAAA,EAAI,EAAG,QAAQ,CAAC,CAAA,CAAE,CAAA;AAG9D,MAAA,MAAM,KAAA,GAAQE,mBAAAA,CAAG,WAAA,CAAY,QAAQ,CAAA;AACrC,MAAAN,cAAA,CAAO,GAAA,CAAI,CAAA,OAAA,EAAU,KAAA,CAAM,MAAM,CAAA,CAAE,CAAA;AAAA,IACrC;AAAA,EACF;AACF;AAKA,SAAS,UAAA,CACP,OAAA,EACA,IAAA,EACA,GAAA,EACkB;AAClB,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC9B,IAAA,MAAM,IAAA,GAAOyB,mBAAA,CAAM,OAAA,EAAS,IAAA,EAAM;AAAA,MAChC,GAAA;AAAA,MACA,KAAA,EAAO,CAAC,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA;AAAA,MAC9B,KAAA,EAAO;AAAA,KACR,CAAA;AAED,IAAA,IAAI,MAAA,GAAS,EAAA;AACb,IAAA,IAAI,MAAA,GAAS,EAAA;AAEb,IAAA,IAAA,CAAK,MAAA,CAAO,EAAA,CAAG,MAAA,EAAQ,CAAC,IAAA,KAAS;AAC/B,MAAA,MAAA,IAAU,KAAK,QAAA,EAAS;AAAA,IAC1B,CAAC,CAAA;AACD,IAAA,IAAA,CAAK,MAAA,CAAO,EAAA,CAAG,MAAA,EAAQ,CAAC,IAAA,KAAS;AAC/B,MAAA,MAAA,IAAU,KAAK,QAAA,EAAS;AAAA,IAC1B,CAAC,CAAA;AAED,IAAA,IAAA,CAAK,EAAA,CAAG,OAAA,EAAS,CAAC,IAAA,KAAS;AACzB,MAAA,IAAI,SAAS,CAAA,EAAG;AAEd,QAAA,MAAM,MAAA,GAAA,CAAU,MAAA,GAAS,MAAA,EAAQ,IAAA,EAAK;AACtC,QAAA,IAAI,MAAA,EAAQ;AACV,UAAAzB,cAAA,CAAO,OAAA,EAAQ;AACf,UAAA,KAAA,MAAW,IAAA,IAAQ,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA,EAAG;AACrC,YAAA,MAAM,CAAA,GAAI,KAAK,IAAA,EAAK;AACpB,YAAA,IAAI,CAAC,CAAA,EAAG;AACR,YAAA,IACE,CAAA,CAAE,QAAA,CAAS,OAAO,CAAA,IAClB,CAAA,CAAE,QAAA,CAAS,OAAO,CAAA,IAClB,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA,EACf;AACA,cAAAA,cAAA,CAAO,GAAA,CAAI,CAAA,SAAA,EAAO,CAAC,CAAA,CAAE,CAAA;AAAA,YACvB,CAAA,MAAA,IAAW,EAAE,QAAA,CAAS,SAAS,KAAK,CAAA,CAAE,QAAA,CAAS,SAAS,CAAA,EAAG;AACzD,cAAAA,cAAA,CAAO,GAAA,CAAI,CAAA,gBAAA,EAAS,CAAC,CAAA,CAAE,CAAA;AAAA,YACzB,CAAA,MAAO;AACL,cAAAA,cAAA,CAAO,GAAA,CAAI,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAE,CAAA;AAAA,YACxB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,MAAA,OAAA,CAAQ,SAAS,CAAC,CAAA;AAAA,IACpB,CAAC,CAAA;AAED,IAAA,IAAA,CAAK,EAAA,CAAG,SAAS,MAAM;AACrB,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AACH;;;ACvLA,WAAA,EAAA;AAYA,eAAsB,cAAc,QAAA,EAAwC;AAC1E,EAAAA,cAAA,CAAO,OAAO,sCAAiC,CAAA;AAC/C,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA;AAAA,IACNC,wBAAM,MAAA,CAAO,IAAA;AAAA,MACX;AAAA;AACF,GACF;AACA,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA;AAAA,IACN;AAAA,GACF;AACA,EAAA,OAAA,CAAQ,GAAA;AAAA,IACN;AAAA,GACF;AACA,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAAA,CAAM,IAAA,CAAK,wBAAwB,CAAC,CAAA;AAChD,EAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAAA,CAAM,IAAA,CAAK,oDAAoD,CAAC,CAAA;AAC5E,EAAA,OAAA,CAAQ,GAAA;AAAA,IACNA,uBAAAA,CAAM,KAAK,wDAAwD;AAAA,GACrE;AACA,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA;AAAA,IACN;AAAA,GACF;AACA,EAAA,OAAA,CAAQ,GAAA;AAAA,IACN;AAAA,GACF;AACA,EAAA,OAAA,CAAQ,IAAI,wDAAwD,CAAA;AACpE,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAChB;;;AC3DA,WAAA,EAAA;AAiCA,SAAS,eAAwB,GAAA,EAAa;AAC5C,EAAA,IAAI,OAAO,OAAO,GAAA,KAAQ,YAAY,YAAA,IAAgB,GAAA,IAAO,UAAU,GAAA,EAAK;AAC1E,IAAA,OAAO,GAAA,CAAI,IAAA;AAAA,EACb;AACA,EAAA,OAAO,GAAA;AACT;AAMA,eAAe,oBAAA,CACb,QACA,OAAA,EACiB;AACjB,EAAA,MAAM,MAAM,CAAA,EAAG,MAAM,CAAA,oBAAA,EAAuB,kBAAA,CAAmB,OAAO,CAAC,CAAA,SAAA,CAAA;AACvE,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI;AACF,IAAA,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK,EAAE,KAAA,EAAO,YAAY,CAAA;AAAA,EACnD,SAAS,GAAA,EAAK;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,4BAA4B,GAAG,CAAA,EAAA,EAAK,eAAe,KAAA,GAAQ,GAAA,CAAI,UAAU,SAAS,CAAA;AAAA,KACpF;AAAA,EACF;AACA,EAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,2BAAA,EAA8B,OAAO,CAAA,QAAA,EAAW,QAAA,CAAS,MAAM,CAAA,CAAA;AAAA,KACjE;AAAA,EACF;AACA,EAAA,MAAM,GAAA,GAAM,MAAM,QAAA,CAAS,IAAA,EAAK;AAChC,EAAA,MAAM,IAAA,GAAO,eAA4C,GAAG,CAAA;AAC5D,EAAA,MAAM,SAAS,IAAA,EAAM,cAAA;AACrB,EAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,CAAO,WAAW,CAAA,EAAG;AACrD,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,UAAU,OAAO,CAAA,+DAAA;AAAA,KACnB;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAKA,eAAe,iBAAA,CACb,MAAA,EACA,OAAA,EACA,OAAA,EACiB;AACjB,EAAA,MAAM,GAAA,GAAM,CAAA,EAAG,MAAM,CAAA,oBAAA,EAAuB,kBAAA,CAAmB,OAAO,CAAC,CAAA,CAAA,EAAI,kBAAA,CAAmB,OAAO,CAAC,CAAA,SAAA,CAAA;AACtG,EAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAG,CAAA;AAChC,EAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,+BAA+B,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,QAAA,EAAW,SAAS,MAAM,CAAA,CAAA;AAAA,KAC7E;AAAA,EACF;AAEA,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,IAAK,EAAA;AAE5D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,kBAAkB,CAAA,EAAG;AAC5C,IAAA,MAAM,GAAA,GAAM,MAAM,QAAA,CAAS,IAAA,EAAK;AAChC,IAAA,MAAM,QAAA,GACJ,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAA,IAAY,gBAAgB,GAAA,GAC9C,GAAA,GACA,EAAE,IAAA,EAAM,GAAA,EAAI;AAClB,IAAA,MAAM,OAAO,QAAA,CAAS,IAAA;AACtB,IAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,OAAO,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,QAAQ,CAAA;AAAA,EACnC;AAEA,EAAA,MAAM,WAAA,GAAc,MAAM,QAAA,CAAS,WAAA,EAAY;AAC/C,EAAA,OAAO,MAAA,CAAO,KAAK,WAAW,CAAA;AAChC;AAKA,eAAe,wBAAA,CACb,WACA,QAAA,EACe;AACf,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,MAAA,EAAQ,KAAA,IAAS,iBAAA;AAE5C,EAAA,IACE,SAAA,KAAc,iBAAA,IACd,SAAA,CAAU,UAAA,CAAW,eAAe,CAAA,EACpC;AACA,IAAA,MAAM,UAAA,GAAaG,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,SAAS,CAAA;AACjD,IAAA,MAAM,UAAA,GAAaA,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,iBAAiB,CAAA;AACzD,IAAA,IAAI,MAAME,mBAAAA,CAAG,UAAA,CAAW,UAAU,CAAA,EAAG;AACnC,MAAA,MAAMA,mBAAAA,CAAG,IAAA,CAAK,UAAA,EAAY,UAAU,CAAA;AACpC,MAAA,MAAM,UAAU,UAAA,GAAa,MAAA;AAC7B,MAAA,IAAI,MAAMA,mBAAAA,CAAG,UAAA,CAAW,OAAO,CAAA,EAAG;AAChC,QAAA,MAAMA,mBAAAA,CAAG,IAAA,CAAK,OAAA,EAAS,UAAA,GAAa,MAAM,CAAA;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,oBAAA,GAAuBF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,sBAAsB,CAAA;AACxE,EAAA,MAAM,OAAA,GAAU,CAAA;AAAA;AAAA;AAAA,CAAA;AAChB,EAAA,MAAME,mBAAAA,CAAG,SAAA,CAAU,oBAAA,EAAsB,OAAA,EAAS,OAAO,CAAA;AAEzD,EAAA,MAAM,WAAA,GAAcF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,cAAc,CAAA;AACvD,EAAA,MAAME,mBAAAA,CAAG,SAAA,CAAU,WAAA,EAAa,4BAAA,EAA8B,OAAO,CAAA;AACvE;AAKA,SAAS,uBAAA,CAAwB,SAAiB,MAAA,EAAsB;AACtE,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAAN,cAAA,CAAO,KAAA,CAAMC,uBAAAA,CAAM,GAAA,CAAI,IAAA,CAAK,uBAAuB,CAAC,CAAA;AACpD,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAAA,CAAM,MAAA,CAAO,mBAAmB,CAAC,CAAA;AAC7C,EAAA,OAAA,CAAQ,GAAA;AAAA,IACNA,uBAAAA,CAAM,KAAK,+DAA+D;AAAA,GAC5E;AACA,EAAA,OAAA,CAAQ,GAAA;AAAA,IACNA,uBAAAA,CAAM,IAAA;AAAA,MACJ;AAAA;AACF,GACF;AACA,EAAA,OAAA,CAAQ,GAAA;AAAA,IACNA,uBAAAA,CAAM,KAAK,8DAA8D;AAAA,GAC3E;AACA,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAAA,CAAM,IAAA,CAAK,IAAA,CAAK,cAAc,CAAC,CAAA;AAC3C,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAAA,CAAM,KAAA,CAAM,mCAAmC,CAAC,CAAA;AAC5D,EAAA,OAAA,CAAQ,GAAA;AAAA,IACNA,uBAAAA,CAAM,IAAA;AAAA,MACJ,CAAA,WAAA,EAAc,MAAM,CAAA,oBAAA,EAAuB,OAAO,CAAA,8BAAA;AAAA;AACpD,GACF;AACA,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAAA,CAAM,KAAA,CAAM,iCAAiC,CAAC,CAAA;AAC1D,EAAA,OAAA,CAAQ,IAAIA,uBAAAA,CAAM,IAAA,CAAK,CAAA,oBAAA,EAAuB,MAAM,EAAE,CAAC,CAAA;AACvD,EAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAAA,CAAM,IAAA,CAAK,oDAAoD,CAAC,CAAA;AAC5E,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAAA,CAAM,KAAA,CAAM,4CAA4C,CAAC,CAAA;AACrE,EAAA,OAAA,CAAQ,GAAA;AAAA,IACNA,uBAAAA,CAAM,IAAA,CAAK,CAAA,mDAAA,EAAsD,OAAO,CAAA,CAAE;AAAA,GAC5E;AACA,EAAA,OAAA,CAAQ,GAAA,EAAI;AACd;AAKA,eAAsB,gBAAgB,OAAA,EAAyC;AAC7E,EAAAD,cAAA,CAAO,OAAO,gBAAgB,CAAA;AAE9B,EAAA,MAAM,GAAA,GAAW,QAAQ,GAAA,IAAO,KAAA;AAChC,EAAA,MAAM,MAAA,GAAS,UAAU,GAAG,CAAA;AAE5B,EAAAA,cAAA,CAAO,IAAA,CAAK,CAAA,aAAA,EAAgB,GAAG,CAAA,GAAA,EAAM,MAAM,CAAA,CAAA,CAAG,CAAA;AAE9C,EAAA,MAAM,OAAA,GAAUE,oBAAAA,CAAI,0BAA0B,CAAA,CAAE,KAAA,EAAM;AAEtD,EAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,IAAA,OAAA,CAAQ,IAAA,EAAK;AACb,IAAAF,cAAA,CAAO,OAAA;AAAA,MACL;AAAA,KACF;AACA,IAAA,OAAA,CAAQ,KAAA,EAAM;AAAA,EAChB;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,UACJ,OAAA,CAAQ,OAAA,IACR,QAAQ,GAAA,CAAI,oBAAA,IACZ,QAAQ,GAAA,CAAI,QAAA;AACd,IAAA,MAAM,gBAAA,GACJ,OAAA,CAAQ,OAAA,IAAW,OAAA,CAAQ,IAAI,aAAA,IAAiB,QAAA;AAClD,IAAA,MAAM,SAAA,GAAY,QAAQ,MAAA,IAAU,gBAAA;AAEpC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAA,CAAQ,IAAA;AAAA,QACNC,uBAAAA,CAAM,GAAA;AAAA,UACJ;AAAA;AACF,OACF;AACA,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAEA,IAAA,OAAA,CAAQ,IAAA,GAAO,CAAA,UAAA,EAAa,OAAO,CAAA,CAAA,EAAI,gBAAgB,CAAA,GAAA,CAAA;AAEvD,IAAA,IAAI,eAAA,GAAkB,gBAAA;AACtB,IAAA,IAAI,qBAAqB,QAAA,EAAU;AACjC,MAAA,eAAA,GAAkB,MAAM,oBAAA,CAAqB,MAAA,EAAQ,OAAO,CAAA;AAC5D,MAAA,OAAA,CAAQ,OAAA;AAAA,QACN,CAAA,yBAAA,EAA4BA,uBAAAA,CAAM,IAAA,CAAK,eAAe,CAAC,CAAA;AAAA,OACzD;AAEA,MAAA,MAAM,IAAA,GAAO,CAAC,EACZ,OAAA,CAAQ,GAAA,CAAI,MACZ,OAAA,CAAQ,GAAA,CAAI,cAAA,IACZ,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAA;AAEd,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,OAAA,CAAQ,GAAA;AAAA,UACNA,uBAAAA,CAAM,MAAA;AAAA,YACJ;AAAA,gCAAA,EAAqC,eAAe,CAAA;AAAA;AAAA,kBAAA,EAE7B,eAAe;AAAA;AAAA;AACxC,SACF;AAAA,MACF;AAAA,IACF,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,QAAQ,CAAA,eAAA,EAAkBA,uBAAAA,CAAM,IAAA,CAAK,eAAe,CAAC,CAAA,CAAE,CAAA;AAAA,IACjE;AAEA,IAAA,OAAA,CAAQ,KAAA;AAAA,MACN,CAAA,2BAAA,EAA8B,OAAO,CAAA,CAAA,EAAI,eAAe,CAAA,GAAA;AAAA,KAC1D;AACA,IAAA,MAAM,SAAA,GAAY,MAAM,iBAAA,CAAkB,MAAA,EAAQ,SAAS,eAAe,CAAA;AAC1E,IAAA,MAAM,UAAU,SAAA,CAAU,MAAA,GAAS,IAAA,GAAO,IAAA,EAAM,QAAQ,CAAC,CAAA;AACzD,IAAA,OAAA,CAAQ,OAAA,CAAQ,CAAA,uBAAA,EAA0B,MAAM,CAAA,IAAA,CAAM,CAAA;AAEtD,IAAA,OAAA,CAAQ,MAAM,sBAAsB,CAAA;AACpC,IAAA,MAAMK,mBAAAA,CAAG,OAAO,SAAS,CAAA;AACzB,IAAA,MAAMA,mBAAAA,CAAG,UAAU,SAAS,CAAA;AAE5B,IAAA,MAAM,GAAA,GAAM,IAAIoB,uBAAA,CAAO,SAAS,CAAA;AAChC,IAAA,GAAA,CAAI,YAAA,CAAa,WAAW,IAAI,CAAA;AAEhC,IAAA,MAAM,OAAA,GAAU,IAAI,UAAA,EAAW,CAAE,OAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,WAAW,CAAA;AAC7D,IAAA,OAAA,CAAQ,QAAQ,CAAA,UAAA,EAAa,OAAA,CAAQ,MAAM,CAAA,UAAA,EAAa,SAAS,CAAA,CAAE,CAAA;AAEnE,IAAA,MAAM,YAAA,GAAetB,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,eAAe,CAAA;AACzD,IAAA,MAAM,QAAA,GAA0B,MAAME,mBAAAA,CAAG,QAAA,CAAS,YAAY,CAAA;AAC9D,IAAA,MAAM,wBAAA,CAAyB,WAAW,QAAQ,CAAA;AAElD,IAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,IAAAN,cAAA,CAAO,OAAA,CAAQC,uBAAAA,CAAM,KAAA,CAAM,IAAA,CAAK,gCAAgC,CAAC,CAAA;AACjE,IAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,IAAA,OAAA,CAAQ,GAAA;AAAA,MACNA,uBAAAA,CAAM,IAAA,CAAK,cAAc,CAAA,GAAIA,uBAAAA,CAAM,MAAM,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,eAAe,CAAA,CAAE;AAAA,KAC1E;AACA,IAAA,OAAA,CAAQ,GAAA,CAAIA,wBAAM,IAAA,CAAK,cAAc,IAAIA,uBAAAA,CAAM,KAAA,CAAM,GAAG,CAAC,CAAA;AACzD,IAAA,OAAA,CAAQ,GAAA,CAAIA,wBAAM,IAAA,CAAK,cAAc,IAAIA,uBAAAA,CAAM,KAAA,CAAM,MAAM,CAAC,CAAA;AAC5D,IAAA,OAAA,CAAQ,GAAA,CAAIA,wBAAM,IAAA,CAAK,cAAc,IAAIA,uBAAAA,CAAM,KAAA,CAAM,SAAS,CAAC,CAAA;AAC/D,IAAA,OAAA,CAAQ,GAAA,CAAIA,wBAAM,IAAA,CAAK,cAAc,IAAIA,uBAAAA,CAAM,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAC,CAAA;AACpE,IAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,MAAA,OAAA,CAAQ,GAAA;AAAA,QACNA,uBAAAA,CAAM,IAAA,CAAK,cAAc,CAAA,GAAIA,uBAAAA,CAAM,MAAM,CAAA,CAAA,EAAI,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAA,CAAE;AAAA,OACzE;AAAA,IACF;AACA,IAAA,OAAA,CAAQ,GAAA,EAAI;AAAA,EACd,SAAS,KAAA,EAAY;AACnB,IAAA,OAAA,CAAQ,IAAA,CAAKA,uBAAAA,CAAM,GAAA,CAAI,iBAAiB,CAAC,CAAA;AACzC,IAAAD,cAAA,CAAO,KAAA,CAAM,MAAM,OAAO,CAAA;AAE1B,IAAA,MAAM,OAAA,GACJ,QAAQ,OAAA,IACR,OAAA,CAAQ,IAAI,oBAAA,IACZ,OAAA,CAAQ,IAAI,QAAA,IACZ,SAAA;AAEF,IAAA,uBAAA,CAAwB,SAAS,MAAM,CAAA;AACvC,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACF;;;ACzSA,WAAA,EAAA;AAsBA,SAAS2B,gBAAwB,GAAA,EAAa;AAC5C,EAAA,IAAI,OAAO,OAAO,GAAA,KAAQ,YAAY,YAAA,IAAgB,GAAA,IAAO,UAAU,GAAA,EAAK;AAC1E,IAAA,OAAO,GAAA,CAAI,IAAA;AAAA,EACb;AACA,EAAA,OAAO,GAAA;AACT;AAKA,eAAeC,qBAAAA,CACb,QACA,OAAA,EACiB;AACjB,EAAA,MAAM,MAAM,CAAA,EAAG,MAAM,CAAA,oBAAA,EAAuB,kBAAA,CAAmB,OAAO,CAAC,CAAA,SAAA,CAAA;AACvE,EAAA,MAAM,WAAW,MAAM,KAAA,CAAM,KAAK,EAAE,KAAA,EAAO,YAAY,CAAA;AACvD,EAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,2BAAA,EAA8B,OAAO,CAAA,QAAA,EAAW,QAAA,CAAS,MAAM,CAAA,CAAA;AAAA,KACjE;AAAA,EACF;AACA,EAAA,MAAM,GAAA,GAAM,MAAM,QAAA,CAAS,IAAA,EAAK;AAChC,EAAA,MAAM,IAAA,GAAOD,gBAA4C,GAAG,CAAA;AAC5D,EAAA,MAAM,SAAS,IAAA,EAAM,cAAA;AACrB,EAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,CAAO,WAAW,CAAA,EAAG;AACrD,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,OAAA,EAAU,OAAO,CAAA,+BAAA,CAAiC,CAAA;AAAA,EACpE;AACA,EAAA,OAAO,MAAA;AACT;AAKA,eAAe,cAAA,CACb,MAAA,EACA,OAAA,EACA,OAAA,EACA,GAAA,EACiB;AACjB,EAAA,MAAM,GAAA,GAAM,CAAA,EAAG,MAAM,CAAA,oBAAA,EAAuB,kBAAA,CAAmB,OAAO,CAAC,CAAA,gBAAA,EAAmB,kBAAA,CAAmB,OAAO,CAAC,CAAA,CAAA;AACrH,EAAA,MAAM,QAAA,GAAW,MAAM,kBAAA,CAAmB,GAAA,EAAK,EAAE,MAAA,EAAQ,KAAA,IAAS,GAAG,CAAA;AACrE,EAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,IAAA,IAAI,QAAA,CAAS,WAAW,GAAA,EAAK;AAC3B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,qBAAA,EAAwB,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,mEAAA;AAAA,OAC5C;AAAA,IACF;AACA,IAAA,IAAI,QAAA,CAAS,MAAA,KAAW,GAAA,IAAO,QAAA,CAAS,WAAW,GAAA,EAAK;AACtD,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,uCAAA,EAA0C,OAAO,CAAA,6BAAA,EAAgC,GAAG,CAAA,SAAA;AAAA,OACtF;AAAA,IACF;AACA,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,kCAAkC,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,QAAA,EAAW,SAAS,MAAM,CAAA,CAAA;AAAA,KAChF;AAAA,EACF;AACA,EAAA,MAAM,GAAA,GAAM,MAAM,QAAA,CAAS,IAAA,EAAK;AAChC,EAAA,MAAM,IAAA,GAAOA,gBAA0C,GAAG,CAAA;AAC1D,EAAA,MAAM,eAAe,IAAA,EAAM,YAAA;AAC3B,EAAA,IAAI,OAAO,YAAA,KAAiB,QAAA,IAAY,YAAA,CAAa,WAAW,CAAA,EAAG;AACjE,IAAA,MAAM,IAAI,MAAM,yDAAyD,CAAA;AAAA,EAC3E;AAEA,EAAA,MAAM,WAAA,GAAc,MAAM,KAAA,CAAM,YAAY,CAAA;AAC5C,EAAA,IAAI,CAAC,YAAY,EAAA,EAAI;AACnB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,uCAAA,EAA0C,YAAY,MAAM,CAAA,CAAA;AAAA,KAC9D;AAAA,EACF;AACA,EAAA,MAAM,WAAA,GAAc,MAAM,WAAA,CAAY,WAAA,EAAY;AAClD,EAAA,OAAO,MAAA,CAAO,KAAK,WAAW,CAAA;AAChC;AAKA,SAAS,WAAW,GAAA,EAA+B;AACjD,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC9B,IAAA,MAAM,IAAA,GAAOF,mBAAAA,CAAM,MAAA,EAAQ,CAAC,SAAS,CAAA,EAAG;AAAA,MACtC,GAAA;AAAA,MACA,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO;AAAA,KACR,CAAA;AACD,IAAA,IAAA,CAAK,GAAG,OAAA,EAAS,CAAC,SAAS,OAAA,CAAQ,IAAA,KAAS,CAAC,CAAC,CAAA;AAC9C,IAAA,IAAA,CAAK,EAAA,CAAG,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EACvC,CAAC,CAAA;AACH;AAKA,eAAe,gBAAgB,YAAA,EAAuC;AACpE,EAAA,MAAM,EAAE,OAAA,EAASJ,SAAAA,EAAS,GAAI,MAAM,OAAO,UAAU,CAAA;AACrD,EAAA,MAAM,EAAE,SAAA,EAAU,GAAI,MAAMA,UAAS,MAAA,CAAO;AAAA,IAC1C;AAAA,MACE,IAAA,EAAM,OAAA;AAAA,MACN,IAAA,EAAM,WAAA;AAAA,MACN,OAAA,EAAS,8BAAA;AAAA,MACT,OAAA,EAAS,MAAM,YAAY,CAAA,CAAA;AAAA,MAC3B,QAAA,EAAU,CAAC,KAAA,KAAkB;AAC3B,QAAA,IAAI,CAAC,mBAAA,CAAoB,IAAA,CAAK,KAAK,CAAA,EAAG;AACpC,UAAA,OAAO,qEAAA;AAAA,QACT;AACA,QAAA,IAAI,UAAU,YAAA,EAAc;AAC1B,UAAA,OAAO,6CAA6C,YAAY,CAAA,CAAA,CAAA;AAAA,QAClE;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA;AACF,GACD,CAAA;AACD,EAAA,OAAO,SAAA;AACT;AAKA,eAAe,WAAA,CACb,QAAA,EACA,OAAA,EACA,OAAA,EACe;AACf,EAAA,MAAM,SAAA,GAAY,GAAG,OAAO,CAAA,CAAA,CAAA;AAC5B,EAAA,MAAM,SAAA,GAAY,GAAG,OAAO,CAAA,CAAA,CAAA;AAC5B,EAAA,MAAM,cAAA,GAAiB,QACpB,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,MAAM,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,KAAgB,CAAA,CAAE,KAAA,CAAM,CAAC,CAAC,CAAA,CACjD,KAAK,GAAG,CAAA;AAEX,EAAA,MAAM,OAAA,GAAUjB,uBAAAA,CAAK,IAAA,CAAK,QAAA,EAAU,cAAc,CAAA;AAClD,EAAA,IAAI,MAAME,mBAAAA,CAAG,UAAA,CAAW,OAAO,CAAA,EAAG;AAChC,IAAA,MAAM,GAAA,GAAM,MAAMA,mBAAAA,CAAG,QAAA,CAAS,OAAO,CAAA;AACrC,IAAA,GAAA,CAAI,IAAA,GAAO,gBAAgB,OAAO,CAAA,CAAA;AAClC,IAAA,IAAI,IAAI,WAAA,EAAa;AACnB,MAAA,GAAA,CAAI,WAAA,GAAc,IAAI,WAAA,CAAY,OAAA;AAAA,QAChC,IAAI,MAAA,CAAO,OAAA,EAAS,IAAI,CAAA;AAAA,QACxB;AAAA,OACF;AAAA,IACF;AACA,IAAA,GAAA,CAAI,OAAA,GAAU,OAAA;AAEd,IAAA,IAAI,GAAA,CAAI,eAAA,GAAkB,eAAe,CAAA,EAAG;AAC1C,MAAA,OAAO,GAAA,CAAI,gBAAgB,eAAe,CAAA;AAAA,IAC5C;AAEA,IAAA,MAAMA,oBAAG,SAAA,CAAU,OAAA,EAAS,KAAK,EAAE,MAAA,EAAQ,GAAG,CAAA;AAAA,EAChD;AAEA,EAAA,MAAM,UAAA,GAAaF,uBAAAA,CAAK,IAAA,CAAK,QAAA,EAAU,iBAAiB,CAAA;AACxD,EAAA,IAAI,MAAME,mBAAAA,CAAG,UAAA,CAAW,UAAU,CAAA,EAAG;AACnC,IAAA,IAAI,OAAA,GAAU,MAAMA,mBAAAA,CAAG,QAAA,CAAS,YAAY,OAAO,CAAA;AACnD,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA,CAAQ,eAAA,EAAiB,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAA,CAAG,CAAA;AAC7D,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA;AAAA,MAChB,sBAAA;AAAA,MACA,UAAU,cAAc,CAAA,OAAA;AAAA,KAC1B;AACA,IAAA,MAAMA,mBAAAA,CAAG,SAAA,CAAU,UAAA,EAAY,OAAO,CAAA;AAAA,EACxC;AAEA,EAAA,MAAM,UAAA,GAAaF,uBAAAA,CAAK,IAAA,CAAK,QAAA,EAAU,iBAAiB,CAAA;AACxD,EAAA,IAAI,MAAME,mBAAAA,CAAG,UAAA,CAAW,UAAU,CAAA,EAAG;AACnC,IAAA,IAAI,OAAA,GAAU,MAAMA,mBAAAA,CAAG,QAAA,CAAS,YAAY,OAAO,CAAA;AACnD,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA,CAAQ,eAAA,EAAiB,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAA,CAAG,CAAA;AAC7D,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA;AAAA,MAChB,sBAAA;AAAA,MACA,UAAU,cAAc,CAAA,OAAA;AAAA,KAC1B;AACA,IAAA,MAAMA,mBAAAA,CAAG,SAAA,CAAU,UAAA,EAAY,OAAO,CAAA;AAAA,EACxC;AAEA,EAAA,MAAM,cAAA,GAAiB,QACpB,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,MAAM,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,KAAgB,CAAA,CAAE,KAAA,CAAM,CAAC,CAAC,CAAA,CACjD,KAAK,GAAG,CAAA;AAEX,EAAA,MAAM,OAAA,GAAU,MAAMH,SAAAA,CAAK,SAAA,EAAW,EAAE,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,IAAA,EAAM,CAAA;AACpE,EAAA,KAAA,MAAW,QAAQ,OAAA,EAAS;AAC1B,IAAA,MAAM,QAAA,GAAWC,uBAAAA,CAAK,IAAA,CAAK,QAAA,EAAU,IAAI,CAAA;AACzC,IAAA,IAAI,OAAA,GAAU,MAAME,mBAAAA,CAAG,QAAA,CAAS,UAAU,OAAO,CAAA;AACjD,IAAA,MAAM,QAAA,GAAW,OAAA;AAEjB,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA;AAAA,MAChB,IAAI,MAAA,CAAO,CAAA,CAAA,EAAI,SAAS,IAAI,GAAG,CAAA;AAAA,MAC/B,IAAI,SAAS,CAAA;AAAA,KACf;AACA,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA;AAAA,MAChB,IAAI,MAAA,CAAO,CAAA,aAAA,EAAgB,OAAO,KAAK,GAAG,CAAA;AAAA,MAC1C,aAAa,OAAO,CAAA,CAAA;AAAA,KACtB;AACA,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA;AAAA,MAChB,IAAI,MAAA,CAAO,CAAA,EAAG,cAAc,UAAU,GAAG,CAAA;AAAA,MACzC,GAAG,cAAc,CAAA,MAAA;AAAA,KACnB;AAEA,IAAA,IAAI,YAAY,QAAA,EAAU;AACxB,MAAA,MAAMA,mBAAAA,CAAG,SAAA,CAAU,QAAA,EAAU,OAAO,CAAA;AAAA,IACtC;AAAA,EACF;AACF;AAKA,eAAsB,YAAA,CACpB,WACA,OAAA,EACe;AACf,EAAAN,cAAA,CAAO,OAAO,oBAAoB,CAAA;AAElC,EAAA,MAAM,GAAA,GAAW,QAAQ,GAAA,IAAO,KAAA;AAChC,EAAA,MAAM,MAAA,GAAS,UAAU,GAAG,CAAA;AAE5B,EAAAA,cAAA,CAAO,IAAA,CAAK,CAAA,aAAA,EAAgB,GAAG,CAAA,GAAA,EAAM,MAAM,CAAA,CAAA,CAAG,CAAA;AAE9C,EAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,IAAAA,cAAA,CAAO,OAAA;AAAA,MACL;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe,GAAG,CAAA;AACvC,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAAA,cAAA,CAAO,KAAA;AAAA,MACL,CAAA,iBAAA,EAAoB,GAAG,CAAA,uCAAA,EAA0C,GAAG,CAAA;AAAA,KACtE;AACA,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAEA,EAAA,IAAI,UAAU,OAAA,CAAQ,IAAA;AACtB,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAA,GAAU,MAAM,gBAAgB,SAAS,CAAA;AAAA,EAC3C;AAEA,EAAA,MAAM,OAAA,GAAUE,oBAAAA,CAAI,uBAAuB,CAAA,CAAE,KAAA,EAAM;AAEnD,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,QAAQ,MAAA,IAAUE,uBAAAA,CAAK,QAAQ,OAAA,CAAQ,GAAA,IAAO,OAAO,CAAA;AAEvE,IAAA,IAAI,MAAME,mBAAAA,CAAG,UAAA,CAAW,SAAS,CAAA,EAAG;AAClC,MAAA,OAAA,CAAQ,KAAKL,uBAAAA,CAAM,GAAA,CAAI,CAAA,0BAAA,EAA6B,SAAS,EAAE,CAAC,CAAA;AAChE,MAAAD,cAAA,CAAO,IAAA;AAAA,QACLC,uBAAAA,CAAM,IAAA;AAAA,UACJ;AAAA;AACF,OACF;AACA,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAEA,IAAA,IAAI,OAAA,GAAU,QAAQ,OAAA,IAAW,QAAA;AACjC,IAAA,IAAI,YAAY,QAAA,EAAU;AACxB,MAAA,OAAA,CAAQ,IAAA,GAAO,6BAAA;AACf,MAAA,OAAA,GAAU,MAAM2B,qBAAAA,CAAqB,MAAA,EAAQ,SAAS,CAAA;AACtD,MAAA,OAAA,CAAQ,QAAQ,CAAA,yBAAA,EAA4B3B,uBAAAA,CAAM,IAAA,CAAK,OAAO,CAAC,CAAA,CAAE,CAAA;AAAA,IACnE;AAEA,IAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,2BAAA,EAA8B,SAAS,CAAA,CAAA,EAAI,OAAO,CAAA,GAAA,CAAK,CAAA;AACrE,IAAA,IAAI,SAAA;AACJ,IAAA,IAAI;AACF,MAAA,SAAA,GAAY,MAAM,cAAA,CAAe,MAAA,EAAQ,SAAA,EAAW,SAAS,GAAG,CAAA;AAAA,IAClE,SAAS,KAAA,EAAY;AACnB,MAAA,OAAA,CAAQ,IAAA,CAAKA,uBAAAA,CAAM,GAAA,CAAI,KAAA,CAAM,OAAO,CAAC,CAAA;AACrC,MAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,MAAA,OAAA,CAAQ,GAAA;AAAA,QACNA,uBAAAA,CAAM,IAAA;AAAA,UACJ,CAAA,uCAAA,EAA0C,MAAM,CAAA,oBAAA,EAAuB,SAAS,CAAA,SAAA;AAAA;AAClF,OACF;AACA,MAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAEA,IAAA,MAAM,UAAU,SAAA,CAAU,MAAA,GAAS,IAAA,GAAO,IAAA,EAAM,QAAQ,CAAC,CAAA;AACzD,IAAA,OAAA,CAAQ,OAAA,CAAQ,CAAA,uBAAA,EAA0B,MAAM,CAAA,IAAA,CAAM,CAAA;AAEtD,IAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,cAAA,EAAiB,SAAS,CAAA,GAAA,CAAK,CAAA;AAC7C,IAAA,MAAMK,mBAAAA,CAAG,UAAU,SAAS,CAAA;AAE5B,IAAA,MAAM,GAAA,GAAM,IAAIoB,uBAAAA,CAAO,SAAS,CAAA;AAChC,IAAA,GAAA,CAAI,YAAA,CAAa,WAAW,IAAI,CAAA;AAEhC,IAAA,MAAM,OAAA,GAAU,IAAI,UAAA,EAAW,CAAE,OAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,WAAW,CAAA;AAC7D,IAAA,OAAA,CAAQ,OAAA,CAAQ,CAAA,UAAA,EAAa,OAAA,CAAQ,MAAM,CAAA,MAAA,CAAQ,CAAA;AAEnD,IAAA,OAAA,CAAQ,KAAA;AAAA,MACN,CAAA,gBAAA,EAAmBzB,wBAAM,IAAA,CAAK,SAAS,CAAC,CAAA,QAAA,EAAMA,uBAAAA,CAAM,IAAA,CAAK,OAAO,CAAC,CAAA,GAAA;AAAA,KACnE;AACA,IAAA,MAAM,WAAA,CAAY,SAAA,EAAW,SAAA,EAAW,OAAO,CAAA;AAC/C,IAAA,OAAA,CAAQ,OAAA;AAAA,MACN,CAAA,eAAA,EAAkBA,wBAAM,IAAA,CAAK,SAAS,CAAC,CAAA,QAAA,EAAMA,uBAAAA,CAAM,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,KAClE;AAEA,IAAA,MAAM,cAAA,GAAiBG,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,cAAc,CAAA;AAC1D,IAAA,IAAI,CAAE,MAAME,mBAAAA,CAAG,UAAA,CAAW,cAAc,CAAA,EAAI;AAC1C,MAAA,MAAMA,mBAAAA,CAAG,SAAA;AAAA,QACP,cAAA;AAAA,QACA;AAAA,UACE,oDAAA;AAAA,UACA,+CAAA;AAAA,UACA,uBAAuB,MAAM,CAAA,CAAA;AAAA,UAC7B,yBAAA;AAAA,UACA;AAAA,SACF,CAAE,KAAK,IAAI;AAAA,OACb;AAAA,IACF;AAEA,IAAA,MAAM,WAAA,GAAcF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,WAAW,CAAA;AACpD,IAAA,IAAI,MAAME,mBAAAA,CAAG,UAAA,CAAW,WAAW,CAAA,EAAG;AACpC,MAAA,MAAM,EAAE,OAAA,EAAS,WAAA,EAAY,GAAI,MAAM,OAAO,UAAU,CAAA;AACxD,MAAA,MAAM,EAAE,WAAA,EAAY,GAAI,MAAM,YAAY,MAAA,CAAO;AAAA,QAC/C;AAAA,UACE,IAAA,EAAM,UAAA;AAAA,UACN,IAAA,EAAM,aAAA;AAAA,UACN,OAAA,EACE;AAAA;AACJ,OACD,CAAA;AACD,MAAA,IAAI,UAAA,GAAa,MAAMA,mBAAAA,CAAG,QAAA,CAAS,aAAa,OAAO,CAAA;AACvD,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,UAAA,GAAa,UAAA,CAAW,OAAA,CAAQ,mBAAA,EAAqB,WAAW,CAAA;AAAA,MAClE,CAAA,MAAO;AACL,QAAA,IAAI;AACF,UAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,UAAU,CAAA;AACrC,UAAA,OAAO,QAAQ,UAAA,EAAY,KAAA;AAC3B,UAAA,UAAA,GAAa,IAAA,CAAK,SAAA,CAAU,OAAA,EAAS,IAAA,EAAM,CAAC,CAAA,GAAI,IAAA;AAAA,QAClD,CAAA,CAAA,MAAQ;AAAA,QAAC;AAAA,MACX;AACA,MAAA,MAAMA,mBAAAA,CAAG,SAAA,CAAU,WAAA,EAAa,UAAA,EAAY,OAAO,CAAA;AAAA,IACrD;AAEA,IAAA,IAAI,OAAA,CAAQ,YAAY,KAAA,EAAO;AAC7B,MAAA,MAAM,UAAA,GAAa,MAAMA,mBAAAA,CAAG,UAAA;AAAA,QAC1BF,uBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,cAAc;AAAA,OACrC;AACA,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,OAAA,CAAQ,MAAM,4BAA4B,CAAA;AAC1C,QAAA,MAAM,OAAA,GAAU,MAAM,UAAA,CAAW,SAAS,CAAA;AAC1C,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,OAAA,CAAQ,QAAQ,wBAAwB,CAAA;AAAA,QAC1C,CAAA,MAAO;AACL,UAAA,OAAA,CAAQ,IAAA;AAAA,YACNH,uBAAAA,CAAM,MAAA;AAAA,cACJ;AAAA;AACF,WACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,IAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,IAAAD,cAAA,CAAO,OAAA,CAAQC,uBAAAA,CAAM,KAAA,CAAM,IAAA,CAAK,4BAA4B,CAAC,CAAA;AAC7D,IAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,IAAA,OAAA,CAAQ,GAAA;AAAA,MACNA,uBAAAA,CAAM,IAAA,CAAK,eAAe,CAAA,GAAIA,uBAAAA,CAAM,KAAK,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE;AAAA,KACpE;AACA,IAAA,OAAA,CAAQ,GAAA,CAAIA,wBAAM,IAAA,CAAK,eAAe,IAAIA,uBAAAA,CAAM,KAAA,CAAM,GAAG,CAAC,CAAA;AAC1D,IAAA,OAAA,CAAQ,GAAA,CAAIA,wBAAM,IAAA,CAAK,eAAe,IAAIA,uBAAAA,CAAM,KAAA,CAAM,OAAO,CAAC,CAAA;AAC9D,IAAA,OAAA,CAAQ,GAAA,CAAIA,wBAAM,IAAA,CAAK,eAAe,IAAIA,uBAAAA,CAAM,KAAA,CAAM,SAAS,CAAC,CAAA;AAChE,IAAA,OAAA,CAAQ,GAAA,CAAIA,wBAAM,IAAA,CAAK,eAAe,IAAIA,uBAAAA,CAAM,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAC,CAAA;AACrE,IAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,IAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAAA,CAAM,IAAA,CAAK,aAAa,CAAC,CAAA;AACrC,IAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAAA,CAAM,IAAA,CAAK,CAAA,MAAA,EAASG,uBAAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,EAAI,EAAG,SAAS,CAAC,CAAA,CAAE,CAAC,CAAA;AAC1E,IAAA,OAAA,CAAQ,GAAA;AAAA,MACNH,uBAAAA,CAAM,KAAK,qDAAqD;AAAA,KAClE;AACA,IAAA,IAAI,OAAA,CAAQ,YAAY,KAAA,EAAO;AAC7B,MAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAAA,CAAM,IAAA,CAAK,iBAAiB,CAAC,CAAA;AAAA,IAC3C;AACA,IAAA,OAAA,CAAQ,GAAA,CAAIA,uBAAAA,CAAM,IAAA,CAAK,kBAAkB,CAAC,CAAA;AAC1C,IAAA,OAAA,CAAQ,GAAA,EAAI;AAAA,EACd,SAAS,KAAA,EAAY;AACnB,IAAA,OAAA,CAAQ,KAAKA,uBAAAA,CAAM,GAAA,CAAI,iBAAiB,KAAA,CAAM,OAAO,EAAE,CAAC,CAAA;AACxD,IAAAD,cAAA,CAAO,KAAA,CAAM,KAAA,CAAM,KAAA,IAAS,KAAA,CAAM,OAAO,CAAA;AACzC,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACF;;;AClYA,WAAA,EAAA","file":"index.js","sourcesContent":["import chalk from \"chalk\";\nimport ora, { Ora } from \"ora\";\n\nexport class Logger {\n private spinner: Ora | null = null;\n\n success(message: string): void {\n console.log(chalk.green(\"✓\"), message);\n }\n\n error(message: string): void {\n console.log(chalk.red(\"✗\"), message);\n }\n\n warning(message: string): void {\n console.log(chalk.yellow(\"⚠\"), message);\n }\n\n info(message: string): void {\n console.log(chalk.blue(\"ℹ\"), message);\n }\n\n log(message: string): void {\n console.log(message);\n }\n\n startSpinner(message: string): void {\n this.spinner = ora(message).start();\n }\n\n stopSpinner(success: boolean = true, message?: string): void {\n if (!this.spinner) return;\n\n if (success) {\n this.spinner.succeed(message);\n } else {\n this.spinner.fail(message);\n }\n this.spinner = null;\n }\n\n updateSpinner(message: string): void {\n if (this.spinner) {\n this.spinner.text = message;\n }\n }\n\n newLine(): void {\n console.log();\n }\n\n header(message: string): void {\n console.log();\n console.log(chalk.bold.cyan(message));\n console.log(chalk.cyan(\"=\".repeat(message.length)));\n console.log();\n }\n\n section(message: string): void {\n console.log();\n console.log(chalk.bold(message));\n }\n}\n\nexport const logger = new Logger();\n","/**\n * Schema extractor for the publish-time diff gate.\n *\n * Walks sections/ *.schema.ts via jiti (same pattern as compile-theme.ts) and\n * emits a canonical, deterministic JSON shape that can be diffed against a\n * prior published version's schemas.json to detect breaking changes, renames\n * (via aliases), and defaults-only drift.\n *\n * Only fields that affect saved-data compatibility or rendered output are\n * captured. Display-only fields (label, info, placeholder, description, icon)\n * are stripped so cosmetic label edits don't show up as diffs.\n */\n\nimport path from \"path\";\nimport { glob } from \"glob\";\n\nexport interface ExtractedField {\n id: string;\n type: string;\n required?: boolean;\n default?: unknown;\n aliases?: string[];\n // Constraints that, if tightened, invalidate existing saved data\n maxLength?: number;\n min?: number;\n max?: number;\n step?: number;\n accept?: string[];\n // select/radio option values (labels stripped)\n options?: string[];\n}\n\nexport interface ExtractedBlock {\n type: string;\n settings: ExtractedField[];\n defaults: Record<string, unknown>;\n limit?: number;\n min?: number;\n sortable?: boolean;\n baseType?: string;\n}\n\nexport interface ExtractedTemplate {\n id: string;\n isDefault?: boolean;\n settings?: ExtractedField[];\n defaults?: Record<string, unknown>;\n}\n\nexport interface ExtractedSection {\n type: string;\n settings: ExtractedField[];\n defaults: Record<string, unknown>;\n blocks: ExtractedBlock[];\n templates: ExtractedTemplate[];\n dataRequirements: Record<string, boolean> | null;\n global?: boolean;\n maxBlocks?: number;\n}\n\nexport interface SchemaManifest {\n /** Schema version of this manifest format itself — bump if we change shape */\n manifestVersion: 1;\n sections: Record<string, ExtractedSection>;\n}\n\n/**\n * Deterministic object sort: returns a new object with keys in sorted order,\n * recursively. Ensures JSON.stringify produces byte-identical output across\n * runs and machines.\n */\nfunction sortedCopy<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map((v) => sortedCopy(v)) as unknown as T;\n }\n if (value && typeof value === \"object\") {\n const sorted: Record<string, unknown> = {};\n for (const key of Object.keys(value as Record<string, unknown>).sort()) {\n sorted[key] = sortedCopy((value as Record<string, unknown>)[key]);\n }\n return sorted as unknown as T;\n }\n return value;\n}\n\n/** Strip display-only properties and coerce into ExtractedField. */\nfunction normalizeField(raw: any): ExtractedField {\n const out: ExtractedField = {\n id: String(raw.id),\n type: String(raw.type),\n };\n if (raw.required === true) out.required = true;\n if (raw.default !== undefined) out.default = raw.default;\n if (Array.isArray(raw.aliases) && raw.aliases.length > 0) {\n out.aliases = [...raw.aliases].map(String).sort();\n }\n if (typeof raw.maxLength === \"number\") out.maxLength = raw.maxLength;\n if (typeof raw.min === \"number\") out.min = raw.min;\n if (typeof raw.max === \"number\") out.max = raw.max;\n if (typeof raw.step === \"number\") out.step = raw.step;\n if (Array.isArray(raw.accept)) {\n out.accept = [...raw.accept].map(String).sort();\n }\n if (Array.isArray(raw.options)) {\n out.options = raw.options.map((o: any) => String(o?.value ?? o)).sort();\n }\n return out;\n}\n\nfunction normalizeBlock(raw: any): ExtractedBlock {\n return {\n type: String(raw.type),\n settings: Array.isArray(raw.settings)\n ? raw.settings.map(normalizeField).sort(sortFieldsById)\n : [],\n defaults:\n raw.defaults && typeof raw.defaults === \"object\"\n ? sortedCopy(raw.defaults)\n : {},\n ...(typeof raw.limit === \"number\" ? { limit: raw.limit } : {}),\n ...(typeof raw.min === \"number\" ? { min: raw.min } : {}),\n ...(raw.sortable === true ? { sortable: true } : {}),\n ...(raw.baseType ? { baseType: String(raw.baseType) } : {}),\n };\n}\n\nfunction normalizeTemplate(raw: any): ExtractedTemplate {\n const out: ExtractedTemplate = { id: String(raw.id) };\n if (raw.isDefault === true) out.isDefault = true;\n if (Array.isArray(raw.settings)) {\n out.settings = raw.settings.map(normalizeField).sort(sortFieldsById);\n }\n if (raw.defaults && typeof raw.defaults === \"object\") {\n out.defaults = sortedCopy(raw.defaults);\n }\n return out;\n}\n\nfunction sortFieldsById(a: { id: string }, b: { id: string }): number {\n return a.id.localeCompare(b.id);\n}\n\nfunction sortByType(a: { type: string }, b: { type: string }): number {\n return a.type.localeCompare(b.type);\n}\n\nfunction normalizeSection(raw: any): ExtractedSection {\n return {\n type: String(raw.type),\n settings: Array.isArray(raw.settings)\n ? raw.settings.map(normalizeField).sort(sortFieldsById)\n : [],\n defaults:\n raw.defaults && typeof raw.defaults === \"object\"\n ? sortedCopy(raw.defaults)\n : {},\n blocks: Array.isArray(raw.blocks)\n ? raw.blocks.map(normalizeBlock).sort(sortByType)\n : [],\n templates: Array.isArray(raw.templates)\n ? raw.templates.map(normalizeTemplate).sort(sortFieldsById)\n : [],\n dataRequirements:\n raw.dataRequirements && typeof raw.dataRequirements === \"object\"\n ? (sortedCopy(raw.dataRequirements) as Record<string, boolean>)\n : null,\n ...(raw.global === true ? { global: true } : {}),\n ...(typeof raw.maxBlocks === \"number\" ? { maxBlocks: raw.maxBlocks } : {}),\n };\n}\n\n/**\n * Load every sections/ *.schema.ts file in the theme and return a canonical\n * SchemaManifest. Deterministic — same source input always produces the same\n * JSON bytes.\n */\nexport async function extractSchemas(\n themePath: string\n): Promise<SchemaManifest> {\n const { createJiti } = await import(\"jiti\");\n const jiti = createJiti(import.meta.url);\n\n const schemaFiles = await glob(\"sections/**/*.schema.ts\", { cwd: themePath });\n const sections: Record<string, ExtractedSection> = {};\n\n for (const file of schemaFiles) {\n try {\n const mod = await jiti.import(path.join(themePath, file));\n const exports = mod as Record<string, unknown>;\n\n // Schemas export an object with .type (string) and .settings (array).\n for (const value of Object.values(exports)) {\n if (\n value &&\n typeof value === \"object\" &&\n typeof (value as any).type === \"string\" &&\n Array.isArray((value as any).settings)\n ) {\n const section = normalizeSection(value);\n sections[section.type] = section;\n }\n }\n } catch {\n // Skip unreadable schema files — the publish build step will also\n // surface the error, so we don't double-report here.\n }\n }\n\n const manifest: SchemaManifest = {\n manifestVersion: 1,\n sections: {},\n };\n for (const type of Object.keys(sections).sort()) {\n manifest.sections[type] = sections[type];\n }\n return manifest;\n}\n\n/**\n * Serialize a SchemaManifest to deterministic JSON bytes.\n * Two runs on the same input produce byte-identical output.\n */\nexport function serializeManifest(manifest: SchemaManifest): string {\n return JSON.stringify(sortedCopy(manifest), null, 2);\n}\n","/**\n * Scan dist/theme-assets/ and produce a content-addressable asset list.\n *\n * Each file gets a short SHA256 prefix appended to its name (Vite/Webpack\n * style) so subsequent publishes can dedup unchanged files against the\n * per-theme asset index on the backend.\n *\n * Hashing follows the same SHA256 pattern as compile-theme.ts::contentHashEntry\n * (8-char hex prefix).\n */\n\nimport fs from \"fs-extra\";\nimport path from \"path\";\nimport crypto from \"crypto\";\nimport { glob } from \"glob\";\n\n/** MIME lookup used for both the upload Content-Type and the manifest. */\nconst MIME_MAP: Record<string, string> = {\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".gif\": \"image/gif\",\n \".webp\": \"image/webp\",\n \".avif\": \"image/avif\",\n \".svg\": \"image/svg+xml\",\n \".ico\": \"image/x-icon\",\n \".bmp\": \"image/bmp\",\n \".woff\": \"font/woff\",\n \".woff2\": \"font/woff2\",\n \".ttf\": \"font/ttf\",\n \".otf\": \"font/otf\",\n \".eot\": \"application/vnd.ms-fontobject\",\n \".mp4\": \"video/mp4\",\n \".webm\": \"video/webm\",\n \".mov\": \"video/quicktime\",\n \".ogg\": \"video/ogg\",\n \".json\": \"application/json\",\n};\n\n/** Length of the hex hash segment appended to filenames. */\nconst HASH_LEN = 8;\n\n/**\n * Video extensions that exceed the 20MB presigned-URL limit and must be\n * uploaded via the multipart video API instead.\n */\nexport const VIDEO_EXTENSIONS = [\n \".mp4\",\n \".webm\",\n \".ogg\",\n \".mov\",\n \".avi\",\n \".mkv\",\n];\n\nexport function isVideoAsset(filePath: string): boolean {\n const lower = filePath.toLowerCase();\n return VIDEO_EXTENSIONS.some((ext) => lower.endsWith(ext));\n}\n\nexport interface HashedAssetEntry {\n /** Original relative path inside theme-assets/, e.g. \"banners/hero.png\" */\n originalPath: string;\n /** Hashed relative path, e.g. \"banners/hero-abc12345.png\" */\n hashedPath: string;\n /** 8-char hex SHA256 prefix of the file content */\n hash: string;\n /** File size in bytes */\n size: number;\n /** MIME type inferred from extension */\n contentType: string;\n /** Local absolute filesystem path — used during upload */\n absPath: string;\n}\n\nfunction mimeFor(filename: string): string {\n const ext = path.extname(filename).toLowerCase();\n return MIME_MAP[ext] || \"application/octet-stream\";\n}\n\nasync function sha256Prefix(absPath: string, len: number): Promise<string> {\n const buf = await fs.readFile(absPath);\n return crypto.createHash(\"sha256\").update(buf).digest(\"hex\").slice(0, len);\n}\n\n/**\n * Given a relative path like \"banners/hero.png\" and a hash \"abc12345\",\n * return \"banners/hero-abc12345.png\".\n */\nfunction insertHashIntoName(relPath: string, hash: string): string {\n const dir = path.posix.dirname(relPath);\n const base = path.posix.basename(relPath);\n const ext = path.posix.extname(base);\n const stem = ext ? base.slice(0, -ext.length) : base;\n const hashed = `${stem}-${hash}${ext}`;\n return dir === \".\" ? hashed : `${dir}/${hashed}`;\n}\n\n/**\n * Walk dist/theme-assets/ and return all asset files with content hashes.\n * Returns [] if the directory does not exist.\n *\n * @param distDir Absolute path to the theme's dist/ directory.\n */\nexport async function scanThemeAssets(\n distDir: string\n): Promise<HashedAssetEntry[]> {\n const assetsDir = path.join(distDir, \"theme-assets\");\n if (!(await fs.pathExists(assetsDir))) return [];\n\n const files = await glob(\"**/*\", {\n cwd: assetsDir,\n nodir: true,\n dot: false,\n });\n\n const results: HashedAssetEntry[] = [];\n for (const rel of files) {\n const absPath = path.join(assetsDir, rel);\n const stat = await fs.stat(absPath);\n if (!stat.isFile()) continue;\n\n // Normalize to forward slashes for S3 keys\n const originalPath = rel.split(path.sep).join(\"/\");\n const hash = await sha256Prefix(absPath, HASH_LEN);\n const hashedPath = insertHashIntoName(originalPath, hash);\n const contentType = mimeFor(rel);\n\n results.push({\n originalPath,\n hashedPath,\n hash,\n size: stat.size,\n contentType,\n absPath,\n });\n }\n\n // Deterministic order for stable diffs and logging\n results.sort((a, b) => a.originalPath.localeCompare(b.originalPath));\n return results;\n}\n\n/**\n * Build the asset-map.json content that ships inside bundle.zip.\n * Maps original theme-relative paths to hashed filenames the editor /\n * storefront can resolve against the shared S3 asset folder.\n */\nexport function buildAssetMap(\n entries: HashedAssetEntry[]\n): Record<string, string> {\n const map: Record<string, string> = {};\n for (const e of entries) {\n map[e.originalPath] = e.hashedPath;\n }\n return map;\n}\n","/**\n * Standalone Theme Compiler\n *\n * Compiles standalone theme source code to ESM bundles using esbuild.\n * Adapted from scripts/compile-theme.ts for use in the CLI.\n *\n * Key differences from the monorepo version:\n * - Core global plugin reads from node_modules/@onexapis/core/dist/ (not packages/core/dist/)\n * - Process shim is inlined (no external file dependency)\n * - Output goes to ./dist/ in the theme directory\n */\n\nimport * as esbuild from \"esbuild\";\nimport type { Plugin } from \"esbuild\";\nimport path from \"path\";\nimport fs from \"fs/promises\";\nimport crypto from \"crypto\";\nimport { glob } from \"glob\";\nimport { createRequire } from \"node:module\";\nimport { logger } from \"./logger\";\nimport { extractSchemas, serializeManifest } from \"./extract-schemas\";\nimport { scanThemeAssets } from \"./scan-theme-assets\";\n\n/**\n * Generate Tailwind CSS bundle for the theme.\n * Scans theme section/component TSX files to compile all used utility classes.\n * Output: dist/bundle.css — loaded by the editor iframe as a CSS asset.\n */\nasync function generateThemeCSS(\n themePath: string,\n outDir: string\n): Promise<void> {\n try {\n // Dynamic imports so tailwindcss/postcss don't break if missing\n const postcss = (await import(\"postcss\")).default;\n const tailwindcss = (await import(\"tailwindcss\")).default;\n\n const tailwindConfig = {\n content: [\n path.join(themePath, \"sections/**/*.{ts,tsx}\"),\n path.join(themePath, \"components/**/*.{ts,tsx}\"),\n ],\n theme: { extend: {} },\n plugins: [] as any[],\n };\n\n const inputCSS =\n \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\";\n const result = await postcss([tailwindcss(tailwindConfig)]).process(\n inputCSS,\n { from: undefined }\n );\n\n await fs.writeFile(path.join(outDir, \"bundle.css\"), result.css);\n logger.info(\"Generated bundle.css\");\n } catch (err) {\n logger.warning(\n `CSS generation skipped: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n}\n\n/**\n * Inline process shim for browser environments.\n * Equivalent to scripts/process-shim.js but embedded as a string.\n */\nconst PROCESS_SHIM = `\nif (typeof process === \"undefined\") {\n globalThis.process = {\n env: {},\n browser: true,\n };\n}\n`;\n\n/**\n * Plugin to externalize React as window globals.\n * React/ReactDOM are shared via globalThis to prevent duplication.\n */\nconst reactGlobalPlugin: Plugin = {\n name: \"react-global\",\n setup(build) {\n build.onResolve({ filter: /^react$/ }, () => ({\n path: \"react-external\",\n namespace: \"react-global\",\n }));\n\n build.onResolve({ filter: /^react-dom$/ }, () => ({\n path: \"react-dom-external\",\n namespace: \"react-global\",\n }));\n\n build.onResolve({ filter: /^react\\/jsx-runtime$/ }, () => ({\n path: \"react-jsx-runtime-external\",\n namespace: \"react-global\",\n }));\n\n build.onLoad({ filter: /.*/, namespace: \"react-global\" }, (args) => {\n if (args.path === \"react-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_REACT__) {\n throw new Error('[Theme Bundle] React not initialized. Ensure globalThis.__ONEX_REACT__ is set before loading theme.');\n}\n\nconst React = globalThis.__ONEX_REACT__;\nexport default React;\n\nexport const {\n useState,\n useEffect,\n useContext,\n useReducer,\n useCallback,\n useMemo,\n useRef,\n useImperativeHandle,\n useLayoutEffect,\n useDebugValue,\n useDeferredValue,\n useTransition,\n useId,\n useSyncExternalStore,\n useInsertionEffect,\n createContext,\n forwardRef,\n lazy,\n memo,\n startTransition,\n createElement,\n cloneElement,\n isValidElement,\n Children,\n Fragment,\n Profiler,\n StrictMode,\n Suspense,\n Component,\n PureComponent,\n useActionState,\n use,\n} = React;\n `.trim(),\n loader: \"js\",\n };\n }\n\n if (args.path === \"react-dom-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_REACT_DOM__) {\n throw new Error('[Theme Bundle] ReactDOM not initialized. Ensure globalThis.__ONEX_REACT_DOM__ is set before loading theme.');\n}\n\nconst ReactDOM = globalThis.__ONEX_REACT_DOM__;\nexport default ReactDOM;\n\nexport const {\n createRoot,\n hydrateRoot,\n flushSync,\n createPortal,\n findDOMNode,\n render,\n hydrate,\n unmountComponentAtNode,\n} = ReactDOM;\n `.trim(),\n loader: \"js\",\n };\n }\n\n if (args.path === \"react-jsx-runtime-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_JSX_RUNTIME__) {\n throw new Error('[Theme Bundle] React JSX runtime not initialized. Ensure globalThis.__ONEX_JSX_RUNTIME__ is set before loading theme.');\n}\nconst _jsxRuntime = globalThis.__ONEX_JSX_RUNTIME__;\nexport const jsx = _jsxRuntime.jsx;\nexport const jsxs = _jsxRuntime.jsxs;\nexport const Fragment = _jsxRuntime.Fragment;\n `.trim(),\n loader: \"js\",\n };\n }\n\n return null;\n });\n },\n};\n\n/**\n * Plugin to externalize @tanstack/react-query as a window global.\n * Prevents the theme bundle from shipping its own copy of react-query,\n * which would create a second QueryClient instance separate from the host's.\n */\nconst reactQueryGlobalPlugin: Plugin = {\n name: \"react-query-global\",\n setup(build) {\n build.onResolve({ filter: /^@tanstack\\/react-query$/ }, () => ({\n path: \"react-query-external\",\n namespace: \"react-query-global\",\n }));\n\n build.onLoad({ filter: /.*/, namespace: \"react-query-global\" }, () => ({\n contents: `\nif (!globalThis.__REACT_QUERY__) {\n throw new Error('[Theme Bundle] @tanstack/react-query not initialized. Ensure globalThis.__REACT_QUERY__ is set before loading theme.');\n}\nconst _rq = globalThis.__REACT_QUERY__;\nexport default _rq;\nexport const {\n useQuery,\n useMutation,\n useQueryClient,\n useInfiniteQuery,\n QueryClient,\n QueryClientProvider,\n useIsFetching,\n useIsMutating,\n usePrefetchQuery,\n usePrefetchInfiniteQuery,\n} = _rq;\n `.trim(),\n loader: \"js\",\n }));\n },\n};\n\n/**\n * Resolve a file inside node_modules, searching up the directory tree.\n * Handles monorepo hoisting where deps are in a parent node_modules.\n */\nasync function resolveNodeModulesFile(\n startDir: string,\n relativePath: string\n): Promise<string | null> {\n let dir = startDir;\n while (true) {\n const candidate = path.join(dir, \"node_modules\", relativePath);\n try {\n await fs.access(candidate);\n return candidate;\n } catch {\n const parent = path.dirname(dir);\n if (parent === dir) break; // reached filesystem root\n dir = parent;\n }\n }\n return null;\n}\n\n/**\n * Scan source files in `sourceDir` for named imports/exports from `packageName`.\n * Returns a map of subpath → Set of imported names.\n * e.g. for `@onexapis/core/internal` → key \"internal\", names {\"useCart\", \"Button\"}\n * for `@onexapis/core` → key \"\" (empty string)\n */\nasync function scanImportsFromPackage(\n sourceDir: string,\n packageName: string\n): Promise<Record<string, Set<string>>> {\n const result: Record<string, Set<string>> = {};\n const escapedPkg = packageName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n // Match named imports: import { useCart, useAuth } from \"@onexapis/core/hooks\"\n const importRegex = new RegExp(\n `(?:import|export)\\\\s+(?:type\\\\s+)?\\\\{([^}]+)\\\\}\\\\s+from\\\\s+[\"']${escapedPkg}(/[\\\\w./-]+)?[\"']`,\n \"g\"\n );\n // Match namespace imports: import * as H from \"@onexapis/core/hooks\"\n const namespaceImportRegex = new RegExp(\n `import\\\\s+\\\\*\\\\s+as\\\\s+\\\\w+\\\\s+from\\\\s+[\"']${escapedPkg}(/[\\\\w./-]+)?[\"']`,\n \"g\"\n );\n\n const sourceFiles = await glob(\"**/*.{ts,tsx}\", {\n cwd: sourceDir,\n ignore: [\"node_modules/**\", \"dist/**\"],\n });\n\n for (const file of sourceFiles) {\n try {\n const content = await fs.readFile(path.join(sourceDir, file), \"utf-8\");\n // Check namespace imports first — marks subpath for full export reading\n for (const match of content.matchAll(namespaceImportRegex)) {\n const subpath = match[1] ? match[1].slice(1) : \"\";\n if (!result[subpath]) result[subpath] = new Set();\n result[subpath].add(\"*\"); // Flag: needs ALL exports from dist\n }\n // Check named imports\n for (const match of content.matchAll(importRegex)) {\n const subpath = match[2] ? match[2].slice(1) : \"\";\n if (!result[subpath]) result[subpath] = new Set();\n for (const name of match[1].split(\",\")) {\n let original = name\n .trim()\n .split(/\\s+as\\s+/)[0]\n .trim();\n if (original.startsWith(\"type \")) continue;\n if (original) result[subpath].add(original);\n }\n }\n } catch {\n // skip unreadable files\n }\n }\n\n return result;\n}\n\n/**\n * Plugin to externalize @onexapis/core as window global.\n * Scans theme source to discover imports; falls back to reading dist files.\n */\nfunction createCoreGlobalPlugin(themePath: string): Plugin {\n const exportsBySubpath: Record<string, string[]> = {};\n let scanPromise: Promise<void> | null = null;\n\n return {\n name: \"core-global\",\n setup(build) {\n build.onResolve({ filter: /^@onexapis\\/core(\\/.*)?$/ }, (args) => ({\n path: args.path,\n namespace: \"core-global\",\n }));\n\n build.onLoad({ filter: /.*/, namespace: \"core-global\" }, async (args) => {\n // On first load, scan theme source files to discover all @onexapis/core imports\n // Use a shared promise to avoid race conditions with concurrent onLoad calls\n if (!scanPromise) {\n scanPromise = scanImportsFromPackage(themePath, \"@onexapis/core\")\n .then((scanned) => {\n for (const [subpath, names] of Object.entries(scanned)) {\n const cacheKey = subpath || \"__root__\";\n exportsBySubpath[cacheKey] = [...names];\n }\n })\n .catch(() => {\n // Source scan failed, will fall back to dist-file reading\n });\n }\n await scanPromise;\n\n const match = args.path.match(/^@onexapis\\/core(\\/(.+))?$/);\n const subpath = match?.[2] || \"\";\n const moduleAccess = subpath ? `['${subpath}']` : \"\";\n\n let namedExports: string[] = [];\n const cacheKey = subpath || \"__root__\";\n const cached = exportsBySubpath[cacheKey];\n const needsAllExports = cached?.includes(\"*\");\n if (cached && cached.length > 0 && !needsAllExports) {\n // Deduplicate (multiple sections may import same hook)\n namedExports = [...new Set(cached)];\n } else {\n // Fallback: read dist files when source scan found nothing for this subpath\n const distFileName = subpath ? `${subpath}.mjs` : \"index.mjs\";\n let distPath = await resolveNodeModulesFile(\n themePath,\n path.join(\"@onexapis\", \"core\", \"dist\", distFileName)\n );\n if (!distPath) {\n distPath = await resolveNodeModulesFile(\n __dirname,\n path.join(\"@onexapis\", \"core\", \"dist\", distFileName)\n );\n }\n try {\n if (!distPath) throw new Error(\"not found\");\n const distContent = await fs.readFile(distPath, \"utf-8\");\n const exportMatches = distContent.matchAll(/export\\s*\\{([^}]+)\\}/g);\n for (const m of exportMatches) {\n const names = m[1]\n .split(\",\")\n .map((n) => {\n const parts = n.trim().split(/\\s+as\\s+/);\n return (parts[1] || parts[0]).trim();\n })\n .filter((n) => n.length > 0);\n namedExports.push(...names);\n }\n // Merge with any named imports from source scan (remove \"*\" flag)\n if (cached && cached.length > 0) {\n for (const n of cached) {\n if (n !== \"*\") namedExports.push(n);\n }\n }\n namedExports = [...new Set(namedExports)];\n } catch {\n // dist file not found - fall back to default-only export\n }\n exportsBySubpath[cacheKey] = namedExports;\n }\n\n const namedExportLines =\n namedExports.length > 0\n ? `\\nexport const {\\n ${namedExports.join(\",\\n \")}\\n} = _module;\\n`\n : \"\";\n\n return {\n contents: `\nif (!globalThis.__ONEX_CORE__) {\n throw new Error('[Theme Bundle] @onexapis/core not initialized. Ensure globalThis.__ONEX_CORE__ is set before loading theme.');\n}\n\nconst _module = globalThis.__ONEX_CORE__${moduleAccess};\nif (!_module) {\n const subpath = ${subpath ? `'${subpath}'` : \"null\"};\n const modulePath = subpath ? '/' + subpath : '';\n const moduleKey = subpath ? '[\"' + subpath + '\"]' : '';\n throw new Error('[Theme Bundle] @onexapis/core' + modulePath + ' not available in globalThis.__ONEX_CORE__' + moduleKey);\n}\n\nexport default _module;\n${namedExportLines}\n `.trim(),\n loader: \"js\",\n };\n });\n },\n };\n}\n\n/**\n * Plugin to stub common theme dependencies (next/*, framer-motion, lucide-react, etc.)\n * for standalone theme compilation. Tries to resolve from node_modules first;\n * only stubs if the package is not installed.\n */\nfunction createThemeDepsStubPlugin(themePath: string): Plugin {\n return {\n name: \"theme-deps-stub\",\n setup(build) {\n // Helper: try resolve, stub if missing\n const tryResolveOrStub = (filter: RegExp, namespace: string) => {\n build.onResolve({ filter }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n // Try resolving from theme directory\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir || themePath,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n // Try resolving via CLI's node_modules (monorepo)\n try {\n const req = createRequire(import.meta.url || __filename);\n const resolved = req.resolve(args.path);\n if (resolved) return { path: resolved, namespace: \"file\" };\n } catch {}\n return { path: args.path, namespace };\n });\n };\n\n // --- Next.js ---\n tryResolveOrStub(/^next\\//, \"next-stub\");\n build.onLoad({ filter: /.*/, namespace: \"next-stub\" }, (args) => {\n const stubs: Record<string, string> = {\n \"next/image\": `\nimport React from 'react';\nconst Image = React.forwardRef((props, ref) => {\n const { src, alt, width, height, fill, priority, sizes, quality, placeholder, blurDataURL, onLoad, onError, style, className, ...rest } = props;\n const imgSrc = typeof src === 'object' ? src.src : src;\n const fillStyle = fill ? { position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: style?.objectFit || 'cover', display: 'block' } : {};\n const mergedStyle = { ...fillStyle, ...style };\n return React.createElement('img', {\n ref, src: imgSrc, alt,\n width: fill ? undefined : width, height: fill ? undefined : height,\n loading: priority ? 'eager' : 'lazy',\n style: Object.keys(mergedStyle).length > 0 ? mergedStyle : undefined,\n className, onLoad, onError, ...rest,\n });\n});\nexport default Image;\n `,\n \"next/link\": `\nimport React from 'react';\nconst Link = ({ href, children, ...rest }) => React.createElement('a', { href, ...rest }, children);\nexport default Link;\n `,\n \"next/navigation\": `\nexport function useRouter() { return { push(u){window.location.href=u}, replace(u){window.location.href=u}, back(){window.history.back()}, forward(){window.history.forward()}, refresh(){window.location.reload()}, prefetch(){} }; }\nexport function usePathname() { return window.location.pathname; }\nexport function useSearchParams() { return new URLSearchParams(window.location.search); }\nexport function useParams() { return {}; }\nexport function redirect(url) { window.location.href = url; }\nexport function notFound() { throw new Error('Not Found'); }\n `,\n \"next/headers\": `\nexport function cookies() { return { get(){}, getAll(){ return []; }, set(){}, delete(){}, has(){ return false; } }; }\nexport function headers() { return new Headers(); }\n `,\n };\n return {\n contents: stubs[args.path] || \"export default {};\",\n loader: \"jsx\",\n resolveDir: themePath,\n };\n });\n\n // --- lucide-react ---\n // Collect all imported icon names from the theme source at resolve time,\n // then generate a stub that exports every one of them.\n const lucideImports = new Set<string>();\n let lucideThemeScanned = false;\n tryResolveOrStub(/^lucide-react/, \"lucide-stub\");\n build.onLoad({ filter: /.*/, namespace: \"lucide-stub\" }, async () => {\n // Scan theme source files for lucide-react imports to discover all icon names\n if (!lucideThemeScanned) {\n lucideThemeScanned = true;\n try {\n const scanned = await scanImportsFromPackage(\n themePath,\n \"lucide-react\"\n );\n for (const names of Object.values(scanned)) {\n for (const name of names) lucideImports.add(name);\n }\n } catch {}\n }\n const iconNames = [...lucideImports];\n const exports = iconNames.map((n) => `icon as ${n}`).join(\", \");\n return {\n contents: `\nconst icon = (props) => null;\nexport { ${exports} };\nexport default new Proxy({}, { get: (_, name) => name === '__esModule' ? true : icon });\n `.trim(),\n loader: \"jsx\",\n };\n });\n\n // --- framer-motion ---\n tryResolveOrStub(/^framer-motion/, \"motion-stub\");\n build.onLoad({ filter: /.*/, namespace: \"motion-stub\" }, () => ({\n contents: `\nimport React from 'react';\nconst handler = { get: (_, name) => {\n if (name === '__esModule') return true;\n return React.forwardRef((props, ref) => React.createElement(name, { ...props, ref }));\n}};\nexport const motion = new Proxy({}, handler);\nexport const AnimatePresence = ({ children }) => children || null;\nexport function useInView() { return true; }\nexport default { motion, AnimatePresence, useInView };\n `.trim(),\n loader: \"jsx\",\n resolveDir: themePath,\n }));\n\n // --- sonner ---\n tryResolveOrStub(/^sonner$/, \"sonner-stub\");\n build.onLoad({ filter: /.*/, namespace: \"sonner-stub\" }, () => ({\n contents: `\nexport const toast = new Proxy(() => {}, { get: () => () => {} });\nexport const Toaster = () => null;\nexport default { toast, Toaster };\n `.trim(),\n loader: \"jsx\",\n }));\n\n // --- react-hook-form ---\n tryResolveOrStub(/^react-hook-form$/, \"rhf-stub\");\n build.onLoad({ filter: /.*/, namespace: \"rhf-stub\" }, () => ({\n contents: `\nexport function useForm() {\n return {\n register: () => ({}),\n handleSubmit: (fn) => (e) => { e?.preventDefault?.(); fn({}); },\n formState: { errors: {}, isSubmitting: false, isValid: true },\n watch: () => undefined,\n setValue: () => {},\n reset: () => {},\n control: {},\n };\n}\nexport function useController() { return { field: {}, fieldState: {} }; }\nexport function useFormContext() { return useForm(); }\n `.trim(),\n loader: \"js\",\n }));\n\n // --- @hookform/resolvers ---\n tryResolveOrStub(/^@hookform\\/resolvers/, \"hookform-resolvers-stub\");\n build.onLoad(\n { filter: /.*/, namespace: \"hookform-resolvers-stub\" },\n () => ({\n contents: `export function zodResolver() { return () => ({ values: {}, errors: {} }); }`,\n loader: \"js\",\n })\n );\n\n // --- next-intl ---\n tryResolveOrStub(/^next-intl$/, \"next-intl-stub\");\n build.onLoad({ filter: /.*/, namespace: \"next-intl-stub\" }, () => ({\n contents: `\nexport function useTranslations(ns) {\n return (key) => ns ? ns + '.' + key : key;\n}\nexport function useLocale() { return 'en'; }\nexport function useMessages() { return {}; }\n `.trim(),\n loader: \"js\",\n }));\n\n // --- zod (often used with hookform) ---\n tryResolveOrStub(/^zod$/, \"zod-stub\");\n build.onLoad({ filter: /.*/, namespace: \"zod-stub\" }, () => ({\n contents: `\nconst schema = () => ({ parse: (v) => v, safeParse: (v) => ({ success: true, data: v }), optional: schema, min: schema, max: schema, email: schema, url: schema, regex: schema, refine: schema, transform: schema });\nexport const z = { string: schema, number: schema, boolean: schema, object: (s) => ({ ...schema(), shape: s }), array: schema, enum: schema, union: schema, literal: schema, infer: undefined };\nexport default z;\n `.trim(),\n loader: \"js\",\n }));\n },\n };\n}\n\n/**\n * Generate theme-data.json from theme source files using jiti.\n * This provides a server-side fallback for themes without API data.\n */\nasync function generateThemeData(\n themePath: string,\n outputDir: string,\n themeId: string\n): Promise<void> {\n const { createJiti } = await import(\"jiti\");\n const jiti = createJiti(import.meta.url);\n\n let themeConfig: any = null;\n let layoutConfig: any = null;\n const pages: Record<string, any> = {};\n\n // Load theme config\n for (const ext of [\".ts\", \".js\"]) {\n try {\n const mod = await jiti.import(path.join(themePath, `theme.config${ext}`));\n themeConfig = (mod as any).default || mod;\n break;\n } catch {}\n }\n\n // Load layout\n for (const ext of [\".ts\", \".js\"]) {\n try {\n const mod = await jiti.import(path.join(themePath, `theme.layout${ext}`));\n layoutConfig = (mod as any).default || mod;\n break;\n } catch {}\n }\n\n // Load schemas (to merge defaults into page sections)\n const schemas: Record<string, any> = {};\n const sectionsDir = path.join(themePath, \"sections\");\n try {\n const sectionDirs = await fs.readdir(sectionsDir);\n for (const dir of sectionDirs) {\n const schemaFile = path.join(sectionsDir, dir, `${dir}.schema.ts`);\n try {\n await fs.access(schemaFile);\n const mod = await jiti.import(schemaFile);\n // Find the schema export (ends with \"Schema\")\n for (const [key, value] of Object.entries(mod as Record<string, any>)) {\n if (\n key.endsWith(\"Schema\") &&\n value &&\n typeof value === \"object\" &&\n (value as any).type\n ) {\n schemas[(value as any).type] = value;\n }\n }\n } catch {}\n }\n } catch {}\n\n // Load pages\n const pagesDir = path.join(themePath, \"pages\");\n try {\n const files = await fs.readdir(pagesDir);\n for (const file of files) {\n if (!file.match(/\\.(ts|js)$/)) continue;\n const name = file.replace(/\\.(ts|js)$/, \"\");\n try {\n const mod = await jiti.import(path.join(pagesDir, file));\n const config = (mod as any).default || mod;\n\n // Merge schema defaults (components/blocks) into sections\n const sections = (config.sections || []).map((section: any) => {\n const schema = schemas[section.type];\n if (!schema?.defaults) return section;\n return {\n ...section,\n components:\n section.components?.length > 0\n ? section.components\n : schema.defaults.components || [],\n blocks:\n section.blocks?.length > 0\n ? section.blocks\n : schema.defaults.blocks || [],\n settings: {\n ...(schema.defaults.settings || {}),\n ...section.settings,\n },\n };\n });\n\n pages[name] = {\n id: name,\n name: config.title || name,\n path: config.path || `/${name}`,\n config: { id: name, ...config, sections },\n sections,\n seo: config.seo,\n };\n } catch {}\n }\n } catch {}\n\n await fs.writeFile(\n path.join(outputDir, \"theme-data.json\"),\n JSON.stringify(\n {\n themeId,\n theme: {\n id: themeId,\n name: themeConfig?.name || themeId,\n config: themeConfig,\n layout: {\n header: layoutConfig?.headerSections || [],\n footer: layoutConfig?.footerSections || [],\n },\n pages: Object.keys(pages),\n },\n pages,\n },\n null,\n 2\n )\n );\n logger.info(`Generated theme-data.json (${Object.keys(pages).length} pages)`);\n}\n\n/**\n * Content-hash the bundle entry point for cache busting.\n * Renames bundle-entry.js -> bundle-entry-{hash}.js\n */\nasync function contentHashEntry(outputDir: string): Promise<void> {\n const entryPath = path.join(outputDir, \"bundle-entry.js\");\n const mapPath = path.join(outputDir, \"bundle-entry.js.map\");\n\n // Read the entry file BEFORE cleaning old hashed files.\n // bundle-entry.js may be a symlink pointing at the previous hashed file —\n // deleting that target first would leave a broken symlink and make the\n // subsequent readFile fail with ENOENT.\n let entryContent: string;\n try {\n entryContent = await fs.readFile(entryPath, \"utf-8\");\n } catch {\n // bundle-entry.js not found, try index.js\n const indexPath = path.join(outputDir, \"index.js\");\n try {\n entryContent = await fs.readFile(indexPath, \"utf-8\");\n } catch {\n logger.warning(\"No entry file found in output, skipping content hash\");\n return;\n }\n // For index.ts entry, rename index.js -> bundle-entry-{hash}.js\n const hash = crypto\n .createHash(\"sha256\")\n .update(entryContent)\n .digest(\"hex\")\n .slice(0, 8);\n\n const hashedName = `bundle-entry-${hash}.js`;\n const indexMapPath = path.join(outputDir, \"index.js.map\");\n const hashedMapName = `bundle-entry-${hash}.js.map`;\n\n entryContent = entryContent.replace(\n /\\/\\/# sourceMappingURL=index\\.js\\.map/,\n `//# sourceMappingURL=${hashedMapName}`\n );\n\n // Clean old hashed files now that we have the content safely in memory\n const oldFiles = await glob(\"bundle-entry-*.js*\", { cwd: outputDir });\n for (const f of oldFiles) {\n await fs.unlink(path.join(outputDir, f));\n }\n\n await fs.writeFile(path.join(outputDir, hashedName), entryContent);\n await fs.unlink(indexPath);\n // Remove existing file/symlink then write a real copy so archiver\n // includes actual JS content in the zip (symlinks store only the target path).\n try {\n await fs.unlink(entryPath);\n } catch {\n /* may not exist */\n }\n await fs.writeFile(entryPath, entryContent);\n\n try {\n await fs.access(indexMapPath);\n await fs.rename(indexMapPath, path.join(outputDir, hashedMapName));\n } catch {\n // No source map\n }\n\n logger.info(`Entry hashed: ${hashedName}`);\n return;\n }\n\n const hash = crypto\n .createHash(\"sha256\")\n .update(entryContent)\n .digest(\"hex\")\n .slice(0, 8);\n\n const hashedName = `bundle-entry-${hash}.js`;\n const hashedMapName = `bundle-entry-${hash}.js.map`;\n\n entryContent = entryContent.replace(\n /\\/\\/# sourceMappingURL=bundle-entry\\.js\\.map/,\n `//# sourceMappingURL=${hashedMapName}`\n );\n\n // Clean old hashed files now that content is safely in memory\n const oldFiles = await glob(\"bundle-entry-*.js*\", { cwd: outputDir });\n for (const f of oldFiles) {\n await fs.unlink(path.join(outputDir, f));\n }\n\n await fs.writeFile(path.join(outputDir, hashedName), entryContent);\n // Remove existing file/symlink then write a real copy so archiver\n // includes actual JS content in the zip (symlinks store only the target path).\n try {\n await fs.unlink(entryPath);\n } catch {\n /* may not exist */\n }\n await fs.writeFile(entryPath, entryContent);\n\n try {\n await fs.access(mapPath);\n await fs.rename(mapPath, path.join(outputDir, hashedMapName));\n } catch {\n // No source map\n }\n\n logger.info(`Entry hashed: ${hashedName}`);\n}\n\n/**\n * Extract dataRequirements from section schema files using jiti.\n * Same pattern as generateThemeData() — jiti handles TypeScript natively.\n * Returns a map of sectionType → dataRequirements object.\n */\nasync function extractDataRequirements(\n themePath: string\n): Promise<Record<string, Record<string, boolean>>> {\n const { createJiti } = await import(\"jiti\");\n const jiti = createJiti(import.meta.url);\n\n const schemaFiles = await glob(\"sections/**/*.schema.ts\", { cwd: themePath });\n const requirements: Record<string, Record<string, boolean>> = {};\n\n for (const file of schemaFiles) {\n try {\n const mod = await jiti.import(path.join(themePath, file));\n const exports = mod as Record<string, any>;\n\n // Find schema exports: look for objects with .type (string) + .dataRequirements\n for (const value of Object.values(exports)) {\n if (\n value &&\n typeof value === \"object\" &&\n typeof value.type === \"string\" &&\n value.dataRequirements &&\n typeof value.dataRequirements === \"object\"\n ) {\n requirements[value.type] = value.dataRequirements;\n }\n }\n } catch (err) {\n logger.warning(\n `Could not load schema ${file}: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n }\n\n return requirements;\n}\n\n/**\n * Write schemas.json and asset-manifest.json into dist/ for the publish gate.\n * See SCHEMA_DIFF_GATE_PLAN.md for the diff/classifier that consumes these.\n */\nasync function writeGateManifests(\n themePath: string,\n outputDir: string\n): Promise<void> {\n try {\n const schemas = await extractSchemas(themePath);\n await fs.writeFile(\n path.join(outputDir, \"schemas.json\"),\n serializeManifest(schemas)\n );\n logger.info(\n `Generated schemas.json (${Object.keys(schemas.sections).length} sections)`\n );\n } catch (err) {\n logger.warning(\n `schemas.json not written: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n\n try {\n const entries = await scanThemeAssets(outputDir);\n const assets = entries.map((e) => ({\n path: e.originalPath,\n hash: e.hash,\n size: e.size,\n contentType: e.contentType,\n }));\n await fs.writeFile(\n path.join(outputDir, \"asset-manifest.json\"),\n JSON.stringify({ manifestVersion: 1, assets }, null, 2)\n );\n logger.info(`Generated asset-manifest.json (${assets.length} assets)`);\n } catch (err) {\n logger.warning(\n `asset-manifest.json not written: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n}\n\n/**\n * Generate manifest.json with theme metadata.\n */\nexport async function generateManifest(\n themeName: string,\n themePath: string,\n outputDir: string\n): Promise<void> {\n // Read version and themeId from package.json\n let version = \"1.0.0\";\n let themeId = themeName;\n try {\n const pkgContent = await fs.readFile(\n path.join(themePath, \"package.json\"),\n \"utf-8\"\n );\n const pkg = JSON.parse(pkgContent);\n version = pkg.version || version;\n // Derive themeId from package name: \"@onex-themes/simple\" → \"simple\"\n if (pkg.name) {\n themeId = pkg.name.replace(/^@onex-themes\\//, \"\");\n }\n } catch {\n // Use defaults\n }\n\n const [sectionFiles, blockFiles, schemaFiles] = await Promise.all([\n glob(\"sections/**/index.ts\", { cwd: themePath }),\n glob(\"blocks/**/index.ts\", { cwd: themePath }),\n glob(\"**/*.schema.ts\", { cwd: themePath }),\n ]);\n\n // Extract dataRequirements declared in section schemas\n const dataRequirements = await extractDataRequirements(themePath);\n\n let hasThemeConfig = false;\n try {\n await fs.access(path.join(themePath, \"theme.config.ts\"));\n hasThemeConfig = true;\n } catch {\n // No theme config\n }\n\n const allFiles = await glob(\"**/*\", { cwd: outputDir, nodir: true });\n const jsFiles = allFiles.filter((f) => f.endsWith(\".js\"));\n const cssFiles = allFiles.filter((f) => f.endsWith(\".css\"));\n\n const entryFile =\n jsFiles.find((f) => f.includes(\"bundle-entry\")) || \"bundle-entry.js\";\n\n const manifest = {\n themeId,\n version,\n name: themeId.charAt(0).toUpperCase() + themeId.slice(1),\n compiledAt: new Date().toISOString(),\n format: \"esm\",\n platform: \"browser\",\n target: \"es2020\",\n\n counts: {\n sections: sectionFiles.length,\n blocks: blockFiles.length,\n schemas: schemaFiles.length,\n },\n\n output: {\n entry: entryFile,\n chunks: jsFiles.filter((f) => f !== entryFile && !f.endsWith(\".map\")),\n assets: allFiles.filter((f) =>\n [\".png\", \".jpg\", \".jpeg\", \".svg\", \".gif\", \".webp\"].some((ext) =>\n f.endsWith(ext)\n )\n ),\n stylesheets: cssFiles,\n },\n\n external: [\"react\", \"react-dom\", \"@onexapis/core\"],\n\n source: {\n sections: sectionFiles,\n blocks: blockFiles,\n schemas: schemaFiles,\n hasThemeConfig,\n },\n\n // Section data requirements for server-side prefetching (keyed by section type)\n dataRequirements,\n };\n\n await fs.writeFile(\n path.join(outputDir, \"manifest.json\"),\n JSON.stringify(manifest, null, 2)\n );\n}\n\n/**\n * Compile a standalone theme using esbuild.\n * Produces ESM bundles with React/core externalized to globals.\n *\n * @returns true if build succeeded\n */\nexport async function compileStandaloneTheme(\n themePath: string,\n themeName: string\n): Promise<boolean> {\n const outputDir = path.join(themePath, \"dist\");\n\n // Detect entry point: bundle-entry.ts preferred, fallback to index.ts\n const bundleEntry = path.join(themePath, \"bundle-entry.ts\");\n const indexEntry = path.join(themePath, \"index.ts\");\n\n let entryPoint = indexEntry;\n try {\n await fs.access(bundleEntry);\n entryPoint = bundleEntry;\n } catch {\n // Use index.ts\n }\n\n // Write process shim to a temp file (esbuild inject requires a file path)\n const shimPath = path.join(outputDir, \".process-shim.js\");\n await fs.mkdir(outputDir, { recursive: true });\n await fs.writeFile(shimPath, PROCESS_SHIM);\n\n const buildOptions: esbuild.BuildOptions = {\n entryPoints: [entryPoint],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outdir: outputDir,\n splitting: false,\n chunkNames: \"[name]-[hash]\",\n banner: {\n js: '\"use client\";',\n },\n\n plugins: [\n reactGlobalPlugin,\n reactQueryGlobalPlugin,\n createCoreGlobalPlugin(themePath),\n createThemeDepsStubPlugin(themePath),\n ],\n\n external: [],\n\n alias: {\n events: \"events/\",\n buffer: \"buffer/\",\n },\n\n inject: [shimPath],\n\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"production\"),\n global: \"globalThis\",\n },\n\n minify: true,\n sourcemap: true,\n logLevel: \"warning\",\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n\n loader: {\n \".tsx\": \"tsx\",\n \".ts\": \"ts\",\n \".jpg\": \"file\",\n \".jpeg\": \"file\",\n \".png\": \"file\",\n \".gif\": \"file\",\n \".svg\": \"file\",\n \".webp\": \"file\",\n },\n\n assetNames: \"assets/[name]-[hash]\",\n publicPath: \"./\",\n metafile: true,\n };\n\n try {\n const result = await esbuild.build(buildOptions);\n\n // Clean up temp shim file\n try {\n await fs.unlink(shimPath);\n } catch {\n // Ignore\n }\n\n // Content-hash the entry point\n await contentHashEntry(outputDir);\n\n // Copy static assets (logos, banners, etc.) into dist/theme-assets/\n // so they are included in the published bundle zip.\n // Theme settings reference these as /assets/<themeId>/path.\n const themeAssetsDir = path.join(themePath, \"assets\");\n const distThemeAssets = path.join(outputDir, \"theme-assets\");\n try {\n await fs.access(themeAssetsDir);\n await fs.cp(themeAssetsDir, distThemeAssets, { recursive: true });\n logger.info(\"Copied static assets to dist/theme-assets/\");\n } catch {\n // No assets directory — skip\n }\n\n // Generate manifest\n await generateManifest(themeName, themePath, outputDir);\n\n // Generate schemas.json + asset-manifest.json for the publish-time diff gate.\n // Both ship inside bundle.zip so the next publish can fetch them to detect\n // breaking changes, renames, and defaults-only drift against this version.\n await writeGateManifests(themePath, outputDir);\n\n // Generate theme-data.json for server-side fallback\n await generateThemeData(themePath, outputDir, themeName);\n\n // Generate bundle.css with all Tailwind classes used by the theme\n // This is injected into the editor preview iframe so it matches the storefront\n await generateThemeCSS(themePath, outputDir);\n\n // Log bundle analysis\n if (result.metafile) {\n const outputs = result.metafile.outputs;\n let totalSize = 0;\n for (const output of Object.values(outputs)) {\n totalSize += output.bytes;\n }\n const totalKB = (totalSize / 1024).toFixed(2);\n logger.info(`Bundle size: ${totalKB} KB`);\n }\n\n return true;\n } catch (error) {\n // Clean up temp shim file on failure\n try {\n await fs.unlink(shimPath);\n } catch {\n // Ignore\n }\n\n logger.error(`esbuild compilation failed: ${error}`);\n return false;\n }\n}\n\n/**\n * Compile standalone theme in dev mode with incremental rebuilds.\n * Differences from production compileStandaloneTheme:\n * - Uses esbuild.context() for incremental rebuilds\n * - No minification, no content-hash (stable bundle-entry.js filename)\n * - Returns the build context for subsequent rebuilds\n */\nexport async function compileStandaloneThemeDev(\n themePath: string,\n themeName: string\n): Promise<{ context: esbuild.BuildContext; outputDir: string }> {\n const outputDir = path.join(themePath, \"dist\");\n\n // Detect entry point (same as production build)\n const bundleEntry = path.join(themePath, \"bundle-entry.ts\");\n const indexEntry = path.join(themePath, \"index.ts\");\n let entryPoint = indexEntry;\n try {\n await fs.access(bundleEntry);\n entryPoint = bundleEntry;\n } catch {\n // Use index.ts\n }\n\n // Write process shim\n const shimPath = path.join(outputDir, \".process-shim.js\");\n await fs.mkdir(outputDir, { recursive: true });\n await fs.writeFile(shimPath, PROCESS_SHIM);\n\n const buildOptions: esbuild.BuildOptions = {\n entryPoints: [entryPoint],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outdir: outputDir,\n splitting: false,\n banner: {\n js: '\"use client\";',\n },\n\n plugins: [\n reactGlobalPlugin,\n reactQueryGlobalPlugin,\n createCoreGlobalPlugin(themePath),\n createThemeDepsStubPlugin(themePath),\n ],\n external: [],\n\n alias: {\n events: \"events/\",\n buffer: \"buffer/\",\n },\n\n inject: [shimPath],\n\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"development\"),\n global: \"globalThis\",\n },\n\n minify: false,\n sourcemap: true,\n logLevel: \"warning\",\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n\n loader: {\n \".tsx\": \"tsx\",\n \".ts\": \"ts\",\n \".jpg\": \"file\",\n \".jpeg\": \"file\",\n \".png\": \"file\",\n \".gif\": \"file\",\n \".svg\": \"file\",\n \".webp\": \"file\",\n },\n\n assetNames: \"assets/[name]-[hash]\",\n publicPath: \"./\",\n metafile: true,\n };\n\n const context = await esbuild.context(buildOptions);\n\n // Initial build\n await context.rebuild();\n\n // NOTE: Do NOT delete shimPath here — incremental rebuilds need it.\n // It will be cleaned up when context.dispose() is called.\n\n // Generate manifest (no content-hash step for dev)\n await generateManifest(themeName, themePath, outputDir);\n\n // Generate theme-data.json for server-side fallback\n await generateThemeData(themePath, outputDir, themeName);\n\n return { context, outputDir };\n}\n\n/**\n * Compile the preview runtime (React + @onexapis/core bundled in).\n * One-time compilation on dev server startup.\n * React and core are bundled INTO the output (not externalized) because\n * the preview runtime IS the host that provides these globals.\n */\nexport async function compilePreviewRuntime(\n themePath: string\n): Promise<string> {\n const outputDir = path.join(themePath, \"dist\");\n await fs.mkdir(outputDir, { recursive: true });\n\n const outputPath = path.join(outputDir, \"preview-runtime.js\");\n\n // Resolve the preview-app.tsx source from CLI package\n // In dev: src/preview/preview-app.tsx\n // In dist: preview/preview-app.tsx (copied by tsup config)\n const locations = [\n path.join(__dirname, \"..\", \"preview\", \"preview-app.tsx\"),\n path.join(__dirname, \"preview\", \"preview-app.tsx\"),\n path.join(__dirname, \"..\", \"..\", \"src\", \"preview\", \"preview-app.tsx\"),\n ];\n\n let previewEntryPath: string | null = null;\n for (const loc of locations) {\n try {\n await fs.access(loc);\n previewEntryPath = loc;\n break;\n } catch {\n // Try next location\n }\n }\n\n if (!previewEntryPath) {\n throw new Error(\n `Preview app source not found. Searched:\\n${locations.join(\"\\n\")}`\n );\n }\n\n // NOTE: Do NOT redirect @onexapis/core resolution to the theme's node_modules here.\n // Doing so would cause @onexapis/core's internal React imports to resolve from\n // dai-phuoc-land/node_modules/react (a separate install) while preview-app.tsx\n // resolves React from core-web-merging/node_modules/react — two React instances →\n // \"Invalid hook call\" error. The correct approach is to keep @onexapis/core\n // resolution in the CLI's node_modules, which is kept in sync via `pnpm install`.\n\n // Plugin to stub out server-only packages that leak from @onexapis/core chunks\n const serverStubPlugin: Plugin = {\n name: \"server-stub\",\n setup(build) {\n // Stub server-only marker package\n build.onResolve({ filter: /^server-only$/ }, () => ({\n path: \"server-only\",\n namespace: \"server-stub\",\n }));\n build.onLoad({ filter: /.*/, namespace: \"server-stub\" }, () => ({\n contents: \"// server-only stub for browser\",\n loader: \"js\",\n }));\n\n // Stub Node.js built-ins that leak from server chunks\n const nodeBuiltins = [\n \"fs\",\n \"fs/promises\",\n \"path\",\n \"os\",\n \"crypto\",\n \"stream\",\n \"url\",\n \"http\",\n \"https\",\n \"net\",\n \"tls\",\n \"child_process\",\n \"util\",\n \"events\",\n \"buffer\",\n \"querystring\",\n \"zlib\",\n ];\n for (const mod of nodeBuiltins) {\n build.onResolve(\n { filter: new RegExp(`^${mod.replace(\"/\", \"\\\\/\")}$`) },\n () => ({\n path: mod,\n namespace: \"node-stub\",\n })\n );\n }\n build.onLoad({ filter: /.*/, namespace: \"node-stub\" }, (args) => {\n const stubs: Record<string, string> = {\n events:\n \"export class EventEmitter { on(){return this} off(){return this} emit(){return false} addListener(){return this} removeListener(){return this} } export default { EventEmitter };\",\n path: \"export function join(){return ''} export function resolve(){return ''} export function dirname(){return ''} export function basename(){return ''} export function extname(){return ''} export default {};\",\n fs: \"export const promises = {}; export function readFileSync(){return ''} export function existsSync(){return false} export default {};\",\n };\n return {\n contents: stubs[args.path] || \"export default {};\",\n loader: \"js\",\n };\n });\n\n // Stub optional UI dependencies that may not be installed in standalone themes.\n // First try to resolve normally; only stub if the package is missing.\n const lucideIconNames = new Set<string>();\n let lucideScanned = false;\n build.onResolve({ filter: /^lucide-react/ }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n return { path: args.path, namespace: \"lucide-stub\" };\n });\n build.onLoad({ filter: /.*/, namespace: \"lucide-stub\" }, async () => {\n // Dynamically scan @onexapis/core source for lucide-react imports\n if (!lucideScanned) {\n lucideScanned = true;\n // Try multiple locations to find @onexapis/core source\n const coreSrcCandidates = [\n path.join(themePath, \"node_modules\", \"@onexapis\", \"core\", \"src\"),\n path.join(themePath, \"..\", \"..\", \"packages\", \"core\", \"src\"), // monorepo sibling\n path.join(\n __dirname,\n \"..\",\n \"..\",\n \"..\",\n \"..\",\n \"packages\",\n \"core\",\n \"src\"\n ), // from CLI src\n ];\n let coreSourceDir: string | null = null;\n for (const candidate of coreSrcCandidates) {\n try {\n await fs.access(candidate);\n coreSourceDir = candidate;\n break;\n } catch {}\n }\n if (coreSourceDir) {\n try {\n const scanned = await scanImportsFromPackage(\n coreSourceDir,\n \"lucide-react\"\n );\n for (const names of Object.values(scanned)) {\n for (const name of names) lucideIconNames.add(name);\n }\n } catch {}\n } else {\n // No source dir found (e.g. global install) — scan core dist .mjs files\n const coreDistCandidates: string[] = [\n path.join(themePath, \"node_modules\", \"@onexapis\", \"core\", \"dist\"),\n ];\n const resolvedDist = await resolveNodeModulesFile(\n __dirname,\n path.join(\"@onexapis\", \"core\", \"dist\")\n );\n if (resolvedDist) coreDistCandidates.push(resolvedDist);\n\n for (const candidate of coreDistCandidates) {\n try {\n await fs.access(candidate);\n const mjsFiles = await glob(\"*.mjs\", { cwd: candidate });\n const importRegex =\n /import\\s*\\{([^}]+)\\}\\s*from\\s*[\"']lucide-react[\"']/g;\n for (const file of mjsFiles) {\n const content = await fs.readFile(\n path.join(candidate, file),\n \"utf-8\"\n );\n for (const match of content.matchAll(importRegex)) {\n for (const name of match[1].split(\",\")) {\n const original = name\n .trim()\n .split(/\\s+as\\s+/)[0]\n .trim();\n if (original && !original.startsWith(\"type \")) {\n lucideIconNames.add(original);\n }\n }\n }\n }\n break; // found and scanned dist dir\n } catch {}\n }\n }\n // Also scan theme source files\n try {\n const scanned = await scanImportsFromPackage(\n themePath,\n \"lucide-react\"\n );\n for (const names of Object.values(scanned)) {\n for (const name of names) lucideIconNames.add(name);\n }\n } catch {}\n }\n\n const iconExports = [...lucideIconNames]\n .map((n) => `icon as ${n}`)\n .join(\", \");\n return {\n contents: `\nconst icon = (props) => null;\nexport { ${iconExports} };\nexport default new Proxy({}, { get: (_, name) => name === '__esModule' ? true : icon });\n `.trim(),\n loader: \"jsx\",\n };\n });\n\n build.onResolve({ filter: /^framer-motion/ }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n // Try resolving from theme directory first\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n // Try resolving via createRequire (works in bundled CLI / monorepo)\n try {\n const req = createRequire(import.meta.url || __filename);\n const cjsPath = req.resolve(\"framer-motion\");\n // Navigate to package root and use ESM entry for browser bundling\n const pkgDir = cjsPath.replace(/[/\\\\]dist[/\\\\].*$/, \"\");\n const esmEntry = path.join(pkgDir, \"dist\", \"es\", \"index.mjs\");\n const { existsSync } = await import(\"fs\");\n if (existsSync(esmEntry)) {\n return { path: esmEntry, namespace: \"file\" };\n }\n // Fallback: use the resolved path as-is\n return { path: cjsPath, namespace: \"file\" };\n } catch {}\n return { path: args.path, namespace: \"motion-stub\" };\n });\n build.onLoad({ filter: /.*/, namespace: \"motion-stub\" }, () => ({\n contents: `\nimport React from 'react';\nconst MotionComponent = React.forwardRef((props, ref) => {\n const { initial, animate, exit, variants, transition, whileInView, whileHover, whileTap, viewport, onAnimationComplete, layout, layoutId, style, className, ...rest } = props;\n return React.createElement(rest.as || 'div', { ref, style, className, ...rest }, rest.children);\n});\nconst handler = { get: (_, name) => {\n if (name === '__esModule') return true;\n if (name === 'create') return () => new Proxy({}, handler);\n return MotionComponent;\n}};\nexport const motion = new Proxy({}, handler);\nexport const AnimatePresence = (props) => props.children || null;\nexport const useInView = () => true;\nexport const useAnimation = () => ({ start: () => {}, stop: () => {}, set: () => {} });\nexport const useMotionValue = (v) => ({ get: () => v, set: () => {}, onChange: () => () => {} });\nexport const useTransform = (v) => v;\nexport const useScroll = () => ({ scrollY: { get: () => 0, onChange: () => () => {} }, scrollYProgress: { get: () => 0, onChange: () => () => {} } });\nexport default { motion, AnimatePresence };\n `.trim(),\n loader: \"jsx\",\n }));\n\n // Stub Next.js modules (not installed in standalone themes)\n build.onResolve({ filter: /^next\\// }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n return { path: args.path, namespace: \"next-stub\" };\n });\n build.onLoad({ filter: /.*/, namespace: \"next-stub\" }, (args) => {\n const stubs: Record<string, string> = {\n \"next/image\": `\nimport React from 'react';\nconst Image = React.forwardRef((props, ref) => {\n const { src, alt, width, height, fill, priority, sizes, quality, placeholder, blurDataURL, onLoad, onError, style, className, ...rest } = props;\n const imgSrc = typeof src === 'object' ? src.src : src;\n const fillStyle = fill ? { position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: style?.objectFit || 'cover', display: 'block' } : {};\n const mergedStyle = { ...fillStyle, ...style };\n return React.createElement('img', {\n ref,\n src: imgSrc,\n alt,\n width: fill ? undefined : width,\n height: fill ? undefined : height,\n loading: priority ? 'eager' : 'lazy',\n style: Object.keys(mergedStyle).length > 0 ? mergedStyle : undefined,\n className,\n onLoad,\n onError,\n ...rest,\n });\n});\nexport default Image;\n `,\n \"next/link\": `\nconst Link = ({ href, children, ...rest }) => React.createElement('a', { href, ...rest }, children);\nimport React from 'react';\nexport default Link;\n `,\n \"next/navigation\": `\nexport function useRouter() { return { push(u){window.location.href=u}, replace(u){window.location.href=u}, back(){window.history.back()}, forward(){window.history.forward()}, refresh(){window.location.reload()}, prefetch(){} }; }\nexport function usePathname() { return window.location.pathname; }\nexport function useSearchParams() { return new URLSearchParams(window.location.search); }\nexport function useParams() { return {}; }\nexport function redirect(url) { window.location.href = url; }\nexport function notFound() { throw new Error('Not Found'); }\n `,\n \"next/headers\": `\nexport function cookies() { return { get(){}, getAll(){ return []; }, set(){}, delete(){}, has(){ return false; } }; }\nexport function headers() { return new Headers(); }\n `,\n };\n return {\n contents: stubs[args.path] || \"export default {};\",\n loader: \"jsx\",\n resolveDir: themePath,\n };\n });\n },\n };\n\n // Write process shim for preview runtime (CJS code paths may reference `process`)\n const shimPath = path.join(outputDir, \".process-shim-preview.js\");\n await fs.writeFile(shimPath, PROCESS_SHIM);\n\n await esbuild.build({\n entryPoints: [previewEntryPath],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outfile: outputPath,\n // Bundle React + core INTO the output (NOT externalized)\n external: [],\n plugins: [serverStubPlugin],\n inject: [shimPath],\n minify: false,\n sourcemap: true,\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"development\"),\n \"process.env.NEXT_PUBLIC_API_URL\": JSON.stringify(\n process.env.NEXT_PUBLIC_API_URL || \"\"\n ),\n \"process.env.NEXT_PUBLIC_COMPANY_ID\": JSON.stringify(\n process.env.NEXT_PUBLIC_COMPANY_ID || \"\"\n ),\n global: \"globalThis\",\n },\n loader: { \".tsx\": \"tsx\", \".ts\": \"ts\" },\n // Force CJS resolution to avoid sideEffects:false dropping ESM chunk imports\n conditions: [\"require\", \"default\"],\n mainFields: [\"main\"],\n logOverride: {\n \"ignored-bare-import\": \"silent\",\n },\n });\n\n // Clean up temp shim file\n try {\n await fs.unlink(shimPath);\n } catch {\n // Ignore\n }\n\n return outputPath;\n}\n","import path from \"path\";\nimport fs from \"fs\";\nimport { execSync } from \"child_process\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport {\n validateThemeName,\n toKebabCase,\n toPascalCase,\n} from \"../utils/validators\";\nimport {\n writeFile,\n copyTemplate,\n detectPackageManager,\n installDependencies,\n} from \"../utils/file-helpers\";\nimport { getApiUrl, type Env } from \"../utils/cli-auth\";\n\ninterface InitOptions {\n template?: string;\n noInstall?: boolean;\n git?: boolean;\n yes?: boolean;\n env?: Env;\n}\n\nexport async function initCommand(\n projectName?: string,\n options: InitOptions = {}\n): Promise<void> {\n logger.header(\"Create New OneX Theme Project\");\n\n // Validate project name or prompt for it\n let name: string;\n\n if (!projectName) {\n const { inputName } = await inquirer.prompt([\n {\n type: \"input\",\n name: \"inputName\",\n message: \"Project name (kebab-case):\",\n validate: (input: string) => {\n if (!input) return \"Project name is required\";\n const kebabName = toKebabCase(input);\n if (!validateThemeName(kebabName)) {\n return \"Invalid project name. Use lowercase letters, numbers, and hyphens only.\";\n }\n if (fs.existsSync(path.join(process.cwd(), kebabName))) {\n return `Directory \"${kebabName}\" already exists`;\n }\n return true;\n },\n },\n ]);\n name = toKebabCase(inputName);\n } else {\n name = toKebabCase(projectName);\n }\n\n // Check if directory already exists\n const projectPath = path.join(process.cwd(), name);\n if (fs.existsSync(projectPath)) {\n logger.error(`Directory \"${name}\" already exists.`);\n process.exit(1);\n }\n\n // Check if theme ID is already registered (non-blocking — works offline)\n if (!options.yes) {\n try {\n const apiUrl = getApiUrl(options.env ?? \"dev\");\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 3000);\n const response = await fetch(\n `${apiUrl}/website-api/themes/${encodeURIComponent(name)}/exists`,\n { signal: controller.signal }\n );\n clearTimeout(timeout);\n if (response.ok) {\n const data = await response.json();\n const body = data.statusCode ? data.body : data;\n if (body.exists && body.owner === \"other\") {\n logger.warning(\n `Theme ID \"${name}\" is already registered by another developer.\\n` +\n ` You can still create this locally, but publishing will fail.\\n` +\n ` Consider using a different name.`\n );\n const { proceed } = await inquirer.prompt([\n {\n type: \"confirm\",\n name: \"proceed\",\n message: \"Continue anyway?\",\n default: false,\n },\n ]);\n if (!proceed) {\n process.exit(0);\n }\n }\n }\n } catch {\n // Offline or API unreachable — skip check silently\n }\n }\n\n // Skip prompts if --yes flag is provided\n let displayName: string;\n let description: string;\n let author: string;\n let template: string;\n\n if (options.yes) {\n displayName = toPascalCase(name)\n .replace(/([A-Z])/g, \" $1\")\n .trim();\n description = \"A custom OneX theme\";\n author = \"\";\n template = options.template || \"default\";\n } else {\n const answers = await inquirer.prompt([\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name:\",\n default: toPascalCase(name)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Theme description:\",\n default: \"A custom OneX theme\",\n },\n {\n type: \"input\",\n name: \"author\",\n message: \"Author name:\",\n default: \"\",\n },\n {\n type: \"list\",\n name: \"template\",\n message: \"Template to use:\",\n choices: [\n { name: \"Default (basic theme structure)\", value: \"default\" },\n { name: \"Minimal (bare minimum)\", value: \"minimal\" },\n ],\n default: options.template || \"default\",\n },\n ]);\n\n displayName = answers.displayName;\n description = answers.description;\n author = answers.author;\n template = answers.template;\n }\n\n const data = {\n projectName: name,\n themeName: name,\n themeNamePascal: toPascalCase(name),\n displayName,\n description,\n author,\n template,\n };\n\n // Prompt for Figma API key (optional, skip if --yes)\n let figmaApiKey = \"\";\n if (!options.yes) {\n const figmaAnswer = await inquirer.prompt([\n {\n type: \"password\",\n name: \"figmaApiKey\",\n message:\n \"Figma API Key (optional, for Figma-to-code MCP — press Enter to skip):\",\n },\n ]);\n figmaApiKey = figmaAnswer.figmaApiKey || \"\";\n }\n\n logger.startSpinner(\"Creating project structure...\");\n\n try {\n // Create project directory\n fs.mkdirSync(projectPath, { recursive: true });\n\n // Copy template files (real theme source — no EJS)\n await copyTemplate(template, projectPath, data);\n\n // Rename theme ID/name in copied files\n await renameThemeInFiles(\n projectPath,\n name,\n displayName,\n description,\n author\n );\n\n // Patch .mcp.json with Figma API key (or remove figma server if no key)\n const mcpJsonPath = path.join(projectPath, \".mcp.json\");\n if (fs.existsSync(mcpJsonPath)) {\n let mcpContent = fs.readFileSync(mcpJsonPath, \"utf-8\");\n if (figmaApiKey) {\n mcpContent = mcpContent.replace(\"__FIGMA_API_KEY__\", figmaApiKey);\n } else {\n // Remove figma server entry if no key provided\n try {\n const mcpJson = JSON.parse(mcpContent);\n delete mcpJson.mcpServers.figma;\n mcpContent = JSON.stringify(mcpJson, null, 2) + \"\\n\";\n } catch {}\n }\n fs.writeFileSync(mcpJsonPath, mcpContent, \"utf-8\");\n }\n\n logger.stopSpinner(true, \"Project structure created!\");\n\n // Initialize git if requested\n if (options.git) {\n logger.startSpinner(\"Initializing git repository...\");\n try {\n execSync(\"git init\", { cwd: projectPath, stdio: \"ignore\" });\n execSync(\"git add .\", { cwd: projectPath, stdio: \"ignore\" });\n execSync('git commit -m \"Initial commit from onexthm init\"', {\n cwd: projectPath,\n stdio: \"ignore\",\n });\n logger.stopSpinner(true, \"Git repository initialized!\");\n } catch {\n logger.stopSpinner(false, \"Failed to initialize git\");\n }\n }\n\n // Install dependencies\n if (!options.noInstall) {\n logger.newLine();\n const packageManager = detectPackageManager();\n logger.startSpinner(`Installing dependencies with ${packageManager}...`);\n try {\n await installDependencies(projectPath, packageManager);\n logger.stopSpinner(true, \"Dependencies installed!\");\n } catch {\n logger.stopSpinner(false, \"Failed to install dependencies\");\n logger.info(\n \"You can install dependencies manually by running: cd \" +\n name +\n \" && npm install\"\n );\n }\n }\n\n // Print success message and next steps\n logger.newLine();\n logger.section(\"Success! 🎉\");\n logger.newLine();\n logger.info(`Created OneX theme project at: ${projectPath}`);\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(` cd ${name}`);\n if (options.noInstall) {\n logger.log(` npm install`);\n }\n logger.log(` npm run build # Build your theme`);\n logger.log(` npm run dev # Start development mode`);\n logger.newLine();\n logger.section(\"Theme structure:\");\n logger.log(\" bundle-entry.ts - Theme manifest and exports\");\n logger.log(\n \" theme.config.ts - Design tokens (colors, typography, etc.)\"\n );\n logger.log(\" theme.layout.ts - Header and footer configuration\");\n logger.log(\" sections/ - Custom sections for your theme\");\n logger.log(\" pages/ - Page configurations\");\n logger.log(\" CLAUDE.md - AI assistant context\");\n logger.newLine();\n logger.success(`Happy theming! 🎨`);\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create project\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n // Clean up on failure\n if (fs.existsSync(projectPath)) {\n fs.rmSync(projectPath, { recursive: true, force: true });\n }\n process.exit(1);\n }\n}\n\n/**\n * Rename theme ID/name in copied template files.\n * Replaces \"simple\"/\"My Simple Theme\" with the user's theme name.\n */\nasync function renameThemeInFiles(\n projectPath: string,\n themeName: string,\n displayName: string,\n description: string,\n author: string\n): Promise<void> {\n // Only rename in metadata files — NOT in sections/pages (section type IDs must stay)\n // theme.config.ts — update id, name, description\n const configPath = path.join(projectPath, \"theme.config.ts\");\n if (fs.existsSync(configPath)) {\n let content = fs.readFileSync(configPath, \"utf-8\");\n // Keep id as \"my-simple\" — section types depend on it for prefix stripping\n content = content.replace(\n /name: \"My Simple Theme\"/,\n `name: \"${displayName}\"`\n );\n content = content.replace(\n /description: \".*?\"/,\n `description: \"${description}\"`\n );\n fs.writeFileSync(configPath, content, \"utf-8\");\n }\n\n // package.json — update name, description\n const pkgPath = path.join(projectPath, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n let content = fs.readFileSync(pkgPath, \"utf-8\");\n content = content.replace(\n /@onex-themes\\/my-simple/g,\n `@onex-themes/${themeName}`\n );\n content = content.replace(\n /\"description\": \".*?\"/,\n `\"description\": \"${description}\"`\n );\n fs.writeFileSync(pkgPath, content, \"utf-8\");\n }\n}\n\nfunction toCamelCase(str: string): string {\n return str.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n}\n\n// Legacy generator functions (kept for backward compat, unused with new template)\nfunction generateManifest(data: {\n themeName: string;\n displayName: string;\n description: string;\n author: string;\n}): string {\n return `import type { ThemeExport } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Theme Manifest\n * ${data.description}\n */\nexport const manifest: ThemeExport = {\n id: \"${data.themeName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n version: \"1.0.0\",\n author: \"${data.author}\",\n\n // Theme configuration\n config: () => import(\"./config\").then((m) => m.themeConfig),\n\n // Theme layout (header/footer sections)\n layout: () => import(\"./layout\").then((m) => m.themeLayout),\n\n // Available sections in this theme\n sections: {\n // Example: hero: () => import(\"./sections/hero\").then((m) => m.heroSchema),\n },\n\n // Available blocks in this theme\n blocks: {\n // Example: productCard: () => import(\"./blocks/product-card\").then((m) => m.productCardDefinition),\n },\n\n // Default pages\n pages: {\n home: () => import(\"./pages/home\").then((m) => m.homePageConfig),\n },\n\n // Supported page types\n supportedPageTypes: [\"home\", \"about\", \"contact\", \"custom\"],\n\n // Preview image (optional)\n preview: undefined,\n\n // Tags for categorization (optional)\n tags: [\"custom\"],\n};\n\nexport default manifest;\n`;\n}\n\nfunction generateThemeConfig(data: {\n themeName: string;\n displayName: string;\n}): string {\n return `import type { ThemeConfig } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Theme Configuration\n * Design tokens: colors, typography, spacing, etc.\n */\nexport const themeConfig: ThemeConfig = {\n // Color palette\n colors: {\n primary: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n },\n secondary: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n },\n accent: {\n 50: \"#fdf4ff\",\n 100: \"#fae8ff\",\n 200: \"#f5d0fe\",\n 300: \"#f0abfc\",\n 400: \"#e879f9\",\n 500: \"#d946ef\",\n 600: \"#c026d3\",\n 700: \"#a21caf\",\n 800: \"#86198f\",\n 900: \"#701a75\",\n },\n },\n\n // Typography\n typography: {\n fontFamily: {\n sans: [\"Inter\", \"system-ui\", \"sans-serif\"],\n serif: [\"Georgia\", \"serif\"],\n mono: [\"Monaco\", \"monospace\"],\n },\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n },\n },\n\n // Spacing\n spacing: {\n xs: \"0.5rem\",\n sm: \"1rem\",\n md: \"1.5rem\",\n lg: \"2rem\",\n xl: \"3rem\",\n \"2xl\": \"4rem\",\n \"3xl\": \"6rem\",\n \"4xl\": \"8rem\",\n },\n\n // Border radius\n borderRadius: {\n none: \"0\",\n sm: \"0.125rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n full: \"9999px\",\n },\n\n // Breakpoints\n breakpoints: {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n },\n};\n`;\n}\n\nfunction generateThemeLayout(data: { themeName: string }): string {\n return `import type { ThemeLayoutConfig } from \"@onexapis/core\";\n\n/**\n * ${data.themeName} Theme Layout\n * Define header and footer sections\n */\nexport const themeLayout: ThemeLayoutConfig = {\n // Header section configuration\n header: undefined,\n // Example:\n // header: {\n // type: \"header\",\n // template: \"default\",\n // enabled: true,\n // settings: {},\n // },\n\n // Footer section configuration\n footer: undefined,\n // Example:\n // footer: {\n // type: \"footer\",\n // template: \"default\",\n // enabled: true,\n // settings: {},\n // },\n};\n`;\n}\n\nfunction generateThemeIndex(data: {\n themeName: string;\n themeNamePascal: string;\n}): string {\n return `/**\n * ${data.themeNamePascal} Theme\n */\n\nexport { manifest as ${data.themeNamePascal}Manifest } from \"./manifest\";\nexport { themeConfig as ${data.themeNamePascal}Config } from \"./config\";\nexport { themeLayout as ${data.themeNamePascal}Layout } from \"./layout\";\n`;\n}\n\nfunction generateHomePage(data: { displayName: string }): string {\n return `import type { PageConfig } from \"@onexapis/core\";\n\n/**\n * Home Page Configuration\n */\nexport const homePageConfig: PageConfig = {\n type: \"home\",\n title: \"${data.displayName}\",\n description: \"Welcome to ${data.displayName}\",\n\n // SEO metadata\n seo: {\n title: \"${data.displayName} - Home\",\n description: \"Welcome to ${data.displayName}\",\n keywords: [],\n ogImage: undefined,\n },\n\n // Page sections\n sections: [\n // Add your sections here\n // Example:\n // {\n // id: \"hero-1\",\n // type: \"hero\",\n // template: \"default\",\n // order: 0,\n // enabled: true,\n // settings: {},\n // components: [],\n // blocks: [],\n // },\n ],\n};\n`;\n}\n","/**\n * Validation utilities for CLI inputs\n */\n\n/**\n * Validate component/section/block name\n * Must be kebab-case and alphanumeric\n */\nexport function validateName(name: string): boolean {\n return /^[a-z0-9]+(-[a-z0-9]+)*$/.test(name);\n}\n\n/**\n * Convert string to kebab-case\n */\nexport function toKebabCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n}\n\n/**\n * Convert string to PascalCase\n */\nexport function toPascalCase(str: string): string {\n return str\n .split(/[-_\\s]+/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(\"\");\n}\n\n/**\n * Convert string to camelCase\n */\nexport function toCamelCase(str: string): string {\n const pascal = toPascalCase(str);\n return pascal.charAt(0).toLowerCase() + pascal.slice(1);\n}\n\n/**\n * Validate theme name\n */\nexport function validateThemeName(name: string): boolean {\n return /^[a-z][a-z0-9-]*$/.test(name);\n}\n\n/**\n * Check if path exists\n */\nexport function pathExists(filePath: string): boolean {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const fs = require(\"fs-extra\");\n return fs.existsSync(filePath);\n}\n\n/**\n * Validate section category\n */\nexport function validateCategory(category: string): boolean {\n const validCategories = [\n \"headers\",\n \"heroes\",\n \"content\",\n \"features\",\n \"testimonials\",\n \"galleries\",\n \"cta\",\n \"footers\",\n \"ecommerce\",\n \"blog\",\n \"contact\",\n ];\n return validCategories.includes(category);\n}\n\n/**\n * Get valid categories\n */\nexport function getValidCategories(): string[] {\n return [\n \"headers\",\n \"heroes\",\n \"content\",\n \"features\",\n \"testimonials\",\n \"galleries\",\n \"cta\",\n \"footers\",\n \"ecommerce\",\n \"blog\",\n \"contact\",\n ];\n}\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport ejs from \"ejs\";\nimport { execSync } from \"child_process\";\nimport { logger } from \"./logger\";\n\n/**\n * Render a template file with EJS\n */\nexport async function renderTemplate(\n templatePath: string,\n data: Record<string, unknown>\n): Promise<string> {\n const template = await fs.readFile(templatePath, \"utf-8\");\n return ejs.render(template, data);\n}\n\n/**\n * Write a file with directory creation\n */\nexport async function writeFile(\n filePath: string,\n content: string\n): Promise<void> {\n await fs.ensureDir(path.dirname(filePath));\n await fs.writeFile(filePath, content, \"utf-8\");\n}\n\n/**\n * Get the templates directory\n * Works in both development and production (bundled) environments\n */\nexport function getTemplatesDir(): string {\n // Try common locations\n const locations = [\n path.join(__dirname, \"../../templates\"), // Development\n path.join(__dirname, \"../templates\"), // Production (dist/)\n path.join(process.cwd(), \"templates\"), // Fallback\n path.join(process.cwd(), \"packages/cli/templates\"), // Monorepo\n ];\n\n for (const location of locations) {\n if (fs.existsSync(location)) {\n return location;\n }\n }\n\n throw new Error(\"Templates directory not found\");\n}\n\n/**\n * Copy template directory\n */\nexport async function copyTemplate(\n templateName: string,\n targetDir: string,\n data: Record<string, unknown>\n): Promise<void> {\n // Get template directory from CLI package\n const templatesDir = getTemplatesDir();\n const templateDir = path.join(templatesDir, templateName);\n\n if (!fs.existsSync(templateDir)) {\n throw new Error(\n `Template \"${templateName}\" not found at ${templateDir}. Available templates: ${fs.readdirSync(templatesDir).join(\", \")}`\n );\n }\n\n await fs.ensureDir(targetDir);\n\n const files = await fs.readdir(templateDir);\n\n for (const file of files) {\n const templatePath = path.join(templateDir, file);\n const targetPath = path.join(targetDir, file);\n\n const stat = await fs.stat(templatePath);\n\n if (stat.isDirectory()) {\n // Recursively copy directories\n await copyTemplateDir(templatePath, targetPath, data);\n } else if (file.endsWith(\".ejs\")) {\n // Render EJS template\n const content = await renderTemplate(templatePath, data);\n const outputPath = targetPath.replace(/\\.ejs$/, \"\");\n await writeFile(outputPath, content);\n } else {\n // Copy file as-is\n await fs.copy(templatePath, targetPath);\n }\n }\n}\n\n/**\n * Internal helper to copy a template directory recursively\n */\nasync function copyTemplateDir(\n templateDir: string,\n targetDir: string,\n data: Record<string, unknown>\n): Promise<void> {\n await fs.ensureDir(targetDir);\n\n const files = await fs.readdir(templateDir);\n\n for (const file of files) {\n const templatePath = path.join(templateDir, file);\n const targetPath = path.join(targetDir, file);\n\n const stat = await fs.stat(templatePath);\n\n if (stat.isDirectory()) {\n await copyTemplateDir(templatePath, targetPath, data);\n } else if (file.endsWith(\".ejs\")) {\n // Render EJS template\n const content = await renderTemplate(templatePath, data);\n const outputPath = targetPath.replace(/\\.ejs$/, \"\");\n await writeFile(outputPath, content);\n } else {\n // Copy file as-is\n await fs.copy(templatePath, targetPath);\n }\n }\n}\n\n/**\n * Get project root directory\n */\nexport function getProjectRoot(): string {\n let currentDir = process.cwd();\n\n // Look for package.json with workspace config or themes directory\n while (currentDir !== path.parse(currentDir).root) {\n const packageJsonPath = path.join(currentDir, \"package.json\");\n\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = fs.readJsonSync(packageJsonPath);\n\n // Check if this is the root (has workspaces, src/themes, or themes)\n if (\n packageJson.workspaces ||\n fs.existsSync(path.join(currentDir, \"src/themes\")) ||\n fs.existsSync(path.join(currentDir, \"themes\"))\n ) {\n return currentDir;\n }\n }\n\n currentDir = path.dirname(currentDir);\n }\n\n return process.cwd();\n}\n\n/**\n * Get themes directory\n */\nexport function getThemesDir(): string {\n const root = getProjectRoot();\n if (fs.existsSync(path.join(root, \"themes\")))\n return path.join(root, \"themes\");\n if (fs.existsSync(path.join(root, \"src/themes\")))\n return path.join(root, \"src/themes\");\n // Standalone theme: parent dir acts as themes dir\n return path.dirname(root);\n}\n\n/**\n * Get features directory\n */\nexport function getFeaturesDir(): string {\n return path.join(getProjectRoot(), \"src/features\");\n}\n\n/**\n * Check if running in OneX project\n */\nexport function isOneXProject(): boolean {\n const root = getProjectRoot();\n return (\n fs.existsSync(path.join(root, \"themes\")) ||\n fs.existsSync(path.join(root, \"src/themes\")) ||\n fs.existsSync(path.join(root, \"theme.config.ts\")) ||\n fs.existsSync(path.join(root, \"bundle-entry.ts\"))\n );\n}\n\n/**\n * Ensure running in OneX project\n */\nexport function ensureOneXProject(): void {\n if (!isOneXProject()) {\n logger.error(\n \"Not in a OneX project. Please run this command from a OneX project root.\"\n );\n process.exit(1);\n }\n}\n\n/**\n * List available themes\n */\nexport function listThemes(): string[] {\n const themesDir = getThemesDir();\n\n if (!fs.existsSync(themesDir)) {\n return [];\n }\n\n return fs.readdirSync(themesDir).filter((name) => {\n const themePath = path.join(themesDir, name);\n return (\n fs.statSync(themePath).isDirectory() &&\n (fs.existsSync(path.join(themePath, \"theme.config.ts\")) ||\n fs.existsSync(path.join(themePath, \"bundle-entry.ts\")) ||\n fs.existsSync(path.join(themePath, \"manifest.ts\")))\n );\n });\n}\n\n/**\n * Check if theme exists\n */\nexport function themeExists(themeName: string): boolean {\n const themePath = path.join(getThemesDir(), themeName);\n return (\n fs.existsSync(themePath) &&\n (fs.existsSync(path.join(themePath, \"theme.config.ts\")) ||\n fs.existsSync(path.join(themePath, \"bundle-entry.ts\")) ||\n fs.existsSync(path.join(themePath, \"manifest.ts\")))\n );\n}\n\n/**\n * Detect package manager (npm, yarn, pnpm, bun)\n */\nexport function detectPackageManager(): \"npm\" | \"yarn\" | \"pnpm\" | \"bun\" {\n // Check if running with specific package manager\n const userAgent = process.env.npm_config_user_agent || \"\";\n\n if (userAgent.includes(\"pnpm\")) return \"pnpm\";\n if (userAgent.includes(\"yarn\")) return \"yarn\";\n if (userAgent.includes(\"bun\")) return \"bun\";\n\n // Check for lock files in cwd\n const cwd = process.cwd();\n if (fs.existsSync(path.join(cwd, \"pnpm-lock.yaml\"))) return \"pnpm\";\n if (fs.existsSync(path.join(cwd, \"yarn.lock\"))) return \"yarn\";\n if (fs.existsSync(path.join(cwd, \"bun.lockb\"))) return \"bun\";\n\n // Default to npm\n return \"npm\";\n}\n\n/**\n * Install dependencies in a directory\n */\nexport async function installDependencies(\n projectPath: string,\n packageManager: \"npm\" | \"yarn\" | \"pnpm\" | \"bun\" = \"npm\"\n): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n const installCmd =\n packageManager === \"yarn\" ? \"yarn\" : `${packageManager} install`;\n\n execSync(installCmd, {\n cwd: projectPath,\n stdio: \"inherit\",\n });\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n","/**\n * CLI Auth Utilities\n * Token storage, refresh, and API authentication for onexthm CLI.\n */\n\nimport fs from \"fs-extra\";\nimport path from \"path\";\nimport os from \"os\";\nimport crypto from \"crypto\";\n\nconst AUTH_DIR = path.join(os.homedir(), \".onexthm\");\n\n/** Supported target environments. */\nexport type Env = \"dev\" | \"staging\" | \"prod\";\n\n/** API base URLs per environment. */\nconst ENV_URLS: Record<Env, string> = {\n dev: \"https://platform-dev.onexeos.com\",\n staging: \"https://platform-staging.onexeos.com\",\n prod: \"https://platform-apis.onexeos.com\",\n};\n\n/**\n * Resolve the auth file path for a given environment.\n * Handles one-time migration: if the old auth.json exists and auth-dev.json\n * does not, the old file is renamed so existing dev sessions keep working.\n */\nfunction getAuthFile(env: Env = \"dev\"): string {\n const newFile = path.join(AUTH_DIR, `auth-${env}.json`);\n\n // Migrate legacy auth.json → auth-dev.json (runs once per machine)\n if (env === \"dev\") {\n const legacyFile = path.join(AUTH_DIR, \"auth.json\");\n if (fs.existsSync(legacyFile) && !fs.existsSync(newFile)) {\n try {\n fs.moveSync(legacyFile, newFile);\n } catch {\n // If move fails (e.g. cross-device), fall back to copy + delete\n try {\n fs.copySync(legacyFile, newFile);\n fs.removeSync(legacyFile);\n } catch {\n // Leave both files; new file will take precedence going forward\n }\n }\n }\n }\n\n return newFile;\n}\n\nexport interface AuthTokens {\n accessToken: string;\n idToken: string;\n refreshToken: string;\n expiresAt: number; // Unix timestamp (seconds)\n user: {\n email: string;\n name?: string;\n companyId?: string;\n userId?: string;\n };\n}\n\n/**\n * Get the Platform API base URL for a given environment.\n * ONEXTHM_API_URL always overrides — useful for local dev / custom staging.\n * Only ONEXTHM_API_URL is honoured — NEXT_PUBLIC_API_URL is a theme-facing\n * variable (storefront / preview) and must never bleed into CLI platform calls.\n */\nexport function getApiUrl(env: Env = \"dev\"): string {\n return process.env.ONEXTHM_API_URL || ENV_URLS[env];\n}\n\n/**\n * Save auth tokens to disk for the given environment.\n */\nexport async function saveAuthTokens(\n tokens: AuthTokens,\n env: Env = \"dev\"\n): Promise<void> {\n await fs.ensureDir(AUTH_DIR);\n\n const key = getMachineKey();\n const data = JSON.stringify(tokens);\n const encrypted = encrypt(data, key);\n\n await fs.writeFile(getAuthFile(env), encrypted, \"utf-8\");\n}\n\n/**\n * Load auth tokens from disk for the given environment.\n * Returns null if not logged in or file is unreadable.\n */\nexport function loadAuthTokens(env: Env = \"dev\"): AuthTokens | null {\n try {\n const file = getAuthFile(env);\n if (!fs.existsSync(file)) return null;\n\n const encrypted = fs.readFileSync(file, \"utf-8\");\n const key = getMachineKey();\n const data = decrypt(encrypted, key);\n\n return JSON.parse(data) as AuthTokens;\n } catch {\n return null;\n }\n}\n\n/**\n * Clear stored auth tokens for the given environment.\n */\nexport async function clearAuthTokens(env: Env = \"dev\"): Promise<void> {\n try {\n await fs.remove(getAuthFile(env));\n } catch {\n // Ignore if file doesn't exist\n }\n}\n\n/**\n * Check if tokens are expired (with 5-minute buffer so long operations\n * like large uploads don't race to the expiry boundary).\n */\nexport function isTokenExpired(tokens: AuthTokens): boolean {\n return Date.now() / 1000 > tokens.expiresAt - 300;\n}\n\n/**\n * Get valid tokens for the given environment — auto-refreshes if expired.\n */\nexport async function getValidTokens(\n env: Env = \"dev\"\n): Promise<AuthTokens | null> {\n const tokens = loadAuthTokens(env);\n if (!tokens) return null;\n\n if (!isTokenExpired(tokens)) return tokens;\n\n // Try to refresh\n try {\n const apiUrl = getApiUrl(env);\n const response = await fetch(`${apiUrl}/auth/refresh`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ refresh_token: tokens.refreshToken }),\n });\n\n if (!response.ok) {\n await clearAuthTokens(env);\n return null;\n }\n\n const data = await response.json();\n const body = data.statusCode ? data.body : data;\n\n if (!body.IdToken) {\n await clearAuthTokens(env);\n return null;\n }\n\n const refreshed: AuthTokens = {\n ...tokens,\n accessToken: body.AccessToken || tokens.accessToken,\n idToken: body.IdToken,\n expiresAt: Math.floor(Date.now() / 1000) + (body.ExpiresIn || 3600),\n };\n\n await saveAuthTokens(refreshed, env);\n return refreshed;\n } catch {\n await clearAuthTokens(env);\n return null;\n }\n}\n\n/**\n * Make an authenticated API request for the given environment.\n */\nexport async function authenticatedFetch(\n url: string,\n init?: RequestInit,\n env: Env = \"dev\"\n): Promise<Response> {\n const tokens = await getValidTokens(env);\n if (!tokens) {\n throw new Error(\n `Not logged in to ${env} environment. Run: onexthm login --env ${env}`\n );\n }\n\n const headers = new Headers(init?.headers);\n headers.set(\"Authorization\", `Bearer ${tokens.idToken}`);\n headers.set(\"Content-Type\", \"application/json\");\n\n return fetch(url, { ...init, headers });\n}\n\n// ─── Machine-specific encryption ─────────────────────────────────\n\nfunction getMachineKey(): Buffer {\n let seed: string;\n\n if (process.platform === \"darwin\") {\n seed = `onexthm:${os.hostname()}:${os.userInfo().username}`;\n } else if (process.platform === \"linux\") {\n try {\n seed = `onexthm:${fs.readFileSync(\"/etc/machine-id\", \"utf-8\").trim()}`;\n } catch {\n seed = `onexthm:${os.hostname()}:${os.userInfo().username}`;\n }\n } else {\n seed = `onexthm:${os.hostname()}:${os.userInfo().username}`;\n }\n\n return crypto.createHash(\"sha256\").update(seed).digest();\n}\n\nfunction encrypt(text: string, key: Buffer): string {\n const iv = crypto.randomBytes(16);\n const cipher = crypto.createCipheriv(\"aes-256-gcm\", key, iv);\n let encrypted = cipher.update(text, \"utf-8\", \"hex\");\n encrypted += cipher.final(\"hex\");\n const tag = cipher.getAuthTag();\n return `${iv.toString(\"hex\")}:${tag.toString(\"hex\")}:${encrypted}`;\n}\n\nfunction decrypt(text: string, key: Buffer): string {\n const [ivHex, tagHex, encrypted] = text.split(\":\");\n const iv = Buffer.from(ivHex, \"hex\");\n const tag = Buffer.from(tagHex, \"hex\");\n const decipher = crypto.createDecipheriv(\"aes-256-gcm\", key, iv);\n decipher.setAuthTag(tag);\n let decrypted = decipher.update(encrypted, \"hex\", \"utf-8\");\n decrypted += decipher.final(\"utf-8\");\n return decrypted;\n}\n\n/**\n * Parse JWT claims from an IdToken.\n */\nexport function parseJwtClaims(idToken: string): Record<string, unknown> {\n try {\n const payload = idToken.split(\".\")[1];\n const decoded = Buffer.from(payload, \"base64url\").toString(\"utf-8\");\n return JSON.parse(decoded);\n } catch {\n return {};\n }\n}\n","import path from \"path\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport {\n validateName,\n toKebabCase,\n toPascalCase,\n getValidCategories,\n} from \"../utils/validators\";\nimport fs from \"fs-extra\";\nimport {\n ensureOneXProject,\n getThemesDir,\n listThemes,\n themeExists,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateSectionOptions {\n theme?: string;\n category?: string;\n template?: string;\n}\n\nexport async function createSectionCommand(\n name: string,\n options: CreateSectionOptions\n): Promise<void> {\n logger.header(\"Create New Section\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Auto-detect theme in standalone theme directory\n if (!options.theme) {\n const isStandaloneTheme = [\"theme.config.ts\", \"bundle-entry.ts\"].some((f) =>\n fs.existsSync(path.join(process.cwd(), f))\n );\n if (isStandaloneTheme) {\n options.theme = path.basename(process.cwd());\n }\n }\n\n // Validate and normalize name\n const sectionName = toKebabCase(name);\n if (!validateName(sectionName)) {\n logger.error(\n `Invalid section name: ${sectionName}. Use kebab-case (e.g., hero, featured-products)`\n );\n process.exit(1);\n }\n\n // Prompt for missing options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"theme\",\n message: \"Which theme should this section belong to?\",\n choices: listThemes(),\n when: !options.theme,\n },\n {\n type: \"list\",\n name: \"category\",\n message: \"What category is this section?\",\n choices: getValidCategories(),\n when: !options.category,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this section:\",\n default: toPascalCase(sectionName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Section description:\",\n default: `${toPascalCase(sectionName)} section`,\n },\n {\n type: \"confirm\",\n name: \"createTemplate\",\n message: \"Create a default template variant?\",\n default: true,\n },\n ]);\n\n const themeName = options.theme || answers.theme;\n const category = options.category || answers.category;\n const displayName = answers.displayName;\n const description = answers.description;\n const createTemplate = answers.createTemplate;\n\n // Validate theme exists\n if (!themeExists(themeName)) {\n logger.error(`Theme \"${themeName}\" does not exist.`);\n process.exit(1);\n }\n\n // Prepare data for templates\n const data = {\n sectionName,\n sectionNamePascal: toPascalCase(sectionName),\n themeName,\n category,\n displayName,\n description,\n };\n\n logger.startSpinner(\"Creating section files...\");\n\n try {\n const themePath = path.join(getThemesDir(), themeName);\n const sectionPath = path.join(themePath, \"sections\", sectionName);\n\n // Create section schema file\n const schemaContent = generateSectionSchema(data);\n await writeFile(\n path.join(sectionPath, `${sectionName}.schema.ts`),\n schemaContent\n );\n\n // Create default template if requested\n if (createTemplate) {\n const templateContent = generateSectionTemplate(data);\n await writeFile(\n path.join(sectionPath, `${sectionName}-default.tsx`),\n templateContent\n );\n }\n\n // Create index file\n const indexContent = generateSectionIndex(data, createTemplate);\n await writeFile(path.join(sectionPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Section files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(sectionPath, `${sectionName}.schema.ts`))}`\n );\n if (createTemplate) {\n logger.log(\n ` 2. Edit template: ${path.relative(process.cwd(), path.join(sectionPath, `${sectionName}-default.tsx`))}`\n );\n }\n logger.log(\n ` 3. Add to theme manifest: ${path.relative(process.cwd(), path.join(themePath, \"manifest.ts\"))}`\n );\n logger.newLine();\n logger.success(\"Section created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create section\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateSectionSchema(data: {\n sectionName: string;\n sectionNamePascal: string;\n category: string;\n displayName: string;\n description: string;\n}): string {\n return `import type { SectionSchema } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Section Schema\n * ${data.description}\n */\nexport const ${data.sectionName}Schema: SectionSchema = {\n type: \"${data.sectionName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n category: \"${data.category}\",\n icon: \"layout\",\n\n // Available template variants\n templates: [\n {\n id: \"default\",\n name: \"Default\",\n description: \"Default ${data.sectionName} layout\",\n isDefault: true,\n },\n ],\n\n // Section-level settings\n settings: [\n {\n id: \"backgroundColor\",\n type: \"color\",\n label: \"Background Color\",\n category: \"style\",\n },\n {\n id: \"padding\",\n type: \"select\",\n label: \"Padding\",\n category: \"style\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n defaultValue: \"md\",\n },\n ],\n\n // Default settings values\n defaults: {\n backgroundColor: \"#ffffff\",\n padding: \"md\",\n },\n\n // Allowed blocks (optional)\n allowedBlocks: [],\n\n // Maximum number of instances on a page (optional)\n maxInstances: undefined,\n};\n`;\n}\n\nfunction generateSectionTemplate(data: {\n sectionName: string;\n sectionNamePascal: string;\n displayName: string;\n}): string {\n return `import React from \"react\";\nimport type { SectionComponentProps } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} - Default Template\n */\nexport function ${data.sectionNamePascal}Default({\n section,\n isEditing = false,\n}: SectionComponentProps) {\n const { settings = {} } = section;\n const backgroundColor = settings.backgroundColor as string || \"#ffffff\";\n const padding = settings.padding as string || \"md\";\n\n // Map padding values to Tailwind classes\n const paddingClasses = {\n none: \"\",\n sm: \"py-8\",\n md: \"py-16\",\n lg: \"py-24\",\n };\n\n return (\n <section\n className={\\`${data.sectionName}-section \\${paddingClasses[padding as keyof typeof paddingClasses] || paddingClasses.md}\\`}\n style={{ backgroundColor }}\n data-section-id={section.id}\n data-section-type={section.type}\n >\n <div className=\"container mx-auto px-4\">\n {/* TODO: Implement section content */}\n <div className=\"text-center\">\n <h2 className=\"text-3xl font-bold\">${data.displayName}</h2>\n <p className=\"mt-4 text-gray-600\">\n Start building your section here\n </p>\n </div>\n\n {/* Render blocks if any */}\n {section.blocks && section.blocks.length > 0 && (\n <div className=\"mt-8\">\n {/* TODO: Render blocks */}\n </div>\n )}\n\n {/* Render components if any */}\n {section.components && section.components.length > 0 && (\n <div className=\"mt-8\">\n {/* TODO: Render components */}\n </div>\n )}\n </div>\n </section>\n );\n}\n`;\n}\n\nfunction generateSectionIndex(\n data: { sectionName: string; sectionNamePascal: string },\n hasTemplate: boolean\n): string {\n return `/**\n * ${data.sectionNamePascal} Section\n */\n\nexport { ${data.sectionName}Schema } from \"./${data.sectionName}.schema\";\n${hasTemplate ? `export { ${data.sectionNamePascal}Default } from \"./${data.sectionName}-default\";` : \"\"}\n`;\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport { validateName, toKebabCase, toPascalCase } from \"../utils/validators\";\nimport {\n ensureOneXProject,\n getFeaturesDir,\n getThemesDir,\n listThemes,\n themeExists,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateBlockOptions {\n theme?: string;\n}\n\nexport async function createBlockCommand(\n name: string,\n options: CreateBlockOptions\n): Promise<void> {\n logger.header(\"Create New Block\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Auto-detect theme in standalone theme directory\n if (!options.theme) {\n const isStandaloneTheme = [\"theme.config.ts\", \"bundle-entry.ts\"].some((f) =>\n fs.existsSync(path.join(process.cwd(), f))\n );\n if (isStandaloneTheme) {\n options.theme = path.basename(process.cwd());\n }\n }\n\n // Validate and normalize name\n const blockName = toKebabCase(name);\n if (!validateName(blockName)) {\n logger.error(\n `Invalid block name: ${blockName}. Use kebab-case (e.g., product-card, testimonial-item)`\n );\n process.exit(1);\n }\n\n // Prompt for options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"scope\",\n message: \"Block scope:\",\n choices: [\n { name: \"Shared (available to all themes)\", value: \"shared\" },\n { name: \"Theme-specific\", value: \"theme\" },\n ],\n default: \"shared\",\n },\n {\n type: \"list\",\n name: \"theme\",\n message: \"Which theme?\",\n choices: listThemes(),\n when: (answers) => answers.scope === \"theme\" && !options.theme,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this block:\",\n default: toPascalCase(blockName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Block description:\",\n default: `${toPascalCase(blockName)} block`,\n },\n {\n type: \"confirm\",\n name: \"hasComponents\",\n message: \"Does this block contain components?\",\n default: true,\n },\n {\n type: \"confirm\",\n name: \"hasNestedBlocks\",\n message: \"Does this block support nested blocks?\",\n default: false,\n },\n ]);\n\n const scope = answers.scope;\n const themeName = options.theme || answers.theme;\n const displayName = answers.displayName;\n const description = answers.description;\n const hasComponents = answers.hasComponents;\n const hasNestedBlocks = answers.hasNestedBlocks;\n\n // Validate theme if theme-specific\n if (scope === \"theme\" && !themeExists(themeName)) {\n logger.error(`Theme \"${themeName}\" does not exist.`);\n process.exit(1);\n }\n\n // Prepare data for templates\n const data = {\n blockName,\n blockNamePascal: toPascalCase(blockName),\n displayName,\n description,\n hasComponents,\n hasNestedBlocks,\n scope,\n themeName,\n };\n\n logger.startSpinner(\"Creating block files...\");\n\n try {\n const blockPath =\n scope === \"shared\"\n ? path.join(getFeaturesDir(), \"blocks\", blockName)\n : path.join(getThemesDir(), themeName, \"blocks\", blockName);\n\n // Create block schema file\n const schemaContent = generateBlockSchema(data);\n await writeFile(\n path.join(blockPath, `${blockName}.schema.ts`),\n schemaContent\n );\n\n // Create block component file\n const componentContent = generateBlockComponent(data);\n await writeFile(path.join(blockPath, `${blockName}.tsx`), componentContent);\n\n // Create index file\n const indexContent = generateBlockIndex(data);\n await writeFile(path.join(blockPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Block files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(blockPath, `${blockName}.schema.ts`))}`\n );\n logger.log(\n ` 2. Edit component: ${path.relative(process.cwd(), path.join(blockPath, `${blockName}.tsx`))}`\n );\n logger.log(\n ` 3. Register in block registry: src/lib/registry/block-registry.ts`\n );\n logger.newLine();\n logger.success(\"Block created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create block\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateBlockSchema(data: {\n blockName: string;\n blockNamePascal: string;\n displayName: string;\n description: string;\n hasComponents: boolean;\n hasNestedBlocks: boolean;\n}): string {\n return `import type { BlockDefinition } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Block Schema\n * ${data.description}\n */\nexport const ${data.blockName}Definition: BlockDefinition = {\n type: \"${data.blockName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n icon: \"square\",\n\n // Block settings\n settings: [\n {\n id: \"title\",\n type: \"text\",\n label: \"Title\",\n category: \"content\",\n },\n {\n id: \"alignment\",\n type: \"select\",\n label: \"Alignment\",\n category: \"style\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n { label: \"Right\", value: \"right\" },\n ],\n defaultValue: \"left\",\n },\n ],\n\n // Default settings values\n defaults: {\n title: \"${data.displayName}\",\n alignment: \"left\",\n },\n\n ${data.hasComponents ? `// This block can contain components\\n allowsComponents: true,` : \"\"}\n ${data.hasNestedBlocks ? `// This block can contain nested blocks\\n allowsNestedBlocks: true,` : \"\"}\n};\n`;\n}\n\nfunction generateBlockComponent(data: {\n blockName: string;\n blockNamePascal: string;\n displayName: string;\n hasComponents: boolean;\n hasNestedBlocks: boolean;\n}): string {\n return `import React from \"react\";\nimport type { BlockComponentProps } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Block Component\n */\nexport function ${data.blockNamePascal}({\n block,\n isEditing = false,\n}: BlockComponentProps) {\n const { settings = {} } = block;\n const title = settings.title as string || \"${data.displayName}\";\n const alignment = settings.alignment as string || \"left\";\n\n const alignmentClasses = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n };\n\n return (\n <div\n className={\\`${data.blockName}-block \\${alignmentClasses[alignment as keyof typeof alignmentClasses]}\\`}\n data-block-id={block.id}\n data-block-type={block.type}\n >\n {title && <h3 className=\"text-xl font-semibold mb-4\">{title}</h3>}\n\n {/* TODO: Implement block content */}\n <div className=\"block-content\">\n <p className=\"text-gray-600\">Block content goes here</p>\n </div>\n\n ${\n data.hasComponents\n ? `{/* Render components if any */}\n {block.components && block.components.length > 0 && (\n <div className=\"block-components mt-4\">\n {/* TODO: Render components using ComponentRenderer */}\n </div>\n )}`\n : \"\"\n }\n\n ${\n data.hasNestedBlocks\n ? `{/* Render nested blocks if any */}\n {block.blocks && block.blocks.length > 0 && (\n <div className=\"nested-blocks mt-4\">\n {/* TODO: Render nested blocks using BlockRenderer */}\n </div>\n )}`\n : \"\"\n }\n </div>\n );\n}\n`;\n}\n\nfunction generateBlockIndex(data: {\n blockName: string;\n blockNamePascal: string;\n}): string {\n return `/**\n * ${data.blockNamePascal} Block\n */\n\nexport { ${data.blockName}Definition } from \"./${data.blockName}.schema\";\nexport { ${data.blockNamePascal} } from \"./${data.blockName}\";\n`;\n}\n","import path from \"path\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport { validateName, toKebabCase, toPascalCase } from \"../utils/validators\";\nimport {\n ensureOneXProject,\n getFeaturesDir,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateComponentOptions {\n type?: string;\n}\n\nexport async function createComponentCommand(\n name: string,\n options: CreateComponentOptions\n): Promise<void> {\n logger.header(\"Create New Component\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Validate and normalize name\n const componentName = toKebabCase(name);\n if (!validateName(componentName)) {\n logger.error(\n `Invalid component name: ${componentName}. Use kebab-case (e.g., button, icon-badge)`\n );\n process.exit(1);\n }\n\n // Prompt for options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"componentType\",\n message: \"Component type:\",\n choices: [\n { name: \"UI Component (button, badge, etc.)\", value: \"ui\" },\n { name: \"Form Component (input, select, etc.)\", value: \"form\" },\n { name: \"Layout Component (container, grid, etc.)\", value: \"layout\" },\n {\n name: \"Content Component (heading, paragraph, etc.)\",\n value: \"content\",\n },\n ],\n when: !options.type,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this component:\",\n default: toPascalCase(componentName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Component description:\",\n default: `${toPascalCase(componentName)} component`,\n },\n ]);\n\n const componentType = options.type || answers.componentType;\n const displayName = answers.displayName;\n const description = answers.description;\n\n // Prepare data for templates\n const data = {\n componentName,\n componentNamePascal: toPascalCase(componentName),\n componentType,\n displayName,\n description,\n };\n\n logger.startSpinner(\"Creating component files...\");\n\n try {\n const componentPath = path.join(\n getFeaturesDir(),\n \"components\",\n componentName\n );\n\n // Create component schema file\n const schemaContent = generateComponentSchema(data);\n await writeFile(\n path.join(componentPath, `${componentName}.schema.ts`),\n schemaContent\n );\n\n // Create component file\n const componentContent = generateComponent(data);\n await writeFile(\n path.join(componentPath, `${componentName}.tsx`),\n componentContent\n );\n\n // Create index file\n const indexContent = generateComponentIndex(data);\n await writeFile(path.join(componentPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Component files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(componentPath, `${componentName}.schema.ts`))}`\n );\n logger.log(\n ` 2. Edit component: ${path.relative(process.cwd(), path.join(componentPath, `${componentName}.tsx`))}`\n );\n logger.log(\n ` 3. Register in component registry: src/lib/registry/component-registry.ts`\n );\n logger.newLine();\n logger.success(\"Component created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create component\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateComponentSchema(data: {\n componentName: string;\n displayName: string;\n description: string;\n componentType: string;\n}): string {\n return `import type { ComponentDefinition } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Component Schema\n * ${data.description}\n */\nexport const ${data.componentName}Definition: ComponentDefinition = {\n type: \"${data.componentName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n category: \"${data.componentType}\",\n icon: \"square\",\n\n // Content fields (what the component displays)\n contentFields: [\n {\n id: \"text\",\n type: \"text\",\n label: \"Text\",\n defaultValue: \"${data.displayName}\",\n },\n ],\n\n // Style fields (how the component looks)\n styleFields: [\n {\n id: \"variant\",\n type: \"select\",\n label: \"Variant\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Primary\", value: \"primary\" },\n { label: \"Secondary\", value: \"secondary\" },\n ],\n defaultValue: \"default\",\n },\n {\n id: \"size\",\n type: \"select\",\n label: \"Size\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n defaultValue: \"md\",\n },\n ],\n\n // Default content values\n defaultContent: {\n text: \"${data.displayName}\",\n },\n\n // Default style values\n defaultStyle: {\n variant: \"default\",\n size: \"md\",\n },\n};\n`;\n}\n\nfunction generateComponent(data: {\n componentName: string;\n componentNamePascal: string;\n displayName: string;\n}): string {\n return `import React from \"react\";\nimport type { ComponentProps } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Component\n */\nexport function ${data.componentNamePascal}({\n component,\n isEditing = false,\n}: ComponentProps) {\n const { content = {}, style = {} } = component;\n const text = content.text as string || \"${data.displayName}\";\n const variant = style.variant as string || \"default\";\n const size = style.size as string || \"md\";\n\n // Variant classes\n const variantClasses = {\n default: \"bg-gray-100 text-gray-900\",\n primary: \"bg-blue-600 text-white\",\n secondary: \"bg-gray-600 text-white\",\n };\n\n // Size classes\n const sizeClasses = {\n sm: \"text-sm px-3 py-1\",\n md: \"text-base px-4 py-2\",\n lg: \"text-lg px-6 py-3\",\n };\n\n return (\n <div\n className={\\`${data.componentName} \\${variantClasses[variant as keyof typeof variantClasses]} \\${sizeClasses[size as keyof typeof sizeClasses]} inline-block rounded\\`}\n data-component-id={component.id}\n data-component-type={component.type}\n >\n {text}\n </div>\n );\n}\n`;\n}\n\nfunction generateComponentIndex(data: {\n componentName: string;\n componentNamePascal: string;\n}): string {\n return `/**\n * ${data.componentNamePascal} Component\n */\n\nexport { ${data.componentName}Definition } from \"./${data.componentName}.schema\";\nexport { ${data.componentNamePascal} } from \"./${data.componentName}\";\n`;\n}\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport chalk from \"chalk\";\nimport { logger } from \"../utils/logger\";\nimport {\n ensureOneXProject,\n getThemesDir,\n getFeaturesDir,\n listThemes,\n} from \"../utils/file-helpers\";\n\ninterface ListOptions {\n sections?: boolean;\n blocks?: boolean;\n components?: boolean;\n theme?: string;\n}\n\nexport async function listCommand(options: ListOptions): Promise<void> {\n logger.header(\"OneX Project Inventory\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n const showAll = !options.sections && !options.blocks && !options.components;\n\n if (showAll || options.sections) {\n await listSections(options.theme);\n }\n\n if (showAll || options.blocks) {\n await listBlocks(options.theme);\n }\n\n if (showAll || options.components) {\n await listComponents();\n }\n\n if (showAll) {\n await listThemesInfo();\n }\n}\n\nasync function listSections(themeFilter?: string): Promise<void> {\n logger.section(\"📄 Sections\");\n\n const themes = themeFilter ? [themeFilter] : listThemes();\n\n if (themes.length === 0) {\n logger.warning(\"No themes found\");\n return;\n }\n\n for (const theme of themes) {\n const sectionsDir = path.join(getThemesDir(), theme, \"sections\");\n\n if (!fs.existsSync(sectionsDir)) {\n continue;\n }\n\n const sections = fs.readdirSync(sectionsDir).filter((name) => {\n const sectionPath = path.join(sectionsDir, name);\n return (\n fs.statSync(sectionPath).isDirectory() &&\n fs.existsSync(path.join(sectionPath, \"index.ts\"))\n );\n });\n\n if (sections.length > 0) {\n logger.log(chalk.cyan(`\\n ${theme}:`));\n sections.forEach((section) => {\n logger.log(` • ${section}`);\n });\n }\n }\n\n logger.newLine();\n}\n\nasync function listBlocks(themeFilter?: string): Promise<void> {\n logger.section(\"🧱 Blocks\");\n\n // List shared blocks\n const sharedBlocksDir = path.join(getFeaturesDir(), \"blocks\");\n if (fs.existsSync(sharedBlocksDir)) {\n const sharedBlocks = fs.readdirSync(sharedBlocksDir).filter((name) => {\n const blockPath = path.join(sharedBlocksDir, name);\n return (\n fs.statSync(blockPath).isDirectory() &&\n fs.existsSync(path.join(blockPath, \"index.ts\"))\n );\n });\n\n if (sharedBlocks.length > 0) {\n logger.log(chalk.cyan(\"\\n Shared:\"));\n sharedBlocks.forEach((block) => {\n logger.log(` • ${block}`);\n });\n }\n }\n\n // List theme-specific blocks\n const themes = themeFilter ? [themeFilter] : listThemes();\n\n for (const theme of themes) {\n const blocksDir = path.join(getThemesDir(), theme, \"blocks\");\n\n if (!fs.existsSync(blocksDir)) {\n continue;\n }\n\n const blocks = fs.readdirSync(blocksDir).filter((name) => {\n const blockPath = path.join(blocksDir, name);\n return (\n fs.statSync(blockPath).isDirectory() &&\n fs.existsSync(path.join(blockPath, \"index.ts\"))\n );\n });\n\n if (blocks.length > 0) {\n logger.log(chalk.cyan(`\\n ${theme}:`));\n blocks.forEach((block) => {\n logger.log(` • ${block}`);\n });\n }\n }\n\n logger.newLine();\n}\n\nasync function listComponents(): Promise<void> {\n logger.section(\"⚙️ Components\");\n\n const componentsDir = path.join(getFeaturesDir(), \"components\");\n\n if (!fs.existsSync(componentsDir)) {\n logger.warning(\"No components directory found\");\n return;\n }\n\n const components = fs.readdirSync(componentsDir).filter((name) => {\n const componentPath = path.join(componentsDir, name);\n return (\n fs.statSync(componentPath).isDirectory() &&\n fs.existsSync(path.join(componentPath, \"index.ts\"))\n );\n });\n\n if (components.length === 0) {\n logger.warning(\"No components found\");\n return;\n }\n\n logger.log(\"\");\n components.forEach((component) => {\n logger.log(` • ${component}`);\n });\n\n logger.newLine();\n}\n\nasync function listThemesInfo(): Promise<void> {\n logger.section(\"🎨 Themes\");\n\n const themes = listThemes();\n\n if (themes.length === 0) {\n logger.warning(\"No themes found\");\n return;\n }\n\n logger.log(\"\");\n\n for (const theme of themes) {\n const themeDir = path.join(getThemesDir(), theme);\n const candidates = [\"theme.config.ts\", \"bundle-entry.ts\", \"manifest.ts\"];\n let manifestContent = \"\";\n for (const candidate of candidates) {\n const candidatePath = path.join(themeDir, candidate);\n if (fs.existsSync(candidatePath)) {\n manifestContent = fs.readFileSync(candidatePath, \"utf-8\");\n break;\n }\n }\n\n // Try to extract theme info from manifest\n const nameMatch = manifestContent.match(/name:\\s*[\"'](.+)[\"']/);\n const versionMatch = manifestContent.match(/version:\\s*[\"'](.+)[\"']/);\n const descMatch = manifestContent.match(/description:\\s*[\"'](.+)[\"']/);\n\n const displayName = nameMatch ? nameMatch[1] : theme;\n const version = versionMatch ? versionMatch[1] : \"unknown\";\n const description = descMatch ? descMatch[1] : \"\";\n\n logger.log(chalk.cyan(` ${displayName}`) + chalk.gray(` (v${version})`));\n if (description) {\n logger.log(chalk.gray(` ${description}`));\n }\n }\n\n logger.newLine();\n}\n","import { spawn } from \"child_process\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport { logger } from \"../utils/logger\";\nimport { getThemesDir } from \"../utils/file-helpers\";\n\ninterface BuildOptions {\n theme?: string;\n production?: boolean;\n watch?: boolean;\n}\n\nexport async function buildCommand(options: BuildOptions): Promise<void> {\n logger.header(\"Build Theme\");\n\n let themePath: string;\n let themeName: string;\n\n // Determine theme to build\n if (options.theme) {\n themeName = options.theme;\n // Try to find theme in workspace first, otherwise use current directory\n try {\n const workspaceThemePath = path.join(getThemesDir(), themeName);\n if (fs.existsSync(workspaceThemePath)) {\n themePath = workspaceThemePath;\n } else {\n themePath = path.join(process.cwd(), themeName);\n }\n } catch {\n // Not in a workspace, use current directory\n themePath = path.join(process.cwd(), themeName);\n }\n\n if (!fs.existsSync(themePath)) {\n logger.error(`Theme \"${themeName}\" not found.`);\n process.exit(1);\n }\n } else {\n // Check if we're in a theme directory\n const isThemeDir = [\n \"theme.config.ts\",\n \"bundle-entry.ts\",\n \"manifest.ts\",\n ].some((f) => fs.existsSync(path.join(process.cwd(), f)));\n if (isThemeDir) {\n themePath = process.cwd();\n themeName = path.basename(themePath);\n logger.info(`Building current theme: ${themeName}`);\n } else {\n logger.error(\n \"Not in a theme directory and no --theme specified. Run from theme root or use --theme flag.\"\n );\n process.exit(1);\n }\n }\n\n const packageJsonPath = path.join(themePath, \"package.json\");\n const hasPkgJson = fs.existsSync(packageJsonPath);\n\n if (!hasPkgJson) {\n logger.warning(\n \"No package.json found in theme. Skipping build (themes in monorepo are built via turbo).\"\n );\n logger.newLine();\n logger.info(\"To build all packages, run:\");\n logger.log(\" pnpm turbo build\");\n logger.newLine();\n logger.info(\"To build specific theme components:\");\n logger.log(\" pnpm turbo build --filter=./src/themes/*\");\n return;\n }\n\n // Run build steps\n logger.newLine();\n logger.section(\"Build Steps\");\n\n // Step 1: Type Check\n logger.startSpinner(\"Running type check...\");\n const typeCheckSuccess = await runCommand(\"pnpm\", [\"type-check\"], themePath);\n\n if (!typeCheckSuccess) {\n logger.stopSpinner(false, \"Type check failed\");\n logger.error(\"Fix type errors before building.\");\n process.exit(1);\n }\n logger.stopSpinner(true, \"Type check passed\");\n\n // Step 2: Lint\n logger.startSpinner(\"Running linter...\");\n const lintSuccess = await runCommand(\"pnpm\", [\"lint\"], themePath);\n\n if (!lintSuccess) {\n logger.stopSpinner(false, \"Lint failed\");\n logger.error(\"Fix lint errors before building.\");\n process.exit(1);\n }\n logger.stopSpinner(true, \"Lint passed\");\n\n // Step 3: Build\n // Detect if theme's build script would cause recursion (e.g., \"onexthm build\")\n const pkgJson = fs.readJsonSync(packageJsonPath);\n const buildScript = pkgJson.scripts?.build || \"\";\n const isRecursive =\n buildScript.includes(\"onexthm build\") ||\n buildScript.includes(\"onex build\") ||\n buildScript.includes(\"onex-cli build\");\n\n logger.startSpinner(\n options.watch ? \"Building (watch mode)...\" : \"Building...\"\n );\n\n let buildSuccess: boolean;\n\n if (isRecursive) {\n // Standalone theme: use embedded esbuild compilation\n const { compileStandaloneTheme } = await import(\"../utils/compile-theme\");\n buildSuccess = await compileStandaloneTheme(themePath, themeName);\n } else {\n // Monorepo: use existing pnpm build\n const buildArgs = options.watch ? [\"build\", \"--watch\"] : [\"build\"];\n buildSuccess = await runCommand(\"pnpm\", buildArgs, themePath);\n }\n\n if (!buildSuccess && !options.watch) {\n logger.stopSpinner(false, \"Build failed\");\n process.exit(1);\n }\n\n if (!options.watch) {\n logger.stopSpinner(true, \"Build complete\");\n\n // Show output location\n logger.newLine();\n logger.success(\"✓ Theme built successfully!\");\n logger.newLine();\n logger.info(`Theme: ${themeName}`);\n\n const distPath = path.join(themePath, \"dist\");\n if (fs.existsSync(distPath)) {\n logger.log(`Output: ${path.relative(process.cwd(), distPath)}`);\n\n // Show build stats\n const files = fs.readdirSync(distPath);\n logger.log(`Files: ${files.length}`);\n }\n }\n}\n\n/**\n * Run a command and return success status\n */\nfunction runCommand(\n command: string,\n args: string[],\n cwd: string\n): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn(command, args, {\n cwd,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n shell: true,\n });\n\n let stdout = \"\";\n let stderr = \"\";\n\n proc.stdout.on(\"data\", (data) => {\n stdout += data.toString();\n });\n proc.stderr.on(\"data\", (data) => {\n stderr += data.toString();\n });\n\n proc.on(\"close\", (code) => {\n if (code !== 0) {\n // Show actual errors to the developer\n const output = (stderr + stdout).trim();\n if (output) {\n logger.newLine();\n for (const line of output.split(\"\\n\")) {\n const t = line.trim();\n if (!t) continue;\n if (\n t.includes(\"error\") ||\n t.includes(\"Error\") ||\n t.includes(\"TS\")\n ) {\n logger.log(` ❌ ${t}`);\n } else if (t.includes(\"warning\") || t.includes(\"Warning\")) {\n logger.log(` ⚠️ ${t}`);\n } else {\n logger.log(` ${t}`);\n }\n }\n }\n }\n resolve(code === 0);\n });\n\n proc.on(\"error\", () => {\n resolve(false);\n });\n });\n}\n","/**\n * `onexthm upload` is deprecated.\n *\n * It used to push bundle.zip / source.zip / latest.json directly to S3 via\n * the AWS SDK. The platform no longer exposes themes via direct S3 access,\n * so this path is broken by construction. The canonical replacement is\n * `onexthm publish`, which:\n *\n * 1. Authenticates against the platform (`onexthm login`)\n * 2. Registers the theme + version through the API\n * 3. Receives presigned PUT URLs for bundle.zip, source.zip, and any\n * content-hashed assets\n * 4. Uploads everything via HTTP and confirms the publish\n *\n * This file is kept (rather than deleted) so existing CI scripts that call\n * `onexthm upload` get a clear migration message instead of \"command not\n * found\". After all consumers migrate, the command can be removed from\n * cli.ts entirely.\n */\n\nimport chalk from \"chalk\";\nimport { logger } from \"../utils/logger\";\n\ninterface UploadOptions {\n theme?: string;\n bucket?: string;\n version?: string;\n environment?: \"staging\" | \"production\";\n dryRun?: boolean;\n skipSource?: boolean;\n sourceDir?: string;\n}\n\nexport async function uploadCommand(_options: UploadOptions): Promise<void> {\n logger.header(\"Upload Theme to S3 — DEPRECATED\");\n console.log();\n console.log(\n chalk.yellow.bold(\n \"`onexthm upload` is deprecated and no longer functional.\"\n )\n );\n console.log();\n console.log(\n \"The platform no longer exposes themes via direct S3 access, so this\"\n );\n console.log(\n \"command can no longer reach the bucket. Use `onexthm publish` instead:\"\n );\n console.log();\n console.log(chalk.cyan(\" cd themes/your-theme\"));\n console.log(chalk.cyan(\" onexthm login # one-time, refreshes JWT\"));\n console.log(\n chalk.cyan(\" onexthm publish # builds + uploads + confirms\")\n );\n console.log();\n console.log(\n \"`publish` does everything this command did (build, version bump,\"\n );\n console.log(\n \"bundle + source upload) plus content-hashed asset upload, security\"\n );\n console.log(\"scanning, and atomic version registration in one step.\");\n console.log();\n process.exit(1);\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport AdmZip from \"adm-zip\";\nimport { logger } from \"../utils/logger\";\nimport { getApiUrl, type Env } from \"../utils/cli-auth\";\n\ninterface DownloadOptions {\n themeId?: string;\n version?: string;\n output?: string;\n env?: Env;\n /** @deprecated kept for backwards-compat with older scripts; ignored. */\n bucket?: string;\n}\n\ninterface ThemeManifest {\n themeId: string;\n version: string;\n compiledAt: string;\n counts: {\n sections: number;\n blocks: number;\n schemas: number;\n };\n output: {\n entry: string;\n chunks: string[];\n assets: string[];\n };\n [key: string]: any;\n}\n\n/**\n * Unwrap an API Gateway envelope `{ statusCode, body }` into the inner body.\n * Returns the input unchanged if it's not an envelope.\n */\nfunction unwrapEnvelope<T = any>(raw: any): T {\n if (raw && typeof raw === \"object\" && \"statusCode\" in raw && \"body\" in raw) {\n return raw.body as T;\n }\n return raw as T;\n}\n\n/**\n * Resolve the latest version for a theme by calling the public website-api\n * `/versions` Lambda.\n */\nasync function resolveLatestVersion(\n apiUrl: string,\n themeId: string\n): Promise<string> {\n const url = `${apiUrl}/website-api/themes/${encodeURIComponent(themeId)}/versions`;\n let response: Response;\n try {\n response = await fetch(url, { cache: \"no-store\" });\n } catch (err) {\n throw new Error(\n `Network error contacting ${url}: ${err instanceof Error ? err.message : \"unknown\"}`\n );\n }\n if (!response.ok) {\n throw new Error(\n `Version lookup failed for \"${themeId}\" (HTTP ${response.status})`\n );\n }\n const raw = await response.json();\n const data = unwrapEnvelope<{ latest_version?: string }>(raw);\n const latest = data?.latest_version;\n if (typeof latest !== \"string\" || latest.length === 0) {\n throw new Error(\n `Theme \"${themeId}\" has no published versions yet (no latest_version in response)`\n );\n }\n return latest;\n}\n\n/**\n * Download bundle.zip via the public website-api `/download` Lambda.\n */\nasync function downloadBundleZip(\n apiUrl: string,\n themeId: string,\n version: string\n): Promise<Buffer> {\n const url = `${apiUrl}/website-api/themes/${encodeURIComponent(themeId)}/${encodeURIComponent(version)}/download`;\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `Bundle download failed for \"${themeId}@${version}\" (HTTP ${response.status})`\n );\n }\n\n const contentType = response.headers.get(\"content-type\") || \"\";\n\n if (contentType.includes(\"application/json\")) {\n const raw = await response.json();\n const envelope =\n raw && typeof raw === \"object\" && \"statusCode\" in raw\n ? raw\n : { body: raw };\n const body = envelope.body;\n if (typeof body !== \"string\") {\n throw new Error(\n \"Unexpected /download response shape: expected base64 string in body\"\n );\n }\n return Buffer.from(body, \"base64\");\n }\n\n const arrayBuffer = await response.arrayBuffer();\n return Buffer.from(arrayBuffer);\n}\n\n/**\n * Create compatibility files for module resolution.\n */\nasync function createCompatibilityFiles(\n outputDir: string,\n manifest: ThemeManifest\n): Promise<void> {\n const entryFile = manifest.output?.entry || \"bundle-entry.js\";\n\n if (\n entryFile !== \"bundle-entry.js\" &&\n entryFile.startsWith(\"bundle-entry-\")\n ) {\n const hashedPath = path.join(outputDir, entryFile);\n const stablePath = path.join(outputDir, \"bundle-entry.js\");\n if (await fs.pathExists(hashedPath)) {\n await fs.copy(hashedPath, stablePath);\n const mapPath = hashedPath + \".map\";\n if (await fs.pathExists(mapPath)) {\n await fs.copy(mapPath, stablePath + \".map\");\n }\n }\n }\n\n const sectionsRegistryPath = path.join(outputDir, \"sections-registry.js\");\n const content = `// Re-export all sections from bundle-entry\\n// This file exists to maintain compatibility with the import path\\nexport * from './bundle-entry.js';\\n`;\n await fs.writeFile(sectionsRegistryPath, content, \"utf-8\");\n\n const pkgJsonPath = path.join(outputDir, \"package.json\");\n await fs.writeFile(pkgJsonPath, '{\\n \"type\": \"module\"\\n}\\n', \"utf-8\");\n}\n\n/**\n * Show helpful error message when the download fails.\n */\nfunction showDownloadFailureHelp(themeId: string, apiUrl: string): void {\n console.log();\n logger.error(chalk.red.bold(\"Theme download failed\"));\n console.log();\n console.log(chalk.yellow(\"Possible reasons:\"));\n console.log(\n chalk.gray(\" 1. Theme has not been published yet (run `onexthm publish`)\")\n );\n console.log(\n chalk.gray(\n \" 2. Theme ID is wrong (typo in --theme-id or THEME_ID env var)\"\n )\n );\n console.log(\n chalk.gray(\" 3. API base URL is wrong or the website-api is unreachable\")\n );\n console.log();\n console.log(chalk.cyan.bold(\"To fix this:\"));\n console.log();\n console.log(chalk.white(\"1. Verify the theme is published:\"));\n console.log(\n chalk.gray(\n ` curl -s ${apiUrl}/website-api/themes/${themeId}/versions | jq .latest_version`\n )\n );\n console.log();\n console.log(chalk.white(\"2. Check API URL configuration:\"));\n console.log(chalk.gray(` Current API URL: ${apiUrl}`));\n console.log(chalk.gray(\" Override with ONEXTHM_API_URL env var if needed\"));\n console.log();\n console.log(chalk.white(\"3. Pin a specific version (CI/production):\"));\n console.log(\n chalk.gray(` THEME_VERSION=1.2.3 onexthm download --theme-id ${themeId}`)\n );\n console.log();\n}\n\n/**\n * Download a published theme via the website-api Lambda endpoints.\n */\nexport async function downloadCommand(options: DownloadOptions): Promise<void> {\n logger.header(\"Download Theme\");\n\n const env: Env = options.env ?? \"dev\";\n const apiUrl = getApiUrl(env);\n\n logger.info(`Environment: ${env} (${apiUrl})`);\n\n const spinner = ora(\"Initializing download...\").start();\n\n if (options.bucket) {\n spinner.stop();\n logger.warning(\n \"--bucket is deprecated and ignored. Themes are now served via HTTP from the website-api Lambda.\"\n );\n spinner.start();\n }\n\n try {\n const themeId =\n options.themeId ||\n process.env.NEXT_PUBLIC_THEME_ID ||\n process.env.THEME_ID;\n const requestedVersion =\n options.version || process.env.THEME_VERSION || \"latest\";\n const outputDir = options.output || \"./active-theme\";\n\n if (!themeId) {\n spinner.fail(\n chalk.red(\n \"Theme ID not specified. Use --theme-id or set NEXT_PUBLIC_THEME_ID environment variable.\"\n )\n );\n process.exit(1);\n }\n\n spinner.text = `Resolving ${themeId}@${requestedVersion}...`;\n\n let resolvedVersion = requestedVersion;\n if (requestedVersion === \"latest\") {\n resolvedVersion = await resolveLatestVersion(apiUrl, themeId);\n spinner.succeed(\n `Resolved latest version: ${chalk.cyan(resolvedVersion)}`\n );\n\n const isCI = !!(\n process.env.CI ||\n process.env.GITHUB_ACTIONS ||\n process.env.VERCEL\n );\n if (isCI) {\n console.log(\n chalk.yellow(\n `\\n Warning: Resolved \"latest\" to ${resolvedVersion} in CI environment.\\n` +\n ` For reproducible builds, pin to a specific version:\\n` +\n ` THEME_VERSION=${resolvedVersion}\\n`\n )\n );\n }\n } else {\n spinner.succeed(`Using version: ${chalk.cyan(resolvedVersion)}`);\n }\n\n spinner.start(\n `Downloading bundle.zip for ${themeId}@${resolvedVersion}...`\n );\n const zipBuffer = await downloadBundleZip(apiUrl, themeId, resolvedVersion);\n const sizeMB = (zipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Downloaded bundle.zip (${sizeMB} MB)`);\n\n spinner.start(\"Extracting bundle...\");\n await fs.remove(outputDir);\n await fs.ensureDir(outputDir);\n\n const zip = new AdmZip(zipBuffer);\n zip.extractAllTo(outputDir, true);\n\n const entries = zip.getEntries().filter((e) => !e.isDirectory);\n spinner.succeed(`Extracted ${entries.length} files to ${outputDir}`);\n\n const manifestPath = path.join(outputDir, \"manifest.json\");\n const manifest: ThemeManifest = await fs.readJson(manifestPath);\n await createCompatibilityFiles(outputDir, manifest);\n\n console.log();\n logger.success(chalk.green.bold(\"Theme downloaded successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Theme: \") + chalk.white(`${themeId}@${resolvedVersion}`)\n );\n console.log(chalk.cyan(\" Env: \") + chalk.white(env));\n console.log(chalk.cyan(\" Source: \") + chalk.white(apiUrl));\n console.log(chalk.cyan(\" Output: \") + chalk.white(outputDir));\n console.log(chalk.cyan(\" Files: \") + chalk.white(entries.length));\n if (manifest.counts) {\n console.log(\n chalk.cyan(\" Sections:\") + chalk.white(` ${manifest.counts.sections}`)\n );\n }\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(\"Download failed\"));\n logger.error(error.message);\n\n const themeId =\n options.themeId ||\n process.env.NEXT_PUBLIC_THEME_ID ||\n process.env.THEME_ID ||\n \"unknown\";\n\n showDownloadFailureHelp(themeId, apiUrl);\n process.exit(1);\n }\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport { spawn } from \"child_process\";\nimport AdmZip from \"adm-zip\";\nimport { logger } from \"../utils/logger\";\nimport { glob } from \"glob\";\nimport {\n getApiUrl,\n getValidTokens,\n authenticatedFetch,\n type Env,\n} from \"../utils/cli-auth\";\n\ninterface CloneOptions {\n version?: string;\n output?: string;\n env?: Env;\n /** @deprecated kept for backwards-compat with older scripts; ignored. */\n bucket?: string;\n install?: boolean;\n name?: string;\n}\n\n/**\n * Unwrap an API Gateway envelope `{ statusCode, body }` into the inner body.\n */\nfunction unwrapEnvelope<T = any>(raw: any): T {\n if (raw && typeof raw === \"object\" && \"statusCode\" in raw && \"body\" in raw) {\n return raw.body as T;\n }\n return raw as T;\n}\n\n/**\n * Resolve the latest version of a theme via the public website-api `/versions` Lambda.\n */\nasync function resolveLatestVersion(\n apiUrl: string,\n themeId: string\n): Promise<string> {\n const url = `${apiUrl}/website-api/themes/${encodeURIComponent(themeId)}/versions`;\n const response = await fetch(url, { cache: \"no-store\" });\n if (!response.ok) {\n throw new Error(\n `Version lookup failed for \"${themeId}\" (HTTP ${response.status})`\n );\n }\n const raw = await response.json();\n const data = unwrapEnvelope<{ latest_version?: string }>(raw);\n const latest = data?.latest_version;\n if (typeof latest !== \"string\" || latest.length === 0) {\n throw new Error(`Theme \"${themeId}\" has no published versions yet`);\n }\n return latest;\n}\n\n/**\n * Fetch source.zip via the authenticated `/source` Lambda.\n */\nasync function fetchSourceZip(\n apiUrl: string,\n themeId: string,\n version: string,\n env: Env\n): Promise<Buffer> {\n const url = `${apiUrl}/website-api/themes/${encodeURIComponent(themeId)}/source?version=${encodeURIComponent(version)}`;\n const response = await authenticatedFetch(url, { method: \"GET\" }, env);\n if (!response.ok) {\n if (response.status === 404) {\n throw new Error(\n `Source not found for ${themeId}@${version}. The theme may not have been published with source upload enabled.`\n );\n }\n if (response.status === 401 || response.status === 403) {\n throw new Error(\n `Not authorized to download source for \"${themeId}\". Run \\`onexthm login --env ${env}\\` first.`\n );\n }\n throw new Error(\n `Source URL request failed for \"${themeId}@${version}\" (HTTP ${response.status})`\n );\n }\n const raw = await response.json();\n const data = unwrapEnvelope<{ download_url?: string }>(raw);\n const presignedUrl = data?.download_url;\n if (typeof presignedUrl !== \"string\" || presignedUrl.length === 0) {\n throw new Error(\"Unexpected /source response shape: missing download_url\");\n }\n\n const zipResponse = await fetch(presignedUrl);\n if (!zipResponse.ok) {\n throw new Error(\n `Presigned source download failed (HTTP ${zipResponse.status})`\n );\n }\n const arrayBuffer = await zipResponse.arrayBuffer();\n return Buffer.from(arrayBuffer);\n}\n\n/**\n * Run pnpm install in a directory\n */\nfunction runInstall(cwd: string): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn(\"pnpm\", [\"install\"], {\n cwd,\n stdio: \"inherit\",\n shell: true,\n });\n proc.on(\"close\", (code) => resolve(code === 0));\n proc.on(\"error\", () => resolve(false));\n });\n}\n\n/**\n * Prompt user for new theme name using inquirer\n */\nasync function promptThemeName(originalName: string): Promise<string> {\n const { default: inquirer } = await import(\"inquirer\");\n const { themeName } = await inquirer.prompt([\n {\n type: \"input\",\n name: \"themeName\",\n message: \"New theme name (kebab-case):\",\n default: `my-${originalName}`,\n validate: (input: string) => {\n if (!/^[a-z][a-z0-9-]*$/.test(input)) {\n return \"Theme name must be kebab-case (lowercase letters, numbers, hyphens)\";\n }\n if (input === originalName) {\n return `Name must differ from the original theme \"${originalName}\"`;\n }\n return true;\n },\n },\n ]);\n return themeName;\n}\n\n/**\n * Rename all theme references in the cloned source.\n */\nasync function renameTheme(\n themeDir: string,\n oldName: string,\n newName: string\n): Promise<void> {\n const oldPrefix = `${oldName}-`;\n const newPrefix = `${newName}-`;\n const newDisplayName = newName\n .split(\"-\")\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(\" \");\n\n const pkgPath = path.join(themeDir, \"package.json\");\n if (await fs.pathExists(pkgPath)) {\n const pkg = await fs.readJson(pkgPath);\n pkg.name = `@onex-themes/${newName}`;\n if (pkg.description) {\n pkg.description = pkg.description.replace(\n new RegExp(oldName, \"gi\"),\n newDisplayName\n );\n }\n pkg.version = \"1.0.0\";\n\n if (pkg.devDependencies?.[\"@onexapis/cli\"]) {\n delete pkg.devDependencies[\"@onexapis/cli\"];\n }\n\n await fs.writeJson(pkgPath, pkg, { spaces: 2 });\n }\n\n const configPath = path.join(themeDir, \"theme.config.ts\");\n if (await fs.pathExists(configPath)) {\n let content = await fs.readFile(configPath, \"utf-8\");\n content = content.replace(/id:\\s*\"[^\"]*\"/, `id: \"${newName}\"`);\n content = content.replace(\n /name:\\s*\"[^\"]*Theme\"/,\n `name: \"${newDisplayName} Theme\"`\n );\n await fs.writeFile(configPath, content);\n }\n\n const layoutPath = path.join(themeDir, \"theme.layout.ts\");\n if (await fs.pathExists(layoutPath)) {\n let content = await fs.readFile(layoutPath, \"utf-8\");\n content = content.replace(/id:\\s*\"[^\"]*\"/, `id: \"${newName}\"`);\n content = content.replace(\n /name:\\s*\"[^\"]*Theme\"/,\n `name: \"${newDisplayName} Theme\"`\n );\n await fs.writeFile(layoutPath, content);\n }\n\n const oldDisplayName = oldName\n .split(\"-\")\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(\" \");\n\n const tsFiles = await glob(\"**/*.ts\", { cwd: themeDir, nodir: true });\n for (const file of tsFiles) {\n const filePath = path.join(themeDir, file);\n let content = await fs.readFile(filePath, \"utf-8\");\n const original = content;\n\n content = content.replace(\n new RegExp(`\"${oldPrefix}`, \"g\"),\n `\"${newPrefix}`\n );\n content = content.replace(\n new RegExp(`themeId:\\\\s*\"${oldName}\"`, \"g\"),\n `themeId: \"${newName}\"`\n );\n content = content.replace(\n new RegExp(`${oldDisplayName} Theme`, \"g\"),\n `${newDisplayName} Theme`\n );\n\n if (content !== original) {\n await fs.writeFile(filePath, content);\n }\n }\n}\n\n/**\n * Clone theme source code via the website-api.\n */\nexport async function cloneCommand(\n themeName: string,\n options: CloneOptions\n): Promise<void> {\n logger.header(\"Clone Theme Source\");\n\n const env: Env = options.env ?? \"dev\";\n const apiUrl = getApiUrl(env);\n\n logger.info(`Environment: ${env} (${apiUrl})`);\n\n if (options.bucket) {\n logger.warning(\n \"--bucket is deprecated and ignored. Source is now fetched via HTTP from the website-api Lambda.\"\n );\n }\n\n const tokens = await getValidTokens(env);\n if (!tokens) {\n logger.error(\n `Not logged in to ${env} environment. Run: onexthm login --env ${env}`\n );\n process.exit(1);\n }\n\n let newName = options.name;\n if (!newName) {\n newName = await promptThemeName(themeName);\n }\n\n const spinner = ora(\"Initializing clone...\").start();\n\n try {\n const outputDir = options.output || path.resolve(process.cwd(), newName);\n\n if (await fs.pathExists(outputDir)) {\n spinner.fail(chalk.red(`Directory already exists: ${outputDir}`));\n logger.info(\n chalk.gray(\n \"Use -o to specify a different output directory, or remove the existing directory.\"\n )\n );\n process.exit(1);\n }\n\n let version = options.version || \"latest\";\n if (version === \"latest\") {\n spinner.text = \"Resolving latest version...\";\n version = await resolveLatestVersion(apiUrl, themeName);\n spinner.succeed(`Resolved latest version: ${chalk.cyan(version)}`);\n }\n\n spinner.start(`Downloading source.zip for ${themeName}@${version}...`);\n let zipBuffer: Buffer;\n try {\n zipBuffer = await fetchSourceZip(apiUrl, themeName, version, env);\n } catch (error: any) {\n spinner.fail(chalk.red(error.message));\n console.log();\n console.log(\n chalk.gray(\n `Verify the theme is published: curl -s ${apiUrl}/website-api/themes/${themeName}/versions`\n )\n );\n console.log();\n process.exit(1);\n }\n\n const sizeMB = (zipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Downloaded source.zip (${sizeMB} MB)`);\n\n spinner.start(`Extracting to ${outputDir}...`);\n await fs.ensureDir(outputDir);\n\n const zip = new AdmZip(zipBuffer);\n zip.extractAllTo(outputDir, true);\n\n const entries = zip.getEntries().filter((e) => !e.isDirectory);\n spinner.succeed(`Extracted ${entries.length} files`);\n\n spinner.start(\n `Renaming theme: ${chalk.gray(themeName)} → ${chalk.cyan(newName)}...`\n );\n await renameTheme(outputDir, themeName, newName);\n spinner.succeed(\n `Renamed theme: ${chalk.gray(themeName)} → ${chalk.cyan(newName)}`\n );\n\n const envExamplePath = path.join(outputDir, \".env.example\");\n if (!(await fs.pathExists(envExamplePath))) {\n await fs.writeFile(\n envExamplePath,\n [\n \"# API Configuration (enables real data in preview)\",\n \"# Get your Company ID from the OneX dashboard\",\n `NEXT_PUBLIC_API_URL=${apiUrl}`,\n \"NEXT_PUBLIC_COMPANY_ID=\",\n \"\",\n ].join(\"\\n\")\n );\n }\n\n const mcpJsonPath = path.join(outputDir, \".mcp.json\");\n if (await fs.pathExists(mcpJsonPath)) {\n const { default: inquirerMod } = await import(\"inquirer\");\n const { figmaApiKey } = await inquirerMod.prompt([\n {\n type: \"password\",\n name: \"figmaApiKey\",\n message:\n \"Figma API Key (optional, for Figma-to-code MCP — press Enter to skip):\",\n },\n ]);\n let mcpContent = await fs.readFile(mcpJsonPath, \"utf-8\");\n if (figmaApiKey) {\n mcpContent = mcpContent.replace(\"__FIGMA_API_KEY__\", figmaApiKey);\n } else {\n try {\n const mcpJson = JSON.parse(mcpContent);\n delete mcpJson.mcpServers?.figma;\n mcpContent = JSON.stringify(mcpJson, null, 2) + \"\\n\";\n } catch {}\n }\n await fs.writeFile(mcpJsonPath, mcpContent, \"utf-8\");\n }\n\n if (options.install !== false) {\n const hasPkgJson = await fs.pathExists(\n path.join(outputDir, \"package.json\")\n );\n if (hasPkgJson) {\n spinner.start(\"Installing dependencies...\");\n const success = await runInstall(outputDir);\n if (success) {\n spinner.succeed(\"Dependencies installed\");\n } else {\n spinner.warn(\n chalk.yellow(\n \"Failed to install dependencies — run 'pnpm install' manually\"\n )\n );\n }\n }\n }\n\n console.log();\n logger.success(chalk.green.bold(\"Theme cloned successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Source: \") + chalk.gray(`${themeName}@${version}`)\n );\n console.log(chalk.cyan(\" Env: \") + chalk.white(env));\n console.log(chalk.cyan(\" Theme: \") + chalk.white(newName));\n console.log(chalk.cyan(\" Location: \") + chalk.white(outputDir));\n console.log(chalk.cyan(\" Files: \") + chalk.white(entries.length));\n console.log();\n console.log(chalk.cyan(\"Next steps:\"));\n console.log(chalk.gray(` cd ${path.relative(process.cwd(), outputDir)}`));\n console.log(\n chalk.gray(\" cp .env.example .env # then add your Company ID\")\n );\n if (options.install === false) {\n console.log(chalk.gray(\" pnpm install\"));\n }\n console.log(chalk.gray(\" onexthm build\"));\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(`Clone failed: ${error.message}`));\n logger.error(error.stack || error.message);\n process.exit(1);\n }\n}\n","/**\n * @onex/cli - CLI Tool for OneX Theme Development\n * Scaffolding and development tools for themes, sections, blocks, and components\n */\n\nexport { initCommand } from \"./commands/init\";\nexport { createSectionCommand } from \"./commands/create-section\";\nexport { createBlockCommand } from \"./commands/create-block\";\nexport { createComponentCommand } from \"./commands/create-component\";\nexport { listCommand } from \"./commands/list\";\nexport { buildCommand } from \"./commands/build\";\nexport { uploadCommand } from \"./commands/upload\";\nexport { downloadCommand } from \"./commands/download\";\nexport { cloneCommand } from \"./commands/clone\";\n\nexport * from \"./utils/logger\";\nexport * from \"./utils/file-helpers\";\nexport * from \"./utils/validators\";\n"]}